Files
asignacion_automatica_lotes/sap_services.py
T

77 lines
2.3 KiB
Python
Raw Normal View History

2026-05-28 15:08:25 -05:00
import requests
import json
import traceback
import sys
import sap_utilities
from config_loader import CONFIG
###################################################
def login():
session = requests.Session()
sl_config = CONFIG.service_layer
hana_config = CONFIG.hana
body = {
"CompanyDB": hana_config.company,
"UserName": sl_config.username,
"Password": sl_config.password
}
try:
response = sap_utilities.post(session, "Login", body)
if response:
return session
except Exception as e:
print(f"❌ Error de conexión al SAP Service Layer (Login): {e}")
tb = traceback.extract_tb(sys.exc_info()[2])
print(tb[-1].name)
return None
###################################################
def logout(session):
try:
response = sap_utilities.post(session, "Logout")
if response:
return True
except Exception as e:
print(f"❌ Error de desconexión del SAP Service Layer (Logout): {e}")
tb = traceback.extract_tb(sys.exc_info()[2])
print(tb[-1].name)
return False
###################################################
def get_by_key(session, endpoint):
if not session:
print("❌ Error: No se pudo iniciar sesión en SAP Service Layer")
return None
recurso = endpoint
response = sap_utilities.get(session, recurso)
if response and response.status_code == 200:
return response.json()
print(f"❌ Error obteniendo datos de {recurso}")
return None
###################################################
def update_document(session, recurso, body):
if not session:
print("❌ Error: No se pudo iniciar sesión en SAP Service Layer")
return None
# print(f" 📤 [PATCH] Body enviado a {recurso}:")
# print(json.dumps(body, indent=2, default=str))
response = sap_utilities.patch(session, recurso, body)
if response and response.status_code == 204:
return response
status = response.status_code if response is not None else "Sin respuesta (None)"
print(f"❌ Error actualizando documento en SAP Service Layer: HTTP {status}")
return None
###################################################