@hartl-services/medusa-base 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -63,7 +63,7 @@ const renderLines = (input, timeZone) => input.lines
63
63
  </td>
64
64
  <td class="number quantity">${(0, lib_1.escapeHtml)(line.quantity)}</td>
65
65
  <td class="number">${(0, html_utils_1.renderMoney)(line.unit_price)}</td>
66
- <td class="number">${(0, html_utils_1.renderMoney)(line.total)}</td>
66
+ <td class="number">${(0, html_utils_1.renderMoney)(line.subtotal)}</td>
67
67
  </tr>`)
68
68
  .join("");
69
69
  const isExemptIntraCommunitySupply = (input) => input.order.tax_compliance?.exemption_wording ===
@@ -93,11 +93,30 @@ const formatTaxRate = (rate) => new Intl.NumberFormat(format_1.DEFAULT_FORMAT_LO
93
93
  }).format(rate / 100);
94
94
  /** One totals row below the Menge/Einzelpreis columns; the amount sits under "Summe". */
95
95
  const renderTotalRow = (label, value, className) => `<tr${className ? ` class="${className}"` : ""}><td class="spacer"></td><td class="label" colspan="2">${(0, lib_1.escapeHtml)(label)}</td><td class="number">${value}</td></tr>`;
96
+ /** No discount, no row. */
97
+ const renderDiscountRow = (input) => Number(input.totals.discount_total.amount) === 0
98
+ ? ""
99
+ : renderTotalRow("Rabatt", renderDiscountTotal(input));
100
+ /**
101
+ * One row per tax rate. With several rates each row also names its net
102
+ * amount, since an invoice states the amount taxed at every rate.
103
+ */
96
104
  const renderTaxRows = (input) => {
97
105
  const { tax_breakdown: breakdown, tax_total: taxTotal } = input.totals;
106
+ const withNetAmount = breakdown.length > 1;
98
107
  const rows = breakdown.length > 0
99
108
  ? breakdown.map((entry) => ({
100
- label: `${entry.name} ${formatTaxRate(entry.rate)}`,
109
+ label: [
110
+ `${entry.name} ${formatTaxRate(entry.rate)}`,
111
+ withNetAmount && entry.taxable_amount
112
+ ? `auf ${(0, format_1.formatMoney)({
113
+ amount: entry.taxable_amount.amount,
114
+ currencyCode: entry.taxable_amount.currency_code,
115
+ })}`
116
+ : null,
117
+ ]
118
+ .filter((part) => Boolean(part))
119
+ .join(" "),
101
120
  money: entry.tax_total,
102
121
  }))
103
122
  : [{ label: "Umsatzsteuer", money: taxTotal }];
@@ -141,7 +160,7 @@ const renderFinancialDocument = (input, layout, timeZone) => {
141
160
  <tbody class="totals">
142
161
  ${renderTotalRow("Zwischensumme", (0, html_utils_1.renderMoney)(totals.subtotal))}
143
162
  ${renderTotalRow("Versand", (0, html_utils_1.renderMoney)(totals.shipping_total))}
144
- ${renderTotalRow("Rabatt", renderDiscountTotal(input))}
163
+ ${renderDiscountRow(input)}
145
164
  ${renderTaxRows(input)}
146
165
  ${renderTotalRow("Gesamt", (0, html_utils_1.renderMoney)(totals.total), "grand-total")}
147
166
  </tbody>
@@ -158,4 +177,4 @@ const renderFinancialDocument = (input, layout, timeZone) => {
158
177
  });
159
178
  };
160
179
  exports.renderFinancialDocument = renderFinancialDocument;
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLWRvY3VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvZmluYW5jaWFsLWRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHFDQUFvRTtBQUNwRSwwQ0FBNkM7QUFDN0MsNkNBQWdFO0FBQ2hFLHFDQUFpRTtBQU9qRSxNQUFNLFlBQVksR0FBRztJQUNuQixZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsY0FBYztRQUN0QixLQUFLLEVBQUUsZ0JBQWdCO0tBQ3hCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixLQUFLLEVBQUUsWUFBWTtLQUNwQjtJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsS0FBSyxFQUFFLFVBQVU7S0FDbEI7Q0FJRixDQUFBO0FBRUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUE0QixFQUFVLEVBQUU7SUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUE7SUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxJQUFBLGdCQUFVLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxPQUFPO1FBQ2YsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDcEMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDWixPQUFPLENBQUMsU0FBUztRQUNqQixPQUFPLENBQUMsU0FBUztRQUNqQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQzthQUNoQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQWtCLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNaLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUEsMEJBQWlCLEVBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQ3RFO1NBQ0UsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9DLEdBQUcsQ0FBQyxnQkFBVSxDQUFDO1NBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVELHlGQUF5RjtBQUN6RixNQUFNLGtCQUFrQixHQUFHLENBQ3pCLElBQTRDLEVBQzVDLFFBQWdCLEVBQ1IsRUFBRTtJQUNWLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sSUFBSSxDQUFDLGlCQUFpQjtTQUMxQixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUNsQixNQUFNLEtBQUssR0FBRztZQUNaLFdBQVcsVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUNsQyxRQUFRLElBQUEsMkJBQWtCLEVBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUM5RCxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ3RELENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDakQsT0FBTyxzQkFBc0IsSUFBQSxnQkFBVSxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQ25FLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNiLENBQUMsQ0FBQTtBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBNEIsRUFBRSxRQUFnQixFQUFVLEVBQUUsQ0FDN0UsS0FBSyxDQUFDLEtBQUs7S0FDUixHQUFHLENBQ0YsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDOztvQ0FFb0IsSUFBQSxnQkFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMseUJBQXlCLElBQUEsZ0JBQVUsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDOztzQ0FFUixJQUFBLGdCQUFVLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs2QkFDbEMsSUFBQSx3QkFBVyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7NkJBQzVCLElBQUEsd0JBQVcsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hDLENBQ1A7S0FDQSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFYixNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBNEIsRUFBVyxFQUFFLENBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLGlCQUFpQjtJQUM3Qyw4Q0FBOEMsQ0FBQTtBQUVoRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBNEIsRUFBVSxFQUFFO0lBQ25FLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFBO0lBQzNDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RELE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELE9BQU87O2dCQUVPLElBQUEsZ0JBQVUsRUFBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7d0JBQ2xDLElBQUEsZ0JBQVUsRUFBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7O2VBRWpELENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBNEIsRUFBVSxFQUFFO0lBQ25FLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFBO0lBQzVDLE1BQU0sYUFBYSxHQUNqQixLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzlELENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7UUFDdkIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUE7SUFFckIsT0FBTyxJQUFBLHdCQUFXLEVBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0FBQzdDLENBQUMsQ0FBQTtBQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUUsQ0FDN0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLDhCQUFxQixFQUFFO0lBQzNDLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7QUFFdkIseUZBQXlGO0FBQ3pGLE1BQU0sY0FBYyxHQUFHLENBQ3JCLEtBQWEsRUFDYixLQUFhLEVBQ2IsU0FBa0IsRUFDVixFQUFFLENBQ1YsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsMERBQTBELElBQUEsZ0JBQVUsRUFBQyxLQUFLLENBQUMsMkJBQTJCLEtBQUssWUFBWSxDQUFBO0FBRXZLLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBNEIsRUFBVSxFQUFFO0lBQzdELE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ3RFLE1BQU0sSUFBSSxHQUNSLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QixLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkQsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUVsRCxPQUFPLElBQUk7U0FDUixHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFBLHdCQUFXLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNwRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDYixDQUFDLENBQUE7QUFFRCw0RUFBNEU7QUFDNUUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQW1DLEVBQVUsRUFBRSxDQUN6RSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBQy9ELENBQUMsQ0FBQyxrQ0FBa0MsSUFBQSxnQkFBVSxFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVk7SUFDeEYsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUVELE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsS0FBbUMsRUFDbkMsTUFBc0IsRUFDdEIsUUFBZ0IsRUFDUixFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEQsTUFBTSxRQUFRLEdBQUc7UUFDZixFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUN0RDtZQUNFLEtBQUssRUFBRSxZQUFZO1lBQ25CLEtBQUssRUFBRSxJQUFBLGlDQUFvQixFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQ3BEO0tBQ0YsQ0FBQTtJQUNELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNaLEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsc0JBQXNCLElBQUksR0FBRztTQUNwRCxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RFLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDWixLQUFLLEVBQUUsWUFBWTtZQUNuQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsbUJBQW1CO1NBQ3RELENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ1osS0FBSyxFQUFFLE9BQU87UUFDZCxLQUFLLEVBQUUsSUFBQSwyQkFBa0IsRUFBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7S0FDOUQsQ0FBQyxDQUFBO0lBRUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUN4QixNQUFNLElBQUksR0FBRzs7NkJBRWMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7O1VBRS9DLGNBQWMsQ0FBQyxlQUFlLEVBQUUsSUFBQSx3QkFBVyxFQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztVQUM3RCxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUEsd0JBQVcsRUFBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7VUFDN0QsY0FBYyxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztVQUNwRCxhQUFhLENBQUMsS0FBSyxDQUFDO1VBQ3BCLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBQSx3QkFBVyxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUM7OztNQUd0RSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7TUFDMUIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQTtJQUUvQixPQUFPLE1BQU0sQ0FBQztRQUNaLElBQUk7UUFDSixhQUFhLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDM0IsUUFBUTtRQUNSLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07UUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ3ZCLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDO0tBQ2hDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQXJEWSxRQUFBLHVCQUF1QiwyQkFxRG5DIn0=
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLWRvY3VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvZmluYW5jaWFsLWRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHFDQUlpQjtBQUNqQiwwQ0FBNkM7QUFDN0MsNkNBQWdFO0FBQ2hFLHFDQUFpRTtBQU9qRSxNQUFNLFlBQVksR0FBRztJQUNuQixZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsY0FBYztRQUN0QixLQUFLLEVBQUUsZ0JBQWdCO0tBQ3hCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixLQUFLLEVBQUUsWUFBWTtLQUNwQjtJQUNELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsS0FBSyxFQUFFLFVBQVU7S0FDbEI7Q0FJRixDQUFBO0FBRUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUE0QixFQUFVLEVBQUU7SUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUE7SUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxJQUFBLGdCQUFVLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxPQUFPO1FBQ2YsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDcEMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDWixPQUFPLENBQUMsU0FBUztRQUNqQixPQUFPLENBQUMsU0FBUztRQUNqQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQzthQUNo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
@@ -57,6 +57,9 @@ const createCancellationSnapshot = (input) => {
57
57
  const taxBreakdown = (0, tax_breakdown_1.roundTaxBreakdown)(sourceInvoice.totals.tax_breakdown.map((entry) => ({
58
58
  ...entry,
59
59
  tax_total: scale(entry.tax_total),
60
+ ...(entry.taxable_amount
61
+ ? { taxable_amount: scale(entry.taxable_amount) }
62
+ : {}),
60
63
  })), taxTotal);
61
64
  const total = {
62
65
  amount: refundAmount.negated().toFixed((0, lib_1.getCurrencyDecimalPlaces)(currencyCode)),
@@ -95,4 +98,4 @@ const createCancellationSnapshot = (input) => {
95
98
  };
96
99
  };
97
100
  exports.createCancellationSnapshot = createCancellationSnapshot;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsbGF0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvZG9jdW1lbnRzL2RvbWFpbi9jYW5jZWxsYXRpb24tc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBTWxELHFFQUFvRTtBQUNwRSw2Q0FBOEQ7QUFDOUQsbURBQW1EO0FBRW5ELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxNQUFNLEdBQUcsY0FBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxzQ0FBc0MsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUs3QixFQUFpQixFQUFFO0lBQ2xCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBQSw4QkFBd0IsRUFBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDbkUsTUFBTSxNQUFNLEdBQUcsY0FBTSxDQUFDLElBQUksQ0FDeEIsY0FBTSxDQUFDLEdBQUcsQ0FBQyxjQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUNsRSxL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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsbGF0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvZG9jdW1lbnRzL2RvbWFpbi9jYW5jZWxsYXRpb24tc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBTWxELHFFQUFvRTtBQUNwRSw2Q0FBOEQ7QUFDOUQsbURBQW1EO0FBRW5ELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxNQUFNLEdBQUcsY0FBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxzQ0FBc0MsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUs3QixFQUFpQixFQUFFO0lBQ2xCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBQSw4QkFBd0IsRUFBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDbkUsTUFBTSxNQUFNLEdBQUcsY0FBTSxDQUFDLElBQUksQ0FDeEIsY0FBTSxDQUFDLEdBQUcsQ0FBQyxjQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUNsRSxL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
@@ -3,33 +3,99 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.roundTaxBreakdown = exports.groupTaxLines = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const lib_1 = require("../../../shared/lib");
6
+ const groupKey = (line) => JSON.stringify([line.name, line.code, line.rate]);
7
+ /**
8
+ * Splits an apportioned shipping tax line (Tax Compliance's "Anteilige
9
+ * Versandsteuer") back onto the item tax groups by their items' net amount
10
+ * after discounts, the key Tax Compliance weights the rate by: each group
11
+ * gets its share of the shipping net amount and the tax of that share at
12
+ * its own rate. Returns false when the items have no net amount to split by.
13
+ */
14
+ const splitApportionedShipping = (line, itemGroups) => {
15
+ const totalWeight = utils_1.MathBN.sum(0, ...itemGroups.map((group) => group.itemTaxable));
16
+ const totalWeightedRate = utils_1.MathBN.sum(0, ...itemGroups.map((group) => utils_1.MathBN.mult(group.itemTaxable, group.rate)));
17
+ if (!utils_1.MathBN.gt(totalWeight, 0) ||
18
+ (!utils_1.MathBN.gt(totalWeightedRate, 0) && !utils_1.MathBN.eq(line.amount, 0))) {
19
+ return false;
20
+ }
21
+ for (const group of itemGroups) {
22
+ group.taxable = utils_1.MathBN.add(group.taxable, utils_1.MathBN.div(utils_1.MathBN.mult(line.taxable_amount, group.itemTaxable), totalWeight));
23
+ if (utils_1.MathBN.gt(totalWeightedRate, 0)) {
24
+ group.tax = utils_1.MathBN.add(group.tax, utils_1.MathBN.div(utils_1.MathBN.mult(line.amount, utils_1.MathBN.mult(group.itemTaxable, group.rate)), totalWeightedRate));
25
+ }
26
+ }
27
+ return true;
28
+ };
6
29
  /**
7
30
  * Sums item and shipping tax lines per configured tax rate. Lines with the
8
31
  * same name and percentage form one entry; first occurrence defines order.
32
+ * Shipping follows the items' rates: an apportioned shipping line is split
33
+ * onto the item rates, and shipping taxed at the rate of a cart with one
34
+ * item tax group joins that group. Any other shipping tax keeps its own row.
9
35
  */
10
- const groupTaxLines = (lines, currencyCode) => {
36
+ const groupTaxLines = (itemLines, shippingLines, currencyCode) => {
11
37
  const groups = new Map();
12
- for (const line of lines) {
13
- const key = JSON.stringify([line.name, line.code, line.rate]);
14
- const group = groups.get(key);
15
- groups.set(key, {
38
+ const groupFor = (line) => {
39
+ const key = groupKey(line);
40
+ const existing = groups.get(key);
41
+ if (existing) {
42
+ return existing;
43
+ }
44
+ const group = {
16
45
  name: line.name,
17
46
  code: line.code,
18
47
  rate: line.rate,
19
- tax_total: {
20
- amount: utils_1.MathBN.add(group?.tax_total.amount ?? 0, line.amount).toFixed(),
21
- currency_code: currencyCode,
22
- },
23
- });
48
+ tax: utils_1.MathBN.convert(0),
49
+ taxable: utils_1.MathBN.convert(0),
50
+ itemTaxable: utils_1.MathBN.convert(0),
51
+ };
52
+ groups.set(key, group);
53
+ return group;
54
+ };
55
+ for (const line of itemLines) {
56
+ const group = groupFor(line);
57
+ group.tax = utils_1.MathBN.add(group.tax, line.amount);
58
+ group.taxable = utils_1.MathBN.add(group.taxable, line.taxable_amount);
59
+ group.itemTaxable = utils_1.MathBN.add(group.itemTaxable, line.taxable_amount);
24
60
  }
25
- return [...groups.values()];
61
+ const itemGroups = [...groups.values()];
62
+ for (const line of shippingLines) {
63
+ if (line.code === lib_1.APPORTIONED_SHIPPING_TAX_CODE &&
64
+ splitApportionedShipping(line, itemGroups)) {
65
+ continue;
66
+ }
67
+ const group = itemGroups.length === 1 && itemGroups[0].rate === line.rate
68
+ ? itemGroups[0]
69
+ : groupFor(line);
70
+ group.tax = utils_1.MathBN.add(group.tax, line.amount);
71
+ group.taxable = utils_1.MathBN.add(group.taxable, line.taxable_amount);
72
+ }
73
+ return [...groups.values()].map((group) => ({
74
+ name: group.name,
75
+ code: group.code,
76
+ rate: group.rate,
77
+ tax_total: { amount: group.tax.toFixed(), currency_code: currencyCode },
78
+ taxable_amount: {
79
+ amount: group.taxable.toFixed(),
80
+ currency_code: currencyCode,
81
+ },
82
+ }));
26
83
  };
27
84
  exports.groupTaxLines = groupTaxLines;
85
+ /** Rounds every amount and adds the residue to `target` to the largest one. */
86
+ const roundToTarget = (amounts, target, decimalPlaces) => {
87
+ const rounded = amounts.map((amount) => amount.decimalPlaces(decimalPlaces));
88
+ const residue = utils_1.MathBN.sub(target, utils_1.MathBN.sum(...rounded));
89
+ const largestIndex = rounded.reduce((largest, amount, index) => utils_1.MathBN.gt(amount.abs(), rounded[largest].abs()) ? index : largest, 0);
90
+ rounded[largestIndex] = utils_1.MathBN.add(rounded[largestIndex], residue);
91
+ return { rounded, residue };
92
+ };
28
93
  /**
29
94
  * Rounds every entry to the currency's minor unit and assigns the rounding
30
95
  * residue to the largest entry, so the printed rows add up exactly to the
31
96
  * printed tax total. A residue larger than the accumulated rounding error
32
- * means the entries do not describe the total and is rejected.
97
+ * means the entries do not describe the total and is rejected. Net amounts
98
+ * are rounded the same way to their own rounded sum.
33
99
  */
34
100
  const roundTaxBreakdown = (entries, taxTotal) => {
35
101
  if (entries.length === 0) {
@@ -37,27 +103,35 @@ const roundTaxBreakdown = (entries, taxTotal) => {
37
103
  }
38
104
  const currencyCode = taxTotal.currency_code;
39
105
  const decimalPlaces = (0, lib_1.getCurrencyDecimalPlaces)(currencyCode);
40
- const target = utils_1.MathBN.convert(taxTotal.amount).decimalPlaces(decimalPlaces);
41
- const rounded = entries.map((entry) => {
42
- if (entry.tax_total.currency_code !== currencyCode) {
106
+ const money = (amount) => ({
107
+ amount: amount.toFixed(decimalPlaces),
108
+ currency_code: currencyCode,
109
+ });
110
+ for (const entry of entries) {
111
+ if (entry.tax_total.currency_code !== currencyCode ||
112
+ (entry.taxable_amount &&
113
+ entry.taxable_amount.currency_code !== currencyCode)) {
43
114
  throw new Error("The tax breakdown contains mixed currencies.");
44
115
  }
45
- return utils_1.MathBN.convert(entry.tax_total.amount).decimalPlaces(decimalPlaces);
46
- });
47
- const residue = utils_1.MathBN.sub(target, utils_1.MathBN.sum(...rounded));
116
+ }
117
+ const tax = roundToTarget(entries.map((entry) => utils_1.MathBN.convert(entry.tax_total.amount)), utils_1.MathBN.convert(taxTotal.amount).decimalPlaces(decimalPlaces), decimalPlaces);
48
118
  const minorUnit = utils_1.MathBN.convert(10).pow(-decimalPlaces);
49
- if (utils_1.MathBN.gt(residue.abs(), utils_1.MathBN.mult(minorUnit, entries.length))) {
119
+ if (utils_1.MathBN.gt(tax.residue.abs(), utils_1.MathBN.mult(minorUnit, entries.length))) {
50
120
  throw new Error("The tax breakdown does not match the tax total.");
51
121
  }
52
- const largestIndex = rounded.reduce((largest, amount, index) => utils_1.MathBN.gt(amount.abs(), rounded[largest].abs()) ? index : largest, 0);
53
- rounded[largestIndex] = utils_1.MathBN.add(rounded[largestIndex], residue);
54
- return entries.map((entry, index) => ({
55
- ...entry,
56
- tax_total: {
57
- amount: rounded[index].toFixed(decimalPlaces),
58
- currency_code: currencyCode,
59
- },
60
- }));
122
+ const taxableAmounts = entries.map((entry) => entry.taxable_amount ? utils_1.MathBN.convert(entry.taxable_amount.amount) : null);
123
+ const knownTaxableAmounts = taxableAmounts.filter((amount) => amount !== null);
124
+ const taxable = knownTaxableAmounts.length === entries.length
125
+ ? roundToTarget(knownTaxableAmounts, utils_1.MathBN.sum(...knownTaxableAmounts).decimalPlaces(decimalPlaces), decimalPlaces).rounded
126
+ : null;
127
+ return entries.map((entry, index) => {
128
+ const { taxable_amount: _taxableAmount, ...rest } = entry;
129
+ return {
130
+ ...rest,
131
+ tax_total: money(tax.rounded[index]),
132
+ ...(taxable ? { taxable_amount: money(taxable[index]) } : {}),
133
+ };
134
+ });
61
135
  };
62
136
  exports.roundTaxBreakdown = roundTaxBreakdown;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWJyZWFrZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9kb21haW4vdGF4LWJyZWFrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBa0Q7QUFFbEQsNkNBQThEO0FBYTlEOzs7R0FHRztBQUNJLE1BQU0sYUFBYSxHQUFHLENBQzNCLEtBQXNCLEVBQ3RCLFlBQW9CLEVBQ1MsRUFBRTtJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQTtJQUMzRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDN0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFNBQVMsRUFBRTtnQkFDVCxNQUFNLEVBQUUsY0FBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDdkUsYUFBYSxFQUFFLFlBQVk7YUFDNUI7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDN0IsQ0FBQyxDQUFBO0FBcEJZLFFBQUEsYUFBYSxpQkFvQnpC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
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWJyZWFrZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9kb21haW4vdGF4LWJyZWFrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBa0Q7QUFFbEQsNkNBRzRCO0FBNEI1QixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQW1ELEVBQUUsRUFBRSxDQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBRW5EOzs7Ozs7R0FNRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsSUFBbUIsRUFDbkIsVUFBbUIsRUFDVixFQUFFO0lBQ1gsTUFBTSxXQUFXLEdBQUcsY0FBTSxDQUFDLEdBQUcsQ0FDNUIsQ0FBQyxFQUNELEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUNoRCxDQUFBO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxjQUFNLENBQUMsR0FBRyxDQUNsQyxDQUFDLEVBQ0QsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxjQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pFLENBQUE7SUFDRCxJQUNFLENBQUMsY0FBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxjQUFNLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2hFLENBQUM7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
@@ -24,7 +24,8 @@ __exportStar(require("./hash"), exports);
24
24
  __exportStar(require("./logging"), exports);
25
25
  __exportStar(require("./money"), exports);
26
26
  __exportStar(require("./refreshing-snapshot"), exports);
27
+ __exportStar(require("./shipping-tax"), exports);
27
28
  __exportStar(require("./text"), exports);
28
29
  __exportStar(require("./transaction"), exports);
29
30
  __exportStar(require("./wire-response"), exports);
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQXVFO0FBQ3ZFLHFDQUFxQztBQUNyQywyQ0FBd0I7QUFDeEIsZ0RBQTZCO0FBQzdCLDBDQUF1QjtBQUN2QiwyQ0FBd0I7QUFDeEIseUNBQXNCO0FBQ3RCLDRDQUF5QjtBQUN6QiwwQ0FBdUI7QUFDdkIsd0RBQXFDO0FBQ3JDLHlDQUFzQjtBQUN0QixnREFBNkI7QUFDN0Isa0RBQStCIn0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQXVFO0FBQ3ZFLHFDQUFxQztBQUNyQywyQ0FBd0I7QUFDeEIsZ0RBQTZCO0FBQzdCLDBDQUF1QjtBQUN2QiwyQ0FBd0I7QUFDeEIseUNBQXNCO0FBQ3RCLDRDQUF5QjtBQUN6QiwwQ0FBdUI7QUFDdkIsd0RBQXFDO0FBQ3JDLGlEQUE4QjtBQUM5Qix5Q0FBc0I7QUFDdEIsZ0RBQTZCO0FBQzdCLGtEQUErQiJ9
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPORTIONED_SHIPPING_TAX_CODE = void 0;
4
+ /**
5
+ * Code of a shipping tax line whose rate is the item rates weighted by the
6
+ * items' net amount after discounts (shipping follows the main supplies,
7
+ * split by their Entgelt). Tax Compliance writes it; Documents splits such a
8
+ * line back onto the item tax rates by the same key, because an invoice
9
+ * states the tax per actual rate.
10
+ */
11
+ exports.APPORTIONED_SHIPPING_TAX_CODE = "shipping_blended";
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctdGF4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3NoYXJlZC9saWIvc2hpcHBpbmctdGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7R0FNRztBQUNVLFFBQUEsNkJBQTZCLEdBQUcsa0JBQWtCLENBQUEifQ==
@@ -77,29 +77,32 @@ const asTaxRate = (value, field) => {
77
77
  return rate;
78
78
  };
79
79
  /** Reads the calculated tax lines of order items and shipping methods. */
80
- const toTaxLineAmounts = (owners, field) => {
81
- if (!Array.isArray(owners)) {
80
+ /** Net amount of an item or shipping method after discounts. */
81
+ const netAfterDiscounts = (owner) => utils_1.MathBN.sub(asAmount(owner.total), asAmount(owner.tax_total)).toFixed();
82
+ const toTaxLineAmountsOf = (owner, field) => {
83
+ const taxLines = owner.tax_lines;
84
+ if (!Array.isArray(taxLines) || taxLines.length === 0) {
82
85
  return [];
83
86
  }
84
- return owners.flatMap((owner) => {
85
- const taxLines = asRecord(owner, `order.${field}[]`).tax_lines;
86
- if (!Array.isArray(taxLines)) {
87
- return [];
88
- }
89
- return taxLines.map((value) => {
90
- const taxLine = asRecord(value, `order.${field}[].tax_lines[]`);
91
- const code = asOptionalString(taxLine.code);
92
- return {
93
- name: asOptionalString(taxLine.description)?.trim() ||
94
- code?.trim() ||
95
- "Umsatzsteuer",
96
- code,
97
- rate: asTaxRate(taxLine.rate, `order.${field}[].tax_lines[].rate`),
98
- amount: asAmount(taxLine.total),
99
- };
100
- });
87
+ const taxableAmount = netAfterDiscounts(owner);
88
+ return taxLines.map((value) => {
89
+ const taxLine = asRecord(value, `order.${field}[].tax_lines[]`);
90
+ const code = asOptionalString(taxLine.code);
91
+ return {
92
+ name: asOptionalString(taxLine.description)?.trim() ||
93
+ code?.trim() ||
94
+ "Umsatzsteuer",
95
+ code,
96
+ rate: asTaxRate(taxLine.rate, `order.${field}[].tax_lines[].rate`),
97
+ amount: asAmount(taxLine.total),
98
+ taxable_amount: taxableAmount,
99
+ };
101
100
  });
102
101
  };
102
+ const toItemTaxLineAmounts = (items) => items.flatMap((value) => toTaxLineAmountsOf(asRecord(value, "order.items[]"), "items"));
103
+ const toShippingTaxLineAmounts = (shippingMethods) => Array.isArray(shippingMethods)
104
+ ? shippingMethods.flatMap((value) => toTaxLineAmountsOf(asRecord(value, "order.shipping_methods[]"), "shipping_methods"))
105
+ : [];
103
106
  const toAddress = (value) => {
104
107
  const address = (0, lib_1.asRecordOrNull)(value);
105
108
  if (!address) {
@@ -182,23 +185,27 @@ const toInvoiceSource = (rawOrder, batchAllocations, taxCompliance) => {
182
185
  const lineId = asRequiredString(item.id, "order.items[].id");
183
186
  const variant = (0, lib_1.asRecordOrNull)(item.variant);
184
187
  const batchAllocations = allocationsByLine[lineId] ?? [];
188
+ const quantity = asQuantity(item.quantity, "order.items[].quantity");
189
+ const subtotal = toMoney(item.subtotal, currencyCode);
185
190
  return {
186
191
  id: lineId,
187
192
  title: asRequiredString(item.title, "order.items[].title"),
188
193
  sku: asOptionalString(variant?.sku) ?? asOptionalString(item.variant_sku),
189
- quantity: asQuantity(item.quantity, "order.items[].quantity"),
190
- unit_price: toMoney(item.unit_price, currencyCode),
191
- subtotal: toMoney(item.subtotal, currencyCode),
194
+ quantity,
195
+ // Net like the subtotal it multiplies to; Medusa's unit_price is gross
196
+ // for tax-inclusive prices.
197
+ unit_price: {
198
+ amount: utils_1.MathBN.div(subtotal.amount, quantity).toFixed(),
199
+ currency_code: currencyCode,
200
+ },
201
+ subtotal,
192
202
  tax_total: toMoney(item.tax_total, currencyCode),
193
203
  total: toMoney(item.total, currencyCode),
194
204
  batch_allocations: batchAllocations.map((allocation) => ({ ...allocation })),
195
205
  };
196
206
  });
197
207
  const taxTotal = toMoney(rawOrder.tax_total, currencyCode);
198
- const taxBreakdown = (0, tax_breakdown_1.roundTaxBreakdown)((0, tax_breakdown_1.groupTaxLines)([
199
- ...toTaxLineAmounts(rawItems, "items"),
200
- ...toTaxLineAmounts(rawOrder.shipping_methods, "shipping_methods"),
201
- ], currencyCode), taxTotal);
208
+ const taxBreakdown = (0, tax_breakdown_1.roundTaxBreakdown)((0, tax_breakdown_1.groupTaxLines)(toItemTaxLineAmounts(rawItems), toShippingTaxLineAmounts(rawOrder.shipping_methods), currencyCode), taxTotal);
202
209
  return {
203
210
  order: {
204
211
  id: asRequiredString(rawOrder.id, "order.id"),
@@ -210,11 +217,14 @@ const toInvoiceSource = (rawOrder, batchAllocations, taxCompliance) => {
210
217
  },
211
218
  lines,
212
219
  totals: {
213
- subtotal: toMoney(rawOrder.subtotal, currencyCode),
220
+ // Net amounts before discounts, so Zwischensumme + Versand - Rabatt +
221
+ // USt adds up to the total. Medusa's order `subtotal` already includes
222
+ // shipping, and its `shipping_total`/`discount_total` are gross.
223
+ subtotal: toMoney(rawOrder.item_subtotal, currencyCode),
214
224
  tax_total: taxTotal,
215
225
  tax_breakdown: taxBreakdown,
216
- shipping_total: toMoney(rawOrder.shipping_total, currencyCode),
217
- discount_total: toMoney(rawOrder.discount_total, currencyCode),
226
+ shipping_total: toMoney(rawOrder.shipping_subtotal, currencyCode),
227
+ discount_total: toMoney(rawOrder.discount_subtotal, currencyCode),
218
228
  total: toMoney(rawOrder.total, currencyCode),
219
229
  },
220
230
  };
@@ -260,11 +270,12 @@ const resolveInvoiceCandidateStep = (0, workflows_sdk_1.createStep)("documents-r
260
270
  "items.*",
261
271
  "items.variant.sku",
262
272
  "items.tax_lines.*",
273
+ "shipping_methods.*",
263
274
  "shipping_methods.tax_lines.*",
264
- "subtotal",
275
+ "item_subtotal",
265
276
  "tax_total",
266
- "shipping_total",
267
- "discount_total",
277
+ "shipping_subtotal",
278
+ "discount_subtotal",
268
279
  "total",
269
280
  ],
270
281
  },
@@ -516,4 +527,4 @@ exports.issueInvoiceAfterShipmentWorkflow = (0, workflows_sdk_1.createWorkflow)(
516
527
  });
517
528
  return new workflows_sdk_1.WorkflowResponse(issuedDocumentId);
518
529
  });
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNzdWUtaW52b2ljZS1hZnRlci1zaGlwbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZG9jdW1lbnRzL2lzc3VlLWludm9pY2UtYWZ0ZXItc2hpcG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBSWtDO0FBQ2xDLHFFQU0wQztBQUMxQyw0REFBb0U7QUFTcEUsa0ZBSXNEO0FBQ3RELGdGQUlxRDtBQUNyRCw0RkFBbUc7QUFDbkcsNEZBQThGO0FBQzlGLDZFQUFnRjtBQUNoRiwwQ0FJeUI7QUFDekIscURBT3lCO0FBQ3pCLHFFQUFtRTtBQTREbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQUUsS0FBYSxFQUEyQixFQUFFO0lBQzFFLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLGFBQWEsS0FBSyxvQkFBb0IsQ0FDdkMsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLEtBQWdDLENBQUE7QUFDekMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxLQUFhLEVBQVUsRUFBRTtJQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsYUFBYSxLQUFLLDZCQUE2QixDQUNoRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sZ0JBQWdCLEdBQUcsQ0FB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
530
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNzdWUtaW52b2ljZS1hZnRlci1zaGlwbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZG9jdW1lbnRzL2lzc3VlLWludm9pY2UtYWZ0ZXItc2hpcG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBS2tDO0FBQ2xDLHFFQU0wQztBQUMxQyw0REFBb0U7QUFTcEUsa0ZBSXNEO0FBQ3RELGdGQUlxRDtBQUNyRCw0RkFBbUc7QUFDbkcsNEZBQThGO0FBQzlGLDZFQUFnRjtBQUNoRiwwQ0FJeUI7QUFDekIscURBT3lCO0FBQ3pCLHFFQUFtRTtBQTREbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQUUsS0FBYSxFQUEyQixFQUFFO0lBQzFFLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLGFBQWEsS0FBSyxvQkFBb0IsQ0FDdkMsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLEtBQWdDLENBQUE7QUFDekMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxLQUFhLEVBQVUsRUFBRTtJQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsYUFBYSxLQUFLLDZCQUE2QixDQUNoRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sZ0JBQWdCLEdBQUcsQ0FB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
package/README.md CHANGED
@@ -2374,10 +2374,24 @@ separate documents package since 1.0.0.
2374
2374
  persists the customer company, customer UID and exemption wording in that
2375
2375
  same snapshot. B2C and non-eligible evidence add no tax-proof statement.
2376
2376
  - Freezes a tax breakdown (`totals.tax_breakdown`) grouped by the order's
2377
- item and shipping tax-line name and rate, as configured on the Medusa tax
2378
- region. Amounts are rounded to the currency and add up exactly to the
2379
- tax total; cancellations scale it proportionally. Snapshots issued before
2380
- this field existed read as an empty breakdown.
2377
+ item tax-line name and rate, as configured on the Medusa tax region, with
2378
+ the tax and the net amount (`taxable_amount`, after discounts) per rate.
2379
+ Shipping follows the items: a shipping tax line with the code
2380
+ `APPORTIONED_SHIPPING_TAX_CODE` (`/lib`; Tax Compliance's "Anteilige
2381
+ Versandsteuer") is split back onto the item rates by the items' net
2382
+ amount after discounts, the key Tax Compliance weights it by, so the
2383
+ invoice never prints a weighted rate. Other shipping tax joins the items'
2384
+ row when the cart has one item rate equal to it, otherwise it keeps its
2385
+ own row.
2386
+ Amounts are rounded to the currency and add up exactly to the tax total;
2387
+ cancellations scale them proportionally. Snapshots issued before these
2388
+ fields existed read as an empty breakdown or without net amounts.
2389
+ - Prints net amounts before discounts: line unit price and "Summe",
2390
+ "Zwischensumme" (items), "Versand" (before a free-shipping promotion),
2391
+ then all promotions as one net "Rabatt" (only when there is a discount),
2392
+ the tax rows and the gross "Gesamt"; the rows add up to the total. With
2393
+ several tax rates each tax row also names its net amount ("AT Reduziert
2394
+ 10 % auf € 55,00").
2381
2395
  - Persists one immutable decision per shipped Fulfillment. A leased, Order-
2382
2396
  unique coordinator chooses exactly one invoice carrier without assuming
2383
2397
  event delivery order; all other shipments become `non_carrier`.
@@ -63,7 +63,7 @@ const renderLines = (input, timeZone) => input.lines
63
63
  </td>
64
64
  <td class="number quantity">${(0, lib_1.escapeHtml)(line.quantity)}</td>
65
65
  <td class="number">${(0, html_utils_1.renderMoney)(line.unit_price)}</td>
66
- <td class="number">${(0, html_utils_1.renderMoney)(line.total)}</td>
66
+ <td class="number">${(0, html_utils_1.renderMoney)(line.subtotal)}</td>
67
67
  </tr>`)
68
68
  .join("");
69
69
  const isExemptIntraCommunitySupply = (input) => input.order.tax_compliance?.exemption_wording ===
@@ -93,11 +93,30 @@ const formatTaxRate = (rate) => new Intl.NumberFormat(format_1.DEFAULT_FORMAT_LO
93
93
  }).format(rate / 100);
94
94
  /** One totals row below the Menge/Einzelpreis columns; the amount sits under "Summe". */
95
95
  const renderTotalRow = (label, value, className) => `<tr${className ? ` class="${className}"` : ""}><td class="spacer"></td><td class="label" colspan="2">${(0, lib_1.escapeHtml)(label)}</td><td class="number">${value}</td></tr>`;
96
+ /** No discount, no row. */
97
+ const renderDiscountRow = (input) => Number(input.totals.discount_total.amount) === 0
98
+ ? ""
99
+ : renderTotalRow("Rabatt", renderDiscountTotal(input));
100
+ /**
101
+ * One row per tax rate. With several rates each row also names its net
102
+ * amount, since an invoice states the amount taxed at every rate.
103
+ */
96
104
  const renderTaxRows = (input) => {
97
105
  const { tax_breakdown: breakdown, tax_total: taxTotal } = input.totals;
106
+ const withNetAmount = breakdown.length > 1;
98
107
  const rows = breakdown.length > 0
99
108
  ? breakdown.map((entry) => ({
100
- label: `${entry.name} ${formatTaxRate(entry.rate)}`,
109
+ label: [
110
+ `${entry.name} ${formatTaxRate(entry.rate)}`,
111
+ withNetAmount && entry.taxable_amount
112
+ ? `auf ${(0, format_1.formatMoney)({
113
+ amount: entry.taxable_amount.amount,
114
+ currencyCode: entry.taxable_amount.currency_code,
115
+ })}`
116
+ : null,
117
+ ]
118
+ .filter((part) => Boolean(part))
119
+ .join(" "),
101
120
  money: entry.tax_total,
102
121
  }))
103
122
  : [{ label: "Umsatzsteuer", money: taxTotal }];
@@ -141,7 +160,7 @@ const renderFinancialDocument = (input, layout, timeZone) => {
141
160
  <tbody class="totals">
142
161
  ${renderTotalRow("Zwischensumme", (0, html_utils_1.renderMoney)(totals.subtotal))}
143
162
  ${renderTotalRow("Versand", (0, html_utils_1.renderMoney)(totals.shipping_total))}
144
- ${renderTotalRow("Rabatt", renderDiscountTotal(input))}
163
+ ${renderDiscountRow(input)}
145
164
  ${renderTaxRows(input)}
146
165
  ${renderTotalRow("Gesamt", (0, html_utils_1.renderMoney)(totals.total), "grand-total")}
147
166
  </tbody>
@@ -40,13 +40,20 @@ export type DocumentTaxBreakdownEntry = {
40
40
  code: string | null;
41
41
  rate: number;
42
42
  tax_total: DocumentMoney;
43
+ /**
44
+ * Net amount taxed at this rate (items and their share of shipping, after
45
+ * discounts). Missing in snapshots issued before it was recorded.
46
+ */
47
+ taxable_amount?: DocumentMoney;
43
48
  };
44
49
  export type DocumentTemplateLine = {
45
50
  id: string;
46
51
  title: string;
47
52
  sku: string | null;
48
53
  quantity: number;
54
+ /** Net, before discounts (older invoice snapshots: Medusa's unit price). */
49
55
  unit_price: DocumentMoney;
56
+ /** Net, before discounts; printed under "Summe". */
50
57
  subtotal: DocumentMoney;
51
58
  tax_total: DocumentMoney;
52
59
  total: DocumentMoney;
@@ -74,6 +81,12 @@ export type DocumentTemplateInput = {
74
81
  tax_compliance: DocumentTaxComplianceDTO | null;
75
82
  };
76
83
  lines: DocumentTemplateLine[];
84
+ /**
85
+ * Subtotal (items) and shipping are net amounts before discounts, the
86
+ * discount is net, so they add up with the tax to the total. Older invoice
87
+ * snapshots carry Medusa's order subtotal (items plus shipping) and gross
88
+ * shipping and discount totals.
89
+ */
77
90
  totals: {
78
91
  subtotal: DocumentMoney;
79
92
  tax_total: DocumentMoney;
@@ -6,6 +6,7 @@ export * from "./hash";
6
6
  export * from "./logging";
7
7
  export * from "./money";
8
8
  export * from "./refreshing-snapshot";
9
+ export * from "./shipping-tax";
9
10
  export * from "./text";
10
11
  export * from "./transaction";
11
12
  export * from "./wire-response";
@@ -24,6 +24,7 @@ __exportStar(require("./hash"), exports);
24
24
  __exportStar(require("./logging"), exports);
25
25
  __exportStar(require("./money"), exports);
26
26
  __exportStar(require("./refreshing-snapshot"), exports);
27
+ __exportStar(require("./shipping-tax"), exports);
27
28
  __exportStar(require("./text"), exports);
28
29
  __exportStar(require("./transaction"), exports);
29
30
  __exportStar(require("./wire-response"), exports);
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Code of a shipping tax line whose rate is the item rates weighted by the
3
+ * items' net amount after discounts (shipping follows the main supplies,
4
+ * split by their Entgelt). Tax Compliance writes it; Documents splits such a
5
+ * line back onto the item tax rates by the same key, because an invoice
6
+ * states the tax per actual rate.
7
+ */
8
+ export declare const APPORTIONED_SHIPPING_TAX_CODE = "shipping_blended";
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPORTIONED_SHIPPING_TAX_CODE = void 0;
4
+ /**
5
+ * Code of a shipping tax line whose rate is the item rates weighted by the
6
+ * items' net amount after discounts (shipping follows the main supplies,
7
+ * split by their Entgelt). Tax Compliance writes it; Documents splits such a
8
+ * line back onto the item tax rates by the same key, because an invoice
9
+ * states the tax per actual rate.
10
+ */
11
+ exports.APPORTIONED_SHIPPING_TAX_CODE = "shipping_blended";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hartl-services/medusa-base",
3
- "version": "2.9.0",
3
+ "version": "2.10.0",
4
4
  "description": "Base plugin for Hartl Services Medusa shops: per-plugin feature toggles with a generic Admin settings page, a Store endpoint for storefronts, enforcement helpers, the complete-cart hook composition, the root redirect, cart-promotion link repair, the built-in E-Mail, Documents and S3 file storage modules, config helpers with the turnkey food-shop preset, and the Sentry logger wrapper and instrumentation.",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -101,7 +101,7 @@
101
101
  "mime-types": "3.0.1",
102
102
  "nodemailer": "6.10.1",
103
103
  "ulid": "^2.4.0",
104
- "@hartl-services/medusa-food-supplements-contracts": "^0.29.0"
104
+ "@hartl-services/medusa-food-supplements-contracts": "^0.30.0"
105
105
  },
106
106
  "devDependencies": {
107
107
  "@medusajs/admin-sdk": "2.19.0",