summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-07-25 09:29:30 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-07-25 09:29:30 +0700
commit3a571c8004c9a1efc8e4a049b0d1e81b300ed4c9 (patch)
tree02dfc352d92ed4a700a763f13d3d924f1571fa3c
parent8660ae1111749b96bfcfe0ee950574eede9c50c6 (diff)
refactor margin po
-rwxr-xr-xindoteknik_custom/models/purchase_order.py34
1 files changed, 13 insertions, 21 deletions
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py
index 85d68874..0321c1bd 100755
--- a/indoteknik_custom/models/purchase_order.py
+++ b/indoteknik_custom/models/purchase_order.py
@@ -626,13 +626,10 @@ class PurchaseOrder(models.Model):
def compute_total_margin_from_apo(self):
sum_so_margin = sum_sales_price = sum_margin = 0
for line in self.order_sales_match_line:
- # Mencari purchase order line terkait
po_line = self.env['purchase.order.line'].search([
('product_id', '=', line.product_id.id),
('order_id', '=', line.purchase_order_id.id)
], limit=1)
-
- # Mencari sale order line terkait
sale_order_line = line.sale_line_id
if not sale_order_line:
sale_order_line = self.env['sale.order.line'].search([
@@ -640,30 +637,25 @@ class PurchaseOrder(models.Model):
('order_id', '=', line.sale_id.id)
], limit=1, order='price_reduce_taxexcl')
- # Menghitung margin per item
- if sale_order_line and po_line:
- so_margin = (line.qty_po / line.qty_so) * sale_order_line.item_margin
- sum_so_margin += so_margin
-
- sales_price = sale_order_line.price_reduce_taxexcl * line.qty_po
- if sale_order_line.order_id.shipping_cost_covered == 'indoteknik':
- sales_price -= (sale_order_line.delivery_amt_line / sale_order_line.product_uom_qty) * line.qty_po
- if sale_order_line.order_id.fee_third_party > 0:
- sales_price -= (sale_order_line.fee_third_party_line / sale_order_line.product_uom_qty) * line.qty_po
- sum_sales_price += sales_price
-
- purchase_price = po_line.price_subtotal / po_line.product_qty * line.qty_po
- if line.purchase_order_id.delivery_amount > 0:
- purchase_price += (po_line.delivery_amt_line / po_line.product_qty) * line.qty_po
- real_item_margin = sales_price - purchase_price
- sum_margin += real_item_margin
+ sum_so_margin += line.qty_po / line.qty_so * 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 * po_line.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
+ purchase_price = po_line.price_subtotal
+ if line.purchase_order_id.delivery_amount > 0:
+ purchase_price += po_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