summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/automatic_purchase.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-12-19 09:32:09 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-12-19 09:32:09 +0700
commite2086bc4f96391260fb3430537feddbc25bdde40 (patch)
tree4a516ec9ae025723c0d2bd311fd9cbbcf561dcba /indoteknik_custom/models/automatic_purchase.py
parent7099c4615aa3435273839c49ceee121306fec84d (diff)
over to nathan
Diffstat (limited to 'indoteknik_custom/models/automatic_purchase.py')
-rw-r--r--indoteknik_custom/models/automatic_purchase.py51
1 files changed, 48 insertions, 3 deletions
diff --git a/indoteknik_custom/models/automatic_purchase.py b/indoteknik_custom/models/automatic_purchase.py
index 438d365f..a7b24b4f 100644
--- a/indoteknik_custom/models/automatic_purchase.py
+++ b/indoteknik_custom/models/automatic_purchase.py
@@ -26,6 +26,18 @@ class AutomaticPurchase(models.Model):
('reordering', 'Reordering Rule'),
], string='Type', tracking=3)
sales_match = fields.One2many('automatic.purchase.sales.match', 'automatic_purchase_id', string='SO Matches', auto_join=True)
+ total_qty_line = fields.Float(string='Total Qty Line', compute='_compute_total_qty')
+ total_qty_so = fields.Float(string='Total Qty SO', compute='_compute_total_qty')
+
+ def _compute_total_qty(self):
+ for data in self:
+ qty_line = qty_so = 0
+ for line in self.purchase_lines:
+ qty_line = qty_line + line.qty_purchase
+ for line in self.sales_match:
+ qty_so = qty_so + line.qty_so
+ data.total_qty_line = qty_line
+ data.total_qty_so = qty_so
@api.model
def create(self, vals):
@@ -140,6 +152,33 @@ class AutomaticPurchase(models.Model):
count += 1
_logger.info('Create Automatic Purchase Line %s' % job.product_id.name)
self.notification = "Automatic PO Created %s Lines" % count
+ self._create_sales_matching()
+ print(1)
+
+ def _create_sales_matching(self):
+ for line in self.purchase_lines:
+ domain = [
+ ('product_id', '=', line.product_id.id)
+ ]
+ sales = self.env['v.sales.outstanding'].search(domain)
+ for sale in sales:
+ if line.qty_purchase > sale.outgoing:
+ qty_po = sale.outgoing
+ else:
+ qty_po = line.qty_purchase
+ self.env['automatic.purchase.sales.match'].create([{
+ 'automatic_purchase_id': self.id,
+ 'sale_id': sale.sale_id.id,
+ 'sale_line_id': sale.sale_line_id.id,
+ 'picking_id': sale.picking_id.id,
+ 'move_id': sale.move_id.id,
+ 'partner_id': sale.partner_id.id,
+ 'partner_invoice_id': sale.partner_invoice_id.id,
+ 'salesperson_id': sale.salesperson_id.id,
+ 'product_id': sale.product_id.id,
+ 'qty_so': sale.outgoing,
+ 'qty_po': qty_po,
+ }])
print(1)
def generate_automatic_purchase(self):
@@ -261,8 +300,14 @@ class AutomaticPurchaseSalesMatch(models.Model):
_order = 'automatic_purchase_id, id'
automatic_purchase_id = fields.Many2one('automatic.purchase', string='Ref', required=True, ondelete='cascade', index=True, copy=False)
+ automatic_purchase_line_id = fields.Many2one('automatic.purchase.line', string='Automatic Line')
sale_id = fields.Many2one('sale.order', string='SO')
- partner_id = fields.Many2one('res.partner', string='Customer')
- salesperson_id = fields.Many2one('res.user', string='Sales')
+ sale_line_id = fields.Many2one('sale.order.line', string='SO Line')
+ picking_id = fields.Many2one('stock.picking', string='Picking')
+ move_id = fields.Many2one('stock.move', string='Move')
+ partner_id = fields.Many2one('res.partner', string='Partner')
+ partner_invoice_id = fields.Many2one('res.partner', string='Invoice Partner')
+ salesperson_id = fields.Many2one('res.users', string='Sales')
product_id = fields.Many2one('product.product', string='Product')
- qty_so = fields.Float(string='Qty')
+ qty_so = fields.Float(string='Qty SO')
+ qty_po = fields.Float(string='Qty PO')