diff --git a/fusion_plating/fusion_plating/__manifest__.py b/fusion_plating/fusion_plating/__manifest__.py index 73807f6e..481acfec 100644 --- a/fusion_plating/fusion_plating/__manifest__.py +++ b/fusion_plating/fusion_plating/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating', - 'version': '19.0.18.15.7', + 'version': '19.0.18.15.8', 'category': 'Manufacturing/Plating', 'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.', 'description': """ diff --git a/fusion_plating/fusion_plating/views/fp_job_views.xml b/fusion_plating/fusion_plating/views/fp_job_views.xml index ddc9633b..4f6f198a 100644 --- a/fusion_plating/fusion_plating/views/fp_job_views.xml +++ b/fusion_plating/fusion_plating/views/fp_job_views.xml @@ -43,6 +43,9 @@ + + + diff --git a/fusion_plating/fusion_plating_configurator/__manifest__.py b/fusion_plating/fusion_plating_configurator/__manifest__.py index 67aa5e18..9c4d5050 100644 --- a/fusion_plating/fusion_plating_configurator/__manifest__.py +++ b/fusion_plating/fusion_plating_configurator/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Fusion Plating — Configurator', - 'version': '19.0.18.10.1', + 'version': '19.0.18.10.2', 'category': 'Manufacturing/Plating', 'summary': 'Quotation configurator with part catalog, coating configs, and formula-based pricing engine.', 'description': """ diff --git a/fusion_plating/fusion_plating_configurator/models/sale_order_line.py b/fusion_plating/fusion_plating_configurator/models/sale_order_line.py index f272fb10..9a420184 100644 --- a/fusion_plating/fusion_plating_configurator/models/sale_order_line.py +++ b/fusion_plating/fusion_plating_configurator/models/sale_order_line.py @@ -684,3 +684,22 @@ class SaleOrderLine(models.Model): readonly=True, store=True, ) + + x_fc_delivery_method = fields.Selection( + related='order_id.x_fc_delivery_method', + string='Delivery Method', + readonly=True, + store=True, + ) + x_fc_ship_via = fields.Char( + related='order_id.x_fc_ship_via', + string='Ship Via', + readonly=True, + store=True, + ) + x_fc_invoice_strategy = fields.Selection( + related='order_id.x_fc_invoice_strategy', + string='Invoice Strategy', + readonly=True, + store=True, + ) diff --git a/fusion_plating/fusion_plating_jobs/__manifest__.py b/fusion_plating/fusion_plating_jobs/__manifest__.py index 0d7b7ab1..a0fbb61e 100644 --- a/fusion_plating/fusion_plating_jobs/__manifest__.py +++ b/fusion_plating/fusion_plating_jobs/__manifest__.py @@ -3,7 +3,7 @@ # License OPL-1 (Odoo Proprietary License v1.0) { 'name': 'Fusion Plating — Native Jobs', - 'version': '19.0.8.21.3', + 'version': '19.0.8.21.4', 'category': 'Manufacturing/Plating', 'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.', 'author': 'Nexa Systems Inc.', diff --git a/fusion_plating/fusion_plating_jobs/models/fp_job.py b/fusion_plating/fusion_plating_jobs/models/fp_job.py index c10d4df0..28fa0cfc 100644 --- a/fusion_plating/fusion_plating_jobs/models/fp_job.py +++ b/fusion_plating/fusion_plating_jobs/models/fp_job.py @@ -23,6 +23,26 @@ _logger = logging.getLogger(__name__) class FpJob(models.Model): _inherit = 'fp.job' + # ---- Tier 3 mirrors from sale.order ----------------------------- + # Related (not stored) — pure display mirrors. Values may change on + # the SO after job confirm (e.g. customer changes carrier preference) + # and the WO should reflect the latest; related auto-follows. + x_fc_delivery_method = fields.Selection( + related='sale_order_id.x_fc_delivery_method', + string='Delivery Method', + readonly=True, + ) + x_fc_ship_via = fields.Char( + related='sale_order_id.x_fc_ship_via', + string='Ship Via', + readonly=True, + ) + x_fc_invoice_strategy = fields.Selection( + related='sale_order_id.x_fc_invoice_strategy', + string='Invoice Strategy', + readonly=True, + ) + part_catalog_id = fields.Many2one( 'fp.part.catalog', string='Part',