summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-04-17 14:02:31 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-04-17 14:02:31 +0700
commit1d09b9f466799ac4bcc04e4d55b10fb6bef23769 (patch)
tree06a3438e2d7475fc5cd17160eed057a95aa6325a
parentc00ab3e791509f9384b20162fe820be280801d3c (diff)
margin po
-rwxr-xr-xindoteknik_custom/models/purchase_order.py123
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