feat(odoo): add conversation and partner views

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Claude AI
2026-01-29 22:45:44 +00:00
parent f1933cf0d0
commit 48db1a94f7
2 changed files with 205 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- Inherit Partner Form -->
<record id="view_partner_form_whatsapp" model="ir.ui.view">
<field name="name">res.partner.form.whatsapp</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<!-- Add WhatsApp button box -->
<xpath expr="//div[@name='button_box']" position="inside">
<button name="action_open_whatsapp_conversations" type="object" class="oe_stat_button" icon="fa-whatsapp">
<div class="o_field_widget o_stat_info">
<span class="o_stat_value">
<field name="whatsapp_conversation_count"/>
</span>
<span class="o_stat_text">WhatsApp</span>
</div>
</button>
</xpath>
<!-- Add WhatsApp action buttons -->
<xpath expr="//div[hasclass('oe_title')]" position="after">
<div class="mb-2" invisible="not mobile and not phone">
<button name="action_send_whatsapp" string="Enviar WhatsApp" type="object" class="btn btn-success" icon="fa-whatsapp"/>
<button name="action_open_whatsapp_chat" string="Abrir Chat" type="object" class="btn btn-outline-success ms-1" icon="fa-comments"/>
</div>
</xpath>
<!-- Add WhatsApp notebook page -->
<xpath expr="//notebook" position="inside">
<page string="WhatsApp" name="whatsapp" invisible="whatsapp_conversation_count == 0">
<field name="whatsapp_conversation_ids" mode="tree" readonly="1">
<tree>
<field name="account_id"/>
<field name="status" widget="badge"/>
<field name="last_message_at"/>
<field name="last_message_preview"/>
<field name="unread_count" widget="badge" decoration-danger="unread_count > 0"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
<!-- Partner Tree - Add WhatsApp indicator -->
<record id="view_partner_tree_whatsapp" model="ir.ui.view">
<field name="name">res.partner.tree.whatsapp</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='phone']" position="after">
<field name="whatsapp_unread_count" widget="badge" decoration-danger="whatsapp_unread_count > 0" optional="show"/>
</xpath>
</field>
</record>
<!-- Server Action: Send WhatsApp -->
<record id="action_partner_send_whatsapp" model="ir.actions.server">
<field name="name">Enviar WhatsApp</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="binding_model_id" ref="base.model_res_partner"/>
<field name="binding_view_types">list,form</field>
<field name="state">code</field>
<field name="code">
if records:
if len(records) == 1:
action = records.action_send_whatsapp()
else:
action = {
'type': 'ir.actions.act_window',
'name': 'Envío Masivo WhatsApp',
'res_model': 'whatsapp.mass.wizard',
'view_mode': 'form',
'target': 'new',
'context': {'default_partner_ids': records.ids},
}
</field>
</record>
</odoo>