как обновить поле one2many в форме мастера odoo для проверки данных перед отчетом? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь распечатать вид мастера формы отчета, отчет получает данные из метода, который возвращает список словарей, все, что мне нужно, чтобы обновить строки поля one2many с теми же данными из метода отчета, чтобы отобразить данные перед нажатием print, это метод

@api.multi
def product_summary(self,date_from, date_to):
    product_summary_dict = {}
    data = []
    if date_from and date_to:
        order_detail = self.env['pos.order'].search([('date_order', '>=',date_from),
                                                     ('date_order', '<=', date_to)])
        if order_detail:
            for each_order in order_detail:
                for each_order_line in each_order.lines:
                    if each_order_line.product_id.name in product_summary_dict:
                        product_qty = product_summary_dict[each_order_line.product_id.name]
                        product_qty += each_order_line.qty
                        total_sales = each_order_line.price_unit * product_qty
                        res1= {
                            "name": each_order_line.product_id.name,
                            "sold_qty": product_qty,
                            "price_unit": each_order_line.price_unit,
                            'total_sales': total_sales,
                        }
                        data.append(res1)
                    else:
                        product_qty = each_order_line.qty
                        total_sales = each_order_line.price_unit * product_qty
                    product_summary_dict[each_order_line.product_id.name] = product_qty;
                    res2 = {
                        "name": each_order_line.product_id.name,
                        "sold_qty": product_qty,
                        "price_unit": each_order_line.price_unit,
                        'total_sales': total_sales,
                    }
                    data.append(res2)
    if data:
        datas = list({v['name']: v for v in data}.values())
        print(len(datas))
        print(datas)
        return datas
    else:
        return {}

Мне нужно обновить это поле

invoice_line_ids = fields.One2many('acc.lines', 'req_ref', string='Bill Lines',
                                   copy=True)

которое получает свои значения из этой модели

class reportline(models.TransientModel):
_name = 'report.line'

name = fields.Char(string="", required=False, )
sold_qty = fields.Char(string="", required=False, )
price_unit = fields.Char(string="", required=False, )
total_sales = fields.Char(string="", required=False, )

report = fields.Many2one(comodel_name="pos.reports", string="", required=False, )

как обновить поле формируется описанным выше способом

заранее спасибо

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