Compare commits

..

2 Commits

4 changed files with 84 additions and 144 deletions

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 14.0\n" "Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-02 09:56+0000\n" "POT-Creation-Date: 2021-09-10 09:06+0000\n"
"PO-Revision-Date: 2021-11-02 09:56+0000\n" "PO-Revision-Date: 2021-09-10 09:06+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -22,21 +22,16 @@ msgstr "Livrer à"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__display_name #: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__display_name
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line__display_name
msgid "Display Name" msgid "Display Name"
msgstr "Nom affiché" msgstr "Nom affiché"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__received #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__received
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__received
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search
msgid "Fully Received" msgid "Fully Received"
msgstr "Entièrement reçue" msgstr "Entièrement reçue"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__id #: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__id
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line__id
msgid "ID" msgid "ID"
msgstr "" msgstr ""
@@ -56,47 +51,49 @@ msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order____last_update #: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order____last_update
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line____last_update
msgid "Last Modified on" msgid "Last Modified on"
msgstr "Dernière modification le" msgstr "Dernière modification le"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__no #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__no
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__no
msgid "Nothing to Receive" msgid "Nothing to Receive"
msgstr "Rien à recevoir" msgstr "Rien à recevoir"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__partially_received #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__partially_received
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__partially_received
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search
msgid "Partially Received" msgid "Partially Received"
msgstr "Partiellement reçue" 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 #. module: purchase_stock_usability
#: model:ir.model,name:purchase_stock_usability.model_purchase_order #: model:ir.model,name:purchase_stock_usability.model_purchase_order
msgid "Purchase Order" msgid "Purchase Order"
msgstr "Commande fournisseur" msgstr "Commande fournisseur"
#. module: purchase_stock_usability
#: model:ir.model,name:purchase_stock_usability.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ligne de commande fournisseur"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__cancel #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__cancel
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__cancel
msgid "Receipt Cancelled" msgid "Receipt Cancelled"
msgstr "Réception annulée" msgstr "Réception annulée"
#. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__picking_status
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line__move_status
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
msgid "Reception Status"
msgstr "État de réception"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id #: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id
msgid "This will determine operation type of incoming shipment" msgid "This will determine operation type of incoming shipment"
@@ -104,8 +101,5 @@ msgstr "Cela déterminera le type d'opération des réceptions"
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__to_receive #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__to_receive
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__to_receive
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search
msgid "To Receive" msgid "To Receive"
msgstr "À recevoir" msgstr "À recevoir"

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 14.0\n" "Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-02 09:56+0000\n" "POT-Creation-Date: 2021-09-10 09:06+0000\n"
"PO-Revision-Date: 2021-11-02 09:56+0000\n" "PO-Revision-Date: 2021-09-10 09:06+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -22,21 +22,16 @@ msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__display_name #: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__display_name
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line__display_name
msgid "Display Name" msgid "Display Name"
msgstr "" msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__received #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__received
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__received
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search
msgid "Fully Received" msgid "Fully Received"
msgstr "" msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__id #: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__id
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line__id
msgid "ID" msgid "ID"
msgstr "" msgstr ""
@@ -54,47 +49,49 @@ msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order____last_update #: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order____last_update
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line____last_update
msgid "Last Modified on" msgid "Last Modified on"
msgstr "" msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__no #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__no
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__no
msgid "Nothing to Receive" msgid "Nothing to Receive"
msgstr "" msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__partially_received #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__partially_received
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__partially_received
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search
msgid "Partially Received" msgid "Partially Received"
msgstr "" 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 #. module: purchase_stock_usability
#: model:ir.model,name:purchase_stock_usability.model_purchase_order #: model:ir.model,name:purchase_stock_usability.model_purchase_order
msgid "Purchase Order" msgid "Purchase Order"
msgstr "" msgstr ""
#. module: purchase_stock_usability
#: model:ir.model,name:purchase_stock_usability.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__cancel #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__cancel
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__cancel
msgid "Receipt Cancelled" msgid "Receipt Cancelled"
msgstr "" msgstr ""
#. module: purchase_stock_usability
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order__picking_status
#: model:ir.model.fields,field_description:purchase_stock_usability.field_purchase_order_line__move_status
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
msgid "Reception Status"
msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id #: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id
msgid "This will determine operation type of incoming shipment" msgid "This will determine operation type of incoming shipment"
@@ -102,8 +99,5 @@ msgstr ""
#. module: purchase_stock_usability #. module: purchase_stock_usability
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__to_receive #: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order__picking_status__to_receive
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_status__to_receive
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_usability.purchase_order_view_search
msgid "To Receive" msgid "To Receive"
msgstr "" msgstr ""

View File

@@ -6,95 +6,59 @@ from odoo import api, fields, models
class PurchaseOrder(models.Model): class PurchaseOrder(models.Model):
_inherit = "purchase.order" _inherit = 'purchase.order'
picking_type_id = fields.Many2one(tracking=True) picking_type_id = fields.Many2one(tracking=True)
incoterm_id = fields.Many2one(tracking=True) incoterm_id = fields.Many2one(tracking=True)
picking_status = fields.Selection( picking_status = fields.Selection([
[ ('received', 'Fully Received'),
("received", "Fully Received"), ('partially_received', 'Partially Received'),
("partially_received", "Partially Received"), ('to_receive', 'To Receive'),
("to_receive", "To Receive"), ('cancel', 'Receipt Cancelled'),
("cancel", "Receipt Cancelled"), ('no', 'Nothing to Receive')
("no", "Nothing to Receive"), ], string='Picking Status', compute='_compute_picking_status',
], store=True)
string="Reception Status",
compute="_compute_picking_status",
store=True,
default="no",
)
@api.depends("state", "picking_ids.state") @api.depends('state', 'picking_ids.state')
def _compute_picking_status(self): 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: for order in self:
line_ids = order.order_line picking_status = 'no'
order.picking_status = line_ids.get_move_status() 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 # inherit compute method of the field delivery_partner_id
# defined in purchase_usability # defined in purchase_usability
@api.depends("dest_address_id", "picking_type_id") @api.depends('dest_address_id', 'picking_type_id')
def _compute_delivery_partner_id(self): def _compute_delivery_partner_id(self):
for o in self: for o in self:
delivery_partner_id = False delivery_partner_id = False
if o.dest_address_id: if o.dest_address_id:
delivery_partner_id = o.dest_address_id delivery_partner_id = o.dest_address_id
elif ( elif (
o.picking_type_id.warehouse_id o.picking_type_id.warehouse_id and
and o.picking_type_id.warehouse_id.partner_id o.picking_type_id.warehouse_id.partner_id):
):
delivery_partner_id = o.picking_type_id.warehouse_id.partner_id delivery_partner_id = o.picking_type_id.warehouse_id.partner_id
o.delivery_partner_id = delivery_partner_id o.delivery_partner_id = delivery_partner_id
class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"
move_status = fields.Selection(
[
("received", "Fully Received"),
("partially_received", "Partially Received"),
("to_receive", "To Receive"),
("cancel", "Receipt Cancelled"),
("no", "Nothing to Receive"),
],
string="Reception Status",
compute="_compute_move_status",
store=True,
default="no",
)
def get_move_status(self):
"""
Returns the reception status of the related lines stock moves.
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 stock moves are cancelled
- received: if all stock moves are done or cancel.
- partially_received: If at least one stock move is done.
- to_receive: if all stock moves are in confirmed, assigned, waiting or
cancel state.
"""
move_status = "no"
mstates = self.move_ids.mapped("state")
if all([state == "cancel" for state in mstates]):
move_status = "cancel"
elif all([state in ("done", "cancel") for state in mstates]):
move_status = "received"
elif any([state == "done" for state in mstates]):
move_status = "partially_received"
elif all(
[
state in ("confirmed", "assigned", "waiting", "cancel")
for state in mstates
]
):
move_status = "to_receive"
return move_status
@api.depends("state", "move_ids.state")
def _compute_move_status(self):
for line in self:
line.move_status = line.get_move_status()

View File

@@ -5,7 +5,7 @@
<field name="model">purchase.order</field> <field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_view_tree"/> <field name="inherit_id" ref="purchase.purchase_order_view_tree"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='invoice_status']" position="after"> <xpath expr="//field[@name='invoice_status']" position="before">
<field name="picking_status" decoration-success="picking_status == 'received'" decoration-info="picking_status == 'to_receive'" decoration-warning="picking_status == 'partially_received'" decoration-danger="picking_status == 'cancel'" widget="badge" optional="show"/> <field name="picking_status" decoration-success="picking_status == 'received'" decoration-info="picking_status == 'to_receive'" decoration-warning="picking_status == 'partially_received'" decoration-danger="picking_status == 'cancel'" widget="badge" optional="show"/>
</xpath> </xpath>
</field> </field>
@@ -24,16 +24,4 @@
</xpath> </xpath>
</field> </field>
</record> </record>
<record id="purchase_order_line_tree" model="ir.ui.view">
<field name="name">purchase.order.line.view.tree (in purchase_stock_usability)</field>
<field name="model">purchase.order.line</field>
<field name="inherit_id" ref="purchase.purchase_order_line_tree"/>
<field name="arch" type="xml">
<xpath expr="//tree" position="inside">
<field name="move_status" decoration-success="move_status == 'received'" decoration-info="move_status == 'to_receive'" decoration-warning="move_status == 'partially_received'" decoration-danger="move_status == 'cancel'" widget="badge" optional="show"/>
</xpath>
</field>
</record>
</odoo> </odoo>