diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2025-05-09 06:44:57 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2025-05-09 06:44:57 +0000 |
| commit | eaa804b51a5b3829bb62148ff198327230e06f7e (patch) | |
| tree | 446b7dc7151ce5e7c5b22db11523cded6414de98 | |
| parent | 71717320da0bed245c18574345bbf7fd3c7d8627 (diff) | |
| parent | 10d6ffad06f2dd89eca972257c2b9326d002949a (diff) | |
Merged in add_partner-customer-commision (pull request #299)
<miqdad> add partner group by in customer commision tree view
| -rw-r--r-- | indoteknik_custom/models/commision.py | 47 | ||||
| -rw-r--r-- | indoteknik_custom/views/customer_commision.xml | 234 |
2 files changed, 164 insertions, 117 deletions
diff --git a/indoteknik_custom/models/commision.py b/indoteknik_custom/models/commision.py index 788fc0f9..eeaa8efc 100644 --- a/indoteknik_custom/models/commision.py +++ b/indoteknik_custom/models/commision.py @@ -201,7 +201,8 @@ class CustomerCommision(models.Model): grouped_invoice_number = fields.Char(string='Group Invoice Number', compute='_compute_grouped_numbers') sales_id = fields.Many2one('res.users', string="Sales", tracking=True, default=lambda self: self.env.user, - domain=lambda self: [('groups_id', 'in', self.env.ref('sales_team.group_sale_salesman').id)]) + domain=lambda self: [ + ('groups_id', 'in', self.env.ref('sales_team.group_sale_salesman').id)]) date_approved_sales = fields.Datetime(string="Date Approved Sales", tracking=True) date_approved_marketing = fields.Datetime(string="Date Approved Marketing", tracking=True) @@ -213,6 +214,46 @@ class CustomerCommision(models.Model): position_pimpinan = fields.Char(string="Position Pimpinan", tracking=True) position_accounting = fields.Char(string="Position Accounting", tracking=True) + # get partner ids so it can be grouped by + @api.model + def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True): + if 'partner_ids' in groupby: + # Get all records matching the domain + records = self.search(domain) + + # Create groups for each partner + groups = {} + for record in records: + for partner in record.partner_ids: + if partner.id not in groups: + groups[partner.id] = { + 'partner_ids': partner, + 'records': self.env['customer.commision'] + } + groups[partner.id]['records'] |= record + + # Format the result + result = [] + for partner_id, group_data in groups.items(): + partner = group_data['partner_ids'] + record_ids = group_data['records'].ids + + # Create the domain + group_domain = [('id', 'in', record_ids)] + if domain: + group_domain = ['&'] + domain + group_domain + + result.append({ + 'partner_ids': (partner.id, partner.display_name), + 'partner_ids_count': len(record_ids), + '__domain': group_domain, + '__count': len(record_ids), + }) + + return result + + return super(CustomerCommision, self).read_group(domain, fields, groupby, offset, limit, orderby, lazy) + def compute_delivery_amt_text(self): tb = Terbilang() @@ -308,9 +349,9 @@ class CustomerCommision(models.Model): def action_confirm_customer_commision(self): jakarta_tz = pytz.timezone('Asia/Jakarta') now = datetime.now(jakarta_tz) - + now_naive = now.replace(tzinfo=None) - + if not self.status or self.status == 'draft': self.status = 'pengajuan1' elif self.status == 'pengajuan1' and self.env.user.is_sales_manager: diff --git a/indoteknik_custom/views/customer_commision.xml b/indoteknik_custom/views/customer_commision.xml index 9f0e1e8a..37df16ff 100644 --- a/indoteknik_custom/views/customer_commision.xml +++ b/indoteknik_custom/views/customer_commision.xml @@ -11,11 +11,12 @@ <field name="partner_ids" widget="many2many_tags"/> <field name="commision_percent"/> <field name="commision_amt" readonly="1"/> - <field name="status" readonly="1" decoration-success="status == 'approved'" widget="badge" optional="show"/> + <field name="status" readonly="1" decoration-success="status == 'approved'" widget="badge" + optional="show"/> <field name="payment_status" readonly="1" - decoration-success="payment_status == 'payment'" - decoration-danger="payment_status == 'pending'" - widget="badge"/> + decoration-success="payment_status == 'payment'" + decoration-danger="payment_status == 'pending'" + widget="badge"/> <field name="brand_ids" widget="many2many_tags"/> <field name="grouped_so_number" readonly="1" optional="hide"/> <field name="grouped_invoice_number" readonly="1" optional="hide"/> @@ -47,89 +48,89 @@ <field name="model">customer.commision</field> <field name="arch" type="xml"> <form> -<!-- attrs="{'invisible': [('status', 'in', ['draft','pengajuan1','pengajuan2','pengajuan3','pengajuan4'])]}"--> + <!-- attrs="{'invisible': [('status', 'in', ['draft','pengajuan1','pengajuan2','pengajuan3','pengajuan4'])]}"--> <header> <button name="action_confirm_customer_commision" - string="Confirm" type="object" - attrs="{'invisible': [('status', 'in', ['approved','reject'])]}" - options="{}"/> + string="Confirm" type="object" + attrs="{'invisible': [('status', 'in', ['approved','reject'])]}" + options="{}"/> <button name="action_reject" - string="Reject" - attrs="{'invisible': [('status', 'in', ['approved','reject'])]}" - type="object"/> - <button name="button_draft" - string="Reset to Draft" - attrs="{'invisible': [('status', '!=', 'reject')]}" - type="object"/> + string="Reject" + attrs="{'invisible': [('status', 'in', ['approved','reject'])]}" + type="object"/> + <button name="button_draft" + string="Reset to Draft" + attrs="{'invisible': [('status', '!=', 'reject')]}" + type="object"/> <button name="action_confirm_customer_payment" - string="Konfirmasi Pembayaran" type="object" - options="{}" - attrs="{'invisible': [('payment_status', '==', 'payment')], 'readonly': [('payment_status', '=', 'payment')]}"/> + string="Konfirmasi Pembayaran" type="object" + options="{}" + attrs="{'invisible': [('payment_status', '==', 'payment')], 'readonly': [('payment_status', '=', 'payment')]}"/> <field name="status" widget="statusbar" - statusbar_visible="draft,pengajuan1,pengajuan2,pengajuan3,pengajuan4,approved" - statusbar_colors='{"reject":"red"}'/> + statusbar_visible="draft,pengajuan1,pengajuan2,pengajuan3,pengajuan4,approved" + statusbar_colors='{"reject":"red"}'/> </header> <sheet string="Customer Commision"> - <div class="oe_button_box" name="button_box"/> + <div class="oe_button_box" name="button_box"/> + <group> <group> + <field name="number"/> + <field name="date_from"/> + <field name="partner_ids" widget="many2many_tags"/> + <field name="description"/> + <field name="commision_percent"/> + <field name="commision_amt"/> + <field name="commision_amt_text"/> + <field name="grouped_so_number" readonly="1"/> + <field name="grouped_invoice_number" readonly="1"/> + <field name="approved_by" readonly="1"/> + </group> + <group> + <div> + <button name="generate_customer_commision" + string="Generate Line" + type="object" + class="mr-2 oe_highlight" + /> + </div> + <field name="date_to"/> + <field name="sales_id"/> + <field name="commision_type"/> + <field name="brand_ids" widget="many2many_tags"/> + <field name="notification" readonly="1"/> + <!-- <field name="status" readonly="1"/>--> + <field name="payment_status" readonly="1"/> + <field name="total_dpp"/> + </group> + </group> + <notebook> + <page string="Lines"> + <field name="commision_lines"/> + </page> + <page string="Other Info" name="customer_commision_info"> <group> - <field name="number"/> - <field name="date_from"/> - <field name="partner_ids" widget="many2many_tags"/> - <field name="description"/> - <field name="commision_percent"/> - <field name="commision_amt"/> - <field name="commision_amt_text"/> - <field name="grouped_so_number" readonly="1"/> - <field name="grouped_invoice_number" readonly="1"/> - <field name="approved_by" readonly="1"/> + <field name="bank_name"/> + <field name="account_name"/> + <field name="bank_account"/> + <field name="note_transfer"/> </group> + </page> + <page string="Finance Notes"> <group> - <div> - <button name="generate_customer_commision" - string="Generate Line" - type="object" - class="mr-2 oe_highlight" - /> - </div> - <field name="date_to"/> - <field name="sales_id"/> - <field name="commision_type"/> - <field name="brand_ids" widget="many2many_tags"/> - <field name="notification" readonly="1"/> -<!-- <field name="status" readonly="1"/>--> - <field name="payment_status" readonly="1" /> - <field name="total_dpp"/> + <field name="note_finnance"/> </group> - </group> - <notebook> - <page string="Lines"> - <field name="commision_lines"/> - </page> - <page string="Other Info" name="customer_commision_info"> - <group> - <field name="bank_name"/> - <field name="account_name"/> - <field name="bank_account"/> - <field name="note_transfer"/> - </group> - </page> - <page string="Finance Notes"> - <group> - <field name="note_finnance"/> - </group> - </page> - </notebook> - </sheet> - <div class="oe_chatter"> - <field name="message_follower_ids" widget="mail_followers"/> - <field name="message_ids" widget="mail_thread"/> - </div> + </page> + </notebook> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" widget="mail_followers"/> + <field name="message_ids" widget="mail_thread"/> + </div> </form> </field> </record> - <!-- Wizard for Reject Reason --> + <!-- Wizard for Reject Reason --> <record id="view_reject_reason_wizard_form" model="ir.ui.view"> <field name="name">reject.reason.commision.form</field> <field name="model">reject.reason.commision</field> @@ -160,7 +161,12 @@ <field name="arch" type="xml"> <search string="Search Customer Commision"> <field name="partner_ids"/> - </search> + <group expand="0" string="Group By"> + <filter string="Partner" name="group_partner" + domain="[]" + context="{'group_by':'partner_ids'}"/> + </group> + </search> </field> </record> @@ -173,17 +179,17 @@ </record> <menuitem id="menu_customer_commision_acct" - name="Customer Commision" - action="customer_commision_action" - parent="account.menu_finance_entries" - sequence="113" + name="Customer Commision" + action="customer_commision_action" + parent="account.menu_finance_entries" + sequence="113" /> <menuitem id="menu_customer_commision_sales" - name="Customer Commision" - action="customer_commision_action" - parent="sale.product_menu_catalog" - sequence="101" + name="Customer Commision" + action="customer_commision_action" + parent="sale.product_menu_catalog" + sequence="101" /> <record id="customer_rebate_tree" model="ir.ui.view"> @@ -217,34 +223,34 @@ <field name="arch" type="xml"> <form> <sheet string="Customer Rebate"> - <div class="oe_button_box" name="button_box"/> + <div class="oe_button_box" name="button_box"/> + <group> <group> - <group> - <field name="date_from"/> - <field name="partner_id"/> - <field name="target_1st"/> - <field name="target_2nd"/> - <field name="dpp_q1"/> - <field name="dpp_q2"/> - <field name="dpp_q3"/> - <field name="dpp_q4"/> - </group> - <group> - <field name="date_to"/> - <field name="description"/> - <field name="achieve_1"/> - <field name="achieve_2"/> - <field name="status_q1"/> - <field name="status_q2"/> - <field name="status_q3"/> - <field name="status_q4"/> - </group> + <field name="date_from"/> + <field name="partner_id"/> + <field name="target_1st"/> + <field name="target_2nd"/> + <field name="dpp_q1"/> + <field name="dpp_q2"/> + <field name="dpp_q3"/> + <field name="dpp_q4"/> + </group> + <group> + <field name="date_to"/> + <field name="description"/> + <field name="achieve_1"/> + <field name="achieve_2"/> + <field name="status_q1"/> + <field name="status_q2"/> + <field name="status_q3"/> + <field name="status_q4"/> </group> - </sheet> - <div class="oe_chatter"> - <field name="message_follower_ids" widget="mail_followers"/> - <field name="message_ids" widget="mail_thread"/> - </div> + </group> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" widget="mail_followers"/> + <field name="message_ids" widget="mail_thread"/> + </div> </form> </field> </record> @@ -257,16 +263,16 @@ </record> <menuitem id="menu_customer_rebate_acct" - name="Customer Rebate" - action="customer_rebate_action" - parent="account.menu_finance_entries" - sequence="114" + name="Customer Rebate" + action="customer_rebate_action" + parent="account.menu_finance_entries" + sequence="114" /> <menuitem id="menu_customer_rebate_sales" - name="Customer Rebate" - action="customer_rebate_action" - parent="sale.product_menu_catalog" - sequence="102" + name="Customer Rebate" + action="customer_rebate_action" + parent="sale.product_menu_catalog" + sequence="102" /> </odoo>
\ No newline at end of file |
