NC: guardar en ITCA_LOG_INTEGRACION el JSON enviado al Service Layer cuando SAP rechaza. Versión 2.1.5.0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ded1638cd0
commit
1ce0da7735
4 files changed
+66
-3
No files matched your search
@@ -42,6 +42,14 @@ transferencias siempre, sin depender de `Notificacion`. Detalle y tabla en
|
||||
línea de la factura (`LineNum`). Si los lotes no cubren la cantidad, o no se
|
||||
lee la Entrega, responde un error con línea y artículo. PICKING (estado 13)
|
||||
no cambió (lote nuevo por fecha y hora). Detalle en `docs/PICKING.md`.
|
||||
- **v2.1.5.0 — log del JSON de la NC cuando SAP la rechaza**:
|
||||
`CreditNotesRepository.SetCreateCreditNotes` guarda en
|
||||
`ITC_WMS_SAP.ITCA_LOG_INTEGRACION` (vía `Net.Data/HelperData/Log/HelperLogServiceLayer`)
|
||||
el JSON enviado al Service Layer y la respuesta de SAP, con `ORIGEN =
|
||||
"ServiceLayer"` y `PROCESO = "NotaCredito Error"`; `NRO_ORDEN`/`DOCENTRY` =
|
||||
`BaseEntry` de la primera línea. Solo en error (no en éxito); si el log
|
||||
falla, no rompe el flujo. No cubre transferencias, solicitud de devolución
|
||||
ni reapertura.
|
||||
- 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.
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<AssemblyName>ITCA_API_SAP_WMS</AssemblyName>
|
||||
<Version>2.1.4</Version>
|
||||
<AssemblyVersion>2.1.4.0</AssemblyVersion>
|
||||
<FileVersion>2.1.4.0</FileVersion>
|
||||
<Version>2.1.5</Version>
|
||||
<AssemblyVersion>2.1.5.0</AssemblyVersion>
|
||||
<FileVersion>2.1.5.0</FileVersion>
|
||||
<UserSecretsId>24763424-3300-4c85-87e3-503f8fdebd14</UserSecretsId>
|
||||
<!-- 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
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
using Newtonsoft.Json;
|
||||
using Sap.Data.Hana;
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Data.HelperData.Log
|
||||
{
|
||||
// Guarda en ITCA_LOG_INTEGRACION el JSON enviado al Service Layer cuando SAP rechaza el documento.
|
||||
// Misma tabla que Net.Business.Services.Log.B_Log (esa clase no se puede usar desde Net.Data).
|
||||
public class HelperLogServiceLayer
|
||||
{
|
||||
public static void AddError(string proceso, string docEntryOrigen, object jsonEnviado, string respuesta)
|
||||
{
|
||||
try
|
||||
{
|
||||
var trama = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(jsonEnviado));
|
||||
var tramaRespuesta = Encoding.UTF8.GetBytes(respuesta ?? "");
|
||||
|
||||
using (var hana = new HanaConnection(LocalData.ConnectionString))
|
||||
{
|
||||
hana.Open();
|
||||
HanaCommand hanaCommand = hana.CreateCommand();
|
||||
hanaCommand.CommandText = "INSERT INTO \"ITC_WMS_SAP\".\"ITCA_LOG_INTEGRACION\" (\"CODIGO\", \"ORIGEN\", \"TRAMA_ORIGEN\", \"TRAMA_RESPUESTA\", \"PROCESO\", \"FECHA\", \"NRO_ORDEN\", \"DOCENTRY\", \"DOCNUMSAP\", \"DOCENTRYSAP\", \"HORA\") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
hanaCommand.Parameters.Add("CODIGO", HanaDbType.VarChar).Value = Guid.NewGuid().ToString();
|
||||
hanaCommand.Parameters.Add("ORIGEN", HanaDbType.VarChar).Value = "ServiceLayer";
|
||||
hanaCommand.Parameters.Add("TRAMA_ORIGEN", HanaDbType.Blob).Value = trama;
|
||||
hanaCommand.Parameters.Add("TRAMA_RESPUESTA", HanaDbType.Blob).Value = tramaRespuesta;
|
||||
hanaCommand.Parameters.Add("PROCESO", HanaDbType.VarChar).Value = proceso;
|
||||
hanaCommand.Parameters.Add("FECHA", HanaDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
hanaCommand.Parameters.Add("NRO_ORDEN", HanaDbType.VarChar).Value = docEntryOrigen ?? "";
|
||||
hanaCommand.Parameters.Add("DOCENTRY", HanaDbType.VarChar).Value = docEntryOrigen ?? "";
|
||||
hanaCommand.Parameters.Add("DOCNUMSAP", HanaDbType.VarChar).Value = "0";
|
||||
hanaCommand.Parameters.Add("DOCENTRYSAP", HanaDbType.VarChar).Value = "0";
|
||||
hanaCommand.Parameters.Add("HORA", HanaDbType.VarChar).Value = DateTime.Now.ToString("HH:mm:ss");
|
||||
hanaCommand.CommandType = System.Data.CommandType.Text;
|
||||
hanaCommand.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// el log nunca debe romper el flujo principal
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ using Net.Business.Entities.ServicesLayer.CreditNotes;
|
||||
using Net.Connection;
|
||||
using Net.Connection.ServiceLayer;
|
||||
using Net.CrossCotting;
|
||||
using Net.Data.HelperData.Log;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.Http;
|
||||
@@ -50,6 +51,8 @@ namespace Net.Data.ServicesLayer.CreditNotes
|
||||
|
||||
if (!data.Exito)
|
||||
{
|
||||
// Solo si SAP rechaza: guarda el JSON enviado al Service Layer para poder revisarlo
|
||||
HelperLogServiceLayer.AddError("NotaCredito Error", DocEntryOrigen(entidad), entidad, data.Mensaje);
|
||||
return resultadoTransaccion.GetInformacionResultado(-1, -1, data.Mensaje);
|
||||
}
|
||||
|
||||
@@ -57,10 +60,17 @@ namespace Net.Data.ServicesLayer.CreditNotes
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
HelperLogServiceLayer.AddError("NotaCredito Error", DocEntryOrigen(entidad), entidad, ex.Message);
|
||||
return resultadoTransaccion.GetInformacionResultado(-1, -1, ex.Message.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
// DocEntry del documento base (factura o solicitud de devolucion) de la primera linea
|
||||
private static string DocEntryOrigen(BE_CreditNotesNotes entidad)
|
||||
{
|
||||
return entidad?.DocumentLines?.Count > 0 ? entidad.DocumentLines[0].BaseEntry?.ToString() : null;
|
||||
}
|
||||
|
||||
|
||||
public async Task<BE_ResultadoTransaccion<BE_BaseResponseSap>> UpdateCreateCreditNotes(dynamic entidad, int DocEntry)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user