Compare commits

2 Commits
8 changed files with 41 additions and 10 deletions

No files matched your search

+12 -1
View File
@@ -10,7 +10,7 @@ comprimido (versión antigua)**.
## Versión y control de versiones ## Versión y control de versiones
- **Versión actual: 2.1.9.0** (rama `limpieza-2.1.8.0`; `main` = 2.1.7.0) (`Net.Business.Services.csproj`: `Version`, - **Versión actual: 2.1.11.0** (rama `limpieza-2.1.8.0`; `main` = 2.1.7.0) (`Net.Business.Services.csproj`: `Version`,
`AssemblyVersion`, `FileVersion`). Cada versión tiene su commit; al publicar `AssemblyVersion`, `FileVersion`). Cada versión tiene su commit; al publicar
se sube la versión (ver `publicar.ps1`). se sube la versión (ver `publicar.ps1`).
- **Git**: rama `main`, remoto `origin` = - **Git**: rama `main`, remoto `origin` =
@@ -124,6 +124,17 @@ transferencias siempre, sin depender de `Notificacion`. Detalle y tabla en
la línea de `StockTransfers`. Detalle, errores y diagnóstico en la línea de `StockTransfers`. Detalle, errores y diagnóstico en
`docs/TRANSFERENCIA_IMPORTACION.md`. Probado con datos reales (SQL Server) solo la consulta: entradas `docs/TRANSFERENCIA_IMPORTACION.md`. Probado con datos reales (SQL Server) solo la consulta: entradas
de 1 y 2 líneas, y una transferencia cancelada libera la entrada. de 1 y 2 líneas, y una transferencia cancelada libera la entrada.
- **v2.1.10.0 — solo versión** (sin cambios de comportamiento): `Version`, `AssemblyVersion` y
`FileVersion` del `csproj` quedan iguales (2.1.10.0). Swagger muestra `AssemblyVersion`
(`Startup.cs`: `OpenApiInfo.Version`); si Swagger muestra otro número el servidor corre
binarios viejos (pool sin reiniciar, carpeta equivocada o sitio desde `bin\Debug`).
- **v2.1.11.0 — tabla de log configurable y lotes de la NC de Recibo**: (1) la tabla de log sale de
`Hana:logTable` en `appsettings.json` (`LocalData.LogTable`; por defecto `ITCA_LOG_INTEGRACION` para
QA/Desarrollo, producción usa `ITCA_LOG_INTEGRACION_PROD`); el esquema sigue fijo en `ITC_WMS_SAP`.
Aplica a `B_Log` y `HelperLogServiceLayer`. (2) Recibo/Devolución: si el reparto de lotes (stock HANA o
factura) no cubre la cantidad de la línea, el resto va a un lote nuevo por fecha/hora (antes SAP
respondía "No es posible añadir una línea sin la selección completa de los números de serie/lote");
una línea sin equivalente en la factura ya no revienta con referencia nula. Sin probar contra SAP.
- 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.
+1 -1
View File
@@ -7,7 +7,7 @@ namespace Net.Business.Services.Log
{ {
public static string Add(string Origen, byte[] Trama_Origen, byte[] Trama_Respuesta, string Proceso, string Nro_Orden, string DocEntry, string DocNumSAP, string DocEntrySAP) public static string Add(string Origen, byte[] Trama_Origen, byte[] Trama_Respuesta, string Proceso, string Nro_Orden, string DocEntry, string DocNumSAP, string DocEntrySAP)
{ {
string DB = "ITCA_LOG_INTEGRACION"; string DB = Net.Data.LocalData.LogTable;
string Code = System.Guid.NewGuid().ToString(); string Code = System.Guid.NewGuid().ToString();
string Fecha = DateTime.Now.ToString("yyyy-MM-dd"); string Fecha = DateTime.Now.ToString("yyyy-MM-dd");
HanaConnection hana = new HanaConnection(Net.Data.LocalData.ConnectionString); HanaConnection hana = new HanaConnection(Net.Data.LocalData.ConnectionString);
@@ -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.9</Version> <Version>2.1.11.0</Version>
<AssemblyVersion>2.1.9.0</AssemblyVersion> <AssemblyVersion>2.1.11.0</AssemblyVersion>
<FileVersion>2.1.9.0</FileVersion> <FileVersion>2.1.11.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
@@ -40,7 +40,8 @@
"Hana": { "Hana": {
"server": "", "server": "",
"user": "", "user": "",
"password": "" "password": "",
"logTable": "ITCA_LOG_INTEGRACION"
}, },
"EmailSenderOptions": { "EmailSenderOptions": {
"Port": "", "Port": "",
@@ -27,7 +27,7 @@ namespace Net.Data.HelperData.Log
{ {
hana.Open(); hana.Open();
HanaCommand hanaCommand = hana.CreateCommand(); 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.CommandText = $"INSERT INTO \"ITC_WMS_SAP\".\"{LocalData.LogTable}\" (\"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("CODIGO", HanaDbType.VarChar).Value = Guid.NewGuid().ToString();
hanaCommand.Parameters.Add("ORIGEN", HanaDbType.VarChar).Value = "ServiceLayer"; hanaCommand.Parameters.Add("ORIGEN", HanaDbType.VarChar).Value = "ServiceLayer";
hanaCommand.Parameters.Add("TRAMA_ORIGEN", HanaDbType.Blob).Value = trama; hanaCommand.Parameters.Add("TRAMA_ORIGEN", HanaDbType.Blob).Value = trama;
+7
View File
@@ -10,6 +10,10 @@ namespace Net.Data
// Esquema HANA: por defecto la compañia del Service Layer (SapServiceLayer:company) // Esquema HANA: por defecto la compañia del Service Layer (SapServiceLayer:company)
public static string Schema { get; private set; } public static string Schema { get; private set; }
// Tabla de log de integracion (esquema fijo ITC_WMS_SAP). QA/Desarrollo: ITCA_LOG_INTEGRACION;
// produccion: ITCA_LOG_INTEGRACION_PROD (Hana:logTable en appsettings.json)
public static string LogTable { get; private set; } = "ITCA_LOG_INTEGRACION";
// Unico punto de lectura de las credenciales HANA (seccion "Hana" de appsettings.json) // Unico punto de lectura de las credenciales HANA (seccion "Hana" de appsettings.json)
public static void Configure(IConfiguration configuration) public static void Configure(IConfiguration configuration)
{ {
@@ -32,6 +36,9 @@ namespace Net.Data
} }
Schema = schema; Schema = schema;
var logTable = configuration["Hana:logTable"];
if (!string.IsNullOrWhiteSpace(logTable)) LogTable = logTable.Trim();
} }
} }
} }
+11 -1
View File
@@ -486,6 +486,11 @@ namespace Net.Data.WMS.Recibo
} }
} }
}); });
// Stock de HANA menor a la cantidad: el resto va a un lote nuevo para que los lotes sumen la cantidad de la linea
if (CantidadPendiente > 0)
{
line.BatchNumbers.Add(new BE_CreditNotesBatchNumbers() { BatchNumber = DateTime.Now.ToString("yyyyMMddhhmmss"), Quantity = (double)CantidadPendiente });
}
} }
else else
{ {
@@ -501,7 +506,7 @@ namespace Net.Data.WMS.Recibo
{ {
line.BatchNumbers.Clear(); line.BatchNumbers.Clear();
var ReferenciaFactura = returnRequest.DocumentLines.FirstOrDefault(t => t.LineNum == line.LineNum); var ReferenciaFactura = returnRequest.DocumentLines.FirstOrDefault(t => t.LineNum == line.LineNum);
var ListaStock = _Invoice.DocumentLines.FirstOrDefault(InvoiceLine => InvoiceLine.LineNum == ReferenciaFactura.BaseLine).BatchNumbers; var ListaStock = _Invoice.DocumentLines.FirstOrDefault(InvoiceLine => InvoiceLine.LineNum == ReferenciaFactura.BaseLine)?.BatchNumbers ?? new List<BE_InvoicesBatchNumbers>();
if (ListaStock.Count > 0) if (ListaStock.Count > 0)
{ {
var CantidadPendiente = line.Quantity; var CantidadPendiente = line.Quantity;
@@ -522,6 +527,11 @@ namespace Net.Data.WMS.Recibo
} }
} }
}); });
// Lotes de la factura menores a la cantidad: el resto va a un lote nuevo para que los lotes sumen la cantidad de la linea
if (CantidadPendiente > 0)
{
line.BatchNumbers.Add(new BE_CreditNotesBatchNumbers() { BatchNumber = DateTime.Now.ToString("yyyyMMddhhmmss"), Quantity = (double)CantidadPendiente });
}
} }
else else
{ {
+4 -2
View File
@@ -76,7 +76,7 @@ dotnet publish Net.Business.Services/Net.Business.Services.csproj -c Release -r
## Versión y script de publish ## Versión y script de publish
- La versión sale de `<Version>`/`<AssemblyVersion>`/`<FileVersion>` en - La versión sale de `<Version>`/`<AssemblyVersion>`/`<FileVersion>` en
`Net.Business.Services/Net.Business.Services.csproj` (actual: **2.1.9.0** en la rama de limpieza; `main` = 2.1.7.0); `Net.Business.Services/Net.Business.Services.csproj` (actual: **2.1.10.0** en la rama de limpieza; `main` = 2.1.7.0);
súbela en cada publish. súbela en cada publish.
- `publicar.ps1` (solo Windows) genera `dist\ITCA_API_SAP_WMS_v<versión>.zip` sin - `publicar.ps1` (solo Windows) genera `dist\ITCA_API_SAP_WMS_v<versión>.zip` sin
`appsettings.json`. Desde macOS se hace el mismo `dotnet publish` a mano con `appsettings.json`. Desde macOS se hace el mismo `dotnet publish` a mano con
@@ -120,7 +120,9 @@ git switch -c recuperar-2.1.7.0 v2.1.7.0 # trabajar desde ahí en una rama nue
`PROCESO = 'ServiceLayer Error'`, `NRO_ORDEN` = ruta del recurso y `DOCENTRY` `PROCESO = 'ServiceLayer Error'`, `NRO_ORDEN` = ruta del recurso y `DOCENTRY`
= `BaseEntry` del documento base. Solo en error; no cambia la respuesta de la = `BaseEntry` del documento base. Solo en error; no cambia la respuesta de la
API. API.
- Ambos usan el esquema fijo `ITC_WMS_SAP` (columnas `PROCESO`, `NRO_ORDEN` y - Ambos usan el esquema fijo `ITC_WMS_SAP` y la tabla de `Hana:logTable`
(por defecto `ITCA_LOG_INTEGRACION` para QA/Desarrollo; en **producción**
poner `ITCA_LOG_INTEGRACION_PROD`) (columnas `PROCESO`, `NRO_ORDEN` y
`DOCENTRY` son `VARCHAR(100)`). `DOCENTRY` son `VARCHAR(100)`).
- Consulta de ejemplo: - Consulta de ejemplo:
`SELECT * FROM "ITC_WMS_SAP"."ITCA_LOG_INTEGRACION" WHERE "PROCESO" = 'ServiceLayer Error' ORDER BY "FECHA" DESC, "HORA" DESC` `SELECT * FROM "ITC_WMS_SAP"."ITCA_LOG_INTEGRACION" WHERE "PROCESO" = 'ServiceLayer Error' ORDER BY "FECHA" DESC, "HORA" DESC`