Как добавить несколько продуктов в одну строку в цитате?

100
12

Как и в изображении строки заказа клиента, я создал много полей, чтобы добавить больше продуктов, как я могу вычислить все цены и отобразить их в поле цены единицы Sales Order Line Image

Спасибо

спросил(а) 2018-01-17T19:07:00+03:00 3 года, 6 месяцев назад
1
Решение
133

создавать поля для стекла, летать, опции1 и опции2, такие как поле цены за единицу, например

x_XxX_P = fields.Float('XxX P', required = True, default = 0.0)

Затем создайте api для изменения для каждого столбца нового продукта, например

@api.multi

@api.onchange('x_XxX')
def product_id_change(self):
if not self.x_XxX:
return {'domain': {'product_uom': []}}

vals = {}
domain = {'product_uom': [('category_id', '=', self.x_XxX.uom_id.category_id.id)]}
if not self.product_uom or (self.x_XxX.uom_id.id != self.product_uom.id):
vals['product_uom'] = self.x_XxX.uom_id
vals['product_uom_qty'] = 1.0

product = self.x_XxX.with_context(
lang=self.order_id.partner_id.lang,
partner=self.order_id.partner_id.id,
quantity=vals.get('product_uom_qty') or self.product_uom_qty,
date=self.order_id.date_order,
pricelist=self.order_id.pricelist_id.id,
uom=self.product_uom.id
)

result = {'domain': domain}

title = False
message = False
warning = {}
if product.sale_line_warn != 'no-message':
title = _("Warning for %s") % product.name
message = product.sale_line_warn_msg
warning['title'] = title
warning['message'] = message
result = {'warning': warning}
if product.sale_line_warn == 'block':
self.x_XxX = False
return result

self._compute_tax_id()

if self.order_id.pricelist_id and self.order_id.partner_id:
vals['x_XxX_P'] = self.env['account.tax']._fix_tax_included_price_company(self._get_display_price(product), product.taxes_id, self.tax_id, self.company_id)
self.update(vals)

return result

затем создайте поле для расчета всех цен

@api.depends('x', 'x', 'x_', 'x_', 'x_')

def _get_price_unit (self):

для линии в себе:

line.price_unit = line.x_ + line.x_ + line.x_ + line.x_ + line.x_

ответил(а) 2018-01-30T15:45:00+03:00 3 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема