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,
|
// 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(
|
||||||
|
|||||||
Reference in new issue
Block a user