Aplicación web de Devolución a Proveedores para SAP Business One
Reemplaza al addon .NET Framework (SolucionLibros). Genera Devoluciones de mercancías enlazadas a sus Entradas por compra a partir de un listado pegado desde Excel. - libs/shared (@dp/shared): modelos y lógica de dominio pura (FIFO, consolidación por proveedor, parseo del portapapeles), portada del addon. - apps/api (NestJS): cliente del Service Layer con cola por sesión, login con la sesión de SAP, metadatos (UDT/UDF/UDO) y botón Reconstruir, catálogos, planificaciones (pegar, procesar, reprocesar, marcar líneas, crear Devoluciones, cerrar), listado paginado con filtros y descarga de PDF de la Guía de despacho desde BES. Sirve también la web compilada, con HTTPS opcional. - apps/web (Angular): login, Configuración → Metadatos y Planificaciones (listado, nueva, detalle). - deploy/windows y scripts/publicar.mjs: despliegue como servicio de Windows con WinSW. Verificado contra el Service Layer de SQL Server. Sin probar aún: SAP HANA y la instalación del servicio en Windows (ver CLAUDE.md, sección "Sin verificar"). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
287b187c14
126 files changed
+20033
No files matched your search
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Consultas guardadas (SQLQueries del Service Layer) que usa la API. Cada una tiene su
|
||||
* variante MSSQL (pruebas) y HANA (producción). Los parámetros se escriben ":nombre".
|
||||
*
|
||||
* El analizador SQL del Service Layer no admite funciones como FORMAT: las fechas se devuelven
|
||||
* tal cual y se normalizan en el código.
|
||||
*
|
||||
* SAP reescribe el SqlText al guardarlo (por ejemplo OITM → [OITM]), así que no se puede
|
||||
* comparar el texto para saber si cambió: al modificar el SQL hay que subir `version`.
|
||||
*/
|
||||
export interface ConsultaGuardada {
|
||||
codigo: string;
|
||||
version: number;
|
||||
mssql: string;
|
||||
hana: string;
|
||||
}
|
||||
|
||||
export const CONSULTA_STOCK: ConsultaGuardada = {
|
||||
codigo: 'DP_Stock',
|
||||
version: 1,
|
||||
mssql:
|
||||
'SELECT T0.[ItemCode], T0.[ItemName], T1.[OnHand] ' +
|
||||
'FROM OITM T0 INNER JOIN OITW T1 ON T1.[ItemCode] = T0.[ItemCode] ' +
|
||||
'WHERE T1.[WhsCode] = :whs AND T0.[ItemCode] = :item',
|
||||
hana:
|
||||
'SELECT T0."ItemCode", T0."ItemName", T1."OnHand" ' +
|
||||
'FROM OITM T0 INNER JOIN OITW T1 ON T1."ItemCode" = T0."ItemCode" ' +
|
||||
'WHERE T1."WhsCode" = :whs AND T0."ItemCode" = :item',
|
||||
};
|
||||
|
||||
export const CONSULTA_ENTRADAS_ABIERTAS: ConsultaGuardada = {
|
||||
codigo: 'DP_EntradasAbiertas',
|
||||
version: 2,
|
||||
mssql:
|
||||
'SELECT T0.[DocNum], T0.[CardCode], T0.[CardName], T0.[DocDate], ' +
|
||||
'T1.[DocEntry], T1.[LineNum], T1.[OpenQty] ' +
|
||||
'FROM OPDN T0 INNER JOIN PDN1 T1 ON T1.[DocEntry] = T0.[DocEntry] ' +
|
||||
"WHERE T0.[U_DOT_TipoRecepcion] = 'C' AND T1.[LineStatus] = 'O' " +
|
||||
'AND T1.[ItemCode] = :item AND T1.[WhsCode] = :whs ' +
|
||||
'ORDER BY T0.[DocDate], T1.[DocEntry], T1.[LineNum]',
|
||||
hana:
|
||||
'SELECT T0."DocNum", T0."CardCode", T0."CardName", T0."DocDate", ' +
|
||||
'T1."DocEntry", T1."LineNum", T1."OpenQty" ' +
|
||||
'FROM OPDN T0 INNER JOIN PDN1 T1 ON T1."DocEntry" = T0."DocEntry" ' +
|
||||
"WHERE T0.\"U_DOT_TipoRecepcion\" = 'C' AND T1.\"LineStatus\" = 'O' " +
|
||||
'AND T1."ItemCode" = :item AND T1."WhsCode" = :whs ' +
|
||||
'ORDER BY T0."DocDate", T1."DocEntry", T1."LineNum"',
|
||||
};
|
||||
Reference in new issue
Block a user