No puedo obtener el precio unitario de las salidas (stock.move) de producción

Un saludo para todos, a continuación les comento que sucede.
Llevo un par de días tratando de obtener el precio que ya se le agrego a las salidas de producción esto lo hago mediante el siguiente código:

    @classmethod
    def done(cls, records):
        super(Production, cls).done(records)
        for rec in records:
            cls.create_account_move(rec)

    @classmethod
    def create_account_move(cls, rec):
        pool = Pool()
        AccountMove = pool.get('account.move')
        account_moves = []
        for move in rec.inputs:
            account_move = cls._get_account_stock_move(move)
            if account_move:
                account_moves.append(account_move)
        for move in rec.outputs:
            print(move.unit_price)

La idea es que una vez finalicen la producción yo pueda realizar un proceso adicional con estos movimientos pero al requerir el precio unitario siempre me aparece en 0, aunque le cambie el valor las veces que sean necesarias.

Buenos dias Cristian,

El precio unitario de los productos se establece con el coste de la producción.
El precio puede ser zero por dos motivos:

  1. El coste de tu producción es zero
  2. Los movimientos se corresponden con productos distintos al de la producción, ya que el costo se pone solo para el producto que se ha producido, no para los otros productos.

Revisando estos dos puntos deberias poder corregir estos problemas.

Revisando los dos puntos mencionados, efectivamente el coste de producción es cero aunque los movimientos correspondan a la producción como lo muestro a continuación:

¿Quisiera saber qué debo hacer para solucionar esta parte?

El coste de la producción es la suma del coste de los productos de entrada.
Seguro que tu producto de entrada tiene un coste de 0 y por eso el coste de la producción es zero

Revise cada uno de los productos y con el asistente Modificar el precio del coste les actualice el precio pero sigue quedando en 0 la producción

Ten cuidado que si duplicas una producción te mantiene los costes de la entradas y salidas de la anterior.

1 Like

Until the move is done (or the recompute cost price is run if it is on average).

Revisando el código pude notar que para el calculo del precio unitario se requiere que el producto tenga un precio de venta:

            for output in outputs:
                product = output.product
                with Transaction().set_context(production._list_price_context):
                    list_price = product.list_price_used
                product_price = (Decimal(str(output.quantity))
                    * Uom.compute_price(
                        product.default_uom, list_price, output.uom))
                prices[output] = product_price
                sum_ += product_price

Ya que con este precio de venta luego se calcula el ratio para el unit_price de cada salida de producción, actualizando el precio de venta pude obtener la producción sin problema.