job-envio-nike¶
Envia a Nike, por SFTP, las ventas y el stock del dia anterior (un TXT por sucursal y consulta), deja un zip de backup y registra el resumen por sucursal. Catalogo: W12.
Uso¶
pip install -e .[dev]
cp .env.example .env # completar
python -m envio_nike --dry-run # ejecuta los SP y deja los TXT en output/, sin SFTP
python -m envio_nike # ayer
python -m envio_nike --desde 2026-10-07 # reproceso de un dia (--fecha es alias)
python -m envio_nike --desde 2026-10-01 --hasta 2026-10-07 # rango (un envio por dia)
Codigos de salida: 0 ok | 1 fallo o "ya hay otra ejecucion" | 2 configuracion/uso. (El original: 0 ok, 1 lock, 2 error de proceso.)
Que hace (por cada dia)¶
exec ods.venta_nike_v3 @fechaprocesoyexec ods.stock_nike_v2 @fechaproceso(valida que traigan las columnas usadas, incluidaSUC_DABRA).- Escribe
output/<aaaammdd>/{ventas,stock}_nike_<sucursal>_<dd_mm_aaaa>.txt(sin cabecera,;, texto entre comillas, sin la columnaSUC_DABRA, CRLF). - Sube esos archivos por SFTP a
/home/<usuario>/OUT: primero<archivo>.tmpy luego rename; conNIKE_SFTP_OVERWRITE=truereemplaza lo ya entregado. Reintenta hasta 3 veces (10 s y 20 s) solo ante timeout. - Solo si el envio salio bien, y de forma independiente: (a) backup: un zip por consulta en
NIKE_BACKUP_DIR(oarchive/<aaaammdd>/) y borra los TXT; (b) resumen por sucursal enods.tbl_Info_Nike_NewconMarca='NI'(borra y reinserta ese dia y marca). - Una fila en
ods.tbl_control_procesos(ID08 - PY_ENVIA_EXTERNO_TXT_NIKE_DIARIA, Success/Error) al terminar todos los dias, y un resumenFechas con error: <fecha> (<etapa>)en el log.
Nunca corren dos instancias a la vez (flock en state/, se libera solo si el proceso muere).
Verificacion¶
pytest && python -m ruff check . && python tools/verify_equivalence.py <ruta>/code/activo/PY_ENVIA_EXTERNO_TXT_NIKE_DIARIA --mutaciones
Fuente: repositorio job-envio-nike, versión 693f92b (con cambios locales). Página generada con tools/publicar_docs.py.