Как добавить умную кнопку в модуль продаж в Odoo12 - PullRequest
0 голосов
/ 25 июня 2019

Я хочу добавить умную кнопку в модуль продаж в Odoo 12, когда я нажимаю на нее, она отображает просроченные счета этого клиента

Я уже пытался сделать это, унаследовав модуль продаж, ноне работает

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Приведенный ниже код рассчитывает количество счетов-фактур для клиента и отображает его список счетов, он может помочь вам отобразить умную кнопку и проверить вашу функцию:

В XML:

<record model="ir.ui.view" id="partner_view_buttons">
    <field name="name">partner.view.inherit</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form" />
        <field name="arch" type="xml">

            <div name="button_box" position="inside">

             <button name="act_show_invoice" type="object" icon="fa-usd" class="oe_stat_button"
                help="courriel">
                <field name="invoice_count" widget="statinfo"/>
             </button>

            </div>

    </field>
</record>

В питоне:

invoice_count = fields.Integer(string='Nbr Facture', compute='_compute_invoice_count',)

Метод вычисления для подсчета

def _compute_invoice_count(self):
    invoice_data = self.env['account.invoice'].read_group(domain=[('partner_id', 
                'child_of', self.ids)],fields=['partner_id'], groupby=['partner_id'])
    partner_child_ids = self.read(['child_ids'])
    mapped_data = dict([(m['partner_id'][0], m['partner_id_count']) for m in 
                                                                     invoice_data])
    for partner in self:
        # let's obtain the partner id and all its child ids from the read up there
        item = next(p for p in partner_child_ids if p['id'] == partner.id)
        partner_ids = [partner.id] + item.get('child_ids')
        # then we can sum for all the partner's child
        partner.invoice_count = sum(mapped_data.get(child, 0) for child in 
        partner_ids)

Для перехода к древовидному представлению или связанным записям

 def act_show_invoice(self):
    self.ensure_one()
    res = self.env['ir.actions.act_window'].for_xml_id(
        'account', 'action_invoice_tree1')
    res.update(
        context=dict(
            self.env.context,
            search_default_partner_id=self.id,
        ),
    )

    return res

Я надеюсь, что это может помочь вам

0 голосов
/ 25 июня 2019

Сначала вам нужно унаследовать вид партнера и добавить умную кнопку:

<record model="ir.ui.view" id="partner_view_buttons">
        <field name="name">partner.view.buttons</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="base.view_partner_form" />
        <field name="arch" type="xml">
            <div name="button_box" position="inside">
                <button type="object" class="oe_stat_button" icon="fa-pencil-square-o" name="action_view_partner_overdue_invoices"
                    attrs="{'invisible': [('customer', '=', False)]}" context="{'default_partner_id': active_id}">
                    <div class="o_form_field o_stat_info">
                        <span class="o_stat_value">
                            <field name="total_overdue" widget='monetary' options="{'currency_field': 'currency_id'}"/>
                        </span>
                        <span class="o_stat_text">Total Overdue</span>
                    </div>
                </button>
            </div>
          </field>
        </record>

Унаследовать res.partner модель и добавить метод action_view_partner_overdue_invoices, который возвращает действие с доменом для фильтрации счетов

Добавьте вычисляемое поле total_overdue, чтобы отобразить общую сумму просроченных платежей.

...