diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2023-12-19 09:32:09 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2023-12-19 09:32:09 +0700 |
| commit | e2086bc4f96391260fb3430537feddbc25bdde40 (patch) | |
| tree | 4a516ec9ae025723c0d2bd311fd9cbbcf561dcba /indoteknik_custom/models/automatic_purchase.py | |
| parent | 7099c4615aa3435273839c49ceee121306fec84d (diff) | |
over to nathan
Diffstat (limited to 'indoteknik_custom/models/automatic_purchase.py')
| -rw-r--r-- | indoteknik_custom/models/automatic_purchase.py | 51 |
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') |
