Commit Graph
20 Commits
Author SHA1 Message Date
GeorgeandClaude Sonnet 5.5 53f203e832 se agregan las plantillas de aceptado/rechazado y su renderizador
plantilla/ con los dos HTML de correo y ejemplos.json (6 escenarios ficticios);
plantillas.py renderiza el subconjunto de Mustache que usan (variables con
escape de HTML, secciones e invertidas), en modo estricto: un dato que falta
da error en vez de un correo con huecos. tools/previsualizar_plantillas.py
genera las vistas previas y envía correos de prueba (--enviar). En la
plantilla de rechazo el RUC, la fila Comprobante y la tabla de guías son
opcionales, para el rechazo de un correo sin comprobante.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 08:55:54 -05:00
GeorgeandClaude Sonnet 5.5 96dca78162 se integra en draft_sap.py el cambio ee64e5f: DueDate de cuotas = fecha_vencimiento
El commit ee64e5f del remoto cambió el DueDate de las cuotas en pipeline.py,
que ya se había dividido en módulos; al hacer el rebase se tomó la versión
dividida y aquí se reaplica el mismo cambio en draft_sap.build_sap_draft
(también se quita la línea comentada de ItemDescription). Se actualizan las
pruebas y la nota de construir_draft.md.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:04:11 -05:00
GeorgeandClaude Sonnet 5.5 297cfde0e1 fase 1: registro de comprobantes con código de seguimiento
Nueva tabla comprobantes (creada en init_db) y módulo seguimiento.py: cada
comprobante recibe un código ABR-AAMMDD-NNNNN que conserva si reaparece en
otro correo, más su resultado (aceptado/rechazado/error) y el estado de la
notificación. El pipeline lo registra por factura sin bloquear el flujo si el
seguimiento falla. Las pruebas usan una BD temporal para no tocar emails.db.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 9d295d6485 se reorganiza tests/ y se agrega suite pytest
Los scripts manuales pasan a tools/ y los correos de ejemplo a
tests/fixtures/. Suite de 95 pruebas: caracterización de la extracción sobre
los 46 correos (resultados esperados en tests/golden/, fuera de la carpeta
que descargar_correos_prueba borra), unitarias de draft_sap, notificaciones,
documentos, adjuntos y config_validator, y flujo completo de
_procesar_un_correo con SAP/HANA/Outlook simulados. pytest como dependencia
dev y configuración en pyproject.toml.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 d4c1e0a264 se agrega README y se completa y corrige la documentación
README en la raíz con instalación, uso, estructura e índice de docs. Nuevos
docs/hana_manager.md y docs/outlook_utilities.md. Se renombran los .mkd a .md
y se corrigen construir_draft y validar_precios, que describían lógica ya
inexistente (CUADRO_VALOR_REFERENCIAL, use_sap_prices). Se actualizan los
docstrings obsoletos y las cifras de líneas del inventario.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 767558cbfe se valida la configuración (.env) al arrancar
config_validator.verificar_configuracion termina con código 1 si faltan
variables obligatorias (pipeline, Graph, SAP B1, HANA), si hay ruta de red
sin RUC_EMPRESA, y advierte por SSL desactivado, ruta de red ausente o
LOG_LEVEL inválido. Se invoca desde main.py y tools/consulta_rapida.py.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 3fa26e3ef6 se migran los print de los módulos a logging con nivel explícito
pipeline_utils.log pasa a usar logging (parámetro severity) y los print de
pipeline, sapb1_manager, hana_manager, outlook_utilities, email_utilities y
main pasan a logger.info/warning/error, de modo que LOG_LEVEL filtre por
severidad. El texto del log no cambia. Se mantienen los print de CLI en
sunat_schema (__main__), tools/ y tests/.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 5ef9c90fc0 se mueve consulta_rapida.py a tools/ y se corrige ruta de ids_prueba.json
El script apuntaba a test/ids_prueba.json, carpeta que ya no existe tras el
renombre a tools/. Ahora resuelve rutas desde su ubicación y agrega la raíz
del proyecto al sys.path. Se quita de py-modules y se actualiza inventario.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 71b01a2130 se alinean pyproject.toml y requirements.txt y se eliminan imports sin usar
Dependencias directas con versiones fijas (incluye hdbcli, se quita el alias
dotenv y las transitivas), build-backend corregido a setuptools.build_meta y
py-modules declarados para el layout plano.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
GeorgeandClaude Sonnet 5.5 7d2f3212c0 se divide pipeline.py en módulos (adjuntos, documentos, persistencia, draft_sap, notificaciones)
Las funciones anidadas de _procesar_un_correo pasan a funciones de módulo
con parámetros explícitos; pipeline.py queda solo como orquestador.
copiar_a_red lee las variables de entorno al ejecutarse. Se actualizan docs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 22:03:38 -05:00
georgeandClaude Sonnet 5 ee64e5f773 se usa fecha_vencimiento en DueDate de las cuotas del draft
Las cuotas (DocumentInstallments) ahora usan la misma fecha_vencimiento
calculada para DocDueDate, en vez de fecha_emision del XML.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
v1.1.0
2026-09-19 09:32:11 -05:00
georgeandClaude Sonnet 5 c532170ac2 se agrega fallback OWTR y calculo de fecha de vencimiento por condicion de pago
- hana_manager.get_delivery ahora busca en ODLN y, si no encuentra, en OWTR
- sapb1_manager resuelve StockTransfers -> Orders (via U_IDC_NUMOV) para
  validar precios de flete cuando la guia es un traslado de inventario
- se corrige el orden de parametros tipo/serie/numero (sin cruces) en
  get_delivery, get_delivery_notes y _get_delivery_entries
- se agrega sapb1_manager.obtener_condicion_pago (BusinessPartners +
  PaymentTermsTypes) y pipeline._calcular_fecha_vencimiento para que
  DocDueDate del draft sea fecha de contabilizacion + dias de la condicion
  de pago del proveedor
- se agrega variante de regex para "VALOR REFER" truncado en sunat_schema.py
- se actualiza documentacion (docs/) reflejando estos cambios

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 13:21:04 -05:00
GeorgeandClaude Sonnet 5 d023f14ad9 se renombra carpeta test a tools
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-02 07:41:39 -05:00
GeorgeandClaude Sonnet 5 911bd2da34 se agrega integración con SAP HANA, manejo de errores en el demonio y actualización de documentación
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-02 07:40:26 -05:00
George 3c2bb2b714 se agrega manejo de ejecución por horarios 2026-07-13 14:20:57 -05:00
George 0f17284020 se agregó comentarios en el proceso de pipeline.py 2026-07-13 12:24:59 -05:00
George 603243b7e0 ahora se procesa de inicio a fin correo por correo 2026-07-09 09:48:30 -05:00
George 8cdd075d15 se agrego el modulo sunat_schema.py que lee el archivo xml y extrae la información 2026-06-03 18:32:18 -05:00
George a29a44e361 se termina la descarga de los adjuntos y solo se deja los mails con adjuntos pdf y xml 2026-06-01 18:05:44 -05:00
george c08554e775 primer commit 2026-06-01 16:31:24 -05:00