Szerszámgépkölcsönző

Zsovik képe

A következő problémával találtam magam szemben.
Egy szerszámgépkölcsönzőnek kellene megoldanom a nyilvántartását a következő képpen:
Adott több száz különböző szerszámgép, melyeknek vannak adatai. (azonosítószám, megnevezés, típus, stb... és állapot)
Az állapotból látom, hogy az az adott gép éppen hol van. - Kikölcsönözve, javítás alatt, raktáron.
Ha view-al listát készítek, akkor így azonnal látom, hogy melyik gépnek mik az adatai. Tudok szűrni, keresni stb.

Természetesen meg tudnám úgy oldani, hogy minden alkalommal felviszem az adott eszközt és kitöltöm a mezőket. De félek, hogy így az adatok duplikálódni fognak, és egy idő után átláthatatlan lesz az egész.
Ezért inkább arra gondoltam, hogy felvaszem egy tartalomtípusba az adott gép alapadatait.
Egy másik tartalomtípusba pedig a gép kölcsönzési történetét.
Így ha view-val listázom (fő lista), akkor mindíg csak annyi látszik ahány darab gép van a készletben.
Eddig meg is vagyok.
A problémám az, hogy az állapotot a "kölcsönzési történet" tartalomtípusban szeretném rögzíteni, de a view-ban úgy szeretném listázni, hogy a gép alap adatai mellett láthassam az aktuális állapotot is.
Persze kérdezhetnétek, hogy miért nem rögzítem abba a tartalomtípusba, ahova a gép adatait is teszem, mert akkor nem lenne ilyen problémám.
Csak abban az esetben az állapot tartalmát szerkesztéssel tudnám aktualizálni és nem látom az előzményeket.
Nekem pedig az kellene, hogy egy adott gép kölcsönzési történetével együtt lássam.
Vagyis, ha a view-val készített listából kiválasztom az adott gépet, akkor egy új ablakban lássam, soronként, hogy mikor ki vette ki, mikor vitte vissza, okozott-e sérülést...stb.
Ebből a listából az utolsó adat állapota kerülne be a fő listába.
A két tartalom típus összekapcsolását meg is tudom oldani.
De hogyan oldom meg azt, hogy az adott gép kölcsönzési történet tartalomtípus node-ját úgy szrkesszem, hogy abba új bejegyzéseket teszek, és a régiek megmaradnak.
Valahogy úgy, mint az új mező hozzáadása. Csak ebben az esteben nem egy mezőt kell hozzáadni egyszerre, hanem többet. (kölcsön adás dátuma, kinek, határidő, állapot....)
És ugye az állapot jelenne meg a fő listában.

Nem tudom érthető voltam-e?

Két lista készül
1. Fő lista, ami csak annyi sorból áll, ahány gép van összesen, megjelenítve az aktuális állapotot.
2. Történet lista, ami egy adott gép kiválasztásakor jelenne meg és tartalmazná az előzményeket. Benne rögzítve az állapotot. A lista utolsó sorában lévő állapot mező pedig megjelenne az 1. listában.

Van valakinek valamilyen ötlete?

Egyáltalán jól gondolkodom?

Drupal verzió: 
Fórum: 
Zsovik képe

Így átolvasva még egyszer az is megoldás lehet, hogy nem szerkesztem a történet tartalomtípust, hanem mindig újat hozok létre. Így ki tudom listázni a történetet, de nem tudom akkor sem, hogy az utolsó állapotot hogyan jelenítem meg a fő listában.

1
0
SecMan képe

csak ötletelek...
A kettő tartalomtípust összekötném Entity Reference-el. Pl. a Történetet egészíteném ki az Eszközre való hivatkozással. (a választható Eszközök listáját Viewsban össze lehet rakni és felhasználni a hivatkozás kiválasztásához)

Innentől Views-al összeköthető a "Kapcsolatok" részben a két tartalomtípus.

és/vagy szükség esetén még Rules-al esetleg Történet hozzáadásakor beállítanék egy értéket a hivatkozott Eszköznél pl. "aktuális állapot" nevű mező értéke legyen egyenlő a Történetben éppen rögzített "állapot" értékkel.

0
0
Zsovik képe

Sikerült megoldanom, de még van egy kis probléma amit meg kell oldanom.

A két tartalom típust összekapcsoltam Entity Reference-el.
Elkészült a listám, ami tartalmazza az összes raktáron lévő gépet.
Ha rákattintok az azonosítóra szépen be is tölti az gép kölcsönzési történetét.
Az állapot látszik a fő listában. Ez is rendben.

A gond ott van, hogy nem tudom, hogyan tudom elérni azt, hogy mindig a legfrissebb állapot látszódjon.
Vagyis a történet view legutolsó állapota.

A fő táblázatban az összegzést és a lekérdezés beállításaiban a "különböző "
beállítást használtam.
Ha nem használom akkor a fő listában is megjelennek a történet elemei.
Én pedig csak az aktuálisat akarom itt látni. Így értem el, hogy csak annyi sor legyen ahány gép van készleten.

Szóval tud-e valaki olyan modulról, ami egy adott nézet utolsó elemét illeszti be egy másik nézetbe...

0
0
vikicica22 képe

Én ezt a modult ajánlanám neked entityconnect
https://www.drupal.org/project/entityconnect
Az Entity Reference -el szorosan összedolgozik és meglátod milyen hasznos kis modul lesz az oldaladban.

1
0
Zsovik képe

Végülis kivettem a méregfogát azzal, hogy az állapot mező értékét a fő listában állítom be. Így már nem érdekes, hogy a történet listában hányadik sorban van az állapot mező. (mivel már nincs is ott. :-) )

Így most látom a fő listát annyi géppel amennyi tényelegesen van.
A történetben pedig látom, hogy ki mikor vitte el, és hozta vissza.

A hátránya csak annyi, hogy a fő adatokat is szerkesztenie kell a felhasználónak, ha át akarja írni az állapot értékét.

0
0
aboros képe

rules modullal létrehozhatnál egy olyan rulet, ami akkor fut le, amikor új "kölcsönzés" jön létre, betölti a kölcsönzéshez tartozó gép nodeját és átbillenti az állapotot. meg akkor mégegy rule is kéne ugyanerre fordítva, hogy amikor visszahozza a mókus a gépet és "lezárt" lesz a kölcsönzés (gondolom van erre is valami, szerkesztik a kölcsönzés nodeot és beikszelik hogy "lezárt" vagy nemtom) akkor megint betölti a gép nodeját és visszaállítja elérhetőre.

én két tartalom típust használnék:
- eszköz (ebben tárolnám a gépeket minden adatukkal együtt)
- kölcsönzés (ebben tárolnám a kölcsönzés adatait, mikortól meddig, és hogy mit kölcsönöz arra pedig egy entity reference mezőt hasznánék amivel eszközökre lehet hivatkozni)

views -al készítenék egy blokkot, ami eszköz oldalon megjeleníti azt a legutóbbi 1 darab kölcsönzést ami erre az adott eszközre hivatkozik az entity reference mezőjében. lehetne még csavargatni, hogy csak olyan kölcsönzést mutasson a blokk ami még nincs lezárva és ha nincs ilyen akkor a nézet "Empty text" -je jelenik meg, teszem azt "Épp nincs kikölcsönözve" vagy ilyesmi.

0
0

-
clear: both;

Zsovik képe

Köszönöm, hogy foglalkoztál a kérdéssel.
Én is így gondolkoztam.

Van egy "gépek" tartalomtípusom és van egy "kölcsönzési történet" típusom.
A kettő össze van kötve entity reference-el.
Látom a gépek listáját és a gép nevére kattintva látom, a történet listáját.

A gondom még mindig az, hogy az állapotot a történet listában állítom rules-al, annak megfelelően, hogy milyen dátum van kitöltve .
Ha a kiadás dátuma ki van töltve, akkor az állapot = kikölcsönözve
Ha a vissza hozás dátuma ki van töltve, akkor az állapot = kölcsönözhető
Ha a szervizben dátuma ki van töltve, akkor az állapot = szervizben
Ha a szervizből vissza dátum ki van töltve, akkor az állapot = kölcsönözhető

Viszont a történet több sorból áll, és ez fontos, mert ebből tudok majd különböző lekérdezéseket készíteni (ki hányszor vitte el, hányszor hoszta hibásan vissza, hány gép van aktuálisan "kölcsönözhető" állapotban... stb. )

És ez okoz most nekem nagy fejtörést.

Mert a gépek listájában megjelenítem az entity referencel összekapcsolt történet tartalomtípus "állapot" mező értékét.
Igen ám, de ekkor nem a legfrissebb nodeban lévő állapotot kapom vissza, hanem azt amelyiket az történetben először rögzítettem.
Nem találtam megoldást arra, hogy csak a legfrissebb node-ot vegye figyelembe.

Próbáltam arra szűrni, hogy csak azt a node állapotát jelenítse meg, amelyiknek a vissza vét dátuma ki van töltve. De ez nem jó, mert ugye előbb utóbb a történet sorban mindegyiknek ki lesz töltve.

Ha teszek bele egy "lezárt" check boxot akkor is ugyan ez lesz a helyzet.

Bár Én blokban nem is gondolkodtam....

Ezt még kipróbálom... nem kell mindent egy viewsban megoldanom.
Csinálhatok egy olyan nézetet, ami csak a legfrissebb 1db nodot tartalmazza, amit blokban teszek el az adott gép alapadatai alatt.

Ha kíváncsi vagyok, hogy milyen története volt, akkor azt is el tudom készíteni egy másik lekérdezésben.

Na ezt még megnézem...
(gyakran segít, ha leírjuk a problémát..... :-) )

0
0
Zsovik képe

Sajnos ez a megoldás sem vált be.

Most úgy látom, hogy egy db szűrést kellene valahogy megvalósítanom.
Nevezetesen:

Az utolsó Nid kiválasztása.

Tudok olyan feltételt beállítani a szűréshez, hogy csak azokat a tartalmakat akarom látni, melyeknek frissültek.
Ez már majdnem jó, de nem egészséges, mert, ha megnyitom az adott tartalmat (nem szerkesztésre), akkor a "frissült" flag eltűnik.

Szóval csak azt látom megoldásnak, ha a gépek nézetében megjelenítem a történet tartalomtípus Nid-jét de csak a legfrissebb (legmagasabb sorszámú) Nid-re szűrök.
Ekkor a gépek nézetben csak 1 db (a legfrissebb) tartalom fog megjelenni.(gépenként) És így annak bármelyik értékét (állapot, kölcsönzés dátuma...stb) meg tudom jeleníteni és biztos, hogy aktuális lesz.

Sajnos nem találtam olyan modult, amely a view-ban lehetővé teszi a legnagyobb Nid kiválasztását.

Esetleg valakinek valami ötlet?

0
0