Как я могу сгруппировать список в расширенный лист pdf / html в netsuite / freemarker? - PullRequest
0 голосов
/ 04 февраля 2020

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

Например, если у меня есть следующие данные в счете на уровне строки:

  • Депт / Сумма / Корабль / Налог / Итого:
  • А1 / 15 / 0/0/15
  • А1 / 30/0/0/30
  • А1 / 5/0/0/5
  • А2 / 45/0/0 / 45
  • A3 / 50/0/0/50
  • A4 / 45/0/0/45

Я хотел бы напечатать как:

  • Депт / Сумма / Судно / Налог / Итого:
  • А1 / 50/0/0/50
  • А2 / 45/0/0/45
  • A3 / 50/0/0/50
  • A4 / 45/0/0/45
  • всего / 190/0/0/190

Вот то, что у меня есть, но оно не группирует их:

`<table style="width: 100%; margin-top: 10px;">
    <thead>
    <tr>
        <td border-bottom="1px solid black" width="32%">Department</td>
        <td border-bottom="1px solid black" width="20%">Merchandise Amount</td>
        <td border-bottom="1px solid black" width="17%">Del./Sve. Amount</td>
        <td border-bottom="1px solid black" width="14%">Tax Amount</td>
        <td border-bottom="1px solid black" width="17%">Total Inv. Amount</td>
    </tr>
    </thead>
<#list record.line?sort as item><#assign i = 0>
<#assign memo_check = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"]/>
<#if memo_check[i] != item.memo>
    <!--DO NOTHING-->
</#if>
<#assign i += 1>
    <tr>
        <td width="32%">${item.memo}</td>
        <td width="20%">${item.amount}</td>
        <td width="17%">0.00</td>
        <td width="14%">0.00</td>
        <td width="17%">${item.amount}</td>
    </tr>
</#list>
</table>`

1 Ответ

1 голос
/ 05 февраля 2020

По сути, вы делаете это, перебирая все свои предметы для каждого отдела.

См. Как удалить дубликаты элементов в массиве с помощью freemarker?

, чтобы немного поговорить об этом, а затем, где написано "Сделайте что-нибудь с $ {groupId} "вы бы сделали что-то вроде:

<#assign dept_total = 0>

<#list record.item as dept_item>
    <#assign line_dept = dept_item.memo>
    <#if line_dept == groupId>
    <#assign dept_total = dept_total + dept_item.amount>
    ... // any other calculations
</#list>
... // use the dept_total etc
// then the outer loop will find the next unique dept.
...