Заказ на продажу Odoo: неверный расчет qty_delivered в комплекте бомбы - PullRequest
0 голосов
/ 22 мая 2019

Я на Odoo 11, у меня особый случай: у меня есть продукт (GRI002), который имеет BoM типа "Kit".GRI002STK является единственным компонентом: enter image description here

Когда я делаю заказ на продажу, я устанавливаю 2 GRI002 для заказанного количества.Я подтверждаю.Я иду к доставке, и я устанавливаю 1 сделанное количество: enter image description here

Это показывает, что я могу сделать заказ, я нажимаю Да.Таким образом, для первого комплектования у меня есть 1 Начальный спрос и 1 Готово, а для отложенного заказа у меня есть 1 Начальный спрос и 0 Готово: enter image description here

В заказе на продажуУ меня должно быть 2 заказа и 1 доставлено, но проблема в том, что у меня 2 заказа и 0 доставлено.enter image description here Я тестировал продукты без BOM и BoM для производства, он работает в обоих случаях.

Так, какова функция для вычисления упорядоченного кол-во?Я его исправлю.

У вас есть эта проблема?Я не могу отредактировать BoM для комплектов, потому что он делает Manifacturing Orders, а мой клиент этого не хочет.

1 Ответ

2 голосов
/ 10 июля 2019

Мне удалось выполнить super () и пересчитать:

class SaleOrderLine(models.Model):
    _inherit = 'sale.order.line'


    @api.multi
    def _get_delivered_qty(self):
        self.ensure_one()

        #Hérite de sale/models/sale.py, de sale_stock/models/sale_order.py et de sale_mrp/models/sale_mrp.py
        qty = super(SaleOrderLine, self)._get_delivered_qty()

        #On recherche la nomenclature avec le produit actuel
        bom = self.env['mrp.bom']._bom_find(product=self.product_id)

        #Si c'est une nomenclature en kit
        if bom and bom.type == 'phantom':
            qty = 0   #obligé sinon les quantités seraient comptées 2x

            for move in self.move_ids:
                if move.state == 'done':
                    #on ajoute autant de quantité qu'il y en a dans le stock_move
                    qty = qty + move.quantity_done
        return qty
...