ошибка при добавлении штрих-кода продукта в отчет Odoo excel

#python #odoo

Вопрос:

пытаюсь добавить штрих код товара в отчет Odoo excel, но безуспешно, как показано ниже в этой строке:

aml.product_id.штрих-код КАК product_barcode

не могли бы вы, пожалуйста, помочь, где в коде неправильный раздел?

 def _sql_get_line_for_report(self, type_l, report_object=None):  self.env['account.move.line'].check_access_rights('read')  query = """SELECT  raml.report_object_id AS report_object_id,  raml.view_type AS view_type,  CASE  WHEN %s = 'account' THEN acc.code  WHEN %s = 'journal' THEN acj.code  WHEN %s = 'analytic' THEN an_acc.code  ELSE rep.ref  END AS code,  CASE  WHEN %s = 'account' THEN acc.name  WHEN %s = 'journal' THEN acj.name  WHEN %s = 'analytic' THEN an_acc.name  ELSE rep.name  END AS name,  acj.code AS j_code,  ml.name AS move_name,  aml.ref AS displayed_ref,  aml.quantity AS product_qty,  aml.product_id.barcode AS product_barcode,  CASE  WHEN raml.full_reconcile_id IS NOT NULL THEN (CASE WHEN raml.reconciled = TRUE THEN afr.name ELSE '*' END)  ELSE ''  END AS matching_number  FROM  account_report_standard_ledger_line raml  LEFT JOIN account_account acc ON (acc.id = raml.account_id)  LEFT JOIN account_journal acj ON (acj.id = raml.journal_id)  LEFT JOIN res_partner rep ON (rep.id = raml.partner_id)  LEFT JOIN account_move ml ON (ml.id = raml.move_id)  LEFT JOIN account_move_line aml ON (aml.id = raml.move_line_id)  WHERE  raml.report_id = %s  AND (%s OR raml.report_object_id = %s)  AND raml.line_type IN %s  ORDER BY  raml.id  """  params = [  self.report_type, self.report_type, self.report_type, self.report_type, self.report_type, self.report_type,  self.report_id.id,  True if report_object is None else False,  report_object,  type_l  ]   self.env.cr.execute(query, tuple(params))  return self.env.cr.dictfetchall()  

Ответ №1:

Мы просто не можем использовать значения полей двух уровней внутри запроса. Сначала нам нужно добавить ЛЕВОЕ СОЕДИНЕНИЕ для таблицы продуктов, а затем получить доступ к значению «штрих-код». Например,

ЛЕВОЕ СОЕДИНЕНИЕ:

 LEFT JOIN product_product variant ON (variant.id = aml.product_id)  

Значение доступа:

 variant.barcode AS product_barcode,  

Комментарии:

1. большое вам спасибо, я в курсе.