@endevops/peppol-schema 0.1.0-beta.4 → 0.1.0-beta.5
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-CfjMSrpQ.d.ts +3508 -0
- package/dist/index-CfjMSrpQ.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2613
- package/dist/index.js +3121 -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 +1975 -1501
- 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 +3 -3
- 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/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 +8 -7
- 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 +36 -11
- 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 +6 -5
- 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 +20 -13
- 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 +6 -5
- 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}/utils/peppol-vat-regex-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
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
|
|
3
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
2
4
|
import type { SchematronRule } from '#/schematron/helpers';
|
|
3
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
4
5
|
|
|
5
|
-
import {
|
|
6
|
+
import { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string';
|
|
7
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
8
|
|
|
7
9
|
const rule = {
|
|
8
10
|
id: 'GR-R-001-3',
|
|
@@ -11,22 +13,25 @@ const rule = {
|
|
|
11
13
|
} as const satisfies SchematronRule;
|
|
12
14
|
|
|
13
15
|
const DATE_REGEX = /^(0?[1-9]|[12][0-9]|3[01])[-/]?(0?[1-9]|1[0-2])[-/]?((?:19|20)[0-9]{2})$/;
|
|
16
|
+
const encodeDateSync = Schema.encodeSync(PeppolIsoDateString);
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
function evaluateGrR001_3(document: PeppolDocument): boolean {
|
|
16
19
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
17
|
-
return
|
|
20
|
+
return true;
|
|
18
21
|
}
|
|
19
22
|
const segments = document.id.split('|');
|
|
20
23
|
const secondSegment = segments[1];
|
|
21
24
|
if (!secondSegment || secondSegment.trim().length === 0) {
|
|
22
|
-
return
|
|
25
|
+
return false;
|
|
23
26
|
}
|
|
24
27
|
const dateMatch = secondSegment.match(DATE_REGEX);
|
|
25
28
|
if (!dateMatch) {
|
|
26
|
-
return
|
|
29
|
+
return false;
|
|
27
30
|
}
|
|
28
31
|
const [, day, month, year] = dateMatch;
|
|
29
|
-
const issueDate = document.issueDate;
|
|
32
|
+
const issueDate = encodeDateSync(document.issueDate);
|
|
30
33
|
const issueDateSegments = issueDate.split('-');
|
|
31
|
-
return
|
|
34
|
+
return day === issueDateSegments[2] && month === issueDateSegments[1] && year === issueDateSegments[0];
|
|
32
35
|
}
|
|
36
|
+
|
|
37
|
+
export const validateGrR001_3 = schematronRule(rule, evaluateGrR001_3);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-001-4',
|
|
@@ -10,14 +9,16 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek, the Invoice Id third segment must be a positive integer',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR001_4(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const segments = document.id.split('|');
|
|
18
17
|
const thirdSegment = segments[2];
|
|
19
18
|
if (!thirdSegment || thirdSegment.trim().length === 0) {
|
|
20
|
-
return
|
|
19
|
+
return false;
|
|
21
20
|
}
|
|
22
|
-
return
|
|
21
|
+
return /^\d+$/.test(thirdSegment) && Number(thirdSegment) >= 0;
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validateGrR001_4 = schematronRule(rule, evaluateGrR001_4);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-001-5',
|
|
@@ -12,14 +11,16 @@ const rule = {
|
|
|
12
11
|
|
|
13
12
|
const GREEK_DOCUMENT_TYPES = new Set(['1.1', '1.6', '2.1', '2.4', '5.1', '5.2']);
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function evaluateGrR001_5(document: PeppolDocument): boolean {
|
|
16
15
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
17
|
-
return
|
|
16
|
+
return true;
|
|
18
17
|
}
|
|
19
18
|
const segments = document.id.split('|');
|
|
20
19
|
const fourthSegment = segments[3];
|
|
21
20
|
if (!fourthSegment || fourthSegment.trim().length === 0) {
|
|
22
|
-
return
|
|
21
|
+
return false;
|
|
23
22
|
}
|
|
24
|
-
return
|
|
23
|
+
return GREEK_DOCUMENT_TYPES.has(fourthSegment);
|
|
25
24
|
}
|
|
25
|
+
|
|
26
|
+
export const validateGrR001_5 = schematronRule(rule, evaluateGrR001_5);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-001-6',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek, the Invoice Id fifth segment must not be empty',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR001_6(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const segments = document.id.split('|');
|
|
18
|
-
return
|
|
17
|
+
return (segments[4]?.length ?? 0) > 0;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateGrR001_6 = schematronRule(rule, evaluateGrR001_6);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-001-7',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek, the Invoice Id sixth segment must not be empty',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR001_7(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const segments = document.id.split('|');
|
|
18
|
-
return
|
|
17
|
+
return (segments[5]?.length ?? 0) > 0;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateGrR001_7 = schematronRule(rule, evaluateGrR001_7);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-002',
|
|
@@ -11,10 +10,12 @@ const rule = {
|
|
|
11
10
|
'Greek Suppliers must provide their full name as they are registered in the Greek Business Registry (G.E.MH.) as a legal entity or in the Tax Registry as a natural person ',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateGrR002(document: PeppolDocument): boolean {
|
|
15
14
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
16
|
-
return
|
|
15
|
+
return true;
|
|
17
16
|
}
|
|
18
17
|
const partyName = document.accountingSupplierParty.partyName?.name;
|
|
19
|
-
return
|
|
18
|
+
return typeof partyName === 'string' && partyName.length > 0;
|
|
20
19
|
}
|
|
20
|
+
|
|
21
|
+
export const validateGrR002 = schematronRule(rule, evaluateGrR002);
|
|
@@ -1,9 +1,8 @@
|
|
|
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 { greekTinVerification } from '#/peppol-validations/greek-tin-verification';
|
|
6
|
-
import { getSupplierCountry,
|
|
5
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
7
6
|
|
|
8
7
|
const rule = {
|
|
9
8
|
id: 'GR-R-003',
|
|
@@ -11,15 +10,17 @@ const rule = {
|
|
|
11
10
|
message: "For the Greek Suppliers, the VAT must start with 'EL' and must be a valid TIN number",
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateGrR003(document: PeppolDocument): boolean {
|
|
15
14
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
16
|
-
return
|
|
15
|
+
return true;
|
|
17
16
|
}
|
|
18
17
|
const vatCompanyId = document.accountingSupplierParty.partyTaxSchemes?.find(
|
|
19
18
|
scheme => scheme.taxSchemeId.id.trim().toUpperCase() === 'VAT'
|
|
20
19
|
)?.companyId;
|
|
21
20
|
if (!vatCompanyId) {
|
|
22
|
-
return
|
|
21
|
+
return false;
|
|
23
22
|
}
|
|
24
|
-
return
|
|
23
|
+
return vatCompanyId.startsWith('EL') && greekTinVerification(vatCompanyId.slice(2));
|
|
25
24
|
}
|
|
25
|
+
|
|
26
|
+
export const validateGrR003 = schematronRule(rule, evaluateGrR003);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-004-1',
|
|
@@ -10,11 +9,13 @@ const rule = {
|
|
|
10
9
|
message: ' When Supplier is Greek, there must be one MARK Number',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR004_1(document: PeppolDocument): boolean {
|
|
14
13
|
const isGreek = getSupplierCountry(document) === 'GR' || getSupplierCountry(document) === 'EL';
|
|
15
14
|
if (!isGreek) {
|
|
16
|
-
return
|
|
15
|
+
return true;
|
|
17
16
|
}
|
|
18
17
|
const markCount = (document.additionalDocumentReferences ?? []).filter(ref => ref.documentDescription === '##M.AR.K##').length;
|
|
19
|
-
return
|
|
18
|
+
return markCount === 1;
|
|
20
19
|
}
|
|
20
|
+
|
|
21
|
+
export const validateGrR004_1 = schematronRule(rule, evaluateGrR004_1);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-004-2',
|
|
@@ -10,11 +9,13 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek, the MARK Number must be a positive integer',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR004_2(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const markReferences = (document.additionalDocumentReferences ?? []).filter(ref => ref.documentDescription === '##M.AR.K##');
|
|
18
17
|
const passed = markReferences.every(ref => /^[1-9][0-9]*$/.test(ref.id.id));
|
|
19
|
-
return
|
|
18
|
+
return passed;
|
|
20
19
|
}
|
|
20
|
+
|
|
21
|
+
export const validateGrR004_2 = schematronRule(rule, evaluateGrR004_2);
|
|
@@ -1,15 +1,16 @@
|
|
|
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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = { id: 'GR-R-005', level: 'fatal', message: 'Greek Suppliers must provide the full name of the buyer' } as const satisfies SchematronRule;
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
function evaluateGrR005(document: PeppolDocument): boolean {
|
|
10
9
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
11
|
-
return
|
|
10
|
+
return true;
|
|
12
11
|
}
|
|
13
12
|
const partyName = document.accountingCustomerParty.partyName?.name;
|
|
14
|
-
return
|
|
13
|
+
return typeof partyName === 'string' && partyName.length > 0;
|
|
15
14
|
}
|
|
15
|
+
|
|
16
|
+
export const validateGrR005 = schematronRule(rule, evaluateGrR005);
|
|
@@ -1,9 +1,8 @@
|
|
|
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 { greekTinVerification } from '#/peppol-validations/greek-tin-verification';
|
|
6
|
-
import { getCustomerCountry, getSupplierCountry,
|
|
5
|
+
import { getCustomerCountry, getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
7
6
|
|
|
8
7
|
const rule = {
|
|
9
8
|
id: 'GR-R-006',
|
|
@@ -11,16 +10,18 @@ const rule = {
|
|
|
11
10
|
message: 'Greek Suppliers must provide the VAT number of the buyer, if the buyer is Greek ',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluateGrR006(document: PeppolDocument): boolean {
|
|
15
14
|
const isGreekSupplier = getSupplierCountry(document) === 'GR' || getSupplierCountry(document) === 'EL';
|
|
16
15
|
const isGreekCustomer = getCustomerCountry(document) === 'GR' || getCustomerCountry(document) === 'EL';
|
|
17
16
|
if (!isGreekSupplier || !isGreekCustomer) {
|
|
18
|
-
return
|
|
17
|
+
return true;
|
|
19
18
|
}
|
|
20
19
|
const vatSchemes = document.accountingCustomerParty.partyTaxSchemes?.filter(scheme => scheme.taxSchemeId.id.trim().toUpperCase() === 'VAT') ?? [];
|
|
21
20
|
if (vatSchemes.length !== 1) {
|
|
22
|
-
return
|
|
21
|
+
return false;
|
|
23
22
|
}
|
|
24
23
|
const companyId = vatSchemes[0]?.companyId ?? '';
|
|
25
|
-
return
|
|
24
|
+
return companyId.startsWith('EL') && greekTinVerification(companyId.slice(2));
|
|
26
25
|
}
|
|
26
|
+
|
|
27
|
+
export const validateGrR006 = schematronRule(rule, evaluateGrR006);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-008-2',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek, there should be no more than one invoice url',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR008_2(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const urlCount = (document.additionalDocumentReferences ?? []).filter(ref => ref.documentDescription === '##INVOICE|URL##').length;
|
|
18
|
-
return
|
|
17
|
+
return urlCount <= 1;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateGrR008_2 = schematronRule(rule, evaluateGrR008_2);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-R-008-3',
|
|
@@ -10,14 +9,16 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek and the INVOICE URL Document reference exists, the External Reference URI should be present',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrR008_3(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const urlReferences = (document.additionalDocumentReferences ?? []).filter(ref => ref.documentDescription === '##INVOICE|URL##');
|
|
18
17
|
const passed = urlReferences.every(ref => {
|
|
19
18
|
const uri = ref.attachment?.externalReference?.uri;
|
|
20
19
|
return typeof uri === 'string' && uri.trim() !== '';
|
|
21
20
|
});
|
|
22
|
-
return
|
|
21
|
+
return passed;
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validateGrR008_3 = schematronRule(rule, evaluateGrR008_3);
|
|
@@ -1,9 +1,8 @@
|
|
|
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 { greekTinVerification } from '#/peppol-validations/greek-tin-verification';
|
|
6
|
-
import { getSupplierCountry,
|
|
5
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
7
6
|
|
|
8
7
|
const rule = {
|
|
9
8
|
id: 'GR-R-009',
|
|
@@ -12,11 +11,13 @@ const rule = {
|
|
|
12
11
|
'Greek suppliers that send an invoice through the PEPPOL network must use a correct TIN number as an electronic address according to PEPPOL Electronic Address Identifier scheme (schemeID 9933).',
|
|
13
12
|
} as const satisfies SchematronRule;
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function evaluateGrR009(document: PeppolDocument): boolean {
|
|
16
15
|
const supplierCountry = getSupplierCountry(document);
|
|
17
16
|
if (supplierCountry !== 'GR' && supplierCountry !== 'EL') {
|
|
18
|
-
return
|
|
17
|
+
return true;
|
|
19
18
|
}
|
|
20
19
|
const endpointId = document.accountingSupplierParty.endpointId;
|
|
21
|
-
return
|
|
20
|
+
return endpointId?.schemeId === '9933' && greekTinVerification(endpointId.id);
|
|
22
21
|
}
|
|
22
|
+
|
|
23
|
+
export const validateGrR009 = schematronRule(rule, evaluateGrR009);
|
|
@@ -1,9 +1,8 @@
|
|
|
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 { greekTinVerification } from '#/peppol-validations/greek-tin-verification';
|
|
6
|
-
import { getCustomerCountry, getSupplierCountry,
|
|
5
|
+
import { getCustomerCountry, getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
7
6
|
|
|
8
7
|
const rule = {
|
|
9
8
|
id: 'GR-R-010',
|
|
@@ -12,12 +11,14 @@ const rule = {
|
|
|
12
11
|
'Greek Suppliers that send an invoice through the PEPPOL network to a greek buyer must use a correct TIN number as an electronic address according to PEPPOL Electronic Address Identifier scheme (SchemeID 9933)',
|
|
13
12
|
} as const satisfies SchematronRule;
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function evaluateGrR010(document: PeppolDocument): boolean {
|
|
16
15
|
const isGreekSupplier = getSupplierCountry(document) === 'GR' || getSupplierCountry(document) === 'EL';
|
|
17
16
|
const isGreekCustomer = getCustomerCountry(document) === 'GR' || getCustomerCountry(document) === 'EL';
|
|
18
17
|
if (!isGreekSupplier || !isGreekCustomer) {
|
|
19
|
-
return
|
|
18
|
+
return true;
|
|
20
19
|
}
|
|
21
20
|
const endpointId = document.accountingCustomerParty.endpointId;
|
|
22
|
-
return
|
|
21
|
+
return endpointId?.schemeId === '9933' && greekTinVerification(endpointId.id);
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validateGrR010 = schematronRule(rule, evaluateGrR010);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-S-008-1',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'When Supplier is Greek, there should be one invoice url',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrS008_1(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const urlCount = (document.additionalDocumentReferences ?? []).filter(ref => ref.documentDescription === '##INVOICE|URL##').length;
|
|
18
|
-
return
|
|
17
|
+
return urlCount === 1;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateGrS008_1 = schematronRule(rule, evaluateGrS008_1);
|
|
@@ -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 { getSupplierCountry,
|
|
4
|
+
import { getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'GR-S-011',
|
|
@@ -10,14 +9,16 @@ const rule = {
|
|
|
10
9
|
message: 'Greek suppliers must provide their Seller Tax Registration Number, prefixed by the country code',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateGrS011(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'GR' && getSupplierCountry(document) !== 'EL') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const vatSchemes = document.accountingSupplierParty.partyTaxSchemes?.filter(scheme => scheme.taxSchemeId.id.trim().toUpperCase() === 'VAT') ?? [];
|
|
18
17
|
if (vatSchemes.length !== 1) {
|
|
19
|
-
return
|
|
18
|
+
return false;
|
|
20
19
|
}
|
|
21
20
|
const companyId = vatSchemes[0]?.companyId ?? '';
|
|
22
|
-
return
|
|
21
|
+
return companyId.startsWith('EL');
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validateGrS011 = schematronRule(rule, evaluateGrS011);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
import type { SchematronRuleLevel
|
|
3
|
+
import type { PeppolInvoicePeriod } from '#/schemas/fields/peppol-invoice-period-schema';
|
|
4
|
+
import type { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema';
|
|
5
|
+
import type { PeppolDocument, PeppolDocumentLine } from '#/schemas/peppol-document-schema';
|
|
6
|
+
import type { SchematronRuleLevel } from '#/schematron/types';
|
|
7
7
|
|
|
8
|
+
import { SchematronRuleError } from '#/schematron/errors';
|
|
8
9
|
import { chargeReasonCodesKeys } from '#/values/charge-reason-codes.generated';
|
|
9
10
|
import { countryCodesKeys } from '#/values/country-code.generated';
|
|
10
11
|
|
|
@@ -20,10 +21,19 @@ export interface SchematronRule {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
|
-
* @description
|
|
24
|
+
* @description An effectful schematron rule validator. Fails with a `SchematronRuleError` when the document does not satisfy the rule.
|
|
24
25
|
*/
|
|
25
|
-
export
|
|
26
|
-
|
|
26
|
+
export type SchematronDocumentValidator = (document: PeppolDocument) => Effect.Effect<void, SchematronRuleError>;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @description Builds an effectful validator from rule metadata and a pure predicate.
|
|
30
|
+
*/
|
|
31
|
+
export function schematronRule(rule: SchematronRule, predicate: (document: PeppolDocument) => boolean): SchematronDocumentValidator {
|
|
32
|
+
return Effect.fn(`schematron.${rule.id}`)(function* (document: PeppolDocument) {
|
|
33
|
+
if (!predicate(document)) {
|
|
34
|
+
return yield* new SchematronRuleError({ id: rule.id, level: rule.level, message: rule.message });
|
|
35
|
+
}
|
|
36
|
+
});
|
|
27
37
|
}
|
|
28
38
|
|
|
29
39
|
/**
|
|
@@ -99,6 +109,21 @@ export function isCustomerGermany(document: PeppolDocument): boolean {
|
|
|
99
109
|
return document.accountingCustomerParty.postalAddress.countryCode.identificationCode.toUpperCase() === 'DE';
|
|
100
110
|
}
|
|
101
111
|
|
|
112
|
+
/**
|
|
113
|
+
* @description Whether both the supplier and customer countries are Denmark, mirroring the schematron `$supplierCountryIsDK` and `$customerCountryIsDK` variables.
|
|
114
|
+
*/
|
|
115
|
+
export function isDanishSupplierAndCustomer(document: PeppolDocument): boolean {
|
|
116
|
+
return getSupplierCountry(document) === 'DK' && getCustomerCountry(document) === 'DK';
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @description Whether both the supplier and customer postal address countries are Germany, mirroring the schematron `$supplierCountryIsDE` and
|
|
121
|
+
* `$customerCountryIsDE` variables.
|
|
122
|
+
*/
|
|
123
|
+
export function isGermanSupplierAndCustomer(document: PeppolDocument): boolean {
|
|
124
|
+
return isSupplierGermany(document) && isCustomerGermany(document);
|
|
125
|
+
}
|
|
126
|
+
|
|
102
127
|
/**
|
|
103
128
|
* @description Returns the invoice lines or credit note lines of a document.
|
|
104
129
|
*/
|
|
@@ -436,7 +461,7 @@ export function allVatCompanyIdsHaveValidPrefix(document: PeppolDocument): boole
|
|
|
436
461
|
* @description Whether every invoice period / line period has an end date after or equal to its start date, used by BR-29 and BR-30.
|
|
437
462
|
*/
|
|
438
463
|
export function everyPeriodEndAfterStart(document: PeppolDocument): boolean {
|
|
439
|
-
const ok = (period:
|
|
464
|
+
const ok = (period: PeppolInvoicePeriod | undefined): boolean => {
|
|
440
465
|
if (!period?.startDate || !period.endDate) {
|
|
441
466
|
return true;
|
|
442
467
|
}
|
|
@@ -450,7 +475,7 @@ export function everyPeriodEndAfterStart(document: PeppolDocument): boolean {
|
|
|
450
475
|
* @description Whether every invoice period has a start/end date or a description code, used by BR-CO-19 and BR-CO-20.
|
|
451
476
|
*/
|
|
452
477
|
export function everyPeriodHasDateOrDescriptionCode(document: PeppolDocument): boolean {
|
|
453
|
-
const ok = (period:
|
|
478
|
+
const ok = (period: PeppolInvoicePeriod | undefined): boolean => {
|
|
454
479
|
if (!period) {
|
|
455
480
|
return true;
|
|
456
481
|
}
|
|
@@ -500,7 +525,7 @@ export function withinSlackOne(a: number, b: number): boolean {
|
|
|
500
525
|
* @description Whether the VAT category tax amount (BT-117) equals the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119), allowing
|
|
501
526
|
* for a slack of 1, mirroring BR-CO-17.
|
|
502
527
|
*/
|
|
503
|
-
export function vatCategoryTaxAmountMatchesRate(subtotal:
|
|
528
|
+
export function vatCategoryTaxAmountMatchesRate(subtotal: PeppolTaxSubTotal): boolean {
|
|
504
529
|
const percent = subtotal.taxCategory.percent;
|
|
505
530
|
if (percent === undefined) {
|
|
506
531
|
return Math.round(subtotal.taxAmount.value) === 0;
|
package/src/schematron/index.ts
CHANGED
|
@@ -263,7 +263,6 @@ export { validateGrR009 } from './gr/gr-r-009';
|
|
|
263
263
|
export { validateGrR010 } from './gr/gr-r-010';
|
|
264
264
|
export { validateGrS008_1 } from './gr/gr-s-008-1';
|
|
265
265
|
export { validateGrS011 } from './gr/gr-s-011';
|
|
266
|
-
export {} from './index';
|
|
267
266
|
export { validateIsR001 } from './is/is-r-001';
|
|
268
267
|
export { validateIsR002 } from './is/is-r-002';
|
|
269
268
|
export { validateIsR003 } from './is/is-r-003';
|
|
@@ -360,4 +359,10 @@ export { validateSeR011 } from './se/se-r-011';
|
|
|
360
359
|
export { validateSeR012 } from './se/se-r-012';
|
|
361
360
|
export { validateSeR013 } from './se/se-r-013';
|
|
362
361
|
|
|
362
|
+
export { SchematronRuleError, SchematronValidationError } from './errors';
|
|
363
|
+
export type { SchematronDocumentValidator } from './helpers';
|
|
364
|
+
export { ruleValidators } from './run-all-rules';
|
|
365
|
+
export { Schematron } from './schematron';
|
|
366
|
+
export type { SchematronShape } from './schematron';
|
|
367
|
+
|
|
363
368
|
export type * from './types';
|