[IMP] ADD picking_status on sale order
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import models, fields
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
@@ -10,3 +10,35 @@ class SaleOrder(models.Model):
|
||||
|
||||
warehouse_id = fields.Many2one(track_visibility='onchange')
|
||||
incoterm = fields.Many2one(track_visibility='onchange')
|
||||
picking_status = fields.Selection([
|
||||
('deliverd', 'Fully deliverd'),
|
||||
('partialy delivered', 'Partialy Delivered'),
|
||||
('to deliver', 'To Deliver'),
|
||||
('no', 'Nothing to Deliver')
|
||||
], string='Picking Status', compute='_get_delivered', store=True, readonly=True)
|
||||
|
||||
@api.depends('state', 'picking_ids.state')
|
||||
def _get_delivered(self):
|
||||
"""
|
||||
Compute the picking status for the SO. Possible statuses:
|
||||
- no: if the SO is not in status 'sale' or 'done', we consider that there is nothing to
|
||||
deliver. This is also the default value if the conditions of no other status is met.
|
||||
- delivered: if all pickings are done.
|
||||
- Partialy Done : If at least one picking is done.
|
||||
- To deliver : if all pickings are in confirmed, assigned or waiting state.
|
||||
"""
|
||||
|
||||
for order in self:
|
||||
|
||||
if order.state not in ('sale', 'done') or not order.picking_ids:
|
||||
picking_status = 'no'
|
||||
elif all(picking.state == 'done' for picking in order.picking_ids):
|
||||
picking_status = 'deliverd'
|
||||
elif any(picking.state == 'done' for picking in order.picking_ids):
|
||||
picking_status = 'partialy delivered'
|
||||
elif all(picking.state in ('confirmed', 'assigned', 'waiting') for picking in order.picking_ids):
|
||||
picking_status = 'to deliver'
|
||||
else:
|
||||
picking_status = 'no'
|
||||
|
||||
order.picking_status = picking_status
|
||||
|
||||
@@ -30,4 +30,39 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_order_form" model="ir.ui.view">
|
||||
<field name="name">sale_stock_usability.order.form</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="pricelist_id" position="after">
|
||||
<field name="picking_status"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_order_tree" model="ir.ui.view">
|
||||
<field name="name">sale_stock_usability.order.tree</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_order_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="invoice_status" position="after">
|
||||
<field name="picking_status"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_sales_order_filter" model="ir.ui.view">
|
||||
<field name="name">sale_stock_usability.order.search</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<filter name="order_month" position="after">
|
||||
<filter string="To Deliver" name="to_deliver"
|
||||
domain="['|', ('picking_status','=','to deliver'), ('picking_status','=','partialy delivered')]"/>
|
||||
<filter string="Fully deliverd" name="fully_deliverd" domain="[('picking_status','=','deliverd')]"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user