diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-04-17 14:02:31 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-04-17 14:02:31 +0700 |
| commit | 1d09b9f466799ac4bcc04e4d55b10fb6bef23769 (patch) | |
| tree | 06a3438e2d7475fc5cd17160eed057a95aa6325a | |
| parent | c00ab3e791509f9384b20162fe820be280801d3c (diff) | |
margin po
| -rwxr-xr-x | indoteknik_custom/models/purchase_order.py | 123 |
1 files changed, 81 insertions, 42 deletions
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index d2393f16..a653738a 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -485,49 +485,31 @@ class PurchaseOrder(models.Model): self.total_so_percent_margin = 0 def compute_total_margin_from_apo(self): - purchase_price_dict = {} - - for lines in self.order_line: - product_id = lines.product_id.id - - if product_id not in purchase_price_dict: - purchase_price_dict[product_id] = lines.price_subtotal - - sum_so_margin = sum_sales_price = sum_margin = 0 - for line in self.order_sales_match_line: - sale_order_line = line.sale_line_id - - if not sale_order_line: - sale_order_line = self.env['sale.order.line'].search([ - ('product_id', '=', line.product_id.id), - ('order_id', '=', line.sale_id.id) - ], limit=1, order='price_reduce_taxexcl') - - sum_so_margin += sale_order_line.item_margin - - sales_price = sale_order_line.price_reduce_taxexcl * sale_order_line.product_uom_qty - # sales_price = sale_order_line.price_reduce_taxexcl * lines.product_qty - - if sale_order_line.order_id.shipping_cost_covered == 'indoteknik': - sales_price -= sale_order_line.delivery_amt_line - - if sale_order_line.order_id.fee_third_party > 0: - sales_price -= sale_order_line.fee_third_party_line - - sum_sales_price += sales_price - - product_id = sale_order_line.product_id.id - - purchase_price = purchase_price_dict.get(product_id, 0) - # purchase_price = lines.price_subtotal - if lines.order_id.delivery_amount > 0: - purchase_price += lines.delivery_amt_line - - if line.purchase_order_id.delivery_amount > 0: - purchase_price += line.delivery_amt_line + sum_so_margin = sum_sales_price = sum_margin = 0 + for line in self.order_sales_match_line: + sale_order_line = line.sale_line_id + if not sale_order_line: + sale_order_line = self.env['sale.order.line'].search([ + ('product_id', '=', line.product_id.id), + ('order_id', '=', line.sale_id.id) + ], limit=1, order='price_reduce_taxexcl') - real_item_margin = sales_price - purchase_price - sum_margin += real_item_margin + sum_so_margin += sale_order_line.item_margin + sales_price = sale_order_line.price_reduce_taxexcl * sale_order_line.product_uom_qty + if sale_order_line.order_id.shipping_cost_covered == 'indoteknik': + sales_price -= sale_order_line.delivery_amt_line + if sale_order_line.order_id.fee_third_party > 0: + sales_price -= sale_order_line.fee_third_party_line + sum_sales_price += sales_price + po_line = self.env['purchase.order.line'].search([ + ('product_id', '=', line.product_id.id), + ('order_id', '=', line.purchase_order_id.id) + ], limit=1) + purchase_price = po_line.price_subtotal + if line.purchase_order_id.delivery_amount > 0: + purchase_price += line.delivery_amt_line + real_item_margin = sales_price - purchase_price + sum_margin += real_item_margin if sum_so_margin != 0 and sum_sales_price != 0 and sum_margin != 0: self.total_so_margin = sum_so_margin @@ -540,6 +522,63 @@ class PurchaseOrder(models.Model): self.total_so_margin = 0 self.total_so_percent_margin = 0 + # def compute_total_margin_from_apo(self): + # purchase_price_dict = {} + + + # for line in self.order_sales_match_line: + # for lines in self.order_line: + # product_id = lines.product_id.id + + # if product_id not in purchase_price_dict: + # purchase_price_dict[product_id] = lines.price_subtotal + + # sum_so_margin = sum_sales_price = sum_margin = 0 + # sale_order_line = line.sale_line_id + + # if not sale_order_line: + # sale_order_line = self.env['sale.order.line'].search([ + # ('product_id', '=', line.product_id.id), + # ('order_id', '=', line.sale_id.id) + # ], limit=1, order='price_reduce_taxexcl') + + # sum_so_margin += sale_order_line.item_margin + + # sales_price = sale_order_line.price_reduce_taxexcl * line.qty_so + # # sales_price = sale_order_line.price_reduce_taxexcl * lines.product_qty + + # if sale_order_line.order_id.shipping_cost_covered == 'indoteknik': + # sales_price -= sale_order_line.delivery_amt_line + + # if sale_order_line.order_id.fee_third_party > 0: + # sales_price -= sale_order_line.fee_third_party_line + + # sum_sales_price += sales_price + + # product_id = sale_order_line.product_id.id + + # purchase_price = purchase_price_dict.get(product_id, 0) + # # purchase_price = lines.price_subtotal + # if lines.order_id.delivery_amount > 0: + # purchase_price += lines.delivery_amt_line + + # if line.purchase_order_id.delivery_amount > 0: + # purchase_price += line.delivery_amt_line + + # real_item_margin = sales_price - purchase_price + # sum_margin += real_item_margin + + # if sum_so_margin != 0 and sum_sales_price != 0 and sum_margin != 0: + # self.total_so_margin = sum_so_margin + # self.total_so_percent_margin = round((sum_so_margin / sum_sales_price), 2) * 100 + # self.total_margin = sum_margin + # self.total_percent_margin = round((sum_margin / sum_sales_price), 2) * 100 + # else: + # self.total_margin = 0 + # self.total_percent_margin = 0 + # self.total_so_margin = 0 + # self.total_so_percent_margin = 0 + def compute_amt_total_without_service(self): for order in self: sum_price_total = 0 |
