obook/stock_picking_deposito/models/stock_picking.py
snt ca3ff032a2 upgrade depositos a v16. Añadida configuración para definir la lista de
precios que se aplica en los depósitos de venta.
2024-09-10 16:53:28 +02:00

44 lines
1.5 KiB
Python

# Copyright 2021 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
import logging
from odoo import api, models, fields
from odoo.exceptions import ValidationError
_logger = logging.getLogger(__name__)
class PickingType(models.Model):
_inherit = 'stock.picking.type'
is_deposit = fields.Boolean(
string='Depósito',
help='Éste albarán es un depósito, no es una venta final.',
default= False,
)
class Picking(models.Model):
_inherit = 'stock.picking'
@api.model
def create(self, vals):
pick = super().create(vals)
if pick.picking_type_id.is_deposit:
pick.change_dest_location()
return pick
def change_dest_location(self):
if self.picking_type_id.code == 'internal':
if not self.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
self.update({
'location_dest_id': self.partner_id.deposit_sale_location_id.id,
})
elif self.picking_type_id.code == 'incoming':
if not self.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
self.update({
'location_dest_id': self.partner_id.deposit_buy_location_id.id,
})