@endevops/peppol-schema 0.1.0-beta.4 → 0.1.0-beta.6
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 +9 -6
- package/dist/constants.d.ts +51 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +48 -0
- package/dist/constants.js.map +1 -0
- package/dist/eas-codes.generated-D8jjHFij.js.map +1 -1
- package/dist/index-CiW698HY.d.ts +3507 -0
- package/dist/index-CiW698HY.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2613
- package/dist/index.js +3122 -1563
- package/dist/index.js.map +1 -1
- package/dist/invoice-response-code-not-needs-schema-p_RKKNLc.js +18 -0
- package/dist/invoice-response-code-not-needs-schema-p_RKKNLc.js.map +1 -0
- package/dist/invoice-response-codes.d.ts +11 -0
- package/dist/invoice-response-codes.d.ts.map +1 -0
- package/dist/invoice-response-codes.js +32 -0
- package/dist/invoice-response-codes.js.map +1 -0
- package/dist/invoice-status-codes.generated-DL-agLdx.d.ts +24 -0
- package/dist/invoice-status-codes.generated-DL-agLdx.d.ts.map +1 -0
- package/dist/message-level-response-profile-id-DBpOW91B.js +9 -0
- package/dist/message-level-response-profile-id-DBpOW91B.js.map +1 -0
- package/dist/peppol-iso-date-string-BXLxzxdz.js +30 -0
- package/dist/peppol-iso-date-string-BXLxzxdz.js.map +1 -0
- package/dist/schematron.d.ts +408 -365
- package/dist/schematron.d.ts.map +1 -1
- package/dist/schematron.js +2040 -1547
- package/dist/schematron.js.map +1 -1
- package/dist/values.d.ts +95 -13218
- package/dist/values.d.ts.map +1 -1
- package/dist/values.js +1 -1
- package/dist/vat-dates.generated-CxFvt7m3.d.ts +68 -0
- package/dist/vat-dates.generated-CxFvt7m3.d.ts.map +1 -0
- package/dist/{vatex-codes.generated-BSgP3n5t.js → vatex-codes.generated-N7wsUrLh.js} +8 -9
- package/dist/vatex-codes.generated-N7wsUrLh.js.map +1 -0
- package/package.json +16 -18
- package/src/constants/transport-profile.ts +5 -1
- package/src/decoders/decode-billing.ts +1 -1
- package/src/decoders/decode-credit-note.ts +2 -4
- package/src/decoders/decode-invoice-response.ts +15 -37
- package/src/decoders/decode-invoice.ts +2 -4
- package/src/decoders/decode-message-level-response.ts +21 -48
- package/src/decoders/encode-credit-note.ts +1 -1
- package/src/decoders/encode-invoice-response.ts +7 -4
- package/src/decoders/encode-invoice.ts +1 -1
- package/src/decoders/encode-message-level-response.ts +4 -10
- package/src/decoders/fields/decode-additional-document-references.ts +1 -1
- package/src/decoders/fields/decode-address.ts +1 -1
- package/src/decoders/fields/decode-allowance-charges.ts +7 -15
- package/src/decoders/fields/decode-amount.ts +2 -2
- package/src/decoders/fields/decode-application-response.ts +21 -0
- package/src/decoders/fields/decode-billing-references.ts +1 -1
- package/src/decoders/fields/decode-contact.ts +1 -1
- package/src/decoders/fields/decode-credit-note-lines.ts +7 -15
- package/src/decoders/fields/decode-delivery.ts +1 -1
- package/src/decoders/fields/decode-electronic-address.ts +1 -1
- package/src/decoders/fields/decode-identifier.ts +1 -1
- package/src/decoders/fields/decode-invoice-line-period.ts +1 -1
- package/src/decoders/fields/decode-invoice-lines.ts +6 -14
- package/src/decoders/fields/decode-invoice-message-document-party.ts +2 -2
- package/src/decoders/fields/decode-invoice-message-party.ts +1 -6
- package/src/decoders/fields/decode-invoice-period.ts +7 -13
- package/src/decoders/fields/decode-legal-monetary-total.ts +1 -1
- package/src/decoders/fields/decode-line-allowance-charges.ts +7 -14
- package/src/decoders/fields/decode-line-price.ts +1 -7
- package/src/decoders/fields/decode-line-shared.ts +2 -4
- package/src/decoders/fields/decode-message-level-party.ts +1 -1
- package/src/decoders/fields/decode-node-list.ts +15 -0
- package/src/decoders/fields/decode-order-reference.ts +1 -1
- package/src/decoders/fields/decode-parties-tax-scheme.ts +1 -1
- package/src/decoders/fields/decode-party-legal-entity.ts +1 -1
- package/src/decoders/fields/decode-party-tax-scheme.ts +1 -1
- package/src/decoders/fields/decode-party.ts +3 -14
- package/src/decoders/fields/decode-payee-party.ts +1 -1
- package/src/decoders/fields/decode-payment-means.ts +2 -2
- package/src/decoders/fields/decode-payment-terms.ts +1 -1
- package/src/decoders/fields/decode-price-allowance-charge.ts +1 -7
- package/src/decoders/fields/decode-quantity.ts +1 -6
- package/src/decoders/fields/decode-simple-identifier.ts +1 -1
- package/src/decoders/fields/decode-tax-category.ts +1 -1
- package/src/decoders/fields/decode-tax-representative-party.ts +1 -1
- package/src/decoders/fields/decode-tax-totals.ts +2 -2
- package/src/decoders/fields/encode-additional-document-references.ts +3 -2
- package/src/decoders/fields/encode-address.ts +1 -1
- package/src/decoders/fields/encode-allowance-charges.ts +3 -2
- package/src/decoders/fields/encode-amount.ts +1 -1
- package/src/decoders/fields/encode-billing-references.ts +2 -2
- package/src/decoders/fields/encode-contact.ts +1 -1
- package/src/decoders/fields/encode-credit-note-lines.ts +2 -2
- package/src/decoders/fields/encode-delivery.ts +1 -1
- package/src/decoders/fields/encode-identifier.ts +1 -1
- package/src/decoders/fields/encode-invoice-line-period.ts +1 -1
- package/src/decoders/fields/encode-invoice-lines.ts +2 -2
- package/src/decoders/fields/encode-invoice-period.ts +1 -1
- package/src/decoders/fields/encode-legal-monetary-total.ts +1 -1
- package/src/decoders/fields/encode-line-allowance-charges.ts +2 -2
- package/src/decoders/fields/encode-line-price.ts +1 -1
- package/src/decoders/fields/encode-line-shared.ts +1 -1
- package/src/decoders/fields/encode-message-party.ts +26 -13
- package/src/decoders/fields/encode-order-reference.ts +1 -1
- package/src/decoders/fields/encode-parties-tax-scheme.ts +1 -1
- package/src/decoders/fields/encode-party-tax-scheme.ts +1 -1
- package/src/decoders/fields/encode-party.ts +1 -1
- package/src/decoders/fields/encode-payee-party.ts +1 -1
- package/src/decoders/fields/encode-payment-means.ts +2 -2
- package/src/decoders/fields/encode-payment-terms.ts +1 -1
- package/src/decoders/fields/encode-price-allowance-charges.ts +1 -1
- package/src/decoders/fields/encode-quantity.ts +1 -1
- package/src/decoders/fields/encode-tax-category.ts +1 -1
- package/src/decoders/fields/encode-tax-representative-party.ts +1 -1
- package/src/decoders/fields/encode-tax-totals.ts +4 -4
- package/src/helpers/bool.ts +9 -12
- package/src/helpers/get-prop.ts +2 -4
- package/src/helpers/str-or-und.ts +3 -4
- package/src/helpers/str.ts +12 -8
- package/src/index.ts +56 -6
- package/src/schemas/fields/peppol-additional-document-reference-schema.ts +123 -0
- package/src/schemas/fields/peppol-address-schema.ts +112 -0
- package/src/schemas/fields/peppol-allowance-charge-schema.ts +104 -0
- package/src/schemas/fields/peppol-amount-schema.ts +23 -0
- package/src/schemas/fields/peppol-base-line-schema.ts +141 -0
- package/src/{effect → schemas}/fields/peppol-billing-reference-schema.ts +25 -20
- package/src/schemas/fields/peppol-binary-object-schema.ts +52 -0
- package/src/schemas/fields/peppol-contact-schema.ts +20 -0
- package/src/schemas/fields/peppol-credit-note-line-schema.ts +44 -0
- package/src/schemas/fields/peppol-delivery-schema.ts +109 -0
- package/src/schemas/fields/peppol-identifier-schema.ts +21 -0
- package/src/schemas/fields/peppol-invoice-line-period-schema.ts +35 -0
- package/src/{effect → schemas}/fields/peppol-invoice-line-schema.ts +10 -10
- package/src/schemas/fields/peppol-invoice-period-schema.ts +31 -0
- package/src/schemas/fields/peppol-item-classification-schema.ts +46 -0
- package/src/schemas/fields/peppol-legal-monetary-total-schema.ts +127 -0
- package/src/schemas/fields/peppol-line-allowance-charge-schema.ts +68 -0
- package/src/schemas/fields/peppol-line-item-schema.ts +196 -0
- package/src/schemas/fields/peppol-line-price-allowance-charge-schema.ts +41 -0
- package/src/schemas/fields/peppol-line-price-schema.ts +32 -0
- package/src/schemas/fields/peppol-order-reference-schema.ts +38 -0
- package/src/schemas/fields/peppol-party-base-schema.ts +145 -0
- package/src/schemas/fields/peppol-party-legal-entity-schema.ts +32 -0
- package/src/schemas/fields/peppol-party-tax-scheme-schema.ts +41 -0
- package/src/schemas/fields/peppol-payee-party-schema.ts +119 -0
- package/src/schemas/fields/peppol-payment-means-schema.ts +224 -0
- package/src/schemas/fields/peppol-payment-terms-schema.ts +25 -0
- package/src/schemas/fields/peppol-quantity-schema.ts +22 -0
- package/src/schemas/fields/peppol-reference-schema.ts +9 -0
- package/src/schemas/fields/peppol-tax-category-schema.ts +47 -0
- package/src/schemas/fields/peppol-tax-representative-schema.ts +26 -0
- package/src/{effect → schemas}/fields/peppol-tax-subtotal-category-schema.ts +7 -6
- package/src/schemas/fields/peppol-tax-subtotal-schema.ts +33 -0
- package/src/schemas/fields/peppol-tax-totals-base-schema.ts +28 -0
- package/src/schemas/peppol-billing-base-schema.ts +366 -0
- package/src/schemas/peppol-credit-note-schema.ts +31 -0
- package/src/schemas/peppol-document-response-document-reference-schema.ts +41 -0
- package/src/schemas/peppol-document-response-document-schema.ts +38 -0
- package/src/schemas/peppol-document-response-line-response-content-schema.ts +49 -0
- package/src/schemas/peppol-document-response-line-response-schema.ts +40 -0
- package/src/schemas/peppol-document-schema.ts +120 -0
- package/src/{effect → schemas}/peppol-invoice-response-document-actual-response-schema.ts +25 -16
- package/src/schemas/peppol-invoice-response-document-actual-response-status-schema.ts +63 -0
- package/src/schemas/peppol-invoice-response-schema.ts +176 -0
- package/src/schemas/peppol-invoice-response-status-reason-code-schema.ts +40 -0
- package/src/schemas/peppol-invoice-schema.ts +45 -0
- package/src/schemas/peppol-iso-date-string.ts +20 -0
- package/src/schemas/peppol-message-level-response-document-response-schema.ts +35 -0
- package/src/schemas/peppol-message-level-response-party-schema.ts +20 -0
- package/src/schemas/peppol-message-level-response-schema.ts +98 -0
- package/src/schemas/utils/format-xsd-time.ts +80 -0
- package/src/{effect → schemas}/utils/index.ts +1 -1
- package/src/schemas/utils/is-valid-process.ts +1 -1
- package/src/schemas/utils/opaque.ts +19 -0
- package/src/{effect → schemas}/utils/peppol-vat-regex-schema.ts +0 -2
- package/src/schemas/utils/peppol-xsd-time-schema.ts +79 -0
- package/src/schemas/utils/quantity-unit-code-to-intl-unit.ts +2 -2
- package/src/schemas/values/credit-note-type-code-schema.ts +3 -5
- package/src/schemas/values/document-type-schemes-schema.ts +3 -5
- package/src/schemas/values/document-type-values-schema.ts +4 -7
- package/src/{effect → schemas}/values/duty-tax-fee-category-schema.ts +3 -3
- package/src/schemas/values/invoice-type-code-schema.ts +4 -8
- package/src/schemas/values/process-from-document-type-schema.ts +10 -12
- package/src/schemas/values/quantity-unit-codes-schema.ts +4 -8
- package/src/schematron/cen/ae/cen-en16931-br-ae-01.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-02.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-03.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-04.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-05.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-06.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-07.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-08.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-09.ts +6 -5
- package/src/schematron/cen/ae/cen-en16931-br-ae-10.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-01.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-02.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-03.ts +6 -10
- package/src/schematron/cen/af/cen-en16931-br-af-04.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-05.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-06.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-07.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-08.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-09.ts +6 -5
- package/src/schematron/cen/af/cen-en16931-br-af-10.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-01.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-02.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-03.ts +6 -10
- package/src/schematron/cen/ag/cen-en16931-br-ag-04.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-05.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-06.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-07.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-08.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-09.ts +6 -5
- package/src/schematron/cen/ag/cen-en16931-br-ag-10.ts +6 -5
- package/src/schematron/cen/b/cen-en16931-br-b-01.ts +6 -5
- package/src/schematron/cen/b/cen-en16931-br-b-02.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-01.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-02.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-03.ts +9 -6
- package/src/schematron/cen/cen-en16931-br-04.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-05.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-06.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-07.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-08.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-09.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-10.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-11.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-12.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-13.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-14.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-15.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-16.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-17.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-18.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-19.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-20.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-21.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-22.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-23.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-24.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-25.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-26.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-27.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-28.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-29.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-30.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-31.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-32.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-33.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-36.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-37.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-38.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-41.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-42.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-43.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-44.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-45.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-46.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-47.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-48.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-49.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-50.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-51.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-52.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-53.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-54.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-55.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-56.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-57.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-61.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-62.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-63.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-64.ts +6 -5
- package/src/schematron/cen/cen-en16931-br-65.ts +6 -5
- package/src/schematron/cen/cl/cen-en16931-br-cl-08.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-03.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-04.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-05.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-06.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-07.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-08.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-09.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-10.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-11.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-12.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-13.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-14.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-15.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-16.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-17.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-18.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-19.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-20.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-21.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-22.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-23.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-24.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-25.ts +6 -5
- package/src/schematron/cen/co/cen-en16931-br-co-26.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-01.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-02.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-05.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-06.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-09.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-10.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-11.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-12.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-13.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-14.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-15.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-16.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-17.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-18.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-19.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-20.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-23.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-24.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-25.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-27.ts +6 -5
- package/src/schematron/cen/dec/cen-en16931-br-dec-28.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-01.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-02.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-03.ts +6 -10
- package/src/schematron/cen/e/cen-en16931-br-e-04.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-05.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-06.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-07.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-08.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-09.ts +6 -5
- package/src/schematron/cen/e/cen-en16931-br-e-10.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-01.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-02.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-03.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-04.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-05.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-06.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-07.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-08.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-09.ts +6 -5
- package/src/schematron/cen/g/cen-en16931-br-g-10.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-01.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-02.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-03.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-04.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-05.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-06.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-07.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-08.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-09.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-10.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-11.ts +6 -5
- package/src/schematron/cen/ic/cen-en16931-br-ic-12.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-01.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-02.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-03.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-04.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-05.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-06.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-07.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-08.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-09.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-10.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-11.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-12.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-13.ts +6 -5
- package/src/schematron/cen/o/cen-en16931-br-o-14.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-01.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-02.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-03.ts +6 -10
- package/src/schematron/cen/s/cen-en16931-br-s-04.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-05.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-06.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-07.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-08.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-09.ts +6 -5
- package/src/schematron/cen/s/cen-en16931-br-s-10.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-01.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-02.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-03.ts +6 -10
- package/src/schematron/cen/z/cen-en16931-br-z-04.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-05.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-06.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-07.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-08.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-09.ts +6 -5
- package/src/schematron/cen/z/cen-en16931-br-z-10.ts +6 -5
- package/src/schematron/de/de-r-001.ts +8 -7
- package/src/schematron/de/de-r-002.ts +8 -7
- package/src/schematron/de/de-r-003.ts +8 -7
- package/src/schematron/de/de-r-004.ts +8 -7
- package/src/schematron/de/de-r-005.ts +8 -7
- package/src/schematron/de/de-r-006.ts +8 -7
- package/src/schematron/de/de-r-007.ts +8 -7
- package/src/schematron/de/de-r-008.ts +8 -7
- package/src/schematron/de/de-r-009.ts +8 -7
- package/src/schematron/de/de-r-010.ts +9 -8
- package/src/schematron/de/de-r-011.ts +9 -8
- package/src/schematron/de/de-r-014.ts +8 -7
- package/src/schematron/de/de-r-015.ts +8 -7
- package/src/schematron/de/de-r-016.ts +9 -8
- package/src/schematron/de/de-r-017.ts +8 -7
- package/src/schematron/de/de-r-018.ts +10 -9
- package/src/schematron/de/de-r-019.ts +8 -7
- package/src/schematron/de/de-r-020.ts +8 -7
- package/src/schematron/de/de-r-022.ts +8 -7
- package/src/schematron/de/de-r-023-1.ts +8 -7
- package/src/schematron/de/de-r-023-2.ts +8 -7
- package/src/schematron/de/de-r-024-1.ts +8 -7
- package/src/schematron/de/de-r-024-2.ts +8 -7
- package/src/schematron/de/de-r-025-1.ts +8 -7
- package/src/schematron/de/de-r-025-2.ts +8 -7
- package/src/schematron/de/de-r-026.ts +9 -8
- package/src/schematron/de/de-r-027.ts +8 -7
- package/src/schematron/de/de-r-028.ts +8 -7
- package/src/schematron/de/de-r-030.ts +9 -8
- package/src/schematron/de/de-r-031.ts +8 -7
- package/src/schematron/dk/dk-r-002.ts +7 -6
- package/src/schematron/dk/dk-r-003.ts +8 -7
- package/src/schematron/dk/dk-r-004.ts +8 -7
- package/src/schematron/dk/dk-r-005.ts +8 -7
- package/src/schematron/dk/dk-r-006.ts +8 -7
- package/src/schematron/dk/dk-r-007.ts +8 -7
- package/src/schematron/dk/dk-r-008.ts +8 -7
- package/src/schematron/dk/dk-r-009.ts +8 -7
- package/src/schematron/dk/dk-r-010.ts +8 -7
- package/src/schematron/dk/dk-r-011.ts +8 -7
- package/src/schematron/dk/dk-r-013.ts +8 -7
- package/src/schematron/dk/dk-r-014.ts +7 -6
- package/src/schematron/dk/dk-r-016.ts +8 -7
- package/src/schematron/dk/dk-r-017.ts +8 -7
- package/src/schematron/errors.ts +17 -0
- package/src/schematron/gr/gr-r-001-1.ts +7 -6
- package/src/schematron/gr/gr-r-001-2.ts +8 -7
- package/src/schematron/gr/gr-r-001-3.ts +14 -9
- package/src/schematron/gr/gr-r-001-4.ts +8 -7
- package/src/schematron/gr/gr-r-001-5.ts +8 -7
- package/src/schematron/gr/gr-r-001-6.ts +7 -6
- package/src/schematron/gr/gr-r-001-7.ts +7 -6
- package/src/schematron/gr/gr-r-002.ts +7 -6
- package/src/schematron/gr/gr-r-003.ts +8 -7
- package/src/schematron/gr/gr-r-004-1.ts +7 -6
- package/src/schematron/gr/gr-r-004-2.ts +7 -6
- package/src/schematron/gr/gr-r-005.ts +7 -6
- package/src/schematron/gr/gr-r-006.ts +12 -11
- package/src/schematron/gr/gr-r-008-2.ts +7 -6
- package/src/schematron/gr/gr-r-008-3.ts +7 -6
- package/src/schematron/gr/gr-r-009.ts +7 -6
- package/src/schematron/gr/gr-r-010.ts +7 -6
- package/src/schematron/gr/gr-s-008-1.ts +7 -6
- package/src/schematron/gr/gr-s-011.ts +8 -7
- package/src/schematron/helpers.ts +46 -23
- package/src/schematron/index.ts +6 -1
- package/src/schematron/is/is-r-001.ts +7 -6
- package/src/schematron/is/is-r-002.ts +7 -6
- package/src/schematron/is/is-r-003.ts +7 -6
- package/src/schematron/is/is-r-004.ts +7 -6
- package/src/schematron/is/is-r-005.ts +7 -6
- package/src/schematron/is/is-r-006.ts +8 -7
- package/src/schematron/is/is-r-007.ts +8 -7
- package/src/schematron/is/is-r-008.ts +8 -7
- package/src/schematron/is/is-r-009.ts +8 -7
- package/src/schematron/is/is-r-010.ts +9 -8
- package/src/schematron/it/it-r-001.ts +7 -6
- package/src/schematron/it/it-r-002.ts +7 -6
- package/src/schematron/it/it-r-003.ts +7 -6
- package/src/schematron/it/it-r-004.ts +7 -6
- package/src/schematron/nl/nl-r-001.ts +7 -6
- package/src/schematron/nl/nl-r-002.ts +7 -6
- package/src/schematron/nl/nl-r-003.ts +8 -7
- package/src/schematron/nl/nl-r-004.ts +7 -6
- package/src/schematron/nl/nl-r-005.ts +8 -7
- package/src/schematron/nl/nl-r-006.ts +8 -7
- package/src/schematron/nl/nl-r-007.ts +8 -7
- package/src/schematron/nl/nl-r-008.ts +7 -6
- package/src/schematron/nl/nl-r-009.ts +8 -7
- package/src/schematron/no/no-r-001.ts +8 -7
- package/src/schematron/no/no-r-002.ts +7 -6
- package/src/schematron/peppol/cl/peppol-en16931-cl001.ts +6 -5
- package/src/schematron/peppol/cl/peppol-en16931-cl002.ts +6 -5
- package/src/schematron/peppol/cl/peppol-en16931-cl003.ts +6 -5
- package/src/schematron/peppol/cl/peppol-en16931-cl006.ts +7 -6
- package/src/schematron/peppol/cl/peppol-en16931-cl007.ts +27 -26
- package/src/schematron/peppol/cl/peppol-en16931-cl008.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r040.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r041.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r042.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r043.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r044.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r045.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r046.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r047.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r049.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r050.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r052.ts +6 -5
- package/src/schematron/peppol/common/peppol-common-r053.ts +6 -5
- package/src/schematron/peppol/f/peppol-en16931-f001.ts +27 -14
- package/src/schematron/peppol/p/peppol-en16931-p0100.ts +8 -7
- package/src/schematron/peppol/p/peppol-en16931-p0101.ts +8 -7
- package/src/schematron/peppol/p/peppol-en16931-p0104.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0105.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0106.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0107.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0108.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0109.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0110.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0111.ts +6 -5
- package/src/schematron/peppol/p/peppol-en16931-p0112.ts +7 -6
- package/src/schematron/peppol/r/peppol-en16931-r001.ts +11 -13
- package/src/schematron/peppol/r/peppol-en16931-r002.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r003.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r004.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r005.ts +7 -6
- package/src/schematron/peppol/r/peppol-en16931-r007.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r008.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r010.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r020.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r040.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r041.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r042.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r043.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r044.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r046.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r051.ts +48 -27
- package/src/schematron/peppol/r/peppol-en16931-r053.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r054.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r055.ts +8 -7
- package/src/schematron/peppol/r/peppol-en16931-r061.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r100.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r101.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r110.ts +7 -6
- package/src/schematron/peppol/r/peppol-en16931-r111.ts +7 -6
- package/src/schematron/peppol/r/peppol-en16931-r120.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r121.ts +6 -5
- package/src/schematron/peppol/r/peppol-en16931-r130.ts +6 -5
- package/src/schematron/run-all-rules.ts +2 -7
- package/src/schematron/schematron.ts +36 -0
- package/src/schematron/se/se-r-001.ts +7 -6
- package/src/schematron/se/se-r-002.ts +7 -6
- package/src/schematron/se/se-r-003.ts +7 -6
- package/src/schematron/se/se-r-004.ts +7 -6
- package/src/schematron/se/se-r-005.ts +8 -7
- package/src/schematron/se/se-r-006.ts +7 -6
- package/src/schematron/se/se-r-007.ts +7 -6
- package/src/schematron/se/se-r-008.ts +7 -6
- package/src/schematron/se/se-r-009.ts +7 -6
- package/src/schematron/se/se-r-010.ts +7 -6
- package/src/schematron/se/se-r-011.ts +7 -6
- package/src/schematron/se/se-r-012.ts +7 -6
- package/src/schematron/se/se-r-013.ts +7 -6
- package/src/values/additional-document-reference-codes.generated.ts +2 -3
- package/src/values/allowance-charge-reason-codes.generated.ts +1 -1
- package/src/values/application-response-type-codes.generated.ts +1 -1
- package/src/values/charge-reason-codes.generated.ts +1 -1
- package/src/values/country-code.generated.ts +1 -1
- package/src/values/credit-notes-type-codes.generated.ts +1 -1
- package/src/values/currency-code.generated.ts +1 -1
- package/src/values/document-type-codes.generated.ts +1 -1
- package/src/values/document-type.generated.ts +2 -2
- package/src/values/duty-tax-fee-categories.generated.ts +1 -1
- package/src/values/eas-codes.generated.ts +1 -1
- package/src/values/icd-codes.generated.ts +7 -7
- package/src/values/invoice-status-codes.generated.ts +1 -1
- package/src/values/invoice-type-codes.generated.ts +1 -1
- package/src/values/item-classification-code.generated.ts +1 -1
- package/src/values/mime-codes.generated.ts +1 -1
- package/src/values/op-status-action.generated.ts +1 -1
- package/src/values/op-status-reason.generated.ts +1 -1
- package/src/values/participant-identifier-schemes.generated.ts +2 -2
- package/src/values/payment-means-codes.generated.ts +1 -1
- package/src/values/processes.generated.ts +1 -1
- package/src/values/quantity-unit-codes.generated.ts +1 -1
- package/src/values/vat-dates.generated.ts +1 -1
- package/src/values/vatex-codes.generated.ts +1 -1
- package/dist/all-union-fields-CxoyKBpI.d.ts +0 -445
- package/dist/all-union-fields-CxoyKBpI.d.ts.map +0 -1
- package/dist/document-DCcObB-a.d.ts +0 -1466
- package/dist/document-DCcObB-a.d.ts.map +0 -1
- package/dist/effect.d.ts +0 -6291
- package/dist/effect.d.ts.map +0 -1
- package/dist/effect.js +0 -3240
- package/dist/effect.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/is-valid-process-CSWL-q9f.js +0 -1590
- package/dist/is-valid-process-CSWL-q9f.js.map +0 -1
- package/dist/quantity-unit-code-to-intl-unit-15EykjMe.d.ts +0 -168
- package/dist/quantity-unit-code-to-intl-unit-15EykjMe.d.ts.map +0 -1
- package/dist/vat-dates.generated-DTVWQAdn.d.ts +0 -4812
- package/dist/vat-dates.generated-DTVWQAdn.d.ts.map +0 -1
- package/dist/vatex-codes.generated-BSgP3n5t.js.map +0 -1
- package/src/decoders/errors.ts +0 -11
- package/src/document-parser.ts +0 -70
- package/src/document.ts +0 -19
- package/src/effect/fields/default-customization-id.ts +0 -1
- package/src/effect/fields/default-profile-id.ts +0 -1
- package/src/effect/fields/peppol-additional-document-reference-schema.ts +0 -114
- package/src/effect/fields/peppol-address-schema.ts +0 -105
- package/src/effect/fields/peppol-allowance-charge-schema.ts +0 -95
- package/src/effect/fields/peppol-amount-schema.ts +0 -22
- package/src/effect/fields/peppol-base-line-schema.ts +0 -138
- package/src/effect/fields/peppol-binary-object-schema.ts +0 -51
- package/src/effect/fields/peppol-contact-schema.ts +0 -18
- package/src/effect/fields/peppol-credit-note-line-schema.ts +0 -42
- package/src/effect/fields/peppol-delivery-schema.ts +0 -100
- package/src/effect/fields/peppol-identifier-schema.ts +0 -19
- package/src/effect/fields/peppol-invoice-line-period-schema.ts +0 -34
- package/src/effect/fields/peppol-invoice-period-schema.ts +0 -30
- package/src/effect/fields/peppol-item-classification-schema.ts +0 -45
- package/src/effect/fields/peppol-legal-monetary-total-schema.ts +0 -126
- package/src/effect/fields/peppol-line-allowance-charge-schema.ts +0 -64
- package/src/effect/fields/peppol-line-item-schema.ts +0 -185
- package/src/effect/fields/peppol-line-price-allowance-charge-schema.ts +0 -38
- package/src/effect/fields/peppol-line-price-schema.ts +0 -31
- package/src/effect/fields/peppol-order-reference-schema.ts +0 -36
- package/src/effect/fields/peppol-party-base-schema.ts +0 -138
- package/src/effect/fields/peppol-party-legal-entity-schema.ts +0 -29
- package/src/effect/fields/peppol-party-tax-scheme-schema.ts +0 -33
- package/src/effect/fields/peppol-payee-party-schema.ts +0 -112
- package/src/effect/fields/peppol-payment-means-schema.ts +0 -210
- package/src/effect/fields/peppol-payment-terms-schema.ts +0 -23
- package/src/effect/fields/peppol-quantity-schema.ts +0 -21
- package/src/effect/fields/peppol-reference-schema.ts +0 -5
- package/src/effect/fields/peppol-tax-category-schema.ts +0 -42
- package/src/effect/fields/peppol-tax-representative-schema.ts +0 -23
- package/src/effect/fields/peppol-tax-subtotal-schema.ts +0 -32
- package/src/effect/fields/peppol-tax-totals-base-schema.ts +0 -25
- package/src/effect/index.ts +0 -56
- package/src/effect/peppol-billing-base-schema.ts +0 -355
- package/src/effect/peppol-credit-note-schema.ts +0 -30
- package/src/effect/peppol-document-response-document-reference-schema.ts +0 -38
- package/src/effect/peppol-document-response-document-schema.ts +0 -35
- package/src/effect/peppol-document-response-line-response-content-schema.ts +0 -44
- package/src/effect/peppol-document-response-line-response-schema.ts +0 -33
- package/src/effect/peppol-document-schema.ts +0 -142
- package/src/effect/peppol-invoice-response-document-actual-response-status-schema.ts +0 -60
- package/src/effect/peppol-invoice-response-schema.ts +0 -168
- package/src/effect/peppol-invoice-response-status-reason-code-schema.ts +0 -31
- package/src/effect/peppol-invoice-schema.ts +0 -42
- package/src/effect/peppol-iso-date-string-schema.ts +0 -19
- package/src/effect/peppol-message-level-response-document-response-schema.ts +0 -33
- package/src/effect/peppol-message-level-response-party-schema.ts +0 -19
- package/src/effect/peppol-message-level-response-schema.ts +0 -97
- package/src/effect/utils/format-quantity-with-unit.ts +0 -1
- package/src/effect/utils/get-credit-note-type-code-description.ts +0 -1
- package/src/effect/utils/get-invoice-type-code-description.ts +0 -1
- package/src/effect/utils/is-valid-credit-note-type-code.ts +0 -1
- package/src/effect/utils/is-valid-invoice-type-code.ts +0 -1
- package/src/effect/utils/is-valid-process.ts +0 -1
- package/src/effect/utils/peppol-xsd-time-schema.ts +0 -13
- package/src/effect/utils/quantity-unit-code-to-intl-unit.ts +0 -2
- package/src/effect/values/credit-note-type-code-schema.ts +0 -23
- package/src/effect/values/document-type-schemes-schema.ts +0 -14
- package/src/effect/values/document-type-values-schema.ts +0 -16
- package/src/effect/values/invoice-type-code-schema.ts +0 -21
- package/src/effect/values/process-from-document-type-schema.ts +0 -26
- package/src/effect/values/quantity-unit-codes-schema.ts +0 -24
- package/src/helpers/errors.ts +0 -6
- package/src/helpers/is-defined.ts +0 -3
- package/src/schemas/billing-base.ts +0 -362
- package/src/schemas/credit-note.ts +0 -28
- package/src/schemas/document-response-document-reference-schema.ts +0 -37
- package/src/schemas/document-response-document-schema.ts +0 -34
- package/src/schemas/document-response-line-response-content.ts +0 -43
- package/src/schemas/document-response-line-response-schema.ts +0 -33
- package/src/schemas/fields/additional-document-reference-schema.ts +0 -112
- package/src/schemas/fields/address-schema.ts +0 -105
- package/src/schemas/fields/allowance-charge-schema.ts +0 -86
- package/src/schemas/fields/amount-schema.ts +0 -21
- package/src/schemas/fields/base-line-schema.ts +0 -136
- package/src/schemas/fields/billing-references-schema.ts +0 -44
- package/src/schemas/fields/binary-object-schema.ts +0 -45
- package/src/schemas/fields/contact-schema.ts +0 -18
- package/src/schemas/fields/credit-note-line-schema.ts +0 -37
- package/src/schemas/fields/date-only-fn.ts +0 -6
- package/src/schemas/fields/date-only-parser.ts +0 -20
- package/src/schemas/fields/delivery-schema.ts +0 -95
- package/src/schemas/fields/identifier-schema.ts +0 -24
- package/src/schemas/fields/invoice-line-period-schema.ts +0 -31
- package/src/schemas/fields/invoice-line-schema.ts +0 -41
- package/src/schemas/fields/invoice-period-schema.ts +0 -27
- package/src/schemas/fields/legal-monetary-total-schema.ts +0 -125
- package/src/schemas/fields/line-allowance-charge-schema.ts +0 -59
- package/src/schemas/fields/line-item-schema.ts +0 -183
- package/src/schemas/fields/line-price-allowance-charge-schema.ts +0 -33
- package/src/schemas/fields/list-identifier-schema.ts +0 -43
- package/src/schemas/fields/order-reference-schema.ts +0 -36
- package/src/schemas/fields/party-base-schema.ts +0 -131
- package/src/schemas/fields/party-legal-entity-schema.ts +0 -29
- package/src/schemas/fields/party-tax-schema.ts +0 -33
- package/src/schemas/fields/payee-party.ts +0 -107
- package/src/schemas/fields/payment-means-schema.ts +0 -209
- package/src/schemas/fields/payment-terms-schema.ts +0 -23
- package/src/schemas/fields/price-schema.ts +0 -31
- package/src/schemas/fields/quantity-schema.ts +0 -21
- package/src/schemas/fields/reference-schema.ts +0 -4
- package/src/schemas/fields/tax-category-schema.ts +0 -41
- package/src/schemas/fields/tax-representative-party-schema.ts +0 -23
- package/src/schemas/fields/tax-subtotal-category-schema.ts +0 -26
- package/src/schemas/fields/tax-subtotal-schema.ts +0 -32
- package/src/schemas/fields/tax-totals.ts +0 -25
- package/src/schemas/fields/time-only.ts +0 -23
- package/src/schemas/invoice-response-document-actual-response-status.ts +0 -58
- package/src/schemas/invoice-response-document-actual-response.ts +0 -73
- package/src/schemas/invoice-response-schema.ts +0 -155
- package/src/schemas/invoice-response-status-reason-code.ts +0 -30
- package/src/schemas/invoice.ts +0 -43
- package/src/schemas/message-level-response-document-response-schema.ts +0 -33
- package/src/schemas/message-level-response-party-schema.ts +0 -18
- package/src/schemas/message-level-response-schema.ts +0 -96
- package/src/schemas/utils/base-64.ts +0 -34
- package/src/schemas/utils/vat-regex.ts +0 -51
- package/src/schemas/utils/xsd-time.ts +0 -9
- package/src/schemas/values/additional-document-reference-code.ts +0 -27
- package/src/schemas/values/allowance-charge-reason-code.ts +0 -29
- package/src/schemas/values/application-response-type-codes.ts +0 -25
- package/src/schemas/values/charge-reason-code.ts +0 -29
- package/src/schemas/values/country-code.ts +0 -36
- package/src/schemas/values/currency-codes.ts +0 -35
- package/src/schemas/values/document-type-codes.ts +0 -25
- package/src/schemas/values/document-type-schema.ts +0 -49
- package/src/schemas/values/duty-tax-fee-cateogries.ts +0 -28
- package/src/schemas/values/eas-codes.ts +0 -35
- package/src/schemas/values/icd-codes.ts +0 -28
- package/src/schemas/values/invoice-status-codes.ts +0 -25
- package/src/schemas/values/item-classification-code-schema.ts +0 -28
- package/src/schemas/values/mime-code.ts +0 -28
- package/src/schemas/values/op-status-action.ts +0 -25
- package/src/schemas/values/op-status-reason.ts +0 -25
- package/src/schemas/values/participant-identifier-code.ts +0 -25
- package/src/schemas/values/payment-means-codes-schema.ts +0 -36
- package/src/schemas/values/process-schema.ts +0 -41
- package/src/schemas/values/process-xml-identifier-schema.ts +0 -27
- package/src/schemas/values/vat-date-code.ts +0 -15
- package/src/schemas/values/vatex-code.ts +0 -28
- package/src/schemas.ts +0 -97
- /package/src/{effect → schemas}/utils/peppol-base-64-schema.ts +0 -0
- /package/src/{effect → schemas}/values/additional-document-reference-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/allowance-charge-reason-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/application-response-type-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/charge-reason-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/currency-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/electronic-codes-schema.ts +0 -0
- /package/src/{effect → schemas}/values/icd-codes-schema.ts +0 -0
- /package/src/{effect → schemas}/values/index.ts +0 -0
- /package/src/{effect → schemas}/values/invoice-status-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/item-classification-codes-schema.ts +0 -0
- /package/src/{effect → schemas}/values/mime-codes-schema.ts +0 -0
- /package/src/{effect → schemas}/values/op-status-action-schema.ts +0 -0
- /package/src/{effect → schemas}/values/op-status-reason-schema.ts +0 -0
- /package/src/{effect → schemas}/values/participant-identifier-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/payment-means-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/peppol-country-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/peppol-document-type-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/peppol-document-type-schema.ts +0 -0
- /package/src/{effect → schemas}/values/peppol-process-schema.ts +0 -0
- /package/src/{effect → schemas}/values/vat-date-code-schema.ts +0 -0
- /package/src/{effect → schemas}/values/vatex-code-schema.ts +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Schema } from 'effect';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @description Nominal type produced by {@link opaque}. Equivalent to the type returned by `Schema.Opaque<Self>()(schema)`. Declaring the intersection once behind
|
|
5
|
+
* a named type keeps declaration emit compact: the wrapped struct is referenced a single time instead of being expanded in both `Schema.Opaque` and
|
|
6
|
+
* `Omit`.
|
|
7
|
+
*/
|
|
8
|
+
export type OpaqueSchema<Self, S extends Schema.Top> = Schema.Opaque<Self, S, {}> & Omit<S, keyof Schema.Top>;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @description Lightweight replacement for `Schema.Opaque<Self>()` that produces the same runtime value and type with a smaller declaration footprint.
|
|
12
|
+
*
|
|
13
|
+
* @param Self - The nominal type the decoded value should be branded as.
|
|
14
|
+
*
|
|
15
|
+
* @returns A function that wraps a struct schema into an opaque schema typed as {@link OpaqueSchema}.
|
|
16
|
+
*/
|
|
17
|
+
export function opaque<Self>() {
|
|
18
|
+
return <S extends Schema.Top>(schema: S): OpaqueSchema<Self, S> => schema as unknown as OpaqueSchema<Self, S>;
|
|
19
|
+
}
|
|
@@ -47,5 +47,3 @@ export const peppolVatRegexSchema = Schema.Union([
|
|
|
47
47
|
Schema.String.check(Schema.isStartsWith('SI'), Schema.isPattern(/^SI\d{8}$/)),
|
|
48
48
|
Schema.String.check(Schema.isStartsWith('SK'), Schema.isPattern(/^SK\d{10}$/)),
|
|
49
49
|
]);
|
|
50
|
-
|
|
51
|
-
export type VatRegex = typeof peppolVatRegexSchema.Type;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Clock, Option, DateTime, Effect, Predicate, Schema, SchemaGetter, SchemaIssue, SchemaParser } from 'effect';
|
|
2
|
+
|
|
3
|
+
import { formatXsdTime } from '#/schemas/utils/format-xsd-time';
|
|
4
|
+
import { opaque } from '#/schemas/utils/opaque';
|
|
5
|
+
|
|
6
|
+
const timeRegex =
|
|
7
|
+
/^(?<hours>[01]\d|2[0-3]):(?<minutes>[0-5]\d):(?<seconds>[0-5]\d)(?<nanoseconds>\.\d{1,9})?(?<tz>(?:Z|-0[1-9]|-1\d|-2[0-3]|-00:?(?:0[1-9]|[1-5]\d)|\+[01]\d|\+2[0-3])?(?:|:?[0-5]\d))$/;
|
|
8
|
+
const timeZoneRegex = /^(?:(?<utc>Z)|[-+](?<hours>0[1-9]|1\d|2[0-3]|00):?(?<minutes>[0-5]\d))$/;
|
|
9
|
+
const numberFromString = SchemaParser.decodeSync(
|
|
10
|
+
Schema.UndefinedOr(Schema.String.pipe(Schema.withDecodingDefault(Effect.succeed('0')))).pipe(
|
|
11
|
+
Schema.decodeTo(Schema.Number, { encode: SchemaGetter.String(), decode: SchemaGetter.Number() }),
|
|
12
|
+
Schema.catchDecoding(() => Effect.succeedSome(0))
|
|
13
|
+
)
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @description Parse a timezone offset from a string. The string must be in the format `(+|-)HH:MM` where `HH` and `MM` are two digits.
|
|
18
|
+
*
|
|
19
|
+
* @param tz - The timzeone offset string.
|
|
20
|
+
*
|
|
21
|
+
* @returns
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const parseZoneOffsetFromString = (tz: `+${number}:${number}` | `-${number}:${number}` | (string & {})) => {
|
|
26
|
+
const tzRegexResult = timeZoneRegex.exec(tz);
|
|
27
|
+
if (Predicate.isNullish(tzRegexResult)) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const [_tzParsed, _isUtc, tzHours, tzMinutes] = tzRegexResult;
|
|
31
|
+
const offset = DateTime.zoneMakeOffset((numberFromString(tzHours) * 60 + numberFromString(tzMinutes)) * 60 * 1000);
|
|
32
|
+
return offset;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @description XSD `time` lexical value (`HH:MM:SS` with optional fractional seconds and timezone). Effect port of `xsdTime` (`z.string().check(z.regex(...))`):
|
|
37
|
+
* keeps the value as a plain string and only validates the shape.
|
|
38
|
+
*/
|
|
39
|
+
export class PeppolXsdTime extends opaque<PeppolXsdTime>()(
|
|
40
|
+
Schema.String.check(
|
|
41
|
+
Schema.isPattern(
|
|
42
|
+
/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d{1,9})?(?:Z|-0[1-9]|-1\d|-2[0-3]|-00:?(?:0[1-9]|[1-5]\d)|\+[01]\d|\+2[0-3])?(?:|:?[0-5]\d)$/
|
|
43
|
+
).annotate({ message: 'Invalid ISO time' })
|
|
44
|
+
)
|
|
45
|
+
.pipe(
|
|
46
|
+
Schema.decodeTo(Schema.DateTimeUtc, {
|
|
47
|
+
decode: SchemaGetter.transformEffect((input, options) =>
|
|
48
|
+
Clock.currentTimeMillis.pipe(
|
|
49
|
+
Effect.map(millis => DateTime.make(millis)),
|
|
50
|
+
Effect.flatMap(option => Effect.fromOption(option)),
|
|
51
|
+
Effect.map(date =>
|
|
52
|
+
DateTime.withDate(date, date => {
|
|
53
|
+
const regexResult = timeRegex.exec(input);
|
|
54
|
+
if (Predicate.isNullish(regexResult)) return Option.none();
|
|
55
|
+
const [_time, hours, minutes, seconds, nanoseconds, tz] = regexResult;
|
|
56
|
+
|
|
57
|
+
date.setUTCHours(numberFromString(hours), numberFromString(minutes), numberFromString(seconds), numberFromString(nanoseconds));
|
|
58
|
+
if (Predicate.isUndefined(tz) || tz === 'Z') {
|
|
59
|
+
return DateTime.make(date.getTime());
|
|
60
|
+
}
|
|
61
|
+
const offset = parseZoneOffsetFromString(tz);
|
|
62
|
+
if (Predicate.isNullish(offset)) {
|
|
63
|
+
return DateTime.make(date.getTime());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return DateTime.makeZoned(date.getTime(), { adjustForTimeZone: false, timeZone: offset }).pipe(
|
|
67
|
+
Option.map(date => DateTime.toUtc(date))
|
|
68
|
+
);
|
|
69
|
+
})
|
|
70
|
+
),
|
|
71
|
+
Effect.flatMap(option => Effect.fromOption(option)),
|
|
72
|
+
Effect.catchTag('NoSuchElementError', () => Effect.fail(new SchemaIssue.InvalidValue({ message: 'Invalid date input' }, input, options)))
|
|
73
|
+
)
|
|
74
|
+
),
|
|
75
|
+
encode: SchemaGetter.transform(self => formatXsdTime(self)),
|
|
76
|
+
})
|
|
77
|
+
)
|
|
78
|
+
.annotate({ message: 'Invalid ISO time' })
|
|
79
|
+
) {}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PeppolQuantityUnitCode } from '#/schemas/values/quantity-unit-codes-schema';
|
|
2
2
|
|
|
3
|
-
type BaseIntlUnit =
|
|
3
|
+
export type BaseIntlUnit =
|
|
4
4
|
| 'acre'
|
|
5
5
|
| 'bit'
|
|
6
6
|
| 'byte'
|
|
@@ -36,7 +36,7 @@ type BaseIntlUnit =
|
|
|
36
36
|
| 'terabit'
|
|
37
37
|
| 'terabyte'
|
|
38
38
|
| 'yard';
|
|
39
|
-
type TimeIntlUnit = 'nanosecond' | 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
|
|
39
|
+
export type TimeIntlUnit = 'nanosecond' | 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
|
|
40
40
|
|
|
41
41
|
export type IntlUnit = BaseIntlUnit | TimeIntlUnit | `${BaseIntlUnit}-per-${TimeIntlUnit}`;
|
|
42
42
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import type { CreditNoteTypeCodesKeys } from '#/values/credit-notes-type-codes.generated';
|
|
4
4
|
|
|
@@ -16,10 +16,8 @@ export type PeppolCreditNoteTypeCode = CreditNoteTypeCodesKeys;
|
|
|
16
16
|
*
|
|
17
17
|
* @param error - The custom error message to use when validation fails.
|
|
18
18
|
*
|
|
19
|
-
* @returns
|
|
19
|
+
* @returns An Effect schema that accepts only valid credit note type codes.
|
|
20
20
|
*
|
|
21
21
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-cn/
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
24
|
-
return z.string().check(z.refine(val => creditNoteTypeCodesKeys.includes(val as never), error));
|
|
25
|
-
}
|
|
23
|
+
export const creditNoteTypeCodeSchema = Schema.Literals(creditNoteTypeCodesKeys);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
3
|
import { documentTypesScheme } from '#/values/document-type.generated';
|
|
4
4
|
|
|
@@ -7,10 +7,8 @@ import { documentTypesScheme } from '#/values/document-type.generated';
|
|
|
7
7
|
*
|
|
8
8
|
* @param error - The error message to use when validation fails. Defaults to `'invalid Peppol document type scheme'`.
|
|
9
9
|
*
|
|
10
|
-
* @returns
|
|
10
|
+
* @returns An Effect schema that accepts only valid document type schemes.
|
|
11
11
|
*
|
|
12
12
|
* @see {@link documentTypesScheme}
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
15
|
-
return z.string(error).check(z.refine(val => documentTypesScheme.includes(val as never), error));
|
|
16
|
-
}
|
|
14
|
+
export const documentTypeSchemesSchema = Schema.Literals(documentTypesScheme as [string, ...Array<string>]);
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { Record } from 'effect';
|
|
2
|
-
import * as z from 'zod/mini';
|
|
1
|
+
import { Record, Schema } from 'effect';
|
|
3
2
|
|
|
4
3
|
import { documentTypesTable } from '#/values/document-type.generated';
|
|
5
4
|
|
|
6
|
-
const
|
|
5
|
+
const values = Record.values(documentTypesTable).flat();
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* @description Validates the value part of a PEPPOL document type identifier (the portion after the scheme prefix) against the known document type table.
|
|
10
9
|
*
|
|
11
10
|
* @param error - The error message to use when validation fails. Defaults to `'invalid Peppol document type value'`.
|
|
12
11
|
*
|
|
13
|
-
* @returns
|
|
12
|
+
* @returns An Effect schema that accepts only valid document type values.
|
|
14
13
|
*
|
|
15
14
|
* @see {@link documentTypesTable}
|
|
16
15
|
*/
|
|
17
|
-
export
|
|
18
|
-
return z.string(error).check(z.refine(val => entries.flatMap(([, value]) => value).includes(val as never)));
|
|
19
|
-
}
|
|
16
|
+
export const documentTypeValuesSchema = Schema.String.check(Schema.makeFilter((val: string) => values.includes(val as never)));
|
|
@@ -7,8 +7,8 @@ import { dutyTaxFeeCategoriesKeys } from '#/values/duty-tax-fee-categories.gener
|
|
|
7
7
|
*
|
|
8
8
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/
|
|
9
9
|
*/
|
|
10
|
-
export type PeppolDutyTaxFeeCategoryCode = typeof
|
|
11
|
-
export type PeppolDutyTaxFeeCategoryCodeEncoded = typeof
|
|
10
|
+
export type PeppolDutyTaxFeeCategoryCode = typeof peppolDutyTaxFeeCategorySchema.Type;
|
|
11
|
+
export type PeppolDutyTaxFeeCategoryCodeEncoded = typeof peppolDutyTaxFeeCategorySchema.Encoded;
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @description Validates a duty, tax or fee category code against the PEPPOL subset of UNCL 5305 (VAT category code).
|
|
@@ -22,4 +22,4 @@ export type PeppolDutyTaxFeeCategoryCodeEncoded = typeof dutyTaxFeeCategorySchem
|
|
|
22
22
|
*
|
|
23
23
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/
|
|
24
24
|
*/
|
|
25
|
-
export const
|
|
25
|
+
export const peppolDutyTaxFeeCategorySchema = Schema.Literals(dutyTaxFeeCategoriesKeys).pipe(Schema.brand('PeppolDutyTaxFeeCategoryCode'));
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import type { InvoiceTypeCodesKeys } from '#/values/invoice-type-codes.generated';
|
|
1
|
+
import { Schema } from 'effect';
|
|
4
2
|
|
|
5
3
|
import { invoiceTypeCodesKeys } from '#/values/invoice-type-codes.generated';
|
|
6
4
|
|
|
@@ -9,17 +7,15 @@ import { invoiceTypeCodesKeys } from '#/values/invoice-type-codes.generated';
|
|
|
9
7
|
*
|
|
10
8
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/
|
|
11
9
|
*/
|
|
12
|
-
export type PeppolInvoiceTypeCode =
|
|
10
|
+
export type PeppolInvoiceTypeCode = typeof invoiceTypeCodeSchema.Type;
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* @description Validates an invoice type code against the PEPPOL subset of UNCL 1001 (invoice).
|
|
16
14
|
*
|
|
17
15
|
* @param error - The custom error message to use when validation fails.
|
|
18
16
|
*
|
|
19
|
-
* @returns
|
|
17
|
+
* @returns An Effect schema that accepts only valid invoice type codes.
|
|
20
18
|
*
|
|
21
19
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/
|
|
22
20
|
*/
|
|
23
|
-
export
|
|
24
|
-
return z.string(error).check(z.refine(val => invoiceTypeCodesKeys.includes(val as never), error));
|
|
25
|
-
}
|
|
21
|
+
export const invoiceTypeCodeSchema = Schema.Literals(invoiceTypeCodesKeys).pipe(Schema.brand('PeppolInvoiceTypeCode'));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
2
|
|
|
3
|
-
import type { PeppolDocumentType } from '#/schemas/values/document-type-schema';
|
|
3
|
+
import type { PeppolDocumentType } from '#/schemas/values/peppol-document-type-schema';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { peppolProcessSchema } from '#/schemas/values/peppol-process-schema';
|
|
6
6
|
import { documentTypesProcessIds } from '#/values/document-type.generated';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -11,18 +11,16 @@ import { documentTypesProcessIds } from '#/values/document-type.generated';
|
|
|
11
11
|
* @param documentType - The PEPPOL document type scheme whose allowed processes should be used.
|
|
12
12
|
* @param error - The custom error message to use when validation fails. Defaults to `'invalid process type for document type'`.
|
|
13
13
|
*
|
|
14
|
-
* @returns
|
|
14
|
+
* @returns An Effect schema that matches only processes allowed for the given document type.
|
|
15
15
|
*
|
|
16
|
-
* @see {@link
|
|
16
|
+
* @see {@link peppolProcessSchema}
|
|
17
17
|
* @see {@link documentTypesProcessIds}
|
|
18
18
|
*/
|
|
19
19
|
export function processFromDocumentTypeSchema(documentType: PeppolDocumentType, error = 'invalid process type for document type') {
|
|
20
|
-
const
|
|
21
|
-
if (
|
|
22
|
-
return
|
|
20
|
+
const allowed = documentTypesProcessIds[documentType as keyof typeof documentTypesProcessIds];
|
|
21
|
+
if (allowed === undefined) {
|
|
22
|
+
return peppolProcessSchema;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
return
|
|
26
|
-
.templateLiteral([z.string(), z.literal('::'), z.string()], error)
|
|
27
|
-
.check(z.refine(val => processes.map(p => `${p.scheme}::${p.value}`).includes(val)));
|
|
24
|
+
const values = allowed.map(p => `${p.scheme}::${p.value}`);
|
|
25
|
+
return Schema.String.check(Schema.makeFilter((val: string) => values.includes(val as never))).annotate({ message: error });
|
|
28
26
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import type { QuantityUnitCodesKeys } from '#/values/quantity-unit-codes.generated';
|
|
1
|
+
import { Schema } from 'effect';
|
|
4
2
|
|
|
5
3
|
import { quantityUnitCodesKeys } from '#/values/quantity-unit-codes.generated';
|
|
6
4
|
|
|
@@ -9,20 +7,18 @@ import { quantityUnitCodesKeys } from '#/values/quantity-unit-codes.generated';
|
|
|
9
7
|
*
|
|
10
8
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNECERec20/
|
|
11
9
|
*/
|
|
12
|
-
export type PeppolQuantityUnitCode =
|
|
10
|
+
export type PeppolQuantityUnitCode = typeof quantityUnitCodesSchema.Type;
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* @description Validates a unit of measure code against the PEPPOL subset of UN/ECE Recommendation 20.
|
|
16
14
|
*
|
|
17
15
|
* @param error - The custom error message to use when validation fails.
|
|
18
16
|
*
|
|
19
|
-
* @returns
|
|
17
|
+
* @returns An Effect schema that accepts only valid quantity unit codes.
|
|
20
18
|
*
|
|
21
19
|
* @validations
|
|
22
20
|
* - BR-CL-23: Unit of measure code MUST be a valid UN/ECE Rec 20 code.
|
|
23
21
|
*
|
|
24
22
|
* @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNECERec20/
|
|
25
23
|
*/
|
|
26
|
-
export
|
|
27
|
-
return z.string(error).check(z.refine(val => quantityUnitCodesKeys.includes(val as never)));
|
|
28
|
-
}
|
|
24
|
+
export const quantityUnitCodesSchema = Schema.Literals(quantityUnitCodesKeys).pipe(Schema.brand('PeppolQuantityUnitCode'));
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { countVatBreakdownCode, hasAnyVatCategoryCode,
|
|
4
|
+
import { countVatBreakdownCode, hasAnyVatCategoryCode, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-01',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Reverse charge" shall contain in the VAT Breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe01(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = !hasAnyVatCategoryCode(document, 'AE') || countVatBreakdownCode(document, 'AE') === 1;
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAe01 = schematronRule(rule, evaluateCenEn16931BrAe01);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
4
|
import {
|
|
6
5
|
hasBuyerLegalCompanyId,
|
|
@@ -8,7 +7,7 @@ import {
|
|
|
8
7
|
hasLineVatCategoryCode,
|
|
9
8
|
hasSellerTaxIdentifier,
|
|
10
9
|
hasTaxRepresentativeVatCompanyId,
|
|
11
|
-
|
|
10
|
+
schematronRule,
|
|
12
11
|
} from '#/schematron/helpers';
|
|
13
12
|
|
|
14
13
|
const rule = {
|
|
@@ -18,10 +17,12 @@ const rule = {
|
|
|
18
17
|
'An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).',
|
|
19
18
|
} as const satisfies SchematronRule;
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
function evaluateCenEn16931BrAe02(document: PeppolDocument): boolean {
|
|
22
21
|
const passed =
|
|
23
22
|
!hasLineVatCategoryCode(document, 'AE') ||
|
|
24
23
|
((hasSellerTaxIdentifier(document) || hasTaxRepresentativeVatCompanyId(document)) &&
|
|
25
24
|
(hasBuyerVatCompanyId(document) || hasBuyerLegalCompanyId(document)));
|
|
26
|
-
return
|
|
25
|
+
return passed;
|
|
27
26
|
}
|
|
27
|
+
|
|
28
|
+
export const validateCenEn16931BrAe02 = schematronRule(rule, evaluateCenEn16931BrAe02);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
4
|
import {
|
|
6
5
|
hasBuyerLegalCompanyId,
|
|
@@ -8,7 +7,7 @@ import {
|
|
|
8
7
|
hasDocumentAllowanceVatCategoryCode,
|
|
9
8
|
hasSellerTaxIdentifier,
|
|
10
9
|
hasTaxRepresentativeVatCompanyId,
|
|
11
|
-
|
|
10
|
+
schematronRule,
|
|
12
11
|
} from '#/schematron/helpers';
|
|
13
12
|
|
|
14
13
|
const rule = {
|
|
@@ -18,10 +17,12 @@ const rule = {
|
|
|
18
17
|
'An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).',
|
|
19
18
|
} as const satisfies SchematronRule;
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
function evaluateCenEn16931BrAe03(document: PeppolDocument): boolean {
|
|
22
21
|
const passed =
|
|
23
22
|
!hasDocumentAllowanceVatCategoryCode(document, 'AE') ||
|
|
24
23
|
((hasSellerTaxIdentifier(document) || hasTaxRepresentativeVatCompanyId(document)) &&
|
|
25
24
|
(hasBuyerVatCompanyId(document) || hasBuyerLegalCompanyId(document)));
|
|
26
|
-
return
|
|
25
|
+
return passed;
|
|
27
26
|
}
|
|
27
|
+
|
|
28
|
+
export const validateCenEn16931BrAe03 = schematronRule(rule, evaluateCenEn16931BrAe03);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
4
|
import {
|
|
6
5
|
hasBuyerLegalCompanyId,
|
|
@@ -8,7 +7,7 @@ import {
|
|
|
8
7
|
hasDocumentChargeVatCategoryCode,
|
|
9
8
|
hasSellerTaxIdentifier,
|
|
10
9
|
hasTaxRepresentativeVatCompanyId,
|
|
11
|
-
|
|
10
|
+
schematronRule,
|
|
12
11
|
} from '#/schematron/helpers';
|
|
13
12
|
|
|
14
13
|
const rule = {
|
|
@@ -18,10 +17,12 @@ const rule = {
|
|
|
18
17
|
'An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).',
|
|
19
18
|
} as const satisfies SchematronRule;
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
function evaluateCenEn16931BrAe04(document: PeppolDocument): boolean {
|
|
22
21
|
const passed =
|
|
23
22
|
!hasDocumentChargeVatCategoryCode(document, 'AE') ||
|
|
24
23
|
((hasSellerTaxIdentifier(document) || hasTaxRepresentativeVatCompanyId(document)) &&
|
|
25
24
|
(hasBuyerVatCompanyId(document) || hasBuyerLegalCompanyId(document)));
|
|
26
|
-
return
|
|
25
|
+
return passed;
|
|
27
26
|
}
|
|
27
|
+
|
|
28
|
+
export const validateCenEn16931BrAe04 = schematronRule(rule, evaluateCenEn16931BrAe04);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { everyLineCategoryPercent,
|
|
4
|
+
import { everyLineCategoryPercent, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-05',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe05(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = everyLineCategoryPercent(document, 'AE', percent => percent === 0);
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAe05 = schematronRule(rule, evaluateCenEn16931BrAe05);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { everyDocumentAllowanceCategoryPercent,
|
|
4
|
+
import { everyDocumentAllowanceCategoryPercent, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-06',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe06(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = everyDocumentAllowanceCategoryPercent(document, 'AE', percent => percent === 0);
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAe06 = schematronRule(rule, evaluateCenEn16931BrAe06);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { everyDocumentChargeCategoryPercent,
|
|
4
|
+
import { everyDocumentChargeCategoryPercent, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-07',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe07(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = everyDocumentChargeCategoryPercent(document, 'AE', percent => percent === 0);
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAe07 = schematronRule(rule, evaluateCenEn16931BrAe07);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { amountsEqual, categoryTaxableSum, getTaxSubtotalsWithCode,
|
|
4
|
+
import { amountsEqual, categoryTaxableSum, getTaxSubtotalsWithCode, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-08',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Reverse charge".',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe08(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = getTaxSubtotalsWithCode(document, 'AE').every(st => amountsEqual(st.taxableAmount, categoryTaxableSum(document, 'AE')));
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAe08 = schematronRule(rule, evaluateCenEn16931BrAe08);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { getTaxSubtotalsWithCode,
|
|
4
|
+
import { getTaxSubtotalsWithCode, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-09',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" shall be 0 (zero).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe09(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = getTaxSubtotalsWithCode(document, 'AE').every(st => st.taxAmount === 0);
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAe09 = schematronRule(rule, evaluateCenEn16931BrAe09);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { getTaxSubtotalsWithCode,
|
|
4
|
+
import { getTaxSubtotalsWithCode, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AE-10',
|
|
@@ -11,9 +10,11 @@ const rule = {
|
|
|
11
10
|
'A VAT breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAe10(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = getTaxSubtotalsWithCode(document, 'AE').every(
|
|
16
15
|
st => typeof st.taxCategory.taxExemptionReason === 'string' || typeof st.taxCategory.taxExemptionReasonCode === 'string'
|
|
17
16
|
);
|
|
18
|
-
return
|
|
17
|
+
return passed;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateCenEn16931BrAe10 = schematronRule(rule, evaluateCenEn16931BrAe10);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { countVatBreakdownCode, hasAnyVatCategoryCode,
|
|
4
|
+
import { countVatBreakdownCode, hasAnyVatCategoryCode, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AF-01',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IGIC" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAf01(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = !hasAnyVatCategoryCode(document, 'L') || countVatBreakdownCode(document, 'L') > 0;
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAf01 = schematronRule(rule, evaluateCenEn16931BrAf01);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { PeppolDocument } from '#/document';
|
|
1
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
2
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
3
|
|
|
5
|
-
import { hasLineVatCategoryCode, hasSellerTaxIdentifier, hasTaxRepresentativeVatCompanyId,
|
|
4
|
+
import { hasLineVatCategoryCode, hasSellerTaxIdentifier, hasTaxRepresentativeVatCompanyId, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'CEN-EN16931-BR-AF-02',
|
|
@@ -11,7 +10,9 @@ const rule = {
|
|
|
11
10
|
'An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateCenEn16931BrAf02(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = !hasLineVatCategoryCode(document, 'L') || hasSellerTaxIdentifier(document) || hasTaxRepresentativeVatCompanyId(document);
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validateCenEn16931BrAf02 = schematronRule(rule, evaluateCenEn16931BrAf02);
|