повысить ValueError («Ожидаемый синглтон:% s»% self) ValueError: Ожидаемый синглтон: product.pricelist () - PullRequest
0 голосов
/ 12 сентября 2018

Я использую функцию get_product_price_rule () из модели product.pricelist. Мой код:

price =  self._get_display_price(product)

Журнал ошибок:

File "/odoo/addons/sale/models/sale.py", line 875, in _get_display_price
    final_price1, rule_id1 = self.order_id.pricelist_id.with_context(product_context).get_product_price_rule(product,self.product_uom_qty or 1.0, self.order_id.partner_id)
  File "/odoo/addons/product/models/product_pricelist.py", line 264, in get_product_price_rule
    self.ensure_one()
  File "/odoo/odoo/models.py", line 4844, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: product.pricelist()

Как решить эту ошибку? Моя цель - узнать цену товара. Мне нужно решение и совет.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

По умолчанию метод в Odoo украшен декоратором @ api.multi.

Это означает, что значение self - это список RecordSet, а не RecordSet, поэтому у вас есть два решения для решения этой проблемы:

Опция 1: Цикл по списку RecordSet с

for record in self:
    price =  record._get_display_price(product)

Опция 2: Проверьте, что в списке только один RecordSet, используя:

self.ensure_one()

Дополнительную документацию можно получить по https://odoo -new-api-guide-line.readthedocs.io / en / latest / environment.html # recordset

0 голосов
/ 12 сентября 2018

Ваша проблема связана с тем, что в заказе на продажу нет прайс-листа и, как говорится в сообщении об ошибке, ожидается однозначное значение. Обычно это связано с более чем одним значением в наборе записей, но это же относится и к отсутствию значений в наборе записей, как ожидается.

В связи с этим ваша проблема может быть решена с помощью команды if, чтобы проверить значение pricelist_id для self.order_id, или вы можете найти значение по умолчанию public pricelist, чтобы использовать его для расчета цены продукта, или просто использовать цена продажи товара, если для self.order_id.pricelist_id нет значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...