summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2025-05-09 06:44:57 +0000
committerIT Fixcomart <it@fixcomart.co.id>2025-05-09 06:44:57 +0000
commiteaa804b51a5b3829bb62148ff198327230e06f7e (patch)
tree446b7dc7151ce5e7c5b22db11523cded6414de98 /indoteknik_custom/models
parent71717320da0bed245c18574345bbf7fd3c7d8627 (diff)
parent10d6ffad06f2dd89eca972257c2b9326d002949a (diff)
Merged in add_partner-customer-commision (pull request #299)
<miqdad> add partner group by in customer commision tree view
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/commision.py47
1 files changed, 44 insertions, 3 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: