diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2026-03-12 11:58:40 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2026-03-12 11:58:40 +0700 |
| commit | bdd80a44d2a69e35f0de3e20c378e17179679498 (patch) | |
| tree | 0f4b358a50c77fa9d7455c8f2386e221e7bacbf1 | |
| parent | b0583d9afe66887e53aa2ea80f1701b892fbf67f (diff) | |
push
| -rwxr-xr-x | indoteknik_custom/models/purchase_order.py | 16 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 4 |
2 files changed, 11 insertions, 9 deletions
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py index d83c0336..8c650fc5 100755 --- a/indoteknik_custom/models/purchase_order.py +++ b/indoteknik_custom/models/purchase_order.py @@ -687,17 +687,17 @@ class PurchaseOrder(models.Model): rec.sync_date_planned_to_so() def sync_date_planned_to_so(self): - for line in self.order_sales_match_line: - other_sales_match = self.env['purchase.order.sales.match'].search([ + for line in self.forecast_line_ids: + forecast = self.env['sale.forecast.coverage'].search([ # ('product_id', '=', line.product_id.id), - ('sale_id', '=', line.sale_id.id), + ('purchase_order_id', '=', line.order_id.id), # ('sale_line_id', '=', line.sale_line_id.id) ]) - dates = [d for d in other_sales_match.mapped('purchase_order_id.date_planned') if d] + dates = [d for d in line.mapped('order_id.date_planned') if d] if dates: date_planned = max(dates) - line.sale_id.write({'et_products': date_planned, 'reason_change_date_planned': line.purchase_order_id.reason_change_date_planned}) + forecast.sale_id.write({'et_products': date_planned, 'reason_change_date_planned': line.order_id.reason_change_date_planned}) @api.depends('name') def _compute_bu_related_count(self): @@ -1585,7 +1585,7 @@ class PurchaseOrder(models.Model): if '/PJ/' in self.name: price_change_detected = any(line.price_unit_before for line in self.order_line) if price_change_detected: - if self.order_sales_match_line: + if self.forecast_line_ids: if self.total_percent_margin <= 15.0: raise UserError("Approval Pimpinan diperlukan jika terdapat perubahan Unit Price pada PO Line dan Memiliki Margin <= 15%") @@ -1869,10 +1869,10 @@ class PurchaseOrder(models.Model): so_line.purchase_price = line.price_unit def re_calculate_from_apo(self): - for line in self.order_sales_match_line: + for line in self.forecast_line_ids: order_line = self.env['purchase.order.line'].search([ ('product_id', '=', line.product_id.id), - ('order_id', '=', line.purchase_order_id.id) + ('order_id', '=', line.order_id.id) ], limit=1) line.sale_line_id.purchase_price = order_line.price_unit diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 042cd483..722dc37a 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -524,6 +524,7 @@ class SaleOrder(models.Model): 'forecast_qty': l.get('quantity'), 'receipt_date': receipt_date, 'document_in_name': supply_name, + 'purchase_order_id': doc_in.id, 'reservation': bool(l.get('reservation')), 'is_late': bool(l.get('is_late')), 'replenishment_filled': bool(l.get('replenishment_filled')), @@ -572,7 +573,7 @@ class SaleOrder(models.Model): 'delivery_date': l.get('delivery_date'), 'document_in_name': doc_in.display_name if doc_in else '', 'document_in_model': doc_in._name if doc_in else '', - 'document_in_id': doc_in.id if doc_in else False, + 'purchase_order_id': doc_in.id if doc_in else False, 'document_out_exists': bool(doc_out), 'reservation': bool(l.get('reservation')), 'is_late': bool(l.get('is_late')), @@ -4026,6 +4027,7 @@ class SaleForecastCoverage(models.Model): sale_line_id = fields.Many2one('sale.order.line', index=True) product_id = fields.Many2one('product.product') + purchase_order_id = fields.Many2one('purchase.order') so_qty = fields.Float() reserved_qty = fields.Float() |
