Payment-gated delivery¶
Előre fizetéses értékesítési folyamatoknál — proforma számla, előleg vagy bármilyen más „fizess előbb, szállíts később” jellegű megállapodás esetén — az árunak fizikailag nem szabad elhagynia a raktárt, mielőtt a pénz ténylegesen megérkezett. A fizetéshez kötött szállítás mindaddig visszatartja egy értékesítési rendelés kimenő szállítását, amíg a rendelés ki nincs fizetve: letiltja mind a készletfoglalást, mind a Validate gombot, majd automatikusan feloldja a visszatartást, amint minden számla kiegyenlítésre kerül. Egy jogosultsággal rendelkező felhasználó továbbra is felülbírálhatja a visszatartást és korábban is elindíthatja a szállítást; a felülbírálást a chatter teljes egészében rögzíti.
Az újrafelhasználható „Visszatartva” alapelem¶
A fizetéshez kötött szállítás egy általános visszatartási mechanizmusra épül, amely az alap eyssen_stock modulban található, és minden átvitelen elérhető, függetlenül az értékesítéstől vagy a fizetéstől:
egy Visszatartva kapcsoló és egy csak olvasható Visszatartás oka mező a stock.picking modellen;
egy piros Visszatartva szalag az átvitel űrlapján, amikor a Visszatartva be van jelölve, valamint Visszatartva / Nincs visszatartva szűrők az átvitelek listájának keresőpaneljén; és
az
action_set_hold(reason)ésaction_release_hold()metódusok, amelyek együtt állítják be, illetve törlik a Visszatartva és Visszatartás oka mezőket.
A Visszatartva bejelölése azonnal megszünteti az átvitel készletmozgásainak foglalását; a feloldása újraindítja a foglalást (_action_assign), így az átvitel automatikusan újra lefoglalja az elérhető készletet. Bármely modul — nem csak a sale_stock_payment_gate — ily módon visszatartás alá helyezhet egy átvitelt, és számíthat rá, hogy a foglalás a feloldásig kikapcsolva marad.
Megjegyzés
Önmagában az általános Visszatartva csak a foglalást állítja le. Nem tiltja le a Validate gombot — ez a további, szigorúbb védelem kizárólag az alább ismertetett fizetési zsiliphez tartozik.
A fizetési feltétel jelölője¶
Hogy a fizetési zsilip egyáltalán vonatkozik-e egy rendelésre, azt a fizetési feltétele dönti el. A fizetési feltétel űrlapjához hozzáadott Fizetés szükséges szállítás előtt jelölőnégyzet jelöli meg a feltételt „fizess, mielőtt szállítasz” típusúként. Azok a rendelések, amelyek olyan fizetési feltételt használnak, amelynél ez a jelölőnégyzet nincs bejelölve — például egy utánvétes fizetési feltétel —, soha nincsenek visszatartva. Azok a rendelések, amelyeknek egyáltalán nincs fizetési feltétele, szintén soha nincsenek visszatartva.
A szállítás visszatartása a rendelés visszaigazolásakor¶
Amikor egy értékesítési rendelés visszaigazolásra kerül, és a fizetési feltétele fizetést követel meg a szállítás előtt, a rendelés minden még nem kész, még nem törölt kimenő átvitele egy lépésben visszatartás alá kerül: a Visszatartva bejelölésre kerül, a Visszatartás oka értéke „Szállításhoz fizetésre vár” lesz, és a zsilip saját Fizetésre visszatartva mezője is beállításra kerül. Ha a rendelés a visszaigazolás időpontjában már teljesen ki van fizetve (például egy proforma számla vagy előleg a visszaigazolás előtt kiegyenlítésre került), nem történik visszatartás, és a szállítás a szokásos módon folytatódik.
A szigorú zsilip: nincs foglalás, nincs jóváhagyás¶
Egy fizetés miatt visszatartott szállítás kétszeresen is le van tiltva, így sem az automatikus, sem a kézi úton nem csúszhat át:
Nincs foglalás. A zsilip felülbírálja a készletmozgás-foglalást, így egy fizetés miatt visszatartott átvitelhez tartozó mozgás kimarad a foglalásból, akár akkor, amikor az Odoo a visszaigazoláskor automatikusan lefoglalja a készletet, akár amikor a felhasználó a Elérhetőség ellenőrzése gombra kattint. Ez az ellenőrzés a zsilip saját Fizetésre visszatartva jelzőjén alapul, így akkor is érvényben marad, ha az általános Visszatartva kapcsolót külön törlik.
Nincs jóváhagyás. Ha egy fizetés miatt visszatartott szállításon a Validate gombra kattintanak, az áru kiszállítása helyett hibaüzenet jelenik meg, amely az alább ismertetett Szállításra feloldás gombra irányítja a felhasználót.
Fontos
Ha egy átvitelen közvetlenül a Fizetésre visszatartva = bejelöletlen értéket írják be, az le van tiltva minden olyan felhasználó számára, aki nincs benne a Szállítás fizetés nélkül csoportban. Csak az adott csoport Szállításra feloldás gombja (vagy egy jogosultsággal rendelkező/rendszerszintű írási művelet) oldhatja fel a zsilipet — egy másik folyamatból érkező egyszerű write() nem kerülheti meg csendben.
Automatikus feloldás a rendelés kifizetésekor¶
Egy rendelés akkor számít szállításra kifizetettnek, amint a hozzá kapcsolódó összes könyvelt vevői számla eléri a Fizetve vagy a Fizetés folyamatban fizetési állapotot. Egy base.automation szabály figyeli a vevői számlák (account.move, out_invoice) Fizetési állapot mezőjét, és minden olyan létrehozáskor vagy íráskor, amely érinti ezt a mezőt, újraértékeli a kapcsolódó rendelések összes kimenő, még nem kész átvitelét:
ha a rendelés most már teljesen ki van fizetve, minden még fizetés miatt visszatartott átvitel feloldásra kerül — a Fizetésre visszatartva, a Visszatartva és a Visszatartás oka mind törlődik, és a foglalás automatikusan újra lefut; valamint
ha a rendelés nincs teljesen kifizetve, és egy átvitel jelenleg nincs visszatartva (és korábban nem is oldották fel kézileg — lásd alább), az újra visszatartásra kerül „Fizetés visszavonva - a szállítás újra visszatartva.” okkal.
Megjegyzés
Fizetés folyamatban állapot kifizetettnek számít, mert egy teljes befizetést jelent, amelynek a bankkivonattal való egyeztetése még folyamatban van. Egy részleges fizetés soha nem oldja fel a visszatartást. A zsilip feltételezi, hogy a kapcsolódó számla(ák) lefedi(k) a rendelés teljes összegét — egy natív részleges előleg esetén egy teljesen kifizetett részszámla idő előtt feloldaná a teljes szállítást; ez a forgatókönyv kifejezetten kívül esik a hatókörön.
Újra visszatartás fizetés visszavonásakor¶
Mivel ugyanaz az automatizálás újraértékeli a rendelést a Fizetési állapot minden változásakor, egy fizetés visszavonása (például egy kifizetés egyeztetésének megszüntetése vagy törlése, aminek hatására a számla visszaáll Nincs fizetve állapotra) automatikusan újra visszatartás alá helyezi a rendelés összes még nem kész szállítását — amennyiben a szállítást korábban nem oldotta fel kézileg egy jogosultsággal rendelkező felhasználó.
Javaslat
A zsilip kizárólag a könyvelt vevői számlák szabványos account.move / payment_state mezőit olvassa. Nem függ semmilyen lokalizációtól: ugyanaz a logika oldja fel a szállítást attól függetlenül, hogy a rendelést egy magyar NAV proforma / díjbekérő számlán, egy szokásos előlegszámlán, vagy bármely más olyan modulon keresztül rendezték, amely végül könyvel és kifizet egy vevői számlát a rendeléssel szemben.
Kézi felülbírálás: szállítás feloldása fizetés előtt¶
Néha egy szállításnak valóban el kell indulnia, mielőtt a rendelés teljesen ki lenne fizetve (jóindulatú szállítás, megbízható ügyfél, kézi megállapodás). Az átvitel fejlécén található Szállításra feloldás gomb ezt teszi lehetővé:
csak akkor látható, ha az átvitel fizetés miatt visszatartás alatt áll, és csak a Szállítás fizetés nélkül biztonsági csoport tagjai számára;
megerősítést kér, majd törli a Fizetésre visszatartva, Visszatartva és Visszatartás oka mezőket, és beállítja a Kézileg feloldva szállításra mezőt, hogy nyomon lehessen követni a felülbírálást; valamint
egy chatter üzenet rögzíti, hogy ki oldotta fel a szállítást és mikor.
A Kézileg feloldva szállításra jelzővel ellátott szállítást a fent ismertetett automatikus szinkronizálás nem tartja vissza újra, még akkor sem, ha a rendelésről később kiderül, hogy ismét kifizetetlen — a kézi döntést tiszteletben tartja a rendszer, amíg valaki kézileg újra nem alkalmaz visszatartást.
A visszarendelések öröklik a visszatartást¶
Ha egy fizetés miatt visszatartott (vagy korábban feloldott) szállítás csak részben teljesül, és az Odoo visszarendelést hoz létre a fennmaradó mennyiségre, a visszarendelés ugyanazon szabály szerint kerül újraértékelésre, mint az eredeti szállítás: ha a rendelés még mindig fizetést követel meg a szállítás előtt, és még nincs teljesen kifizetve, az új visszarendelési átvitel ismét visszatartás alá kerül, ugyanazzal a „Szállításhoz fizetésre vár” okkal — még akkor is, ha az eredeti átvitelt korábban kézileg feloldották.
Rendelésszintű láthatóság¶
Az értékesítési rendelés űrlapja figyelmeztető sávot jelenít meg — „A szállítás vissza van tartva, amíg ez a rendelés nincs kifizetve.” — a rendelés lap felett, amikor a rendelés bármely szállítása jelenleg fizetés miatt visszatartás alatt áll. Ezt a számított Szállítás fizetésre visszatartva mező vezérli, így az értékesítési munkatársak egy pillantással látják a zsilipelt állapotot anélkül, hogy meg kellene nyitniuk az átvitelt.
Konfiguráció¶
Győződjön meg róla, hogy a
sale_stock_payment_gatetelepítve van. Ez automatikusan magával hozza azeyssen_stock,sale_stock,accountésbase_automationmodulokat.Lépjen a menüpontra, nyissa meg (vagy hozza létre) az előre fizetéses/proforma értékesítéseknél használt fizetési feltételt, és jelölje be a Fizetés szükséges szállítás előtt jelölőnégyzetet. Hagyja bejelöletlenül az olyan feltételeknél, mint az utánvét.
Adja meg a Szállítás fizetés nélkül csoportot (kategória: Készlet) azoknak a felhasználóknak, akik felülbírálhatják a zsilipet — például raktárvezetőknek — a menüponton keresztül. Ehhez a csoporthoz a szokásos készlet olvasási/írási jogosultság is szükséges ahhoz, hogy ténylegesen lássa és feloldhassa az átvitelt.
Nincs szükség további beállításra: a base.automation szabály és a visszatartási/feloldási logika azonnal aktív, amint a modul telepítve van, és legalább egy fizetési feltételen be van kapcsolva a jelölő.
Használat¶
Igazoljon vissza egy olyan értékesítési rendelést, amely zsilipelt fizetési feltételt használ. A kimenő szállítása létrejön, és azonnal visszatartás alá kerül, kivéve, ha a rendelés már teljesen ki van fizetve.
A rendelés űrlapja megjeleníti a A szállítás vissza van tartva, amíg ez a rendelés nincs kifizetve. sávot, a szállítási átvitel pedig a Visszatartva szalagot mutatja, Visszatartás oka = „Szállításhoz fizetésre vár.” értékkel. A Elérhetőség ellenőrzése nem foglal készletet, és a Validate megtagadja a futást.
Hozza létre és könyvelje le a vevői számlát (proforma, előleg vagy szokásos számla) a rendeléshez, majd rögzítse a teljes kifizetést. Amint a számla Fizetési állapot mezője eléri a Fizetve vagy a Fizetés folyamatban értéket, az automatizálás feloldja a szállítást: a visszatartás törlődik, és a készlet ismét lefoglalásra kerül.
Validate the now-released delivery normally.
Ha a korai szállítás elkerülhetetlen, a Szállítás fizetés nélkül csoporttal rendelkező felhasználó megnyithatja a visszatartott átvitelt, és a fizetésre várás helyett a Szállításra feloldás gombra kattinthat. A felülbírálást a rendszer rögzíti a chatterben, és az később bekövetkező fizetésiállapot-változásokat is túléli; ha a rendelésen később visszarendelés jön létre a fennmaradó mennyiségre, az automatikusan újra visszatartásra kerül, kivéve, ha a rendelés addigra teljesen kifizetésre került.
Hatókör és modulok¶
A funkciót két modul biztosítja:
eyssen_stock— az átviteleken elérhető, általános, újrafelhasználható Visszatartva / Visszatartás oka alapelem (szalag, kapcsoló, keresési szűrők, valamint a foglalást tiltó/újrafoglaló logika), amelyet itt alapvető építőelemként használunk.sale_stock_payment_gate— maga a fizetési zsilip: a Fizetés szükséges szállítás előtt fizetési feltétel jelölő, a visszaigazoláskor történő visszatartási logika, a szigorú foglalási/jóváhagyási tiltás, abase.automationáltal vezérelt automatikus feloldás és újra-visszatartás fizetésváltozáskor, a Szállítás fizetés nélkül csoport a Szállításra feloldás gombjával és chatter-nyomvonalával, a visszarendelések újra-visszatartása, valamint a rendelésszintű figyelmeztető sáv.