[WTF] el onchange no funciona en el web client sin el warning.

This commit is contained in:
snt 2024-09-13 13:54:15 +02:00
parent 4b27d29d53
commit 42ad941e01

View file

@ -4,6 +4,8 @@
from odoo import api, models, fields from odoo import api, models, fields
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
import logging
_logger = logging.getLogger(__name__)
class PickingType(models.Model): class PickingType(models.Model):
_inherit = 'stock.picking.type' _inherit = 'stock.picking.type'
@ -36,22 +38,24 @@ class Picking(models.Model):
@api.onchange('partner_id') @api.onchange('partner_id')
def onchange_partner_id(self): def onchange_partner_id(self):
for picking in self: for picking in self:
if not self.partner_id: if not picking.partner_id:
return return
if self.picking_type_id.is_deposit: _logger.warning("onchange %s", self.location_dest_id.name)
if self.picking_type_id.code == 'internal': if picking.picking_type_id.is_deposit:
if not self.partner_id.deposit_sale_accept: if picking.picking_type_id.code == 'internal':
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
self.location_dest_id = self.partner_id.deposit_sale_location_id.id, picking.location_dest_id = picking.partner_id.deposit_sale_location_id.id,
elif self.picking_type_id.code == 'incoming': elif picking.picking_type_id.code == 'incoming':
if not self.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
self.location_dest_id = self.partner_id.deposit_buy_location_id.id picking.location_dest_id = picking.partner_id.deposit_buy_location_id.id
moves = self.env['stock.move'].search([('picking_id', '=', self.id)]) moves = picking.env['stock.move'].search([('picking_id', '=', picking.id)])
for move in moves: for move in moves:
move.write({'partner_id': self.partner_id.id}, {'location_dest_id': self.location_dest_id}) move.write({'partner_id': picking.partner_id.id}, {'location_dest_id': picking.location_dest_id})
_logger.warning("onchange %s", picking.location_dest_id.name)
def change_dest_location(self, vals, code): def change_dest_location(self, vals, code):
if vals.get('partner_id'): if vals.get('partner_id'):