diff options
Diffstat (limited to 'indoteknik_custom/models/commission_internal.py')
| -rw-r--r-- | indoteknik_custom/models/commission_internal.py | 84 |
1 files changed, 56 insertions, 28 deletions
diff --git a/indoteknik_custom/models/commission_internal.py b/indoteknik_custom/models/commission_internal.py index ce074bcc..bc668c28 100644 --- a/indoteknik_custom/models/commission_internal.py +++ b/indoteknik_custom/models/commission_internal.py @@ -2,6 +2,7 @@ from odoo import models, api, fields from odoo.exceptions import AccessError, UserError, ValidationError from datetime import timedelta, date import logging +import pandas as pd _logger = logging.getLogger(__name__) @@ -178,11 +179,14 @@ class CommissionInternal(models.Model): # fill later TODO @stephan def calculate_commission_internal_result(self): + exception = ['ONGKOS KIRIM SO/20'] query = [ ('commission_internal_id.id', '=', self.id), - ('helper2', '!=', False) + ('helper2', '!=', False), + ('helper1', 'not in', exception) ] lines = self.env['commission.internal.line'].search(query) + all_invoices_and_sales = [] for line in lines: list_so = list_invoice = [] list_key = line.helper2.split() @@ -202,7 +206,17 @@ class CommissionInternal(models.Model): 'salesperson': r.user_id.name, 'amount_untaxed': r.amount_untaxed, 'amount_tax': r.amount_tax, - 'amount_total': r.amount_total + 'amount_total': r.amount_total, + 'uang_masuk_line_id': line.account_move_line_id.id, + 'uang_masuk_id': line.account_move_id.id, + 'date_uang_masuk': line.date, + 'label_uang_masuk': line.label, + 'nomor_uang_masuk': line.number, + 'uang_masuk': line.balance, + # 'linenetamt_prorate': net_amount_prorate, + 'helper1': line.helper1, + 'commission_internal_id': line.commission_internal_id.id, + 'commission_internal_line_id': line.id, }) sale_data = orders.mapped(lambda r: { 'res_name': 'sale.order', @@ -213,34 +227,48 @@ class CommissionInternal(models.Model): 'salesperson': r.user_id.name, 'amount_untaxed': r.amount_untaxed, 'amount_tax': r.amount_tax, - 'amount_total': r.grand_total + 'amount_total': r.grand_total, + 'uang_masuk_line_id': line.account_move_line_id.id, + 'uang_masuk_id': line.account_move_id.id, + 'date_uang_masuk': line.date, + 'label_uang_masuk': line.label, + 'nomor_uang_masuk': line.number, + 'uang_masuk': line.balance, + # 'linenetamt_prorate': net_amount_prorate, + 'helper1': line.helper1, + 'commission_internal_id': line.commission_internal_id.id, + 'commission_internal_line_id': line.id, }) invoices_and_sales = invoice_data + sale_data - total_amount = sum(item.get('amount_total', 0.0) for item in invoices_and_sales) - for data in invoices_and_sales: - prorate = data.get('amount_total', 0.0) / total_amount - # net_amount_prorate = data.get('amount_total', 0.0) * prorate - net_amount_prorate = line.balance * prorate - self.env['commission.internal.result'].create([{ - 'commission_internal_id': line.commission_internal_id.id, - 'commission_internal_line_id': line.id, - 'date_doc': data['date'], - 'number': data['name'], - 'res_name': data['res_name'], - 'res_id': data['res_id'], - 'name': data['name'], - 'salesperson': data['salesperson'], - 'totalamt': data['amount_total'], - 'uang_masuk_line_id': line.account_move_line_id.id, - 'uang_masuk_id': line.account_move_id.id, - 'date_uang_masuk': line.date, - 'label_uang_masuk': line.label, - 'nomor_uang_masuk': line.number, - 'uang_masuk': line.balance, - 'linenetamt_prorate': net_amount_prorate, - 'helper1': line.helper1 - }]) - print(1) + sum_amount_total = sum(item['amount_total'] for item in invoices_and_sales) + for item in invoices_and_sales: + item['sum_amount_total'] = sum_amount_total + all_invoices_and_sales.extend(invoices_and_sales) + + for data in all_invoices_and_sales: + # total_amount = sum(item.get('amount_total', 0.0) for item in invoices_and_sales) + # net_amount_prorate = data.get('amount_total', 0.0) * prorate + prorate = data.get('amount_total', 0.0) / data.get('sum_amount_total', 0.0) + net_amount_prorate = data.get('uang_masuk', 0.0) * prorate + self.env['commission.internal.result'].create([{ + 'commission_internal_id': data['commission_internal_id'], + 'commission_internal_line_id': data['commission_internal_line_id'], + 'date_doc': data['date'], + 'number': data['name'], + 'res_name': data['res_name'], + 'res_id': data['res_id'], + 'name': data['name'], + 'salesperson': data['salesperson'], + 'totalamt': data['amount_total'], + 'uang_masuk_line_id': data['uang_masuk_line_id'], + 'uang_masuk_id': data['uang_masuk_id'], + 'date_uang_masuk': data['date_uang_masuk'], + 'label_uang_masuk': data['label_uang_masuk'], + 'nomor_uang_masuk': data['nomor_uang_masuk'], + 'uang_masuk': data['uang_masuk'], + 'linenetamt_prorate': net_amount_prorate, + 'helper1': data['helper1'] + }]) print(1) # this button / method works for train data in July 2025 |
