@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
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { PeppolBase64 } from '#/schemas/utils/peppol-base-64-schema.ts';
|
|
5
|
+
import { PeppolMimeCode } from '#/schemas/values/mime-codes-schema.ts';
|
|
6
6
|
|
|
7
7
|
// RFC 4648 §5 — Base64url Encoding: URL/file-safe alphabet (A-Z a-z 0-9 - _), optional `=` padding.
|
|
8
8
|
// Effect port of `z.base64url()`: keeps the value as a plain string and only validates the shape.
|
|
9
9
|
const base64UrlSchema = Schema.String.check(Schema.isPattern(/^[A-Za-z0-9\-_]+={0,2}$/)).annotate({ message: 'Invalid base64url' });
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
+
* @description An attached document embedded in the Invoice as a Base64 encoded binary object, together with its MIME type and file name. Wraps the
|
|
13
|
+
* `cbc:EmbeddedDocumentBinaryObject` element.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* { content: 'aHR0cHM6Ly90ZXN0LXZlZmEuZGlmaS5uby9wZXBwb2xiaXM=', mimeCode: 'text/csv', filename: 'Hours - spent.csv' }
|
|
18
|
+
* ```;
|
|
19
|
+
*
|
|
12
20
|
* @summary Binary object for attachments
|
|
13
21
|
*
|
|
14
22
|
* @name cbc:EmbeddedDocumentBinaryObject (+ @mimeCode, @filename)
|
|
@@ -25,7 +33,7 @@ export class PeppolBinaryObject extends opaque<PeppolBinaryObject>()(
|
|
|
25
33
|
*
|
|
26
34
|
* @name `#text` (Base64 content)
|
|
27
35
|
*/
|
|
28
|
-
content: Schema.Union([
|
|
36
|
+
content: Schema.Union([PeppolBase64, base64UrlSchema]),
|
|
29
37
|
/**
|
|
30
38
|
* @description The mime code of the attached document.
|
|
31
39
|
*
|
|
@@ -36,7 +44,7 @@ export class PeppolBinaryObject extends opaque<PeppolBinaryObject>()(
|
|
|
36
44
|
*
|
|
37
45
|
* @name `@mimeCode`
|
|
38
46
|
*/
|
|
39
|
-
mimeCode:
|
|
47
|
+
mimeCode: PeppolMimeCode,
|
|
40
48
|
/**
|
|
41
49
|
* @description The file name of the attached document.
|
|
42
50
|
*
|
|
@@ -2,6 +2,17 @@ import { Schema } from 'effect';
|
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @description A contact point for a party, such as the person responsible for receiving the Invoice. Wraps the `cac:Contact` element with an optional name,
|
|
7
|
+
* telephone number and electronic mail address.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { name: 'Lisa Johnson', telephone: '23434234', electronicMail: 'lj@buyer.se' }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolPartySchema}
|
|
15
|
+
*/
|
|
5
16
|
export class PeppolContact extends opaque<PeppolContact>()(
|
|
6
17
|
Schema.Struct({
|
|
7
18
|
/**
|
|
@@ -3,7 +3,7 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolBaseLine } from '#/schemas/fields/peppol-base-line-schema.ts';
|
|
4
4
|
import { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';
|
|
5
5
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
6
|
-
import {
|
|
6
|
+
import { PeppolQuantityUnitCode } from '#/schemas/values/quantity-unit-codes-schema.ts';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @description Credit note line is identical to Invoice line except the quantity element name.
|
|
@@ -35,10 +35,15 @@ export class PeppolCreditNoteLine extends opaque<PeppolCreditNoteLine>()(
|
|
|
35
35
|
*
|
|
36
36
|
* @see {@link quantityUnitCodes}
|
|
37
37
|
*/
|
|
38
|
-
unitCode:
|
|
38
|
+
unitCode: PeppolQuantityUnitCode,
|
|
39
39
|
})
|
|
40
40
|
),
|
|
41
41
|
})
|
|
42
42
|
)
|
|
43
43
|
) {}
|
|
44
|
+
/**
|
|
45
|
+
* @description Encoded form of {@link PeppolCreditNoteLine} produced by the Effect Schema codec. Fields mirror the decoded structure.
|
|
46
|
+
*
|
|
47
|
+
* @see {@link PeppolCreditNoteLine}
|
|
48
|
+
*/
|
|
44
49
|
export interface PeppolCreditNoteLineEncoded extends Schema.Codec.Encoded<typeof PeppolCreditNoteLine> {}
|
|
@@ -2,11 +2,21 @@ 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 { PeppolIcdCode } from '#/schemas/values/icd-codes-schema.ts';
|
|
6
6
|
|
|
7
7
|
import { PeppolAddress } from './peppol-address-schema.ts';
|
|
8
8
|
import { PeppolIdentifier } from './peppol-identifier-schema.ts';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* @description The name of the party to which the goods and services are delivered. Wraps the `cac:PartyName` element of the delivery party.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* { name: 'Delivery party Name' }
|
|
16
|
+
* ```;
|
|
17
|
+
*
|
|
18
|
+
* @see {@link PeppolDeliveryParty}
|
|
19
|
+
*/
|
|
10
20
|
export class PeppolDeliveryPartyPartyName extends opaque<PeppolDeliveryPartyPartyName>()(
|
|
11
21
|
Schema.Struct({
|
|
12
22
|
/**
|
|
@@ -20,6 +30,16 @@ export class PeppolDeliveryPartyPartyName extends opaque<PeppolDeliveryPartyPart
|
|
|
20
30
|
})
|
|
21
31
|
) {}
|
|
22
32
|
|
|
33
|
+
/**
|
|
34
|
+
* @description The party to which the goods and services are delivered, when it differs from the Buyer. Wraps the `cac:DeliveryParty` element.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* { partyName: { name: 'Delivery party Name' } }
|
|
39
|
+
* ```;
|
|
40
|
+
*
|
|
41
|
+
* @see {@link PeppolDelivery}
|
|
42
|
+
*/
|
|
23
43
|
export class PeppolDeliveryParty extends opaque<PeppolDeliveryParty>()(
|
|
24
44
|
Schema.Struct({
|
|
25
45
|
/**
|
|
@@ -31,6 +51,17 @@ export class PeppolDeliveryParty extends opaque<PeppolDeliveryParty>()(
|
|
|
31
51
|
})
|
|
32
52
|
) {}
|
|
33
53
|
|
|
54
|
+
/**
|
|
55
|
+
* @description The location at which the goods and services are delivered, identified by an identifier and an optional address. Wraps the `cac:DeliveryLocation`
|
|
56
|
+
* element.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* { id: { id: '9483759475923478', schemeId: '0088' }, address: { cityName: 'Stockholm', countryCode: { identificationCode: 'SE' } } }
|
|
61
|
+
* ```;
|
|
62
|
+
*
|
|
63
|
+
* @see {@link PeppolDelivery}
|
|
64
|
+
*/
|
|
34
65
|
export class PeppolDeliveryLocation extends opaque<PeppolDeliveryLocation>()(
|
|
35
66
|
Schema.Struct({
|
|
36
67
|
/**
|
|
@@ -64,7 +95,7 @@ export class PeppolDeliveryLocation extends opaque<PeppolDeliveryLocation>()(
|
|
|
64
95
|
*
|
|
65
96
|
* @name `@schemeID`
|
|
66
97
|
*/
|
|
67
|
-
schemeId: Schema.optional(
|
|
98
|
+
schemeId: Schema.optional(PeppolIcdCode),
|
|
68
99
|
})
|
|
69
100
|
)
|
|
70
101
|
),
|
|
@@ -79,6 +110,17 @@ export class PeppolDeliveryLocation extends opaque<PeppolDeliveryLocation>()(
|
|
|
79
110
|
})
|
|
80
111
|
) {}
|
|
81
112
|
|
|
113
|
+
/**
|
|
114
|
+
* @description Information about the delivery of the goods and services, such as the actual delivery date, the delivery location and the delivery party. Wraps the
|
|
115
|
+
* `cac:Delivery` element.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* { actualDeliveryDate: '2017-11-01', deliveryLocation: { id: { id: '9483759475923478' } } }
|
|
120
|
+
* ```;
|
|
121
|
+
*
|
|
122
|
+
* @see {@link PeppolDeliveryLocation}
|
|
123
|
+
*/
|
|
82
124
|
export class PeppolDelivery extends opaque<PeppolDelivery>()(
|
|
83
125
|
Schema.Struct({
|
|
84
126
|
/**
|
|
@@ -3,6 +3,14 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
+
* @description A generic identifier paired with an optional identification scheme identifier. Wraps a `cbc:ID` element and its optional `@schemeID` attribute, and
|
|
7
|
+
* is reused across document references.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { id: '99887766', schemeId: '0088' }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
6
14
|
* @summary Identifier with optional scheme
|
|
7
15
|
*
|
|
8
16
|
* @name `cbc:ID (+ optional @schemeID)`
|
|
@@ -3,6 +3,17 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description The period relevant for an Invoice line, given by an optional start date and end date. Wraps the `cac:InvoicePeriod` element as used on a line; the
|
|
8
|
+
* document level period extends this shape in {@link PeppolInvoicePeriod}.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* { startDate: '2017-10-01', endDate: '2017-10-31' }
|
|
13
|
+
* ```;
|
|
14
|
+
*
|
|
15
|
+
* @see {@link PeppolInvoicePeriod}
|
|
16
|
+
*/
|
|
6
17
|
export class PeppolInvoiceLinePeriod extends opaque<PeppolInvoiceLinePeriod>()(
|
|
7
18
|
Schema.Struct({
|
|
8
19
|
/**
|
|
@@ -3,9 +3,11 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolBaseLine } from '#/schemas/fields/peppol-base-line-schema.ts';
|
|
4
4
|
import { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';
|
|
5
5
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
6
|
-
import {
|
|
6
|
+
import { PeppolQuantityUnitCode } from '#/schemas/values/quantity-unit-codes-schema.ts';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* @description A line of the Invoice, extending the common line fields with the invoiced quantity. Wraps the `cac:InvoiceLine` element.
|
|
10
|
+
*
|
|
9
11
|
* @summary Invoice line
|
|
10
12
|
*
|
|
11
13
|
* @name cac:InvoiceLine
|
|
@@ -38,9 +40,14 @@ export class PeppolInvoiceLine extends opaque<PeppolInvoiceLine>()(
|
|
|
38
40
|
*
|
|
39
41
|
* @see {@link quantityUnitCodes}
|
|
40
42
|
*/
|
|
41
|
-
unitCode:
|
|
43
|
+
unitCode: PeppolQuantityUnitCode,
|
|
42
44
|
})
|
|
43
45
|
),
|
|
44
46
|
})
|
|
45
47
|
) {}
|
|
48
|
+
/**
|
|
49
|
+
* @description Encoded form of {@link PeppolInvoiceLine} produced by the Effect Schema codec. Fields mirror the decoded structure.
|
|
50
|
+
*
|
|
51
|
+
* @see {@link PeppolInvoiceLine}
|
|
52
|
+
*/
|
|
46
53
|
export interface PeppolInvoiceLineEncoded extends Schema.Codec.Encoded<typeof PeppolInvoiceLine> {}
|
|
@@ -2,7 +2,7 @@ import { Schema } from 'effect';
|
|
|
2
2
|
|
|
3
3
|
import { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
|
-
import {
|
|
5
|
+
import { PeppolVatDateCode } from '#/schemas/values/vat-date-code-schema.ts';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @description A group of business terms providing information on the invoice period. Also called delivery period. If the group is used, the invoiceing period
|
|
@@ -25,7 +25,7 @@ export class PeppolInvoicePeriod extends opaque<PeppolInvoicePeriod>()(
|
|
|
25
25
|
*
|
|
26
26
|
* @name `cbc:DescriptionCode`
|
|
27
27
|
*/
|
|
28
|
-
descriptionCode: Schema.optional(
|
|
28
|
+
descriptionCode: Schema.optional(PeppolVatDateCode),
|
|
29
29
|
})
|
|
30
30
|
)
|
|
31
31
|
) {}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
|
-
import {
|
|
4
|
+
import { PeppolItemClassificationCode } from '#/schemas/values/item-classification-codes-schema.ts';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @description A code for classifying the item by its type or nature.
|
|
@@ -30,7 +30,7 @@ export class PeppolItemClassification extends opaque<PeppolItemClassification>()
|
|
|
30
30
|
*
|
|
31
31
|
* @name `@listID`
|
|
32
32
|
*/
|
|
33
|
-
listId:
|
|
33
|
+
listId: PeppolItemClassificationCode,
|
|
34
34
|
/**
|
|
35
35
|
* @description The identification scheme version identifier of the Item classification identifier.
|
|
36
36
|
*
|
|
@@ -2,9 +2,20 @@ import { Schema } from 'effect';
|
|
|
2
2
|
|
|
3
3
|
import { PriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { PeppolAllowanceChargeReasonCode } from '#/schemas/values/allowance-charge-reason-code-schema.ts';
|
|
6
|
+
import { PeppolChargeReasonCode } from '#/schemas/values/charge-reason-code-schema.ts';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @description Shared fields for an allowance or charge applied to an Invoice line. Extends the price level allowance and charge fields with the reason text and
|
|
10
|
+
* the multiplier factor used to calculate the amount.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* { amount: { value: 200, currencyId: 'EUR' }, chargeIndicator: false, allowanceChargeReason: 'Discount' }
|
|
15
|
+
* ```;
|
|
16
|
+
*
|
|
17
|
+
* @see {@link PeppolLineAllowanceCharge}
|
|
18
|
+
*/
|
|
8
19
|
export class BaseLineAllowanceCharge extends opaque<BaseLineAllowanceCharge>()(
|
|
9
20
|
Schema.Struct({
|
|
10
21
|
...PriceAllowanceCharge.fields /**
|
|
@@ -24,13 +35,24 @@ export class BaseLineAllowanceCharge extends opaque<BaseLineAllowanceCharge>()(
|
|
|
24
35
|
})
|
|
25
36
|
) {}
|
|
26
37
|
|
|
38
|
+
/**
|
|
39
|
+
* @description An allowance applied to an Invoice line, marked by a `cbc:ChargeIndicator` of `false`. Adds an allowance reason code to the shared line allowance
|
|
40
|
+
* and charge fields.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* { amount: { value: 200, currencyId: 'EUR' }, chargeIndicator: false, allowanceChargeReasonCode: '95' }
|
|
45
|
+
* ```;
|
|
46
|
+
*
|
|
47
|
+
* @see {@link PeppolLineAllowanceCharge}
|
|
48
|
+
*/
|
|
27
49
|
export class PeppolLineAllowance extends opaque<PeppolLineAllowance>()(
|
|
28
50
|
Schema.Struct({
|
|
29
51
|
...BaseLineAllowanceCharge.fields,
|
|
30
52
|
/**
|
|
31
53
|
* @name cbc:AllowanceChargeReasonCode
|
|
32
54
|
*/
|
|
33
|
-
allowanceChargeReasonCode: Schema.optional(
|
|
55
|
+
allowanceChargeReasonCode: Schema.optional(PeppolAllowanceChargeReasonCode),
|
|
34
56
|
/**
|
|
35
57
|
* @name cbc:ChargeIndicator
|
|
36
58
|
*
|
|
@@ -42,13 +64,24 @@ export class PeppolLineAllowance extends opaque<PeppolLineAllowance>()(
|
|
|
42
64
|
})
|
|
43
65
|
) {}
|
|
44
66
|
|
|
67
|
+
/**
|
|
68
|
+
* @description A charge applied to an Invoice line, marked by a `cbc:ChargeIndicator` of `true`. Adds a charge reason code to the shared line allowance and charge
|
|
69
|
+
* fields.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* { amount: { value: 25, currencyId: 'EUR' }, chargeIndicator: true, allowanceChargeReasonCode: 'AA' }
|
|
74
|
+
* ```;
|
|
75
|
+
*
|
|
76
|
+
* @see {@link PeppolLineAllowanceCharge}
|
|
77
|
+
*/
|
|
45
78
|
export class PeppolLineCharge extends opaque<PeppolLineCharge>()(
|
|
46
79
|
Schema.Struct({
|
|
47
80
|
...BaseLineAllowanceCharge.fields,
|
|
48
81
|
/**
|
|
49
82
|
* @name cbc:AllowanceChargeReasonCode
|
|
50
83
|
*/
|
|
51
|
-
allowanceChargeReasonCode: Schema.optional(
|
|
84
|
+
allowanceChargeReasonCode: Schema.optional(PeppolChargeReasonCode),
|
|
52
85
|
/**
|
|
53
86
|
* @name cbc:ChargeIndicator
|
|
54
87
|
*
|
|
@@ -60,9 +93,24 @@ export class PeppolLineCharge extends opaque<PeppolLineCharge>()(
|
|
|
60
93
|
})
|
|
61
94
|
) {}
|
|
62
95
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
96
|
+
/**
|
|
97
|
+
* @description An allowance or charge applied to an Invoice line, selected by the `cbc:ChargeIndicator` value: `false` selects an allowance, `true` selects a
|
|
98
|
+
* charge.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* { amount: { value: 25, currencyId: 'EUR' }, chargeIndicator: true, allowanceChargeReasonCode: 'AA', allowanceChargeReason: 'Advertising' }
|
|
103
|
+
* ```;
|
|
104
|
+
*
|
|
105
|
+
* @see {@link PeppolLineAllowance}
|
|
106
|
+
*/
|
|
107
|
+
export class PeppolLineAllowanceCharge extends opaque<PeppolLineAllowanceCharge>()(
|
|
108
|
+
Schema.Union([PeppolLineAllowance, PeppolLineCharge]).annotate({ message: 'unable to decode line allowance charge' })
|
|
109
|
+
) {}
|
|
66
110
|
|
|
67
|
-
|
|
68
|
-
|
|
111
|
+
/**
|
|
112
|
+
* @description Encoded form of {@link PeppolLineAllowanceCharge} produced by the Effect Schema codec.
|
|
113
|
+
*
|
|
114
|
+
* @see {@link PeppolLineAllowanceCharge}
|
|
115
|
+
*/
|
|
116
|
+
export type PeppolLineAllowanceChargeEncoded = Schema.Codec.Encoded<typeof PeppolLineAllowanceCharge>;
|
|
@@ -4,9 +4,19 @@ import { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';
|
|
|
4
4
|
import { PeppolItemClassification } from '#/schemas/fields/peppol-item-classification-schema.ts';
|
|
5
5
|
import { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';
|
|
6
6
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { PeppolIcdCode } from '#/schemas/values/icd-codes-schema.ts';
|
|
8
|
+
import { PeppolCountryCodeValue } from '#/schemas/values/peppol-country-code-schema.ts';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* @description An additional property of the item, expressed as an attribute name and value pair.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* { name: 'Colour', value: 'Blue' }
|
|
16
|
+
* ```;
|
|
17
|
+
*
|
|
18
|
+
* @see {@link PeppolLineItem}
|
|
19
|
+
*/
|
|
10
20
|
export class PeppolAdditionalItemProperties extends opaque<PeppolAdditionalItemProperties>()(
|
|
11
21
|
Schema.Struct({
|
|
12
22
|
/**
|
|
@@ -28,6 +38,16 @@ export class PeppolAdditionalItemProperties extends opaque<PeppolAdditionalItemP
|
|
|
28
38
|
})
|
|
29
39
|
) {}
|
|
30
40
|
|
|
41
|
+
/**
|
|
42
|
+
* @description A code classifying the item by its type or nature, identified by a scheme such as CPV.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* { itemClassification: { id: '09348023', listId: 'STI' } }
|
|
47
|
+
* ```;
|
|
48
|
+
*
|
|
49
|
+
* @see {@link PeppolItemClassification}
|
|
50
|
+
*/
|
|
31
51
|
export class PeppolCommodityClassifications extends opaque<PeppolCommodityClassifications>()(
|
|
32
52
|
Schema.Struct({
|
|
33
53
|
/**
|
|
@@ -44,6 +64,16 @@ export class PeppolCommodityClassifications extends opaque<PeppolCommodityClassi
|
|
|
44
64
|
})
|
|
45
65
|
) {}
|
|
46
66
|
|
|
67
|
+
/**
|
|
68
|
+
* @description The country from which the item originates, identified by an ISO 3166-1 country code.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* { identificationCode: 'NO' }
|
|
73
|
+
* ```;
|
|
74
|
+
*
|
|
75
|
+
* @see {@link PeppolLineItem}
|
|
76
|
+
*/
|
|
47
77
|
export class PeppolOriginCountryCode extends opaque<PeppolOriginCountryCode>()(
|
|
48
78
|
Schema.Struct({
|
|
49
79
|
/**
|
|
@@ -53,10 +83,20 @@ export class PeppolOriginCountryCode extends opaque<PeppolOriginCountryCode>()(
|
|
|
53
83
|
*
|
|
54
84
|
* @name `cbc:IdentificationCode`
|
|
55
85
|
*/
|
|
56
|
-
identificationCode:
|
|
86
|
+
identificationCode: PeppolCountryCodeValue,
|
|
57
87
|
})
|
|
58
88
|
) {}
|
|
59
89
|
|
|
90
|
+
/**
|
|
91
|
+
* @description An item identifier based on a registered scheme, such as a GTIN or EAN.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* { id: { id: '21382183120983', schemeId: '0088' } }
|
|
96
|
+
* ```;
|
|
97
|
+
*
|
|
98
|
+
* @see {@link PeppolIdentifier}
|
|
99
|
+
*/
|
|
60
100
|
export class PeppolStandardItemIdentification extends opaque<PeppolStandardItemIdentification>()(
|
|
61
101
|
Schema.Struct({
|
|
62
102
|
/**
|
|
@@ -83,12 +123,22 @@ export class PeppolStandardItemIdentification extends opaque<PeppolStandardItemI
|
|
|
83
123
|
*
|
|
84
124
|
* @name `@schemeID`
|
|
85
125
|
*/
|
|
86
|
-
schemeId:
|
|
126
|
+
schemeId: PeppolIcdCode,
|
|
87
127
|
})
|
|
88
128
|
),
|
|
89
129
|
})
|
|
90
130
|
) {}
|
|
91
131
|
|
|
132
|
+
/**
|
|
133
|
+
* @description An identifier assigned by the Seller for the item.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* { id: '987323' }
|
|
138
|
+
* ```;
|
|
139
|
+
*
|
|
140
|
+
* @see {@link PeppolLineItem}
|
|
141
|
+
*/
|
|
92
142
|
export class PeppolSellersItemIdentification extends opaque<PeppolSellersItemIdentification>()(
|
|
93
143
|
Schema.Struct({
|
|
94
144
|
/**
|
|
@@ -105,6 +155,16 @@ export class PeppolSellersItemIdentification extends opaque<PeppolSellersItemIde
|
|
|
105
155
|
})
|
|
106
156
|
) {}
|
|
107
157
|
|
|
158
|
+
/**
|
|
159
|
+
* @description An identifier assigned by the Buyer for the item.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* { id: '12345' }
|
|
164
|
+
* ```;
|
|
165
|
+
*
|
|
166
|
+
* @see {@link PeppolLineItem}
|
|
167
|
+
*/
|
|
108
168
|
export class PeppolBuyersItemIdentification extends opaque<PeppolBuyersItemIdentification>()(
|
|
109
169
|
Schema.Struct({
|
|
110
170
|
/**
|
|
@@ -122,6 +182,8 @@ export class PeppolBuyersItemIdentification extends opaque<PeppolBuyersItemIdent
|
|
|
122
182
|
) {}
|
|
123
183
|
|
|
124
184
|
/**
|
|
185
|
+
* @description The item details for an invoice or credit note line, including its name, identifiers, classification, and line VAT category.
|
|
186
|
+
*
|
|
125
187
|
* @summary Item details on invoice/credit-note line
|
|
126
188
|
*
|
|
127
189
|
* @name cac:Item
|
|
@@ -193,4 +255,7 @@ export class PeppolLineItem extends opaque<PeppolLineItem>()(
|
|
|
193
255
|
})
|
|
194
256
|
) {}
|
|
195
257
|
|
|
258
|
+
/**
|
|
259
|
+
* @description Alias for {@link PeppolLineItem}.
|
|
260
|
+
*/
|
|
196
261
|
export type PeppolItem = PeppolLineItem;
|
|
@@ -3,6 +3,16 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description A price level allowance or charge applied to the item price, expressed as an amount and a charge indicator.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { amount: { value: 200, currencyId: 'EUR' }, chargeIndicator: false }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolLinePriceAllowanceCharge}
|
|
15
|
+
*/
|
|
6
16
|
class PriceAllowanceCharge extends opaque<PriceAllowanceCharge>()(
|
|
7
17
|
Schema.Struct({
|
|
8
18
|
/**
|
|
@@ -28,6 +38,16 @@ class PriceAllowanceCharge extends opaque<PriceAllowanceCharge>()(
|
|
|
28
38
|
})
|
|
29
39
|
) {}
|
|
30
40
|
|
|
41
|
+
/**
|
|
42
|
+
* @description A price level allowance on the item price. Only allowances are allowed at price level, so the charge indicator is fixed to false.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* { amount: { value: 200, currencyId: 'EUR' }, chargeIndicator: false }
|
|
47
|
+
* ```;
|
|
48
|
+
*
|
|
49
|
+
* @see {@link PeppolLinePrice}
|
|
50
|
+
*/
|
|
31
51
|
export class PeppolLinePriceAllowanceCharge extends opaque<PeppolLinePriceAllowanceCharge>()(
|
|
32
52
|
PriceAllowanceCharge.pipe(
|
|
33
53
|
Schema.fieldsAssign({
|
|
@@ -6,6 +6,8 @@ import { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';
|
|
|
6
6
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* @description The price details of an invoice or credit note line, including the price amount and any price level allowance.
|
|
10
|
+
*
|
|
9
11
|
* @summary Price details on invoice line
|
|
10
12
|
*
|
|
11
13
|
* @name cac:Price
|
|
@@ -3,6 +3,8 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
+
* @description A reference to the purchase order or sales order that the invoice relates to.
|
|
7
|
+
*
|
|
6
8
|
* @summary ORDER AND SALES ORDER REFERENCE
|
|
7
9
|
*
|
|
8
10
|
* @name cac:OrderReference
|
|
@@ -6,9 +6,19 @@ import { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';
|
|
|
6
6
|
import { PeppolPartyLegalEntity } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';
|
|
7
7
|
import { PeppolPartyTaxScheme } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';
|
|
8
8
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { PeppolElectronicAddressCode } from '#/schemas/values/electronic-codes-schema.ts';
|
|
10
|
+
import { PeppolIcdCode } from '#/schemas/values/icd-codes-schema.ts';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @description A name by which the Buyer or Seller is known, other than its registered name.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* { name: 'SupplierTradingName Ltd.' }
|
|
18
|
+
* ```;
|
|
19
|
+
*
|
|
20
|
+
* @see {@link PeppolPartySchema}
|
|
21
|
+
*/
|
|
12
22
|
export class PeppolPartyName extends opaque<PeppolPartyName>()(
|
|
13
23
|
Schema.Struct({
|
|
14
24
|
/**
|
|
@@ -23,6 +33,16 @@ export class PeppolPartyName extends opaque<PeppolPartyName>()(
|
|
|
23
33
|
})
|
|
24
34
|
) {}
|
|
25
35
|
|
|
36
|
+
/**
|
|
37
|
+
* @description An identifier of the Buyer or Seller, with an optional identification scheme.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* { id: { id: '99887766', schemeId: '0088' } }
|
|
42
|
+
* ```;
|
|
43
|
+
*
|
|
44
|
+
* @see {@link PeppolPartySchema}
|
|
45
|
+
*/
|
|
26
46
|
export class PeppolPartyIdentification extends opaque<PeppolPartyIdentification>()(
|
|
27
47
|
Schema.Struct({
|
|
28
48
|
/**
|
|
@@ -52,12 +72,22 @@ export class PeppolPartyIdentification extends opaque<PeppolPartyIdentification>
|
|
|
52
72
|
*
|
|
53
73
|
* @name `@schemeID`
|
|
54
74
|
*/
|
|
55
|
-
schemeId: Schema.optional(
|
|
75
|
+
schemeId: Schema.optional(PeppolIcdCode),
|
|
56
76
|
})
|
|
57
77
|
),
|
|
58
78
|
})
|
|
59
79
|
) {}
|
|
60
80
|
|
|
81
|
+
/**
|
|
82
|
+
* @description The Buyer or Seller electronic address to which the application level response to the invoice may be delivered.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* { id: '9482348239847239874', schemeId: '0088' }
|
|
87
|
+
* ```;
|
|
88
|
+
*
|
|
89
|
+
* @see {@link PeppolPartySchema}
|
|
90
|
+
*/
|
|
61
91
|
export class PeppolPartyEndpointId extends opaque<PeppolPartyEndpointId>()(
|
|
62
92
|
PeppolIdentifier.pipe(
|
|
63
93
|
Schema.fieldsAssign({
|
|
@@ -79,12 +109,14 @@ export class PeppolPartyEndpointId extends opaque<PeppolPartyEndpointId>()(
|
|
|
79
109
|
*
|
|
80
110
|
* @name `@schemeID`
|
|
81
111
|
*/
|
|
82
|
-
schemeId:
|
|
112
|
+
schemeId: PeppolElectronicAddressCode,
|
|
83
113
|
})
|
|
84
114
|
)
|
|
85
115
|
) {}
|
|
86
116
|
|
|
87
117
|
/**
|
|
118
|
+
* @description The common party substructure shared by the supplier, customer, and other party roles.
|
|
119
|
+
*
|
|
88
120
|
* @summary Party common substructure
|
|
89
121
|
*
|
|
90
122
|
* @name cac:Party
|
|
@@ -3,6 +3,16 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';
|
|
4
4
|
import { opaque } from '#/schemas/utils/opaque.ts';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description The legal entity details of a party, including the registered name and optional company identifiers.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* { registrationName: 'SupplierOfficialName Ltd', companyId: { id: 'GB983294' } }
|
|
12
|
+
* ```;
|
|
13
|
+
*
|
|
14
|
+
* @see {@link PeppolPartySchema}
|
|
15
|
+
*/
|
|
6
16
|
export class PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(
|
|
7
17
|
Schema.Struct({
|
|
8
18
|
/**
|
|
@@ -29,4 +39,7 @@ export class PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(
|
|
|
29
39
|
})
|
|
30
40
|
) {}
|
|
31
41
|
|
|
42
|
+
/**
|
|
43
|
+
* @description Alias for {@link PeppolPartyLegalEntity}.
|
|
44
|
+
*/
|
|
32
45
|
export type PeppolPartyLegalEntitySchema = PeppolPartyLegalEntity;
|