@stamhoofd/structures 2.111.0 → 2.113.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.
- package/LICENSE.md +32 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/BalanceItem.d.ts +11 -0
- package/dist/src/BalanceItem.d.ts.map +1 -1
- package/dist/src/BalanceItem.js +41 -4
- package/dist/src/BalanceItem.js.map +1 -1
- package/dist/src/BalanceItemDetailed.d.ts +8 -0
- package/dist/src/BalanceItemDetailed.d.ts.map +1 -1
- package/dist/src/BalanceItemDetailed.js +11 -4
- package/dist/src/BalanceItemDetailed.js.map +1 -1
- package/dist/src/Company.d.ts +2 -0
- package/dist/src/Company.d.ts.map +1 -1
- package/dist/src/Company.js +26 -0
- package/dist/src/Company.js.map +1 -1
- package/dist/src/Organization.d.ts +5 -0
- package/dist/src/Organization.d.ts.map +1 -1
- package/dist/src/Organization.js +14 -0
- package/dist/src/Organization.js.map +1 -1
- package/dist/src/PaymentCustomer.d.ts +1 -0
- package/dist/src/PaymentCustomer.d.ts.map +1 -1
- package/dist/src/PaymentCustomer.js +23 -0
- package/dist/src/PaymentCustomer.js.map +1 -1
- package/dist/src/PriceBreakdown.d.ts +5 -0
- package/dist/src/PriceBreakdown.d.ts.map +1 -1
- package/dist/src/ReceivableBalance.d.ts +8 -0
- package/dist/src/ReceivableBalance.d.ts.map +1 -1
- package/dist/src/ReceivableBalance.js +11 -0
- package/dist/src/ReceivableBalance.js.map +1 -1
- package/dist/src/Version.d.ts +1 -1
- package/dist/src/Version.js +1 -1
- package/dist/src/addresses/Address.d.ts +1 -0
- package/dist/src/addresses/Address.d.ts.map +1 -1
- package/dist/src/addresses/Address.js +3 -0
- package/dist/src/addresses/Address.js.map +1 -1
- package/dist/src/billing/Invoice.d.ts +38 -2
- package/dist/src/billing/Invoice.d.ts.map +1 -1
- package/dist/src/billing/Invoice.js +250 -24
- package/dist/src/billing/Invoice.js.map +1 -1
- package/dist/src/billing/InvoicedBalanceItem.d.ts +13 -0
- package/dist/src/billing/InvoicedBalanceItem.d.ts.map +1 -1
- package/dist/src/billing/InvoicedBalanceItem.js +47 -5
- package/dist/src/billing/InvoicedBalanceItem.js.map +1 -1
- package/dist/src/billing/index.d.ts +1 -0
- package/dist/src/billing/index.d.ts.map +1 -1
- package/dist/src/billing/index.js +4 -0
- package/dist/src/billing/index.js.map +1 -1
- package/dist/src/email/Email.d.ts +2 -1
- package/dist/src/email/Email.d.ts.map +1 -1
- package/dist/src/email/Email.js +2 -1
- package/dist/src/email/Email.js.map +1 -1
- package/dist/src/email/EmailTemplate.d.ts +11 -0
- package/dist/src/email/EmailTemplate.d.ts.map +1 -1
- package/dist/src/email/EmailTemplate.js +41 -0
- package/dist/src/email/EmailTemplate.js.map +1 -1
- package/dist/src/endpoints/UitpasNumbersGetDetailsRequest.d.ts +10 -0
- package/dist/src/endpoints/UitpasNumbersGetDetailsRequest.d.ts.map +1 -0
- package/dist/src/endpoints/UitpasNumbersGetDetailsRequest.js +38 -0
- package/dist/src/endpoints/UitpasNumbersGetDetailsRequest.js.map +1 -0
- package/dist/src/filters/searchFilterFactories.js +1 -1
- package/dist/src/filters/searchFilterFactories.js.map +1 -1
- package/dist/src/members/MemberDetails.d.ts +4 -1
- package/dist/src/members/MemberDetails.d.ts.map +1 -1
- package/dist/src/members/MemberDetails.js +39 -10
- package/dist/src/members/MemberDetails.js.map +1 -1
- package/dist/src/members/MemberDetails.test.js +144 -0
- package/dist/src/members/MemberDetails.test.js.map +1 -1
- package/dist/src/members/Payment.d.ts +2 -0
- package/dist/src/members/Payment.d.ts.map +1 -1
- package/dist/src/members/Payment.js +8 -0
- package/dist/src/members/Payment.js.map +1 -1
- package/dist/src/members/PlatformMember.d.ts.map +1 -1
- package/dist/src/members/PlatformMember.js +1 -1
- package/dist/src/members/PlatformMember.js.map +1 -1
- package/dist/src/members/ReviewTime.d.ts.map +1 -1
- package/dist/src/members/ReviewTime.js +1 -1
- package/dist/src/members/ReviewTime.js.map +1 -1
- package/dist/src/members/UitpasNumberDetails.d.ts +40 -0
- package/dist/src/members/UitpasNumberDetails.d.ts.map +1 -0
- package/dist/src/members/UitpasNumberDetails.js +95 -0
- package/dist/src/members/UitpasNumberDetails.js.map +1 -0
- package/dist/src/members/checkout/RegisterItem.d.ts +0 -1
- package/dist/src/members/checkout/RegisterItem.d.ts.map +1 -1
- package/dist/src/members/checkout/RegisterItem.js +0 -4
- package/dist/src/members/checkout/RegisterItem.js.map +1 -1
- package/dist/src/webshops/Customer.d.ts +2 -0
- package/dist/src/webshops/Customer.d.ts.map +1 -1
- package/dist/src/webshops/Customer.js +9 -0
- package/dist/src/webshops/Customer.js.map +1 -1
- package/esm/dist/index.d.ts +2 -0
- package/esm/dist/index.d.ts.map +1 -1
- package/esm/dist/index.js +2 -0
- package/esm/dist/index.js.map +1 -1
- package/esm/dist/src/BalanceItem.d.ts +11 -0
- package/esm/dist/src/BalanceItem.d.ts.map +1 -1
- package/esm/dist/src/BalanceItem.js +41 -5
- package/esm/dist/src/BalanceItem.js.map +1 -1
- package/esm/dist/src/BalanceItemDetailed.d.ts +8 -0
- package/esm/dist/src/BalanceItemDetailed.d.ts.map +1 -1
- package/esm/dist/src/BalanceItemDetailed.js +11 -4
- package/esm/dist/src/BalanceItemDetailed.js.map +1 -1
- package/esm/dist/src/Company.d.ts +2 -0
- package/esm/dist/src/Company.d.ts.map +1 -1
- package/esm/dist/src/Company.js +26 -0
- package/esm/dist/src/Company.js.map +1 -1
- package/esm/dist/src/Organization.d.ts +5 -0
- package/esm/dist/src/Organization.d.ts.map +1 -1
- package/esm/dist/src/Organization.js +14 -0
- package/esm/dist/src/Organization.js.map +1 -1
- package/esm/dist/src/PaymentCustomer.d.ts +1 -0
- package/esm/dist/src/PaymentCustomer.d.ts.map +1 -1
- package/esm/dist/src/PaymentCustomer.js +23 -0
- package/esm/dist/src/PaymentCustomer.js.map +1 -1
- package/esm/dist/src/PriceBreakdown.d.ts +5 -0
- package/esm/dist/src/PriceBreakdown.d.ts.map +1 -1
- package/esm/dist/src/ReceivableBalance.d.ts +8 -0
- package/esm/dist/src/ReceivableBalance.d.ts.map +1 -1
- package/esm/dist/src/ReceivableBalance.js +11 -0
- package/esm/dist/src/ReceivableBalance.js.map +1 -1
- package/esm/dist/src/Version.d.ts +1 -1
- package/esm/dist/src/Version.js +1 -1
- package/esm/dist/src/addresses/Address.d.ts +1 -0
- package/esm/dist/src/addresses/Address.d.ts.map +1 -1
- package/esm/dist/src/addresses/Address.js +3 -0
- package/esm/dist/src/addresses/Address.js.map +1 -1
- package/esm/dist/src/billing/Invoice.d.ts +38 -2
- package/esm/dist/src/billing/Invoice.d.ts.map +1 -1
- package/esm/dist/src/billing/Invoice.js +249 -24
- package/esm/dist/src/billing/Invoice.js.map +1 -1
- package/esm/dist/src/billing/InvoicedBalanceItem.d.ts +13 -0
- package/esm/dist/src/billing/InvoicedBalanceItem.d.ts.map +1 -1
- package/esm/dist/src/billing/InvoicedBalanceItem.js +47 -5
- package/esm/dist/src/billing/InvoicedBalanceItem.js.map +1 -1
- package/esm/dist/src/billing/index.d.ts +1 -0
- package/esm/dist/src/billing/index.d.ts.map +1 -1
- package/esm/dist/src/billing/index.js +2 -0
- package/esm/dist/src/billing/index.js.map +1 -1
- package/esm/dist/src/email/Email.d.ts +2 -1
- package/esm/dist/src/email/Email.d.ts.map +1 -1
- package/esm/dist/src/email/Email.js +2 -1
- package/esm/dist/src/email/Email.js.map +1 -1
- package/esm/dist/src/email/EmailTemplate.d.ts +11 -0
- package/esm/dist/src/email/EmailTemplate.d.ts.map +1 -1
- package/esm/dist/src/email/EmailTemplate.js +41 -0
- package/esm/dist/src/email/EmailTemplate.js.map +1 -1
- package/esm/dist/src/endpoints/UitpasNumbersGetDetailsRequest.d.ts +10 -0
- package/esm/dist/src/endpoints/UitpasNumbersGetDetailsRequest.d.ts.map +1 -0
- package/esm/dist/src/endpoints/UitpasNumbersGetDetailsRequest.js +34 -0
- package/esm/dist/src/endpoints/UitpasNumbersGetDetailsRequest.js.map +1 -0
- package/esm/dist/src/filters/searchFilterFactories.js +1 -1
- package/esm/dist/src/filters/searchFilterFactories.js.map +1 -1
- package/esm/dist/src/members/MemberDetails.d.ts +4 -1
- package/esm/dist/src/members/MemberDetails.d.ts.map +1 -1
- package/esm/dist/src/members/MemberDetails.js +39 -10
- package/esm/dist/src/members/MemberDetails.js.map +1 -1
- package/esm/dist/src/members/Payment.d.ts +2 -0
- package/esm/dist/src/members/Payment.d.ts.map +1 -1
- package/esm/dist/src/members/Payment.js +8 -0
- package/esm/dist/src/members/Payment.js.map +1 -1
- package/esm/dist/src/members/PlatformMember.d.ts.map +1 -1
- package/esm/dist/src/members/PlatformMember.js +1 -1
- package/esm/dist/src/members/PlatformMember.js.map +1 -1
- package/esm/dist/src/members/ReviewTime.d.ts.map +1 -1
- package/esm/dist/src/members/ReviewTime.js +1 -1
- package/esm/dist/src/members/ReviewTime.js.map +1 -1
- package/esm/dist/src/members/UitpasNumberDetails.d.ts +40 -0
- package/esm/dist/src/members/UitpasNumberDetails.d.ts.map +1 -0
- package/esm/dist/src/members/UitpasNumberDetails.js +90 -0
- package/esm/dist/src/members/UitpasNumberDetails.js.map +1 -0
- package/esm/dist/src/members/checkout/RegisterItem.d.ts +0 -1
- package/esm/dist/src/members/checkout/RegisterItem.d.ts.map +1 -1
- package/esm/dist/src/members/checkout/RegisterItem.js +0 -4
- package/esm/dist/src/members/checkout/RegisterItem.js.map +1 -1
- package/esm/dist/src/webshops/Customer.d.ts +2 -0
- package/esm/dist/src/webshops/Customer.d.ts.map +1 -1
- package/esm/dist/src/webshops/Customer.js +9 -0
- package/esm/dist/src/webshops/Customer.js.map +1 -1
- package/package.json +2 -2
- package/LICENSE +0 -665
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Invoice = exports.VATSubtotal = void 0;
|
|
3
|
+
exports.Invoice = exports.InvoiceTypeHelper = exports.InvoiceType = exports.VATSubtotal = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const simple_encoding_1 = require("@simonbackx/simple-encoding");
|
|
6
|
+
const simple_errors_1 = require("@simonbackx/simple-errors");
|
|
6
7
|
const uuid_1 = require("uuid");
|
|
8
|
+
const BalanceItem_js_1 = require("../BalanceItem.js");
|
|
7
9
|
const Company_js_1 = require("../Company.js");
|
|
8
10
|
const PaymentCustomer_js_1 = require("../PaymentCustomer.js");
|
|
9
11
|
const File_js_1 = require("../files/File.js");
|
|
12
|
+
const PaymentGeneral_js_1 = require("../members/PaymentGeneral.js");
|
|
10
13
|
const InvoicedBalanceItem_js_1 = require("./InvoicedBalanceItem.js");
|
|
11
|
-
const
|
|
14
|
+
const utility_1 = require("@stamhoofd/utility");
|
|
12
15
|
class VATSubtotal extends simple_encoding_1.AutoEncoder {
|
|
13
16
|
constructor() {
|
|
14
17
|
super(...arguments);
|
|
@@ -37,6 +40,20 @@ tslib_1.__decorate([
|
|
|
37
40
|
tslib_1.__decorate([
|
|
38
41
|
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.IntegerDecoder })
|
|
39
42
|
], VATSubtotal.prototype, "VAT", void 0);
|
|
43
|
+
var InvoiceType;
|
|
44
|
+
(function (InvoiceType) {
|
|
45
|
+
InvoiceType["Invoice"] = "Invoice";
|
|
46
|
+
InvoiceType["CreditNote"] = "CreditNote";
|
|
47
|
+
})(InvoiceType || (exports.InvoiceType = InvoiceType = {}));
|
|
48
|
+
class InvoiceTypeHelper {
|
|
49
|
+
static getName(type) {
|
|
50
|
+
switch (type) {
|
|
51
|
+
case InvoiceType.Invoice: return $t('fbf8fca6-33f0-4ecc-8317-0033f256827e');
|
|
52
|
+
case InvoiceType.CreditNote: return $t('4578aaf4-a15a-4c53-ad46-768b91d96a4e');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.InvoiceTypeHelper = InvoiceTypeHelper;
|
|
40
57
|
class Invoice extends simple_encoding_1.AutoEncoder {
|
|
41
58
|
constructor() {
|
|
42
59
|
super(...arguments);
|
|
@@ -55,6 +72,14 @@ class Invoice extends simple_encoding_1.AutoEncoder {
|
|
|
55
72
|
* The balance items that are invoiced, with their original price. This does not always correspond to the total price of the invoice, or the item prices on the invoice because prices are converted to prices excluding VAT and with PEPPOL rounding rules.
|
|
56
73
|
*/
|
|
57
74
|
this.items = [];
|
|
75
|
+
/**
|
|
76
|
+
* The total sum of an invoice should always match the total sum of the payments connected to it.
|
|
77
|
+
* On top of that, the amounts related to each balance item in the payments, should match the invoiced balance amount in each item in the invoice.
|
|
78
|
+
*
|
|
79
|
+
* Note, that this is a limitation. A payment can only be related to a single invoice. But an invoice can be for multiple payments.
|
|
80
|
+
* More flexibility is often unneeded and makes reconciliation unnecessary complex.
|
|
81
|
+
*/
|
|
82
|
+
this.payments = [];
|
|
58
83
|
/**
|
|
59
84
|
* This is the rounding amount in cents that is applied to the normal calculation of the invoiced balance items (prices exluding VAT) to come to the actual total price of the invoice.
|
|
60
85
|
*
|
|
@@ -86,6 +111,10 @@ class Invoice extends simple_encoding_1.AutoEncoder {
|
|
|
86
111
|
this.xml = null;
|
|
87
112
|
this.negativeInvoiceId = null;
|
|
88
113
|
this.didSendPeppol = false;
|
|
114
|
+
this.invoicedAt = null;
|
|
115
|
+
this.dueAt = null;
|
|
116
|
+
this.createdAt = new Date();
|
|
117
|
+
this.updatedAt = new Date();
|
|
89
118
|
}
|
|
90
119
|
get totalWithoutVAT() {
|
|
91
120
|
return this.items.reduce((sum, item) => sum + item.totalWithoutVAT, 0);
|
|
@@ -93,6 +122,9 @@ class Invoice extends simple_encoding_1.AutoEncoder {
|
|
|
93
122
|
get totalBalanceInvoicedAmount() {
|
|
94
123
|
return this.items.reduce((sum, item) => sum + item.balanceInvoicedAmount, 0);
|
|
95
124
|
}
|
|
125
|
+
get totalPaymentsAmount() {
|
|
126
|
+
return this.payments.reduce((sum, item) => sum + item.price, 0);
|
|
127
|
+
}
|
|
96
128
|
/**
|
|
97
129
|
* The difference between the totalWithVAT of the invoice and the sum of all balanceInvoicedAmount of the invoiced balance items.
|
|
98
130
|
* totalBalanceInvoicedAmount + balanceRoundingAmount = totalWithVAT
|
|
@@ -100,7 +132,7 @@ class Invoice extends simple_encoding_1.AutoEncoder {
|
|
|
100
132
|
* Best viewed as a virtual extra balance item linked to the invoice to compensate.
|
|
101
133
|
*
|
|
102
134
|
* This is used to explain and report why there is a difference between the sum of the balance item's prices and the actually invoiced price, comparable with roundingAmount on payments.
|
|
103
|
-
* - Say we invoice 3 items of 0,242 euro. The sum would be 0,726. The invoice total price might be 0,73 because of rounding rules. Then the balanceRoundingAmount would be
|
|
135
|
+
* - Say we invoice 3 items of 0,242 euro. The sum would be 0,726. The invoice total price might be 0,73 because of rounding rules. Then the balanceRoundingAmount would be 0,004.
|
|
104
136
|
*/
|
|
105
137
|
get balanceRoundingAmount() {
|
|
106
138
|
return this.totalWithVAT - this.totalBalanceInvoicedAmount;
|
|
@@ -118,41 +150,220 @@ class Invoice extends simple_encoding_1.AutoEncoder {
|
|
|
118
150
|
get totalWithVAT() {
|
|
119
151
|
return this.totalWithoutVAT + this.VATTotalAmount + this.payableRoundingAmount;
|
|
120
152
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
153
|
+
validateVATRates() {
|
|
154
|
+
let intra = false;
|
|
155
|
+
if (this.customer.company && this.customer.company.VATNumber && this.customer.company.address) {
|
|
156
|
+
if (this.seller.VATNumber && this.seller.address) {
|
|
157
|
+
// Reverse charged vat applicable?
|
|
158
|
+
if (this.customer.company.address.country !== this.seller.address.country) {
|
|
159
|
+
intra = true;
|
|
160
|
+
}
|
|
128
161
|
}
|
|
129
|
-
|
|
130
|
-
|
|
162
|
+
}
|
|
163
|
+
if (intra) {
|
|
164
|
+
for (const item of this.items) {
|
|
165
|
+
if (item.VATExcempt !== BalanceItem_js_1.VATExcemptReason.IntraCommunity) {
|
|
166
|
+
throw new simple_errors_1.SimpleError({
|
|
167
|
+
code: 'missing_vat_excemption',
|
|
168
|
+
message: 'Missing IntraCommunity VAT excemption',
|
|
169
|
+
human: $t('8b562a1d-e7c0-4110-b320-db535f0ea0e9'),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
131
172
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
for (const item of this.items) {
|
|
176
|
+
if (item.VATExcempt === BalanceItem_js_1.VATExcemptReason.IntraCommunity) {
|
|
177
|
+
throw new simple_errors_1.SimpleError({
|
|
178
|
+
code: 'erroneous_vat_excemption',
|
|
179
|
+
message: 'IntraCommunity VAT excemption should not apply to this item',
|
|
180
|
+
human: $t('d2c3f57f-ffae-45ea-97ce-3f4f30839cd6'),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
138
183
|
}
|
|
139
|
-
category.taxablePrice += item.totalWithoutVAT;
|
|
140
184
|
}
|
|
141
|
-
|
|
142
|
-
|
|
185
|
+
}
|
|
186
|
+
calculateVAT() {
|
|
187
|
+
// For every VAT category, calculate the taxable amount and VAT amount
|
|
188
|
+
this.VATTotal = InvoicedBalanceItem_js_1.InvoicedBalanceItem.groupPerVATCategory(this.items).map((items) => {
|
|
189
|
+
const category = new VATSubtotal();
|
|
190
|
+
category.VATPercentage = items[0].VATExcempt === null ? items[0].VATPercentage : 0;
|
|
191
|
+
category.VATExcempt = items[0].VATExcempt;
|
|
192
|
+
category.taxablePrice = items.reduce((a, b) => a + b.totalWithoutVAT, 0);
|
|
143
193
|
if (!category.VATExcempt) {
|
|
144
|
-
category.VAT =
|
|
194
|
+
category.VAT = utility_1.STMath.round(category.taxablePrice * category.VATPercentage / 10000) * 100;
|
|
145
195
|
}
|
|
146
196
|
else {
|
|
147
197
|
category.VAT = 0;
|
|
148
198
|
}
|
|
149
|
-
|
|
150
|
-
|
|
199
|
+
return category;
|
|
200
|
+
});
|
|
151
201
|
}
|
|
152
202
|
addItem(item) {
|
|
153
203
|
this.items.push(item);
|
|
154
204
|
this.calculateVAT();
|
|
155
205
|
}
|
|
206
|
+
get type() {
|
|
207
|
+
if (this.totalWithVAT < 0) {
|
|
208
|
+
return InvoiceType.CreditNote;
|
|
209
|
+
}
|
|
210
|
+
return InvoiceType.Invoice;
|
|
211
|
+
}
|
|
212
|
+
get theme() {
|
|
213
|
+
if (this.type === InvoiceType.CreditNote) {
|
|
214
|
+
return 'theme-error';
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
get priceBreakdown() {
|
|
218
|
+
return this.getPriceBreakdown();
|
|
219
|
+
}
|
|
220
|
+
getPriceBreakdown(options) {
|
|
221
|
+
return [
|
|
222
|
+
{
|
|
223
|
+
name: $t(`d642f190-1607-4f54-8530-7af2f15c651b`),
|
|
224
|
+
price: this.totalWithoutVAT,
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: $t(`13c04b8f-80f5-4274-9ea1-badb0f88a091`) + (this.VATTotal.length === 1 ? ' (' + utility_1.Formatter.percentage(this.VATTotal[0].VATPercentage * 100) + ')' : ''),
|
|
228
|
+
description: this.VATTotal.length === 1 && this.VATTotal[0].VATExcempt ? (0, BalanceItem_js_1.getVATExcemptInvoiceNote)(this.VATTotal[0].VATExcempt) : undefined,
|
|
229
|
+
price: this.VATTotalAmount,
|
|
230
|
+
action: this.VATTotal.length > 1 ? options === null || options === void 0 ? void 0 : options.vatAction : undefined,
|
|
231
|
+
},
|
|
232
|
+
...(this.payableRoundingAmount !== 0
|
|
233
|
+
? [
|
|
234
|
+
{
|
|
235
|
+
name: $t(`dafd5091-0698-4117-bc5a-db8ba05cefcd`),
|
|
236
|
+
price: this.payableRoundingAmount,
|
|
237
|
+
},
|
|
238
|
+
]
|
|
239
|
+
: []),
|
|
240
|
+
{
|
|
241
|
+
name: $t(`0376551a-9af8-44b7-8ab3-d343384dc900`),
|
|
242
|
+
price: this.totalWithVAT,
|
|
243
|
+
},
|
|
244
|
+
];
|
|
245
|
+
}
|
|
246
|
+
updatePayableRoundingAmount() {
|
|
247
|
+
// Calculate difference between the invoice price and the payments price
|
|
248
|
+
const difference = this.totalPaymentsAmount - (this.totalWithVAT - this.payableRoundingAmount);
|
|
249
|
+
if (Math.abs(difference) < 500) { // Correct maximum 5 cents
|
|
250
|
+
this.payableRoundingAmount = difference;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
this.payableRoundingAmount = 0;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/** */
|
|
257
|
+
correctRoundingByUpdatingPrices() {
|
|
258
|
+
console.log('correctRoundingByUpdatingPrices');
|
|
259
|
+
const difference = this.totalPaymentsAmount - (this.totalWithVAT - this.payableRoundingAmount);
|
|
260
|
+
if (difference === 0) {
|
|
261
|
+
// No need to do any magic
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
// For each VAT group, we start with the expected total without VAT.
|
|
265
|
+
// We calculate the difference and try to correct for it within the same VAT group.
|
|
266
|
+
// We first try to apply extra cents (or removal of cents) to the items with the highest difference
|
|
267
|
+
for (const items of InvoicedBalanceItem_js_1.InvoicedBalanceItem.groupPerVATCategory(this.items)) {
|
|
268
|
+
console.log('Calculating for group', items);
|
|
269
|
+
const current = items.reduce((a, b) => a + b.totalWithoutVAT, 0);
|
|
270
|
+
const precise = items.reduce((a, b) => a + b.preciseTotalWithoutVAT, 0);
|
|
271
|
+
const toAddToTaxablePrice = utility_1.STMath.round((precise - current) / 100) * 100;
|
|
272
|
+
console.log('toAddToTaxablePrice', toAddToTaxablePrice);
|
|
273
|
+
if (toAddToTaxablePrice === 0) {
|
|
274
|
+
// Less than 1 cent difference, we cannot apply this
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
// If toAddToTaxablePrice > 0 -> te weinig aangerekend - difference moet worden toegevoegd aan taxableprice
|
|
278
|
+
// If toAddToTaxablePrice < 0 -> te veel aangerekend - difference moet worden toegevoegd aan taxableprice
|
|
279
|
+
function getNext() {
|
|
280
|
+
// Rank items by difference
|
|
281
|
+
items.sort((a, b) => {
|
|
282
|
+
const aDiff = a.preciseTotalWithoutVAT - a.totalWithoutVAT;
|
|
283
|
+
const bDiff = b.preciseTotalWithoutVAT - b.totalWithoutVAT;
|
|
284
|
+
if (toAddToTaxablePrice < 0) {
|
|
285
|
+
// We need to subtract, so sort ascending (largest negative items first)
|
|
286
|
+
return aDiff - bDiff;
|
|
287
|
+
}
|
|
288
|
+
return bDiff - aDiff; // Sort descending
|
|
289
|
+
});
|
|
290
|
+
const next = items[0];
|
|
291
|
+
if (!next) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
return next;
|
|
295
|
+
}
|
|
296
|
+
let next = getNext();
|
|
297
|
+
let loops = 0;
|
|
298
|
+
while (next && loops < 100) {
|
|
299
|
+
loops++;
|
|
300
|
+
const current = items.reduce((a, b) => a + b.totalWithoutVAT, 0);
|
|
301
|
+
const currentToAddToTaxablePrice = utility_1.STMath.round((precise - current) / 100) * 100;
|
|
302
|
+
if (currentToAddToTaxablePrice === 0 || Math.sign(currentToAddToTaxablePrice) !== Math.sign(toAddToTaxablePrice)) {
|
|
303
|
+
console.log('Stopped group calculation because currentToAddToTaxablePrice is zero or switched sign', currentToAddToTaxablePrice);
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
// Change prices in steps of 0.005 (total price, so divided by quantity)
|
|
307
|
+
let step = Math.round(50 * 10000 / Math.abs(next.quantity));
|
|
308
|
+
if (step <= 1) {
|
|
309
|
+
step = 1; // Might jump further than expected / wanted
|
|
310
|
+
}
|
|
311
|
+
const addition = Math.sign(currentToAddToTaxablePrice) * Math.sign(next.quantity) * step;
|
|
312
|
+
next.unitPrice += addition;
|
|
313
|
+
next.addedToUnitPriceToCorrectVAT += addition;
|
|
314
|
+
console.log('Increasing unit price of ', next, 'with ' + addition);
|
|
315
|
+
// todo
|
|
316
|
+
next = getNext();
|
|
317
|
+
}
|
|
318
|
+
console.log('Done calculating group');
|
|
319
|
+
}
|
|
320
|
+
console.log('Done correctRoundingByUpdatingPrices');
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Call this method after changing the payments related to an invoice.
|
|
324
|
+
*/
|
|
325
|
+
buildFromPayments() {
|
|
326
|
+
if (this.number) {
|
|
327
|
+
throw new simple_errors_1.SimpleError({
|
|
328
|
+
code: 'invoice_has_number',
|
|
329
|
+
message: 'An invoice is immutable after it has been generated',
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
// Keep the sum of all balance items.
|
|
333
|
+
const balanceItemsMap = new Map();
|
|
334
|
+
for (const payment of this.payments) {
|
|
335
|
+
for (const item of payment.balanceItemPayments) {
|
|
336
|
+
let data = balanceItemsMap.get(item.balanceItem.id);
|
|
337
|
+
if (!data) {
|
|
338
|
+
data = {
|
|
339
|
+
balanceItem: item.balanceItem,
|
|
340
|
+
amount: 0,
|
|
341
|
+
};
|
|
342
|
+
balanceItemsMap.set(item.balanceItem.id, data);
|
|
343
|
+
}
|
|
344
|
+
data.amount += item.price;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const invoicedItems = [];
|
|
348
|
+
for (const item of balanceItemsMap.values()) {
|
|
349
|
+
const invoiced = InvoicedBalanceItem_js_1.InvoicedBalanceItem.createFor(item.balanceItem, item.amount);
|
|
350
|
+
invoicedItems.push(invoiced);
|
|
351
|
+
}
|
|
352
|
+
invoicedItems.sort((a, b) => {
|
|
353
|
+
return utility_1.Sorter.stack(utility_1.Sorter.byNumberValue(a.totalWithoutVAT, b.totalWithoutVAT), utility_1.Sorter.byStringValue(a.name || a.description, b.name || b.description));
|
|
354
|
+
});
|
|
355
|
+
this.items = invoicedItems;
|
|
356
|
+
this.correctRoundingByUpdatingPrices();
|
|
357
|
+
this.calculateVAT();
|
|
358
|
+
this.updatePayableRoundingAmount();
|
|
359
|
+
if (this.totalWithVAT !== this.totalPaymentsAmount) {
|
|
360
|
+
throw new simple_errors_1.SimpleError({
|
|
361
|
+
code: 'price_difference',
|
|
362
|
+
message: 'The price of the generated invoice did not match the price of the corresponding payments. Possibly caused by rounding that could not be corrected automatically.',
|
|
363
|
+
human: $t('8de3f0d6-3bbe-4668-a357-1fbf3d698177'),
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
156
367
|
}
|
|
157
368
|
exports.Invoice = Invoice;
|
|
158
369
|
tslib_1.__decorate([
|
|
@@ -176,6 +387,9 @@ tslib_1.__decorate([
|
|
|
176
387
|
tslib_1.__decorate([
|
|
177
388
|
(0, simple_encoding_1.field)({ decoder: new simple_encoding_1.ArrayDecoder(InvoicedBalanceItem_js_1.InvoicedBalanceItem) })
|
|
178
389
|
], Invoice.prototype, "items", void 0);
|
|
390
|
+
tslib_1.__decorate([
|
|
391
|
+
(0, simple_encoding_1.field)({ decoder: new simple_encoding_1.ArrayDecoder(PaymentGeneral_js_1.PaymentGeneral) })
|
|
392
|
+
], Invoice.prototype, "payments", void 0);
|
|
179
393
|
tslib_1.__decorate([
|
|
180
394
|
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.IntegerDecoder })
|
|
181
395
|
], Invoice.prototype, "payableRoundingAmount", void 0);
|
|
@@ -206,4 +420,16 @@ tslib_1.__decorate([
|
|
|
206
420
|
tslib_1.__decorate([
|
|
207
421
|
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder, optional: true })
|
|
208
422
|
], Invoice.prototype, "didSendPeppol", void 0);
|
|
423
|
+
tslib_1.__decorate([
|
|
424
|
+
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.DateDecoder, nullable: true })
|
|
425
|
+
], Invoice.prototype, "invoicedAt", void 0);
|
|
426
|
+
tslib_1.__decorate([
|
|
427
|
+
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.DateDecoder, nullable: true })
|
|
428
|
+
], Invoice.prototype, "dueAt", void 0);
|
|
429
|
+
tslib_1.__decorate([
|
|
430
|
+
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.DateDecoder })
|
|
431
|
+
], Invoice.prototype, "createdAt", void 0);
|
|
432
|
+
tslib_1.__decorate([
|
|
433
|
+
(0, simple_encoding_1.field)({ decoder: simple_encoding_1.DateDecoder })
|
|
434
|
+
], Invoice.prototype, "updatedAt", void 0);
|
|
209
435
|
//# sourceMappingURL=Invoice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Invoice.js","sourceRoot":"","sources":["../../../src/billing/Invoice.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Invoice.js","sourceRoot":"","sources":["../../../src/billing/Invoice.ts"],"names":[],"mappings":";;;;AAAA,iEAAwJ;AACxJ,6DAAwD;AACxD,+BAAoC;AACpC,sDAAqH;AACrH,8CAAwC;AACxC,8DAAwD;AAExD,8CAAwC;AACxC,oEAA8D;AAC9D,qEAA+D;AAC/D,gDAA+D;AAE/D,MAAa,WAAY,SAAQ,6BAAW;IAA5C;;QACI;;WAEG;QAEH,kBAAa,GAAW,CAAC,CAAC;QAG1B,eAAU,GAA4B,IAAI,CAAC;QAE3C;;WAEG;QAEH,iBAAY,GAAW,CAAC,CAAC;QAGzB,QAAG,GAAW,CAAC,CAAC;IACpB,CAAC;CAAA;AAlBD,kCAkBC;AAbG;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,gCAAc,EAAE,CAAC;kDACT;AAG1B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,IAAI,6BAAW,CAAC,iCAAgB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;+CAC3B;AAM3C;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,gCAAc,EAAE,CAAC;iDACV;AAGzB;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,gCAAc,EAAE,CAAC;wCACnB;AAGpB,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,kCAAmB,CAAA;IACnB,wCAAyB,CAAA;AAC7B,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,MAAa,iBAAiB;IAC1B,MAAM,CAAC,OAAO,CAAC,IAAiB;QAC5B,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,sCAAsC,CAAC,CAAC;YAC5E,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,sCAAsC,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;CACJ;AAPD,8CAOC;AAED,MAAa,OAAQ,SAAQ,6BAAW;IAAxC;;QAII;;WAEG;QAEH,WAAM,GAAkB,IAAI,CAAC;QAQ7B;;;;;WAKG;QAEH,yBAAoB,GAAkB,IAAI,CAAC;QAe3C;;WAEG;QAEH,UAAK,GAA0B,EAAE,CAAC;QAElC;;;;;;WAMG;QAEH,aAAQ,GAAqB,EAAE,CAAC;QAchC;;;;;;;;;;;;;;WAcG;QAEH,0BAAqB,GAAW,CAAC,CAAC;QAelC;;WAEG;QAEH,aAAQ,GAAkB,EAAE,CAAC;QAkB7B,cAAS,GAAkB,IAAI,CAAC;QAGhC,cAAS,GAAkB,IAAI,CAAC;QAEhC;;WAEG;QAEH,oBAAe,GAAkB,IAAI,CAAC;QAGtC,cAAS,GAAkB,IAAI,CAAC;QAGhC,QAAG,GAAgB,IAAI,CAAC;QAGxB,QAAG,GAAgB,IAAI,CAAC;QAGxB,sBAAiB,GAAkB,IAAI,CAAC;QAGxC,kBAAa,GAAG,KAAK,CAAC;QAGtB,eAAU,GAAgB,IAAI,CAAC;QAG/B,UAAK,GAAgB,IAAI,CAAC;QAG1B,cAAS,GAAS,IAAI,IAAI,EAAE,CAAC;QAG7B,cAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IA0PjC,CAAC;IA/VG,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,0BAA0B;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAoBD;;;;;;;;OAQG;IACH,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC;IAC/D,CAAC;IAQD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACH,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC;IACnF,CAAC;IAyCD,gBAAgB;QACZ,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/C,kCAAkC;gBAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACxE,KAAK,GAAG,IAAI,CAAC;gBACjB,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,UAAU,KAAK,iCAAgB,CAAC,cAAc,EAAE,CAAC;oBACtD,MAAM,IAAI,2BAAW,CAAC;wBAClB,IAAI,EAAE,wBAAwB;wBAC9B,OAAO,EAAE,uCAAuC;wBAChD,KAAK,EAAE,EAAE,CAAC,sCAAsC,CAAC;qBACpD,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;aACI,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,UAAU,KAAK,iCAAgB,CAAC,cAAc,EAAE,CAAC;oBACtD,MAAM,IAAI,2BAAW,CAAC;wBAClB,IAAI,EAAE,0BAA0B;wBAChC,OAAO,EAAE,6DAA6D;wBACtE,KAAK,EAAE,EAAE,CAAC,sCAAsC,CAAC;qBACpD,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,YAAY;QACR,sEAAsE;QACtE,IAAI,CAAC,QAAQ,GAAG,4CAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9E,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;YACnC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1C,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YAEzE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACvB,QAAQ,CAAC,GAAG,GAAG,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,GAAG,KAAM,CAAC,GAAG,GAAG,CAAC;YAC/F,CAAC;iBACI,CAAC;gBACF,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,IAAyB;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,UAAU,CAAC;QAClC,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO,aAAa,CAAC;QACzB,CAAC;IACL,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,iBAAiB,CAAC,OAA8C;QAC5D,OAAO;YACH;gBACI,IAAI,EAAE,EAAE,CAAC,sCAAsC,CAAC;gBAChD,KAAK,EAAE,IAAI,CAAC,eAAe;aAC9B;YACD;gBACI,IAAI,EAAE,EAAE,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,mBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9J,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,yCAAwB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1I,KAAK,EAAE,IAAI,CAAC,cAAc;gBAC1B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,CAAC,CAAC,SAAS;aACpE;YACD,GAAG,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC;gBAChC,CAAC,CAAC;oBACM;wBACI,IAAI,EAAE,EAAE,CAAC,sCAAsC,CAAC;wBAChD,KAAK,EAAE,IAAI,CAAC,qBAAqB;qBACpC;iBACJ;gBACL,CAAC,CAAC,EAAE,CAAC;YACT;gBACI,IAAI,EAAE,EAAE,CAAC,sCAAsC,CAAC;gBAChD,KAAK,EAAE,IAAI,CAAC,YAAY;aAC3B;SACJ,CAAC;IACN,CAAC;IAED,2BAA2B;QACvB,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAI,EAAE,CAAC,CAAC,0BAA0B;YACzD,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC;QAC5C,CAAC;aACI,CAAC;YACF,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,MAAM;IACN,+BAA+B;QAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/F,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACnB,0BAA0B;YAC1B,OAAO;QACX,CAAC;QAED,oEAAoE;QACpE,mFAAmF;QACnF,mGAAmG;QACnG,KAAK,MAAM,KAAK,IAAI,4CAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAExE,MAAM,mBAAmB,GAAG,gBAAM,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAE1E,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;YAExD,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;gBAC5B,oDAAoD;gBACpD,SAAS;YACb,CAAC;YAED,2GAA2G;YAC3G,yGAAyG;YAEzG,SAAS,OAAO;gBACZ,2BAA2B;gBAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAChB,MAAM,KAAK,GAAG,CAAC,CAAC,sBAAsB,GAAG,CAAC,CAAC,eAAe,CAAC;oBAC3D,MAAM,KAAK,GAAG,CAAC,CAAC,sBAAsB,GAAG,CAAC,CAAC,eAAe,CAAC;oBAE3D,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;wBAC1B,wEAAwE;wBACxE,OAAO,KAAK,GAAG,KAAK,CAAC;oBACzB,CAAC;oBACD,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,kBAAkB;gBAC5C,CAAC,CAAC,CAAC;gBAEH,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,OAAO;gBACX,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YACrB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBACzB,KAAK,EAAE,CAAC;gBACR,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;gBACjE,MAAM,0BAA0B,GAAG,gBAAM,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACjF,IAAI,0BAA0B,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAC/G,OAAO,CAAC,GAAG,CAAC,uFAAuF,EAAE,0BAA0B,CAAC,CAAC;oBACjI,MAAM;gBACV,CAAC;gBAED,wEAAwE;gBACxE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9D,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;oBACZ,IAAI,GAAG,CAAC,CAAC,CAAC,4CAA4C;gBAC1D,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;gBACzF,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;gBAC3B,IAAI,CAAC,4BAA4B,IAAI,QAAQ,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;gBAEnE,OAAO;gBACP,IAAI,GAAG,OAAO,EAAE,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,2BAAW,CAAC;gBAClB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,qDAAqD;aACjE,CAAC,CAAC;QACP,CAAC;QAED,qCAAqC;QACrC,MAAM,eAAe,GAA8D,IAAI,GAAG,EAAE,CAAC;QAE7F,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAC7C,IAAI,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,IAAI,GAAG;wBACH,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,MAAM,EAAE,CAAC;qBACZ,CAAC;oBACF,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACnD,CAAC;gBACD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAA0B,EAAE,CAAC;QAEhD,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,4CAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,OAAO,gBAAM,CAAC,KAAK,CACf,gBAAM,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,EAC1D,gBAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CACzE,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAC3B,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjD,MAAM,IAAI,2BAAW,CAAC;gBAClB,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,kKAAkK;gBAC3K,KAAK,EAAE,EAAE,CAAC,sCAAsC,CAAC;aACpD,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ;AArZD,0BAqZC;AAnZG;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,SAAM,GAAE,EAAE,CAAC;mCACrD;AAMX;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;uCACrB;AAM7B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,CAAC;+CACX;AASvB;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qDACP;AAO3C;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,oBAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;uCACpD;AAMhB;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,oCAAe,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,oCAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;yCAC1D;AAM1B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,IAAI,8BAAY,CAAC,4CAAmB,CAAC,EAAE,CAAC;sCACxB;AAUlC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,IAAI,8BAAY,CAAC,kCAAc,CAAC,EAAE,CAAC;yCACrB;AA8BhC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,gCAAc,EAAE,CAAC;sDACD;AAmBlC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,IAAI,8BAAY,CAAC,WAAW,CAAC,EAAE,CAAC;yCACrB;AAkB7B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0CAClB;AAGhC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0CAClB;AAMhC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gDACZ;AAGtC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0CAClB;AAGhC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,cAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oCACjB;AAGxB;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,cAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oCACjB;AAGxB;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,+BAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;kDACV;AAGxC;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,gCAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8CAC7B;AAGtB;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,6BAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;2CACjB;AAG/B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,6BAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACtB;AAG1B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,6BAAW,EAAE,CAAC;0CACH;AAG7B;IADC,IAAA,uBAAK,EAAC,EAAE,OAAO,EAAE,6BAAW,EAAE,CAAC;0CACH"}
|
|
@@ -48,6 +48,14 @@ export declare class InvoicedBalanceItem extends AutoEncoder {
|
|
|
48
48
|
* = LineExtensionAmount
|
|
49
49
|
*/
|
|
50
50
|
get totalWithoutVAT(): number;
|
|
51
|
+
/**
|
|
52
|
+
* Total without VAT, but not rounded
|
|
53
|
+
*/
|
|
54
|
+
get preciseTotalWithoutVAT(): number;
|
|
55
|
+
/**
|
|
56
|
+
* Debug helper
|
|
57
|
+
*/
|
|
58
|
+
addedToUnitPriceToCorrectVAT: number;
|
|
51
59
|
/**
|
|
52
60
|
* Creates a default configuration for a balance item that needs to be invoiced. The result can still be adjusted to correct rounding issues, because
|
|
53
61
|
* a balanace item cannot always be perfectly represented on an invoice (on an invoice rounding happens on invoice level, while balance items can have any price that is not really rounded at any time unless when paid).
|
|
@@ -56,5 +64,10 @@ export declare class InvoicedBalanceItem extends AutoEncoder {
|
|
|
56
64
|
* @param amount paid (or to be paid) price, should always include VAT if there is VAT
|
|
57
65
|
*/
|
|
58
66
|
static createFor(balanceItem: BalanceItem, amount: number): InvoicedBalanceItem;
|
|
67
|
+
/**
|
|
68
|
+
* Important, this influences VAT calculatio. Items are grouped by key and VAT is calculated per group.
|
|
69
|
+
*/
|
|
70
|
+
static getVATUniqueKey(item: InvoicedBalanceItem): string;
|
|
71
|
+
static groupPerVATCategory(items: InvoicedBalanceItem[]): InvoicedBalanceItem[][];
|
|
59
72
|
}
|
|
60
73
|
//# sourceMappingURL=InvoicedBalanceItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvoicedBalanceItem.d.ts","sourceRoot":"","sources":["../../../src/billing/InvoicedBalanceItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqE,MAAM,6BAA6B,CAAC;AAE7H,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"InvoicedBalanceItem.d.ts","sourceRoot":"","sources":["../../../src/billing/InvoicedBalanceItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqE,MAAM,6BAA6B,CAAC;AAE7H,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,qBAAa,mBAAoB,SAAQ,WAAW;IAEhD,EAAE,EAAE,MAAM,CAAC;IAGX,aAAa,SAAM;IAGnB,IAAI,SAAM;IAGV,WAAW,SAAM;IAEjB;;;;;;;;;;OAUG;IAEH,qBAAqB,SAAK;IAE1B;;;;;OAKG;IAEH,QAAQ,SAAW;IAEnB;;;OAGG;IAEH,SAAS,SAAK;IAEd;;;OAGG;IAEH,aAAa,EAAE,MAAM,CAAK;IAE1B;;OAEG;IAEH,WAAW,UAAS;IAEpB;;;OAGG;IAEH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE3C;;;OAGG;IACH,IAAI,eAAe,WAElB;IAED;;OAEG;IACH,IAAI,sBAAsB,WAKzB;IAED;;OAEG;IACH,4BAA4B,SAAK;IAEjC;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;IAkDzD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB;IAOhD,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,EAAE;CAgBpF"}
|
|
@@ -6,6 +6,7 @@ const simple_encoding_1 = require("@simonbackx/simple-encoding");
|
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
7
7
|
const BalanceItem_js_1 = require("../BalanceItem.js");
|
|
8
8
|
const simple_errors_1 = require("@simonbackx/simple-errors");
|
|
9
|
+
const utility_1 = require("@stamhoofd/utility");
|
|
9
10
|
class InvoicedBalanceItem extends simple_encoding_1.AutoEncoder {
|
|
10
11
|
constructor() {
|
|
11
12
|
super(...arguments);
|
|
@@ -50,13 +51,26 @@ class InvoicedBalanceItem extends simple_encoding_1.AutoEncoder {
|
|
|
50
51
|
* mistakes can be corrected and credited.
|
|
51
52
|
*/
|
|
52
53
|
this.VATExcempt = null;
|
|
54
|
+
/**
|
|
55
|
+
* Debug helper
|
|
56
|
+
*/
|
|
57
|
+
this.addedToUnitPriceToCorrectVAT = 0;
|
|
53
58
|
}
|
|
54
59
|
/**
|
|
55
60
|
* This should be rounded to 2 decimals to match PEPPOL requirements
|
|
56
61
|
* = LineExtensionAmount
|
|
57
62
|
*/
|
|
58
63
|
get totalWithoutVAT() {
|
|
59
|
-
return
|
|
64
|
+
return utility_1.STMath.round(this.unitPrice * this.quantity / 1000000) * 100;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Total without VAT, but not rounded
|
|
68
|
+
*/
|
|
69
|
+
get preciseTotalWithoutVAT() {
|
|
70
|
+
if (this.VATExcempt) {
|
|
71
|
+
return this.balanceInvoicedAmount;
|
|
72
|
+
}
|
|
73
|
+
return this.balanceInvoicedAmount * 100 / (100 + this.VATPercentage);
|
|
60
74
|
}
|
|
61
75
|
/**
|
|
62
76
|
* Creates a default configuration for a balance item that needs to be invoiced. The result can still be adjusted to correct rounding issues, because
|
|
@@ -83,9 +97,9 @@ class InvoicedBalanceItem extends simple_encoding_1.AutoEncoder {
|
|
|
83
97
|
item.VATExcempt = balanceItem.VATExcempt;
|
|
84
98
|
item.VATIncluded = balanceItem.VATIncluded;
|
|
85
99
|
// Calculate amount and unit price
|
|
86
|
-
const balanceItemUnitPriceWithVAT =
|
|
87
|
-
const quantity =
|
|
88
|
-
if (quantity
|
|
100
|
+
const balanceItemUnitPriceWithVAT = utility_1.STMath.round(balanceItem.priceWithVAT / balanceItem.quantity);
|
|
101
|
+
const quantity = utility_1.STMath.round(item.balanceInvoicedAmount * 10000 / balanceItemUnitPriceWithVAT); // Amount per ten thousand
|
|
102
|
+
if (quantity === 0) {
|
|
89
103
|
throw new simple_errors_1.SimpleError({
|
|
90
104
|
message: 'Invoiced amount is too low to create an invoiced balance item',
|
|
91
105
|
human: $t('551f6cc0-0b1a-4a62-8e09-cef159f5f7d5'),
|
|
@@ -102,9 +116,37 @@ class InvoicedBalanceItem extends simple_encoding_1.AutoEncoder {
|
|
|
102
116
|
// so this is disabled for now. Rounding will happen on line level though
|
|
103
117
|
// item.unitPrice = Math.round(item.unitPrice / 100) * 100;
|
|
104
118
|
// round as integer instead (0.0001):
|
|
105
|
-
item.unitPrice =
|
|
119
|
+
item.unitPrice = utility_1.STMath.round(item.unitPrice);
|
|
120
|
+
// Make sure unit price is always positive, and quantity is negative instead
|
|
121
|
+
if (item.unitPrice < 0) {
|
|
122
|
+
item.unitPrice = -item.unitPrice;
|
|
123
|
+
item.quantity = -item.quantity;
|
|
124
|
+
}
|
|
106
125
|
return item;
|
|
107
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Important, this influences VAT calculatio. Items are grouped by key and VAT is calculated per group.
|
|
129
|
+
*/
|
|
130
|
+
static getVATUniqueKey(item) {
|
|
131
|
+
if (item.VATExcempt === null) {
|
|
132
|
+
return `vat_${item.VATPercentage}`;
|
|
133
|
+
}
|
|
134
|
+
return `excempt_${item.VATExcempt}_${item.VATExcempt}`;
|
|
135
|
+
}
|
|
136
|
+
static groupPerVATCategory(items) {
|
|
137
|
+
// For every VAT category, calculate the taxable amount and VAT amount
|
|
138
|
+
const categories = new Map();
|
|
139
|
+
for (const item of items) {
|
|
140
|
+
const key = this.getVATUniqueKey(item);
|
|
141
|
+
let category = categories.get(key);
|
|
142
|
+
if (!category) {
|
|
143
|
+
category = [];
|
|
144
|
+
categories.set(key, category);
|
|
145
|
+
}
|
|
146
|
+
category.push(item);
|
|
147
|
+
}
|
|
148
|
+
return [...categories.values()];
|
|
149
|
+
}
|
|
108
150
|
}
|
|
109
151
|
exports.InvoicedBalanceItem = InvoicedBalanceItem;
|
|
110
152
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvoicedBalanceItem.js","sourceRoot":"","sources":["../../../src/billing/InvoicedBalanceItem.ts"],"names":[],"mappings":";;;;AAAA,iEAA6H;AAC7H,+BAAoC;AACpC,sDAAkE;AAClE,6DAAwD;
|
|
1
|
+
{"version":3,"file":"InvoicedBalanceItem.js","sourceRoot":"","sources":["../../../src/billing/InvoicedBalanceItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,5 +11,6 @@ export * from './STPackageBundle.js';
|
|
|
11
11
|
export * from './OrganizationPackagesStatus.js';
|
|
12
12
|
export * from './STPendingInvoice.js';
|
|
13
13
|
export * from './Invoice.js';
|
|
14
|
+
export { Invoice as InvoiceStruct } from './Invoice.js';
|
|
14
15
|
export * from './InvoicedBalanceItem.js';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/billing/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AAEtC,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/billing/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AAEtC,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AAExD,cAAc,0BAA0B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvoiceStruct = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
tslib_1.__exportStar(require("./OrganizationPaymentMandate.js"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./STBillingStatus.js"), exports);
|
|
@@ -14,5 +15,8 @@ tslib_1.__exportStar(require("./STPackageBundle.js"), exports);
|
|
|
14
15
|
tslib_1.__exportStar(require("./OrganizationPackagesStatus.js"), exports);
|
|
15
16
|
tslib_1.__exportStar(require("./STPendingInvoice.js"), exports);
|
|
16
17
|
tslib_1.__exportStar(require("./Invoice.js"), exports);
|
|
18
|
+
// Alias
|
|
19
|
+
var Invoice_js_1 = require("./Invoice.js");
|
|
20
|
+
Object.defineProperty(exports, "InvoiceStruct", { enumerable: true, get: function () { return Invoice_js_1.Invoice; } });
|
|
17
21
|
tslib_1.__exportStar(require("./InvoicedBalanceItem.js"), exports);
|
|
18
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/billing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/billing/index.ts"],"names":[],"mappings":";;;;AAAA,0EAAgD;AAChD,+DAAqC;AACrC,wDAA8B;AAC9B,yDAA+B;AAC/B,6DAAmC;AACnC,6DAAmC;AACnC,+DAAqC;AACrC,gEAAsC;AACtC,yDAA+B;AAC/B,+DAAqC;AACrC,0EAAgD;AAChD,gEAAsC;AAEtC,uDAA6B;AAC7B,QAAQ;AACR,2CAAwD;AAA/C,2GAAA,OAAO,OAAiB;AAEjC,mEAAyC"}
|
|
@@ -16,7 +16,8 @@ export declare enum EmailRecipientFilterType {
|
|
|
16
16
|
MemberParents = "MemberParents",
|
|
17
17
|
MemberUnverified = "MemberUnverified",
|
|
18
18
|
Orders = "Orders",
|
|
19
|
-
ReceivableBalances = "ReceivableBalances"
|
|
19
|
+
ReceivableBalances = "ReceivableBalances",
|
|
20
|
+
Documents = "Documents"
|
|
20
21
|
}
|
|
21
22
|
export declare function getExampleRecipient(type?: EmailRecipientFilterType | null): EmailRecipient;
|
|
22
23
|
export declare enum EmailStatus {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../../src/email/Email.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,WAAW,EAAkF,MAAM,6BAA6B,CAAC;AAIpK,OAAO,EAAE,eAAe,EAAE,SAAS,EAAoB,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEzG,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,oBAAY,wBAAwB;IAChC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,MAAM,WAAW;IACjB,kBAAkB,uBAAuB;
|
|
1
|
+
{"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../../src/email/Email.ts"],"names":[],"mappings":"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"}
|
package/dist/src/email/Email.js
CHANGED
|
@@ -26,6 +26,7 @@ var EmailRecipientFilterType;
|
|
|
26
26
|
EmailRecipientFilterType["MemberUnverified"] = "MemberUnverified";
|
|
27
27
|
EmailRecipientFilterType["Orders"] = "Orders";
|
|
28
28
|
EmailRecipientFilterType["ReceivableBalances"] = "ReceivableBalances";
|
|
29
|
+
EmailRecipientFilterType["Documents"] = "Documents";
|
|
29
30
|
})(EmailRecipientFilterType || (exports.EmailRecipientFilterType = EmailRecipientFilterType = {}));
|
|
30
31
|
function getExampleRecipient(type = null) {
|
|
31
32
|
return MemberWithRegistrationsBlob_js_1.MemberWithRegistrationsBlob.create({
|
|
@@ -92,7 +93,7 @@ class EmailRecipientFilter extends simple_encoding_1.AutoEncoder {
|
|
|
92
93
|
}
|
|
93
94
|
get canShowInMemberPortal() {
|
|
94
95
|
for (const filter of this.filters) {
|
|
95
|
-
if (filter.type === EmailRecipientFilterType.Members || filter.type === EmailRecipientFilterType.MemberParents || filter.type === EmailRecipientFilterType.MemberUnverified || filter.type === EmailRecipientFilterType.RegistrationMembers || filter.type === EmailRecipientFilterType.RegistrationParents || filter.type === EmailRecipientFilterType.RegistrationUnverified) {
|
|
96
|
+
if (filter.type === EmailRecipientFilterType.Members || filter.type === EmailRecipientFilterType.MemberParents || filter.type === EmailRecipientFilterType.MemberUnverified || filter.type === EmailRecipientFilterType.RegistrationMembers || filter.type === EmailRecipientFilterType.RegistrationParents || filter.type === EmailRecipientFilterType.RegistrationUnverified || filter.type === EmailRecipientFilterType.Documents) {
|
|
96
97
|
return true;
|
|
97
98
|
}
|
|
98
99
|
}
|