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.py25
1 files changed, 22 insertions, 3 deletions
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index 32a7d9dd..dae1c6a4 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -252,14 +252,24 @@ class AutomaticPurchase(models.Model):
'suggest': product._get_po_suggest(line.qty_purchase),
'product_uom_qty': line.qty_purchase,
'price_unit': line.last_price,
+ 'taxes_id': [line.taxes_id.id] if line.taxes_id else None,
# 'so_line_id': [sales.sale_line_id.id for sales in sales_match],
}
new_po_line = self.env['purchase.order.line'].create([param_line])
line.current_po_id = new_po.id
line.current_po_line_id = new_po_line.id
+ self.update_purchase_price_so_line(line)
self.create_purchase_order_sales_match(new_po)
+ def update_purchase_price_so_line(self, apo):
+ sales_match = self.env['automatic.purchase.sales.match'].search([
+ ('automatic_purchase_id', '=', self.id),
+ ('product_id', '=', apo.product_id.id),
+ ])
+
+ 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]
@@ -338,6 +348,7 @@ class AutomaticPurchase(models.Model):
purchase_pricelist = self.env['purchase.pricelist'].search(domain, order=orderby, limit=1)
vendor_id = purchase_pricelist.vendor_id
+ taxes = ''
price, taxes = automatic_purchase._get_valid_purchase_price(purchase_pricelist)
last_po_line = self.env['purchase.order.line'].search([('product_id', '=', job.product_id.id), ('order_id.state', '=', 'done')], order='id desc', limit=1)
@@ -359,7 +370,8 @@ class AutomaticPurchase(models.Model):
automatic_purchase.notification = "Automatic PO Created %s Lines" % count
automatic_purchase._create_sales_matching()
automatic_purchase._create_sync_purchasing_job(jobs)
- print(1)
+
+ return automatic_purchase.id
def _create_sales_matching(self):
for line in self.purchase_lines:
@@ -374,6 +386,10 @@ class AutomaticPurchase(models.Model):
('product_id', '=', sale.product_id.id),
])
+ price_so = self.env['sale.order.line'].search([
+ ('id', '=', sale.sale_line_id.id),
+ ])
+
if existing_match:
continue
@@ -389,6 +405,8 @@ class AutomaticPurchase(models.Model):
'product_id': sale.product_id.id,
'qty_so': sale.outgoing,
'qty_po': line.qty_purchase,
+ 'purchase_price': price_so.purchase_price,
+ 'purchase_tax_id': price_so.purchase_tax_id.id if price_so.purchase_tax_id.id else None,
}])
def _create_sync_purchasing_job(self, jobs):
@@ -467,7 +485,7 @@ class AutomaticPurchase(models.Model):
def _get_valid_purchase_price(self, purchase_price):
price = 0
- taxes = None
+ taxes = ''
human_last_update = purchase_price.human_last_update or datetime.min
system_last_update = purchase_price.system_last_update or datetime.min
@@ -540,7 +558,8 @@ class AutomaticPurchaseSalesMatch(models.Model):
product_id = fields.Many2one('product.product', string='Product')
qty_so = fields.Float(string='Qty SO')
qty_po = fields.Float(string='Qty PO')
-
+ purchase_price = fields.Float(string='Purchase Price SO')
+ purchase_tax_id = fields.Many2one('account.tax', string='Tax', domain=['|', ('active', '=', False), ('active', '=', True)])
class SyncPurchasingJob(models.Model):
_name = 'sync.purchasing.job'