summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/automatic_purchase.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/automatic_purchase.py')
-rw-r--r--indoteknik_custom/models/automatic_purchase.py230
1 files changed, 115 insertions, 115 deletions
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index f7c0d75e..8e817409 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -291,7 +291,7 @@ class AutomaticPurchase(models.Model):
line.current_po_id = new_po.id
line.current_po_line_id = new_po_line.id
- self.create_purchase_order_sales_match(new_po)
+ # self.create_purchase_order_sales_match(new_po)
@@ -304,146 +304,146 @@ class AutomaticPurchase(models.Model):
for sales in sales_match:
sales.sale_line_id.purchase_price = apo.last_price
- def create_purchase_order_sales_match(self, purchase_order):
- matches_so_product_ids = [line.product_id.id for line in purchase_order.order_line]
-
- matches_so = self.env['v.sale.notin.matchpo'].search([
- ('automatic_purchase_id', '=', self.id),
- ('sale_line_id.product_id', 'in', matches_so_product_ids),
- ])
-
- sale_ids_set = set()
- sale_ids_name = set()
- retur_cache = {}
- incoming_cache = {}
- for sale_order in matches_so:
- exist = self.env['purchase.order.sales.match'].search([
- ('product_id', '=', sale_order.product_id.id),
- ('sale_line_id', '=', sale_order.sale_line_id.id),
- ('sale_id', '=', sale_order.sale_id.id),
- ('purchase_order_id.state', '!=', 'cancel'),
- ])
+ # def create_purchase_order_sales_match(self, purchase_order):
+ # matches_so_product_ids = [line.product_id.id for line in purchase_order.order_line]
+
+ # matches_so = self.env['v.sale.notin.matchpo'].search([
+ # ('automatic_purchase_id', '=', self.id),
+ # ('sale_line_id.product_id', 'in', matches_so_product_ids),
+ # ])
+
+ # sale_ids_set = set()
+ # sale_ids_name = set()
+ # retur_cache = {}
+ # incoming_cache = {}
+ # for sale_order in matches_so:
+ # exist = self.env['purchase.order.sales.match'].search([
+ # ('product_id', '=', sale_order.product_id.id),
+ # ('sale_line_id', '=', sale_order.sale_line_id.id),
+ # ('sale_id', '=', sale_order.sale_id.id),
+ # ('purchase_order_id.state', '!=', 'cancel'),
+ # ])
- skip_line = False
+ # skip_line = False
- sale_line_id = sale_order.sale_line_id.id
+ # sale_line_id = sale_order.sale_line_id.id
- if sale_line_id not in incoming_cache:
+ # if sale_line_id not in incoming_cache:
- qty_incoming = 0
+ # qty_incoming = 0
- for existing in exist:
- if existing.purchase_order_id.state in ['done', 'purchase']:
+ # for existing in exist:
+ # if existing.purchase_order_id.state in ['done', 'purchase']:
- incoming_moves = self.env['stock.move'].search([
- ('reference', 'ilike', 'BU/INPUT'),
- ('state', 'not in', ['done','cancel']),
- ('product_id', '=', existing.product_id.id),
- ('purchase_line_id', '=', existing.purchase_line_id.id),
- ])
+ # incoming_moves = self.env['stock.move'].search([
+ # ('reference', 'ilike', 'BU/INPUT'),
+ # ('state', 'not in', ['done','cancel']),
+ # ('product_id', '=', existing.product_id.id),
+ # ('purchase_line_id', '=', existing.purchase_line_id.id),
+ # ])
- qty_incoming += sum(incoming_moves.mapped('product_uom_qty'))
+ # qty_incoming += sum(incoming_moves.mapped('product_uom_qty'))
- incoming_cache[sale_line_id] = qty_incoming
+ # incoming_cache[sale_line_id] = qty_incoming
- qty_need = sale_order.sale_line_id.product_uom_qty
+ # qty_need = sale_order.sale_line_id.product_uom_qty
- if incoming_cache[sale_line_id] >= qty_need:
- skip_line = True
+ # if incoming_cache[sale_line_id] >= qty_need:
+ # skip_line = True
- sale_line_id = sale_order.sale_line_id.id
+ # sale_line_id = sale_order.sale_line_id.id
- if sale_line_id not in retur_cache:
+ # if sale_line_id not in retur_cache:
- fully_received = True
+ # fully_received = True
- for existing in exist:
- if existing.purchase_order_id.state in ['done', 'purchase']:
+ # for existing in exist:
+ # if existing.purchase_order_id.state in ['done', 'purchase']:
- if existing.purchase_line_id.qty_received != existing.purchase_line_id.product_qty:
- fully_received = False
- break
+ # if existing.purchase_line_id.qty_received != existing.purchase_line_id.product_qty:
+ # fully_received = False
+ # break
- retur_cache[sale_line_id] = fully_received
+ # retur_cache[sale_line_id] = fully_received
- if retur_cache[sale_line_id] and exist:
- skip_line = True
+ # if retur_cache[sale_line_id] and exist:
+ # skip_line = True
- if skip_line:
- continue
+ # if skip_line:
+ # continue
- stock_move = self.env['stock.move'].search([
- ('reference', 'ilike', 'BU/PICK'),
- ('state', 'in', ['confirmed','waiting','partially_available']),
- ('product_id', '=', sale_order.product_id.id),
- ('sale_line_id', '=', sale_order.sale_line_id.id),
- ])
- if not stock_move:
- continue
- # @stephan skip so line yang sudah pernah ada di purchase order sales match sebelumnya
+ # stock_move = self.env['stock.move'].search([
+ # ('reference', 'ilike', 'BU/PICK'),
+ # ('state', 'in', ['confirmed','waiting','partially_available']),
+ # ('product_id', '=', sale_order.product_id.id),
+ # ('sale_line_id', '=', sale_order.sale_line_id.id),
+ # ])
+ # if not stock_move:
+ # continue
+ # # @stephan skip so line yang sudah pernah ada di purchase order sales match sebelumnya
- salesperson_name = sale_order.sale_id.user_id.name
+ # salesperson_name = sale_order.sale_id.user_id.name
- sale_id_with_salesperson = f"{sale_order.sale_id.name} - {salesperson_name}"
+ # sale_id_with_salesperson = f"{sale_order.sale_id.name} - {salesperson_name}"
- sale_ids_set.add(sale_id_with_salesperson)
- sale_ids_name.add(sale_order.sale_id.name)
-
- margin_item = sale_order.sale_line_id.item_margin / sale_order.qty_so if sale_order.qty_so else 0
- margin_item = margin_item * sale_order.qty_po
-
- matches_so_line = {
- 'purchase_order_id': purchase_order.id,
- 'sale_id': sale_order.sale_id.id,
- 'sale_line_id': sale_order.sale_line_id.id,
- 'picking_id': sale_order.picking_id.id,
- 'move_id': sale_order.move_id.id,
- 'partner_id': sale_order.partner_id.id,
- 'partner_invoice_id': sale_order.partner_invoice_id.id,
- 'salesperson_id': sale_order.salesperson_id.id,
- 'product_id': sale_order.product_id.id,
- 'qty_so': sale_order.qty_so,
- 'qty_po': sale_order.qty_po,
- 'margin_so': sale_order.sale_line_id.item_percent_margin,
- 'margin_item': margin_item
- }
- po_matches_so_line = self.env['purchase.order.sales.match'].create([matches_so_line])
-
- sale_ids_str = ','.join(sale_ids_set)
- sale_ids_str_name = ','.join(sale_ids_name)
-
- purchase_order.sale_order = sale_ids_str_name
- purchase_order.notes = sale_ids_str
+ # sale_ids_set.add(sale_id_with_salesperson)
+ # sale_ids_name.add(sale_order.sale_id.name)
+
+ # margin_item = sale_order.sale_line_id.item_margin / sale_order.qty_so if sale_order.qty_so else 0
+ # margin_item = margin_item * sale_order.qty_po
+
+ # matches_so_line = {
+ # 'purchase_order_id': purchase_order.id,
+ # 'sale_id': sale_order.sale_id.id,
+ # 'sale_line_id': sale_order.sale_line_id.id,
+ # 'picking_id': sale_order.picking_id.id,
+ # 'move_id': sale_order.move_id.id,
+ # 'partner_id': sale_order.partner_id.id,
+ # 'partner_invoice_id': sale_order.partner_invoice_id.id,
+ # 'salesperson_id': sale_order.salesperson_id.id,
+ # 'product_id': sale_order.product_id.id,
+ # 'qty_so': sale_order.qty_so,
+ # 'qty_po': sale_order.qty_po,
+ # 'margin_so': sale_order.sale_line_id.item_percent_margin,
+ # 'margin_item': margin_item
+ # }
+ # po_matches_so_line = self.env['purchase.order.sales.match'].create([matches_so_line])
+
+ # sale_ids_str = ','.join(sale_ids_set)
+ # sale_ids_str_name = ','.join(sale_ids_name)
+
+ # purchase_order.sale_order = sale_ids_str_name
+ # purchase_order.notes = sale_ids_str
- self.create_sales_order_purchase_match(purchase_order)
+ # self.create_sales_order_purchase_match(purchase_order)
- def create_sales_order_purchase_match(self, purchase_order):
- #TODO add matches po to sales order by automatic_purchase.sales.match
- matches_po_product_ids = [line.product_id.id for line in purchase_order.order_line]
-
- sales_match_line = self.env['automatic.purchase.sales.match'].search([
- ('automatic_purchase_id', '=', self.id),
- ('sale_line_id.product_id', 'in', matches_po_product_ids),
- ])
-
- for sales_match in sales_match_line:
- purchase_line = self.env['automatic.purchase.line'].search([
- ('automatic_purchase_id', '=', self.id),
- ('product_id', 'in', [sales_match.product_id.id]),
- ], limit=1)
-
- matches_po_line = {
- 'sales_order_id' : sales_match.sale_id.id,
- 'purchase_order_id' : purchase_line.current_po_id.id,
- 'purchase_line_id' : purchase_line.current_po_line_id.id,
- 'product_id' : sales_match.product_id.id,
- 'qty_so' : sales_match.qty_so,
- 'qty_po' : sales_match.qty_po,
- }
-
- sales_order_purchase_match = self.env['sales.order.purchase.match'].create([matches_po_line])
+ # def create_sales_order_purchase_match(self, purchase_order):
+ # #TODO add matches po to sales order by automatic_purchase.sales.match
+ # matches_po_product_ids = [line.product_id.id for line in purchase_order.order_line]
+
+ # sales_match_line = self.env['automatic.purchase.sales.match'].search([
+ # ('automatic_purchase_id', '=', self.id),
+ # ('sale_line_id.product_id', 'in', matches_po_product_ids),
+ # ])
+
+ # for sales_match in sales_match_line:
+ # purchase_line = self.env['automatic.purchase.line'].search([
+ # ('automatic_purchase_id', '=', self.id),
+ # ('product_id', 'in', [sales_match.product_id.id]),
+ # ], limit=1)
+
+ # matches_po_line = {
+ # 'sales_order_id' : sales_match.sale_id.id,
+ # 'purchase_order_id' : purchase_line.current_po_id.id,
+ # 'purchase_line_id' : purchase_line.current_po_line_id.id,
+ # 'product_id' : sales_match.product_id.id,
+ # 'qty_so' : sales_match.qty_so,
+ # 'qty_po' : sales_match.qty_po,
+ # }
+
+ # sales_order_purchase_match = self.env['sales.order.purchase.match'].create([matches_po_line])
def generate_regular_purchase(self, jobs):
current_time = datetime.utcnow()