Add parent company, billing account, and linked companies to customer account card
This commit is contained in:
@@ -1365,29 +1365,44 @@ def get_asset(asset_id: int):
|
|||||||
if asset_company:
|
if asset_company:
|
||||||
# Try exact match first, then LIKE
|
# Try exact match first, then LIKE
|
||||||
cur_ext.execute("""
|
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("""
|
cur_ext.execute("""
|
||||||
SELECT name, address1_line1, address1_city, address1_stateorprovince,
|
SELECT name, address1_line1, address1_city, address1_stateorprovince,
|
||||||
address1_postalcode, address1_country, telephone1, emailaddress1,
|
address1_postalcode, address1_country, telephone1, emailaddress1,
|
||||||
websiteurl, fax, address1_latitude, address1_longitude,
|
websiteurl, fax, address1_latitude, address1_longitude,
|
||||||
"hsl_managementcompany!name" AS management_company,
|
"hsl_managementcompany!name" AS management_company,
|
||||||
"hsl_csm!name" AS csm
|
"hsl_csm!name" AS csm,
|
||||||
|
"parentaccountid!name" AS parent_company,
|
||||||
|
"msdyn_billingaccount!name" AS billing_account
|
||||||
|
FROM account
|
||||||
|
WHERE name = ?
|
||||||
|
""", (asset_company,))
|
||||||
|
acct = cur_ext.fetchone()
|
||||||
|
if not acct:
|
||||||
|
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,
|
||||||
|
"parentaccountid!name" AS parent_company,
|
||||||
|
"msdyn_billingaccount!name" AS billing_account
|
||||||
FROM account
|
FROM account
|
||||||
WHERE name LIKE ? LIMIT 1
|
WHERE name LIKE ? LIMIT 1
|
||||||
""", (f"%{asset_company[:30]}%",))
|
""", (f"%{asset_company[:30]}%",))
|
||||||
acct = cur_ext.fetchone()
|
acct = cur_ext.fetchone()
|
||||||
if acct:
|
if acct:
|
||||||
ca = dict(acct)
|
ca = dict(acct)
|
||||||
|
# Get linked companies (sibling accounts under same parent)
|
||||||
|
parent_name = ca.get("parent_company")
|
||||||
|
if parent_name:
|
||||||
|
cur_ext.execute("""
|
||||||
|
SELECT name FROM account
|
||||||
|
WHERE "parentaccountid!name" = ? AND name != ?
|
||||||
|
ORDER BY name LIMIT 20
|
||||||
|
""", (parent_name, ca.get("name", "")))
|
||||||
|
siblings = [r["name"] for r in cur_ext.fetchall()]
|
||||||
|
if siblings:
|
||||||
|
ca["linked_companies"] = siblings
|
||||||
# Clean None values
|
# Clean None values
|
||||||
result["customer_account"] = {k: v for k, v in ca.items() if v is not None}
|
result["customer_account"] = {k: v for k, v in ca.items() if v is not None}
|
||||||
ext.close()
|
ext.close()
|
||||||
|
|||||||
@@ -5517,14 +5517,17 @@
|
|||||||
if (ac.address1_postalcode) addrParts.push(esc(ac.address1_postalcode));
|
if (ac.address1_postalcode) addrParts.push(esc(ac.address1_postalcode));
|
||||||
acctFields.innerHTML = [
|
acctFields.innerHTML = [
|
||||||
df('Name', esc(ac.name)),
|
df('Name', esc(ac.name)),
|
||||||
|
(ac.parent_company ? df('Parent Company', esc(ac.parent_company)) : ''),
|
||||||
df('Address', addrParts.join(', ')),
|
df('Address', addrParts.join(', ')),
|
||||||
(ac.telephone1 ? df('Phone', esc(ac.telephone1)) : ''),
|
(ac.telephone1 ? df('Phone', esc(ac.telephone1)) : ''),
|
||||||
(ac.emailaddress1 ? df('Email', esc(ac.emailaddress1)) : ''),
|
(ac.emailaddress1 ? df('Email', esc(ac.emailaddress1)) : ''),
|
||||||
(ac.websiteurl ? df('Website', esc(ac.websiteurl)) : ''),
|
(ac.websiteurl ? df('Website', esc(ac.websiteurl)) : ''),
|
||||||
(ac.management_company ? df('Management Co.', esc(ac.management_company)) : ''),
|
(ac.management_company ? df('Management Co.', esc(ac.management_company)) : ''),
|
||||||
|
(ac.billing_account ? df('Billing Account', esc(ac.billing_account)) : ''),
|
||||||
(ac.csm ? df('Account Manager', esc(ac.csm)) : ''),
|
(ac.csm ? df('Account Manager', esc(ac.csm)) : ''),
|
||||||
(ac.fax ? df('Fax', esc(ac.fax)) : ''),
|
(ac.fax ? df('Fax', esc(ac.fax)) : ''),
|
||||||
(ac.address1_country ? df('Country', esc(ac.address1_country)) : ''),
|
(ac.address1_country ? df('Country', esc(ac.address1_country)) : ''),
|
||||||
|
(ac.linked_companies ? df('Linked Companies', esc(ac.linked_companies.join(', '))) : ''),
|
||||||
].filter(Boolean).join('');
|
].filter(Boolean).join('');
|
||||||
} else {
|
} else {
|
||||||
acctCard.style.display = 'none';
|
acctCard.style.display = 'none';
|
||||||
|
|||||||
Reference in New Issue
Block a user