@endevops/peppol-schema 0.1.3 → 0.1.4
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/README.md +5 -5
- package/dist/constants.d.ts +131 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +114 -1
- package/dist/constants.js.map +1 -1
- package/dist/{index-BBzPjq7o.d.ts → index-CILtZytZ.d.ts} +1710 -669
- package/dist/index-CILtZytZ.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1234 -187
- package/dist/index.js.map +1 -1
- package/dist/invoice-response-code-not-needs-schema-DNrfKYLh.js +36 -0
- package/dist/invoice-response-code-not-needs-schema-DNrfKYLh.js.map +1 -0
- package/dist/invoice-response-codes.d.ts +28 -0
- package/dist/invoice-response-codes.d.ts.map +1 -1
- package/dist/invoice-response-codes.js +11 -1
- package/dist/invoice-response-codes.js.map +1 -1
- package/dist/{is-valid-abn-160i38PG.js → is-valid-abn-D7eSygBG.js} +115 -2
- package/dist/is-valid-abn-D7eSygBG.js.map +1 -0
- package/dist/{is-valid-mod97-0208-CzMOXMO-.js → is-valid-mod97-0208-CjR324eG.js} +11 -1
- package/dist/is-valid-mod97-0208-CjR324eG.js.map +1 -0
- package/dist/message-level-response-profile-id-B9c0A7S_.js +27 -0
- package/dist/message-level-response-profile-id-B9c0A7S_.js.map +1 -0
- package/dist/{nodable-parser-CyDZtLCK.js → nodable-parser-CupS2H55.js} +31 -1
- package/dist/nodable-parser-CupS2H55.js.map +1 -0
- package/dist/schematron.d.ts +57 -1
- package/dist/schematron.d.ts.map +1 -1
- package/dist/schematron.js +453 -2
- package/dist/schematron.js.map +1 -1
- package/dist/validations.d.ts +132 -0
- package/dist/validations.d.ts.map +1 -1
- package/dist/validations.js +11 -2
- package/dist/validations.js.map +1 -1
- package/dist/values.d.ts +67 -2
- package/dist/values.d.ts.map +1 -1
- package/dist/xml.d.ts +30 -0
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +10 -1
- package/dist/xml.js.map +1 -1
- package/package.json +1 -1
- package/src/constants/credit-note-doctype-id.ts +9 -0
- package/src/constants/credit-note-process-id.ts +9 -0
- package/src/constants/document-scheme.ts +9 -0
- package/src/constants/invoice-doctype-id.ts +9 -0
- package/src/constants/invoice-process-id.ts +10 -0
- package/src/constants/invoice-response-doctype-id.ts +10 -0
- package/src/constants/invoice-response-process-id.ts +9 -0
- package/src/constants/invoice-response-profile-id.ts +9 -0
- package/src/constants/message-level-response-doctype-id.ts +10 -0
- package/src/constants/message-level-response-process-id.ts +9 -0
- package/src/constants/message-level-response-profile-id.ts +9 -0
- package/src/constants/participant-scheme.ts +10 -0
- package/src/constants/process-scheme.ts +9 -0
- package/src/constants/transport-profile.ts +10 -0
- package/src/invoice-response-codes/invoice-response-code-needs-schema.ts +9 -0
- package/src/invoice-response-codes/invoice-response-code-not-needs-schema.ts +9 -0
- package/src/invoice-response-codes/invoice-response-codes-order.ts +10 -0
- package/src/peppol-validations/add-piva.ts +12 -0
- package/src/peppol-validations/check-cf.ts +11 -0
- package/src/peppol-validations/check-cf16.ts +12 -0
- package/src/peppol-validations/check-piva-se-it.ts +11 -0
- package/src/peppol-validations/check-piva.ts +11 -0
- package/src/peppol-validations/check-se-orgnr.ts +9 -0
- package/src/peppol-validations/greek-tin-verification.ts +9 -0
- package/src/peppol-validations/is-valid-abn.ts +9 -0
- package/src/peppol-validations/is-valid-gln.ts +10 -0
- package/src/peppol-validations/is-valid-iban.ts +10 -0
- package/src/peppol-validations/is-valid-mod11.ts +9 -0
- package/src/peppol-validations/is-valid-mod97-0208.ts +10 -0
- package/src/peppol-validations/luhn-check.ts +9 -0
- package/src/schemas/fields/default-customization-id.ts +9 -0
- package/src/schemas/fields/default-profile-id.ts +9 -0
- package/src/schemas/fields/peppol-additional-document-reference-schema.ts +41 -2
- package/src/schemas/fields/peppol-address-schema.ts +25 -2
- package/src/schemas/fields/peppol-allowance-charge-schema.ts +65 -9
- package/src/schemas/fields/peppol-amount-schema.ts +15 -2
- package/src/schemas/fields/peppol-base-line-schema.ts +12 -2
- package/src/schemas/fields/peppol-billing-reference-schema.ts +13 -0
- package/src/schemas/fields/peppol-binary-object-schema.ts +12 -4
- package/src/schemas/fields/peppol-contact-schema.ts +11 -0
- package/src/schemas/fields/peppol-credit-note-line-schema.ts +7 -2
- package/src/schemas/fields/peppol-delivery-schema.ts +44 -2
- package/src/schemas/fields/peppol-identifier-schema.ts +8 -0
- package/src/schemas/fields/peppol-invoice-line-period-schema.ts +11 -0
- package/src/schemas/fields/peppol-invoice-line-schema.ts +9 -2
- package/src/schemas/fields/peppol-invoice-period-schema.ts +2 -2
- package/src/schemas/fields/peppol-item-classification-schema.ts +2 -2
- package/src/schemas/fields/peppol-line-allowance-charge-schema.ts +57 -9
- package/src/schemas/fields/peppol-line-item-schema.ts +69 -4
- package/src/schemas/fields/peppol-line-price-allowance-charge-schema.ts +20 -0
- package/src/schemas/fields/peppol-line-price-schema.ts +2 -0
- package/src/schemas/fields/peppol-order-reference-schema.ts +2 -0
- package/src/schemas/fields/peppol-party-base-schema.ts +36 -4
- package/src/schemas/fields/peppol-party-legal-entity-schema.ts +13 -0
- package/src/schemas/fields/peppol-party-tax-scheme-schema.ts +5 -0
- package/src/schemas/fields/peppol-payee-party-schema.ts +2 -2
- package/src/schemas/fields/peppol-payment-means-schema.ts +62 -2
- package/src/schemas/fields/peppol-payment-terms-schema.ts +2 -0
- package/src/schemas/fields/peppol-quantity-schema.ts +4 -2
- package/src/schemas/fields/peppol-reference-schema.ts +20 -1
- package/src/schemas/fields/peppol-tax-category-schema.ts +12 -2
- package/src/schemas/fields/peppol-tax-representative-schema.ts +5 -0
- package/src/schemas/fields/peppol-tax-subtotal-category-schema.ts +3 -0
- package/src/schemas/fields/peppol-tax-subtotal-schema.ts +2 -0
- package/src/schemas/fields/peppol-tax-totals-base-schema.ts +5 -0
- package/src/schemas/peppol-billing-base-schema.ts +47 -7
- package/src/schemas/peppol-credit-note-schema.ts +2 -2
- package/src/schemas/peppol-document-response-document-reference-schema.ts +15 -2
- package/src/schemas/peppol-document-response-document-schema.ts +8 -3
- package/src/schemas/peppol-document-response-line-response-content-schema.ts +22 -2
- package/src/schemas/peppol-document-response-line-response-schema.ts +26 -0
- package/src/schemas/peppol-document-schema.ts +74 -9
- package/src/schemas/peppol-invoice-response-document-actual-response-schema.ts +58 -5
- package/src/schemas/peppol-invoice-response-document-actual-response-status-schema.ts +25 -2
- package/src/schemas/peppol-invoice-response-schema.ts +57 -4
- package/src/schemas/peppol-invoice-response-status-reason-code-schema.ts +37 -10
- package/src/schemas/peppol-invoice-schema.ts +30 -2
- package/src/schemas/peppol-message-level-response-document-response-schema.ts +10 -0
- package/src/schemas/peppol-message-level-response-party-schema.ts +10 -0
- package/src/schemas/peppol-message-level-response-schema.ts +18 -0
- package/src/schemas/utils/format-quantity-with-unit.ts +19 -0
- package/src/schemas/utils/get-credit-note-type-code-description.ts +12 -0
- package/src/schemas/utils/get-invoice-type-code-description.ts +12 -0
- package/src/schemas/utils/is-valid-credit-note-type-code.ts +13 -0
- package/src/schemas/utils/is-valid-invoice-type-code.ts +13 -0
- package/src/schemas/utils/is-valid-process.ts +13 -0
- package/src/schemas/utils/peppol-base-64-schema.ts +14 -4
- package/src/schemas/utils/peppol-vat-regex-schema.ts +38 -30
- package/src/schemas/utils/peppol-xsd-time-schema.ts +12 -2
- package/src/schemas/utils/quantity-unit-code-to-intl-unit.ts +34 -0
- package/src/schemas/values/additional-document-reference-code-schema.ts +9 -15
- package/src/schemas/values/allowance-charge-reason-code-schema.ts +12 -14
- package/src/schemas/values/application-response-type-code-schema.ts +10 -14
- package/src/schemas/values/charge-reason-code-schema.ts +12 -14
- package/src/schemas/values/credit-note-type-code-schema.ts +8 -14
- package/src/schemas/values/currency-code-schema.ts +13 -16
- package/src/schemas/values/document-type-schemes-schema.ts +9 -5
- package/src/schemas/values/document-type-values-schema.ts +5 -6
- package/src/schemas/values/duty-tax-fee-category-schema.ts +15 -13
- package/src/schemas/values/electronic-codes-schema.ts +10 -12
- package/src/schemas/values/icd-codes-schema.ts +8 -12
- package/src/schemas/values/invoice-status-code-schema.ts +10 -12
- package/src/schemas/values/invoice-type-code-schema.ts +10 -12
- package/src/schemas/values/item-classification-codes-schema.ts +10 -12
- package/src/schemas/values/mime-codes-schema.ts +12 -14
- package/src/schemas/values/op-status-action-schema.ts +10 -12
- package/src/schemas/values/op-status-reason-schema.ts +10 -12
- package/src/schemas/values/participant-identifier-code-schema.ts +10 -13
- package/src/schemas/values/payment-means-code-schema.ts +10 -12
- package/src/schemas/values/peppol-country-code-schema.ts +10 -9
- package/src/schemas/values/peppol-document-type-code-schema.ts +10 -12
- package/src/schemas/values/peppol-document-type-schema.ts +12 -21
- package/src/schemas/values/peppol-process-schema.ts +19 -15
- package/src/schemas/values/process-from-document-type-schema.ts +3 -3
- package/src/schemas/values/quantity-unit-codes-schema.ts +10 -12
- package/src/schemas/values/vat-date-code-schema.ts +12 -5
- package/src/schemas/values/vatex-code-schema.ts +8 -12
- package/src/schematron/errors.ts +14 -0
- package/src/schematron/helpers.ts +451 -0
- package/src/schematron/run-all-rules.ts +10 -0
- package/src/schematron/schematron.ts +25 -0
- package/src/xml/builder-options.ts +9 -0
- package/src/xml/common-xml-options.ts +9 -0
- package/src/xml/nodable-parser.ts +12 -0
- package/src/xml/parser-options.ts +9 -0
- package/dist/index-BBzPjq7o.d.ts.map +0 -1
- package/dist/invoice-response-code-not-needs-schema-p_RKKNLc.js +0 -18
- package/dist/invoice-response-code-not-needs-schema-p_RKKNLc.js.map +0 -1
- package/dist/is-valid-abn-160i38PG.js.map +0 -1
- package/dist/is-valid-mod97-0208-CzMOXMO-.js.map +0 -1
- package/dist/message-level-response-profile-id-DBpOW91B.js +0 -9
- package/dist/message-level-response-profile-id-DBpOW91B.js.map +0 -1
- package/dist/nodable-parser-CyDZtLCK.js.map +0 -1
- package/dist/vat-dates.generated-CxFvt7m3.d.ts +0 -68
- package/dist/vat-dates.generated-CxFvt7m3.d.ts.map +0 -1
|
@@ -14,6 +14,8 @@ class PeppolTaxSchemeId extends opaque<PeppolTaxSchemeId>()(
|
|
|
14
14
|
) {}
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
+
* @description The Seller tax registration details, combining a tax identifier such as a VAT number with the tax scheme.
|
|
18
|
+
*
|
|
17
19
|
* @name cac:PartyTaxScheme (0..2)
|
|
18
20
|
*/
|
|
19
21
|
export class PeppolPartyTaxScheme extends opaque<PeppolPartyTaxScheme>()(
|
|
@@ -38,4 +40,7 @@ export class PeppolPartyTaxScheme extends opaque<PeppolPartyTaxScheme>()(
|
|
|
38
40
|
})
|
|
39
41
|
) {}
|
|
40
42
|
|
|
43
|
+
/**
|
|
44
|
+
* @description Alias for {@link PeppolPartyTaxScheme}.
|
|
45
|
+
*/
|
|
41
46
|
export type PeppolPartyTaxSchema = PeppolPartyTaxScheme;
|
|
@@ -2,7 +2,7 @@ import { Schema } from 'effect';
|
|
|
2
2
|
|
|
3
3
|
import { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
|
-
import {
|
|
5
|
+
import { PeppolIcdCode } from '#/schemas/values/icd-codes-schema.ts';
|
|
6
6
|
|
|
7
7
|
class PeppolPartyName extends opaque<PeppolPartyName>()(Schema.Struct({ name: Schema.String })) {}
|
|
8
8
|
|
|
@@ -39,7 +39,7 @@ class PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(
|
|
|
39
39
|
*
|
|
40
40
|
* @name `@schemeID`
|
|
41
41
|
*/
|
|
42
|
-
schemeId: Schema.optional(
|
|
42
|
+
schemeId: Schema.optional(PeppolIcdCode),
|
|
43
43
|
})
|
|
44
44
|
)
|
|
45
45
|
),
|
|
@@ -2,8 +2,18 @@ import { Schema } from 'effect';
|
|
|
2
2
|
|
|
3
3
|
import { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
|
-
import {
|
|
5
|
+
import { PeppolPaymentMeansCodeValue } from '#/schemas/values/payment-means-code-schema.ts';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @description The account to be debited by a direct debit.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* { id: '12345676543' }
|
|
13
|
+
* ```;
|
|
14
|
+
*
|
|
15
|
+
* @see {@link PeppolPaymentMandate}
|
|
16
|
+
*/
|
|
7
17
|
export class PeppolPaymentMandatePayerFinancialAccountId extends opaque<PeppolPaymentMandatePayerFinancialAccountId>()(
|
|
8
18
|
Schema.Struct({
|
|
9
19
|
/**
|
|
@@ -20,6 +30,16 @@ export class PeppolPaymentMandatePayerFinancialAccountId extends opaque<PeppolPa
|
|
|
20
30
|
})
|
|
21
31
|
) {}
|
|
22
32
|
|
|
33
|
+
/**
|
|
34
|
+
* @description A group of business terms to specify a direct debit, including the mandate reference and the debited account.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* { id: 'MandateReference', payerFinancialAccountId: { id: '12345676543' } }
|
|
39
|
+
* ```;
|
|
40
|
+
*
|
|
41
|
+
* @see {@link PeppolPaymentMeans}
|
|
42
|
+
*/
|
|
23
43
|
export class PeppolPaymentMandate extends opaque<PeppolPaymentMandate>()(
|
|
24
44
|
Schema.Struct({
|
|
25
45
|
/**
|
|
@@ -44,6 +64,16 @@ export class PeppolPaymentMandate extends opaque<PeppolPaymentMandate>()(
|
|
|
44
64
|
})
|
|
45
65
|
) {}
|
|
46
66
|
|
|
67
|
+
/**
|
|
68
|
+
* @description The payment service provider where the payee payment account is held, such as a BIC or national clearing code.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* { id: 'BIC324098' }
|
|
73
|
+
* ```;
|
|
74
|
+
*
|
|
75
|
+
* @see {@link PeppolPayeeFinancialAccount}
|
|
76
|
+
*/
|
|
47
77
|
export class PeppolPayeeFinancialAccountFinancialInstitutionBranch extends opaque<PeppolPayeeFinancialAccountFinancialInstitutionBranch>()(
|
|
48
78
|
Schema.Struct({
|
|
49
79
|
/**
|
|
@@ -61,6 +91,16 @@ export class PeppolPayeeFinancialAccountFinancialInstitutionBranch extends opaqu
|
|
|
61
91
|
})
|
|
62
92
|
) {}
|
|
63
93
|
|
|
94
|
+
/**
|
|
95
|
+
* @description The payment account to which payment should be made, such as an IBAN or BBAN, including the financial institution branch.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* { id: 'IBAN32423940', name: 'AccountName' }
|
|
100
|
+
* ```;
|
|
101
|
+
*
|
|
102
|
+
* @see {@link PeppolPaymentMeans}
|
|
103
|
+
*/
|
|
64
104
|
export class PeppolPayeeFinancialAccount extends opaque<PeppolPayeeFinancialAccount>()(
|
|
65
105
|
Schema.Struct({
|
|
66
106
|
/**
|
|
@@ -94,6 +134,16 @@ export class PeppolPayeeFinancialAccount extends opaque<PeppolPayeeFinancialAcco
|
|
|
94
134
|
})
|
|
95
135
|
) {}
|
|
96
136
|
|
|
137
|
+
/**
|
|
138
|
+
* @description The card used for payment, including the card holder name and the primary account number.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* { networkId: 'VISA', primaryAccountNumberId: '1234' }
|
|
143
|
+
* ```;
|
|
144
|
+
*
|
|
145
|
+
* @see {@link PeppolPaymentMeans}
|
|
146
|
+
*/
|
|
97
147
|
export class PeppolCardAccount extends opaque<PeppolCardAccount>()(
|
|
98
148
|
Schema.Struct({
|
|
99
149
|
/**
|
|
@@ -125,6 +175,16 @@ export class PeppolCardAccount extends opaque<PeppolCardAccount>()(
|
|
|
125
175
|
})
|
|
126
176
|
) {}
|
|
127
177
|
|
|
178
|
+
/**
|
|
179
|
+
* @description The means by which a payment is expected to be or has been settled, expressed as a UNCL 4461 code and optional text.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```ts
|
|
183
|
+
* { code: '30', name: 'Credit transfer' }
|
|
184
|
+
* ```;
|
|
185
|
+
*
|
|
186
|
+
* @see {@link PeppolPaymentMeans}
|
|
187
|
+
*/
|
|
128
188
|
export class PeppolPaymentMeansCode extends opaque<PeppolPaymentMeansCode>()(
|
|
129
189
|
Schema.Struct({
|
|
130
190
|
/**
|
|
@@ -137,7 +197,7 @@ export class PeppolPaymentMeansCode extends opaque<PeppolPaymentMeansCode>()(
|
|
|
137
197
|
*
|
|
138
198
|
* @name `#text`
|
|
139
199
|
*/
|
|
140
|
-
code:
|
|
200
|
+
code: PeppolPaymentMeansCodeValue,
|
|
141
201
|
/**
|
|
142
202
|
* @description The means, expressed as text, for how a payment is expected to be or has been settled.
|
|
143
203
|
*
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { PeppolQuantityUnitCode } from '#/schemas/values/quantity-unit-codes-schema.ts';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
+
* @description A quantity value with an optional unit of measure code.
|
|
8
|
+
*
|
|
7
9
|
* @summary Quantity with optional unit code
|
|
8
10
|
*
|
|
9
11
|
* @name `cbc:* (+ @unitCode)`
|
|
@@ -13,7 +15,7 @@ export class PeppolQuantity extends opaque<PeppolQuantity>()(
|
|
|
13
15
|
/**
|
|
14
16
|
* @name `@unitCode`
|
|
15
17
|
*/
|
|
16
|
-
unitCode: Schema.optional(
|
|
18
|
+
unitCode: Schema.optional(PeppolQuantityUnitCode),
|
|
17
19
|
/**
|
|
18
20
|
* @name `#text (value)`
|
|
19
21
|
*/
|
|
@@ -2,8 +2,27 @@ import { Schema } from 'effect';
|
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @description A reference identifier, such as an order or sales order reference.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* { id: '123' }
|
|
11
|
+
* ```;
|
|
12
|
+
*/
|
|
5
13
|
export class PeppolReferenceId extends opaque<PeppolReferenceId>()(Schema.Struct({ id: Schema.String })) {}
|
|
6
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @description A schema for an optional reference identifier, accepting either {@link PeppolReferenceId} or `undefined`.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* peppolReferenceSchema; // Schema.Union([PeppolReferenceId, Schema.Undefined])
|
|
21
|
+
* ```;
|
|
22
|
+
*/
|
|
7
23
|
export const peppolReferenceSchema = Schema.Union([PeppolReferenceId, Schema.Undefined]);
|
|
8
24
|
|
|
9
|
-
|
|
25
|
+
/**
|
|
26
|
+
* @description The decoded type of {@link peppolReferenceSchema}, either a {@link PeppolReferenceId} or `undefined`.
|
|
27
|
+
*/
|
|
28
|
+
export type PeppolReferenceSchema = Schema.Schema.Type<typeof peppolReferenceSchema>;
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { Effect, Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { PeppolDutyTaxFeeCategoryCode } from '#/schemas/values/duty-tax-fee-category-schema.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description The tax scheme identifier for a tax category, defaulting to `VAT` when the element is absent.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { id: 'VAT' }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolTaxCategory}
|
|
15
|
+
*/
|
|
6
16
|
export class PeppolTaxSchemeId extends opaque<PeppolTaxSchemeId>()(
|
|
7
17
|
Schema.Struct({
|
|
8
18
|
/**
|
|
@@ -28,7 +38,7 @@ export class PeppolTaxCategory extends opaque<PeppolTaxCategory>()(
|
|
|
28
38
|
*
|
|
29
39
|
* @name `cbc:ID`
|
|
30
40
|
*/
|
|
31
|
-
id:
|
|
41
|
+
id: PeppolDutyTaxFeeCategoryCode,
|
|
32
42
|
/**
|
|
33
43
|
* @description The VAT rate, represented as percentage that applies to the invoiced item.
|
|
34
44
|
*
|
|
@@ -5,6 +5,8 @@ import { PeppolPartyTaxScheme } from '#/schemas/fields/peppol-party-tax-scheme-s
|
|
|
5
5
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
+
* @description The party acting as the Seller tax representative, including its name, postal address, and tax scheme.
|
|
9
|
+
*
|
|
8
10
|
* @summary SELLER TAX REPRESENTATIVE PARTY
|
|
9
11
|
*
|
|
10
12
|
* @name cac:TaxRepresentativeParty
|
|
@@ -23,4 +25,7 @@ export class PeppolTaxRepresentative extends opaque<PeppolTaxRepresentative>()(
|
|
|
23
25
|
})
|
|
24
26
|
) {}
|
|
25
27
|
|
|
28
|
+
/**
|
|
29
|
+
* @description Alias for {@link PeppolTaxRepresentative}.
|
|
30
|
+
*/
|
|
26
31
|
export type PeppolTaxRepresentativeParty = PeppolTaxRepresentative;
|
|
@@ -28,4 +28,7 @@ export class PeppolTaxSubTotalCategory extends opaque<PeppolTaxSubTotalCategory>
|
|
|
28
28
|
})
|
|
29
29
|
) {}
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* @description The encoded form of {@link PeppolTaxSubTotalCategory}, accepted by the decoder before branded code values are applied.
|
|
33
|
+
*/
|
|
31
34
|
export interface PeppolTaxSubTotalCategoryEncoded extends Schema.Codec.Encoded<typeof PeppolTaxSubTotalCategory> {}
|
|
@@ -5,6 +5,8 @@ import { PeppolTaxSubTotalCategory } from '#/schemas/fields/peppol-tax-subtotal-
|
|
|
5
5
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
+
* @description A VAT breakdown line for a single tax category, giving the taxable amount and the tax amount.
|
|
9
|
+
*
|
|
8
10
|
* @summary VAT breakdown (TaxSubtotal)
|
|
9
11
|
*
|
|
10
12
|
* @name cac:TaxSubtotal
|
|
@@ -5,6 +5,8 @@ import { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.t
|
|
|
5
5
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
+
* @description The total tax amount for the document, with an optional breakdown into tax subtotals.
|
|
9
|
+
*
|
|
8
10
|
* @summary TAX TOTAL
|
|
9
11
|
*
|
|
10
12
|
* @name cac:TaxTotal (1..2)
|
|
@@ -25,4 +27,7 @@ export class PeppolTaxTotalsBase extends opaque<PeppolTaxTotalsBase>()(
|
|
|
25
27
|
})
|
|
26
28
|
) {}
|
|
27
29
|
|
|
30
|
+
/**
|
|
31
|
+
* @description Alias for {@link PeppolTaxTotalsBase}.
|
|
32
|
+
*/
|
|
28
33
|
export type PeppolTaxTotal = PeppolTaxTotalsBase;
|
|
@@ -3,7 +3,7 @@ import { Effect, Schema } from 'effect';
|
|
|
3
3
|
import { DEFAULT_CUSTOMIZATION_ID } from '#/schemas/fields/default-customization-id.ts';
|
|
4
4
|
import { DEFAULT_PROFILE_ID } from '#/schemas/fields/default-profile-id.ts';
|
|
5
5
|
import { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';
|
|
6
|
-
import {
|
|
6
|
+
import { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';
|
|
7
7
|
import { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';
|
|
8
8
|
import { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';
|
|
9
9
|
import { PeppolInvoicePeriod } from '#/schemas/fields/peppol-invoice-period-schema.ts';
|
|
@@ -17,8 +17,18 @@ import { PeppolTaxRepresentative } from '#/schemas/fields/peppol-tax-representat
|
|
|
17
17
|
import { PeppolTaxTotalsBase } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';
|
|
18
18
|
import { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';
|
|
19
19
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
20
|
-
import {
|
|
20
|
+
import { PeppolCurrencyCode } from '#/schemas/values/currency-code-schema.ts';
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* @description Wraps the `cac:ContractDocumentReference` element: an identifier of a contract that the billing document references.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* { id: '123Contractref' }
|
|
28
|
+
* ```;
|
|
29
|
+
*
|
|
30
|
+
* @see {@link PeppolBillingBase}
|
|
31
|
+
*/
|
|
22
32
|
export class PeppolContractDocumentReference extends opaque<PeppolContractDocumentReference>()(
|
|
23
33
|
Schema.Struct({
|
|
24
34
|
/**
|
|
@@ -35,6 +45,16 @@ export class PeppolContractDocumentReference extends opaque<PeppolContractDocume
|
|
|
35
45
|
})
|
|
36
46
|
) {}
|
|
37
47
|
|
|
48
|
+
/**
|
|
49
|
+
* @description Wraps the `cac:OriginatorDocumentReference` element: the identification of the call for tender or lot the invoice relates to.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* { id: 'PPID-123' }
|
|
54
|
+
* ```;
|
|
55
|
+
*
|
|
56
|
+
* @see {@link PeppolBillingBase}
|
|
57
|
+
*/
|
|
38
58
|
export class PeppolOriginatorDocumentReference extends opaque<PeppolOriginatorDocumentReference>()(
|
|
39
59
|
Schema.Struct({
|
|
40
60
|
/**
|
|
@@ -51,6 +71,16 @@ export class PeppolOriginatorDocumentReference extends opaque<PeppolOriginatorDo
|
|
|
51
71
|
})
|
|
52
72
|
) {}
|
|
53
73
|
|
|
74
|
+
/**
|
|
75
|
+
* @description Wraps the `cac:ReceiptDocumentReference` element: an identifier of a referenced receiving advice.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* { id: 'rec98' }
|
|
80
|
+
* ```;
|
|
81
|
+
*
|
|
82
|
+
* @see {@link PeppolBillingBase}
|
|
83
|
+
*/
|
|
54
84
|
export class PeppolReceiptDocumentReference extends opaque<PeppolReceiptDocumentReference>()(
|
|
55
85
|
Schema.Struct({
|
|
56
86
|
/**
|
|
@@ -67,6 +97,16 @@ export class PeppolReceiptDocumentReference extends opaque<PeppolReceiptDocument
|
|
|
67
97
|
})
|
|
68
98
|
) {}
|
|
69
99
|
|
|
100
|
+
/**
|
|
101
|
+
* @description Wraps the `cac:DespatchDocumentReference` element: an identifier of a referenced despatch advice.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* { id: 'desp98' }
|
|
106
|
+
* ```;
|
|
107
|
+
*
|
|
108
|
+
* @see {@link PeppolBillingBase}
|
|
109
|
+
*/
|
|
70
110
|
export class PeppolDespatchDocumentReference extends opaque<PeppolDespatchDocumentReference>()(
|
|
71
111
|
Schema.Struct({
|
|
72
112
|
/**
|
|
@@ -86,8 +126,8 @@ export class PeppolDespatchDocumentReference extends opaque<PeppolDespatchDocume
|
|
|
86
126
|
/**
|
|
87
127
|
* @description Base schema for a billing document.
|
|
88
128
|
*
|
|
89
|
-
* @see {@link
|
|
90
|
-
* @see {@link
|
|
129
|
+
* @see {@link PeppolCreditNote} - the credit note schema
|
|
130
|
+
* @see {@link PeppolInvoice} - the invoice schema
|
|
91
131
|
*/
|
|
92
132
|
export class PeppolBillingBase extends opaque<PeppolBillingBase>()(
|
|
93
133
|
Schema.Struct({
|
|
@@ -182,7 +222,7 @@ export class PeppolBillingBase extends opaque<PeppolBillingBase>()(
|
|
|
182
222
|
*
|
|
183
223
|
* @name `cbc:DocumentCurrencyCode`
|
|
184
224
|
*/
|
|
185
|
-
documentCurrencyCode:
|
|
225
|
+
documentCurrencyCode: PeppolCurrencyCode,
|
|
186
226
|
/**
|
|
187
227
|
* @description The currency used for VAT accounting and reporting purposes as accepted or required in the country of the Seller. Shall be used in combination
|
|
188
228
|
* with the Invoice total VAT amount in accounting currency (BT-111), when the VAT accounting currency code differs from the Invoice currency
|
|
@@ -195,7 +235,7 @@ export class PeppolBillingBase extends opaque<PeppolBillingBase>()(
|
|
|
195
235
|
*
|
|
196
236
|
* @name `cbc:TaxCurrencyCode`
|
|
197
237
|
*/
|
|
198
|
-
taxCurrencyCode: Schema.optional(
|
|
238
|
+
taxCurrencyCode: Schema.optional(PeppolCurrencyCode),
|
|
199
239
|
/**
|
|
200
240
|
* @description A textual value that specifies where to book the relevant data into the Buyer's financial accounts.
|
|
201
241
|
*
|
|
@@ -345,7 +385,7 @@ export class PeppolBillingBase extends opaque<PeppolBillingBase>()(
|
|
|
345
385
|
*
|
|
346
386
|
* @name cac:AllowanceCharge
|
|
347
387
|
*/
|
|
348
|
-
allowanceCharges: Schema.optional(Schema.Array(
|
|
388
|
+
allowanceCharges: Schema.optional(Schema.Array(PeppolAllowanceCharge)),
|
|
349
389
|
|
|
350
390
|
/**
|
|
351
391
|
* @description When tax currency code is provided, two instances of the tax total must be present, but only one with tax subtotal.
|
|
@@ -3,7 +3,7 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';
|
|
4
4
|
import { PeppolBillingBase } from '#/schemas/peppol-billing-base-schema.ts';
|
|
5
5
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
6
|
-
import {
|
|
6
|
+
import { PeppolCreditNoteTypeCode } from '#/schemas/values/credit-note-type-code-schema.ts';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @description Main UBL Credit Note schema (camelCase properties) Effect port of `creditNoteSchema` (`z.extend(billingBaseSchema, ...)` →
|
|
@@ -26,6 +26,6 @@ export class PeppolCreditNote extends opaque<PeppolCreditNote>()(
|
|
|
26
26
|
*
|
|
27
27
|
* @name cbc:CreditNoteTypeCode
|
|
28
28
|
*/
|
|
29
|
-
creditNoteTypeCode:
|
|
29
|
+
creditNoteTypeCode: PeppolCreditNoteTypeCode,
|
|
30
30
|
})
|
|
31
31
|
) {}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { PeppolDocumentTypeCode } from '#/schemas/values/peppol-document-type-code-schema.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description Wraps `cac:DocumentReference` inside a message level response: identifies the business document the response is based on.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { id: 'EnvelopeID-12345', versionId: '2' }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolMessageLevelResponseDocumentResponse}
|
|
15
|
+
*/
|
|
6
16
|
export class PeppolDocumentResponseDocumentReference extends opaque<PeppolDocumentResponseDocumentReference>()(
|
|
7
17
|
Schema.Struct({
|
|
8
18
|
/**
|
|
@@ -23,7 +33,7 @@ export class PeppolDocumentResponseDocumentReference extends opaque<PeppolDocume
|
|
|
23
33
|
*
|
|
24
34
|
* @name `cbc:DocumentTypeCode`
|
|
25
35
|
*/
|
|
26
|
-
documentTypeCode: Schema.optional(
|
|
36
|
+
documentTypeCode: Schema.optional(PeppolDocumentTypeCode),
|
|
27
37
|
/**
|
|
28
38
|
* @description The version of the document that has been identifier with the document identifier.
|
|
29
39
|
*
|
|
@@ -38,4 +48,7 @@ export class PeppolDocumentResponseDocumentReference extends opaque<PeppolDocume
|
|
|
38
48
|
})
|
|
39
49
|
) {}
|
|
40
50
|
|
|
51
|
+
/**
|
|
52
|
+
* @description Alias of {@link PeppolDocumentResponseDocumentReference} under the message level response naming.
|
|
53
|
+
*/
|
|
41
54
|
export type PeppolMessageLevelDocumentResponseDocumentReference = PeppolDocumentResponseDocumentReference;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { PeppolApplicationResponseTypeCode } from '#/schemas/values/application-response-type-code-schema.ts';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
+
* @description Wraps `cac:Response` inside a message level response: the overall response code and an optional textual note.
|
|
8
|
+
*
|
|
7
9
|
* @summary Response information
|
|
8
10
|
*
|
|
9
11
|
* @name `cac:Response`
|
|
10
12
|
*
|
|
11
13
|
* @cardinality (1..1)
|
|
12
14
|
*
|
|
13
|
-
* @see {@link
|
|
15
|
+
* @see {@link PeppolMessageLevelResponseDocumentResponse}
|
|
14
16
|
*/
|
|
15
17
|
export class PeppolDocumentResponseDocument extends opaque<PeppolDocumentResponseDocument>()(
|
|
16
18
|
Schema.Struct({
|
|
@@ -25,7 +27,7 @@ export class PeppolDocumentResponseDocument extends opaque<PeppolDocumentRespons
|
|
|
25
27
|
*
|
|
26
28
|
* @name `cbc:ResponseCode`
|
|
27
29
|
*/
|
|
28
|
-
responseCode:
|
|
30
|
+
responseCode: PeppolApplicationResponseTypeCode,
|
|
29
31
|
/**
|
|
30
32
|
* @description Used to meake any comments or instructions relevant to the response. The use of this element requires manual assessment by the receiver.
|
|
31
33
|
*
|
|
@@ -35,4 +37,7 @@ export class PeppolDocumentResponseDocument extends opaque<PeppolDocumentRespons
|
|
|
35
37
|
})
|
|
36
38
|
) {}
|
|
37
39
|
|
|
40
|
+
/**
|
|
41
|
+
* @description Alias of {@link PeppolDocumentResponseDocument} under the message level response naming.
|
|
42
|
+
*/
|
|
38
43
|
export type PeppolMessageLevelResponseDocumentResponseDocument = PeppolDocumentResponseDocument;
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { PeppolApplicationResponseTypeCode } from '#/schemas/values/application-response-type-code-schema.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description Wraps `cac:Status` inside a line response: the coded reason for an issue found in the document.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { statusReasonCode: 'SV' }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolDocumentResponseLineResponseContent}
|
|
15
|
+
*/
|
|
6
16
|
export class PeppolStatus extends opaque<PeppolStatus>()(
|
|
7
17
|
Schema.Struct({
|
|
8
18
|
/**
|
|
@@ -16,6 +26,16 @@ export class PeppolStatus extends opaque<PeppolStatus>()(
|
|
|
16
26
|
})
|
|
17
27
|
) {}
|
|
18
28
|
|
|
29
|
+
/**
|
|
30
|
+
* @description A response to a particular line in the business document: the line response code, a description of the issue and its coded status.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* { responseCode: 'RE', description: 'Validation gives error [CL-T77-R0002]', status: { statusReasonCode: 'SV' } }
|
|
35
|
+
* ```;
|
|
36
|
+
*
|
|
37
|
+
* @see {@link PeppolDocumentResponseLineResponse}
|
|
38
|
+
*/
|
|
19
39
|
export class PeppolDocumentResponseLineResponseContent extends opaque<PeppolDocumentResponseLineResponseContent>()(
|
|
20
40
|
Schema.Struct({
|
|
21
41
|
/**
|
|
@@ -29,7 +49,7 @@ export class PeppolDocumentResponseLineResponseContent extends opaque<PeppolDocu
|
|
|
29
49
|
*
|
|
30
50
|
* @name `cbc:ResponseCode`
|
|
31
51
|
*/
|
|
32
|
-
responseCode:
|
|
52
|
+
responseCode: PeppolApplicationResponseTypeCode,
|
|
33
53
|
/**
|
|
34
54
|
* @description The description of the issued identifier in the transaction document.
|
|
35
55
|
*
|
|
@@ -3,6 +3,16 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolDocumentResponseLineResponseContent } from '#/schemas/peppol-document-response-line-response-content-schema.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description Wraps `cac:LineReference` inside a line response: an XPath pointing at the element that caused the reported issue.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { lineId: '/Invoice/cac:InvoiceLine[1]' }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolDocumentResponseLineResponse}
|
|
15
|
+
*/
|
|
6
16
|
export class PeppolLineReference extends opaque<PeppolLineReference>()(
|
|
7
17
|
Schema.Struct({
|
|
8
18
|
/**
|
|
@@ -20,6 +30,19 @@ export class PeppolLineReference extends opaque<PeppolLineReference>()(
|
|
|
20
30
|
})
|
|
21
31
|
) {}
|
|
22
32
|
|
|
33
|
+
/**
|
|
34
|
+
* @description Wraps `cac:LineResponse` inside a message level response: pairs a line reference with the response for that line.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* {
|
|
39
|
+
* lineReference: { lineId: '/Invoice/cac:InvoiceLine[1]' },
|
|
40
|
+
* response: { responseCode: 'RE', description: 'Invalid tax category', status: { statusReasonCode: 'SV' } }
|
|
41
|
+
* }
|
|
42
|
+
* ```;
|
|
43
|
+
*
|
|
44
|
+
* @see {@link PeppolMessageLevelResponseDocumentResponse}
|
|
45
|
+
*/
|
|
23
46
|
export class PeppolDocumentResponseLineResponse extends opaque<PeppolDocumentResponseLineResponse>()(
|
|
24
47
|
Schema.Struct({
|
|
25
48
|
/**
|
|
@@ -37,4 +60,7 @@ export class PeppolDocumentResponseLineResponse extends opaque<PeppolDocumentRes
|
|
|
37
60
|
})
|
|
38
61
|
) {}
|
|
39
62
|
|
|
63
|
+
/**
|
|
64
|
+
* @description Alias of {@link PeppolDocumentResponseLineResponse} under the message level response naming.
|
|
65
|
+
*/
|
|
40
66
|
export type PeppolMessageLevelDocumentResponseLineResponse = PeppolDocumentResponseLineResponse;
|