diff --git a/purchase_stock_usability/__manifest__.py b/purchase_stock_usability/__manifest__.py index 066d0f05..e7276abb 100644 --- a/purchase_stock_usability/__manifest__.py +++ b/purchase_stock_usability/__manifest__.py @@ -23,6 +23,7 @@ 'purchase_usability', ], 'data': [ + 'views/purchase_order_views.xml', 'views/stock_picking.xml', ], 'installable': True, diff --git a/purchase_stock_usability/i18n/fr.po b/purchase_stock_usability/i18n/fr.po new file mode 100644 index 00000000..bb8aa100 --- /dev/null +++ b/purchase_stock_usability/i18n/fr.po @@ -0,0 +1,105 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_stock_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-09-10 09:06+0000\n" +"PO-Revision-Date: 2021-09-10 09:06+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__picking_type_id +msgid "Deliver To" +msgstr "Livrer à" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__received +msgid "Fully Received" +msgstr "Entièrement reçue" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__id +msgid "ID" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__incoterm_id +msgid "Incoterm" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__incoterm_id +msgid "" +"International Commercial Terms are a series of predefined commercial terms " +"used in international transactions." +msgstr "" +"Les Incoterms sont une série prédéfinie de termes commerciaux utilisés dans " +"les transactions internationales." + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__no +msgid "Nothing to Receive" +msgstr "Rien à recevoir" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__partially_received +msgid "Partially Received" +msgstr "Partiellement reçue" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__picking_status +msgid "Picking Status" +msgstr "Statut de la réception" + +#. module: purchase_stock_usability +#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search +msgid "Pickings fully received" +msgstr "Entièrement reçues" + +#. module: purchase_stock_usability +#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search +msgid "Pickings partially received" +msgstr "Partiellement reçues" + +#. module: purchase_stock_usability +#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search +msgid "Pickings to receive" +msgstr "À recevoir" + +#. module: purchase_stock_usability +#: model:ir.model,name:purchase_stock_usability.model_purchase_order +msgid "Purchase Order" +msgstr "Commande fournisseur" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__cancel +msgid "Receipt Cancelled" +msgstr "Réception annulée" + +#. module: purchase_stock_usability +#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id +msgid "This will determine operation type of incoming shipment" +msgstr "Cela déterminera le type d'opération des réceptions" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__to_receive +msgid "To Receive" +msgstr "À recevoir" diff --git a/purchase_stock_usability/i18n/purchase_stock_usability.pot b/purchase_stock_usability/i18n/purchase_stock_usability.pot new file mode 100644 index 00000000..4fd23f4b --- /dev/null +++ b/purchase_stock_usability/i18n/purchase_stock_usability.pot @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_stock_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-09-10 09:06+0000\n" +"PO-Revision-Date: 2021-09-10 09:06+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__picking_type_id +msgid "Deliver To" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__received +msgid "Fully Received" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__id +msgid "ID" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__incoterm_id +msgid "Incoterm" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__incoterm_id +msgid "" +"International Commercial Terms are a series of predefined commercial terms " +"used in international transactions." +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__no +msgid "Nothing to Receive" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__partially_received +msgid "Partially Received" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__picking_status +msgid "Picking Status" +msgstr "" + +#. module: purchase_stock_usability +#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search +msgid "Pickings fully received" +msgstr "" + +#. module: purchase_stock_usability +#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search +msgid "Pickings partially received" +msgstr "" + +#. module: purchase_stock_usability +#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search +msgid "Pickings to receive" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model,name:purchase_stock_usability.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__cancel +msgid "Receipt Cancelled" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id +msgid "This will determine operation type of incoming shipment" +msgstr "" + +#. module: purchase_stock_usability +#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__to_receive +msgid "To Receive" +msgstr "" diff --git a/purchase_stock_usability/models/purchase.py b/purchase_stock_usability/models/purchase.py index 655fa956..8f71ddd0 100644 --- a/purchase_stock_usability/models/purchase.py +++ b/purchase_stock_usability/models/purchase.py @@ -10,6 +10,44 @@ class PurchaseOrder(models.Model): picking_type_id = fields.Many2one(tracking=True) incoterm_id = fields.Many2one(tracking=True) + picking_status = fields.Selection([ + ('received', 'Fully Received'), + ('partially_received', 'Partially Received'), + ('to_receive', 'To Receive'), + ('cancel', 'Receipt Cancelled'), + ('no', 'Nothing to Receive') + ], string='Picking Status', compute='_compute_picking_status', + store=True) + + @api.depends('state', 'picking_ids.state') + def _compute_picking_status(self): + """ + Compute the picking status for the PO. Possible statuses: + - no: if the PO is not in status 'purchase' nor 'done', we consider that + there is nothing to receive. This is also the default value if the + conditions of no other status is met. + - cancel: all pickings are cancelled + - received: if all pickings are done or cancel. + - partially_received: If at least one picking is done. + - to_receive: if all pickings are in confirmed, assigned, waiting or + cancel state. + """ + for order in self: + picking_status = 'no' + if order.state in ('purchase', 'done') and order.picking_ids: + pstates = [ + picking.state for picking in order.picking_ids] + if all([state == 'cancel' for state in pstates]): + picking_status = 'cancel' + elif all([state in ('done', 'cancel') for state in pstates]): + picking_status = 'received' + elif any([state == 'done' for state in pstates]): + picking_status = 'partially_received' + elif all([ + state in ('confirmed', 'assigned', 'waiting', 'cancel') + for state in pstates]): + picking_status = 'to_receive' + order.picking_status = picking_status # inherit compute method of the field delivery_partner_id # defined in purchase_usability diff --git a/purchase_stock_usability/views/purchase_order_views.xml b/purchase_stock_usability/views/purchase_order_views.xml new file mode 100644 index 00000000..3707130a --- /dev/null +++ b/purchase_stock_usability/views/purchase_order_views.xml @@ -0,0 +1,27 @@ + + + + purchase.order.view.tree (in purchase_stock_usability) + purchase.order + + + + + + + + + + purchase.order.select (in purchase_stock_usability) + purchase.order + + + + + + + + + + +