Как создать таблицу, показывающую комбинацию вариантов продукта в отчете qweb? - PullRequest
0 голосов
/ 13 сентября 2018

Я хотел бы отобразить мои продукты в таблицах в зависимости от того, какие варианты у них есть. Если продукт имеет два атрибута, я хотел бы, чтобы он отображался в таблице со значениями (атрибутов с наименьшими значениями) в качестве заголовков столбцов, а других значений атрибутов - в качестве заголовков строк. Если у продукта есть один или нет атрибутов, то значения атрибутов должны быть заголовками строк. Если продукт имеет более двух атрибутов, остальные атрибуты должны образовывать отдельную таблицу рядом с исходной таблицей.

Мне удалось заставить работать заголовки строк, но я не смог заставить работать заголовки столбцов и цены для каждого варианта продукта. Вот мой код:

<?xml version="1.0"?>

<t t-name="product.report_menu">
  <t t-call="web.html_container">
    <t t-call="web.internal_layout">

      <div class="page" style="height: 28cm; width: 21cm; font-family: Patrick Hand;">

        <table style="width: 100%; padding-top: 30px">
          <tbody>
            <tr>

              <td valign="top" style="width: 75%; border: solid 2px orange;padding-left: 20px;padding-right: 20px;">
                <div style="min-height: 29.5cm;">

                  <!-- setting default groupings to nil-->
                  <t t-set="product_category" t-value="[]" />
                  <t t-set="attribute_category" t-value="[]" />
                  <t t-set="name_category" t-value="[]" />
                  <t t-set="attribute_value_name_category" t-value="[]" />
                  <t t-set="price" t-value="[]" />
                  <t t-set="pricf" t-value="[]" />


                  <!-- setting default groupings to nil-->
                  <t t-foreach="docs" t-as="mpl">

                    <!-- setting grouping to the value of the product-->
                    <t t-set="product_category" t-value="product_category+[mpl.categ_id]" />
                  </t>


                  <!-- lines associated for grouping individual products based on category, i.e Cookies and all its variants  -->
                  <t t-foreach="set(product_category)" t-as="category">

                    <!-- product category name -->
                    <strong>
                                            <h3 t-esc="category.name" /> </strong>

                    <!-- setting grouping to the value of the product-->
                    <t t-foreach="docs" t-as="mpl">
                      <t t-set="name_category" t-value="name_category+[mpl.name]" />

                      <t t-set="price" t-value="price+[mpl.lst_price]" />


                      <t t-foreach="mpl.attribute_value_ids" t-as="attrib_value">
                        <t t-set="pricf" t-value="pricf+[mpl.lst_price]" />
                        <t t-set="attribute_category" t-value="attribute_category+[attrib_value.attribute_id]" />
                        <t t-set="attribute_value_name_category" t-value="attribute_value_name_category+[attrib_value]" />
                      </t>
                      <!-- <t t-foreach="mpl.attribute_value_ids" t-as="attrib_value"> -->

                    </t>

                    <t t-foreach="set(name_category)" t-as="namecate">
                      <strong>
                                                <h4 t-esc="namecate" /></strong>
                      <!-- if the products have attributes such as Size, create a size layout table -->



                      <table style="width: 50%; margin-bottom: 15px;">
                        <thead>
                          <th>Whatever...</th>
                          <th>att 1</th>
                          <th>att 2</th>
                          <th>att 4</th>
                        </thead>

                        <tbody>

                          <!-- setting grouping to the value of the product-->

                          <t t-foreach="set(attribute_category)" t-as="attric">
                            <t t-set="attribute_category" t-value="[]" />
                            <t t-if="not attric.name == 'Size'">
                              <strong>
                                    <h5 style="color: gray;" t-esc="'Comes in %ss of:' % (attric.name)" />
                                </strong>

                              <t t-foreach="set(attribute_value_name_category)" t-as="avnc">
                                <t t-if="avnc.attribute_id.name == attric.name">

                                  <t t-set="attribute_category" t-value="[]" />

                                  <tr>
                                    <td>
                                      <p t-esc="avnc.name" />
                                    </td>

                                    <t t-foreach="set(price)" t-as="pricee">
                                      <t t-if="not pricee == 0">

                                        <td>
                                          <span t-esc="'%s' % (pricee)" />
                                        </td>

                                      </t>
                                    </t>

                                  </tr>
                                </t>
                              </t>
                            </t>
                          </t>
                        </tbody>

                      </table>
                    </t>
                  </t>
                </div>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </t>
  </t>

</t>

Это список товаров и их атрибутов: товаров и их атрибутов

И вот сгенерированный отчет: какой отчет я сейчас получаю what report I am currently getting

Это моя цель: что я пытаюсь сделать

what I am trying to do

Могу ли я получить помощь, я не знаю, как поступить.

Спасибо

1 Ответ

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

Я думаю, что вам лучше использовать собственный анализатор отчетов для создания групп информации, чтобы предоставить ее шаблону отчета, чтобы просто выполнить итерацию пользовательской структуры данных для печати ранее подготовленных данных в необходимые таблицы и вывод отчета.

Похоже, что это очень сложный отчет, построенный на стольких полях отношений, которые приведут к такому количеству итераций и шаблонного кода на уровне qweb.

...