modificado para obtener todas las facturas que tiene el casillero de validación vacío, no más de 30 días

This commit is contained in:
George committed 2026-08-07 13:40:04 -05:00
1 parent 22aec163d2
commit 9f2d96e64c
9 files changed
+213 -198

No files matched your search

+20 -21
View File
@@ -8,6 +8,9 @@ from hdbcli import dbapi
from dotenv import load_dotenv
from constants import TABLAS, ESTADOS_COMPROBANTE, ESTADOS_CONTRIBUYENTE, CONDICIONES_DOMICILIADO
from logger_manager import get_logger
logger = get_logger()
# ============================================================================
# CONFIGURACIÓN
@@ -34,11 +37,11 @@ def get_connection():
)
return conn
except Exception as e:
print(f" ❌ Error conectando a HANA: {e}")
logger.error(f" ❌ Error conectando a HANA: {e}")
return None
# ============================================================================
def obtener_documentos_creados_actualizados_hace_60_minutos(schema, minutes=60):
def obtener_documentos_aun_no_validados_ultimos_30_dias(schema):
"""
Se conecta a la base de datos SAP HANA, realiza una consulta a la tabla OPCH,
y formatea el resultado para que coincida con el esquema de documentos.json.
@@ -60,11 +63,7 @@ def obtener_documentos_creados_actualizados_hace_60_minutos(schema, minutes=60):
FROM "{schema}".OPCH T0
INNER JOIN "{schema}".OCRD T3 ON T3."CardCode" = T0."CardCode"
INNER JOIN "{schema}".OUSR T1 ON T1."USERID" = T0."UserSign2"
WHERE TO_TIMESTAMP(TO_VARCHAR(T0."UpdateDate", 'YYYY-MM-DD')
|| ' ' || LPAD(TO_VARCHAR(T0."UpdateTS"), 6, '0'),
'YYYY-MM-DD HH24MISS')
>= ADD_SECONDS(CURRENT_TIMESTAMP, {-1 * minutes * 60})
WHERE T0."UpdateDate" >= ADD_DAYS(CURRENT_DATE, -30)
AND T0."CANCELED" = 'N'
AND IFNULL(T0."Indicator",'') IN ('01','02','03','08')
AND LENGTH(IFNULL(T0."FolioPref",'')) > 0
@@ -73,7 +72,7 @@ def obtener_documentos_creados_actualizados_hace_60_minutos(schema, minutes=60):
AND (LENGTH(IFNULL(T0."U_PGX_STMENSAJE",'')) = 0 OR LOCATE('NO EXISTE', IFNULL(T0."U_PGX_STMENSAJE",'')) > 0)
ORDER BY T0."CreateDate" DESC;
"""
print(f"🔌 Conectando al servidor SAP HANA ({HANA_HOST}:{HANA_PORT}) para schema {schema}...")
logger.info(f"🔌 Conectando al servidor SAP HANA ({HANA_HOST}:{HANA_PORT}) para schema {schema}...")
connection = get_connection()
if not connection:
raise ConnectionError("No se pudo establecer la conexión a SAP HANA.")
@@ -94,14 +93,14 @@ def obtener_documentos_creados_actualizados_hace_60_minutos(schema, minutes=60):
return results
except Exception as e:
print(f" ❌ Error en consulta HANA: {e}")
logger.error(f" ❌ Error en consulta HANA: {e}")
return []
finally:
if cursor:
cursor.close()
if connection:
connection.close()
print(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
logger.info(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
# ============================================================================
def obtener_documentos_fecha_emision_ultimos_8_dias(schema):
@@ -129,7 +128,7 @@ def obtener_documentos_fecha_emision_ultimos_8_dias(schema):
AND IFNULL(T3."U_EXX_TIPODOCU",'') IN ('6','4')
ORDER BY T0."U_PGX_STMENSAJE", T0."CreateDate" DESC;
"""
print(f"🔌 Conectando al servidor SAP HANA ({HANA_HOST}:{HANA_PORT}) para schema {schema}...")
logger.info(f"🔌 Conectando al servidor SAP HANA ({HANA_HOST}:{HANA_PORT}) para schema {schema}...")
connection = get_connection()
if not connection:
raise ConnectionError("No se pudo establecer la conexión a SAP HANA.")
@@ -148,14 +147,14 @@ def obtener_documentos_fecha_emision_ultimos_8_dias(schema):
return results
except Exception as e:
print(f" ❌ Error en consulta HANA: {e}")
logger.error(f" ❌ Error en consulta HANA: {e}")
return []
finally:
if cursor:
cursor.close()
if connection:
connection.close()
print(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
logger.info(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
# ============================================================================
def obtener_documentos_creados_hace_x_dias(schema, dias=8):
@@ -184,7 +183,7 @@ def obtener_documentos_creados_hace_x_dias(schema, dias=8):
AND IFNULL(T3."U_EXX_TIPODOCU",'') IN ('6','4')
ORDER BY T0."CreateDate" DESC;
"""
print(f"🔌 Conectando al servidor SAP HANA ({HANA_HOST}:{HANA_PORT}) para schema {schema}...")
logger.info(f"🔌 Conectando al servidor SAP HANA ({HANA_HOST}:{HANA_PORT}) para schema {schema}...")
connection = get_connection()
if not connection:
raise ConnectionError("No se pudo establecer la conexión a SAP HANA.")
@@ -203,14 +202,14 @@ def obtener_documentos_creados_hace_x_dias(schema, dias=8):
return results
except Exception as e:
print(f" ❌ Error en consulta HANA: {e}")
logger.error(f" ❌ Error en consulta HANA: {e}")
return []
finally:
if cursor:
cursor.close()
if connection:
connection.close()
print(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
logger.info(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
# ============================================================================
def actualizar_documento_sap(schema, registro,resultado):
@@ -263,10 +262,10 @@ def actualizar_documento_sap(schema, registro,resultado):
"U_PGX_PETOTORHORA" = TO_VARCHAR(CURRENT_TIME,'HH24:MM:SS')
WHERE "DocEntry" = {registro["fieldvalue"]};"""
print(f" ┌─ 🗄️ UPDATE HANA ──────────────────────")
logger.info(f" ┌─ 🗄️ UPDATE HANA ──────────────────────")
for line in query.splitlines():
print(f" │ {line}")
print(f" └─────────────────────────────────────────")
logger.info(f" │ {line}")
logger.info(f" └─────────────────────────────────────────")
try:
cursor.execute(query)
@@ -274,13 +273,13 @@ def actualizar_documento_sap(schema, registro,resultado):
cursor.close()
return True
except Exception as e:
print(f" ❌ Error actualizando registro en HANA: {e}")
logger.error(f" ❌ Error actualizando registro en HANA: {e}")
return False
finally:
if cursor:
cursor.close()
if connection:
connection.close()
print(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
logger.info(f" 🔒 [{sys._getframe().f_code.co_name}] Conexión HANA cerrada.")
# ============================================================================