Starea și datele livrării

Aplicația standard Vânzări a Odoo urmărește deja dacă o comandă confirmată este Nelivrată, Începută, Livrată parțial sau Livrată complet, exclusiv pe baza stării comenzilor de livrare asociate. În operațiunile de zi cu zi acest lucru nu este suficient: echipele de depozit și de vânzări trebuie să știe și cât din comandă a plecat fizic, când a plecat ultima expediere și ce să facă cu o livrare care nu va corespunde niciodată exact cantității comandate (mărfuri vrac sau lichide) sau care a fost anulată complet. Separat, la companiile maghiare, regulile contabile cer ca data de înregistrare a unei facturi și data livrării (onorării) ei să coincidă exact, lucru pe care integrarea standard stoc/facturare îl poate încălca în tăcere pe facturile de corecție. Această pagină documentează cele două module eYssen care acoperă aceste lacune.

Starea livrării pe comanda de vânzare

screenshot: delivery-status-and-dates-order-form-status
menu
Sales ‣ Orders ‣ open a confirmed order that has been partially delivered ‣ Other Info tab
shows
A confirmed sales order form (state = "sale") with a partially delivered order, on the "Other Info" tab, "Delivery" group. Shows the Delivery Status badge/field, the Delivery % progress bar and the Last Delivery Date field together.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Pe o comandă confirmată, grupul Livrare din fila Alte informații afișează trei indicatori complementari, imediat după câmpul standard Stadiul livrării:

  • Livrare % — procentul din cantitatea comandată care a fost efectiv livrat, calculat din qty_delivered față de product_uom_qty pe toate liniile comenzii al căror produs nu este un serviciu. Este afișat numai cât timp comanda este confirmată.

  • Data ultimei livrări — data/ora finalizării celei mai recente livrări efectuate, de ieșire, asociate comenzii (picking_ids filtrate pe state == 'done' și picking_type_code == 'outgoing'). Reflectă doar livrările care au plecat deja din depozit — nu prima livrare (aceasta este câmpul standard effective_date, afișat în continuare separat).

Ambele câmpuri sunt stocate și se recalculează automat ori de câte ori se schimbă liniile comenzii sau transferurile acesteia, astfel încât pot fi folosite direct în filtre, grupări și în tabloul de bord de raportare descris mai jos.

Livrări anulate

Câmpul standard Stadiul livrării distinge doar Nelivrat, Început, Livrat parțial și Livrat complet — o comandă complet anulată apare în continuare ca Nelivrat. Acest modul adaugă o a cincea valoare, Anulat: ori de câte ori o comandă are cel puțin o livrare și fiecare dintre transferurile sale este în starea Anulat, starea livrării comenzii este afișată ca Anulat.

Notă

Textul de ajutor încorporat al câmpului („Blue: Not Delivered/Started, Orange: Partially Delivered, Green: Fully Delivered”) aparține Odoo și nu este extins pentru noua stare. În vizualizările listă și Kanban adăugate de acest modul, Anulat este afișat în roșu (pericol) pentru a rămâne distinct vizual de celelalte trei.

Suprascrierea manuală „Fully Delivered”

screenshot: delivery-status-and-dates-force-full-delivery-button
menu
Sales ‣ Orders ‣ open a confirmed, not-fully-delivered order ‣ header
shows
The same order form, zoomed on the header, showing the "Fully Delivered" button next to the status bar (order not yet fully/cancelled delivered).
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Pentru mărfurile vrac sau lichide, cantitatea livrată nu coincide aproape niciodată cu cea comandată până la ultima zecimală, astfel încât starea calculată rămâne Livrat parțial la nesfârșit, deși livrarea este, în toate privințele practice, completă. Butonul de antet Livrat complet permite utilizatorului să suprascrie manual acest lucru pe o comandă confirmată:

  1. Faceți clic pe Livrat complet în antetul comenzii. Aceasta setează indicatorul tehnic Livrat integral forțat (force_full_delivery) și recalculează imediat starea livrării la Livrat complet, indiferent de cantitățile livrate reale. Un mesaj din chatter înregistrează faptul că starea a fost forțată manual.

  2. Butonul este disponibil numai pe comenzile confirmate a căror stare curentă nu este deja Livrat complet sau Anulat și dispare odată ce suprascrierea este activă.

  3. În locul lui apare un buton Resetează starea livrării. Făcând clic pe el, suprascrierea este eliminată și starea se recalculează din nou din cantitățile livrate reale, înregistrând tot un mesaj în chatter.

screenshot: delivery-status-and-dates-reset-button
menu
same order as above, after clicking "Fully Delivered" ‣ header + chatter
shows
An order where "Fully Delivered" has already been forced, showing the "Reset Delivery Status" header button and the chatter message logged by the override.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Important

Suprascrierea nu afectează niciodată stocul: niciun transfer, nicio mișcare și nicio comandă restantă nu este creată, anulată sau validată de vreunul dintre butoane. Ea modifică doar ceea ce raportează câmpul Stadiul livrării. O comandă Anulat are întotdeauna prioritate față de suprascriere — dacă toate livrările comenzii sunt anulate, starea afișează Anulat chiar și cât timp Livrat integral forțat este setat.

Starea livrării în vizualizările listă și de căutare

screenshot: delivery-status-and-dates-order-list-badges
menu
Sales ‣ Orders ‣ click the column-picker (sliders icon) at the top-right of the list and enable "Delivery %" and "Last Delivery Date"
shows
The Sales --> Orders list view with the Delivery Status column showing colored badges (green/orange/blue/red) and the Delivery % and Last Delivery Date optional columns enabled via the column-picker.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Coloana Stadiul livrării este activată implicit (insignă colorată: verde pentru Livrat complet, portocaliu pentru Livrat parțial, albastru pentru Nelivrat/Început, roșu pentru Anulat) atât în lista Vânzări ‣ Comenzi, cât și în lista Oferte. Livrare % și Data ultimei livrări sunt adăugate în ambele liste ca coloane opționale (ascunse implicit), activate din selectorul de coloane.

screenshot: delivery-status-and-dates-search-filters
menu
Sales ‣ Orders ‣ click into the search bar ‣ Filters tab
shows
The search panel's Filters dropdown open on the Orders list, showing "Not Delivered", "Delivery Started", "Partially Delivered", "Fully Delivered", "Delivery Cancelled" and the "Group By: Delivery Status" option.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Panoul de căutare a comenzilor primește câte un filtru pentru fiecare stare a livrării — Nelivrat, Livrare începută, Livrat parțial, Livrat complet și Livrare anulată — plus un filtru de dată Data ultimei livrări și o opțiune Group By: Delivery Status.

Tabloul de bord al stării livrării

screenshot: delivery-status-and-dates-dashboard-list
menu
Sales ‣ Reporting ‣ Delivery Status
shows
The "Delivery Status" reporting list view, showing Order, Partner, Order Date, Commitment Date, Expected, First Delivery, Last Delivery, Delivery Status badge, Delivery % bar and Total columns.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Un meniu dedicat de raportare, Vânzări ‣ Raportare ‣ Stadiul livrării, oferă o vedere între comenzi, limitată la comenzile confirmate (state = 'sale'). Vizualizarea sa listă combină referința comenzii, clientul, data comenzii, Data angajată, data Estimat (expected_date), Prima livrare (effective_date standard), Ultima livrare (last_delivery_date), insigna Stadiul livrării, bara de progres Livrare %, totalul comenzii și agentul de vânzări.

screenshot: delivery-status-and-dates-dashboard-pivot
menu
Sales ‣ Reporting ‣ Delivery Status ‣ Pivot view button
shows
The same reporting action switched to the Pivot view, delivery status as columns and order month as rows, with Delivery % and Total as measures.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Aceeași acțiune oferă și vizualizările Pivot și Grafic: pivotul defalcă Livrare % și totalul comenzii pe starea livrării (coloane) și pe luna comenzii (rânduri); graficul arată valoarea totală a comenzilor pe starea livrării, ca diagramă cu bare.

Data efectivă a recepției de către client

Pe lângă comanda de vânzare, acest modul adaugă și un câmp Data efectivă a recepției de către client (delivered_date) pe livrarea propriu-zisă (stock.picking). Este un câmp tehnic, doar pentru citire, neexpus în nicio vizualizare de acest modul — există pentru a înregistra momentul în care consumatorul a preluat efectiv mărfurile (conform urmăririi transportatorului), care poate fi sensibil mai târziu decât date_done (momentul în care depozitul a validat transferul și l-a predat transportatorului).

Câmpul este completat prin hook-ul idempotent _set_delivered(), care:

  • se aplică numai transferurilor de ieșire a căror locație de destinație este o locație de client;

  • ignoră în tăcere o marcă temporală goală/falsă; și

  • nu suprascrie niciodată o valoare existentă — prima recepție confirmată este cea care contează, apelurile ulterioare cu o altă marcă temporală nu au niciun efect.

Notă

eyssen_sale_delivery_status definește doar câmpul și acest hook; integrările de urmărire a transportatorilor (de exemplu metodele de livrare GLS, Foxpost și MPL) apelează _set_delivered() odată ce detectează un eveniment de urmărire de livrare efectivă, iar alte module eYssen (cum ar fi logica ferestrei de retur RMA) citesc data rezultată. Consultați documentația proprie a acelor module pentru detalii.

Consecvența datei de onorare a facturii în Ungaria

screenshot: delivery-status-and-dates-invoice-delivery-date
menu
Accounting ‣ Customers ‣ Invoices ‣ open a HU corrective invoice ‣ Other Info tab
shows
A Hungarian customer invoice form, "Other Info" tab, showing the Delivery Date field next to the accounting Date field, both holding the same value; ideally a corrective invoice so the "Origin/Corrected invoice" link is also visible.
module
eyssen_sale_delivery_status, sale_delivery_status_ws, eyssen_l10n_hu_sale_stock_delivery_date
notes
English UI, light theme, 1440px width.

Contabilitatea de bază a Odoo păstrează un câmp Data livrării (delivery_date) pe fiecare factură. Când aplicația Stoc este instalată, sale_stock sincronizează automat acel câmp cu Dată efectivă a comenzii de vânzare asociate (data finalizării primei sale livrări) de fiecare dată când factura este recalculată. Separat, eyssen_l10n_hu impune la postare o cerință NAV maghiară: pentru o companie maghiară, Dată contabilă a unei facturi și Data livrării trebuie să fie identice, altfel Postează refuză cu mesajul „The Accounting Date is not the same as the Fulfillment Date!”. Pentru a satisface această cerință, facturile de corecție și notele de credit sunt făcute să moștenească ambele date direct de la factura originală pe care o corectează sau o stornează.

Problema pe care o rezolvă acest modul este una de ordine de calcul: deoarece recalcularea proprie Data livrării din sale_stock încearcă întotdeauna să reștampileze câmpul cu data efectivă a comenzii de vânzare, acea logică poate rula după logica „moștenește de la factura originală” din eyssen_l10n_hu, în funcție de combinația exactă de aplicații instalate — mutând în tăcere din nou data livrării unei facturi de corecție departe de data facturii originale și stricând potrivirea dintre data contabilă și data livrării în momentul Postează.

eyssen_l10n_hu_sale_stock_delivery_date este un modul mic, doar de dependențe (nu adaugă vizualizări, meniuri sau câmpuri noi), care depinde de ambele module sale_stock și eyssen_l10n_hu. Dependența de ambele garantează că suprascrierea sa account.move._compute_delivery_date() rulează după cea din sale_stock, astfel încât logica facturii de corecție să aibă întotdeauna ultimul cuvânt:

  • mișcările care sunt deja Postat rămân neatinse (recalcularea delivery_date pe o înregistrare postată, deja cu hash, nu trebuie să se întâmple niciodată);

  • pe orice altă mișcare, dacă are o Corrected Invoice sau este o stornare (reversed_entry_id), atât Data livrării, cât și Dată sunt forțate la data livrării facturii originale, anulând orice resincronizare determinată de stoc; și

  • ca plasă generală de siguranță, dacă Data livrării și Dată încă nu coincid după aceea, Dată este aliniată la Data livrării (sau invers, dacă Data livrării este goală).

Important

Această logică este duplicată intenționat, linie cu linie, între eyssen_l10n_hu și eyssen_l10n_hu_sale_stock_delivery_date — comentariile din codul modulului o spun explicit. Dacă acest comportament este vreodată modificat, ambele module trebuie actualizate împreună, altfel o companie maghiară care are instalate atât sale_stock, cât și eyssen_l10n_hu, dar nu și acest modul, poate ajunge la exact desincronizarea pe care acesta a fost scris să o prevină.

Configurare

Ambele module sunt aplicații Odoo obișnuite, instalate din Aplicații; niciunul nu are un comutator în Setări.

  • Sale Delivery Status (eyssen_sale_delivery_status) depinde de sale_management, stock și sale_stock. Instalarea sa este suficientă pentru a obține câmpurile suplimentare, completările de listă/căutare și meniul de raportare — nu mai este nimic de configurat.

  • eYssen Sale Stock Delivery Date (eyssen_l10n_hu_sale_stock_delivery_date) depinde de sale_stock și eyssen_l10n_hu și nu este instalat automat și nici necesar vreunui alt modul eYssen. Instalați-l explicit pe orice companie maghiară (cu eyssen_l10n_hu instalat) care folosește și facturarea vânzărilor condusă de stoc (sale_stock) — altfel, facturile de corecție din acea bază de date rămân expuse desincronizării datei de onorare descrisă mai sus.

Sfat

Butoanele Livrat complet și Resetează starea livrării, precum și câmpurile de livrare de pe formularul comenzii nu necesită niciun grup de securitate în afara accesului obișnuit la comenzile de vânzare — nu există o permisiune dedicată pentru această funcție.

Utilizare

  1. Confirmați o comandă de vânzare cu o rută de livrare, ca de obicei. Pe măsură ce transferurile sunt validate, standardul Stadiul livrării, plus Livrare % și Data ultimei livrări ale acestui modul, se actualizează automat în fila Alte informații a comenzii.

  2. Dacă toate livrările comenzii ajung să fie anulate, starea trece la Anulat, în loc să rămână la Nelivrat.

  3. Pentru mărfurile vrac/lichide care nu vor atinge niciodată exact 100%, faceți clic pe Livrat complet în antet odată ce expedierea este efectiv completă; faceți clic mai târziu pe Resetează starea livrării dacă suprascrierea trebuie anulată.

  4. Folosiți opțiunile Filtre și Group By: Delivery Status din Vânzări ‣ Comenzi sau tabloul de bord dedicat Vânzări ‣ Raportare ‣ Stadiul livrării pentru a examina progresul livrărilor pe comenzi.

  5. La companiile maghiare cu ambele module instalate, corectarea sau stornarea unei facturi își menține automat Data livrării și Dată aliniate cu factura originală — nu este necesară nicio introducere manuală de date pe factura de corecție propriu-zisă.

Starea livrării în portalul clientului

Indicatorii de livrare descriși mai sus se află pe formularul comenzii de vânzare, în liste și în tabloul de bord de raportare — ecrane de back office pe care un client al magazinului web nu le vede niciodată. Micul modul însoțitor sale_delivery_status_ws publică aceiași indicatori în portalul clienților de pe site-ul web, astfel încât clienții autentificați să poată urmări singuri progresul propriilor livrări, în loc să apeleze la suport. Este un modul pur de afișare: nu adaugă setări, meniuri sau câmpuri noi — instalarea sa din Aplicații este comutatorul de pornire/oprire — și necesită eyssen_sale_delivery_status (ale cărui câmpuri le afișează), sale_stock și aplicația Site web. Nu este instalat automat; activați-l explicit pe orice bază de date ai cărei clienți ai magazinului web ar trebui să vadă progresul livrării.

Lista de comenzi

Când un client se autentifică pe site-ul web și deschide Contul meu ‣ Comenzile dvs., lista de comenzi primește două coloane suplimentare după Total:

  • Stadiul livrării — o insignă colorată, de tip pastilă, pentru fiecare comandă. Portalul folosește în mod deliberat formulări mai scurte și mai prietenoase pentru client decât etichetele stării livrării din back-end:

    Starea livrării în back-end

    Insigna din portal

    Culoarea insignei

    Livrat complet

    Livrat

    Verde

    Livrat parțial

    Parțial

    Galben

    Început

    Început

    Albastru

    Nelivrat

    În așteptare

    Gri

    Anulat

    Anulat

    Roșu

  • Livrare % — procentul de livrare al comenzii, rotunjit în jos la un număr întreg (afișat în prezent cu un semn de procent dublat, de exemplu 42%%, din cauza unei particularități a șablonului — consultați nota de sub pagina de detalii a comenzii). Este afișat numai pentru comenzile care au o stare a livrării.

Notă

Ambele coloane sunt ascunse pe ecrane înguste (de lățimea unui telefon), în același mod în care listele standard din portal (de exemplu lista de facturi) își reduc deja coloanele secundare pentru a rămâne lizibile.

Pagina de detalii a comenzii

Deschizând o comandă din acea listă, tabelul Informații vânzare din pagina de portal a comenzii primește până la trei rânduri suplimentare:

  • Stare livrare: — aceeași insignă colorată ca în lista de comenzi;

  • Livrat: — o bară de progres verde, etichetată cu procentul de livrare al comenzii;

  • Ultima livrare: — data (fără ora din zi) celei mai recente livrări finalizate.

Notă

În versiunea curentă a modulului, procentul este afișat cu un semn de procent dublat (de exemplu 42%%) — atât în coloana Livrare % din lista de comenzi, cât și în eticheta și lățimea acestei bare. Deoarece 42%% nu este o lățime CSS validă, bara nu se umple vizual până la procentul de livrare până când această particularitate a șablonului nu este remediată.

Fiecare rând apare numai după ce valoarea sa de bază este setată: o ofertă sau o comandă confirmată fără nicio comandă de livrare încă nu afișează niciunul dintre ele, iar rândul cu bara de progres rămâne ascuns cât timp procentul livrat este încă zero.

Deoarece valorile provin direct din câmpurile întreținute de eyssen_sale_delivery_status, portalul este întotdeauna de acord cu back office-ul — cu excepția formulărilor din portal. O comandă forțată manual cu Livrat complet afișează clientului insigna verde Livrat, iar o comandă ale cărei livrări au fost toate anulate afișează insigna roșie Anulat.

Domeniu de aplicare și module

  • eyssen_sale_delivery_status — adaugă comenzilor de vânzare Livrare %, Data ultimei livrări și starea de livrare Anulat, suprascrierea manuală Livrat complet, filtrele de căutare și coloanele de listă pentru starea livrării, tabloul de bord Vânzări ‣ Raportare ‣ Stadiul livrării și câmpul Data efectivă a recepției de către client pe livrări.

  • eyssen_l10n_hu_sale_stock_delivery_date — menține Data livrării (data de onorare) a unei facturi maghiare de corecție/stornare aliniată cu factura sa originală, independent de data efectivă a comenzii de vânzare determinată de stoc, astfel încât regula NAV privind data contabilă/data livrării, impusă de eyssen_l10n_hu, să continue să fie respectată în momentul Postează.

  • sale_delivery_status_ws — afișează starea livrării (în formulări prietenoase pentru client) și procentul de livrare clienților autentificați, atât în lista Comenzile dvs. din portalul site-ului web, cât și în pagina de portal a comenzii, iar pe pagina de portal a comenzii și data ultimei livrări.