Merge pull request #184 from akretion/14.0-fix-sale_stock_usability_del_picking_status
[FIX][14.0] Module: sale_stock_usability del picking_status
This commit is contained in:
@@ -11,44 +11,6 @@ class SaleOrder(models.Model):
|
|||||||
|
|
||||||
warehouse_id = fields.Many2one(tracking=True)
|
warehouse_id = fields.Many2one(tracking=True)
|
||||||
incoterm = fields.Many2one(tracking=True)
|
incoterm = fields.Many2one(tracking=True)
|
||||||
picking_status = fields.Selection([
|
|
||||||
('delivered', 'Fully Delivered'),
|
|
||||||
('partially_delivered', 'Partially Delivered'),
|
|
||||||
('to_deliver', 'To Deliver'),
|
|
||||||
('cancel', 'Delivery Cancelled'),
|
|
||||||
('no', 'Nothing to Deliver')
|
|
||||||
], 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 SO. Possible statuses:
|
|
||||||
- no: if the SO is not in status 'sale' nor 'done', we consider that
|
|
||||||
there is nothing to deliver. This is also the default value if the
|
|
||||||
conditions of no other status is met.
|
|
||||||
- cancel: all pickings are cancelled
|
|
||||||
- delivered: if all pickings are done or cancel.
|
|
||||||
- partially_delivered: If at least one picking is done.
|
|
||||||
- to_deliver: if all pickings are in confirmed, assigned, waiting or
|
|
||||||
cancel state.
|
|
||||||
"""
|
|
||||||
for order in self:
|
|
||||||
picking_status = 'no'
|
|
||||||
if order.state in ('sale', '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 = 'delivered'
|
|
||||||
elif any([state == 'done' for state in pstates]):
|
|
||||||
picking_status = 'partially_delivered'
|
|
||||||
elif all([
|
|
||||||
state in ('confirmed', 'assigned', 'waiting', 'cancel')
|
|
||||||
for state in pstates]):
|
|
||||||
picking_status = 'to_deliver'
|
|
||||||
order.picking_status = picking_status
|
|
||||||
|
|
||||||
def report_qty_to_deliver(self):
|
def report_qty_to_deliver(self):
|
||||||
# Can be useful for delivery report
|
# Can be useful for delivery report
|
||||||
|
|||||||
@@ -12,41 +12,10 @@
|
|||||||
<field name="model">sale.order</field>
|
<field name="model">sale.order</field>
|
||||||
<field name="inherit_id" ref="sale_stock.view_order_form_inherit_sale_stock"/>
|
<field name="inherit_id" ref="sale_stock.view_order_form_inherit_sale_stock"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="picking_policy" position="after">
|
|
||||||
<field name="picking_status"/>
|
|
||||||
</field>
|
|
||||||
<!-- move warehouse_id to the top, not hidden in the 2nd tab -->
|
<!-- move warehouse_id to the top, not hidden in the 2nd tab -->
|
||||||
<group name="order_details" position="inside">
|
<group name="order_details" position="inside">
|
||||||
<field name="warehouse_id" options="{'no_create': True}" groups="stock.group_stock_multi_warehouses" force_save="1" position="move"/>
|
<field name="warehouse_id" options="{'no_create': True}" groups="stock.group_stock_multi_warehouses" force_save="1" position="move"/>
|
||||||
</group>
|
</group>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</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="before">
|
|
||||||
<field name="picking_status" decoration-success="picking_status == 'delivered'" decoration-info="picking_status == 'to_deliver'" decoration-warning="picking_status == 'partially_delivered'" decoration-danger="picking_status == 'cancel'" widget="badge" optional="show"/>
|
|
||||||
</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="my_sale_orders_filter" position="after">
|
|
||||||
<separator/>
|
|
||||||
<filter string="Not Fully Delivered" name="not_fully_delivered"
|
|
||||||
domain="[('picking_status', 'in', ('to_deliver', 'partially_delivered'))]"/>
|
|
||||||
<filter string="Fully Delivered" name="fully_delivered"
|
|
||||||
domain="[('picking_status', '=', 'delivered')]"/>
|
|
||||||
<separator/>
|
|
||||||
</filter>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
Reference in New Issue
Block a user