Stock control and availability

Az eYssen néhány kicsi, célzott Készlet modult kínál, amelyek szigorítják a készleten lévő mennyiségek védelmét és megjelenítését: a negatív készlet szigorú tiltását, a készleten lévő, szabad és előrejelzett mennyiségek raktárankénti bontását – amelyet a gyors lista-, kanban- és értékesítésirendelés-nézetek érdekében előre kiszámítunk –, valamint a tárolóhelyek fizikai méret- és terhelési attribútumait. Mind a négy modul opcionális, és egymástól függetlenül kapcsolható be az eYssen beállítások képernyőjén.

Negatív készlet megelőzése

Az Odoo alapértelmezés szerint megengedi, hogy egy készletmennyiség negatívvá váljon — ez bizonyos munkafolyamatoknál hasznos, de gyakran adatbeviteli hibára vagy elmaradt foglalásra utal. A eyssen_stock_disallow_negative_stock modul szigorú érvényesítési védelmet ad hozzá: minden olyan készletmozgást vagy -korrekciót, amely egy belső vagy tranzit helyen negatív mennyiséget eredményezne, a rendszer egyszerűen elutasít, kivéve ha az adott termékre, annak termékkategóriájára vagy magára a helyre kifejezett felülbírálás van bekapcsolva.

A védelem csak a Áru típusú raktározható termékekre vonatkozik (type = 'consu' és beállított is_storable) — a szolgáltatásokat és a fogyóeszköz jellegű, de nem raktározható termékeket a rendszer sohasem ellenőrzi.

Overrides

Egy Negatív készlet engedélyezése jelölőnégyzet három helyen jelenik meg, és bármelyikük bekapcsolása elegendő ahhoz, hogy az adott kombinációnál engedélyezve legyen a negatív készlet:

  • a termék Készlet fülén (csak raktározható áruknál látható);

  • a termékkategória Logisztika csoportjában; valamint

  • the stock location’s form.

Negatív készlet engedélyezése jelölőnégyzet egy raktározható terméken

Ha a három felülbírálás egyike sincs bekapcsolva, és egy művelet nulla alá csökkentené a mennyiséget, az Odoo letiltja a műveletet, és az érvényesítési hibában megnevezi a terméket, annak belső hivatkozását és a helyet.

Érvényesítési hiba, amelyet a rendszer akkor jelez, ha egy művelet negatív készletet hozna létre

Megjegyzés

Az ellenőrzés kizárólag az internal és transit hely-felhasználási típusokat vizsgálja. A vevői, beszállítói, készletveszteség- és gyártási helyeket ez a védelem nem érinti.

Raktárankénti készletadatok (Fejlett készlet)

A eyssen_stock_advanced_stock modul termékváltozatonként előre kiszámítja a készleten lévő, a szabad és az előrejelzett mennyiséget minden olyan raktárban, amelyet bekapcsoltak, és az eredményt egy dedikált product.stock.data modellben tárolja (soronként egy termék/raktár/mennyiségtípus kombináció), ahelyett hogy minden oldalbetöltéskor újraszámolná. Ez gyorsan tartja a termék lista-, kanban- és rendelésnézeteit még nagy katalógusok esetén is, miközben továbbra is automatikusan tükrözi a készletváltozásokat.

Fejlett készlet beállítás és az Összes újraszámítása gomb

Per-warehouse opt-in

A készletadatok kiszámítása csak azokra a raktárakra történik, amelyeket kifejezetten bekapcsoltak. Az egyes raktárak Raktárkonfiguráció fülén egy Készlet csoport két kapcsolót tartalmaz:

  • Raktárkészlet számítása a terméken — bekapcsolja az adott raktárra vonatkozó raktárankénti számítást; valamint

  • Raktárkészlet megjelenítése a terméken — emellett az adott raktár adatait dinamikus, opcionális oszlopokként és keresési szűrőkként is megjeleníti a termék lista- és keresőnézetein (csak akkor érhető el, ha a számítás már be van kapcsolva).

Raktárkonfiguráció fül a Készlet csoporttal és az Összes frissítése gombbal

Bármelyik kapcsoló átváltása raktáranként három írásvédett technikai mezőt hoz létre vagy távolít el mind a product.template, mind a product.product modellen — x_eyssen_wh_pt_<warehouse_id>_onhand / _free / _forecasted (és a termékváltozaton a _pp_ megfelelőik) —, és újragenerálja a hozzájuk tartozó lista-/keresőnézet-kiterjesztéseket, amelyek opcionális oszlopokként és <quantity kind> in <Warehouse> keresési szűrőkként teszik elérhetővé őket. Mivel a konfiguráció módosítása visszamenőlegesen nem tölti fel ezeket a mezőket, a raktár űrlapján piros figyelmeztető sáv jelenik meg mindaddig, amíg az Összes frissítése gombbal újra nem számoltatjuk az egészet.

Az adatok megtekintése

A termék űrlapján az Általános információk fülön egy írásvédett Készletadatok widget soronként felsorolja a készleten lévő, szabad és előrejelzett mennyiségeket minden bekapcsolt raktárra, mellette egy kis frissítés gombbal, amellyel az adott termékre azonnali újraszámítás kényszeríthető ki. Ugyanez a widget megjelenik a termék kanban- és listanézetében is (opcionális oszlopként).

Stock Data widget on the product form Terméklista raktárankénti opcionális oszlopokkal bekapcsolva

Egy értékesítési rendelésen egy megerősített sor Mennyiség a dátumon felugró ablakának megnyitásakor a sor szintű készletwidget mellett egy további Összes raktár táblázat is megjelenik, amely ugyanazt a készleten lévő / szabad / előrejelzett bontást mutatja.

A Mennyiség a dátumon felugró ablak az Összes raktár bontással kiegészítve

Automatic recomputation

Az előre kiszámított értékek automatikusan szinkronban maradnak, amikor a készlet változik:

  • egy készletmennyiség létrejön, vagy a mennyisége, illetve a foglalt mennyisége megváltozik;

  • egy készletmozgást megerősítenek, töröltnek jelölnek, vagy megváltoztatják annak igényelt mennyiségét, illetve forrás-/célhelyét (ez azokat a mennyiségváltozásokat is elkapja, amelyek nem mozgatnak készletmennyiséget, például egy nulla készletű raktárban történő foglalást); valamint

  • egy beszerzési rendelést megerősítenek vagy törölnek.

Mindezek egyetlen, tranzakciónkénti „dirty set”-be (az érintett terméksablonok halmazába) futnak össze, így ha ugyanazon a terméken belül egy tranzakción belül több trigger is lefut, azok egyetlen újraszámításban egyesülnek. Alapértelmezés szerint az újraszámítás közvetlenül a tranzakció véglegesítése (commit) után fut le, saját adatbázis-kurzorban, így egy sikertelen újraszámítás sohasem alakít egy egyébként sikeres műveletet hibává – a hiba naplózásra kerül, és a következő készletváltozáskor önmagától helyreáll.

Javaslat

A Háttérfeladatok használata (queue_job) bekapcsolása a beállításokban ugyanazt a terméksablononkénti újraszámítást aszinkron queue_job feladatokba helyezi át, ami segít elkerülni a felületi időtúllépéseket nagy készletmozgásoknál. Ehhez előbb telepíteni kell a queue_job modult — a beállítás enélkül nem menthető el.

Full recompute

Az automatikus, fokozatos frissítéseken túl az adatok minden raktározható termékre egyszerre is újraépíthetők a beállításokban található Összes újraszámítása gombbal, vagy egy adott raktár saját Összes frissítése gombjával (amely ugyanarra a teljes újraszámításra hivatkozik). Ezt tömeges adatmódosítások után, vagy amikor a figyelmeztető sáv kéri, érdemes használni.

Legacy warehouse stock calculation

A eyssen_stock_calculate_wh_stock ugyanennek az ötletnek a korábbi megvalósítása: ugyanazok a Raktárkészlet számítása a terméken / Raktárkészlet megjelenítése a terméken kapcsolók a raktár űrlapján, ugyanazok a dinamikus, raktárankénti x_eyssen_wh_pt_* / x_eyssen_wh_pp_* mezők és opcionális listaoszlopok, valamint ugyanazok az Összes frissítése / Összes újraszámítása műveletek — de a kiszámított értékeket közvetlenül a terméken, egy tárolt JSON mezőben (product_wh_stocks) tárolja, egy tárolt HTML-összefoglalóval (product_wh_stocks_html) együtt, amelyet egy egyszerű HTML-widget jelenít meg, a kereshető product.stock.data modell helyett. A készletmennyiség-változásokra, illetve a beszerzési rendelés megerősítésére/törlésére adott újraszámítás termékenkénti, és minden tranzakció után egy friss kurzorban fut le, a közös „dirty set”-alapú kötegelés és a háttérfeladat-lehetőség nélkül, amelyet a eyssen_stock_advanced_stock biztosít.

Fontos

A eyssen_stock_calculate_wh_stock és a eyssen_stock_advanced_stock ugyanazokat a dinamikusan generált, raktárankénti mezőneveket és ugyanazokat a névvel ellátott lista-/keresőnézet-kiterjesztéseket kezeli. Egy adott adatbázisban a kettő közül csak az egyiket szabad telepíteni — ha mindkettőt telepítik, a két modul felülírja egymás generált mezőit és nézeteit.

Storage location size and load

A eyssen_stock_load fizikai méret- és terhelési attribútumokat ad a készlethelyekhez, hogy nyomon követhető legyen egy polc, tároló vagy raktárhely használható mérete és teherbírása. A készlethely űrlapjához (és a helyek listanézetéhez a megfelelő oszlopokkal) egy Méret és terhelés csoport kerül hozzáadásra, amely a következőket tartalmazza:

  • hosszúság, szélesség és magasság/vastagság mezők, mindegyik egy konfigurálható hosszúság-mértékegységben kifejezve (alapértelmezés szerint a rendszer referencia-hosszúságegysége);

  • egy Térfogat mező a saját térfogat-mértékegységével; valamint

  • a Weight field with its own weight unit of measure.

Méret és terhelés csoport a készlethely űrlapján

Megjegyzés

A hosszúság/szélesség/magasság mezők a forráskódban rögzített (hard-coded) magyar feliratokkal jelennek meg (Hosszúság (x), Szélesség (y), Magasság / Vastagság (z) — vagyis rendre a hosszúság, szélesség és magasság/vastagság mezőkről van szó), nem pedig fordítható szövegekkel, ezért a felület nyelvétől függetlenül magyarul jelennek meg, amíg fordítás nem kerül hozzáadásra.

Fontos

A Térfogat mezőt egyelőre nem számítja ki a rendszer a hosszúság/szélesség/magasság adatokból — a mögöttes számítási metódus egy üres helyőrző (stub), amely mindig 0-t tárol. Egyelőre helykitöltőként kezelendő, amíg ez nincs megvalósítva.

Konfiguráció

Az egyes modulok egymástól függetlenül kapcsolhatók be a Beállítások alkalmazás ‣ eYssen ERP ‣ Készlet alatt:

  • Negatív készlet tiltása — telepíti a eyssen_stock_disallow_negative_stock modult;

  • Raktárkészlet számítása — telepíti a régebbi eyssen_stock_calculate_wh_stock modult;

  • Fejlett készlet — telepíti a eyssen_stock_advanced_stock modult; valamint

  • Méret és terhelés kezelése — telepíti a eyssen_stock_load modult.

Fontos

Csak a Raktárkészlet számítása és a Fejlett készlet közül az egyiket kapcsolja be — lásd a fenti figyelmeztetést.

Amint a Fejlett készlet be van kapcsolva, kapcsolja be a Háttérfeladatok használata (queue_job) opciót is (közvetlenül alatta található a beállításokban), ha a queue_job modul elérhető, és a készlet-újraszámításnak nem kell a készletműveletekkel szinkronban (inline) futnia.

Használat

  1. Engedélyezze a negatív készletet ott, ahol az indokolt. Mielőtt a védelemre támaszkodna, tekintse át azokat a termékeket, kategóriákat és helyeket, amelyeknél kivételre van szükség (például egy kizárólag korrekciós módosításokra használt helyet), és jelölje be a Negatív készlet engedélyezése opciót a megfelelő rekordon.

  2. Kapcsolja be a raktárankénti készletadatokat az érintett raktáraknál. Minden olyan raktáron, amelynek külön adatokat kell jelentenie, jelölje be a Raktárkészlet számítása a terméken opciót, és emellett a Raktárkészlet megjelenítése a terméken opciót is, ha a raktárankénti bontásnak opcionális listaoszlopokként és keresési szűrőkként is meg kell jelennie.

  3. Bekapcsolás után futtasson teljes újraszámítást. Használja a raktár Összes frissítése gombját (vagy a beállításokban az Összes újraszámítása gombot), hogy az új raktár adatai azonnal feltöltődjenek, ahelyett hogy a következő készletmozgásra kellene várni.

  4. Ellenőrizze a készletet a terméken vagy az értékesítési rendelésen. Használja a Készletadatok widgetet a termék űrlapján, a raktárankénti opcionális listaoszlopokat, vagy a kibővített Mennyiség a dátumon felugró ablakot egy értékesítésirendelés-soron, hogy raktáranként lássa a készleten lévő, szabad és előrejelzett mennyiségeket anélkül, hogy elhagyná a rekordot.

  5. Rögzítse a helyek méretét és terhelését azokon a helyeken, ahol erre szükség van, hogy az azt felhasználó jelentéskészítés vagy elhelyezési (putaway) logika rendelkezésére álljanak a hosszúság, szélesség, magasság és súly adatok.

Hatókör és modulok

  • eyssen_stock_disallow_negative_stock — letiltja azokat a készletműveleteket, amelyek belső/tranzit helyeken negatívvá tennék a készletmennyiséget, termékenkénti, kategóriánkénti és helyenkénti felülbírálási lehetőséggel.

  • eyssen_stock_advanced_stock — az aktuális raktárankénti készleten lévő/szabad/előrejelzett számítás, a kereshető product.stock.data modellben tárolva, dinamikus raktárankénti mezőkkel, termék- és rendelésisor-widgetekkel, valamint automatikus/háttér-újraszámítással.

  • eyssen_stock_calculate_wh_stock — a korábbi raktárankénti készletszámítás, ugyanazokkal a raktárszintű kapcsolókkal, közvetlenül a terméken JSON/HTML mezőkként tárolva; a eyssen_stock_advanced_stock váltotta fel.

  • eyssen_stock_load — hosszúság/szélesség/magasság, térfogat és súly attribútumokat ad a készlethelyekhez.