Skip to Content
Menú
This question has been flagged
2 Respostes
5480 Vistes

Hello, I'm trying to create a domain  in stock  operation  form  for products serial numbers to choose the positive ones only.

the code in  the  comment doesn't change anything. any one has any idea why?

Thanks   


Avatar
Descartar
Autor Best Answer

the problem is that we can't filter depending on non stored fields and we can't store computed fields and the quantity field is computed and non stored.

So I solved it this way, Finally:
in the model:

_inherit = 'stock.production.lot'

available_to_choose = fields.Boolean('Available', store=True, compute='_available')

@api.depends('quant_ids', 'quant_ids.reserved_quantity', 'quant_ids.quantity', 'product_qty')
def _available(self):
for lot in self:
if lot.product_qty <= 0:
lot.available_to_choose = False
elif lot.product_qty > 0:
quants = lot.quant_ids.filtered(lambda q: q.location_id.usage in ['internal', 'transit'])
for q in quants:
if q.quantity - q.reserved_quantity > 0:
lot.available_to_choose = True
elif q.quantity - q.reserved_quantity < 0:
lot.available_to_choose = False

@api.onchange('product_qty')
def _onchange_usage(self):
if self.product_qty > 0:
self.available_to_choose = True
else:
self.available_to_choose = False
in the view:
     domain="[('product_id', '=', product_id), ('available_to_choose','>', 0)]"/>




Avatar
Descartar

domain="[('product_id', '=', product_id), ('available_to_choose','>', 0)]"/>
available_to_choose : is boolean fields
i think you want to say that
domain="[('product_id', '=', product_id), ('available_to_choose','!=', False)]"/>

Best Answer

Hi Mr.Ali,

In odoo 13 inventory_quantity  field  is  defined  and  used  in  stock.quant  model  for viewing the current inventory of the products in specific location.

You have used that field in domain for lot which is  stock_production_lot  and i dont know why you didn't get an error for specifying in view.

Correct  me  please  if  am  wrong.

Thanks

Avatar
Descartar
Autor

yeah, I discovered that and changed the code but still it's not working:

<record id="view_stock_move_line_operation_tree" model="ir.ui.view">
<field name="name">stock.move.line.operations.tree - stock_picking_filter_lot</field>
<field name="model">stock.move.line</field>
<field name="inherit_id" ref="stock.view_stock_move_line_operation_tree" />
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='lot_id']" position="replace">
<field name="lot_id" groups="stock.group_production_lot"
attrs="{'readonly': ['&amp;', ('package_level_id', '!=', False), ('parent.picking_type_entire_packs', '=', True)]}"
invisible="not context.get('show_lots_m2o')"
domain="['&amp;', ('product_id', '=', parent.product_id), ('company_id', '=', company_id), ('product_qty','&gt;', .0)]"
context="{
'active_picking_id': picking_id,
'default_company_id': parent.company_id,
'default_product_id': parent.product_id,
}"
/>
</xpath>
</field>
</record>
<record id="view_stock_move_line_detailed_operation_tree" model="ir.ui.view">
<field name="name">stock.move.line.detailed.operations.tree - stock_picking_filter_lot</field>
<field name="model">stock.move.line</field>
<field name="inherit_id" ref="stock.view_stock_move_line_detailed_operation_tree"/>
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='lot_id']" position="replace">
<field name="lot_id" groups="stock.group_production_lot"
attrs="{'column_invisible': [('parent.show_lots_text', '=', True)], 'invisible': [('lots_visible', '=', False)]}"
domain="['&amp;', ('product_id', '=', product_id), ('product_qty','&gt;', 1.0)]"
context="{'default_product_id': product_id, 'default_company_id': company_id, 'active_picking_id': picking_id}"/>
</xpath>
</field>
</record>

Related Posts Respostes Vistes Activitat
1
d’oct. 20
5582
3
de jul. 25
4382
0
de maig 25
915
2
de març 24
2164
1
de jul. 23
1902