feat: opcion 'sin contrato' para enviar numeroContrato null en TNS
- Agrega columna sin_contrato en tabla contratos (migration automatica) - Contrato 040 marcado excluir=0, sin_contrato=1 en seed - load_sin_contrato_set() retorna contratos que deben ir con null - generar_rda_paciente acepta sin_contrato_set y fuerza numeroContrato=null - Automation paso 2 y 3 pasan sin_contrato_set al generador - Pagina contratos: columna y toggle "Sin contrato", checkbox en modal editar Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
eeabb6268e
commit
9f2bd5164e
@@ -14,7 +14,7 @@ from app.services.json_generator import (
|
||||
)
|
||||
from app.services.api_client import get_tns_token, TNS_BASE
|
||||
from app.services.whatsapp_sync import sync_paciente, sync_todos, guardar_sync_log
|
||||
from app.routes.contratos import load_contrato_map, load_excluded_set
|
||||
from app.routes.contratos import load_contrato_map, load_excluded_set, load_sin_contrato_set
|
||||
from app.utils.activity import log_activity, get_ip
|
||||
|
||||
router = APIRouter(prefix="/automation", tags=["automation"])
|
||||
@@ -260,6 +260,7 @@ async def preview_automation(
|
||||
if str(v[0].get("CODCONTRATO") or "").strip() not in excluded}
|
||||
|
||||
contrato_map = load_contrato_map()
|
||||
sin_contrato_set = load_sin_contrato_set()
|
||||
prof_def = configs.get("profesional_defecto", "")
|
||||
esp_def = configs.get("especialidad_defecto", "")
|
||||
remis_def = configs.get("remisionante_defecto", "00")
|
||||
@@ -274,6 +275,7 @@ async def preview_automation(
|
||||
numero_override=ps_numero,
|
||||
contrato_map=contrato_map,
|
||||
prefijo_override=ps_prefijo,
|
||||
sin_contrato_set=sin_contrato_set,
|
||||
)
|
||||
preservicios_preview.append({
|
||||
"factura": f"{ps_prefijo}-{ps_numero.zfill(5)}",
|
||||
@@ -429,6 +431,7 @@ async def run_automation(
|
||||
|
||||
# ── PASO 2: Enviar RDA Paciente ───────────────────────────────────────────
|
||||
excluded = load_excluded_set()
|
||||
sin_contrato_set = load_sin_contrato_set()
|
||||
grupos_all = agrupar_por_recepcion(rows_rda)
|
||||
grupos = {k: v for k, v in grupos_all.items()
|
||||
if str(v[0].get("CODCONTRATO") or "").strip() not in excluded}
|
||||
@@ -445,7 +448,7 @@ async def run_automation(
|
||||
for id_recepcion, grupo_rows in grupos.items():
|
||||
num_fac = str(grupo_rows[0].get("NUM_FACTURA") or "").strip()
|
||||
num_override = num_fac
|
||||
rda_json = generar_rda_paciente(grupo_rows, prof_def, esp_def, remis_def, prefijo_def, num_override, contrato_map=contrato_map)
|
||||
rda_json = generar_rda_paciente(grupo_rows, prof_def, esp_def, remis_def, prefijo_def, num_override, contrato_map=contrato_map, sin_contrato_set=sin_contrato_set)
|
||||
factura = num_override or str(id_recepcion)
|
||||
try:
|
||||
resp = await client.post(endpoint, json=rda_json, headers=headers)
|
||||
@@ -486,6 +489,7 @@ async def run_automation(
|
||||
numero_override=ps_numero,
|
||||
contrato_map=contrato_map,
|
||||
prefijo_override=ps_prefijo,
|
||||
sin_contrato_set=sin_contrato_set,
|
||||
)
|
||||
factura_ps = f"{ps_prefijo}-{ps_numero.zfill(5)}"
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user