83 lines
3.2 KiB
Python
83 lines
3.2 KiB
Python
#!/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.")
|