101 lines
4.1 KiB
Markdown
101 lines
4.1 KiB
Markdown
# 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
|
|
|
|
1. **Pegar**: ItemCode + cantidad desde Excel. Se valida contra la **Consignación** del almacén elegido.
|
|
2. **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.
|
|
3. **Crear devoluciones**: agrupa las líneas marcadas por proveedor y crea una Devolución por lote
|
|
(11 líneas por defecto).
|
|
4. **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)
|
|
|
|
```sh
|
|
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
|
|
|
|
```sh
|
|
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.
|
|
|
|
1. **Subir la versión** (elegir uno; no crea commit ni tag):
|
|
|
|
```sh
|
|
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
|
|
```
|
|
|
|
2. **Commit y tag**:
|
|
|
|
```sh
|
|
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
|
|
```
|
|
|
|
3. **Armar la carpeta de despliegue** (después del commit, para que el release lleve el commit
|
|
correcto):
|
|
|
|
```sh
|
|
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. Incluye
|
|
`app/version.json` con 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.
|
|
|
|
4. **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`](deploy/windows/DEPLOY.md); actualizar una instalación existente
|
|
sin tocar el `.env`: sección 11.
|