Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

purchase_stock_usability: Add picking_status like in sale_stock_usability #149

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions purchase_stock_usability/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
'purchase_usability',
],
'data': [
'views/purchase_order_views.xml',
'views/stock_picking.xml',
],
'installable': True,
Expand Down
105 changes: 105 additions & 0 deletions purchase_stock_usability/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -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"
103 changes: 103 additions & 0 deletions purchase_stock_usability/i18n/purchase_stock_usability.pot
Original file line number Diff line number Diff line change
@@ -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 ""
38 changes: 38 additions & 0 deletions purchase_stock_usability/models/purchase.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
27 changes: 27 additions & 0 deletions purchase_stock_usability/views/purchase_order_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="purchase_order_view_tree" model="ir.ui.view">
<field name="name">purchase.order.view.tree (in purchase_stock_usability)</field>
<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">
<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>
</record>

<record id="purchase_order_view_search" model="ir.ui.view">
<field name="name">purchase.order.select (in purchase_stock_usability)</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_view_search"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='order_date']" position="before">
<filter name="received" string="Pickings fully received" domain="[('picking_status', '=', 'received')]"/>
<filter name="partially_received" string="Pickings partially received" domain="[('picking_status', '=', 'partially_received')]"/>
<filter name="to_receive" string="Pickings to receive" domain="[('picking_status', '=', 'to_receive')]"/>
<separator/>
</xpath>
</field>
</record>
</odoo>