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:
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,
|
||||
// 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
|
||||
// linea (hallazgo de QA, no cubierto en la primera tanda de pruebas) - por
|
||||
// eso se hace un GET previo para leerlo y reenviarlo, en vez de mandar
|
||||
// Rate: 0 fijo (pisaria la valorizacion real de la linea).
|
||||
// Al ser un reemplazo completo, SAP TAMBIEN exige el campo Rate en cada
|
||||
// linea. Se manda Rate: 0.0 fijo (request validado contra SAP); esto pisa
|
||||
// el Rate que tuviera la linea en el documento. No se valida que la linea
|
||||
// exista: si no existe, el error lo devuelve SAP.
|
||||
public async Task<BE_ResultadoTransaccion<object>> Update(int docEntry, BE_SolicitudTransferenciaPatchRequest entidad)
|
||||
{
|
||||
ResultadoTransaccion<object> resultadoTransaccion = new ResultadoTransaccion<object>("Update", _aplicacionName);
|
||||
@@ -56,21 +56,12 @@ namespace Net.Data.WMS.SolicitudTransferencia
|
||||
{
|
||||
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>();
|
||||
foreach (var detalle in entidad.Detalle ?? new List<BE_SolicitudTransferenciaPatchDetalle>())
|
||||
{
|
||||
if (detalle.Cantidad == 0) continue;
|
||||
|
||||
if (!ratesByLine.TryGetValue(detalle.Linea, out var rate))
|
||||
{
|
||||
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 });
|
||||
lines.Add(new { LineNum = detalle.Linea, Quantity = detalle.Cantidad, Rate = 0.0 });
|
||||
}
|
||||
|
||||
await connectServiceLayer.PatchNoContentAsync(
|
||||
|
||||
Reference in new issue
Block a user