descripción

This commit is contained in:
2026-05-30 20:16:12 -06:00
parent a35d26fac0
commit fb20cf8bd5
23 changed files with 32388 additions and 2 deletions
+82
View File
@@ -0,0 +1,82 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Investigacion read-only: opp de Marca hNPaauyuqM1Epycwj0wj (ERIKA RUBI CONCHA).
Imprime CF resueltos, contactId, link a sucursal y busca el contacto en sucursales."""
import os, sys
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if ROOT_DIR not in sys.path:
sys.path.insert(0, ROOT_DIR)
import sync_engine
from scripts import common
gc = sync_engine.ghl_client
BRAND = common.BRAND_LOCATION_ID
OPP_ID = "hNPaauyuqM1Epycwj0wj"
accounts = {a["location_id"]: a for a in common.load_accounts()}
brand_token = accounts[BRAND]["token"]
def keymap(token, loc, obj):
fields = gc.get_object_schema_fields(token, loc, obj)
return {f["id"]: f.get("fieldKey") for f in fields if f.get("id")}
def cfval(cf):
for k in ("fieldValue", "fieldValueString", "value"):
if cf.get(k) is not None:
return cf[k]
return None
opp = (gc.get_opportunity(brand_token, OPP_ID) or {}).get("opportunity") or {}
print("=== OPP MARCA ===")
print("name:", opp.get("name"))
print("status:", opp.get("status"), "value:", opp.get("monetaryValue"))
print("contactId:", opp.get("contactId") or (opp.get("contact") or {}).get("id"))
id2key = keymap(brand_token, BRAND, "opportunity")
print("--- customFields (opp Marca) ---")
link = None
for cf in opp.get("customFields") or []:
k = id2key.get(cf.get("id"))
v = cfval(cf)
print(f" {k} = {v!r}")
if k == "opportunity.id_oportunidad_sucursal":
link = v
print("LINK id_oportunidad_sucursal:", link)
# contacto de Marca
cid = opp.get("contactId") or (opp.get("contact") or {}).get("id")
if cid:
c = (gc._request("GET", f"/contacts/{cid}", brand_token) or {}).get("contact") or {}
print("\n=== CONTACTO MARCA ===")
print("name:", c.get("contactName") or f"{c.get('firstName')} {c.get('lastName')}")
print("phone:", c.get("phone"), "email:", c.get("email"))
ck = keymap(brand_token, BRAND, "contact")
for cf in c.get("customFields") or []:
k = ck.get(cf.get("id"))
if k in ("contact.id_contacto_sucursal", "contact.sucursal", "contact.tienda",
"contact.fuente_de_posible_cliente", "contact.fuente_de_prospecto"):
print(f" {k} = {cf.get('value')!r}")
# buscar la opp link en cada sucursal para identificar la sucursal de origen
if link:
print("\n=== BUSCANDO opp", link, "EN SUCURSALES ===")
for loc, acc in accounts.items():
if loc == BRAND or acc.get("type") == "brand":
continue
try:
bo = (gc.get_opportunity(acc["token"], link) or {}).get("opportunity") or {}
except Exception:
bo = {}
if bo:
print(f" ENCONTRADA en {acc['nombre']} ({loc})")
bk = keymap(acc["token"], loc, "opportunity")
for cf in bo.get("customFields") or []:
k = bk.get(cf.get("id"))
if k in ("opportunity.sucursal", "opportunity.tienda",
"opportunity.fuente_de_posible_cliente", "opportunity.fuente_de_prospecto"):
print(f" {k} = {cfval(cf)!r}")
break
else:
print(" No encontrada por GET directo en ninguna sucursal.")