From 3751379f1e9a4c215fb6eb898b4ccc67659b9ace Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 21:51:50 +0700 Subject: initial commit 2 --- addons/mrp_product_expiry/wizard/__init__.py | 4 ++ addons/mrp_product_expiry/wizard/confirm_expiry.py | 44 ++++++++++++++++++++++ .../wizard/confirm_expiry_view.xml | 42 +++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 addons/mrp_product_expiry/wizard/__init__.py create mode 100644 addons/mrp_product_expiry/wizard/confirm_expiry.py create mode 100644 addons/mrp_product_expiry/wizard/confirm_expiry_view.xml (limited to 'addons/mrp_product_expiry/wizard') diff --git a/addons/mrp_product_expiry/wizard/__init__.py b/addons/mrp_product_expiry/wizard/__init__.py new file mode 100644 index 00000000..e6eb849c --- /dev/null +++ b/addons/mrp_product_expiry/wizard/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import confirm_expiry diff --git a/addons/mrp_product_expiry/wizard/confirm_expiry.py b/addons/mrp_product_expiry/wizard/confirm_expiry.py new file mode 100644 index 00000000..df65be83 --- /dev/null +++ b/addons/mrp_product_expiry/wizard/confirm_expiry.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ + + +class ConfirmExpiry(models.TransientModel): + _inherit = 'expiry.picking.confirmation' + + production_ids = fields.Many2many('mrp.production', readonly=True) + workorder_id = fields.Many2one('mrp.workorder', readonly=True) + + @api.depends('lot_ids') + def _compute_descriptive_fields(self): + if self.production_ids or self.workorder_id: + # Shows expired lots only if we are more than one expired lot. + self.show_lots = len(self.lot_ids) > 1 + if self.show_lots: + # For multiple expired lots, they are listed in the wizard view. + self.description = _( + "You are going to use some expired components." + "\nDo you confirm you want to proceed ?" + ) + else: + # For one expired lot, its name is written in the wizard message. + self.description = _( + "You are going to use the component %(product_name)s, %(lot_name)s which is expired." + "\nDo you confirm you want to proceed ?", + product_name=self.lot_ids.product_id.display_name, + lot_name=self.lot_ids.name, + ) + else: + super(ConfirmExpiry, self)._compute_descriptive_fields() + + def confirm_produce(self): + ctx = dict(self._context, skip_expired=True) + ctx.pop('default_lot_ids') + return self.production_ids.with_context(ctx).button_mark_done() + + def confirm_workorder(self): + ctx = dict(self._context, skip_expired=True) + ctx.pop('default_lot_ids') + return self.workorder_id.with_context(ctx).record_production() + diff --git a/addons/mrp_product_expiry/wizard/confirm_expiry_view.xml b/addons/mrp_product_expiry/wizard/confirm_expiry_view.xml new file mode 100644 index 00000000..5256ebd2 --- /dev/null +++ b/addons/mrp_product_expiry/wizard/confirm_expiry_view.xml @@ -0,0 +1,42 @@ + + + + Confirm + expiry.picking.confirmation + + + + + + + + + {'invisible': [('picking_ids', '=', [])]} + + + {'invisible': [('picking_ids', '=', [])]} + + + {'invisible': [('production_ids', '!=', [])]} + + + +