Compare commits
4
Commits
691aa454ca
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e343a18da1 | ||
|
|
29dcc8ccef | ||
|
|
7efdcce113 | ||
|
|
b6c553fed3 |
No files matched your search
@@ -92,6 +92,11 @@ Pasos de la UI (decididos):
|
||||
`npm run publicar`, que deja `app/version.json` (número, fecha y commit). La API lo lee al arrancar
|
||||
(`src/version.ts`), lo informa en `/auth/info` y `/auth/me`, y la web lo muestra en el login y en la barra
|
||||
superior (en desarrollo dice "desarrollo").
|
||||
- **Repositorio**: Gitea, remoto `origin` = `https://unasgeorge.vaquita-hadar.ts.net/george/devolucion_proveedores.git`
|
||||
(rama `main`; reemplaza al anterior `http://100.68.242.27:30000/...`). Cada release lleva un **tag SemVer
|
||||
anotado `vX.Y.Z`** igual al `version` del `package.json` (`git tag -a vX.Y.Z` + `git push origin main --tags`),
|
||||
hecho **antes** de `npm run publicar` para que `version.json` lleve el commit correcto. El primero es
|
||||
`v2.0.1`. El procedimiento para el usuario está en `README.md` ("Generar un release").
|
||||
- **Logs**: la aplicación **no escribe logs a archivo**; usa el `Logger` de Nest por consola. En
|
||||
producción NSSM captura la salida y la rota a los 10 MB (no limita cuántos archivos conserva: hay que
|
||||
limpiar los viejos). Con `NO_COLOR=1` el log sale sin códigos de
|
||||
@@ -246,6 +251,8 @@ Reglas:
|
||||
## Estado al 2026-10-13
|
||||
|
||||
**Hecho y verificado contra el Service Layer real (SBOLibros, MSSQL):**
|
||||
- **Validación contra Consignación** (2026-10-19, 2.0.1): `DP_Stock` v3 (`SUM` + `GROUP BY`) y `DP_Articulo` funcionan
|
||||
contra el Service Layer real (confirmado por el usuario; la variante probada fue HANA, la de la v2 rechazada).
|
||||
- Login, Metadatos y **Reconstruir** (creación de tablas, campos y UDO desde cero).
|
||||
- `libs/shared`: modelos y dominio portado del .NET. 14 tests.
|
||||
- `apps/api`: Service Layer, autenticación, metadatos, catálogos, planificaciones y PDF. 81 tests
|
||||
@@ -279,8 +286,6 @@ Reglas:
|
||||
devuelve siempre un JSON (`{abierta: null}`).
|
||||
|
||||
**Sin verificar:**
|
||||
- **`DP_Stock` v3 y `DP_Articulo`** (2026-10-19): suma de Consignación con `SUM` + `GROUP BY` (la v2 con `COALESCE` fue rechazada por SAP); solo con tests; no se ha ejecutado contra el
|
||||
Service Layer (ni HANA ni MSSQL). Probar con un pegado real y comparar con la suma de `OpenInvQty`.
|
||||
- **HANA**: el usuario confirmó (2026-10-13) que las consultas `DP_Stock` y `DP_EntradasAbiertas`
|
||||
(con `PDN1.OpenInvQty`, filtro por almacén y parámetros con nombre) **funcionan en HANA** a través del
|
||||
Service Layer. Falta confirmar en HANA el paginado (`$inlinecount`/`odata.count` es de `/b1s/v1`; en
|
||||
@@ -301,11 +306,6 @@ Reglas:
|
||||
la cookie de sesión en un navegador real sobre HTTPS.
|
||||
- **`OpenInvQty`** (2026-10-13): la consulta `DP_EntradasAbiertas` v3 todavía no se ha ejecutado contra el
|
||||
Service Layer de HANA. Se prueba con *Rehacer FIFO* de la planificación 7 de `SBOTSTLIBROS`.
|
||||
- **Versión del release** (2026-10-15): release **1.1.0** generado en el servidor Windows de pruebas (Excel,
|
||||
valores por defecto de la cabecera, versión visible). Lleva "(sin git)": **git no está instalado en ese
|
||||
servidor**, aunque la carpeta es un repositorio con commits y remoto `origin`
|
||||
(`http://100.68.242.27:30000/george/devolucion_proveedores.git`). Los cambios del 2026-10-15 **no están en
|
||||
ningún commit**: hacerlo (y `push`) cuando haya git, antes de seguir trabajando desde el Mac.
|
||||
- **Estilos:** son CSS porque, en el Mac con macOS 12, el compilador nativo de Sass exige
|
||||
macOS 14 o superior. En Sequoia se puede volver a SCSS si se prefiere.
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user