Estado y fechas de entrega¶
La aplicación estándar Ventas de Odoo ya indica si un pedido confirmado está No entregado, Iniciado, Parcialmente entregado o Totalmente entregado, basándose únicamente en el estado de sus órdenes de entrega vinculadas. En el día a día esto no basta del todo: los equipos de almacén y ventas también necesitan saber cuánto de un pedido ha salido físicamente, cuándo salió el último envío, y qué hacer con una entrega que nunca coincidirá exactamente con la cantidad pedida (mercancía a granel o líquida) o que se canceló por completo. Por separado, en las compañías húngaras las normas contables exigen que la fecha de contabilización de una factura y su fecha de entrega (cumplimiento) coincidan exactamente, algo que la integración estándar de existencias/facturación puede romper silenciosamente en las facturas rectificativas. Esta página documenta los dos módulos de eYssen que cierran estas carencias.
Estado de entrega en el pedido de venta¶
- 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.
En un pedido confirmado, el grupo Entrega de la pestaña Otra información muestra tres indicadores complementarios, justo después del campo estándar Estado de entrega:
% de entrega — el porcentaje de la cantidad pedida que realmente se ha entregado, calculado a partir de
qty_deliveredfrente aproduct_uom_qtyen todas las líneas de pedido cuyo producto no sea un servicio. Solo se muestra mientras el pedido está confirmado.Fecha de última entrega — la fecha/hora de finalización de la entrega saliente más reciente en estado hecho vinculada al pedido (
picking_idsfiltrado porstate == 'done'ypicking_type_code == 'outgoing'). Solo refleja las entregas que ya salieron del almacén, no la primera entrega (ese es el campo estándareffective_date, que se sigue mostrando por separado).
Ambos campos se almacenan y se recalculan automáticamente cada vez que cambian las líneas del pedido o sus transferencias, por lo que pueden usarse directamente en filtros, agrupaciones y en el panel de informes descrito a continuación.
Entregas canceladas¶
El campo estándar Estado de entrega solo distingue entre No entregado, Iniciado, Parcialmente entregado y Totalmente entregado; un pedido totalmente cancelado sigue mostrándose como No entregado. Este módulo añade un quinto valor, Cancelado: siempre que un pedido tenga al menos una entrega y todas sus transferencias estén en el estado Cancelado, el estado de entrega del pedido se muestra en su lugar como Cancelado.
Nota
El texto de ayuda integrado del campo («Azul: No entregado/Iniciado, Naranja: Parcialmente entregado, Verde: Totalmente entregado») es el propio de Odoo y no se amplía para el nuevo estado. En las vistas de lista y Kanban añadidas por este módulo, Cancelado se muestra en color rojo (peligro) para mantenerlo visualmente distinto de los otros tres.
Anulación manual de «Completamente entregado»¶
- 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.
Para bienes a granel o líquidos, la cantidad entregada casi nunca coincide con la cantidad pedida hasta el último decimal, por lo que el estado calculado permanece en Entregado parcialmente de forma indefinida aunque la entrega esté, a efectos prácticos, completa. El botón de cabecera Completamente entregado permite al usuario anular esto de forma manual en un pedido confirmado:
Haga clic en Completamente entregado en la cabecera del pedido. Esto activa el indicador técnico Entrega completa forzada (
force_full_delivery) y recalcula de inmediato el estado de entrega a Completamente entregado, sin importar las cantidades realmente entregadas. Un mensaje en el chatter registra que el estado se forzó de forma manual.El botón solo está disponible en pedidos confirmados cuyo estado actual no sea ya Completamente entregado o Cancelado, y desaparece en cuanto la anulación está activa.
En su lugar aparece entonces un botón Restablecer estado de entrega. Al hacer clic en él se elimina la anulación y se permite que el estado se vuelva a calcular a partir de las cantidades realmente entregadas, y también se registra un mensaje en el chatter.
- 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.
Importante
La anulación nunca afecta a las existencias: ninguno de los dos botones crea, cancela ni valida traslados, movimientos ni entregas parciales. Solo cambia lo que informa el campo Estado de entrega. Un pedido Cancelado siempre tiene prioridad sobre la anulación: si todas las entregas del pedido están canceladas, el estado muestra Cancelado aunque Entrega completa forzada esté activado.
Estado de entrega en las vistas de lista y de búsqueda¶
- 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.
La columna Estado de entrega está habilitada de forma predeterminada (insignia de color: verde para Completamente entregado, naranja para Entregado parcialmente, azul para No entregado/Iniciado, rojo para Cancelado) tanto en la lista de como en la lista de Presupuestos. % de entrega y Fecha de la última entrega se añaden a ambas listas como columnas opcionales (ocultas de forma predeterminada), que se pueden activar desde el selector de columnas.
- 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.
El panel de búsqueda de pedidos incorpora un filtro por cada estado de entrega (No entregado, Entrega iniciada, Entregado parcialmente, Completamente entregado y Entrega cancelada), además de un filtro de fecha Fecha de la última entrega y una opción Agrupar por: Estado de entrega.
Tablero del estado de entrega¶
- 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 menú de informes específico, , ofrece una vista de todos los pedidos limitada a los pedidos confirmados (state = 'sale'). Su vista de lista combina la referencia del pedido, el cliente, la fecha del pedido, la Fecha de compromiso, la fecha Prevista (expected_date), la Primera entrega (el campo estándar effective_date), la Última entrega (last_delivery_date), la insignia Estado de entrega, la barra de progreso % de entrega, el total del pedido y el vendedor.
- 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.
La misma acción también ofrece las vistas Tabla dinámica y Gráfico: la tabla dinámica desglosa el % de entrega y el total del pedido por estado de entrega (columnas) y mes del pedido (filas); el gráfico muestra el valor total de los pedidos por estado de entrega en forma de gráfico de barras.
Fecha real de recepción del cliente¶
Además del pedido de venta, este módulo también añade un campo Fecha real de recepción del cliente (delivered_date) en la propia entrega (stock.picking). Es un campo técnico, de solo lectura, que este módulo no expone en ninguna vista; existe para registrar el momento en el que el consumidor recibió realmente los bienes (según lo indicado por el seguimiento del transportista), que puede ser notablemente posterior a date_done (cuando el almacén validó el traslado y lo entregó al transportista).
El campo se completa mediante el gancho idempotente _set_delivered(), que:
solo se aplica a traslados salientes cuya ubicación de destino sea una ubicación de cliente;
ignora de forma silenciosa una marca de tiempo vacía o falsa; y
nunca sobrescribe un valor ya existente: la primera recepción confirmada es la que prevalece, y las llamadas posteriores con una marca de tiempo distinta no tienen ningún efecto.
Nota
eyssen_sale_delivery_status solo define el campo y este gancho; son las integraciones de seguimiento con el transportista (por ejemplo, los métodos de entrega GLS, Foxpost y MPL) las que llaman a _set_delivered() en cuanto detectan un evento de seguimiento de entrega real, y otros módulos de eYssen (como la lógica del plazo de devolución de las RMA) los que leen la fecha resultante. Consulte la documentación propia de esos módulos para obtener más información.
Coherencia de la fecha de cumplimiento en las facturas húngaras¶
- 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.
La contabilidad principal de Odoo mantiene un campo Fecha de entrega (delivery_date) en cada factura. Cuando la aplicación Inventario está instalada, sale_stock sincroniza automáticamente ese campo con la Fecha efectiva del pedido de venta vinculado (la fecha de finalización de su primera entrega) cada vez que se recalcula la factura. Por separado, eyssen_l10n_hu aplica un requisito de la NAV húngara al contabilizar: en una empresa húngara, la Fecha contable de una factura y su Fecha de entrega deben ser idénticas, o Contabilizar se rechaza con el mensaje «¡La fecha contable no coincide con la fecha de cumplimiento!». Para cumplir con esto, las facturas rectificativas y las notas de crédito se configuran para heredar ambas fechas directamente de la factura original que corrigen o revierten.
El problema que resuelve este módulo es de orden de ejecución: dado que el propio recálculo de Fecha de entrega de sale_stock siempre intenta volver a fijar el campo a partir de la fecha efectiva del pedido de venta, esa lógica puede ejecutarse después de la lógica de eyssen_l10n_hu que «hereda de la factura original», según la combinación exacta de aplicaciones instaladas, lo que aleja de forma silenciosa la fecha de entrega de una factura rectificativa de la fecha de la factura original una vez más, y rompe la coincidencia entre la fecha contable y la fecha de entrega al Contabilizar.
eyssen_l10n_hu_sale_stock_delivery_date es un módulo pequeño, únicamente de dependencia (no añade vistas, menús ni campos nuevos), que depende a la vez de sale_stock y de eyssen_l10n_hu. Depender de ambos garantiza que su anulación de account.move._compute_delivery_date() se ejecute después de la de sale_stock, de modo que la lógica de facturas rectificativas siempre tenga la última palabra:
los asientos que ya están Contabilizados se dejan sin modificar (recalcular
delivery_dateen un asiento contabilizado y ya sellado con hash nunca debe ocurrir);en cualquier otro asiento, si tiene una Factura corregida o es una reversión (
reversed_entry_id), tanto Fecha de entrega como Fecha se fuerzan a la fecha de entrega de la factura original, deshaciendo cualquier resincronización impulsada por las existencias; ycomo red de seguridad general, si Fecha de entrega y Fecha siguen sin coincidir después de esto, Fecha se alinea con Fecha de entrega (o viceversa si Fecha de entrega está vacía).
Importante
Esta lógica está duplicada de forma intencionada, línea por línea, entre eyssen_l10n_hu y eyssen_l10n_hu_sale_stock_delivery_date; los propios comentarios del código del módulo lo indican de forma explícita. Si este comportamiento se cambia alguna vez, ambos módulos deben actualizarse a la vez, o una empresa húngara con sale_stock y eyssen_l10n_hu instalados pero sin este módulo puede terminar exactamente con la desincronización que este módulo se escribió para evitar.
Configuración¶
Ambos módulos son aplicaciones normales de Odoo, que se instalan desde ; ninguno tiene un interruptor en Ajustes.
Sale Delivery Status (
eyssen_sale_delivery_status) depende desale_management,stockysale_stock. Con instalarlo basta para obtener los campos adicionales, las incorporaciones a las vistas de lista y de búsqueda, y el menú de informes; no hay nada más que configurar.eYssen Sale Stock Delivery Date (
eyssen_l10n_hu_sale_stock_delivery_date) depende desale_stocky deeyssen_l10n_hu, y no se instala de forma automática ni es requerido por ningún otro módulo de eYssen. Instálelo de forma explícita en cualquier empresa húngara (coneyssen_l10n_huinstalado) que también utilice la facturación de ventas basada en existencias (sale_stock); de lo contrario, las facturas rectificativas de esa base de datos seguirán expuestas a la desincronización de la fecha de cumplimiento descrita anteriormente.
Truco
Los botones Completamente entregado y Restablecer estado de entrega, así como los campos de entrega en el formulario del pedido, no requieren ningún grupo de seguridad más allá del acceso habitual a los pedidos de venta; no existe un permiso específico para esta función.
Uso¶
Confirme un pedido de venta con una ruta de entrega como de costumbre. A medida que se validan los traslados, el campo estándar Estado de entrega, junto con el % de entrega y la Fecha de la última entrega de este módulo, se actualizan de forma automática en la pestaña Otra información del pedido.
Si todas las entregas del pedido terminan canceladas, el estado cambia a Cancelado en lugar de permanecer en No entregado.
Para bienes a granel o líquidos que nunca llegarán exactamente al 100 %, haga clic en Completamente entregado en la cabecera en cuanto el envío esté efectivamente completo; haga clic más tarde en Restablecer estado de entrega si es necesario deshacer la anulación.
Utilice las opciones Filtros y Agrupar por: Estado de entrega en , o el tablero específico de , para revisar el progreso de las entregas en todos los pedidos.
En empresas húngaras con ambos módulos instalados, corregir o revertir una factura mantiene automáticamente su Fecha de entrega y su Fecha alineadas con las de la factura original; no es necesario introducir ninguna fecha manualmente en la propia factura rectificativa.
Estado de entrega en el portal del cliente¶
Los indicadores de entrega descritos anteriormente se encuentran en el formulario del pedido de venta, en las listas y en el tablero de informes: son pantallas de administración que un cliente de la tienda web nunca ve. El pequeño módulo complementario sale_delivery_status_ws publica esos mismos indicadores en el portal del cliente del sitio web, de modo que los clientes que han iniciado sesión pueden seguir el progreso de sus propias entregas sin necesidad de contactar con soporte. Es un módulo puramente de visualización: no añade ajustes, menús ni campos nuevos; instalarlo desde es el único interruptor de activación o desactivación, y requiere eyssen_sale_delivery_status (cuyos campos muestra), sale_stock y la aplicación Sitio web. No se instala de forma automática; actívelo de forma explícita en cualquier base de datos cuyos clientes de la tienda web deban ver el progreso de la entrega.
Lista de pedidos¶
Cuando un cliente inicia sesión en el sitio web y abre , la lista de pedidos incorpora dos columnas adicionales después de Total:
Estado de entrega: una insignia de color en forma de píldora por pedido. El portal utiliza de forma deliberada un texto más corto y cercano al cliente que las etiquetas de estado de entrega del back office:
Estado de entrega en el back office
Insignia del portal
Color de la insignia
Completamente entregado
Entregado
Verde
Entregado parcialmente
Parcial
Amarillo
Iniciado
Iniciado
Azul
No entregado
Pendiente
Gris
Cancelado
Cancelado
Rojo
% de entrega: el porcentaje de entrega del pedido, redondeado hacia abajo a un número entero (actualmente se muestra con el signo de porcentaje duplicado, por ejemplo, 42%%, debido a un fallo en la plantilla; consulte la nota en la página de detalle del pedido). Solo se muestra para pedidos que tienen algún estado de entrega.
Nota
Ambas columnas se ocultan en pantallas estrechas (del ancho de un teléfono), de la misma forma en que las listas estándar del portal (por ejemplo, la lista de facturas) ya recortan columnas secundarias para seguir siendo legibles.
Página de detalle del pedido¶
Al abrir un pedido desde esa lista, la tabla Información de venta de la página del pedido en el portal incorpora hasta tres filas adicionales:
Estado de entrega: la misma insignia de color que en la lista de pedidos;
Entregado: una barra de progreso verde con el porcentaje de entrega del pedido;
Última entrega: la fecha (sin la hora) de la entrega completada más reciente.
Nota
En la versión actual del módulo, el porcentaje se muestra con el signo de porcentaje duplicado (por ejemplo, 42%%), tanto en la columna % de entrega de la lista de pedidos como en la etiqueta y el ancho de esta barra. Como 42%% no es un ancho de CSS válido, la barra no se rellena visualmente hasta alcanzar el porcentaje de entrega hasta que se corrija este fallo de la plantilla.
Cada fila solo aparece una vez que su valor subyacente está establecido: un presupuesto, o un pedido confirmado sin ninguna orden de entrega todavía, no muestra ninguna de ellas, y la fila de la barra de progreso permanece oculta mientras el porcentaje entregado siga siendo cero.
Como los valores provienen directamente de los campos mantenidos por eyssen_sale_delivery_status, el portal siempre coincide con el back office, dejando aparte la redacción del portal. Un pedido forzado manualmente con Completamente entregado muestra al cliente la insignia verde Entregado, y un pedido cuyas entregas estén todas canceladas muestra la insignia roja Cancelado.
Alcance y módulos¶
eyssen_sale_delivery_status: añade a los pedidos de venta el % de entrega, la Fecha de la última entrega y el estado de entrega Cancelado, la anulación manual Completamente entregado, los filtros de búsqueda y las columnas de lista del estado de entrega, el tablero de , y el campo Fecha real de recepción del cliente en las entregas.eyssen_l10n_hu_sale_stock_delivery_date: mantiene la Fecha de entrega (fecha de cumplimiento) de una factura rectificativa o de reversión húngara alineada con su factura original, con independencia de la fecha efectiva del pedido de venta impulsada por las existencias, de modo que la norma de la NAV sobre la fecha contable y la fecha de entrega, aplicada poreyssen_l10n_hu, se siga cumpliendo al Contabilizar.sale_delivery_status_ws: muestra el estado de entrega (con un texto cercano al cliente) y el porcentaje de entrega a los clientes que han iniciado sesión, tanto en la lista Sus pedidos del portal del sitio web como en la propia página del pedido en el portal, y además la fecha de la última entrega únicamente en la propia página del pedido en el portal.