DoorAndDoor Sales New - Explicacion del flujo de orden de recogida
DoorAndDoor Sales New - Explicacion del flujo de orden de recogida
Objetivo de esta explicacion
Este documento explica el bloque funcional de:
- orden de recogida
- seguimiento por estados
- visibilidad desde ventas e inventario
- entrega al cliente desde almacen
La idea es entender como esta parte del proyecto convierte una necesidad operativa de entrega en un flujo controlado dentro de Odoo.
Idea principal del bloque
La orden de recogida nace para resolver una necesidad concreta:
hay casos donde el cliente no recibe el producto en una entrega tradicional inmediata, sino que debe recogerlo despues en almacen.
En ese escenario, hacia falta un documento operativo propio que permitiera:
- emitir una orden para el cliente
- saber que productos estan autorizados para recoger
- revisar si ya estan listos
- consultar la lista despues desde ventas
- confirmar la entrega desde almacen
Que problema resuelve
Antes de esta funcionalidad, el flujo podia tener:
- factura
- pago
- picking
Pero faltaba una capa operativa intermedia para las recogidas.
Eso generaba vacios como:
- no tener un documento claro para el cliente
- no tener una lista separada de recogidas
- no tener un estado visible de si estaba pendiente o lista
- no tener una confirmacion operativa simple de entrega en almacen
La orden de recogida viene a cubrir exactamente ese espacio.
Donde vive esta logica
La parte principal esta implementada en:
pickup_order.pyaccount_move.pypickup_order_views.xmlpickup_order_report.xmltest_pickup_order.py
Vision general del flujo
La cadena funcional puede entenderse asi:
1. Ya existe una factura con su seguimiento de fulfillment.
2. Ya existen lineas liberadas y relacionadas con un picking.
3. Desde la factura se crea la orden de recogida.
4. El sistema toma solo las lineas aptas para recogida.
5. Se genera una orden con sus lineas operativas.
6. La orden queda con estado segun la situacion del picking.
7. Ventas e inventario pueden consultarla en listas.
8. Almacen puede marcarla como entregada.
9. La orden puede imprimirse o reimprimirse para el cliente.
Paso 1 - La orden nace desde la factura
La factura tiene una accion llamada:
Create Pickup Order
Esa accion ejecuta en account_move.py:
action_create_pickup_orders()
Y esa accion llama a:
_ddsn_ensure_pickup_orders()
Que significa esto funcionalmente
La orden de recogida no se crea como un documento aislado o manual sin contexto.
Nace desde una factura que ya forma parte del flujo principal del modulo.
Eso garantiza trazabilidad desde el origen.
Paso 2 - El sistema decide que lineas pueden entrar
No toda linea facturada entra automaticamente en una orden de recogida.
El sistema primero filtra las candidatas mediante:
_ddsn_get_pickup_candidate_lines()
Regla base actual
Una linea puede entrar en orden de recogida si:
- tiene producto
- tiene
picking_id - el picking no esta cancelado
- tiene cantidad liberada no entregada
En la practica esto significa:
- no basta con que la factura exista
- no basta con que la linea este facturada
- tiene que haber sustento operativo real para la recogida
Como entender la cantidad autorizada
La logica usa la cantidad lista para recogida desde fulfillment:
- cantidad liberada
- menos cantidad ya entregada
Eso evita que se impriman o generen recogidas sobre cantidades ya cerradas.
Paso 3 - Las lineas se agrupan por picking y almacen
Dentro de _ddsn_ensure_pickup_orders(), el sistema agrupa las lineas candidatas segun:
pickingwarehouse
Que significa esto operativamente
Si varias lineas pertenecen a una misma operacion de salida, pueden formar parte de una misma orden de recogida.
Esto ayuda a que el documento tenga sentido operativo para almacen y para el cliente.
Paso 4 - Se crea la orden de recogida
El modelo principal es:
doorandoor.pickup.order
Ese modelo guarda datos como:
- numero de orden
- factura
- cliente
- pedido de venta
- picking
- almacen
- estado
- notas
- usuario que entrego
- fecha de entrega
Las lineas operativas se guardan en:
doorandoor.pickup.order.line
Que lleva cada linea de recogida
Cada linea puede reflejar:
- producto
- linea de fulfillment relacionada
- cantidad autorizada
- cantidad entregada
- importe relacionado
Que significa esto funcionalmente
La orden de recogida no es solo una referencia.
Es un documento con detalle real de que puede retirar el cliente.
Paso 5 - La orden toma un estado operativo
La orden maneja estos estados:
newpendingreadydeliveredcancelled
Como se determina el estado base
Cuando el sistema prepara la orden, usa el estado del picking relacionado.
La regla base actual es:
readysi el picking esta enassignedodonependingsi existe linea autorizable pero la operacion aun no esta lista
Ademas:
cancelledsi el picking fue canceladodeliveredcuando almacen confirma la entrega
Como explicarlo de forma simple
La orden de recogida no responde solo a que el cliente tenga una factura.
Responde a si la operacion realmente esta en condicion de ser retirada.
O sea:
- factura sola no basta
- autorizacion sola no basta
- tiene que haber base operativa para la recogida
Paso 6 - El sistema evita duplicaciones innecesarias
Si ya existe una orden activa para el mismo picking, el sistema no crea otra sin necesidad.
En lugar de duplicarla:
- reutiliza la existente
- agrega solo lineas faltantes si aparecen nuevas
- vuelve a sincronizar el estado desde la operacion
Que valor aporta esto
Evita ruido operativo y mantiene una sola orden coherente por operacion cuando corresponde.
Paso 7 - La orden puede imprimirse
Cada orden tiene una accion para imprimir:
Print Pickup Order
El reporte esta definido en pickup_order_report.xml.
Que muestra el documento
El reporte incluye:
- numero de orden
- factura
- cliente
- almacen
- picking
- estado
- lineas con producto, cantidad autorizada e importe
- notas
- total
- bloque de firma de emitido por y recibido por
Que significa esto funcionalmente
La operacion ya no depende solo de una vista en pantalla.
Existe tambien un documento formal que puede entregarse o reimprimirse cuando haga falta.
Paso 8 - La orden queda visible en listas operativas
El modulo agrega vistas de lista, formulario y busqueda para Pickup Orders.
Desde ahi se puede:
- buscar por numero
- buscar por cliente
- revisar por almacen
- agrupar por estado
- agrupar por cliente
- agrupar por almacen
Separacion por area
La misma funcionalidad sirve para dos miradas:
Ventas
Puede consultar:
- nuevas
- pendientes
- listas
Inventario
Puede consultar especialmente:
- entregadas
- historico operativo
Esto ayuda a que cada area mire la misma informacion con enfoque distinto.
Paso 9 - Almacen puede marcar la entrega
Cuando el cliente recoge efectivamente, almacen puede ejecutar:
Mark Delivered
Esa accion hace que la orden:
- pase a
delivered - registre quien hizo la entrega
- registre la fecha
- actualice las cantidades entregadas en las lineas de la orden
Que significa esto operativamente
Ya no queda la recogida en una confirmacion verbal o informal.
El sistema deja constancia del cierre operativo.
Importante para explicar bien esta parte
La orden de recogida complementa el flujo logistico, pero no reemplaza al picking.
Se puede entender asi:
- el picking representa la operacion de inventario
- la pickup order representa el documento y control operativo de recogida del cliente
Ambos se relacionan, pero no cumplen exactamente la misma funcion.
Relacion con el flujo general del proyecto
La orden de recogida aparece despues de que ya existen:
- factura
sale.orderfulfillment- liberacion por pago
- picking
Por eso este bloque suele explicarse mejor como una capa operativa posterior.
La secuencia completa se puede contar asi:
1. La factura origina el seguimiento.
2. El pago libera cantidades.
3. El sistema genera la operacion de salida.
4. Si la entrega al cliente sera por recogida, se emite la pickup order.
5. Almacen la usa para confirmar la entrega.
Beneficios de negocio
1. Formaliza la recogida
La entrega en almacen deja de ser algo informal.
2. Mejora coordinacion entre areas
Ventas, facturacion e inventario pueden consultar la misma orden.
3. Da trazabilidad al cliente y a la operacion
La orden queda ligada a factura, pedido y picking.
4. Facilita reimpresion y control posterior
Si hace falta volver a emitir el documento, ya existe dentro del flujo.
Como presentarlo en una reunion
Una forma ejecutiva de explicarlo es esta:
"La orden de recogida se incorporo para cubrir los casos en que el cliente retira productos en almacen despues de la factura. El sistema genera un documento propio ligado a la factura y al picking, lo clasifica por estado operativo y permite que almacen confirme la entrega final. Con eso se gana control, trazabilidad y visibilidad entre areas."
Como presentarlo en una demo
Se puede mostrar en este orden:
1. Abrir una factura con picking relacionado.
2. Ejecutar Create Pickup Order.
3. Mostrar la orden creada.
4. Explicar sus lineas y el estado.
5. Imprimir el documento.
6. Abrir la lista de Pickup Orders.
7. Filtrar por estado.
8. Marcar una orden como Delivered.
9. Mostrar fecha y usuario de entrega.
Como presentarlo en una capacitacion
Para ventas
- como localizar la orden desde factura
- como consultar estados
- como reimprimir el documento
Para almacen
- como revisar si una orden esta
pendingoready - como abrir el detalle
- como marcarla como entregada
Para administracion
- como entender la relacion entre factura, picking y pickup order
- como usar el documento como soporte de trazabilidad
Que conviene aclarar con precision
Para explicarlo bien, conviene remarcar esto:
- la pickup order ya esta implementada y funcional
- la regla base de estados ya existe
- el flujo esta pensado para operar sobre lineas realmente autorizadas
Y tambien:
- es una capa operativa complementaria
- no sustituye el control logistico base de Odoo
Conclusion
El bloque de orden de recogida completa una necesidad operativa importante del proyecto.
Gracias a esta funcionalidad:
- el cliente puede recibir un documento formal de recogida
- ventas puede dar seguimiento posterior
- inventario puede confirmar la entrega
- el sistema mantiene trazabilidad entre factura, operacion y entrega final
En resumen:
la pickup order convierte una necesidad practica de almacen en un flujo visible, controlado y reimprimible dentro de Odoo.