Compare commits
3 Commits
14.0-po-pi
...
14.0-picki
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0dbd814b3 | ||
|
|
3f8dde7e10 | ||
|
|
a1e969eb17 |
@@ -6,8 +6,8 @@ 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"
|
||||
"POT-Creation-Date: 2021-11-02 09:56+0000\n"
|
||||
"PO-Revision-Date: 2021-11-02 09:56+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -22,16 +22,21 @@ msgstr "Livrer à"
|
||||
|
||||
#. 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_line__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
|
||||
#: 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"
|
||||
msgstr "Entièrement reçue"
|
||||
|
||||
#. 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_line__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
@@ -51,49 +56,47 @@ msgstr ""
|
||||
|
||||
#. 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_line____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
|
||||
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_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
|
||||
#: 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"
|
||||
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,name:purchase_stock_usability.model_purchase_order_line
|
||||
msgid "Purchase Order Line"
|
||||
msgstr "Ligne de commande fournisseur"
|
||||
|
||||
#. 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_line__move_status__cancel
|
||||
msgid "Receipt Cancelled"
|
||||
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
|
||||
#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id
|
||||
msgid "This will determine operation type of incoming shipment"
|
||||
@@ -101,5 +104,8 @@ 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
|
||||
#: 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"
|
||||
msgstr "À recevoir"
|
||||
|
||||
@@ -6,8 +6,8 @@ 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"
|
||||
"POT-Creation-Date: 2021-11-02 09:56+0000\n"
|
||||
"PO-Revision-Date: 2021-11-02 09:56+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -22,16 +22,21 @@ msgstr ""
|
||||
|
||||
#. 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_line__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
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#. 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_line__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
@@ -49,49 +54,47 @@ msgstr ""
|
||||
|
||||
#. 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_line____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
|
||||
#: model:ir.model.fields.selection,name:purchase_stock_usability.selection__purchase_order_line__move_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
|
||||
#: 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"
|
||||
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,name:purchase_stock_usability.model_purchase_order_line
|
||||
msgid "Purchase Order Line"
|
||||
msgstr ""
|
||||
|
||||
#. 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_line__move_status__cancel
|
||||
msgid "Receipt Cancelled"
|
||||
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
|
||||
#: model:ir.model.fields,help:purchase_stock_usability.field_purchase_order__picking_type_id
|
||||
msgid "This will determine operation type of incoming shipment"
|
||||
@@ -99,5 +102,8 @@ msgstr ""
|
||||
|
||||
#. 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_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"
|
||||
msgstr ""
|
||||
|
||||
@@ -6,59 +6,95 @@ from odoo import api, fields, models
|
||||
|
||||
|
||||
class PurchaseOrder(models.Model):
|
||||
_inherit = 'purchase.order'
|
||||
_inherit = "purchase.order"
|
||||
|
||||
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)
|
||||
picking_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_picking_status",
|
||||
store=True,
|
||||
default="no",
|
||||
)
|
||||
|
||||
@api.depends('state', 'picking_ids.state')
|
||||
@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
|
||||
line_ids = order.order_line
|
||||
order.picking_status = line_ids.get_move_status()
|
||||
|
||||
# inherit compute method of the field delivery_partner_id
|
||||
# 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):
|
||||
for o in self:
|
||||
delivery_partner_id = False
|
||||
if o.dest_address_id:
|
||||
delivery_partner_id = o.dest_address_id
|
||||
elif (
|
||||
o.picking_type_id.warehouse_id and
|
||||
o.picking_type_id.warehouse_id.partner_id):
|
||||
o.picking_type_id.warehouse_id
|
||||
and 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
|
||||
|
||||
|
||||
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()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.purchase_order_view_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='invoice_status']" position="before">
|
||||
<xpath expr="//field[@name='invoice_status']" position="after">
|
||||
<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>
|
||||
</field>
|
||||
@@ -24,4 +24,16 @@
|
||||
</xpath>
|
||||
</field>
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user