Cantidades: PICKING filtra lineas sin diferencia; transferencias juntan lotes de todas las lineas del articulo. Versión 2.1.6.0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e5ea57b673
commit
4ad0754ba0
5 files changed
+33
-13
No files matched your search
@@ -53,6 +53,13 @@ transferencias siempre, sin depender de `Notificacion`. Detalle y tabla en
|
|||||||
consumidor no cambia y si el log falla no rompe el flujo. No cubre
|
consumidor no cambia y si el log falla no rompe el flujo. No cubre
|
||||||
`PostActionAsync` (cuerpo `{}`) ni `PostReOpen`/`PostClose`. Los tamaños de las
|
`PostActionAsync` (cuerpo `{}`) ni `PostReOpen`/`PostClose`. Los tamaños de las
|
||||||
columnas del log no se verificaron.
|
columnas del log no se verificaron.
|
||||||
|
- **v2.1.6.0 — cantidades**: (1) la NC de PICKING (estado 13) solo incluye líneas
|
||||||
|
con `cantidad facturada − CantidadPedida > 0`, igual que DESPACHO (antes una
|
||||||
|
línea completa generaba una línea de NC con cantidad 0); (2) la transferencia
|
||||||
|
automática de stock (Picking y Recibo) junta los lotes de **todas** las líneas
|
||||||
|
del mismo artículo para el par origen/destino (antes solo tomaba los de la
|
||||||
|
primera línea y la suma no cuadraba con la cantidad). El almacén de la línea de
|
||||||
|
la NC sigue saliendo de la factura, no del `codigoSubAlmacen` del request.
|
||||||
- Sin probar contra SAP: confirmar con la factura 292410 que SAP devuelve
|
- 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.
|
`BaseType`/`BaseEntry` en las líneas y `BatchNumbers` en las de la Entrega.
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
<AssemblyName>ITCA_API_SAP_WMS</AssemblyName>
|
<AssemblyName>ITCA_API_SAP_WMS</AssemblyName>
|
||||||
<Version>2.1.5</Version>
|
<Version>2.1.6</Version>
|
||||||
<AssemblyVersion>2.1.5.0</AssemblyVersion>
|
<AssemblyVersion>2.1.6.0</AssemblyVersion>
|
||||||
<FileVersion>2.1.5.0</FileVersion>
|
<FileVersion>2.1.6.0</FileVersion>
|
||||||
<UserSecretsId>24763424-3300-4c85-87e3-503f8fdebd14</UserSecretsId>
|
<UserSecretsId>24763424-3300-4c85-87e3-503f8fdebd14</UserSecretsId>
|
||||||
<!-- Antes solo estaba condicionado a Debug|AnyCPU - un "dotnet publish -c Release"
|
<!-- Antes solo estaba condicionado a Debug|AnyCPU - un "dotnet publish -c Release"
|
||||||
(lo normal para IIS) se quedaba sin este archivo, y Startup.cs revienta con
|
(lo normal para IIS) se quedaba sin este archivo, y Startup.cs revienta con
|
||||||
|
|||||||
@@ -318,12 +318,13 @@ namespace Net.Data.WMS.Picking
|
|||||||
ListaUnicaArticulo.ForEach(x =>
|
ListaUnicaArticulo.ForEach(x =>
|
||||||
{
|
{
|
||||||
var ListLote = new List<BE_StockTransferLineBatchNumber>();
|
var ListLote = new List<BE_StockTransferLineBatchNumber>();
|
||||||
ListaDetalle_PorAlmacen.Where(t => t.ItemCode == x).FirstOrDefault().BatchNumbers.ForEach(r =>
|
// Lotes de todas las lineas del articulo (si el mismo lote esta en varias lineas se suma)
|
||||||
|
ListaDetalle_PorAlmacen.Where(t => t.ItemCode == x).SelectMany(t => t.BatchNumbers).GroupBy(r => r.BatchNumber).ToList().ForEach(g =>
|
||||||
{
|
{
|
||||||
ListLote.Add(new BE_StockTransferLineBatchNumber()
|
ListLote.Add(new BE_StockTransferLineBatchNumber()
|
||||||
{
|
{
|
||||||
BatchNumber = r.BatchNumber,
|
BatchNumber = g.Key,
|
||||||
Quantity = r.Quantity
|
Quantity = g.Sum(r => r.Quantity)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Transfer.StockTransferLines.Add(new BE_StockTransferLine()
|
Transfer.StockTransferLines.Add(new BE_StockTransferLine()
|
||||||
@@ -549,7 +550,8 @@ namespace Net.Data.WMS.Picking
|
|||||||
entidad.Detalle.ForEach(x =>
|
entidad.Detalle.ForEach(x =>
|
||||||
{
|
{
|
||||||
var Item = _invoices.DocumentLines.ToList().FirstOrDefault(t => t.LineNum == x.Item);
|
var Item = _invoices.DocumentLines.ToList().FirstOrDefault(t => t.LineNum == x.Item);
|
||||||
if (Item != null)
|
// Solo lineas con diferencia a devolver (igual que DESPACHO): una linea completa daria cantidad 0
|
||||||
|
if (Item != null && Item.Quantity - x.CantidadPedida > 0)
|
||||||
{
|
{
|
||||||
creditNotesNotes.DocumentLines.Add(new BE_CreditNotesLine()
|
creditNotesNotes.DocumentLines.Add(new BE_CreditNotesLine()
|
||||||
{
|
{
|
||||||
@@ -613,12 +615,13 @@ namespace Net.Data.WMS.Picking
|
|||||||
ListaUnicaArticulo.ForEach(x =>
|
ListaUnicaArticulo.ForEach(x =>
|
||||||
{
|
{
|
||||||
var ListLote = new List<BE_StockTransferLineBatchNumber>();
|
var ListLote = new List<BE_StockTransferLineBatchNumber>();
|
||||||
ListaDetalle_PorAlmacen.Where(t => t.ItemCode == x).FirstOrDefault().BatchNumbers.ForEach(r =>
|
// Lotes de todas las lineas del articulo (si el mismo lote esta en varias lineas se suma)
|
||||||
|
ListaDetalle_PorAlmacen.Where(t => t.ItemCode == x).SelectMany(t => t.BatchNumbers).GroupBy(r => r.BatchNumber).ToList().ForEach(g =>
|
||||||
{
|
{
|
||||||
ListLote.Add(new BE_StockTransferLineBatchNumber()
|
ListLote.Add(new BE_StockTransferLineBatchNumber()
|
||||||
{
|
{
|
||||||
BatchNumber = r.BatchNumber,
|
BatchNumber = g.Key,
|
||||||
Quantity = r.Quantity
|
Quantity = g.Sum(r => r.Quantity)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Transfer.StockTransferLines.Add(new BE_StockTransferLine()
|
Transfer.StockTransferLines.Add(new BE_StockTransferLine()
|
||||||
|
|||||||
@@ -556,12 +556,13 @@ namespace Net.Data.WMS.Recibo
|
|||||||
ListaUnicaArticulo.ForEach(x =>
|
ListaUnicaArticulo.ForEach(x =>
|
||||||
{
|
{
|
||||||
var ListLote = new List<BE_StockTransferLineBatchNumber>();
|
var ListLote = new List<BE_StockTransferLineBatchNumber>();
|
||||||
ListaDetalle_PorAlmacen.Where(t => t.ItemCode == x).FirstOrDefault().BatchNumbers.ForEach(r =>
|
// Lotes de todas las lineas del articulo (si el mismo lote esta en varias lineas se suma)
|
||||||
|
ListaDetalle_PorAlmacen.Where(t => t.ItemCode == x).SelectMany(t => t.BatchNumbers).GroupBy(r => r.BatchNumber).ToList().ForEach(g =>
|
||||||
{
|
{
|
||||||
ListLote.Add(new BE_StockTransferLineBatchNumber()
|
ListLote.Add(new BE_StockTransferLineBatchNumber()
|
||||||
{
|
{
|
||||||
BatchNumber = r.BatchNumber,
|
BatchNumber = g.Key,
|
||||||
Quantity = r.Quantity
|
Quantity = g.Sum(r => r.Quantity)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Transfer.StockTransferLines.Add(new BE_StockTransferLine()
|
Transfer.StockTransferLines.Add(new BE_StockTransferLine()
|
||||||
|
|||||||
@@ -53,6 +53,15 @@ enviar lotes incompletos a SAP. Si no hay lotes de origen (artículo sin
|
|||||||
control por lote) la línea se envía sin lotes. PICKING (estado 13) no cambia:
|
control por lote) la línea se envía sin lotes. PICKING (estado 13) no cambia:
|
||||||
genera un lote nuevo por fecha y hora.
|
genera un lote nuevo por fecha y hora.
|
||||||
|
|
||||||
|
## Cantidades de la NC y de las transferencias (versión 2.1.6.0)
|
||||||
|
|
||||||
|
- **Cantidad de la línea de NC** (DESPACHO y PICKING estado 13): `cantidad
|
||||||
|
facturada − CantidadPedida`; solo entran las líneas con resultado mayor a 0.
|
||||||
|
- **Transferencia automática** (cuando `U_ITC_ALMDES` difiere del almacén de la
|
||||||
|
línea): una línea por artículo, con la cantidad sumada de las líneas de la NC
|
||||||
|
de ese par origen/destino y los lotes de todas esas líneas (el mismo lote en
|
||||||
|
varias líneas se suma).
|
||||||
|
|
||||||
## Resumen del contrato
|
## Resumen del contrato
|
||||||
|
|
||||||
| Método | Ruta | Cambia hoy | Qué hace |
|
| Método | Ruta | Cambia hoy | Qué hace |
|
||||||
|
|||||||
Reference in new issue
Block a user