代码之家  ›  专栏  ›  技术社区  ›  Chaban33

过滤库存移动和退货订单

  •  1
  • Chaban33  · 技术社区  · 7 年前

    我想在树状视图中筛选,所以有stock.pickings和一些stock.move在这些pickings中处于“已分配”状态。

    我创建了计算和fnct_搜索方法的选择字段,但它甚至没有被触发。我的密码怎么了?还有逻辑。

    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代码是

    <record id="view_sale_order_search_picking_state" model="ir.ui.view">
            <field name="name">Config Hetlta 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>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   CZoellner    7 年前

    这个 self 在计算字段中,搜索方法始终为空,没有记录集。您必须使用运算符和值(搜索项)并创建自己的“间接”订单ID搜索。

    但是一个可能更简单的方法是存储计算字段。Odoo只能通过数据库持久字段进行搜索,这些字段在存储时会给出。