SolicitudTransferencia PATCH: enviar Rate 0.0 fijo sin GET previo

Se elimina la lectura previa del documento y la validación de existencia
de línea; cada línea se manda con Rate = 0.0 (request validado en SAP).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-12 08:51:50 -05:00
1 parent 1d4d7769e3
commit 1d0b8d0cbe
1 file changed
+5 -14
@@ -44,10 +44,10 @@ namespace Net.Data.WMS.SolicitudTransferencia
// parcial. SAP ademas RECHAZA una linea mandada explicita con Quantity: 0, // parcial. SAP ademas RECHAZA una linea mandada explicita con Quantity: 0,
// por eso se omite del array en vez de mandarla en cero. // por eso se omite del array en vez de mandarla en cero.
// //
// Al ser un reemplazo completo, SAP TAMBIEN exige el Rate real de cada // Al ser un reemplazo completo, SAP TAMBIEN exige el campo Rate en cada
// linea (hallazgo de QA, no cubierto en la primera tanda de pruebas) - por // linea. Se manda Rate: 0.0 fijo (request validado contra SAP); esto pisa
// eso se hace un GET previo para leerlo y reenviarlo, en vez de mandar // el Rate que tuviera la linea en el documento. No se valida que la linea
// Rate: 0 fijo (pisaria la valorizacion real de la linea). // exista: si no existe, el error lo devuelve SAP.
public async Task<BE_ResultadoTransaccion<object>> Update(int docEntry, BE_SolicitudTransferenciaPatchRequest entidad) public async Task<BE_ResultadoTransaccion<object>> Update(int docEntry, BE_SolicitudTransferenciaPatchRequest entidad)
{ {
ResultadoTransaccion<object> resultadoTransaccion = new ResultadoTransaccion<object>("Update", _aplicacionName); ResultadoTransaccion<object> resultadoTransaccion = new ResultadoTransaccion<object>("Update", _aplicacionName);
@@ -56,21 +56,12 @@ namespace Net.Data.WMS.SolicitudTransferencia
{ {
var connectServiceLayer = new ConnectionServiceLayer(_configuration, _clientFactory); var connectServiceLayer = new ConnectionServiceLayer(_configuration, _clientFactory);
var doc = (await connectServiceLayer.GetAsync<BE_InventoryTransferRequest>($"InventoryTransferRequests({docEntry})", 0, true)).FirstOrDefault();
var ratesByLine = (doc?.StockTransferLines ?? new List<BE_InventoryTransferRequestLine>())
.ToDictionary(l => l.LineNum, l => l.Rate);
var lines = new List<object>(); var lines = new List<object>();
foreach (var detalle in entidad.Detalle ?? new List<BE_SolicitudTransferenciaPatchDetalle>()) foreach (var detalle in entidad.Detalle ?? new List<BE_SolicitudTransferenciaPatchDetalle>())
{ {
if (detalle.Cantidad == 0) continue; if (detalle.Cantidad == 0) continue;
if (!ratesByLine.TryGetValue(detalle.Linea, out var rate)) lines.Add(new { LineNum = detalle.Linea, Quantity = detalle.Cantidad, Rate = 0.0 });
{
return resultadoTransaccion.GetInformacionResultado($"La linea {detalle.Linea} no existe en la Solicitud de Traslado {docEntry}", (object)entidad);
}
lines.Add(new { LineNum = detalle.Linea, Quantity = detalle.Cantidad, Rate = rate });
} }
await connectServiceLayer.PatchNoContentAsync( await connectServiceLayer.PatchNoContentAsync(