This question has been flagged
2357 Views

I want to filter in Tree view SO's that have stock.pickings and some stock.moves in those pickings are in a state "assigned".

I created selection field that is computed and fnct_search method but it's not even triggered. what is wrong in my code? and logic.

picking_id_states = fields.Selection([
        ('draft', 'Draft'), ('cancel', 'Cancelled'),
        ('waiting', 'Waiting Another Operation'),
        ('confirmed', 'Waiting Availability'),
        ('partially_available', 'Partially Available'),
        ('assigned', 'Available'), ('done', 'Done')], compute='compute_picking_state', string='Picking State',
        fnct_search='_move_search', store=False, copy=False, index=True, readonly=True)

def _move_search(self, operator, value):
    print "test"
    for so in self:
        moves = so.picking_ids.mapped('move_lines')
        filtered_moves = moves.filtered(lambda l: l.state == 'assigned')
        if filtered_moves:
            so_ids = filtered_moves.mapped('picking_id.sale_id')
            return [('id', 'in', so_ids)]

@api.depends('order_line.move_ids', 'order_line.move_ids.state')
    def compute_picking_state(self):
        for order in self:
            for picking in order.picking_ids:
                order.picking_id_state = picking.state

XML code is

<record id="view_sale_order_search_picking_state" model="ir.ui.view">
        <field name="name">Config picking state</field>
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale.view_sales_order_filter" />
        <field name="arch" type="xml">
            <field name="user_id" position="after">
                <field name="picking_id_state"/>
                <field name="note"/>
            </field>
            <filter name="sales" position="after">
                <filter string="Picking state" name="picking_id_states" />
            </filter>
        </field>
    </record>
Avatar
Discard