From baaf85554a4fc9d53f1a6c9db869bdba5126e44d Mon Sep 17 00:00:00 2001 From: George Date: Fri, 16 Oct 2026 00:22:11 -0500 Subject: [PATCH] Transferencia desde ALM99: elegir la entrada de la factura de reserva por articulos/cantidades y que no tenga transferencia. Version 2.1.9.0 Co-Authored-By: Claude Sonnet 5.5 --- CLAUDE.md | 18 +++- .../BE_EntradaImportacionLinea.cs | 14 +++ .../Net.Business.Services.csproj | 4 +- Net.Data/HelperData/Invoices/HelperInvoice.cs | 46 +++++++++- .../WMS/Transferencia/EntradaImportacion.cs | 53 +++++++++++ .../Transferencia/TransferenciaRepository.cs | 87 ++++++++++++++----- README.md | 2 +- 7 files changed, 198 insertions(+), 26 deletions(-) create mode 100644 Net.Business.Entities/WMS/Transferencia/BE_EntradaImportacionLinea.cs create mode 100644 Net.Data/WMS/Transferencia/EntradaImportacion.cs diff --git a/CLAUDE.md b/CLAUDE.md index d07033a..954c9aa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,7 +10,7 @@ comprimido (versión antigua)**. ## Versión y control de versiones -- **Versión actual: 2.1.8.0** (rama `limpieza-2.1.8.0`; `main` = 2.1.7.0) (`Net.Business.Services.csproj`: `Version`, +- **Versión actual: 2.1.9.0** (rama `limpieza-2.1.8.0`; `main` = 2.1.7.0) (`Net.Business.Services.csproj`: `Version`, `AssemblyVersion`, `FileVersion`). Cada versión tiene su commit; al publicar se sube la versión (ver `publicar.ps1`). - **Git**: rama `main`, remoto `origin` = @@ -106,6 +106,22 @@ transferencias siempre, sin depender de `Notificacion`. Detalle y tabla en mantiene su bug del 204 (sin marcar éxito; el único llamador ignora el resultado). La transferencia automática de stock de la NC (3 copias en Picking x2 y Recibo) pasó a un solo método: `Net.Data/ServicesLayer/StockTransfer/TransferenciaAutomaticaNC.Crear`. +- **v2.1.9.0 — Transferencia desde ALM99 (importaciones)**: WMS recibe por partes; cada + entrada de mercadería (base: factura de reserva, `BaseType 18`) va a `ALM99` y, tras el + costeo, WMS notifica **una transferencia por entrada** enviando en `NumOrden` el `DocNum` + de la factura de reserva y en el detalle los artículos/cantidades de esa entrada. Si el + JSON no trae `DocEntryEM`, `TransferenciaRepository` busca por HANA + (`HelperInvoice.GetEntradasPorFactura`: `OPCH.isIns='Y'` → `PDN1` → `OPDN`, sin anuladas; + una entrada ya tiene transferencia si la línea tiene `TargetType 67` y su `OWTR` no está + anulada), compara **solo `ItemCode` y cantidad** (sumada por artículo) contra cada entrada y + transfiere la más antigua que coincida y no esté transferida (`EntradaImportacion.Elegir`). + Las líneas de la transferencia salen de la entrada (lotes reales, validando que cubran la + cantidad) con base en ella. Errores claros: ninguna coincide / todas ya transferidas. Si la + factura no tiene entradas se mantiene el comportamiento anterior (lotes del stock de HANA, + sin amarre). Con `DocEntryEM` informado se respeta (antes reventaba con referencia nula si + la entrada o la línea no existían). Sin probar contra SAP: validar la consulta, que + `isIns='Y'` sea factura de reserva y que SAP acepte `BaseType "PurchaseDeliveryNotes"` en + la línea de `StockTransfers`. - Sin probar contra SAP: confirmar con la factura 292410 que SAP devuelve `BaseType`/`BaseEntry` en las líneas y `BatchNumbers` en las de la Entrega. diff --git a/Net.Business.Entities/WMS/Transferencia/BE_EntradaImportacionLinea.cs b/Net.Business.Entities/WMS/Transferencia/BE_EntradaImportacionLinea.cs new file mode 100644 index 0000000..d8e732f --- /dev/null +++ b/Net.Business.Entities/WMS/Transferencia/BE_EntradaImportacionLinea.cs @@ -0,0 +1,14 @@ +namespace Net.Business.Entities.WMS.Transferencia +{ + // Una linea de una Entrada de Mercaderia enlazada a una Factura de Reserva de proveedores (importacion). + // TransferenciaDocEntry > 0 cuando la linea ya tiene una transferencia de stock vigente (TargetType 67, no anulada). + public class BE_EntradaImportacionLinea + { + public int DocEntry { get; set; } + public int DocNum { get; set; } + public int LineNum { get; set; } + public string ItemCode { get; set; } + public decimal Quantity { get; set; } + public int TransferenciaDocEntry { get; set; } + } +} diff --git a/Net.Business.Services/Net.Business.Services.csproj b/Net.Business.Services/Net.Business.Services.csproj index 5fa5f8d..8cc6fa8 100644 --- a/Net.Business.Services/Net.Business.Services.csproj +++ b/Net.Business.Services/Net.Business.Services.csproj @@ -4,8 +4,8 @@ netcoreapp3.1 ITCA_API_SAP_WMS 2.1.8 - 2.1.8.0 - 2.1.8.0 + 2.1.9.0 + 2.1.9.0 24763424-3300-4c85-87e3-503f8fdebd14