Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Devolución a Proveedores
Aplicación web (Angular + NestJS) para SAP Business One que genera Devoluciones de mercancías (ORPD) enlazadas a sus Entradas de mercancías por compra (OPDN), a partir de un listado de artículos y cantidades pegado desde Excel. Reemplaza al addon .NET anterior.
Cómo funciona
- Pegar: ItemCode + cantidad desde Excel. Se valida contra la Consignación del almacén elegido.
- Procesar: asignación FIFO contra las líneas abiertas de Entradas de mercancías del almacén, ordenadas por fecha. El usuario marca qué líneas devolver.
- Crear devoluciones: agrupa las líneas marcadas por proveedor y crea una Devolución por lote (11 líneas por defecto).
- Descargar PDF: pide al web service de BES el PDF de la Guía de despacho (DTE 52) de cada Devolución, con opción de unirlos en uno.
Cada ejecución (planificación) se guarda en el UDO LIB_ODEV. Solo puede haber una planificación
abierta a la vez; se cierra a mano.
Requisitos
- Node.js 22 LTS o superior.
- SAP Business One con Service Layer (
/b1s/v1), base HANA (producción) o MSSQL (pruebas). - El usuario de SAP inicia sesión en la web; sus credenciales no se guardan en la configuración.
Estructura
libs/shared/ @dp/shared tipos y lógica de dominio (parseo de Excel, FIFO)
apps/api/ NestJS API REST (/api) sobre el Service Layer; en producción sirve también la web
apps/web/ Angular interfaz
scripts/ publicar.mjs arma la carpeta de despliegue en release/
deploy/windows/ instalación como servicio de Windows (NSSM)
Puesta en marcha (desarrollo)
npm install
cp apps/api/.env.example apps/api/.env # completar SL_URL, SL_COMPANY_DB y DB_TYPE
npm run dev:api # API NestJS (puerto PORT del .env)
npm run dev:web # Angular en http://localhost:4215 (proxy /api → API)
Variables principales del .env: PORT, SL_URL, SL_COMPANY_DB, SL_REJECT_UNAUTHORIZED,
DB_TYPE (HANA/MSSQL) y COOKIE_SECURE. Para producción con HTTPS: HTTPS_PFX_PATH y
HTTPS_PFX_PASSPHRASE (o HTTPS_KEY_PATH/HTTPS_CERT_PATH) y HTTP_REDIRECT_PORT.
Ver apps/api/.env.example.
En el primer ingreso, Configuración → Metadatos → Reconstruir crea las tablas, los campos y el UDO necesarios en SAP.
Pruebas y compilación
npm test # shared + api + web
npm run test:e2e -w api
npm run lint -w api
npm run build
Generar un release
La versión es el version del package.json raíz y sigue SemVer (MAYOR.MENOR.PARCHE). Cada
release sube la versión y lleva un tag vX.Y.Z en git.
-
Subir la versión (elegir uno; no crea commit ni tag):
npm run version:parche # 2.0.1 → 2.0.2 correcciones npm run version:menor # 2.0.1 → 2.1.0 funciones nuevas compatibles npm run version:mayor # 2.0.1 → 3.0.0 cambios incompatibles -
Commit y tag:
git add -A git commit -m "Versión X.Y.Z" git tag -a vX.Y.Z -m "Versión X.Y.Z" git push origin main --tags -
Armar la carpeta de despliegue (después del commit, para que el release lleve el commit correcto):
npm run publicar # compila shared + api + web y arma la carpeta npm run publicar -- --sin-build # reutiliza los builds ya hechos (más rápido)El resultado queda en
release/devolucion-proveedores/(ignorada por git): la API compilada, la web compilada, solo las dependencias de producción y los scripts de instalación. Incluyeapp/version.jsoncon el número, la fecha y el commit (si hay cambios sin commit, el commit aparece con-modificado). La versión se muestra en el login y en la barra superior. -
Instalar o actualizar en el servidor: copiar esa carpeta al servidor Windows. Se instala como un único servicio (NSSM) con HTTPS directo en Node. Instalación nueva: secciones 1 a 8 de
deploy/windows/DEPLOY.md; actualizar una instalación existente sin tocar el.env: sección 11.