herramientaenvioestupendo
v1.1.31
Published
Proyecto para envio documentos masivos
Readme
EstupendoCLI
Esta herramienta esta destinada para uso de los Ing. implementadores y de soporte de la empresa Estupendo-Colombia.
Requerimientos:
- node 20.9.0 Descargar aqui
- npm 9.6.7
Instalacion
Abrir CMD (Windows) o terminal (Unix):
npm i -g herramientaenvioestupendoActualizar:
npm update herramientaenvioestupendo -gValidar version instalada:
estupendo --versionVer comandos disponibles:
estupendo --helpComandos disponibles
| Comando | Descripcion |
|---|---|
| send_txt | Envio masivo de archivos TXT |
| send_xml | Envio masivo de archivos XML |
| send_txt_CYP | Envio masivo TXT para empresas CYP |
| send_txt_Flexo | Envio masivo TXT para empresas Flexo |
| send_attached | Envio masivo attachedPdf |
| send_json | Envio masivo JSON nomina |
| send_nomina_xml | Envio masivo XML nomina |
| request_document_race | Descarga XML y PDF de documentos recepcionados |
| send_db2_sp | Extrae documentos desde DB2/AS400 via SP y envia a la API |
Ejemplos basicos
estupendo send_txt -d "C:\ruta\archivos"
estupendo send_xml -d "C:\ruta\archivos"
estupendo send_attached -d "C:\ruta\archivos" -pConector DB2 / AS400 por procedimientos almacenados
El comando send_db2_sp se conecta a una base de datos DB2 o IBM iSeries AS/400, ejecuta el SP de documentos pendientes, convierte las filas a JSON agrupadas por NumeroDocumento + TipoDocumento y las envia al endpoint HTTP con estructura { "documents": [] }.
El SP de pendientes debe devolver filas con la columna TipoRegistro segun el manual de emision por SP (Cabecera, Emisor, Cliente, Lineas, Impuestos, etc.).
Dependencias
DB2 directo (modo por defecto):
npm installAS/400 via ODBC:
- Instalar IBM i Access Client Solutions (incluye el driver ODBC)
- Instalar el paquete ODBC:
npm install odbcVariables de entorno soportadas
| Variable | Descripcion | Default |
|---|---|---|
| DB2_CONNECTION_STRING | Cadena de conexion completa | — |
| DB2_DRIVER | Driver: ibm_db u odbc | ibm_db |
| DB2_HOST | Host DB2 o SYSTEM del AS/400 | — |
| DB2_PORT | Puerto DB2 | 50000 |
| DB2_DATABASE | Nombre de la base de datos (ibm_db) | — |
| ODBC_DSN | Nombre del DSN ODBC configurado en Windows | — |
| DB2_LIBRARY | Libreria/schema del AS/400 (odbc) | *LIBL |
| DB2_USER | Usuario | — |
| DB2_PASSWORD | Password | — |
| DB2_LIMIT | Cantidad de documentos por ejecucion | 50 |
| DB2_SP_LIST_PENDING | SP de pendientes | Facture_Documents_Issue_ListPending |
| DB2_SP_UPDATE_STATUS | SP de actualizacion de estado | Facture_Documents_Issue_UpdateStatus |
| ESTUPENDO_DB2_API_URL | Endpoint que recibira el JSON | /api/load/array/data |
Parametros de linea de comandos
-n, --nit <char> NIT del emisor (requerido)
-l, --limit <number> Cantidad maxima de documentos (default: 50)
--connection-string <char> Cadena de conexion completa
--driver <char> Driver: ibm_db (default) u odbc
--host <char> Host DB2 o SYSTEM del AS/400
--port <char> Puerto DB2 (default: 50000)
--database <char> Base de datos DB2 (ibm_db)
--dsn <char> DSN ODBC configurado en Windows
--library <char> Libreria AS/400 (default: *LIBL)
--user <char> Usuario
--password <char> Password
--sp-list-pending <char> SP para listar documentos pendientes
--sp-list-extra-param <char> Tercer parametro del SP de pendientes
--sp-list-no-nit Pasa primer parametro como '' en vez del NIT
--sp-update-status <char> SP para actualizar estado
--api-url <char> Endpoint que recibe el JSON
--skip-update-status No ejecutar SP de actualizacion
--dry-run Solo extrae y guarda JSON local, no envia
-p, --prod Usar endpoint de produccionModo DB2 directo
# Solo extraer y guardar JSON local
estupendo send_db2_sp -n 900000000 --host 127.0.0.1 --database FACTURE \
--user db2user --password db2pass --dry-run
# Enviar a endpoint especifico
estupendo send_db2_sp -n 900000000 \
--connection-string "DATABASE=FACTURE;HOSTNAME=127.0.0.1;PORT=50000;PROTOCOL=TCPIP;UID=db2user;PWD=db2pass;" \
--api-url https://pruebas.estupendo.com.co/api/documentosModo AS/400 iSeries via ODBC
Opcion 1 — Con DSN configurado en el Administrador ODBC de Windows
estupendo send_db2_sp -n 900000000 --driver odbc --dsn NombreDSN \
--user usuario --password clave --dry-runOpcion 2 — Conexion directa al AS/400 (sin DSN)
estupendo send_db2_sp -n 900000000 --driver odbc --host 192.168.1.100 \
--library BIBLIOT --user usuario --password clave --dry-runOpcion 3 — Cadena de conexion ODBC completa
estupendo send_db2_sp -n 900000000 \
--connection-string "DRIVER={IBM i Access ODBC Driver};SYSTEM=192.168.1.100;UID=usuario;PWD=clave;DBQ=BIBLIOT;" \
--driver odbc --dry-runSP para IBM iSeries AS/400 con resultado unico (LISTPENDING_V2)
El driver ODBC odbc v2.5.0 (binario precompilado para Windows) no expone el metodo moreResults(), por lo que solo puede leer el primer result set de un SP con DYNAMIC RESULT SETS N.
Para solucionar esto se incluye el archivo LISTPENDING_V2.sql en la raiz del proyecto. Este archivo contiene el SP FLXAPLDAT.FACTURE_DOCUMENTS_ISSUE_LISTPENDING_V2 que:
- Usa
DYNAMIC RESULT SETS 1(un solo cursor de retorno) - Internamente crea una tabla de sesion
SESSION.ALLROWS_V2con todas las columnas comoVARCHAR - Inserta con
EXECUTE IMMEDIATElos datos de los 15 cursores reales del SP original - Retorna todas las filas en un unico
SELECT * FROM SESSION.ALLROWS_V2
Como instalar el SP en el AS/400:
Abrir ACS (IBM i Access Client Solutions) → Run SQL Scripts y ejecutar el contenido de LISTPENDING_V2.sql.
Como usarlo con el conector:
estupendo send_db2_sp \
-n 800184269 \
--driver odbc \
--dsn NombreDSN \
--user usuario \
--password clave \
--sp-list-pending FLXAPLDAT.FACTURE_DOCUMENTS_ISSUE_LISTPENDING_V2 \
--sp-list-extra-param "" \
--dry-runNo se requiere ninguna modificacion al conector Node.js: el resultado unico del V2 es leido directamente por el primer execute() del statement ODBC.
SP con schema personalizado
estupendo send_db2_sp -n 900000000 \
--sp-list-pending SCHEMA.Facture_Documents_Issue_ListPending \
--sp-update-status SCHEMA.Facture_Documents_Issue_UpdateStatus \
--dry-runArchivos de salida
| Ruta | Contenido |
|---|---|
| db2_payloads/db2_raw_documents_*.json | JSON agrupado tal como sale del SP |
| db2_payloads/db2_api_payload_*.json | JSON final enviado a la API |
| logs/Output_db2_sp_*.json | Log de la ejecucion con errores y respuestas |
