Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def create_stock_picking(self):
- pick_obj = self.env["stock.picking"]
- for data in self:
- if (data.no_of_children - data.no_of_death_children) > 0:
- kid_no = data.no_of_children - data.no_of_death_children
- move_vals = []
- ml_vals = []
- animal_tags = []
- for animal in data.livestock_ids.filtered(lambda kid: kid.livestock_state != 'dead'):
- # Search for an existing lot based on the tag
- lot2 = self.env['stock.lot'].search(
- [('name', '=', animal.tag), ('product_id', '=', data.livestock_id.product_id.id)], limit=1)
- # # If the lot does not exist, create it
- if not lot2:
- lot2 = self.env['stock.lot'].create({
- 'name': animal.tag,
- 'product_id': data.livestock_id.product_id.id,
- })
- # Append move line values
- ml_vals.append((0, 0, {
- 'product_id': data.livestock_id.product_id.id,
- 'reserved_uom_qty': 1,
- 'qty_done': 1,
- 'product_uom_id': data.livestock_id.product_id.uom_id.id,
- 'location_dest_id': data.get_default_mrp_location_dest_id(),
- 'location_id': data.get_default_mrp_location_src_id(),
- 'lot_id': lot2.id
- }))
- animal_tags.append(lot2.id)
- move_vals.append((0, 0, {
- 'name': f'({data.livestock_id.product_id.name}) production from {data.livestock_id.tag}',
- 'product_id': data.livestock_id.product_id.id,
- 'product_uom_qty': kid_no,
- 'quantity_done': kid_no,
- 'product_uom': data.livestock_id.product_id.uom_id.id,
- 'location_dest_id': data.get_default_mrp_location_dest_id(),
- 'location_id': data.get_default_mrp_location_src_id(),
- 'move_line_ids': ml_vals,
- # 'lot_ids': [(4, id) for id in animal_tags]
- }))
- pick_values = {
- 'note': f'Animal Production from {self.name}',
- 'company_id': data.company_id.id if data.company_id else 1,
- 'location_dest_id': data.get_default_mrp_location_dest_id(),
- 'location_id': data.get_default_mrp_location_src_id(),
- # 'move_ids_without_package': move_vals,
- 'move_line_ids_without_package': ml_vals,
- 'move_type': 'direct',
- 'picking_type_id': data.get_default_mrp_picking_type(),
- 'origin': data.name,
- 'livestock_id': data.livestock_id.id,
- 'livestock_production_id': data.id
- }
- pick_id = pick_obj.create(pick_values)
- pick_id.action_confirm()
- # Check if quantities are reserved or done, and then validate
- if any(line.qty_done or line.product_uom_qty for line in pick_id.move_line_ids):
- pick_id.button_validate()
- else:
- raise ValidationError("Cannot validate transfer: no quantities reserved or done.")
- data.write({'picking_id': pick_id.id, 'state': 'confirmed'})
- return True
Advertisement
Add Comment
Please, Sign In to add comment