Blockeando el stock en ubicaciones - Módulo stock_location_lockdown

Y una buena lección de como usar los constraints

Gustavo Orrillo
- 19/06/2022 - 1 min. de lectura

Un módulo muy util es stock_location_lockdown del repositorio stock_logistics_warehouse de OCA. Hace algo muy necesario para mantener la disciplina necesaria para administrar un almacén ordenado. No permite que exista stock en una ubicación que se marca como blockeada. Entonces, cuando intentamos mover productos a dicha ubicación, obtenemos un mensaje de error como el siguiente:


Este módulo es muy útil y el concepto con el cual está basado puede extenderse para usos muy útiles. Por ejemplo podemos restringir la ubicación para que la misma solo permita productos de determinadas características: por ejemplo una ubicación de entrada de mercadería solo puede permitir productos que son materia prima. 

Notas técnicas

Más alla que el módulo agrega el atributo block_stock_entrance al modelo stock.location, hace algo muy interesante. Agrega un constraint al modelo stock.quant (que es el que almacena los stocks). Entonces, al tratar de crearse un objeto del stock, se chequea que la ubicación al que pertenece no este bloqueada para stock.

# Raise an error when trying to change a quant
# which corresponding stock location is blocked
@api.constrains("location_id")
def check_location_blocked(self):
    for record in self:
        if record.location_id.block_stock_entrance:
            raise ValidationError(
                _(
                    "The location %(location)s is blocked and can "
                    "not be used for moving the product %(product)s"
                    )
                % {
                    "location": record.location_id.display_name,
                    "product": record.product_id.display_name,
                    }
                )
Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.