@tailor-platform/erp-kit 0.3.0 → 0.4.0
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 +21 -0
- package/README.md +35 -7
- package/dist/cli.mjs +779 -268
- package/package.json +5 -4
- package/skills/erp-kit-app-1-requirements/SKILL.md +8 -9
- 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-3-plan/SKILL.md +27 -27
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +21 -17
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +15 -1
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +8 -2
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +9 -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 +5 -0
- package/skills/erp-kit-app-6-impl-frontend/references/pages.md +16 -46
- package/skills/erp-kit-app-7-impl-review/SKILL.md +13 -11
- 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 +21 -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 +21 -5
- 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/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 -1
- package/src/generator/generate-code.test.ts +33 -6
- 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/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 +28 -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 +36 -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 +42 -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 +164 -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 +42 -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/.gitkeep +0 -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 +83 -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/errors.ts +2 -0
- package/src/modules/business-partner/lib/permissions.generated.ts +30 -0
- package/src/modules/business-partner/lib/types.ts +53 -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/errors.ts +0 -0
- package/src/modules/coa-management/lib/permissions.generated.ts +20 -0
- package/src/modules/coa-management/lib/types.ts +22 -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/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/errors.ts +1 -0
- package/src/modules/organization/lib/permissions.generated.ts +19 -0
- package/src/modules/organization/lib/types.ts +16 -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/setBaseCurrency.test.ts +8 -64
- package/src/modules/primitives/command/setBaseCurrency.ts +6 -64
- 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 +5 -0
- package/src/modules/product-management/README.md +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/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/src/commands/module/list.test.ts +0 -57
- package/src/commands/module/list.ts +0 -64
- /package/src/modules/{accounting → audit/db}/.gitkeep +0 -0
- /package/src/modules/audit/{.gitkeep → executor/.gitkeep} +0 -0
- /package/src/modules/{coa-management/.gitkeep → audit/lib/errors.ts} +0 -0
- /package/src/modules/{supplier-management → business-partner}/.gitkeep +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {
|
|
2
|
+
db,
|
|
3
|
+
type TailorAnyDBField,
|
|
4
|
+
unsafeAllowAllGqlPermission,
|
|
5
|
+
unsafeAllowAllTypePermission,
|
|
6
|
+
} from "@tailor-platform/sdk";
|
|
7
|
+
import { company } from "./company";
|
|
8
|
+
|
|
9
|
+
export interface CreateSiteTypeParams<F extends Record<string, TailorAnyDBField>> {
|
|
10
|
+
fields?: F;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function createSiteType<const F extends Record<string, TailorAnyDBField>>(
|
|
14
|
+
params: CreateSiteTypeParams<F>,
|
|
15
|
+
) {
|
|
16
|
+
return db
|
|
17
|
+
.type("Site", {
|
|
18
|
+
name: db.string().description("Site display name"),
|
|
19
|
+
type: db
|
|
20
|
+
.string()
|
|
21
|
+
.description("Site type: OFFICE, WAREHOUSE, STORE, FACTORY, DISTRIBUTION_CENTER"),
|
|
22
|
+
companyId: db
|
|
23
|
+
.uuid()
|
|
24
|
+
.relation({
|
|
25
|
+
type: "n-1",
|
|
26
|
+
toward: { type: company },
|
|
27
|
+
backward: "sites",
|
|
28
|
+
})
|
|
29
|
+
.description("Foreign key to Company"),
|
|
30
|
+
street: db.string().description("Site address street"),
|
|
31
|
+
city: db.string().description("Site address city"),
|
|
32
|
+
state: db.string({ optional: true }).description("Site address state/province"),
|
|
33
|
+
postalCode: db.string().description("Site address postal code"),
|
|
34
|
+
country: db.string().description("Site address country code"),
|
|
35
|
+
timezone: db.string().description("IANA timezone identifier"),
|
|
36
|
+
status: db.string().description("Site lifecycle status: ACTIVE, INACTIVE"),
|
|
37
|
+
...((params.fields ?? {}) as F),
|
|
38
|
+
...db.fields.timestamps(),
|
|
39
|
+
})
|
|
40
|
+
.permission(unsafeAllowAllTypePermission)
|
|
41
|
+
.gqlPermission(unsafeAllowAllGqlPermission);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const site = createSiteType({});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# ActivateCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ActivateCompany transitions a company from DRAFT to ACTIVE status, making it available for transactional modules to reference. All required fields must be configured before activation: legal name, base currency, and registered address.
|
|
6
|
+
|
|
7
|
+
This command supports the go-live workflow where companies are fully configured before becoming operational.
|
|
8
|
+
|
|
9
|
+
## Business Rules
|
|
10
|
+
|
|
11
|
+
- Company must exist
|
|
12
|
+
- Company must be in DRAFT status
|
|
13
|
+
- Legal name must be non-empty
|
|
14
|
+
- Base currency must be assigned and reference a valid active Currency
|
|
15
|
+
- Registered address fields (street, city, postalCode, country) must be populated; state/province is optional
|
|
16
|
+
- After activation, base currency becomes immutable
|
|
17
|
+
|
|
18
|
+
## Process Flow
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Receive activate request] --> B{Company exists?}
|
|
23
|
+
B -->|No| C[Return error: COMPANY_NOT_FOUND]
|
|
24
|
+
B -->|Yes| D{Company in DRAFT?}
|
|
25
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
26
|
+
D -->|Yes| F{Legal name set?}
|
|
27
|
+
F -->|No| G[Return error: MISSING_REQUIRED_FIELDS]
|
|
28
|
+
F -->|Yes| H{Base currency assigned?}
|
|
29
|
+
H -->|No| G
|
|
30
|
+
H -->|Yes| I{Currency valid and active?}
|
|
31
|
+
I -->|No| L[Return error: INVALID_BASE_CURRENCY]
|
|
32
|
+
I -->|Yes| J{Address complete?}
|
|
33
|
+
J -->|No| G
|
|
34
|
+
J -->|Yes| K[Set status: ACTIVE]
|
|
35
|
+
K --> M[Return activated company]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## External Dependencies
|
|
39
|
+
|
|
40
|
+
- **primitives module — Currency**: The referenced base currency must exist and be in active status in the primitives module's Currency entity
|
|
41
|
+
|
|
42
|
+
## Error Scenarios
|
|
43
|
+
|
|
44
|
+
- **COMPANY_NOT_FOUND**: Specified company ID does not exist
|
|
45
|
+
- **INVALID_STATE**: Company is not in DRAFT status
|
|
46
|
+
- **MISSING_REQUIRED_FIELDS**: One or more required fields (legal name, base currency, address) are not set
|
|
47
|
+
- **INVALID_BASE_CURRENCY**: The assigned base currency does not exist or is not in active status in the primitives module
|
|
48
|
+
|
|
49
|
+
## Test Cases
|
|
50
|
+
|
|
51
|
+
- activates DRAFT company with all required fields
|
|
52
|
+
- throws when company does not exist
|
|
53
|
+
- throws when company is already ACTIVE
|
|
54
|
+
- throws when company is INACTIVE
|
|
55
|
+
- throws when legal name is missing
|
|
56
|
+
- throws when base currency is not assigned
|
|
57
|
+
- throws when base currency references a non-existent Currency
|
|
58
|
+
- throws when base currency references an inactive Currency
|
|
59
|
+
- throws when address street is missing
|
|
60
|
+
- throws when address city is missing
|
|
61
|
+
- throws when address postalCode is missing
|
|
62
|
+
- throws when address country is missing
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# CreateCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
CreateCompany establishes a new legal entity in the system in DRAFT status. The command accepts the company's legal name, and optionally tax identification number, registration number, base currency, and registered address fields. Companies are created in DRAFT to allow configuration and review before activation.
|
|
6
|
+
|
|
7
|
+
This command supports initial system setup and multi-company expansion scenarios.
|
|
8
|
+
|
|
9
|
+
## Business Rules
|
|
10
|
+
|
|
11
|
+
- Legal name is required and must be non-empty
|
|
12
|
+
- Company is always created in DRAFT status
|
|
13
|
+
- Base currency, if provided, must reference a valid active Currency from the primitives module
|
|
14
|
+
- Tax identification number and registration number are optional at creation
|
|
15
|
+
- Registered address fields are optional at creation (required before activation)
|
|
16
|
+
|
|
17
|
+
## Process Flow
|
|
18
|
+
|
|
19
|
+
```mermaid
|
|
20
|
+
flowchart TD
|
|
21
|
+
A[Receive create request] --> B{Validate legal name}
|
|
22
|
+
B -->|Empty| C[Return error: INVALID_LEGAL_NAME]
|
|
23
|
+
B -->|Valid| D{Base currency provided?}
|
|
24
|
+
D -->|Yes| E{Currency exists and active?}
|
|
25
|
+
E -->|No| F[Return error: CURRENCY_NOT_FOUND]
|
|
26
|
+
E -->|Yes| G[Create company record]
|
|
27
|
+
D -->|No| G
|
|
28
|
+
G --> H[Set status: DRAFT]
|
|
29
|
+
H --> I[Return created company]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## External Dependencies
|
|
33
|
+
|
|
34
|
+
- [primitives::getCurrency](../../../primitives/docs/queries/GetCurrency.md) - Validates that the referenced base currency exists and is active
|
|
35
|
+
|
|
36
|
+
## Error Scenarios
|
|
37
|
+
|
|
38
|
+
- **INVALID_LEGAL_NAME**: Legal name is empty or not provided
|
|
39
|
+
- **CURRENCY_NOT_FOUND**: Referenced base currency does not exist or is inactive
|
|
40
|
+
|
|
41
|
+
## Test Cases
|
|
42
|
+
|
|
43
|
+
- creates company in DRAFT status
|
|
44
|
+
- throws when legal name is empty
|
|
45
|
+
- throws when referenced currency does not exist
|
|
46
|
+
- throws when referenced currency is inactive
|
|
47
|
+
- creates company without base currency
|
|
48
|
+
- creates company with full address fields
|
|
49
|
+
- passes custom fields through to insert
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# CreateDepartment
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
CreateDepartment establishes a new department within a company in ACTIVE status. Each department has a unique code scoped to its company, a human-readable name, and an optional parent department reference for building organizational hierarchies.
|
|
6
|
+
|
|
7
|
+
This command supports initial organizational structure setup and ongoing expansion of department trees.
|
|
8
|
+
|
|
9
|
+
## Business Rules
|
|
10
|
+
|
|
11
|
+
- Department code is required and must be non-empty
|
|
12
|
+
- Department code must be unique within the same company
|
|
13
|
+
- Department code is immutable after creation
|
|
14
|
+
- Department name is required and must be non-empty
|
|
15
|
+
- Company must exist and be referenced by companyId
|
|
16
|
+
- Parent department, if provided, must exist and belong to the same company
|
|
17
|
+
- Department is always created in ACTIVE status
|
|
18
|
+
|
|
19
|
+
## Process Flow
|
|
20
|
+
|
|
21
|
+
```mermaid
|
|
22
|
+
flowchart TD
|
|
23
|
+
A[Receive create request] --> B{Validate code and name}
|
|
24
|
+
B -->|Invalid| C[Return error: INVALID_CODE or INVALID_NAME]
|
|
25
|
+
B -->|Valid| D{Company exists?}
|
|
26
|
+
D -->|No| E[Return error: COMPANY_NOT_FOUND]
|
|
27
|
+
D -->|Yes| F{Code unique in company?}
|
|
28
|
+
F -->|No| G[Return error: DUPLICATE_CODE]
|
|
29
|
+
F -->|Yes| H{Parent department provided?}
|
|
30
|
+
H -->|Yes| I{Parent exists in same company?}
|
|
31
|
+
I -->|No| J[Return error: PARENT_NOT_FOUND]
|
|
32
|
+
I -->|Yes| K[Create department record]
|
|
33
|
+
H -->|No| K
|
|
34
|
+
K --> L[Set status: ACTIVE]
|
|
35
|
+
L --> M[Return created department]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## External Dependencies
|
|
39
|
+
|
|
40
|
+
- None
|
|
41
|
+
|
|
42
|
+
## Error Scenarios
|
|
43
|
+
|
|
44
|
+
- **INVALID_CODE**: Department code is empty or not provided
|
|
45
|
+
- **INVALID_NAME**: Department name is empty or not provided
|
|
46
|
+
- **COMPANY_NOT_FOUND**: Referenced company does not exist
|
|
47
|
+
- **DUPLICATE_CODE**: Department with same code already exists in the same company
|
|
48
|
+
- **PARENT_NOT_FOUND**: Referenced parent department does not exist or belongs to a different company
|
|
49
|
+
|
|
50
|
+
## Test Cases
|
|
51
|
+
|
|
52
|
+
- creates top-level department in ACTIVE status
|
|
53
|
+
- creates department with parent department
|
|
54
|
+
- throws when code is empty
|
|
55
|
+
- throws when code is whitespace-only
|
|
56
|
+
- throws when name is empty
|
|
57
|
+
- throws when name is whitespace-only
|
|
58
|
+
- throws when company does not exist
|
|
59
|
+
- throws when code already exists in same company
|
|
60
|
+
- allows same code in different companies
|
|
61
|
+
- throws when parent department does not exist
|
|
62
|
+
- throws when parent department belongs to different company
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# CreateSite
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
CreateSite establishes a new physical facility for a company in ACTIVE status. Each site has a name, type classification, structured address, country, and timezone. Sites are created ready for operational use with no DRAFT state.
|
|
6
|
+
|
|
7
|
+
This command supports facility registration for warehouses, offices, stores, factories, and distribution centers.
|
|
8
|
+
|
|
9
|
+
## Business Rules
|
|
10
|
+
|
|
11
|
+
- Site name is required and must be non-empty
|
|
12
|
+
- Site name must be unique within the same company
|
|
13
|
+
- Site type is required and must be one of: OFFICE, WAREHOUSE, STORE, FACTORY, DISTRIBUTION_CENTER
|
|
14
|
+
- companyId is required and references an existing ACTIVE company
|
|
15
|
+
- Structured address fields (street, city, postalCode, country) are required
|
|
16
|
+
- State/province is optional
|
|
17
|
+
- Country must be a valid country code
|
|
18
|
+
- Timezone is required and must be a valid IANA timezone identifier
|
|
19
|
+
- Site is always created in ACTIVE status
|
|
20
|
+
- companyId is immutable after creation
|
|
21
|
+
|
|
22
|
+
## Process Flow
|
|
23
|
+
|
|
24
|
+
```mermaid
|
|
25
|
+
flowchart TD
|
|
26
|
+
A[Receive create request] --> B{Validate name and type}
|
|
27
|
+
B -->|Invalid| C[Return error: INVALID_NAME or INVALID_TYPE]
|
|
28
|
+
B -->|Valid| D{Company exists and ACTIVE?}
|
|
29
|
+
D -->|No| E[Return error: COMPANY_NOT_FOUND or COMPANY_INACTIVE]
|
|
30
|
+
D -->|Yes| F{Name unique in company?}
|
|
31
|
+
F -->|No| G[Return error: DUPLICATE_NAME]
|
|
32
|
+
F -->|Yes| H{Address fields complete?}
|
|
33
|
+
H -->|No| I[Return error: MISSING_REQUIRED_FIELDS]
|
|
34
|
+
H -->|Yes| J{Valid country code?}
|
|
35
|
+
J -->|No| K[Return error: INVALID_COUNTRY]
|
|
36
|
+
J -->|Yes| L{Valid timezone?}
|
|
37
|
+
L -->|No| M[Return error: INVALID_TIMEZONE]
|
|
38
|
+
L -->|Yes| N[Create site record]
|
|
39
|
+
N --> O[Set status: ACTIVE]
|
|
40
|
+
O --> P[Return created site]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## External Dependencies
|
|
44
|
+
|
|
45
|
+
- None
|
|
46
|
+
|
|
47
|
+
## Error Scenarios
|
|
48
|
+
|
|
49
|
+
- **INVALID_NAME**: Site name is empty or not provided
|
|
50
|
+
- **INVALID_TYPE**: Site type is not one of the allowed classifications
|
|
51
|
+
- **COMPANY_NOT_FOUND**: Referenced company does not exist
|
|
52
|
+
- **COMPANY_INACTIVE**: Referenced company is not in ACTIVE status
|
|
53
|
+
- **DUPLICATE_NAME**: Site with same name already exists in the same company
|
|
54
|
+
- **MISSING_REQUIRED_FIELDS**: One or more required address fields are missing
|
|
55
|
+
- **INVALID_COUNTRY**: Country code is not a valid country code
|
|
56
|
+
- **INVALID_TIMEZONE**: Timezone is not a valid IANA timezone identifier
|
|
57
|
+
|
|
58
|
+
## Test Cases
|
|
59
|
+
|
|
60
|
+
- creates site in ACTIVE status
|
|
61
|
+
- throws when name is empty
|
|
62
|
+
- throws when type is invalid
|
|
63
|
+
- throws when company does not exist
|
|
64
|
+
- throws when company is not ACTIVE
|
|
65
|
+
- throws when site name already exists in same company
|
|
66
|
+
- allows same site name in different companies
|
|
67
|
+
- throws when address street is missing
|
|
68
|
+
- throws when address city is missing
|
|
69
|
+
- throws when address postalCode is missing
|
|
70
|
+
- throws when address country is missing
|
|
71
|
+
- creates site without state/province
|
|
72
|
+
- creates site with state/province
|
|
73
|
+
- throws when country code is invalid
|
|
74
|
+
- throws when timezone is invalid
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# DeactivateCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
DeactivateCompany transitions a company from ACTIVE to INACTIVE status. Inactive companies stop accepting new transactions while preserving all historical data. This supports scenarios where a legal entity ceases operations but records must be retained for audit and compliance.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Company must exist
|
|
10
|
+
- Company must be in ACTIVE status
|
|
11
|
+
- Deactivation does not affect existing historical transactions
|
|
12
|
+
- The company record is preserved (not deleted)
|
|
13
|
+
|
|
14
|
+
## Process Flow
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart TD
|
|
18
|
+
A[Receive deactivate request] --> B{Company exists?}
|
|
19
|
+
B -->|No| C[Return error: COMPANY_NOT_FOUND]
|
|
20
|
+
B -->|Yes| D{Company in ACTIVE?}
|
|
21
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
22
|
+
D -->|Yes| F[Set status: INACTIVE]
|
|
23
|
+
F --> G[Return deactivated company]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## External Dependencies
|
|
27
|
+
|
|
28
|
+
- None
|
|
29
|
+
|
|
30
|
+
## Error Scenarios
|
|
31
|
+
|
|
32
|
+
- **COMPANY_NOT_FOUND**: Specified company ID does not exist
|
|
33
|
+
- **INVALID_STATE**: Company is not in ACTIVE status
|
|
34
|
+
|
|
35
|
+
## Test Cases
|
|
36
|
+
|
|
37
|
+
- deactivates ACTIVE company
|
|
38
|
+
- throws when company does not exist
|
|
39
|
+
- throws when company is in DRAFT status
|
|
40
|
+
- throws when company is already INACTIVE
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# DeactivateDepartment
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
DeactivateDepartment transitions a department from ACTIVE to INACTIVE status. A department cannot be deactivated while it has active sub-departments. Historical references to the department remain intact.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Department must exist
|
|
10
|
+
- Department must be in ACTIVE status
|
|
11
|
+
- Department must not have any active sub-departments
|
|
12
|
+
- Deactivation does not affect historical records referencing this department
|
|
13
|
+
|
|
14
|
+
## Process Flow
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart TD
|
|
18
|
+
A[Receive deactivate request] --> B{Department exists?}
|
|
19
|
+
B -->|No| C[Return error: DEPARTMENT_NOT_FOUND]
|
|
20
|
+
B -->|Yes| D{Department in ACTIVE?}
|
|
21
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
22
|
+
D -->|Yes| F{Has active sub-departments?}
|
|
23
|
+
F -->|Yes| G[Return error: HAS_ACTIVE_CHILDREN]
|
|
24
|
+
F -->|No| H[Set status: INACTIVE]
|
|
25
|
+
H --> I[Return deactivated department]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## External Dependencies
|
|
29
|
+
|
|
30
|
+
- None
|
|
31
|
+
|
|
32
|
+
## Error Scenarios
|
|
33
|
+
|
|
34
|
+
- **DEPARTMENT_NOT_FOUND**: Specified department ID does not exist
|
|
35
|
+
- **INVALID_STATE**: Department is not in ACTIVE status
|
|
36
|
+
- **HAS_ACTIVE_CHILDREN**: Department has one or more active sub-departments
|
|
37
|
+
|
|
38
|
+
## Test Cases
|
|
39
|
+
|
|
40
|
+
- deactivates ACTIVE department with no sub-departments
|
|
41
|
+
- deactivates ACTIVE department with only INACTIVE sub-departments
|
|
42
|
+
- throws when department does not exist
|
|
43
|
+
- throws when department is already INACTIVE
|
|
44
|
+
- throws when department has active sub-departments
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# DeactivateSite
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
DeactivateSite transitions a site from ACTIVE to INACTIVE status. Inactive sites prevent new inventory movements and order references while preserving all historical data. This supports facility closure scenarios.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Site must exist
|
|
10
|
+
- Site must be in ACTIVE status
|
|
11
|
+
- Deactivation does not delete or modify historical transactions referencing the site
|
|
12
|
+
|
|
13
|
+
## Process Flow
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart TD
|
|
17
|
+
A[Receive deactivate request] --> B{Site exists?}
|
|
18
|
+
B -->|No| C[Return error: SITE_NOT_FOUND]
|
|
19
|
+
B -->|Yes| D{Site in ACTIVE?}
|
|
20
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
21
|
+
D -->|Yes| F[Set status: INACTIVE]
|
|
22
|
+
F --> G[Return deactivated site]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## External Dependencies
|
|
26
|
+
|
|
27
|
+
- None
|
|
28
|
+
|
|
29
|
+
## Error Scenarios
|
|
30
|
+
|
|
31
|
+
- **SITE_NOT_FOUND**: Specified site ID does not exist
|
|
32
|
+
- **INVALID_STATE**: Site is not in ACTIVE status
|
|
33
|
+
|
|
34
|
+
## Test Cases
|
|
35
|
+
|
|
36
|
+
- deactivates ACTIVE site
|
|
37
|
+
- throws when site does not exist
|
|
38
|
+
- throws when site is already INACTIVE
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# DeleteCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
DeleteCompany permanently removes a company record from the system. Only companies in DRAFT status can be deleted — ACTIVE and INACTIVE companies are preserved for audit and legal compliance. This supports cleanup of incomplete company records that are no longer needed.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Company must exist
|
|
10
|
+
- Company must be in DRAFT status
|
|
11
|
+
- ACTIVE and INACTIVE companies cannot be deleted
|
|
12
|
+
- Company must not have any existing departments
|
|
13
|
+
- Company must not have any existing sites
|
|
14
|
+
- Deletion is permanent (hard delete)
|
|
15
|
+
|
|
16
|
+
## Process Flow
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
A[Receive delete request] --> B{Company exists?}
|
|
21
|
+
B -->|No| C[Return error: COMPANY_NOT_FOUND]
|
|
22
|
+
B -->|Yes| D{Company in DRAFT?}
|
|
23
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
24
|
+
D -->|Yes| F{Has departments?}
|
|
25
|
+
F -->|Yes| G[Return error: HAS_DEPARTMENTS]
|
|
26
|
+
F -->|No| H{Has sites?}
|
|
27
|
+
H -->|Yes| I[Return error: HAS_SITES]
|
|
28
|
+
H -->|No| J[Delete company record]
|
|
29
|
+
J --> K[Return success]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## External Dependencies
|
|
33
|
+
|
|
34
|
+
- None
|
|
35
|
+
|
|
36
|
+
## Error Scenarios
|
|
37
|
+
|
|
38
|
+
- **COMPANY_NOT_FOUND**: Specified company ID does not exist
|
|
39
|
+
- **INVALID_STATE**: Company is not in DRAFT status (ACTIVE or INACTIVE companies cannot be deleted)
|
|
40
|
+
- **HAS_DEPARTMENTS**: Company has existing departments that must be removed first
|
|
41
|
+
- **HAS_SITES**: Company has existing sites that must be removed first
|
|
42
|
+
|
|
43
|
+
## Test Cases
|
|
44
|
+
|
|
45
|
+
- deletes DRAFT company
|
|
46
|
+
- throws when company does not exist
|
|
47
|
+
- throws when company is ACTIVE
|
|
48
|
+
- throws when company is INACTIVE
|
|
49
|
+
- throws when company has existing departments
|
|
50
|
+
- throws when company has existing sites
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# ReactivateCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ReactivateCompany transitions a company from INACTIVE back to ACTIVE status, allowing new transactions to be recorded against it. This supports scenarios where a previously inactive legal entity resumes operations.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Company must exist
|
|
10
|
+
- Company must be in INACTIVE status
|
|
11
|
+
- Reactivation restores the company to ACTIVE, enabling new transactional references
|
|
12
|
+
|
|
13
|
+
## Process Flow
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart TD
|
|
17
|
+
A[Receive reactivate request] --> B{Company exists?}
|
|
18
|
+
B -->|No| C[Return error: COMPANY_NOT_FOUND]
|
|
19
|
+
B -->|Yes| D{Company in INACTIVE?}
|
|
20
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
21
|
+
D -->|Yes| F[Set status: ACTIVE]
|
|
22
|
+
F --> G[Return reactivated company]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## External Dependencies
|
|
26
|
+
|
|
27
|
+
- None
|
|
28
|
+
|
|
29
|
+
## Error Scenarios
|
|
30
|
+
|
|
31
|
+
- **COMPANY_NOT_FOUND**: Specified company ID does not exist
|
|
32
|
+
- **INVALID_STATE**: Company is not in INACTIVE status
|
|
33
|
+
|
|
34
|
+
## Test Cases
|
|
35
|
+
|
|
36
|
+
- reactivates INACTIVE company
|
|
37
|
+
- throws when company does not exist
|
|
38
|
+
- throws when company is in DRAFT status
|
|
39
|
+
- throws when company is already ACTIVE
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# ReactivateDepartment
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ReactivateDepartment transitions a department from INACTIVE back to ACTIVE status, restoring it for new operational assignments. This supports scenarios where a previously deactivated department is needed again.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Department must exist
|
|
10
|
+
- Department must be in INACTIVE status
|
|
11
|
+
|
|
12
|
+
## Process Flow
|
|
13
|
+
|
|
14
|
+
```mermaid
|
|
15
|
+
flowchart TD
|
|
16
|
+
A[Receive reactivate request] --> B{Department exists?}
|
|
17
|
+
B -->|No| C[Return error: DEPARTMENT_NOT_FOUND]
|
|
18
|
+
B -->|Yes| D{Department in INACTIVE?}
|
|
19
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
20
|
+
D -->|Yes| F[Set status: ACTIVE]
|
|
21
|
+
F --> G[Return reactivated department]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## External Dependencies
|
|
25
|
+
|
|
26
|
+
- None
|
|
27
|
+
|
|
28
|
+
## Error Scenarios
|
|
29
|
+
|
|
30
|
+
- **DEPARTMENT_NOT_FOUND**: Specified department ID does not exist
|
|
31
|
+
- **INVALID_STATE**: Department is not in INACTIVE status
|
|
32
|
+
|
|
33
|
+
## Test Cases
|
|
34
|
+
|
|
35
|
+
- reactivates INACTIVE department
|
|
36
|
+
- throws when department does not exist
|
|
37
|
+
- throws when department is already ACTIVE
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# ReactivateSite
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ReactivateSite transitions a site from INACTIVE back to ACTIVE status, making it available again for inventory and shipping operations. This supports facility reopening scenarios such as seasonal demand.
|
|
6
|
+
|
|
7
|
+
## Business Rules
|
|
8
|
+
|
|
9
|
+
- Site must exist
|
|
10
|
+
- Site must be in INACTIVE status
|
|
11
|
+
|
|
12
|
+
## Process Flow
|
|
13
|
+
|
|
14
|
+
```mermaid
|
|
15
|
+
flowchart TD
|
|
16
|
+
A[Receive reactivate request] --> B{Site exists?}
|
|
17
|
+
B -->|No| C[Return error: SITE_NOT_FOUND]
|
|
18
|
+
B -->|Yes| D{Site in INACTIVE?}
|
|
19
|
+
D -->|No| E[Return error: INVALID_STATE]
|
|
20
|
+
D -->|Yes| F[Set status: ACTIVE]
|
|
21
|
+
F --> G[Return reactivated site]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## External Dependencies
|
|
25
|
+
|
|
26
|
+
- None
|
|
27
|
+
|
|
28
|
+
## Error Scenarios
|
|
29
|
+
|
|
30
|
+
- **SITE_NOT_FOUND**: Specified site ID does not exist
|
|
31
|
+
- **INVALID_STATE**: Site is not in INACTIVE status
|
|
32
|
+
|
|
33
|
+
## Test Cases
|
|
34
|
+
|
|
35
|
+
- reactivates INACTIVE site
|
|
36
|
+
- throws when site does not exist
|
|
37
|
+
- throws when site is already ACTIVE
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# UpdateCompany
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
UpdateCompany modifies fields on an existing company. Updatable fields include legal name, tax identification number, registration number, registered address fields, and base currency (only while in DRAFT status). Base currency becomes immutable after activation.
|
|
6
|
+
|
|
7
|
+
This command supports company configuration during DRAFT setup and ongoing maintenance of company details.
|
|
8
|
+
|
|
9
|
+
## Business Rules
|
|
10
|
+
|
|
11
|
+
- Company must exist
|
|
12
|
+
- Legal name, if provided, must be non-empty
|
|
13
|
+
- Base currency can only be changed while company is in DRAFT status
|
|
14
|
+
- Base currency, if provided, must reference a valid active Currency from the primitives module
|
|
15
|
+
- Address fields can be updated in any status (DRAFT, ACTIVE, INACTIVE)
|
|
16
|
+
- Tax ID and registration number can be updated in any status
|
|
17
|
+
|
|
18
|
+
## Process Flow
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Receive update request] --> B{Company exists?}
|
|
23
|
+
B -->|No| C[Return error: COMPANY_NOT_FOUND]
|
|
24
|
+
B -->|Yes| D{Legal name provided and empty?}
|
|
25
|
+
D -->|Yes| E[Return error: INVALID_LEGAL_NAME]
|
|
26
|
+
D -->|No| F{Base currency change requested?}
|
|
27
|
+
F -->|Yes| G{Company in DRAFT?}
|
|
28
|
+
G -->|No| H[Return error: CURRENCY_IMMUTABLE]
|
|
29
|
+
G -->|Yes| I{Currency exists and active?}
|
|
30
|
+
I -->|No| J[Return error: CURRENCY_NOT_FOUND]
|
|
31
|
+
I -->|Yes| K[Update company record]
|
|
32
|
+
F -->|No| K
|
|
33
|
+
K --> L[Return updated company]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## External Dependencies
|
|
37
|
+
|
|
38
|
+
- [primitives::getCurrency](../../../primitives/docs/queries/GetCurrency.md) - Validates that the referenced base currency exists and is active
|
|
39
|
+
|
|
40
|
+
## Error Scenarios
|
|
41
|
+
|
|
42
|
+
- **COMPANY_NOT_FOUND**: Specified company ID does not exist
|
|
43
|
+
- **INVALID_LEGAL_NAME**: Legal name is empty
|
|
44
|
+
- **CURRENCY_IMMUTABLE**: Attempted to change base currency on a non-DRAFT company
|
|
45
|
+
- **CURRENCY_NOT_FOUND**: Referenced base currency does not exist or is inactive
|
|
46
|
+
|
|
47
|
+
## Test Cases
|
|
48
|
+
|
|
49
|
+
- updates legal name on DRAFT company
|
|
50
|
+
- updates address fields on ACTIVE company
|
|
51
|
+
- updates tax ID and registration number
|
|
52
|
+
- throws when company does not exist
|
|
53
|
+
- throws when legal name is empty
|
|
54
|
+
- throws when changing base currency on ACTIVE company
|
|
55
|
+
- throws when changing base currency on INACTIVE company
|
|
56
|
+
- throws when new base currency does not exist
|
|
57
|
+
- throws when new base currency is inactive
|
|
58
|
+
- updates base currency on DRAFT company
|