#!/usr/bin/env python3
path = "/var/www/html/wevia-ia/wevia-admin-crm-v68.php"
with open(path, "r", encoding="utf-8") as f:
c = f.read()
if 'data-p="weval"' in c:
print("ALREADY_PATCHED")
exit(0)
# 1. Add WEVAL CRM tab (between Twenty and Lookup)
old_tab = '
🔍 Triple Lookup
'
new_tabs = '💼 WEVAL CRM Deals
\n 🔍 Quadruple Lookup
'
c = c.replace(old_tab, new_tabs, 1)
# 2. Add WEVAL CRM pane (before Lookup pane)
old_pane = ''
new_pane = '''
Deals Pipeline (6 deals, 104k€ weighted)
| Title | Company | Stage | Value | Prob | Partner |
| ⏳ |
'''
c = c.replace(old_pane, new_pane, 1)
# 3. Add loadWeval to loadPane switcher and loadWeval function
old_loader = "if (p === 'twenty') loadTwenty();"
new_loader = """if (p === 'twenty') loadTwenty();
if (p === 'weval') loadWeval();"""
c = c.replace(old_loader, new_loader, 1)
# 4. Add loadWeval function (before doLookup)
old_doLookup = "async function doLookup() {"
new_weval_fn = """async function loadWeval() {
const r = await fetch(API + '&action=weval_crm_deals').then(r => r.json());
document.getElementById('weval-stats').innerHTML = `
${r.deals.length}
Deals total
${r.companies_count}
Companies
${r.contacts_count}
Contacts
${Math.round(r.pipeline_weighted).toLocaleString()}
Pipeline pondéré
`;
const stageColors = {prospect:'#94a3b8', qualified:'#22d3ee', proposal:'#a78bfa', negotiation:'#f59e0b', won:'#10b981', lost:'#ef4444'};
document.getElementById('weval-deals-body').innerHTML = r.deals.map(d => `
| ${d.title} |
${d.company_name||'-'} |
${d.stage} |
${Number(d.value).toLocaleString()} ${d.currency} |
${d.probability}% |
${d.partner||'-'} |
`).join('');
document.getElementById('weval-stages').innerHTML = r.stats_by_stage.map(s => `
${s.stage}
${Number(s.v).toLocaleString()} · ${s.c} deals
`).join('');
}
async function doLookup() {"""
c = c.replace(old_doLookup, new_weval_fn, 1)
# 5. Add weval_crm section to doLookup result (after forms)
old_result = "${r.forms.length ? `📝 Form submissions"
new_result = """${r.weval_crm && r.weval_crm.length ? `💼 WEVAL CRM Deals (${r.weval_crm.length})
${r.weval_crm.map(d=>`
${d.title} · ${d.company} · Stage: ${d.stage} · ${Number(d.value).toLocaleString()} ${d.currency} · Prob: ${d.probability}% · Partner: ${d.partner||'-'}
`).join('')}`:''}
${r.forms.length ? `📝 Form submissions"""
c = c.replace(old_result, new_result, 1)
with open(path, "w", encoding="utf-8") as f:
f.write(c)
print(f"PATCHED ok - size now {len(c)}")