Arregla retornos y salidas de depósitos en onchange.
This commit is contained in:
parent
a6f6858e8c
commit
4f454347af
1 changed files with 19 additions and 14 deletions
|
@ -29,47 +29,52 @@ class Picking(models.Model):
|
||||||
return super().create(vals)
|
return super().create(vals)
|
||||||
|
|
||||||
def write(self, vals):
|
def write(self, vals):
|
||||||
if vals.get('picking_type_id'):
|
if vals.get("picking_type_id"):
|
||||||
picking_type = self.env['stock.picking.type'].browse(vals.get('picking_type_id'))
|
picking_type = self.env["stock.picking.type"].browse(vals.get("picking_type_id"))
|
||||||
if picking_type.is_deposit:
|
if picking_type.is_deposit:
|
||||||
self.change_dest_location(vals, picking_type.code)
|
self.change_dest_location(vals, picking_type.code)
|
||||||
return super().write(vals)
|
return super().write(vals)
|
||||||
|
|
||||||
@api.onchange('partner_id')
|
@api.onchange("partner_id")
|
||||||
def onchange_partner_id(self):
|
def onchange_partner_id(self):
|
||||||
|
#super().onchange_partner_id()
|
||||||
for picking in self:
|
for picking in self:
|
||||||
if not picking.partner_id:
|
if not picking.partner_id:
|
||||||
return
|
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.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:
|
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.")
|
raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.")
|
||||||
return
|
return
|
||||||
picking.location_dest_id = picking.partner_id.deposit_sale_location_id.id,
|
picking.location_id = picking.partner_id.deposit_sale_location_id.id,
|
||||||
elif picking.picking_type_id.code == 'incoming':
|
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:
|
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.")
|
raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.")
|
||||||
return
|
return
|
||||||
picking.location_dest_id = picking.partner_id.deposit_buy_location_id.id
|
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:
|
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):
|
def change_dest_location(self, vals, code):
|
||||||
if vals.get('partner_id'):
|
if vals.get("partner_id"):
|
||||||
partner = self.env['res.partner'].browse(vals.get('partner_id'))
|
partner = self.env["res.partner"].browse(vals.get("partner_id"))
|
||||||
if code == 'internal':
|
if code == "internal":
|
||||||
if not partner.deposit_sale_accept:
|
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.")
|
raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.")
|
||||||
return
|
return
|
||||||
vals.update({
|
vals.update({
|
||||||
'location_dest_id': partner.deposit_sale_location_id.id,
|
"location_dest_id": partner.deposit_sale_location_id.id,
|
||||||
})
|
})
|
||||||
elif code == 'incoming':
|
elif code == 'incoming':
|
||||||
if not partner.deposit_buy_accept:
|
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.")
|
raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.")
|
||||||
return
|
return
|
||||||
vals.update({
|
vals.update({
|
||||||
'location_dest_id': partner.deposit_buy_location_id.id,
|
"location_dest_id": partner.deposit_buy_location_id.id,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue