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.py53
1 files changed, 47 insertions, 6 deletions
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index 0b2f7d1b..f4ecdcd6 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -315,6 +315,53 @@ class AutomaticPurchase(models.Model):
sale_ids_set = set()
sale_ids_name = set()
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
+
+ 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:
+ # break
+
+ incoming = 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),
+ ], limit=1)
+
+ if incoming:
+ skip_line = True
+ break
+
+ retur = self.env['stock.move'].search([
+ ('reference', 'ilike', 'BU/INPUT'),
+ ('state', 'in', ['done']),
+ ('product_id', '=', existing.product_id.id),
+ ('purchase_line_id', '=', existing.purchase_line_id.id),
+ ], limit=1)
+
+ if retur and existing.purchase_line_id.qty_received == existing.purchase_line_id.product_qty:
+ skip_line = True
+ break
+
+ 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
salesperson_name = sale_order.sale_id.user_id.name
@@ -740,11 +787,5 @@ class SaleNotInMatchPO(models.Model):
apsm.create_date, apsm.write_uid, apsm.write_date, apsm.purchase_price,
apsm.purchase_tax_id, apsm.note_procurement
from automatic_purchase_sales_match apsm
- where apsm.sale_line_id not in (
- select distinct coalesce(posm.sale_line_id,0)
- from purchase_order_sales_match posm
- join purchase_order po on po.id = posm.purchase_order_id
- where po.state not in ('cancel')
- )
)
""" % self._table) \ No newline at end of file