@tailor-platform/erp-kit 0.3.0 → 0.4.1
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/CHANGELOG.md +30 -0
- package/README.md +35 -7
- package/dist/cli.mjs +783 -272
- package/package.json +5 -4
- package/skills/erp-kit-app-1-requirements/SKILL.md +39 -12
- package/skills/{erp-kit-app-3-plan → erp-kit-app-1-requirements}/references/story-extraction.md +1 -1
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +29 -5
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +4 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +4 -0
- package/skills/erp-kit-app-2-requirements-review/references/story-quality-check.md +67 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +51 -50
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +24 -18
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +18 -2
- package/skills/erp-kit-app-4-plan-review/SKILL.md +16 -13
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +19 -11
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +1 -22
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +0 -1
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +13 -4
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +16 -0
- package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
- package/skills/erp-kit-app-7-impl-review/SKILL.md +29 -23
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +16 -17
- package/skills/erp-kit-module-1-requirements/SKILL.md +6 -12
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +29 -5
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +19 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +2 -4
- package/skills/erp-kit-module-4-plan-review/SKILL.md +30 -7
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +15 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +21 -7
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +15 -0
- package/skills/erp-kit-module-shared/SKILL.md +4 -0
- package/skills/erp-kit-module-shared/references/commands.md +1 -1
- package/skills/erp-kit-module-shared/references/queries.md +5 -6
- package/src/commands/app/index.ts +28 -17
- package/src/commands/check.test.ts +1 -1
- package/src/commands/check.ts +2 -35
- package/src/commands/doc/index.ts +83 -0
- package/src/commands/doc/module.test.ts +119 -0
- package/src/commands/doc/module.ts +114 -0
- package/src/commands/doc/modules.test.ts +103 -0
- package/src/commands/doc/modules.ts +98 -0
- package/src/commands/doc/search.test.ts +94 -0
- package/src/commands/doc/search.ts +111 -0
- package/src/commands/generate-doc.ts +17 -10
- package/src/commands/index.ts +20 -8
- package/src/commands/lib/command-result.ts +30 -0
- package/src/commands/lib/discovery.test.ts +74 -0
- package/src/commands/lib/discovery.ts +106 -0
- package/src/commands/lib/paths.ts +22 -0
- package/src/commands/lib/sync-check-source.test.ts +197 -0
- package/src/commands/lib/sync-check-source.ts +100 -0
- package/src/commands/lib/sync-check-tests.test.ts +178 -0
- package/src/commands/lib/sync-check-tests.ts +69 -0
- package/src/commands/mock/index.ts +11 -6
- package/src/commands/module/generate.ts +13 -8
- package/src/commands/module/index.ts +17 -21
- package/src/commands/parse-doc-test-cases.ts +13 -2
- package/src/commands/sync-check.test.ts +6 -364
- package/src/commands/sync-check.ts +7 -251
- package/src/generator/generate-app-code.test.ts +121 -0
- package/src/generator/generate-app-code.ts +51 -0
- package/src/generator/generate-code-boilerplate.test.ts +1 -2
- package/src/generator/generate-code.test.ts +43 -12
- package/src/generator/generate-code.ts +12 -226
- package/src/generator/generate-errors.ts +34 -0
- package/src/generator/generate-permissions.ts +12 -0
- package/src/generator/generate-shells.ts +28 -0
- package/src/generator/generate-stubs.ts +31 -0
- package/src/generator/parse-resolver-doc.test.ts +89 -0
- package/src/generator/parse-resolver-doc.ts +125 -0
- package/src/generator/scaffold.ts +57 -0
- package/src/generator/stub-templates.test.ts +55 -0
- package/src/generator/stub-templates.ts +145 -0
- package/src/module.ts +3 -0
- package/src/modules/audit/README.md +46 -0
- package/src/modules/audit/command/activateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/activateAuditPolicy.test.ts +186 -0
- package/src/modules/audit/command/activateAuditPolicy.ts +97 -0
- package/src/modules/audit/command/createAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/createAuditPolicy.test.ts +395 -0
- package/src/modules/audit/command/createAuditPolicy.ts +131 -0
- package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deactivateAuditPolicy.test.ts +138 -0
- package/src/modules/audit/command/deactivateAuditPolicy.ts +58 -0
- package/src/modules/audit/command/deleteAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/deleteAuditPolicy.test.ts +121 -0
- package/src/modules/audit/command/deleteAuditPolicy.ts +52 -0
- package/src/modules/audit/command/logAuditEvent.generated.ts +6 -0
- package/src/modules/audit/command/logAuditEvent.test.ts +991 -0
- package/src/modules/audit/command/logAuditEvent.ts +357 -0
- package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/reactivateAuditPolicy.test.ts +143 -0
- package/src/modules/audit/command/reactivateAuditPolicy.ts +79 -0
- package/src/modules/audit/command/registerAuditableEntity.generated.ts +6 -0
- package/src/modules/audit/command/registerAuditableEntity.test.ts +268 -0
- package/src/modules/audit/command/registerAuditableEntity.ts +94 -0
- package/src/modules/audit/command/replaceAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/replaceAuditPolicy.test.ts +242 -0
- package/src/modules/audit/command/replaceAuditPolicy.ts +91 -0
- package/src/modules/audit/command/updateAuditPolicy.generated.ts +6 -0
- package/src/modules/audit/command/updateAuditPolicy.test.ts +284 -0
- package/src/modules/audit/command/updateAuditPolicy.ts +151 -0
- package/src/modules/audit/db/auditEntry.ts +47 -0
- package/src/modules/audit/db/auditPolicy.ts +33 -0
- package/src/modules/audit/db/auditableEntity.ts +22 -0
- package/src/modules/audit/db/changeDetail.ts +28 -0
- package/src/modules/audit/db/policyFieldRule.ts +23 -0
- package/src/modules/audit/docs/commands/ActivateAuditPolicy.md +69 -0
- package/src/modules/audit/docs/commands/CreateAuditPolicy.md +79 -0
- package/src/modules/audit/docs/commands/DeactivateAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/DeleteAuditPolicy.md +55 -0
- package/src/modules/audit/docs/commands/LogAuditEvent.md +137 -0
- package/src/modules/audit/docs/commands/ReactivateAuditPolicy.md +58 -0
- package/src/modules/audit/docs/commands/RegisterAuditableEntity.md +62 -0
- package/src/modules/audit/docs/commands/ReplaceAuditPolicy.md +72 -0
- package/src/modules/audit/docs/commands/UpdateAuditPolicy.md +77 -0
- package/src/modules/audit/docs/features/audit-event-logging.md +126 -0
- package/src/modules/audit/docs/features/audit-policy-configuration.md +135 -0
- package/src/modules/audit/docs/features/field-level-change-tracking.md +95 -0
- package/src/modules/audit/docs/models/AuditEntry.md +55 -0
- package/src/modules/audit/docs/models/AuditPolicy.md +79 -0
- package/src/modules/audit/docs/models/AuditableEntity.md +38 -0
- package/src/modules/audit/docs/models/ChangeDetail.md +55 -0
- package/src/modules/audit/docs/models/PolicyFieldRule.md +45 -0
- package/src/modules/audit/docs/queries/GetAuditEntry.md +49 -0
- package/src/modules/audit/docs/queries/GetAuditPolicy.md +54 -0
- package/src/modules/audit/docs/queries/GetAuditSummary.md +84 -0
- package/src/modules/audit/docs/queries/GetChangeDetails.md +56 -0
- package/src/modules/audit/docs/queries/ListAuditPolicies.md +58 -0
- package/src/modules/audit/docs/queries/SearchAuditEntries.md +91 -0
- package/src/modules/audit/generated/kysely-tailordb.ts +92 -0
- package/src/modules/audit/index.ts +2 -0
- package/src/modules/audit/lib/_db_deps.ts +13 -0
- package/src/modules/audit/lib/errors.generated.ts +120 -0
- package/src/modules/audit/lib/permissions.generated.ts +14 -0
- package/src/modules/audit/lib/types.ts +33 -0
- package/src/modules/audit/module.ts +57 -0
- package/src/modules/audit/permissions.ts +39 -0
- package/src/modules/audit/query/getAuditEntry.generated.ts +5 -0
- package/src/modules/audit/query/getAuditEntry.test.ts +123 -0
- package/src/modules/audit/query/getAuditEntry.ts +42 -0
- package/src/modules/audit/query/getAuditPolicy.generated.ts +5 -0
- package/src/modules/audit/query/getAuditPolicy.test.ts +169 -0
- package/src/modules/audit/query/getAuditPolicy.ts +48 -0
- package/src/modules/audit/query/getAuditSummary.generated.ts +5 -0
- package/src/modules/audit/query/getAuditSummary.test.ts +632 -0
- package/src/modules/audit/query/getAuditSummary.ts +170 -0
- package/src/modules/audit/query/getChangeDetails.generated.ts +5 -0
- package/src/modules/audit/query/getChangeDetails.test.ts +195 -0
- package/src/modules/audit/query/getChangeDetails.ts +48 -0
- package/src/modules/audit/query/listAuditPolicies.generated.ts +5 -0
- package/src/modules/audit/query/listAuditPolicies.test.ts +239 -0
- package/src/modules/audit/query/listAuditPolicies.ts +100 -0
- package/src/modules/audit/query/searchAuditEntries.generated.ts +5 -0
- package/src/modules/audit/query/searchAuditEntries.test.ts +424 -0
- package/src/modules/audit/query/searchAuditEntries.ts +121 -0
- package/src/modules/audit/tailor.config.ts +13 -0
- package/src/modules/audit/tailor.d.ts +13 -0
- package/src/modules/audit/testing/fixtures.ts +215 -0
- package/src/modules/business-partner/README.md +60 -0
- package/src/modules/business-partner/command/activatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/activatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/activatePartner.ts +45 -0
- package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/assignRoleToPartner.test.ts +113 -0
- package/src/modules/business-partner/command/assignRoleToPartner.ts +72 -0
- package/src/modules/business-partner/command/createContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/createContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/createContactPerson.ts +98 -0
- package/src/modules/business-partner/command/createPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartner.test.ts +179 -0
- package/src/modules/business-partner/command/createPartner.ts +82 -0
- package/src/modules/business-partner/command/createPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerAddress.test.ts +195 -0
- package/src/modules/business-partner/command/createPartnerAddress.ts +119 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +297 -0
- package/src/modules/business-partner/command/createPartnerBankAccount.ts +114 -0
- package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/createPartnerIdentification.test.ts +255 -0
- package/src/modules/business-partner/command/createPartnerIdentification.ts +97 -0
- package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivateContactPerson.test.ts +70 -0
- package/src/modules/business-partner/command/deactivateContactPerson.ts +54 -0
- package/src/modules/business-partner/command/deactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/deactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/deleteContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/deleteContactPerson.test.ts +61 -0
- package/src/modules/business-partner/command/deleteContactPerson.ts +48 -0
- package/src/modules/business-partner/command/deletePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartner.test.ts +58 -0
- package/src/modules/business-partner/command/deletePartner.ts +46 -0
- package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerAddress.test.ts +74 -0
- package/src/modules/business-partner/command/deletePartnerAddress.ts +52 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +55 -0
- package/src/modules/business-partner/command/deletePartnerBankAccount.ts +36 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +47 -0
- package/src/modules/business-partner/command/deletePartnerIdentification.ts +37 -0
- package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivateContactPerson.test.ts +48 -0
- package/src/modules/business-partner/command/reactivateContactPerson.ts +48 -0
- package/src/modules/business-partner/command/reactivatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/reactivatePartner.test.ts +59 -0
- package/src/modules/business-partner/command/reactivatePartner.ts +46 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +6 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +82 -0
- package/src/modules/business-partner/command/removeRoleFromPartner.ts +73 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.test.ts +60 -0
- package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +48 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +56 -0
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +51 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.test.ts +63 -0
- package/src/modules/business-partner/command/setPrimaryContactPerson.ts +55 -0
- package/src/modules/business-partner/command/updateContactPerson.generated.ts +6 -0
- package/src/modules/business-partner/command/updateContactPerson.test.ts +193 -0
- package/src/modules/business-partner/command/updateContactPerson.ts +92 -0
- package/src/modules/business-partner/command/updatePartner.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartner.test.ts +101 -0
- package/src/modules/business-partner/command/updatePartner.ts +76 -0
- package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerAddress.test.ts +148 -0
- package/src/modules/business-partner/command/updatePartnerAddress.ts +64 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +249 -0
- package/src/modules/business-partner/command/updatePartnerBankAccount.ts +109 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +6 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +162 -0
- package/src/modules/business-partner/command/updatePartnerIdentification.ts +105 -0
- package/src/modules/business-partner/db/.gitkeep +0 -0
- package/src/modules/business-partner/db/businessPartner.ts +59 -0
- package/src/modules/business-partner/db/contactPerson.ts +49 -0
- package/src/modules/business-partner/db/partnerAddress.ts +45 -0
- package/src/modules/business-partner/db/partnerBankAccount.ts +53 -0
- package/src/modules/business-partner/db/partnerIdentification.ts +53 -0
- package/src/modules/business-partner/db/partnerRole.ts +43 -0
- package/src/modules/business-partner/docs/commands/ActivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/AssignRoleToPartner.md +49 -0
- package/src/modules/business-partner/docs/commands/CreateContactPerson.md +59 -0
- package/src/modules/business-partner/docs/commands/CreatePartner.md +54 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerAddress.md +60 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerBankAccount.md +68 -0
- package/src/modules/business-partner/docs/commands/CreatePartnerIdentification.md +59 -0
- package/src/modules/business-partner/docs/commands/DeactivateContactPerson.md +42 -0
- package/src/modules/business-partner/docs/commands/DeactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/DeleteContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/DeletePartner.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerBankAccount.md +35 -0
- package/src/modules/business-partner/docs/commands/DeletePartnerIdentification.md +33 -0
- package/src/modules/business-partner/docs/commands/ReactivateContactPerson.md +38 -0
- package/src/modules/business-partner/docs/commands/ReactivatePartner.md +39 -0
- package/src/modules/business-partner/docs/commands/RemoveRoleFromPartner.md +46 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerAddress.md +38 -0
- package/src/modules/business-partner/docs/commands/SetDefaultPartnerBankAccount.md +38 -0
- package/src/modules/business-partner/docs/commands/SetPrimaryContactPerson.md +43 -0
- package/src/modules/business-partner/docs/commands/UpdateContactPerson.md +66 -0
- package/src/modules/business-partner/docs/commands/UpdatePartner.md +48 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerAddress.md +46 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerBankAccount.md +64 -0
- package/src/modules/business-partner/docs/commands/UpdatePartnerIdentification.md +52 -0
- package/src/modules/business-partner/docs/features/contact-person-management.md +70 -0
- package/src/modules/business-partner/docs/features/partner-address-management.md +96 -0
- package/src/modules/business-partner/docs/features/partner-bank-account.md +70 -0
- package/src/modules/business-partner/docs/features/partner-identification.md +76 -0
- package/src/modules/business-partner/docs/features/partner-lifecycle.md +59 -0
- package/src/modules/business-partner/docs/features/partner-role-classification.md +73 -0
- package/src/modules/business-partner/docs/models/BusinessPartner.md +64 -0
- package/src/modules/business-partner/docs/models/ContactPerson.md +62 -0
- package/src/modules/business-partner/docs/models/PartnerAddress.md +52 -0
- package/src/modules/business-partner/docs/models/PartnerBankAccount.md +50 -0
- package/src/modules/business-partner/docs/models/PartnerIdentification.md +46 -0
- package/src/modules/business-partner/docs/models/PartnerRole.md +42 -0
- package/src/modules/business-partner/docs/queries/GetContactPerson.md +34 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerAddress.md +40 -0
- package/src/modules/business-partner/docs/queries/GetDefaultPartnerBankAccount.md +36 -0
- package/src/modules/business-partner/docs/queries/GetPartner.md +35 -0
- package/src/modules/business-partner/docs/queries/GetPartnerAddress.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerBankAccount.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerIdentification.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPartnerRole.md +34 -0
- package/src/modules/business-partner/docs/queries/GetPrimaryContactPerson.md +36 -0
- package/src/modules/business-partner/docs/queries/ListContactPersonsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerAddressesByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnerBankAccountsByPartner.md +39 -0
- package/src/modules/business-partner/docs/queries/ListPartnerIdentificationsByPartner.md +41 -0
- package/src/modules/business-partner/docs/queries/ListPartnersByRole.md +47 -0
- package/src/modules/business-partner/executor/.gitkeep +0 -0
- package/src/modules/business-partner/generated/.gitkeep +0 -0
- package/src/modules/business-partner/generated/enums.ts +60 -0
- package/src/modules/business-partner/generated/kysely-tailordb.ts +114 -0
- package/src/modules/business-partner/index.ts +2 -0
- package/src/modules/business-partner/lib/_db_deps.ts +17 -0
- package/src/modules/business-partner/lib/errors.generated.ts +172 -0
- package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
- package/src/modules/business-partner/lib/types.ts +58 -0
- package/src/modules/business-partner/module.ts +181 -0
- package/src/modules/business-partner/permissions.ts +3 -0
- package/src/modules/business-partner/query/.gitkeep +0 -0
- package/src/modules/business-partner/query/getContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getContactPerson.test.ts +31 -0
- package/src/modules/business-partner/query/getContactPerson.ts +16 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.test.ts +45 -0
- package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +30 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.test.ts +43 -0
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +17 -0
- package/src/modules/business-partner/query/getPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartner.test.ts +31 -0
- package/src/modules/business-partner/query/getPartner.ts +16 -0
- package/src/modules/business-partner/query/getPartnerAddress.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerAddress.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerAddress.ts +16 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerBankAccount.ts +16 -0
- package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerIdentification.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerIdentification.ts +16 -0
- package/src/modules/business-partner/query/getPartnerRole.generated.ts +5 -0
- package/src/modules/business-partner/query/getPartnerRole.test.ts +31 -0
- package/src/modules/business-partner/query/getPartnerRole.ts +19 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +5 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.test.ts +43 -0
- package/src/modules/business-partner/query/getPrimaryContactPerson.ts +17 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.test.ts +77 -0
- package/src/modules/business-partner/query/listContactPersonsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.test.ts +71 -0
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +37 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.test.ts +59 -0
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +32 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.test.ts +72 -0
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +40 -0
- package/src/modules/business-partner/query/listPartnersByRole.generated.ts +5 -0
- package/src/modules/business-partner/query/listPartnersByRole.test.ts +103 -0
- package/src/modules/business-partner/query/listPartnersByRole.ts +47 -0
- package/src/modules/business-partner/tailor.config.ts +13 -0
- package/src/modules/business-partner/tailor.d.ts +13 -0
- package/src/modules/business-partner/testing/fixtures.ts +204 -0
- package/src/modules/coa-management/README.md +61 -0
- package/src/modules/coa-management/command/.gitkeep +0 -0
- package/src/modules/coa-management/command/activateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/activateAccount.test.ts +125 -0
- package/src/modules/coa-management/command/activateAccount.ts +105 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +113 -0
- package/src/modules/coa-management/command/activateChartOfAccounts.ts +104 -0
- package/src/modules/coa-management/command/createAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccount.test.ts +767 -0
- package/src/modules/coa-management/command/createAccount.ts +247 -0
- package/src/modules/coa-management/command/createAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/createAccountGroup.test.ts +494 -0
- package/src/modules/coa-management/command/createAccountGroup.ts +207 -0
- package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/createChartOfAccounts.test.ts +502 -0
- package/src/modules/coa-management/command/createChartOfAccounts.ts +267 -0
- package/src/modules/coa-management/command/deactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateAccount.test.ts +199 -0
- package/src/modules/coa-management/command/deactivateAccount.ts +142 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +91 -0
- package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +88 -0
- package/src/modules/coa-management/command/deleteAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccount.test.ts +122 -0
- package/src/modules/coa-management/command/deleteAccount.ts +103 -0
- package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteAccountGroup.test.ts +120 -0
- package/src/modules/coa-management/command/deleteAccountGroup.ts +113 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +154 -0
- package/src/modules/coa-management/command/deleteChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/command/moveAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/moveAccountGroup.test.ts +199 -0
- package/src/modules/coa-management/command/moveAccountGroup.ts +145 -0
- package/src/modules/coa-management/command/reactivateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/reactivateAccount.test.ts +126 -0
- package/src/modules/coa-management/command/reactivateAccount.ts +123 -0
- package/src/modules/coa-management/command/updateAccount.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccount.test.ts +669 -0
- package/src/modules/coa-management/command/updateAccount.ts +370 -0
- package/src/modules/coa-management/command/updateAccountGroup.generated.ts +6 -0
- package/src/modules/coa-management/command/updateAccountGroup.test.ts +253 -0
- package/src/modules/coa-management/command/updateAccountGroup.ts +191 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +6 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +153 -0
- package/src/modules/coa-management/command/updateChartOfAccounts.ts +133 -0
- package/src/modules/coa-management/db/.gitkeep +0 -0
- package/src/modules/coa-management/db/account.ts +119 -0
- package/src/modules/coa-management/db/accountGroup.ts +57 -0
- package/src/modules/coa-management/db/chartOfAccounts.ts +55 -0
- package/src/modules/coa-management/docs/commands/ActivateAccount.md +49 -0
- package/src/modules/coa-management/docs/commands/ActivateChartOfAccounts.md +47 -0
- package/src/modules/coa-management/docs/commands/CreateAccount.md +94 -0
- package/src/modules/coa-management/docs/commands/CreateAccountGroup.md +70 -0
- package/src/modules/coa-management/docs/commands/CreateChartOfAccounts.md +72 -0
- package/src/modules/coa-management/docs/commands/DeactivateAccount.md +65 -0
- package/src/modules/coa-management/docs/commands/DeactivateChartOfAccounts.md +44 -0
- package/src/modules/coa-management/docs/commands/DeleteAccount.md +52 -0
- package/src/modules/coa-management/docs/commands/DeleteAccountGroup.md +50 -0
- package/src/modules/coa-management/docs/commands/DeleteChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/commands/MoveAccountGroup.md +57 -0
- package/src/modules/coa-management/docs/commands/ReactivateAccount.md +50 -0
- package/src/modules/coa-management/docs/commands/UpdateAccount.md +102 -0
- package/src/modules/coa-management/docs/commands/UpdateAccountGroup.md +62 -0
- package/src/modules/coa-management/docs/commands/UpdateChartOfAccounts.md +49 -0
- package/src/modules/coa-management/docs/features/account-group-hierarchy.md +81 -0
- package/src/modules/coa-management/docs/features/account-lifecycle.md +80 -0
- package/src/modules/coa-management/docs/features/account-management.md +114 -0
- package/src/modules/coa-management/docs/features/chart-of-accounts-setup.md +86 -0
- package/src/modules/coa-management/docs/models/Account.md +84 -0
- package/src/modules/coa-management/docs/models/AccountGroup.md +55 -0
- package/src/modules/coa-management/docs/models/ChartOfAccounts.md +65 -0
- package/src/modules/coa-management/docs/queries/DetectCircularReference.md +52 -0
- package/src/modules/coa-management/docs/queries/GetAccount.md +42 -0
- package/src/modules/coa-management/docs/queries/GetAccountGroup.md +42 -0
- package/src/modules/coa-management/docs/queries/GetChartOfAccounts.md +48 -0
- package/src/modules/coa-management/docs/queries/ListAccountGroups.md +42 -0
- package/src/modules/coa-management/docs/queries/ListAccounts.md +54 -0
- package/src/modules/coa-management/docs/queries/ListUnassignedAccounts.md +40 -0
- package/src/modules/coa-management/executor/.gitkeep +0 -0
- package/src/modules/coa-management/generated/.gitkeep +0 -0
- package/src/modules/coa-management/generated/enums.ts +45 -0
- package/src/modules/coa-management/generated/kysely-tailordb.ts +81 -0
- package/src/modules/coa-management/index.ts +2 -0
- package/src/modules/coa-management/lib/_db_deps.ts +17 -0
- package/src/modules/coa-management/lib/errors.generated.ts +162 -0
- package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
- package/src/modules/coa-management/lib/types.ts +27 -0
- package/src/modules/coa-management/module.ts +136 -0
- package/src/modules/coa-management/permissions.ts +3 -0
- package/src/modules/coa-management/query/.gitkeep +0 -0
- package/src/modules/coa-management/query/detectCircularReference.generated.ts +5 -0
- package/src/modules/coa-management/query/detectCircularReference.test.ts +88 -0
- package/src/modules/coa-management/query/detectCircularReference.ts +46 -0
- package/src/modules/coa-management/query/getAccount.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccount.test.ts +55 -0
- package/src/modules/coa-management/query/getAccount.ts +25 -0
- package/src/modules/coa-management/query/getAccountGroup.generated.ts +5 -0
- package/src/modules/coa-management/query/getAccountGroup.test.ts +55 -0
- package/src/modules/coa-management/query/getAccountGroup.ts +25 -0
- package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/getChartOfAccounts.test.ts +79 -0
- package/src/modules/coa-management/query/getChartOfAccounts.ts +28 -0
- package/src/modules/coa-management/query/listAccountGroups.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccountGroups.test.ts +72 -0
- package/src/modules/coa-management/query/listAccountGroups.ts +49 -0
- package/src/modules/coa-management/query/listAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listAccounts.test.ts +136 -0
- package/src/modules/coa-management/query/listAccounts.ts +82 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +5 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.test.ts +96 -0
- package/src/modules/coa-management/query/listUnassignedAccounts.ts +39 -0
- package/src/modules/coa-management/tailor.config.ts +13 -0
- package/src/modules/coa-management/tailor.d.ts +13 -0
- package/src/modules/coa-management/testing/fixtures.ts +201 -0
- package/src/modules/item-management/README.md +1 -1
- package/src/modules/item-management/command/activateItem.generated.ts +1 -1
- package/src/modules/item-management/command/activateItem.ts +1 -1
- package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/assignItemToTaxonomy.ts +1 -1
- package/src/modules/item-management/command/createItem.generated.ts +1 -1
- package/src/modules/item-management/command/createItem.test.ts +1 -1
- package/src/modules/item-management/command/createItem.ts +1 -1
- package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/createTaxonomyNode.test.ts +1 -1
- package/src/modules/item-management/command/createTaxonomyNode.ts +1 -1
- package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/deactivateItem.ts +1 -1
- package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
- package/src/modules/item-management/command/deleteItem.ts +1 -1
- package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/deleteTaxonomyNode.ts +1 -1
- package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/moveTaxonomyNode.test.ts +1 -1
- package/src/modules/item-management/command/moveTaxonomyNode.ts +1 -1
- package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/reactivateItem.ts +1 -1
- package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/removeItemFromTaxonomy.ts +1 -1
- package/src/modules/item-management/command/updateItem.generated.ts +1 -1
- package/src/modules/item-management/command/updateItem.test.ts +1 -1
- package/src/modules/item-management/command/updateItem.ts +1 -1
- package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/updateTaxonomyNode.ts +1 -1
- package/src/modules/item-management/lib/errors.generated.ts +1 -1
- package/src/modules/item-management/lib/permissions.generated.ts +1 -1
- package/src/modules/item-management/lib/types.ts +6 -1
- package/src/modules/item-management/module.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.ts +1 -1
- package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateSubtreeDepth.ts +1 -1
- package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
- package/src/modules/item-management/query/detectCircularReference.ts +1 -1
- package/src/modules/item-management/query/getItem.generated.ts +1 -1
- package/src/modules/item-management/query/getItem.ts +1 -1
- package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
- package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNode.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +1 -1
- package/src/modules/organization/README.md +57 -0
- package/src/modules/organization/command/.gitkeep +0 -0
- package/src/modules/organization/command/activateCompany.generated.ts +6 -0
- package/src/modules/organization/command/activateCompany.test.ts +184 -0
- package/src/modules/organization/command/activateCompany.ts +92 -0
- package/src/modules/organization/command/createCompany.generated.ts +6 -0
- package/src/modules/organization/command/createCompany.test.ts +156 -0
- package/src/modules/organization/command/createCompany.ts +80 -0
- package/src/modules/organization/command/createDepartment.generated.ts +6 -0
- package/src/modules/organization/command/createDepartment.test.ts +239 -0
- package/src/modules/organization/command/createDepartment.ts +98 -0
- package/src/modules/organization/command/createSite.generated.ts +6 -0
- package/src/modules/organization/command/createSite.test.ts +262 -0
- package/src/modules/organization/command/createSite.ts +155 -0
- package/src/modules/organization/command/deactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/deactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/deactivateCompany.ts +47 -0
- package/src/modules/organization/command/deactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/deactivateDepartment.test.ts +115 -0
- package/src/modules/organization/command/deactivateDepartment.ts +63 -0
- package/src/modules/organization/command/deactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/deactivateSite.test.ts +53 -0
- package/src/modules/organization/command/deactivateSite.ts +47 -0
- package/src/modules/organization/command/deleteCompany.generated.ts +6 -0
- package/src/modules/organization/command/deleteCompany.test.ts +99 -0
- package/src/modules/organization/command/deleteCompany.ts +66 -0
- package/src/modules/organization/command/reactivateCompany.generated.ts +6 -0
- package/src/modules/organization/command/reactivateCompany.test.ts +58 -0
- package/src/modules/organization/command/reactivateCompany.ts +47 -0
- package/src/modules/organization/command/reactivateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/reactivateDepartment.test.ts +59 -0
- package/src/modules/organization/command/reactivateDepartment.ts +47 -0
- package/src/modules/organization/command/reactivateSite.generated.ts +6 -0
- package/src/modules/organization/command/reactivateSite.test.ts +53 -0
- package/src/modules/organization/command/reactivateSite.ts +47 -0
- package/src/modules/organization/command/updateCompany.generated.ts +6 -0
- package/src/modules/organization/command/updateCompany.test.ts +239 -0
- package/src/modules/organization/command/updateCompany.ts +127 -0
- package/src/modules/organization/command/updateDepartment.generated.ts +6 -0
- package/src/modules/organization/command/updateDepartment.test.ts +232 -0
- package/src/modules/organization/command/updateDepartment.ts +120 -0
- package/src/modules/organization/command/updateSite.generated.ts +6 -0
- package/src/modules/organization/command/updateSite.test.ts +274 -0
- package/src/modules/organization/command/updateSite.ts +176 -0
- package/src/modules/organization/db/.gitkeep +0 -0
- package/src/modules/organization/db/company.ts +44 -0
- package/src/modules/organization/db/department.ts +46 -0
- package/src/modules/organization/db/site.ts +44 -0
- package/src/modules/organization/docs/commands/ActivateCompany.md +62 -0
- package/src/modules/organization/docs/commands/CreateCompany.md +49 -0
- package/src/modules/organization/docs/commands/CreateDepartment.md +62 -0
- package/src/modules/organization/docs/commands/CreateSite.md +74 -0
- package/src/modules/organization/docs/commands/DeactivateCompany.md +40 -0
- package/src/modules/organization/docs/commands/DeactivateDepartment.md +44 -0
- package/src/modules/organization/docs/commands/DeactivateSite.md +38 -0
- package/src/modules/organization/docs/commands/DeleteCompany.md +50 -0
- package/src/modules/organization/docs/commands/ReactivateCompany.md +39 -0
- package/src/modules/organization/docs/commands/ReactivateDepartment.md +37 -0
- package/src/modules/organization/docs/commands/ReactivateSite.md +37 -0
- package/src/modules/organization/docs/commands/UpdateCompany.md +58 -0
- package/src/modules/organization/docs/commands/UpdateDepartment.md +64 -0
- package/src/modules/organization/docs/commands/UpdateSite.md +80 -0
- package/src/modules/organization/docs/features/company-lifecycle.md +76 -0
- package/src/modules/organization/docs/features/department-management.md +66 -0
- package/src/modules/organization/docs/features/site-management.md +86 -0
- package/src/modules/organization/docs/models/Company.md +60 -0
- package/src/modules/organization/docs/models/Department.md +57 -0
- package/src/modules/organization/docs/models/Site.md +57 -0
- package/src/modules/organization/docs/queries/DetectDepartmentCircularReference.md +50 -0
- package/src/modules/organization/docs/queries/GetCompany.md +40 -0
- package/src/modules/organization/docs/queries/GetDepartment.md +44 -0
- package/src/modules/organization/docs/queries/GetDepartmentChildren.md +40 -0
- package/src/modules/organization/docs/queries/GetSite.md +37 -0
- package/src/modules/organization/docs/queries/ListDepartmentsByCompany.md +54 -0
- package/src/modules/organization/docs/queries/ListSitesByCompany.md +54 -0
- package/src/modules/organization/executor/.gitkeep +0 -0
- package/src/modules/organization/generated/.gitkeep +0 -0
- package/src/modules/organization/generated/kysely-tailordb.ts +77 -0
- package/src/modules/organization/index.ts +2 -0
- package/src/modules/organization/lib/_db_deps.ts +10 -0
- package/src/modules/organization/lib/errors.generated.ts +117 -0
- package/src/modules/organization/lib/permissions.generated.ts +19 -0
- package/src/modules/organization/lib/types.ts +21 -0
- package/src/modules/organization/module.ts +89 -0
- package/src/modules/organization/permissions.ts +3 -0
- package/src/modules/organization/query/.gitkeep +0 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +5 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.test.ts +102 -0
- package/src/modules/organization/query/detectDepartmentCircularReference.ts +27 -0
- package/src/modules/organization/query/getCompany.generated.ts +5 -0
- package/src/modules/organization/query/getCompany.test.ts +70 -0
- package/src/modules/organization/query/getCompany.ts +16 -0
- package/src/modules/organization/query/getDepartment.generated.ts +5 -0
- package/src/modules/organization/query/getDepartment.test.ts +85 -0
- package/src/modules/organization/query/getDepartment.ts +17 -0
- package/src/modules/organization/query/getDepartmentChildren.generated.ts +5 -0
- package/src/modules/organization/query/getDepartmentChildren.test.ts +75 -0
- package/src/modules/organization/query/getDepartmentChildren.ts +21 -0
- package/src/modules/organization/query/getSite.generated.ts +5 -0
- package/src/modules/organization/query/getSite.test.ts +55 -0
- package/src/modules/organization/query/getSite.ts +16 -0
- package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listDepartmentsByCompany.test.ts +124 -0
- package/src/modules/organization/query/listDepartmentsByCompany.ts +43 -0
- package/src/modules/organization/query/listSitesByCompany.generated.ts +5 -0
- package/src/modules/organization/query/listSitesByCompany.test.ts +126 -0
- package/src/modules/organization/query/listSitesByCompany.ts +41 -0
- package/src/modules/organization/tailor.config.ts +13 -0
- package/src/modules/organization/tailor.d.ts +13 -0
- package/src/modules/organization/testing/fixtures.ts +155 -0
- package/src/modules/primitives/README.md +1 -1
- package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/activateCategory.ts +1 -1
- package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/activateCurrency.ts +1 -1
- package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/activateUnit.ts +1 -1
- package/src/modules/primitives/command/createCategory.generated.ts +1 -1
- package/src/modules/primitives/command/createCategory.ts +1 -1
- package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/createCurrency.ts +1 -1
- package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
- package/src/modules/primitives/command/createExchangeRate.ts +1 -1
- package/src/modules/primitives/command/createUnit.generated.ts +1 -1
- package/src/modules/primitives/command/createUnit.ts +1 -1
- package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCategory.ts +1 -1
- package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCurrency.ts +1 -1
- package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateUnit.ts +1 -1
- package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +8 -64
- package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
- package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
- package/src/modules/primitives/command/setReferenceUnit.ts +1 -1
- package/src/modules/primitives/docs/commands/ActivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/ActivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +2 -2
- package/src/modules/primitives/docs/commands/CreateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +1 -1
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +1 -1
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +13 -23
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +1 -1
- package/src/modules/primitives/docs/features/currency-definitions.md +13 -14
- package/src/modules/primitives/docs/models/Currency.md +3 -4
- package/src/modules/primitives/docs/queries/ConvertAmount.md +2 -2
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +2 -2
- package/src/modules/primitives/lib/errors.generated.ts +6 -1
- package/src/modules/primitives/lib/permissions.generated.ts +1 -1
- package/src/modules/primitives/lib/types.ts +6 -1
- package/src/modules/primitives/module.ts +1 -1
- package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
- package/src/modules/primitives/query/convertAmount.test.ts +1 -1
- package/src/modules/primitives/query/convertAmount.ts +1 -1
- package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
- package/src/modules/primitives/query/convertQuantity.test.ts +1 -1
- package/src/modules/primitives/query/convertQuantity.ts +1 -1
- package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getBaseCurrency.test.ts +1 -1
- package/src/modules/primitives/query/getBaseCurrency.ts +1 -1
- package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getCurrency.ts +1 -1
- package/src/modules/primitives/query/getUnit.generated.ts +1 -1
- package/src/modules/primitives/query/getUnit.ts +1 -1
- package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
- package/src/modules/primitives/query/getUoMCategory.ts +1 -1
- package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
- package/src/modules/primitives/query/listUnitsByCategory.ts +2 -2
- package/src/modules/product-management/README.md +1 -1
- package/src/modules/product-management/command/activateProduct.generated.ts +1 -1
- package/src/modules/product-management/command/activateProduct.ts +1 -1
- package/src/modules/product-management/command/assignProductToCategory.generated.ts +1 -1
- package/src/modules/product-management/command/assignProductToCategory.ts +1 -1
- package/src/modules/product-management/command/createProduct.generated.ts +1 -1
- package/src/modules/product-management/command/createProduct.test.ts +1 -1
- package/src/modules/product-management/command/createProduct.ts +1 -1
- package/src/modules/product-management/command/createProductAttribute.generated.ts +1 -1
- package/src/modules/product-management/command/createProductAttribute.ts +1 -1
- package/src/modules/product-management/command/createProductAttributeValue.generated.ts +1 -1
- package/src/modules/product-management/command/createProductAttributeValue.ts +1 -1
- package/src/modules/product-management/command/createProductCategory.generated.ts +1 -1
- package/src/modules/product-management/command/createProductCategory.test.ts +1 -1
- package/src/modules/product-management/command/createProductCategory.ts +1 -1
- package/src/modules/product-management/command/deactivateProduct.generated.ts +1 -1
- package/src/modules/product-management/command/deactivateProduct.ts +1 -1
- package/src/modules/product-management/command/deleteProduct.generated.ts +1 -1
- package/src/modules/product-management/command/deleteProduct.ts +1 -1
- package/src/modules/product-management/command/deleteProductAttribute.generated.ts +1 -1
- package/src/modules/product-management/command/deleteProductAttribute.ts +1 -1
- package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +1 -1
- package/src/modules/product-management/command/deleteProductAttributeValue.ts +1 -1
- package/src/modules/product-management/command/deleteProductCategory.generated.ts +1 -1
- package/src/modules/product-management/command/deleteProductCategory.ts +1 -1
- package/src/modules/product-management/command/generateVariants.generated.ts +1 -1
- package/src/modules/product-management/command/generateVariants.test.ts +1 -1
- package/src/modules/product-management/command/generateVariants.ts +1 -1
- package/src/modules/product-management/command/moveProductCategory.generated.ts +1 -1
- package/src/modules/product-management/command/moveProductCategory.test.ts +1 -1
- package/src/modules/product-management/command/moveProductCategory.ts +1 -1
- package/src/modules/product-management/command/reactivateProduct.generated.ts +1 -1
- package/src/modules/product-management/command/reactivateProduct.ts +1 -1
- package/src/modules/product-management/command/removeProductFromCategory.generated.ts +1 -1
- package/src/modules/product-management/command/removeProductFromCategory.ts +1 -1
- package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +1 -1
- package/src/modules/product-management/command/setProductAttributeAssignment.ts +1 -1
- package/src/modules/product-management/command/updateProduct.generated.ts +1 -1
- package/src/modules/product-management/command/updateProduct.test.ts +1 -1
- package/src/modules/product-management/command/updateProduct.ts +1 -1
- package/src/modules/product-management/command/updateProductAttribute.generated.ts +1 -1
- package/src/modules/product-management/command/updateProductAttribute.ts +1 -1
- package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +1 -1
- package/src/modules/product-management/command/updateProductAttributeValue.ts +1 -1
- package/src/modules/product-management/command/updateProductCategory.generated.ts +1 -1
- package/src/modules/product-management/command/updateProductCategory.ts +1 -1
- package/src/modules/product-management/lib/errors.generated.ts +1 -1
- package/src/modules/product-management/lib/permissions.generated.ts +1 -1
- package/src/modules/product-management/lib/types.ts +6 -1
- package/src/modules/product-management/module.ts +1 -1
- package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +1 -1
- package/src/modules/product-management/query/calculateCategoryDepth.ts +1 -1
- package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +1 -1
- package/src/modules/product-management/query/detectCategoryCircularReference.ts +1 -1
- package/src/modules/product-management/query/getProduct.generated.ts +1 -1
- package/src/modules/product-management/query/getProduct.ts +1 -1
- package/src/modules/product-management/query/getProductAttribute.generated.ts +1 -1
- package/src/modules/product-management/query/getProductAttribute.ts +1 -1
- package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +1 -1
- package/src/modules/product-management/query/getProductAttributeAssignment.ts +1 -1
- package/src/modules/product-management/query/getProductAttributeValue.generated.ts +1 -1
- package/src/modules/product-management/query/getProductAttributeValue.ts +1 -1
- package/src/modules/product-management/query/getProductCategory.generated.ts +1 -1
- package/src/modules/product-management/query/getProductCategory.ts +1 -1
- package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +1 -1
- package/src/modules/product-management/query/getProductCategoryAssignment.ts +1 -1
- package/src/modules/product-management/query/getProductVariant.generated.ts +1 -1
- package/src/modules/product-management/query/getProductVariant.ts +1 -1
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +1 -1
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +1 -1
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +1 -1
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +1 -1
- package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +1 -1
- package/src/modules/product-management/query/listProductAttributeAssignments.ts +1 -1
- package/src/modules/product-management/query/listProductAttributeValues.generated.ts +1 -1
- package/src/modules/product-management/query/listProductAttributeValues.ts +1 -1
- package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +1 -1
- package/src/modules/product-management/query/listProductCategoryAssignments.ts +1 -1
- package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +1 -1
- package/src/modules/product-management/query/listProductCategoryChildren.ts +1 -1
- package/src/modules/product-management/query/listProductVariants.generated.ts +1 -1
- package/src/modules/product-management/query/listProductVariants.ts +1 -1
- package/src/modules/user-management/command/activateUser.generated.ts +1 -1
- package/src/modules/user-management/command/activateUser.ts +1 -1
- package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
- package/src/modules/user-management/command/assignPermissionToRole.ts +1 -1
- package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
- package/src/modules/user-management/command/assignRoleToUser.ts +1 -1
- package/src/modules/user-management/command/createPermission.generated.ts +1 -1
- package/src/modules/user-management/command/createPermission.ts +1 -1
- package/src/modules/user-management/command/createRole.generated.ts +1 -1
- package/src/modules/user-management/command/createRole.ts +1 -1
- package/src/modules/user-management/command/createUser.generated.ts +1 -1
- package/src/modules/user-management/command/createUser.ts +1 -1
- package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/deactivateUser.ts +1 -1
- package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/reactivateUser.ts +1 -1
- package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
- package/src/modules/user-management/command/revokePermissionFromRole.ts +1 -1
- package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
- package/src/modules/user-management/command/revokeRoleFromUser.ts +1 -1
- package/src/modules/user-management/docs/commands/CreatePermission.md +3 -3
- package/src/modules/user-management/docs/commands/CreateRole.md +1 -1
- package/src/modules/user-management/docs/queries/ListRolePermissionsByRole.md +39 -0
- package/src/modules/user-management/docs/queries/ListUserRolesByUser.md +39 -0
- package/src/modules/user-management/generated/enums.ts +0 -15
- package/src/modules/user-management/generated/kysely-tailordb.ts +0 -11
- package/src/modules/user-management/lib/errors.generated.ts +1 -1
- package/src/modules/user-management/lib/permissions.generated.ts +1 -1
- package/src/modules/user-management/lib/types.ts +6 -1
- package/src/modules/user-management/module.ts +1 -1
- package/src/shared/createContext.ts +2 -1
- package/src/shared/defineQuery.ts +36 -1
- package/src/shared/requirePermission.ts +3 -3
- package/src/shared/types.ts +3 -0
- package/templates/scaffold/app/backend/package.json +4 -3
- package/templates/scaffold/app/frontend/eslint.config.js +12 -0
- package/templates/scaffold/app/frontend/package.json +10 -7
- package/templates/scaffold/app/frontend/src/hooks/use-toast.ts +30 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +3 -2
- package/templates/scaffold/app/frontend/vite.config.ts +5 -5
- package/templates/scaffold/module/lib/types.ts +6 -1
- package/templates/scaffold/module/permissions.ts +1 -1
- package/src/commands/module/list.test.ts +0 -57
- package/src/commands/module/list.ts +0 -64
- package/templates/scaffold/module/lib/errors.ts +0 -1
- /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
- /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
- /package/src/modules/{coa-management → business-partner}/.gitkeep +0 -0
- /package/src/modules/{supplier-management → business-partner/command}/.gitkeep +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
2
|
+
import {
|
|
3
|
+
ok,
|
|
4
|
+
type ReadonlyDB,
|
|
5
|
+
type PaginationInput,
|
|
6
|
+
buildPaginatedResult,
|
|
7
|
+
DEFAULT_PAGE_SIZE,
|
|
8
|
+
} from "@tailor-platform/erp-kit/module";
|
|
9
|
+
|
|
10
|
+
type OrderByField = "createdAt";
|
|
11
|
+
|
|
12
|
+
export interface ListPartnerBankAccountsByPartnerInput extends PaginationInput<OrderByField> {
|
|
13
|
+
partnerId: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export async function run(db: ReadonlyDB<DB>, input: ListPartnerBankAccountsByPartnerInput) {
|
|
17
|
+
const limit = input.limit ?? DEFAULT_PAGE_SIZE;
|
|
18
|
+
const offset = input.offset ?? 0;
|
|
19
|
+
const orderBy = input.orderBy ?? "createdAt";
|
|
20
|
+
const orderDirection = input.orderDirection ?? "asc";
|
|
21
|
+
|
|
22
|
+
const items = await db
|
|
23
|
+
.selectFrom("PartnerBankAccount")
|
|
24
|
+
.selectAll()
|
|
25
|
+
.where("partnerId", "=", input.partnerId)
|
|
26
|
+
.orderBy(orderBy, orderDirection)
|
|
27
|
+
.limit(limit + 1)
|
|
28
|
+
.offset(offset)
|
|
29
|
+
.execute();
|
|
30
|
+
|
|
31
|
+
return ok(buildPaginatedResult(items, limit));
|
|
32
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { createMockDb } from "../../../testing/index";
|
|
3
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
4
|
+
import { baseTaxIdIdentification, baseVatIdentification } from "../testing/fixtures";
|
|
5
|
+
import { run } from "./listPartnerIdentificationsByPartner";
|
|
6
|
+
|
|
7
|
+
describe("listPartnerIdentificationsByPartner", () => {
|
|
8
|
+
it("returns all identification records for a partner with multiple identifications", async () => {
|
|
9
|
+
const { db, spies } = createMockDb<DB>();
|
|
10
|
+
spies.select.mockReturnValue([baseTaxIdIdentification, baseVatIdentification]);
|
|
11
|
+
|
|
12
|
+
const result = await run(db, { partnerId: "partner-2" });
|
|
13
|
+
|
|
14
|
+
expect(result.ok).toBe(true);
|
|
15
|
+
if (result.ok) {
|
|
16
|
+
expect(result.value.items).toEqual([baseTaxIdIdentification, baseVatIdentification]);
|
|
17
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("returns only TAX_ID records when type filter is provided", async () => {
|
|
22
|
+
const { db, spies } = createMockDb<DB>();
|
|
23
|
+
spies.select.mockReturnValue([baseTaxIdIdentification]);
|
|
24
|
+
|
|
25
|
+
const result = await run(db, { partnerId: "partner-2", type: "TAX_ID" });
|
|
26
|
+
|
|
27
|
+
expect(result.ok).toBe(true);
|
|
28
|
+
if (result.ok) {
|
|
29
|
+
expect(result.value.items).toEqual([baseTaxIdIdentification]);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("returns empty array when partner has no identification records", async () => {
|
|
34
|
+
const { db, spies } = createMockDb<DB>();
|
|
35
|
+
spies.select.mockReturnValue([]);
|
|
36
|
+
|
|
37
|
+
const result = await run(db, { partnerId: "partner-99" });
|
|
38
|
+
|
|
39
|
+
expect(result.ok).toBe(true);
|
|
40
|
+
if (result.ok) {
|
|
41
|
+
expect(result.value.items).toEqual([]);
|
|
42
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("returns empty array when partner has no identifications of the requested type", async () => {
|
|
47
|
+
const { db, spies } = createMockDb<DB>();
|
|
48
|
+
spies.select.mockReturnValue([]);
|
|
49
|
+
|
|
50
|
+
const result = await run(db, { partnerId: "partner-2", type: "DUNS" });
|
|
51
|
+
|
|
52
|
+
expect(result.ok).toBe(true);
|
|
53
|
+
if (result.ok) {
|
|
54
|
+
expect(result.value.items).toEqual([]);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("includes identifications regardless of validity period", async () => {
|
|
59
|
+
const { db, spies } = createMockDb<DB>();
|
|
60
|
+
spies.select.mockReturnValue([baseTaxIdIdentification, baseVatIdentification]);
|
|
61
|
+
|
|
62
|
+
const result = await run(db, { partnerId: "partner-2" });
|
|
63
|
+
|
|
64
|
+
expect(result.ok).toBe(true);
|
|
65
|
+
if (result.ok) {
|
|
66
|
+
const hasNoExpiry = result.value.items.some((i) => i.validTo === null);
|
|
67
|
+
const hasExpiry = result.value.items.some((i) => i.validTo !== null);
|
|
68
|
+
expect(hasNoExpiry).toBe(true);
|
|
69
|
+
expect(hasExpiry).toBe(true);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
2
|
+
import type { PartnerIdentificationType } from "../generated/enums";
|
|
3
|
+
import {
|
|
4
|
+
ok,
|
|
5
|
+
type ReadonlyDB,
|
|
6
|
+
type PaginationInput,
|
|
7
|
+
buildPaginatedResult,
|
|
8
|
+
DEFAULT_PAGE_SIZE,
|
|
9
|
+
} from "@tailor-platform/erp-kit/module";
|
|
10
|
+
|
|
11
|
+
type OrderByField = "createdAt";
|
|
12
|
+
|
|
13
|
+
export interface ListPartnerIdentificationsByPartnerInput extends PaginationInput<OrderByField> {
|
|
14
|
+
partnerId: string;
|
|
15
|
+
type?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function run(db: ReadonlyDB<DB>, input: ListPartnerIdentificationsByPartnerInput) {
|
|
19
|
+
const limit = input.limit ?? DEFAULT_PAGE_SIZE;
|
|
20
|
+
const offset = input.offset ?? 0;
|
|
21
|
+
const orderBy = input.orderBy ?? "createdAt";
|
|
22
|
+
const orderDirection = input.orderDirection ?? "asc";
|
|
23
|
+
|
|
24
|
+
let query = db
|
|
25
|
+
.selectFrom("PartnerIdentification")
|
|
26
|
+
.selectAll()
|
|
27
|
+
.where("partnerId", "=", input.partnerId);
|
|
28
|
+
|
|
29
|
+
if (input.type !== undefined) {
|
|
30
|
+
query = query.where("type", "=", input.type as PartnerIdentificationType);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const items = await query
|
|
34
|
+
.orderBy(orderBy, orderDirection)
|
|
35
|
+
.limit(limit + 1)
|
|
36
|
+
.offset(offset)
|
|
37
|
+
.execute();
|
|
38
|
+
|
|
39
|
+
return ok(buildPaginatedResult(items, limit));
|
|
40
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { createMockDb } from "../../../testing/index";
|
|
3
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
4
|
+
import { InvalidRoleError } from "../lib/errors.generated";
|
|
5
|
+
import { baseActivePartner, baseDraftPartner, baseInactivePartner } from "../testing/fixtures";
|
|
6
|
+
import { run } from "./listPartnersByRole";
|
|
7
|
+
|
|
8
|
+
describe("listPartnersByRole", () => {
|
|
9
|
+
it("returns all partners with CUSTOMER role", async () => {
|
|
10
|
+
const { db, spies } = createMockDb<DB>();
|
|
11
|
+
spies.select.mockReturnValue([baseActivePartner, baseDraftPartner]);
|
|
12
|
+
|
|
13
|
+
const result = await run(db, { role: "CUSTOMER" });
|
|
14
|
+
|
|
15
|
+
expect(result.ok).toBe(true);
|
|
16
|
+
if (result.ok) {
|
|
17
|
+
expect(result.value.items).toEqual([baseActivePartner, baseDraftPartner]);
|
|
18
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("returns all partners with SUPPLIER role", async () => {
|
|
23
|
+
const { db, spies } = createMockDb<DB>();
|
|
24
|
+
spies.select.mockReturnValue([baseActivePartner]);
|
|
25
|
+
|
|
26
|
+
const result = await run(db, { role: "SUPPLIER" });
|
|
27
|
+
|
|
28
|
+
expect(result.ok).toBe(true);
|
|
29
|
+
if (result.ok) {
|
|
30
|
+
expect(result.value.items).toEqual([baseActivePartner]);
|
|
31
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("returns only ACTIVE partners when status filter is ACTIVE", async () => {
|
|
36
|
+
const { db, spies } = createMockDb<DB>();
|
|
37
|
+
spies.select.mockReturnValue([baseActivePartner]);
|
|
38
|
+
|
|
39
|
+
const result = await run(db, { role: "CUSTOMER", status: "ACTIVE" });
|
|
40
|
+
|
|
41
|
+
expect(result.ok).toBe(true);
|
|
42
|
+
if (result.ok) {
|
|
43
|
+
expect(result.value.items).toEqual([baseActivePartner]);
|
|
44
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("returns partners of all statuses when status filter is omitted", async () => {
|
|
49
|
+
const { db, spies } = createMockDb<DB>();
|
|
50
|
+
spies.select.mockReturnValue([baseActivePartner, baseDraftPartner, baseInactivePartner]);
|
|
51
|
+
|
|
52
|
+
const result = await run(db, { role: "CUSTOMER" });
|
|
53
|
+
|
|
54
|
+
expect(result.ok).toBe(true);
|
|
55
|
+
if (result.ok) {
|
|
56
|
+
expect(result.value.items).toEqual([
|
|
57
|
+
baseActivePartner,
|
|
58
|
+
baseDraftPartner,
|
|
59
|
+
baseInactivePartner,
|
|
60
|
+
]);
|
|
61
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("returns partner in both queries when partner holds both roles", async () => {
|
|
66
|
+
const { db, spies } = createMockDb<DB>();
|
|
67
|
+
spies.select.mockReturnValue([baseActivePartner]);
|
|
68
|
+
|
|
69
|
+
const customerResult = await run(db, { role: "CUSTOMER" });
|
|
70
|
+
const supplierResult = await run(db, { role: "SUPPLIER" });
|
|
71
|
+
|
|
72
|
+
expect(customerResult.ok).toBe(true);
|
|
73
|
+
expect(supplierResult.ok).toBe(true);
|
|
74
|
+
if (customerResult.ok && supplierResult.ok) {
|
|
75
|
+
expect(customerResult.value.items).toEqual([baseActivePartner]);
|
|
76
|
+
expect(supplierResult.value.items).toEqual([baseActivePartner]);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it("returns empty array when no partners match the criteria", async () => {
|
|
81
|
+
const { db, spies } = createMockDb<DB>();
|
|
82
|
+
spies.select.mockReturnValue([]);
|
|
83
|
+
|
|
84
|
+
const result = await run(db, { role: "SUPPLIER" });
|
|
85
|
+
|
|
86
|
+
expect(result.ok).toBe(true);
|
|
87
|
+
if (result.ok) {
|
|
88
|
+
expect(result.value.items).toEqual([]);
|
|
89
|
+
expect(result.value.hasNextPage).toBe(false);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("returns error for invalid role value", async () => {
|
|
94
|
+
const { db } = createMockDb<DB>();
|
|
95
|
+
|
|
96
|
+
const result = await run(db, { role: "INVALID_ROLE" });
|
|
97
|
+
|
|
98
|
+
expect(result.ok).toBe(false);
|
|
99
|
+
if (!result.ok) {
|
|
100
|
+
expect(result.error).toBeInstanceOf(InvalidRoleError);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
2
|
+
import type { BusinessPartnerStatus, PartnerRoleRole } from "../generated/enums";
|
|
3
|
+
import { InvalidRoleError } from "../lib/errors.generated";
|
|
4
|
+
import {
|
|
5
|
+
ok,
|
|
6
|
+
err,
|
|
7
|
+
type ReadonlyDB,
|
|
8
|
+
type PaginationInput,
|
|
9
|
+
buildPaginatedResult,
|
|
10
|
+
DEFAULT_PAGE_SIZE,
|
|
11
|
+
} from "@tailor-platform/erp-kit/module";
|
|
12
|
+
|
|
13
|
+
type OrderByField = "name";
|
|
14
|
+
|
|
15
|
+
export interface ListPartnersByRoleInput extends PaginationInput<OrderByField> {
|
|
16
|
+
role: string;
|
|
17
|
+
status?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export async function run(db: ReadonlyDB<DB>, input: ListPartnersByRoleInput) {
|
|
21
|
+
if (input.role !== "CUSTOMER" && input.role !== "SUPPLIER") {
|
|
22
|
+
return err(new InvalidRoleError(input.role));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const limit = input.limit ?? DEFAULT_PAGE_SIZE;
|
|
26
|
+
const offset = input.offset ?? 0;
|
|
27
|
+
const orderBy = input.orderBy ?? "name";
|
|
28
|
+
const orderDirection = input.orderDirection ?? "asc";
|
|
29
|
+
|
|
30
|
+
let query = db
|
|
31
|
+
.selectFrom("PartnerRole")
|
|
32
|
+
.innerJoin("BusinessPartner", "BusinessPartner.id", "PartnerRole.partnerId")
|
|
33
|
+
.selectAll("BusinessPartner")
|
|
34
|
+
.where("PartnerRole.role", "=", input.role as PartnerRoleRole);
|
|
35
|
+
|
|
36
|
+
if (input.status !== undefined) {
|
|
37
|
+
query = query.where("BusinessPartner.status", "=", input.status as BusinessPartnerStatus);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const items = await query
|
|
41
|
+
.orderBy(`BusinessPartner.${orderBy}`, orderDirection)
|
|
42
|
+
.limit(limit + 1)
|
|
43
|
+
.offset(offset)
|
|
44
|
+
.execute();
|
|
45
|
+
|
|
46
|
+
return ok(buildPaginatedResult(items, limit));
|
|
47
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig, definePlugins } from "@tailor-platform/sdk";
|
|
2
|
+
import { kyselyTypePlugin } from "@tailor-platform/sdk/plugin/kysely-type";
|
|
3
|
+
import { enumConstantsPlugin } from "@tailor-platform/sdk/plugin/enum-constants";
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
name: "business-partner",
|
|
7
|
+
db: { "main-db": { files: [`./db/*.ts`, `./lib/_db_deps.ts`] } },
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export const plugins = definePlugins(
|
|
11
|
+
kyselyTypePlugin({ distPath: `./generated/kysely-tailordb.ts` }),
|
|
12
|
+
enumConstantsPlugin({ distPath: "./generated/enums.ts" }),
|
|
13
|
+
);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// This file is auto-generated by @tailor-platform/sdk
|
|
2
|
+
// Do not edit this file manually
|
|
3
|
+
// Regenerated automatically when running 'tailor-sdk apply' or 'tailor-sdk generate'
|
|
4
|
+
|
|
5
|
+
declare module "@tailor-platform/sdk" {
|
|
6
|
+
interface AttributeMap {}
|
|
7
|
+
interface AttributeList {
|
|
8
|
+
__tuple?: [];
|
|
9
|
+
}
|
|
10
|
+
interface Env {}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
BusinessPartner,
|
|
3
|
+
ContactPerson,
|
|
4
|
+
PartnerAddress,
|
|
5
|
+
PartnerBankAccount,
|
|
6
|
+
PartnerIdentification,
|
|
7
|
+
PartnerRole,
|
|
8
|
+
Schema,
|
|
9
|
+
} from "../lib/types";
|
|
10
|
+
|
|
11
|
+
// BusinessPartner fixtures
|
|
12
|
+
export const baseDraftPartner = {
|
|
13
|
+
id: "partner-1",
|
|
14
|
+
name: "Acme Corp",
|
|
15
|
+
type: "ORGANIZATION",
|
|
16
|
+
companyId: "company-1",
|
|
17
|
+
preferredCurrencyId: null,
|
|
18
|
+
status: "DRAFT",
|
|
19
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
20
|
+
updatedAt: null,
|
|
21
|
+
} as const satisfies BusinessPartner<Schema>;
|
|
22
|
+
|
|
23
|
+
export const baseActivePartner = {
|
|
24
|
+
id: "partner-2",
|
|
25
|
+
name: "Global Supplies Inc",
|
|
26
|
+
type: "ORGANIZATION",
|
|
27
|
+
companyId: "company-1",
|
|
28
|
+
preferredCurrencyId: "currency-usd",
|
|
29
|
+
status: "ACTIVE",
|
|
30
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
31
|
+
updatedAt: null,
|
|
32
|
+
} as const satisfies BusinessPartner<Schema>;
|
|
33
|
+
|
|
34
|
+
export const baseInactivePartner = {
|
|
35
|
+
id: "partner-3",
|
|
36
|
+
name: "Old Vendor Ltd",
|
|
37
|
+
type: "ORGANIZATION",
|
|
38
|
+
companyId: "company-1",
|
|
39
|
+
preferredCurrencyId: null,
|
|
40
|
+
status: "INACTIVE",
|
|
41
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
42
|
+
updatedAt: null,
|
|
43
|
+
} as const satisfies BusinessPartner<Schema>;
|
|
44
|
+
|
|
45
|
+
export const baseIndividualPartner = {
|
|
46
|
+
id: "partner-4",
|
|
47
|
+
name: "John Doe",
|
|
48
|
+
type: "INDIVIDUAL",
|
|
49
|
+
companyId: "company-1",
|
|
50
|
+
preferredCurrencyId: null,
|
|
51
|
+
status: "ACTIVE",
|
|
52
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
53
|
+
updatedAt: null,
|
|
54
|
+
} as const satisfies BusinessPartner<Schema>;
|
|
55
|
+
|
|
56
|
+
// PartnerRole fixtures
|
|
57
|
+
export const baseCustomerRole = {
|
|
58
|
+
id: "role-1",
|
|
59
|
+
partnerId: "partner-2",
|
|
60
|
+
role: "CUSTOMER",
|
|
61
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
62
|
+
updatedAt: null,
|
|
63
|
+
} as const satisfies PartnerRole<Schema>;
|
|
64
|
+
|
|
65
|
+
export const baseSupplierRole = {
|
|
66
|
+
id: "role-2",
|
|
67
|
+
partnerId: "partner-2",
|
|
68
|
+
role: "SUPPLIER",
|
|
69
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
70
|
+
updatedAt: null,
|
|
71
|
+
} as const satisfies PartnerRole<Schema>;
|
|
72
|
+
|
|
73
|
+
// PartnerAddress fixtures
|
|
74
|
+
export const baseBillingAddress = {
|
|
75
|
+
id: "address-1",
|
|
76
|
+
partnerId: "partner-2",
|
|
77
|
+
addressType: "BILLING",
|
|
78
|
+
line1: "123 Main St",
|
|
79
|
+
line2: null,
|
|
80
|
+
city: "New York",
|
|
81
|
+
state: "NY",
|
|
82
|
+
postalCode: "10001",
|
|
83
|
+
country: "US",
|
|
84
|
+
isDefault: true,
|
|
85
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
86
|
+
updatedAt: null,
|
|
87
|
+
} as const satisfies PartnerAddress<Schema>;
|
|
88
|
+
|
|
89
|
+
export const baseShippingAddress = {
|
|
90
|
+
id: "address-2",
|
|
91
|
+
partnerId: "partner-2",
|
|
92
|
+
addressType: "SHIPPING",
|
|
93
|
+
line1: "456 Oak Ave",
|
|
94
|
+
line2: "Suite 100",
|
|
95
|
+
city: "Los Angeles",
|
|
96
|
+
state: "CA",
|
|
97
|
+
postalCode: "90001",
|
|
98
|
+
country: "US",
|
|
99
|
+
isDefault: false,
|
|
100
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
101
|
+
updatedAt: null,
|
|
102
|
+
} as const satisfies PartnerAddress<Schema>;
|
|
103
|
+
|
|
104
|
+
// ContactPerson fixtures
|
|
105
|
+
export const baseActiveContact = {
|
|
106
|
+
id: "contact-1",
|
|
107
|
+
partnerId: "partner-2",
|
|
108
|
+
firstName: "Jane",
|
|
109
|
+
lastName: "Smith",
|
|
110
|
+
email: "jane@example.com",
|
|
111
|
+
phone: "+1-555-0100",
|
|
112
|
+
jobTitle: "Procurement Manager",
|
|
113
|
+
department: "Purchasing",
|
|
114
|
+
isPrimary: true,
|
|
115
|
+
status: "ACTIVE",
|
|
116
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
117
|
+
updatedAt: null,
|
|
118
|
+
} as const satisfies ContactPerson<Schema>;
|
|
119
|
+
|
|
120
|
+
export const baseInactiveContact = {
|
|
121
|
+
id: "contact-2",
|
|
122
|
+
partnerId: "partner-2",
|
|
123
|
+
firstName: "Bob",
|
|
124
|
+
lastName: "Jones",
|
|
125
|
+
email: "bob@example.com",
|
|
126
|
+
phone: null,
|
|
127
|
+
jobTitle: null,
|
|
128
|
+
department: null,
|
|
129
|
+
isPrimary: false,
|
|
130
|
+
status: "INACTIVE",
|
|
131
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
132
|
+
updatedAt: null,
|
|
133
|
+
} as const satisfies ContactPerson<Schema>;
|
|
134
|
+
|
|
135
|
+
export const baseNonPrimaryContact = {
|
|
136
|
+
id: "contact-3",
|
|
137
|
+
partnerId: "partner-2",
|
|
138
|
+
firstName: "Alice",
|
|
139
|
+
lastName: "Williams",
|
|
140
|
+
email: null,
|
|
141
|
+
phone: "+1-555-0200",
|
|
142
|
+
jobTitle: null,
|
|
143
|
+
department: null,
|
|
144
|
+
isPrimary: false,
|
|
145
|
+
status: "ACTIVE",
|
|
146
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
147
|
+
updatedAt: null,
|
|
148
|
+
} as const satisfies ContactPerson<Schema>;
|
|
149
|
+
|
|
150
|
+
// PartnerBankAccount fixtures
|
|
151
|
+
export const baseDefaultBankAccount = {
|
|
152
|
+
id: "bank-1",
|
|
153
|
+
partnerId: "partner-2",
|
|
154
|
+
bankName: "First National Bank",
|
|
155
|
+
accountHolderName: "Global Supplies Inc",
|
|
156
|
+
accountNumber: "1234567890",
|
|
157
|
+
routingNumber: "021000021",
|
|
158
|
+
iban: null,
|
|
159
|
+
swiftBic: null,
|
|
160
|
+
currencyId: "currency-usd",
|
|
161
|
+
isDefault: true,
|
|
162
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
163
|
+
updatedAt: null,
|
|
164
|
+
} as const satisfies PartnerBankAccount<Schema>;
|
|
165
|
+
|
|
166
|
+
export const baseSecondBankAccount = {
|
|
167
|
+
id: "bank-2",
|
|
168
|
+
partnerId: "partner-2",
|
|
169
|
+
bankName: "Deutsche Bank",
|
|
170
|
+
accountHolderName: "Global Supplies GmbH",
|
|
171
|
+
accountNumber: null,
|
|
172
|
+
routingNumber: null,
|
|
173
|
+
iban: "DE89370400440532013000",
|
|
174
|
+
swiftBic: "DEUTDEDB",
|
|
175
|
+
currencyId: "currency-eur",
|
|
176
|
+
isDefault: false,
|
|
177
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
178
|
+
updatedAt: null,
|
|
179
|
+
} as const satisfies PartnerBankAccount<Schema>;
|
|
180
|
+
|
|
181
|
+
// PartnerIdentification fixtures
|
|
182
|
+
export const baseTaxIdIdentification = {
|
|
183
|
+
id: "ident-1",
|
|
184
|
+
partnerId: "partner-2",
|
|
185
|
+
type: "TAX_ID",
|
|
186
|
+
value: "12-3456789",
|
|
187
|
+
issuingCountry: "US",
|
|
188
|
+
validFrom: null,
|
|
189
|
+
validTo: null,
|
|
190
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
191
|
+
updatedAt: null,
|
|
192
|
+
} as const satisfies PartnerIdentification<Schema>;
|
|
193
|
+
|
|
194
|
+
export const baseVatIdentification = {
|
|
195
|
+
id: "ident-2",
|
|
196
|
+
partnerId: "partner-2",
|
|
197
|
+
type: "VAT",
|
|
198
|
+
value: "DE123456789",
|
|
199
|
+
issuingCountry: "DE",
|
|
200
|
+
validFrom: new Date("2024-01-01"),
|
|
201
|
+
validTo: new Date("2025-12-31"),
|
|
202
|
+
createdAt: new Date("2024-01-01T00:00:00.000Z"),
|
|
203
|
+
updatedAt: null,
|
|
204
|
+
} as const satisfies PartnerIdentification<Schema>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# README
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The Chart of Accounts (CoA) Management module manages the master data for an organization's financial account structure. It provides a CoA container entity scoped per company (legal entity), GL accounts classified by standard accounting types (ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE) with operational classifications (REGULAR, RECEIVABLE, PAYABLE, BANK_CASH, FIXED_ASSET, RETAINED_EARNINGS, NON_POSTING), hierarchical account groups as structural metadata, and a lifecycle state machine (DRAFT → ACTIVE → ARCHIVED for the CoA container; DRAFT → ACTIVE ↔ INACTIVE for individual GL accounts) that controls when accounts can receive postings.
|
|
6
|
+
|
|
7
|
+
The CoA is the foundational accounting master data that all downstream financial modules reference. Journal entries in the general ledger post to accounts defined here; accounts payable and receivable reference GL control accounts identified by their operational classification; downstream modules consume the account group hierarchy for balance aggregation and reporting. The module owns the account definitions and structural hierarchy but does not own transactional posting, balance computation, or reporting aggregation — those responsibilities belong to separate general-ledger and reporting modules.
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
|
|
11
|
+
- **[Chart of Accounts Setup](docs/features/chart-of-accounts-setup.md)**: Creation and management of CoA containers scoped per company. Each CoA has a name, description, and lifecycle status (DRAFT → ACTIVE → ARCHIVED). The CoA inherits its base currency from the parent company (owned by the organization module). A company has one active CoA at a time, serving as the single authoritative account structure
|
|
12
|
+
- **[Account Management](docs/features/account-management.md)**: CRUD operations for GL accounts within a CoA. Each account carries a structured code, name, account type (ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE), operational classification (REGULAR, RECEIVABLE, PAYABLE, BANK_CASH, FIXED_ASSET, RETAINED_EARNINGS, NON_POSTING), optional currency restriction, reconciliation flag, default tax code, and tags for cross-cutting categorization
|
|
13
|
+
- **[Account Group & Hierarchy](docs/features/account-group-hierarchy.md)**: Organization of accounts into named groups with hierarchical nesting. Groups define logical categories (e.g., "Current Assets", "Operating Expenses") and can control account numbering ranges. A single operational tree structure per CoA provides structural metadata that downstream modules consume for balance aggregation and reporting
|
|
14
|
+
- **[Account Lifecycle](docs/features/account-lifecycle.md)**: Status management for GL accounts through a state machine (DRAFT → ACTIVE ↔ INACTIVE). Controls when accounts can receive postings, includes successor account mapping for deprecated accounts, and exposes a pre-deactivation hook for balance verification by the general-ledger module
|
|
15
|
+
|
|
16
|
+
## Module Scope
|
|
17
|
+
|
|
18
|
+
### In Scope
|
|
19
|
+
|
|
20
|
+
- Chart of Accounts container management (create, update, archive) scoped per company
|
|
21
|
+
- GL account master data management (create, update, deactivate) with structured account codes
|
|
22
|
+
- Account type classification (ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE) with operational classifications (REGULAR, RECEIVABLE, PAYABLE, BANK_CASH, FIXED_ASSET, RETAINED_EARNINGS, NON_POSTING)
|
|
23
|
+
- Account group management with hierarchical nesting as structural metadata for downstream consumption
|
|
24
|
+
- Account lifecycle state machine (DRAFT → ACTIVE ↔ INACTIVE) with pre-deactivation hook for external balance checks
|
|
25
|
+
- Successor account mapping for deprecated accounts
|
|
26
|
+
- Account currency restriction (optional per-account currency assignment, referencing primitives module)
|
|
27
|
+
- Reconciliation flag for bank, receivable, and payable accounts
|
|
28
|
+
- Tag-based categorization for cross-cutting account filtering
|
|
29
|
+
|
|
30
|
+
### Out of Scope
|
|
31
|
+
|
|
32
|
+
- Journal entries and posting rules (general-ledger module)
|
|
33
|
+
- Trial balance and balance aggregation (general-ledger module)
|
|
34
|
+
- Fiscal calendar — fiscal years, periods, cutoff dates (accounting module)
|
|
35
|
+
- Cost centers and profit centers (management-accounting module)
|
|
36
|
+
- Business units and divisions for financial reporting (management-accounting module)
|
|
37
|
+
- Multi-segment account structures — Oracle-style Key Accounting Flexfield (future enhancement)
|
|
38
|
+
- Cross-validation rules for segment combinations (future enhancement)
|
|
39
|
+
- Fiscal localization packages — country-specific CoA templates (application layer)
|
|
40
|
+
- Multi-book accounting — parallel books under different GAAP (general-ledger module)
|
|
41
|
+
- Consolidation mapping — subsidiary to group CoA mapping (consolidation module)
|
|
42
|
+
- Financial statement version management (reporting module)
|
|
43
|
+
- Bulk import/export of accounts (application-layer tooling)
|
|
44
|
+
|
|
45
|
+
### Scope Decision Rationale
|
|
46
|
+
|
|
47
|
+
CoA Management is scoped to **accounting master data** — the "what accounts exist and how they are structured" foundation. It owns the account definitions, type classification, grouping hierarchy, and lifecycle but does not own transactional concerns like journal entries, balance computation, or period-end close. This separation follows the standard ERP pattern where the Chart of Accounts is a reference data module consumed by transactional modules (general-ledger, AP, AR, fixed-assets).
|
|
48
|
+
|
|
49
|
+
Fiscal calendar is excluded because it is a shared accounting concern needed by multiple modules (general-ledger, AP, AR, budgeting) and should not be owned by the account structure module. Fiscal calendar ownership belongs to the accounting module, consistent with the organization module's deferral. Similarly, cost centers and profit centers are management-accounting dimensions that cross-cut many modules — the organization module explicitly defers these to a future accounting module, and they are better served by a dedicated management-accounting module.
|
|
50
|
+
|
|
51
|
+
Multi-segment account structures (Oracle's Key Accounting Flexfield pattern) are deferred as a future enhancement. The initial design uses a single structured account code, which covers the majority of use cases. Segment-based design can be layered on later without breaking the core account model.
|
|
52
|
+
|
|
53
|
+
Country-specific CoA templates (fiscal localizations) are excluded because they are data packages rather than domain logic. They belong in the application layer where they can be installed as configuration, not in the core module.
|
|
54
|
+
|
|
55
|
+
## Module Dependencies
|
|
56
|
+
|
|
57
|
+
- [organization](../organization/README.md) — Company reference for CoA and account scoping (each CoA belongs to a company); base currency is inherited from the company
|
|
58
|
+
- [primitives](../primitives/README.md) — Currency definitions for per-account currency restriction
|
|
59
|
+
- [audit](../audit/README.md) — Audit trail for account master data changes (account creation, modification, status transitions)
|
|
60
|
+
- **general-ledger** (future integration) — Reads successor account mappings to redirect postings; provides balance-check hook to block account deactivation when open balances exist; determines whether an account has posted transactions
|
|
61
|
+
- **tax-configuration** (future integration) — Will own the tax code catalog and validate default tax code references stored on accounts. Migration contract: when `tax-configuration` is implemented, this module will add a dependency and enforce referential integrity on the `defaultTaxCode` field. Until then, tax codes are stored as free-text identifiers with no external validation
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @generated — do not edit
|
|
2
|
+
import { permissions } from "../lib/permissions.generated";
|
|
3
|
+
import { run } from "./activateAccount";
|
|
4
|
+
import { defineCommand } from "@tailor-platform/erp-kit/module";
|
|
5
|
+
|
|
6
|
+
export const activateAccount = defineCommand(permissions.activateAccount, run);
|