primer commit
This commit is contained in:
commit
d858235656
14 files changed
+21213
No files matched your search
+155
@@ -0,0 +1,155 @@
|
||||
|
||||
from hdbcli import dbapi
|
||||
from config_loader import CONFIG
|
||||
|
||||
###################################################
|
||||
def get_connection(schema):
|
||||
"""Crea y retorna una conexión a SAP HANA."""
|
||||
try:
|
||||
conn = dbapi.connect(
|
||||
address=CONFIG.hana.server,
|
||||
port=CONFIG.hana.port,
|
||||
user=CONFIG.hana.user,
|
||||
password=CONFIG.hana.password
|
||||
)
|
||||
return conn
|
||||
except Exception as e:
|
||||
print(f"❌ Error conectando a HANA para {schema}: {e}")
|
||||
return None
|
||||
|
||||
###################################################
|
||||
def obtener_registros():
|
||||
"""
|
||||
Obtiene los documentos de los ultimos 'days' dias
|
||||
Args:
|
||||
company: Objeto con la configuracion de la base de datos
|
||||
days: Numero de dias a consultar, entero positivo
|
||||
Returns:
|
||||
Lista de diccionarios con los documentos encontrados
|
||||
Raises:
|
||||
Exception: Si hay un error conectando a la base de datos
|
||||
Example:
|
||||
where DocDate >= ADD_DAYS(CURRENT_DATE, -{days})
|
||||
"""
|
||||
hana_config = CONFIG.hana
|
||||
|
||||
db_name = hana_config.company
|
||||
|
||||
conn = get_connection(db_name)
|
||||
if not conn:
|
||||
return []
|
||||
|
||||
query = f"""
|
||||
SELECT T0."DocEntry", T0."DocNum", T0."ObjType", T2."USER_CODE" "UserCode"
|
||||
FROM "{db_name}".ORDR T0
|
||||
INNER JOIN "{db_name}".OUSR T2 ON T2."USERID" = T0."UserSign"
|
||||
WHERE T0."CANCELED" = 'N' AND T0."DocStatus" = 'O'
|
||||
AND T0."DocType" = 'I'
|
||||
AND IFNULL("U_SIS_IMPAUT",'N') = 'Y'
|
||||
AND IFNULL("U_SIS_VIGREQ",'') <> ''
|
||||
AND TO_VARCHAR(T0."CreateDate",'YYYYMMDD') = '20260528'
|
||||
"""
|
||||
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(query)
|
||||
|
||||
# Obtener nombres de columnas
|
||||
columns = [column[0] for column in cursor.description]
|
||||
|
||||
# Convertir resultados a lista de diccionarios
|
||||
results = []
|
||||
for row in cursor.fetchall():
|
||||
results.append(dict(zip(columns, row)))
|
||||
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
print(f"📄 Se encontraron {len(results)} documentos para procesar.")
|
||||
return results
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error ejecutando la consulta en HANA: {e}")
|
||||
if 'conn' in locals():
|
||||
conn.close()
|
||||
return []
|
||||
|
||||
###################################################
|
||||
def obtener_lotes_disponibles(itemcode:str,whscode:str):
|
||||
hana_config = CONFIG.hana
|
||||
|
||||
db_name = hana_config.company
|
||||
|
||||
conn = get_connection(db_name)
|
||||
if not conn:
|
||||
return []
|
||||
|
||||
query = f"""
|
||||
SELECT T0."DistNumber", TO_VARCHAR(T0."InDate",'YYYY-MM-DD') "InDate",
|
||||
TO_VARCHAR(T0."ExpDate",'YYYY-MM-DD') "ExpDate",
|
||||
T0."AbsEntry", T1."WhsCode", T1."Quantity", T1."CommitQty",
|
||||
FLOOR(MONTHS_BETWEEN(CURRENT_DATE, T0."ExpDate")) "Months"
|
||||
FROM "{db_name}".OBTN T0
|
||||
INNER JOIN "{db_name}".OBTQ T1 ON T1."MdAbsEntry" = T0."AbsEntry"
|
||||
WHERE T0."ItemCode" = '{itemcode}'
|
||||
AND T1."WhsCode" = '{whscode}'
|
||||
AND T1."Quantity" > 0.00
|
||||
"""
|
||||
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(query)
|
||||
|
||||
# Obtener nombres de columnas
|
||||
columns = [column[0] for column in cursor.description]
|
||||
|
||||
# Convertir resultados a lista de diccionarios
|
||||
results = []
|
||||
for row in cursor.fetchall():
|
||||
results.append(dict(zip(columns, row)))
|
||||
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
return results
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error ejecutando la consulta en HANA: {e}")
|
||||
if 'conn' in locals():
|
||||
conn.close()
|
||||
return []
|
||||
|
||||
###################################################
|
||||
def obtener_presentacion_articulo(itemcode):
|
||||
hana_config = CONFIG.hana
|
||||
|
||||
db_name = hana_config.company
|
||||
|
||||
conn = get_connection(db_name)
|
||||
if not conn:
|
||||
return []
|
||||
|
||||
query = f"""
|
||||
SELECT IFNULL(T0."U_SIS_PRECAJ",'100') "Presentacion"
|
||||
FROM "{db_name}".OITM T0
|
||||
WHERE T0."ItemCode" = '{itemcode}'
|
||||
"""
|
||||
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(query)
|
||||
|
||||
presentacion = cursor.fetchone()[0]
|
||||
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
return presentacion
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error ejecutando la consulta en HANA: {e}")
|
||||
if 'conn' in locals():
|
||||
conn.close()
|
||||
return None
|
||||
|
||||
###################################################
|
||||
Reference in new issue
Block a user