Per le consegna degli ordini che arrivano dall'eCommerce sto testando un servizio esterno che dispone di un connector per Odoo. Il supporto tecnico è disponibile ad affinare il filtro di base che usano per l'import, ma devo essere io a fornire indicazioni tecniche esplicite. E per fare questo chiedo il vostro aiuto ...
Avrei bisogno della query per estrarre gli Ordini di Vendita che soddisfano questi criteri:
Stato Ordine di Vendita = Sales Order (Confermato)
Stato Fattura di Vendita = Paid (altrimenti si rischia di inviare prodotti non pagati)
Stato Ordine di Consegna = Ready (altrimenti si rischia di richiedere il ritiro per prodotti non disponibili)
TIA
2 Risposte
Puoi forzare l'ordine ad essere confermato se e solo se risulta l'incasso (punto 1 e 2 risolti)
Devi inviare al corriere solo le spedizioni confermate (punto 3 risolto)
Ti posso dire cio' visto che sto completando l'integrazione con 3 dei principali spedizionieri italiani (BRT, GLS, SDA) ed uno estero con presenza in italia ... bisogna risolvere prima da processo non da dato ... il dato lo spedisci quando e' pronto, ovvero dalla spedizione ... alla spedizione non arrivi se il dato non e' coerente.
Se cerchi di fare tutto a monte diventa un casino e non te ne esci piu' ... perdona la franchezza anche forse fastidiosa, lo ammetto, ma il dato non si genera da solo e per esporlo bisogna produrlo e bene.
my 2 cents
Dal punto di vista teorico hai assolutamente ragione: se un cambio di stato è soggetto a vincoli, questi vanno verificati a monte. Punto.
Ma la vedo un po' complicata da implementare, ad es.:
> Puoi forzare l'ordine ad essere confermato se e solo se risulta l'incasso
L'eCommerce, nel mio caso, vende a prescindere dalla disponibilità del prodotto e incassa in anticipo. Quindi:
- se l'ordine che arriva dall'eCommerce è già Confermato e la fattura Pagata, ma è necessario verificare lo stato di "Pronto" del trasferimento
- se l'ordine è inserito manualmente, le cose possono essere diverse ...
Inoltre la query in questione funzionerà in qualsiasi caso, cioè anche quando il processo è implementato come dici tu (potrebbe diventare un problema solo se fosse previsto un futuro cambiamento dei vincoli di consegna ...)
Quindi la tua soluzione è quella corretta, ma, se imponendo al connector dei vincoli di estrazione mi evito tutti i costi di implementazione e gestione, credo di sapere verso quale soluzione si orienterà il cliente ... ;)
E grazie per la risposta, che per me non è mai "fastidiosa", anzi .. :)
Come dice Luigi è un bel casino ricostruire la gerarchia delle entità di Odoo visto che non c'è documentazione. Anche noi integrando logistiche o trasportatori, siamo partiti dai Trasferimenti (o Ordini di Consegna che dir si voglia), aka stock_picking.
Comunque mi suggeriscono che per collegare sale.order, account.invoice e stock.picking la query dovrebbe essere qualcosa del tipo:
SELECT DISTINCT sale_order.name
FROM stock_picking
INNER JOIN stock_move
ON stock_picking.id = stock_move.picking_id
INNER JOIN procurement_order
ON stock_move.procurement_id = procurement_order.id
INNER JOIN sale_order_line
ON procurement_order.sale_line_id = sale_order_line.id
INNER JOIN sale_order
ON sale_order_line.order_id = sale_order.id
INNER JOIN sale_order_line_invoice_rel
ON sale_order_line_invoice_rel.order_line_id=sale_order_line.id
INNER JOIN account_invoice_line
ON account_invoice_line.id=sale_order_line_invoice_rel.invoice_line_id
INNER JOIN account_invoice
ON account_invoice.id=account_invoice_line.invoice_id
WHERE sale_order.state='confirmed'
AND account_invoice.state='paid'
AND stock_picking.state='ready'
Se ci fossi stato io al posto di Fabien una bella righellata a chi ha inventato procurement_order come tabella di incrocio sia fra trasferimenti e ordini di acquisto che fra trasferimenti e ordini di vendita... non glie la cavava nessuno :-D