Add Customer Account card to asset detail view — live from Dynamics 365 extraction DB. Shows name, address, phone, email, management company, account manager.
This commit is contained in:
@@ -1355,6 +1355,45 @@ def get_asset(asset_id: int):
|
||||
except Exception:
|
||||
pass # Extraction DB might not be available, silently skip
|
||||
|
||||
# Enrich with customer account details from extraction DB
|
||||
try:
|
||||
ext = _get_extraction_db()
|
||||
if ext:
|
||||
cur_ext = ext.cursor()
|
||||
asset_company = result.get("company", "")
|
||||
asset_place = result.get("place", "")
|
||||
if asset_company:
|
||||
# Try exact match first, then LIKE
|
||||
cur_ext.execute("""
|
||||
SELECT name, address1_line1, address1_city, address1_stateorprovince,
|
||||
address1_postalcode, address1_country, telephone1, emailaddress1,
|
||||
websiteurl, fax, address1_latitude, address1_longitude,
|
||||
"hsl_managementcompany!name" AS management_company,
|
||||
"hsl_csm!name" AS csm
|
||||
FROM account
|
||||
WHERE name = ?
|
||||
""", (asset_company,))
|
||||
acct = cur_ext.fetchone()
|
||||
if not acct:
|
||||
# Try fuzzy match
|
||||
cur_ext.execute("""
|
||||
SELECT name, address1_line1, address1_city, address1_stateorprovince,
|
||||
address1_postalcode, address1_country, telephone1, emailaddress1,
|
||||
websiteurl, fax, address1_latitude, address1_longitude,
|
||||
"hsl_managementcompany!name" AS management_company,
|
||||
"hsl_csm!name" AS csm
|
||||
FROM account
|
||||
WHERE name LIKE ? LIMIT 1
|
||||
""", (f"%{asset_company[:30]}%",))
|
||||
acct = cur_ext.fetchone()
|
||||
if acct:
|
||||
ca = dict(acct)
|
||||
# Clean None values
|
||||
result["customer_account"] = {k: v for k, v in ca.items() if v is not None}
|
||||
ext.close()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Enrich with Seed data (from mycantaloupe.com)
|
||||
seed_row = conn.execute(
|
||||
"SELECT raw_data, imported_at FROM seed_data WHERE asset_id = ?",
|
||||
|
||||
Reference in New Issue
Block a user