@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,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 { getAllAllowanceCharges,
|
|
4
|
+
import { getAllAllowanceCharges, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R043',
|
|
@@ -10,8 +9,10 @@ const rule = {
|
|
|
10
9
|
message: "Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'",
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R043(document: PeppolDocument): boolean {
|
|
14
13
|
const allowanceCharges = getAllAllowanceCharges(document);
|
|
15
14
|
const passed = allowanceCharges.every(ac => typeof ac.chargeIndicator === 'boolean');
|
|
16
|
-
return
|
|
15
|
+
return passed;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validatePeppolEn16931R043 = schematronRule(rule, evaluatePeppolEn16931R043);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R044',
|
|
@@ -10,7 +9,9 @@ const rule = {
|
|
|
10
9
|
message: "Charge on price level is NOT allowed. Only value 'false' allowed.",
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R044(document: PeppolDocument): boolean {
|
|
14
13
|
const passed = getLines(document).every(line => !line.price.allowanceCharge || !line.price.allowanceCharge.chargeIndicator);
|
|
15
|
-
return
|
|
14
|
+
return passed;
|
|
16
15
|
}
|
|
16
|
+
|
|
17
|
+
export const validatePeppolEn16931R044 = schematronRule(rule, evaluatePeppolEn16931R044);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule, slack } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R046',
|
|
@@ -10,7 +9,7 @@ const rule = {
|
|
|
10
9
|
message: 'Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R046(document: PeppolDocument): boolean {
|
|
14
13
|
const passed = getLines(document).every(line => {
|
|
15
14
|
const price = line.price;
|
|
16
15
|
const allowance = price.allowanceCharge;
|
|
@@ -19,5 +18,7 @@ export function validatePeppolEn16931R046(document: PeppolDocument): SchematronR
|
|
|
19
18
|
}
|
|
20
19
|
return slack(allowance.baseAmount.value - (allowance.amount?.value ?? 0), price.priceAmount.value, 0.02);
|
|
21
20
|
});
|
|
22
|
-
return
|
|
21
|
+
return passed;
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validatePeppolEn16931R046 = schematronRule(rule, evaluatePeppolEn16931R046);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R051',
|
|
@@ -11,7 +10,7 @@ const rule = {
|
|
|
11
10
|
'All currencyID attributes must have the same value as the invoice currency code (BT-5), except for the invoice total VAT amount in accounting currency (BT-111).',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluatePeppolEn16931R051(document: PeppolDocument): boolean {
|
|
15
14
|
const documentCurrency = document.documentCurrencyCode;
|
|
16
15
|
const checkCurrency = (currencyId: string | undefined): boolean => currencyId === documentCurrency;
|
|
17
16
|
|
|
@@ -48,5 +47,7 @@ export function validatePeppolEn16931R051(document: PeppolDocument): SchematronR
|
|
|
48
47
|
(!totals.payableRoundingAmount || checkCurrency(totals.payableRoundingAmount.currencyId)) &&
|
|
49
48
|
checkCurrency(totals.payableAmount.currencyId);
|
|
50
49
|
|
|
51
|
-
return
|
|
50
|
+
return documentAllowancesOk && linesOk && taxTotalsOk && totalsOk;
|
|
52
51
|
}
|
|
52
|
+
|
|
53
|
+
export const validatePeppolEn16931R051 = schematronRule(rule, evaluatePeppolEn16931R051);
|
|
@@ -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 {
|
|
4
|
+
import { schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R053',
|
|
@@ -10,7 +9,9 @@ const rule = {
|
|
|
10
9
|
message: 'Only one tax total with tax subtotals MUST be provided.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R053(document: PeppolDocument): boolean {
|
|
14
13
|
const withSubtotals = document.taxTotals.filter(total => (total.taxSubtotals?.length ?? 0) > 0);
|
|
15
|
-
return
|
|
14
|
+
return withSubtotals.length === 1;
|
|
16
15
|
}
|
|
16
|
+
|
|
17
|
+
export const validatePeppolEn16931R053 = schematronRule(rule, evaluatePeppolEn16931R053);
|
|
@@ -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 {
|
|
4
|
+
import { schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R054',
|
|
@@ -10,8 +9,10 @@ const rule = {
|
|
|
10
9
|
message: 'Only one tax total without tax subtotals MUST be provided when tax currency code is provided.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R054(document: PeppolDocument): boolean {
|
|
14
13
|
const withoutSubtotals = document.taxTotals.filter(total => (total.taxSubtotals?.length ?? 0) === 0);
|
|
15
14
|
const expected = document.taxCurrencyCode ? 1 : 0;
|
|
16
|
-
return
|
|
15
|
+
return withoutSubtotals.length === expected;
|
|
17
16
|
}
|
|
17
|
+
|
|
18
|
+
export const validatePeppolEn16931R054 = schematronRule(rule, evaluatePeppolEn16931R054);
|
|
@@ -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 {
|
|
4
|
+
import { schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R055',
|
|
@@ -10,17 +9,19 @@ const rule = {
|
|
|
10
9
|
message: 'Invoice total VAT amount and Invoice total VAT amount in accounting currency MUST have the same operational sign',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R055(document: PeppolDocument): boolean {
|
|
14
13
|
const taxCurrency = document.taxCurrencyCode;
|
|
15
14
|
if (!taxCurrency) {
|
|
16
|
-
return
|
|
15
|
+
return true;
|
|
17
16
|
}
|
|
18
17
|
const documentCurrencyAmount = document.taxTotals.find(total => total.taxAmount.currencyId === document.documentCurrencyCode)?.taxAmount.value;
|
|
19
18
|
const taxCurrencyAmount = document.taxTotals.find(total => total.taxAmount.currencyId === taxCurrency)?.taxAmount.value;
|
|
20
19
|
if (typeof documentCurrencyAmount !== 'number' || typeof taxCurrencyAmount !== 'number') {
|
|
21
|
-
return
|
|
20
|
+
return false;
|
|
22
21
|
}
|
|
23
22
|
const bothNonPositive = documentCurrencyAmount <= 0 && taxCurrencyAmount <= 0;
|
|
24
23
|
const bothNonNegative = documentCurrencyAmount >= 0 && taxCurrencyAmount >= 0;
|
|
25
|
-
return
|
|
24
|
+
return bothNonPositive || bothNonNegative;
|
|
26
25
|
}
|
|
26
|
+
|
|
27
|
+
export const validatePeppolEn16931R055 = schematronRule(rule, evaluatePeppolEn16931R055);
|
|
@@ -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 {
|
|
4
|
+
import { schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R061',
|
|
@@ -12,7 +11,7 @@ const rule = {
|
|
|
12
11
|
|
|
13
12
|
const DIRECT_DEBIT_CODES = new Set(['49', '59']);
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function evaluatePeppolEn16931R061(document: PeppolDocument): boolean {
|
|
16
15
|
const passed = (document.paymentMeans ?? []).every(payment => {
|
|
17
16
|
if (!DIRECT_DEBIT_CODES.has(payment.paymentMeansCode.code)) {
|
|
18
17
|
return true;
|
|
@@ -20,5 +19,7 @@ export function validatePeppolEn16931R061(document: PeppolDocument): SchematronR
|
|
|
20
19
|
const mandateId = payment.paymentMandate?.id;
|
|
21
20
|
return typeof mandateId === 'string' && mandateId.trim() !== '';
|
|
22
21
|
});
|
|
23
|
-
return
|
|
22
|
+
return passed;
|
|
24
23
|
}
|
|
24
|
+
|
|
25
|
+
export const validatePeppolEn16931R061 = schematronRule(rule, evaluatePeppolEn16931R061);
|
|
@@ -1,12 +1,13 @@
|
|
|
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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = { id: 'PEPPOL-EN16931-R100', level: 'fatal', message: 'Only one invoiced object is allowed pr line' } as const satisfies SchematronRule;
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
function evaluatePeppolEn16931R100(document: PeppolDocument): boolean {
|
|
10
9
|
const passed = getLines(document).every(line => (line.documentReference?.length ?? 0) <= 1);
|
|
11
|
-
return
|
|
10
|
+
return passed;
|
|
12
11
|
}
|
|
12
|
+
|
|
13
|
+
export const validatePeppolEn16931R100 = schematronRule(rule, evaluatePeppolEn16931R100);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R101',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'Element Document reference can only be used for Invoice line object',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R101(document: PeppolDocument): boolean {
|
|
14
13
|
const passed = getLines(document).every(line => {
|
|
15
14
|
const references = line.documentReference ?? [];
|
|
16
15
|
return references.every(ref => ref.documentTypeCode === '130');
|
|
17
16
|
});
|
|
18
|
-
return
|
|
17
|
+
return passed;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validatePeppolEn16931R101 = schematronRule(rule, evaluatePeppolEn16931R101);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R110',
|
|
@@ -10,14 +9,16 @@ const rule = {
|
|
|
10
9
|
message: 'Start date of line period MUST be within invoice period.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R110(document: PeppolDocument): boolean {
|
|
14
13
|
const invoicePeriodStart = document.invoicePeriod?.startDate;
|
|
15
14
|
if (!invoicePeriodStart) {
|
|
16
|
-
return
|
|
15
|
+
return true;
|
|
17
16
|
}
|
|
18
17
|
const passed = getLines(document).every(line => {
|
|
19
18
|
const lineStart = line.invoicePeriod?.startDate;
|
|
20
19
|
return !lineStart || lineStart >= invoicePeriodStart;
|
|
21
20
|
});
|
|
22
|
-
return
|
|
21
|
+
return passed;
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validatePeppolEn16931R110 = schematronRule(rule, evaluatePeppolEn16931R110);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R111',
|
|
@@ -10,14 +9,16 @@ const rule = {
|
|
|
10
9
|
message: 'End date of line period MUST be within invoice period.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R111(document: PeppolDocument): boolean {
|
|
14
13
|
const invoicePeriodEnd = document.invoicePeriod?.endDate;
|
|
15
14
|
if (!invoicePeriodEnd) {
|
|
16
|
-
return
|
|
15
|
+
return true;
|
|
17
16
|
}
|
|
18
17
|
const passed = getLines(document).every(line => {
|
|
19
18
|
const lineEnd = line.invoicePeriod?.endDate;
|
|
20
19
|
return !lineEnd || lineEnd <= invoicePeriodEnd;
|
|
21
20
|
});
|
|
22
|
-
return
|
|
21
|
+
return passed;
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
export const validatePeppolEn16931R111 = schematronRule(rule, evaluatePeppolEn16931R111);
|
|
@@ -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 { getLineQuantity, getLines,
|
|
4
|
+
import { getLineQuantity, getLines, schematronRule, slack } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R120',
|
|
@@ -11,7 +10,7 @@ const rule = {
|
|
|
11
10
|
'Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount',
|
|
12
11
|
} as const satisfies SchematronRule;
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
function evaluatePeppolEn16931R120(document: PeppolDocument): boolean {
|
|
15
14
|
const passed = getLines(document).every(line => {
|
|
16
15
|
const lineExtensionAmount = line.lineExtensionAmount.value;
|
|
17
16
|
const quantity = getLineQuantity(line);
|
|
@@ -22,5 +21,7 @@ export function validatePeppolEn16931R120(document: PeppolDocument): SchematronR
|
|
|
22
21
|
const expected = quantity * (priceAmount / baseQuantity) + chargesTotal - allowancesTotal;
|
|
23
22
|
return slack(expected, lineExtensionAmount, 0.02);
|
|
24
23
|
});
|
|
25
|
-
return
|
|
24
|
+
return passed;
|
|
26
25
|
}
|
|
26
|
+
|
|
27
|
+
export const validatePeppolEn16931R120 = schematronRule(rule, evaluatePeppolEn16931R120);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R121',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'Base quantity MUST be a positive number above zero.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R121(document: PeppolDocument): boolean {
|
|
14
13
|
const passed = getLines(document).every(line => {
|
|
15
14
|
const baseQuantity = line.price.baseQuantity?.value;
|
|
16
15
|
return baseQuantity === undefined || baseQuantity > 0;
|
|
17
16
|
});
|
|
18
|
-
return
|
|
17
|
+
return passed;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validatePeppolEn16931R121 = schematronRule(rule, evaluatePeppolEn16931R121);
|
|
@@ -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 { getLines,
|
|
4
|
+
import { getLines, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'PEPPOL-EN16931-R130',
|
|
@@ -10,7 +9,7 @@ const rule = {
|
|
|
10
9
|
message: 'Unit code of price base quantity MUST be same as invoiced quantity.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluatePeppolEn16931R130(document: PeppolDocument): boolean {
|
|
14
13
|
const passed = getLines(document).every(line => {
|
|
15
14
|
const baseQuantity = line.price.baseQuantity;
|
|
16
15
|
if (!baseQuantity?.unitCode) {
|
|
@@ -22,5 +21,7 @@ export function validatePeppolEn16931R130(document: PeppolDocument): SchematronR
|
|
|
22
21
|
}
|
|
23
22
|
return baseQuantity.unitCode === quantity.unitCode;
|
|
24
23
|
});
|
|
25
|
-
return
|
|
24
|
+
return passed;
|
|
26
25
|
}
|
|
26
|
+
|
|
27
|
+
export const validatePeppolEn16931R130 = schematronRule(rule, evaluatePeppolEn16931R130);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { SchematronRuleResult } from '#/schematron/types';
|
|
1
|
+
import type { SchematronDocumentValidator } from '#/schematron/helpers';
|
|
3
2
|
|
|
4
3
|
import { validateCenEn16931BrAe01 } from '#/schematron/cen/ae/cen-en16931-br-ae-01';
|
|
5
4
|
import { validateCenEn16931BrAe02 } from '#/schematron/cen/ae/cen-en16931-br-ae-02';
|
|
@@ -362,7 +361,7 @@ import { validateSeR011 } from '#/schematron/se/se-r-011';
|
|
|
362
361
|
import { validateSeR012 } from '#/schematron/se/se-r-012';
|
|
363
362
|
import { validateSeR013 } from '#/schematron/se/se-r-013';
|
|
364
363
|
|
|
365
|
-
const ruleValidators:
|
|
364
|
+
export const ruleValidators: ReadonlyArray<SchematronDocumentValidator> = [
|
|
366
365
|
validateCenEn16931BrAe01,
|
|
367
366
|
validateCenEn16931BrAe02,
|
|
368
367
|
validateCenEn16931BrAe03,
|
|
@@ -724,7 +723,3 @@ const ruleValidators: Array<(document: PeppolDocument) => SchematronRuleResult>
|
|
|
724
723
|
validateSeR012,
|
|
725
724
|
validateSeR013,
|
|
726
725
|
];
|
|
727
|
-
|
|
728
|
-
export function runAllRules(document: PeppolDocument): Array<SchematronRuleResult> {
|
|
729
|
-
return ruleValidators.map(validate => validate(document));
|
|
730
|
-
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Result } from 'effect';
|
|
2
|
+
|
|
3
|
+
import { Context, Effect, Layer } from 'effect';
|
|
4
|
+
|
|
5
|
+
import type { PeppolDocument } from '#/schemas/peppol-document-schema';
|
|
6
|
+
|
|
7
|
+
import { SchematronValidationError } from '#/schematron/errors';
|
|
8
|
+
import { ruleValidators } from '#/schematron/run-all-rules';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @description The `Schematron` service validates a document against every schematron rule.
|
|
12
|
+
*/
|
|
13
|
+
export interface SchematronShape {
|
|
14
|
+
/**
|
|
15
|
+
* @description Runs every schematron rule against the document, failing with a single `SchematronValidationError` that wraps each failed rule.
|
|
16
|
+
*/
|
|
17
|
+
readonly run: (document: PeppolDocument) => Effect.Effect<Result.Result<void, SchematronValidationError>>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @description Runs the schematron rules of this library against a PEPPOL document.
|
|
22
|
+
*/
|
|
23
|
+
export class Schematron extends Context.Service<Schematron, SchematronShape>()('@endevops/peppol-schema/schematron/Schematron') {
|
|
24
|
+
static readonly layer = Layer.effect(
|
|
25
|
+
Schematron,
|
|
26
|
+
Effect.gen(function* () {
|
|
27
|
+
const run = Effect.fn('Schematron.run')(function* (document: PeppolDocument) {
|
|
28
|
+
const [errors] = yield* Effect.partition(ruleValidators, validator => validator(document));
|
|
29
|
+
if (errors.length > 0) {
|
|
30
|
+
return yield* new SchematronValidationError({ errors });
|
|
31
|
+
}
|
|
32
|
+
}, Effect.result);
|
|
33
|
+
return Schematron.of({ run });
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -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: 'SE-R-001',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'For Swedish suppliers, Swedish VAT-numbers must consist of 14 characters.',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateSeR001(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'SE') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const vatCompanyId = document.accountingSupplierParty.partyTaxSchemes?.find(scheme => scheme.taxSchemeId.id === 'VAT')?.companyId;
|
|
18
|
-
return
|
|
17
|
+
return vatCompanyId?.trim().length === 14;
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateSeR001 = schematronRule(rule, evaluateSeR001);
|
|
@@ -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: 'SE-R-002',
|
|
@@ -10,10 +9,12 @@ const rule = {
|
|
|
10
9
|
message: 'For Swedish suppliers, the Swedish VAT-numbers must have the trailing 12 characters in numeric form',
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateSeR002(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'SE') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const vatCompanyId = document.accountingSupplierParty.partyTaxSchemes?.find(scheme => scheme.taxSchemeId.id === 'VAT')?.companyId;
|
|
18
|
-
return
|
|
17
|
+
return vatCompanyId !== undefined && /^\d{12}$/.test(vatCompanyId.slice(2));
|
|
19
18
|
}
|
|
19
|
+
|
|
20
|
+
export const validateSeR002 = schematronRule(rule, evaluateSeR002);
|
|
@@ -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: 'SE-R-003', level: 'fatal', message: 'Swedish organisation numbers should be numeric.' } as const satisfies SchematronRule;
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
function evaluateSeR003(document: PeppolDocument): boolean {
|
|
10
9
|
if (getSupplierCountry(document) !== 'SE') {
|
|
11
|
-
return
|
|
10
|
+
return true;
|
|
12
11
|
}
|
|
13
12
|
const companyId = document.accountingSupplierParty.partyLegalEntity.companyId;
|
|
14
|
-
return
|
|
13
|
+
return companyId === undefined || /^\d+$/.test(companyId.id);
|
|
15
14
|
}
|
|
15
|
+
|
|
16
|
+
export const validateSeR003 = schematronRule(rule, evaluateSeR003);
|
|
@@ -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: 'SE-R-004', level: 'fatal', message: 'Swedish organisation numbers consist of 10 characters.' } as const satisfies SchematronRule;
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
function evaluateSeR004(document: PeppolDocument): boolean {
|
|
10
9
|
if (getSupplierCountry(document) !== 'SE') {
|
|
11
|
-
return
|
|
10
|
+
return true;
|
|
12
11
|
}
|
|
13
12
|
const companyId = document.accountingSupplierParty.partyLegalEntity.companyId;
|
|
14
|
-
return
|
|
13
|
+
return companyId === undefined || companyId.id.trim().length === 10;
|
|
15
14
|
}
|
|
15
|
+
|
|
16
|
+
export const validateSeR004 = schematronRule(rule, evaluateSeR004);
|
|
@@ -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: 'SE-R-005',
|
|
@@ -10,13 +9,15 @@ const rule = {
|
|
|
10
9
|
message: "For Swedish suppliers, when using Seller tax registration identifier, 'Godkänd för F-skatt' must be stated",
|
|
11
10
|
} as const satisfies SchematronRule;
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function evaluateSeR005(document: PeppolDocument): boolean {
|
|
14
13
|
if (getSupplierCountry(document) !== 'SE') {
|
|
15
|
-
return
|
|
14
|
+
return true;
|
|
16
15
|
}
|
|
17
16
|
const nonVatScheme = document.accountingSupplierParty.partyTaxSchemes?.find(scheme => scheme.taxSchemeId.id.toUpperCase() !== 'VAT');
|
|
18
17
|
if (!nonVatScheme) {
|
|
19
|
-
return
|
|
18
|
+
return true;
|
|
20
19
|
}
|
|
21
|
-
return
|
|
20
|
+
return nonVatScheme.companyId.trim().toUpperCase() === 'GODKÄND FÖR F-SKATT';
|
|
22
21
|
}
|
|
22
|
+
|
|
23
|
+
export const validateSeR005 = schematronRule(rule, evaluateSeR005);
|
|
@@ -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 { getLines, getSupplierCountry,
|
|
4
|
+
import { getLines, getSupplierCountry, schematronRule } from '#/schematron/helpers';
|
|
6
5
|
|
|
7
6
|
const rule = {
|
|
8
7
|
id: 'SE-R-006',
|
|
@@ -12,13 +11,15 @@ const rule = {
|
|
|
12
11
|
|
|
13
12
|
const ALLOWED_RATES = new Set([6, 12, 25]);
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function evaluateSeR006(document: PeppolDocument): boolean {
|
|
16
15
|
if (getSupplierCountry(document) !== 'SE') {
|
|
17
|
-
return
|
|
16
|
+
return true;
|
|
18
17
|
}
|
|
19
18
|
const passed = getLines(document).every(line => {
|
|
20
19
|
const percent = line.item.classifiedTaxCategory.percent;
|
|
21
20
|
return percent === undefined || ALLOWED_RATES.has(percent);
|
|
22
21
|
});
|
|
23
|
-
return
|
|
22
|
+
return passed;
|
|
24
23
|
}
|
|
24
|
+
|
|
25
|
+
export const validateSeR006 = schematronRule(rule, evaluateSeR006);
|