diff --git a/stock_picking_deposito/models/stock_picking.py b/stock_picking_deposito/models/stock_picking.py index db441f2..f9855e7 100644 --- a/stock_picking_deposito/models/stock_picking.py +++ b/stock_picking_deposito/models/stock_picking.py @@ -29,47 +29,52 @@ class Picking(models.Model): return super().create(vals) def write(self, vals): - if vals.get('picking_type_id'): - picking_type = self.env['stock.picking.type'].browse(vals.get('picking_type_id')) + if vals.get("picking_type_id"): + picking_type = self.env["stock.picking.type"].browse(vals.get("picking_type_id")) if picking_type.is_deposit: self.change_dest_location(vals, picking_type.code) return super().write(vals) - @api.onchange('partner_id') + @api.onchange("partner_id") def onchange_partner_id(self): + #super().onchange_partner_id() for picking in self: if not picking.partner_id: return - _logger.debug("onchange %s", picking.location_dest_id.name) # web cliebt does not update without this, wtf? + _logger.warning("onchange %s %s", picking.location_dest_id.name, picking.location_id.name) # web cliebt does not update without this, wtf? + _logger.warning("onchange %s", picking.picking_type_id.code) if picking.picking_type_id.is_deposit: - if picking.picking_type_id.code == 'internal': + if picking.picking_type_id.code in ["internal","outgoing"]: if not picking.partner_id.deposit_sale_accept: raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.") return - picking.location_dest_id = picking.partner_id.deposit_sale_location_id.id, - elif picking.picking_type_id.code == 'incoming': + picking.location_id = picking.partner_id.deposit_sale_location_id.id, + moves = picking.env["stock.move"].search([("picking_id", "=", picking.id)]) + for move in moves: + move.write({"partner_id": picking.partner_id.id}, {"location_id": picking.location_id}) + elif picking.picking_type_id.code == "incoming": if not picking.partner_id.deposit_buy_accept: raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.") return picking.location_dest_id = picking.partner_id.deposit_buy_location_id.id - moves = picking.env['stock.move'].search([('picking_id', '=', picking.id)]) + moves = picking.env["stock.move"].search([("picking_id", "=", picking.id)]) for move in moves: - move.write({'partner_id': picking.partner_id.id}, {'location_dest_id': picking.location_dest_id}) + move.write({"partner_id": picking.partner_id.id}, {"location_dest_id": picking.location_dest_id}) def change_dest_location(self, vals, code): - if vals.get('partner_id'): - partner = self.env['res.partner'].browse(vals.get('partner_id')) - if code == 'internal': + if vals.get("partner_id"): + partner = self.env["res.partner"].browse(vals.get("partner_id")) + if code == "internal": if not partner.deposit_sale_accept: raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.") return vals.update({ - 'location_dest_id': partner.deposit_sale_location_id.id, + "location_dest_id": partner.deposit_sale_location_id.id, }) elif code == 'incoming': if not partner.deposit_buy_accept: raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.") return vals.update({ - 'location_dest_id': partner.deposit_buy_location_id.id, + "location_dest_id": partner.deposit_buy_location_id.id, })