@tailor-platform/erp-kit 0.4.0 → 0.5.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 +36 -0
- package/README.md +12 -12
- package/dist/cli.mjs +476 -29
- package/package.json +2 -11
- package/skills/erp-kit-app-1-requirements/SKILL.md +31 -3
- package/skills/{erp-kit-app-3-plan → erp-kit-app-1-requirements}/references/story-extraction.md +3 -9
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +31 -7
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +1 -1
- package/skills/erp-kit-app-2-requirements-review/references/story-quality-check.md +67 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +33 -32
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +10 -5
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +5 -3
- package/skills/erp-kit-app-4-plan-review/SKILL.md +19 -14
- package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +3 -0
- package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +21 -3
- package/skills/erp-kit-app-5-impl-backend/SKILL.md +22 -3
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +19 -4
- package/skills/erp-kit-app-7-impl-review/SKILL.md +19 -15
- package/skills/erp-kit-app-shared/references/resolver-classification.md +3 -0
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +17 -36
- package/skills/erp-kit-module-3-update-plan/SKILL.md +132 -0
- package/skills/erp-kit-module-3-update-plan/references/command-extraction.md +87 -0
- package/skills/erp-kit-module-3-update-plan/references/model-extraction.md +72 -0
- package/skills/erp-kit-module-3-update-plan/references/naming.md +73 -0
- package/skills/erp-kit-module-3-update-plan/references/query-extraction.md +59 -0
- package/skills/erp-kit-module-4-plan-review/SKILL.md +17 -76
- package/skills/erp-kit-module-5-impl/SKILL.md +1 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +42 -120
- package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +1 -1
- package/skills/erp-kit-module-6-impl-review/references/{error-implementation-parity.md → command-error-implementation-parity.md} +3 -3
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +1 -1
- package/skills/erp-kit-module-6-impl-review/references/query-doc-code-parity.md +110 -0
- package/skills/erp-kit-module-6-impl-review/references/query-doc-test-parity.md +108 -0
- package/skills/erp-kit-module-6-impl-review/references/query-error-implementation-parity.md +100 -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 +18 -3
- package/src/commands/check.test.ts +1 -1
- package/src/commands/doc/module.ts +2 -3
- package/src/commands/doc/modules.test.ts +0 -7
- package/src/commands/doc/modules.ts +1 -2
- package/src/commands/doc/search.ts +1 -2
- package/src/commands/init.ts +4 -0
- package/src/commands/lib/distribute.test.ts +32 -1
- package/src/commands/lib/distribute.ts +47 -5
- package/src/commands/lib/sync-check-source.test.ts +1 -1
- package/src/commands/update.test.ts +16 -0
- package/src/commands/update.ts +4 -1
- package/src/generator/generate-code-boilerplate.test.ts +0 -1
- package/src/generator/generate-code.test.ts +10 -6
- package/src/generator/generate-errors.ts +1 -1
- package/src/generator/generate-permissions.ts +1 -1
- package/src/generator/generate-seed.ts +69 -0
- package/src/generator/generate-shells.ts +2 -2
- package/src/generator/stub-templates.ts +5 -5
- package/src/module.ts +59 -0
- package/src/modules/audit/command/activateAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/activateAuditPolicy.test.ts +1 -1
- package/src/modules/audit/command/activateAuditPolicy.ts +1 -1
- package/src/modules/audit/command/createAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/createAuditPolicy.test.ts +1 -1
- package/src/modules/audit/command/createAuditPolicy.ts +1 -1
- package/src/modules/audit/command/deactivateAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/deactivateAuditPolicy.test.ts +2 -2
- package/src/modules/audit/command/deactivateAuditPolicy.ts +1 -1
- package/src/modules/audit/command/deleteAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/deleteAuditPolicy.test.ts +1 -1
- package/src/modules/audit/command/deleteAuditPolicy.ts +1 -1
- package/src/modules/audit/command/logAuditEvent.generated.ts +1 -1
- package/src/modules/audit/command/logAuditEvent.test.ts +1 -1
- package/src/modules/audit/command/logAuditEvent.ts +1 -1
- package/src/modules/audit/command/reactivateAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/reactivateAuditPolicy.test.ts +2 -2
- package/src/modules/audit/command/reactivateAuditPolicy.ts +1 -1
- package/src/modules/audit/command/registerAuditableEntity.generated.ts +1 -1
- package/src/modules/audit/command/registerAuditableEntity.test.ts +1 -1
- package/src/modules/audit/command/registerAuditableEntity.ts +1 -1
- package/src/modules/audit/command/replaceAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/replaceAuditPolicy.test.ts +1 -1
- package/src/modules/audit/command/replaceAuditPolicy.ts +1 -1
- package/src/modules/audit/command/updateAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/command/updateAuditPolicy.test.ts +1 -1
- package/src/modules/audit/command/updateAuditPolicy.ts +1 -1
- package/src/modules/audit/lib/errors.generated.ts +1 -1
- package/src/modules/audit/lib/permissions.generated.ts +1 -1
- package/src/modules/audit/lib/types.ts +6 -1
- package/src/modules/audit/permissions.ts +1 -1
- package/src/modules/audit/query/getAuditEntry.generated.ts +1 -1
- package/src/modules/audit/query/getAuditEntry.test.ts +2 -2
- package/src/modules/audit/query/getAuditEntry.ts +7 -1
- package/src/modules/audit/query/getAuditPolicy.generated.ts +1 -1
- package/src/modules/audit/query/getAuditPolicy.test.ts +2 -2
- package/src/modules/audit/query/getAuditPolicy.ts +7 -1
- package/src/modules/audit/query/getAuditSummary.generated.ts +1 -1
- package/src/modules/audit/query/getAuditSummary.test.ts +2 -2
- package/src/modules/audit/query/getAuditSummary.ts +7 -1
- package/src/modules/audit/query/getChangeDetails.generated.ts +1 -1
- package/src/modules/audit/query/getChangeDetails.test.ts +2 -2
- package/src/modules/audit/query/getChangeDetails.ts +7 -1
- package/src/modules/audit/query/listAuditPolicies.generated.ts +1 -1
- package/src/modules/audit/query/listAuditPolicies.test.ts +2 -2
- package/src/modules/audit/query/listAuditPolicies.ts +3 -3
- package/src/modules/audit/query/searchAuditEntries.generated.ts +1 -1
- package/src/modules/audit/query/searchAuditEntries.test.ts +2 -2
- package/src/modules/audit/query/searchAuditEntries.ts +7 -7
- package/src/modules/business-partner/README.md +2 -2
- package/src/modules/business-partner/command/activatePartner.generated.ts +1 -1
- package/src/modules/business-partner/command/activatePartner.ts +1 -1
- package/src/modules/business-partner/command/assignRoleToPartner.generated.ts +1 -1
- package/src/modules/business-partner/command/assignRoleToPartner.test.ts +1 -1
- package/src/modules/business-partner/command/assignRoleToPartner.ts +1 -1
- package/src/modules/business-partner/command/createContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/command/createContactPerson.ts +1 -1
- package/src/modules/business-partner/command/createPartner.generated.ts +1 -1
- package/src/modules/business-partner/command/createPartner.test.ts +1 -1
- package/src/modules/business-partner/command/createPartner.ts +3 -4
- package/src/modules/business-partner/command/createPartnerAddress.generated.ts +1 -1
- package/src/modules/business-partner/command/createPartnerAddress.ts +1 -1
- package/src/modules/business-partner/command/createPartnerBankAccount.generated.ts +1 -1
- package/src/modules/business-partner/command/createPartnerBankAccount.test.ts +1 -1
- package/src/modules/business-partner/command/createPartnerBankAccount.ts +1 -1
- package/src/modules/business-partner/command/createPartnerIdentification.generated.ts +1 -1
- package/src/modules/business-partner/command/createPartnerIdentification.test.ts +1 -1
- package/src/modules/business-partner/command/createPartnerIdentification.ts +1 -1
- package/src/modules/business-partner/command/deactivateContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/command/deactivateContactPerson.ts +1 -1
- package/src/modules/business-partner/command/deactivatePartner.generated.ts +1 -1
- package/src/modules/business-partner/command/deactivatePartner.ts +1 -1
- package/src/modules/business-partner/command/deleteContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/command/deleteContactPerson.ts +1 -1
- package/src/modules/business-partner/command/deletePartner.generated.ts +1 -1
- package/src/modules/business-partner/command/deletePartner.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerAddress.generated.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerAddress.test.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerAddress.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerBankAccount.generated.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerBankAccount.test.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerBankAccount.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerIdentification.generated.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerIdentification.test.ts +1 -1
- package/src/modules/business-partner/command/deletePartnerIdentification.ts +1 -1
- package/src/modules/business-partner/command/reactivateContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/command/reactivateContactPerson.ts +1 -1
- package/src/modules/business-partner/command/reactivatePartner.generated.ts +1 -1
- package/src/modules/business-partner/command/reactivatePartner.ts +1 -1
- package/src/modules/business-partner/command/removeRoleFromPartner.generated.ts +1 -1
- package/src/modules/business-partner/command/removeRoleFromPartner.test.ts +1 -1
- package/src/modules/business-partner/command/removeRoleFromPartner.ts +1 -1
- package/src/modules/business-partner/command/setDefaultPartnerAddress.generated.ts +1 -1
- package/src/modules/business-partner/command/setDefaultPartnerAddress.ts +1 -1
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.generated.ts +1 -1
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.test.ts +1 -1
- package/src/modules/business-partner/command/setDefaultPartnerBankAccount.ts +1 -1
- package/src/modules/business-partner/command/setPrimaryContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/command/setPrimaryContactPerson.ts +1 -1
- package/src/modules/business-partner/command/updateContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/command/updateContactPerson.ts +1 -1
- package/src/modules/business-partner/command/updatePartner.generated.ts +1 -1
- package/src/modules/business-partner/command/updatePartner.test.ts +1 -1
- package/src/modules/business-partner/command/updatePartner.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerAddress.generated.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerAddress.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerBankAccount.generated.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerBankAccount.test.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerBankAccount.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerIdentification.generated.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerIdentification.test.ts +1 -1
- package/src/modules/business-partner/command/updatePartnerIdentification.ts +1 -1
- package/src/modules/business-partner/lib/errors.generated.ts +1 -1
- package/src/modules/business-partner/lib/permissions.generated.ts +1 -1
- package/src/modules/business-partner/lib/types.ts +6 -1
- package/src/modules/business-partner/module.ts +1 -1
- package/src/modules/business-partner/permissions.ts +1 -1
- package/src/modules/business-partner/query/getContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/query/getContactPerson.ts +1 -1
- package/src/modules/business-partner/query/getDefaultPartnerAddress.generated.ts +1 -1
- package/src/modules/business-partner/query/getDefaultPartnerAddress.ts +1 -1
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.generated.ts +1 -1
- package/src/modules/business-partner/query/getDefaultPartnerBankAccount.ts +1 -1
- package/src/modules/business-partner/query/getPartner.generated.ts +1 -1
- package/src/modules/business-partner/query/getPartner.ts +1 -1
- package/src/modules/business-partner/query/getPartnerAddress.generated.ts +1 -1
- package/src/modules/business-partner/query/getPartnerAddress.ts +1 -1
- package/src/modules/business-partner/query/getPartnerBankAccount.generated.ts +1 -1
- package/src/modules/business-partner/query/getPartnerBankAccount.ts +1 -1
- package/src/modules/business-partner/query/getPartnerIdentification.generated.ts +1 -1
- package/src/modules/business-partner/query/getPartnerIdentification.ts +1 -1
- package/src/modules/business-partner/query/getPartnerRole.generated.ts +1 -1
- package/src/modules/business-partner/query/getPartnerRole.ts +1 -1
- package/src/modules/business-partner/query/getPrimaryContactPerson.generated.ts +1 -1
- package/src/modules/business-partner/query/getPrimaryContactPerson.ts +1 -1
- package/src/modules/business-partner/query/listContactPersonsByPartner.generated.ts +1 -1
- package/src/modules/business-partner/query/listContactPersonsByPartner.ts +2 -2
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.generated.ts +1 -1
- package/src/modules/business-partner/query/listPartnerAddressesByPartner.ts +3 -3
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.generated.ts +1 -1
- package/src/modules/business-partner/query/listPartnerBankAccountsByPartner.ts +2 -2
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.generated.ts +1 -1
- package/src/modules/business-partner/query/listPartnerIdentificationsByPartner.ts +3 -3
- package/src/modules/business-partner/query/listPartnersByRole.generated.ts +1 -1
- package/src/modules/business-partner/query/listPartnersByRole.ts +4 -4
- package/src/modules/coa-management/command/activateAccount.generated.ts +1 -1
- package/src/modules/coa-management/command/activateAccount.test.ts +1 -1
- package/src/modules/coa-management/command/activateAccount.ts +1 -1
- package/src/modules/coa-management/command/activateChartOfAccounts.generated.ts +1 -1
- package/src/modules/coa-management/command/activateChartOfAccounts.test.ts +1 -1
- package/src/modules/coa-management/command/activateChartOfAccounts.ts +1 -1
- package/src/modules/coa-management/command/createAccount.generated.ts +1 -1
- package/src/modules/coa-management/command/createAccount.test.ts +1 -1
- package/src/modules/coa-management/command/createAccount.ts +1 -1
- package/src/modules/coa-management/command/createAccountGroup.generated.ts +1 -1
- package/src/modules/coa-management/command/createAccountGroup.test.ts +1 -1
- package/src/modules/coa-management/command/createAccountGroup.ts +1 -1
- package/src/modules/coa-management/command/createChartOfAccounts.generated.ts +1 -1
- package/src/modules/coa-management/command/createChartOfAccounts.test.ts +1 -1
- package/src/modules/coa-management/command/createChartOfAccounts.ts +1 -1
- package/src/modules/coa-management/command/deactivateAccount.generated.ts +1 -1
- package/src/modules/coa-management/command/deactivateAccount.test.ts +1 -1
- package/src/modules/coa-management/command/deactivateAccount.ts +1 -1
- package/src/modules/coa-management/command/deactivateChartOfAccounts.generated.ts +1 -1
- package/src/modules/coa-management/command/deactivateChartOfAccounts.test.ts +1 -1
- package/src/modules/coa-management/command/deactivateChartOfAccounts.ts +1 -1
- package/src/modules/coa-management/command/deleteAccount.generated.ts +1 -1
- package/src/modules/coa-management/command/deleteAccount.test.ts +1 -1
- package/src/modules/coa-management/command/deleteAccount.ts +1 -1
- package/src/modules/coa-management/command/deleteAccountGroup.generated.ts +1 -1
- package/src/modules/coa-management/command/deleteAccountGroup.test.ts +1 -1
- package/src/modules/coa-management/command/deleteAccountGroup.ts +1 -1
- package/src/modules/coa-management/command/deleteChartOfAccounts.generated.ts +1 -1
- package/src/modules/coa-management/command/deleteChartOfAccounts.test.ts +1 -1
- package/src/modules/coa-management/command/deleteChartOfAccounts.ts +1 -1
- package/src/modules/coa-management/command/moveAccountGroup.generated.ts +1 -1
- package/src/modules/coa-management/command/moveAccountGroup.test.ts +1 -1
- package/src/modules/coa-management/command/moveAccountGroup.ts +1 -1
- package/src/modules/coa-management/command/reactivateAccount.generated.ts +1 -1
- package/src/modules/coa-management/command/reactivateAccount.test.ts +1 -1
- package/src/modules/coa-management/command/reactivateAccount.ts +1 -1
- package/src/modules/coa-management/command/updateAccount.generated.ts +1 -1
- package/src/modules/coa-management/command/updateAccount.test.ts +1 -1
- package/src/modules/coa-management/command/updateAccount.ts +1 -1
- package/src/modules/coa-management/command/updateAccountGroup.generated.ts +1 -1
- package/src/modules/coa-management/command/updateAccountGroup.test.ts +1 -1
- package/src/modules/coa-management/command/updateAccountGroup.ts +1 -1
- package/src/modules/coa-management/command/updateChartOfAccounts.generated.ts +1 -1
- package/src/modules/coa-management/command/updateChartOfAccounts.test.ts +1 -1
- package/src/modules/coa-management/command/updateChartOfAccounts.ts +1 -1
- package/src/modules/coa-management/lib/errors.generated.ts +1 -1
- package/src/modules/coa-management/lib/permissions.generated.ts +1 -1
- package/src/modules/coa-management/lib/types.ts +6 -1
- package/src/modules/coa-management/module.ts +1 -1
- package/src/modules/coa-management/permissions.ts +1 -1
- package/src/modules/coa-management/query/detectCircularReference.generated.ts +1 -1
- package/src/modules/coa-management/query/detectCircularReference.ts +1 -1
- package/src/modules/coa-management/query/getAccount.generated.ts +1 -1
- package/src/modules/coa-management/query/getAccount.ts +1 -1
- package/src/modules/coa-management/query/getAccountGroup.generated.ts +1 -1
- package/src/modules/coa-management/query/getAccountGroup.ts +1 -1
- package/src/modules/coa-management/query/getChartOfAccounts.generated.ts +1 -1
- package/src/modules/coa-management/query/getChartOfAccounts.ts +1 -1
- package/src/modules/coa-management/query/listAccountGroups.generated.ts +1 -1
- package/src/modules/coa-management/query/listAccountGroups.ts +2 -2
- package/src/modules/coa-management/query/listAccounts.generated.ts +1 -1
- package/src/modules/coa-management/query/listAccounts.ts +3 -3
- package/src/modules/coa-management/query/listUnassignedAccounts.generated.ts +1 -1
- package/src/modules/coa-management/query/listUnassignedAccounts.ts +2 -2
- package/src/modules/inventory/README.md +65 -0
- package/src/modules/inventory/command/approveCountLine.generated.ts +6 -0
- package/src/modules/inventory/command/approveCountLine.test.ts +89 -0
- package/src/modules/inventory/command/approveCountLine.ts +68 -0
- package/src/modules/inventory/command/approveInventoryAdjustment.generated.ts +6 -0
- package/src/modules/inventory/command/approveInventoryAdjustment.test.ts +56 -0
- package/src/modules/inventory/command/approveInventoryAdjustment.ts +50 -0
- package/src/modules/inventory/command/assignSerialNumber.generated.ts +6 -0
- package/src/modules/inventory/command/assignSerialNumber.test.ts +133 -0
- package/src/modules/inventory/command/assignSerialNumber.ts +83 -0
- package/src/modules/inventory/command/cancelInventoryCount.generated.ts +6 -0
- package/src/modules/inventory/command/cancelInventoryCount.test.ts +114 -0
- package/src/modules/inventory/command/cancelInventoryCount.ts +62 -0
- package/src/modules/inventory/command/cancelStockMovement.generated.ts +6 -0
- package/src/modules/inventory/command/cancelStockMovement.test.ts +102 -0
- package/src/modules/inventory/command/cancelStockMovement.ts +56 -0
- package/src/modules/inventory/command/completeInventoryCount.generated.ts +6 -0
- package/src/modules/inventory/command/completeInventoryCount.test.ts +99 -0
- package/src/modules/inventory/command/completeInventoryCount.ts +70 -0
- package/src/modules/inventory/command/confirmInventoryAdjustment.generated.ts +6 -0
- package/src/modules/inventory/command/confirmInventoryAdjustment.test.ts +324 -0
- package/src/modules/inventory/command/confirmInventoryAdjustment.ts +194 -0
- package/src/modules/inventory/command/confirmStockMovement.generated.ts +6 -0
- package/src/modules/inventory/command/confirmStockMovement.test.ts +126 -0
- package/src/modules/inventory/command/confirmStockMovement.ts +131 -0
- package/src/modules/inventory/command/createInventoryAdjustment.generated.ts +6 -0
- package/src/modules/inventory/command/createInventoryAdjustment.test.ts +298 -0
- package/src/modules/inventory/command/createInventoryAdjustment.ts +124 -0
- package/src/modules/inventory/command/createInventoryCount.generated.ts +6 -0
- package/src/modules/inventory/command/createInventoryCount.test.ts +157 -0
- package/src/modules/inventory/command/createInventoryCount.ts +72 -0
- package/src/modules/inventory/command/createLot.generated.ts +6 -0
- package/src/modules/inventory/command/createLot.test.ts +106 -0
- package/src/modules/inventory/command/createLot.ts +72 -0
- package/src/modules/inventory/command/createStockMovement.generated.ts +6 -0
- package/src/modules/inventory/command/createStockMovement.test.ts +342 -0
- package/src/modules/inventory/command/createStockMovement.ts +172 -0
- package/src/modules/inventory/command/createStorageLocation.generated.ts +6 -0
- package/src/modules/inventory/command/createStorageLocation.test.ts +246 -0
- package/src/modules/inventory/command/createStorageLocation.ts +126 -0
- package/src/modules/inventory/command/createValuationPolicy.generated.ts +6 -0
- package/src/modules/inventory/command/createValuationPolicy.test.ts +75 -0
- package/src/modules/inventory/command/createValuationPolicy.ts +52 -0
- package/src/modules/inventory/command/createWarehouse.generated.ts +6 -0
- package/src/modules/inventory/command/createWarehouse.test.ts +143 -0
- package/src/modules/inventory/command/createWarehouse.ts +76 -0
- package/src/modules/inventory/command/deactivateStorageLocation.generated.ts +6 -0
- package/src/modules/inventory/command/deactivateStorageLocation.test.ts +69 -0
- package/src/modules/inventory/command/deactivateStorageLocation.ts +51 -0
- package/src/modules/inventory/command/deactivateWarehouse.generated.ts +6 -0
- package/src/modules/inventory/command/deactivateWarehouse.test.ts +75 -0
- package/src/modules/inventory/command/deactivateWarehouse.ts +45 -0
- package/src/modules/inventory/command/executeStockMovement.generated.ts +6 -0
- package/src/modules/inventory/command/executeStockMovement.test.ts +502 -0
- package/src/modules/inventory/command/executeStockMovement.ts +303 -0
- package/src/modules/inventory/command/reactivateStorageLocation.generated.ts +6 -0
- package/src/modules/inventory/command/reactivateStorageLocation.test.ts +78 -0
- package/src/modules/inventory/command/reactivateStorageLocation.ts +63 -0
- package/src/modules/inventory/command/reactivateWarehouse.generated.ts +6 -0
- package/src/modules/inventory/command/reactivateWarehouse.test.ts +87 -0
- package/src/modules/inventory/command/reactivateWarehouse.ts +65 -0
- package/src/modules/inventory/command/recordCountLine.generated.ts +6 -0
- package/src/modules/inventory/command/recordCountLine.test.ts +211 -0
- package/src/modules/inventory/command/recordCountLine.ts +81 -0
- package/src/modules/inventory/command/rejectCountLine.generated.ts +6 -0
- package/src/modules/inventory/command/rejectCountLine.test.ts +66 -0
- package/src/modules/inventory/command/rejectCountLine.ts +50 -0
- package/src/modules/inventory/command/rejectInventoryAdjustment.generated.ts +6 -0
- package/src/modules/inventory/command/rejectInventoryAdjustment.test.ts +69 -0
- package/src/modules/inventory/command/rejectInventoryAdjustment.ts +50 -0
- package/src/modules/inventory/command/releaseReservation.generated.ts +6 -0
- package/src/modules/inventory/command/releaseReservation.test.ts +65 -0
- package/src/modules/inventory/command/releaseReservation.ts +50 -0
- package/src/modules/inventory/command/reserveStock.generated.ts +6 -0
- package/src/modules/inventory/command/reserveStock.test.ts +141 -0
- package/src/modules/inventory/command/reserveStock.ts +88 -0
- package/src/modules/inventory/command/reviseInventoryAdjustment.generated.ts +6 -0
- package/src/modules/inventory/command/reviseInventoryAdjustment.test.ts +68 -0
- package/src/modules/inventory/command/reviseInventoryAdjustment.ts +48 -0
- package/src/modules/inventory/command/startInventoryCount.generated.ts +6 -0
- package/src/modules/inventory/command/startInventoryCount.test.ts +100 -0
- package/src/modules/inventory/command/startInventoryCount.ts +90 -0
- package/src/modules/inventory/command/submitInventoryAdjustment.generated.ts +6 -0
- package/src/modules/inventory/command/submitInventoryAdjustment.test.ts +53 -0
- package/src/modules/inventory/command/submitInventoryAdjustment.ts +47 -0
- package/src/modules/inventory/command/updateLot.generated.ts +6 -0
- package/src/modules/inventory/command/updateLot.test.ts +88 -0
- package/src/modules/inventory/command/updateLot.ts +52 -0
- package/src/modules/inventory/command/updateStockMovement.generated.ts +6 -0
- package/src/modules/inventory/command/updateStockMovement.test.ts +250 -0
- package/src/modules/inventory/command/updateStockMovement.ts +164 -0
- package/src/modules/inventory/command/updateStorageLocation.generated.ts +6 -0
- package/src/modules/inventory/command/updateStorageLocation.test.ts +72 -0
- package/src/modules/inventory/command/updateStorageLocation.ts +77 -0
- package/src/modules/inventory/command/updateValuationPolicy.generated.ts +6 -0
- package/src/modules/inventory/command/updateValuationPolicy.test.ts +68 -0
- package/src/modules/inventory/command/updateValuationPolicy.ts +74 -0
- package/src/modules/inventory/command/updateWarehouse.generated.ts +6 -0
- package/src/modules/inventory/command/updateWarehouse.test.ts +88 -0
- package/src/modules/inventory/command/updateWarehouse.ts +64 -0
- package/src/modules/inventory/db/costLayer.ts +54 -0
- package/src/modules/inventory/db/inventoryAdjustment.ts +88 -0
- package/src/modules/inventory/db/inventoryCount.ts +58 -0
- package/src/modules/inventory/db/inventoryCountLine.ts +61 -0
- package/src/modules/inventory/db/itemValuation.ts +50 -0
- package/src/modules/inventory/db/lot.ts +51 -0
- package/src/modules/inventory/db/lotStockLevel.ts +48 -0
- package/src/modules/inventory/db/serialNumber.ts +53 -0
- package/src/modules/inventory/db/stockLevel.ts +51 -0
- package/src/modules/inventory/db/stockMoveLine.ts +78 -0
- package/src/modules/inventory/db/stockMovement.ts +48 -0
- package/src/modules/inventory/db/storageLocation.ts +56 -0
- package/src/modules/inventory/db/valuationPolicy.ts +33 -0
- package/src/modules/inventory/db/warehouse.ts +45 -0
- package/src/modules/inventory/docs/commands/ApproveCountLine.md +44 -0
- package/src/modules/inventory/docs/commands/ApproveInventoryAdjustment.md +37 -0
- package/src/modules/inventory/docs/commands/AssignSerialNumber.md +46 -0
- package/src/modules/inventory/docs/commands/CancelInventoryCount.md +49 -0
- package/src/modules/inventory/docs/commands/CancelStockMovement.md +44 -0
- package/src/modules/inventory/docs/commands/CompleteInventoryCount.md +47 -0
- package/src/modules/inventory/docs/commands/ConfirmInventoryAdjustment.md +72 -0
- package/src/modules/inventory/docs/commands/ConfirmStockMovement.md +43 -0
- package/src/modules/inventory/docs/commands/CreateInventoryAdjustment.md +75 -0
- package/src/modules/inventory/docs/commands/CreateInventoryCount.md +49 -0
- package/src/modules/inventory/docs/commands/CreateLot.md +40 -0
- package/src/modules/inventory/docs/commands/CreateStockMovement.md +76 -0
- package/src/modules/inventory/docs/commands/CreateStorageLocation.md +66 -0
- package/src/modules/inventory/docs/commands/CreateValuationPolicy.md +45 -0
- package/src/modules/inventory/docs/commands/CreateWarehouse.md +47 -0
- package/src/modules/inventory/docs/commands/DeactivateStorageLocation.md +39 -0
- package/src/modules/inventory/docs/commands/DeactivateWarehouse.md +38 -0
- package/src/modules/inventory/docs/commands/ExecuteStockMovement.md +82 -0
- package/src/modules/inventory/docs/commands/ReactivateStorageLocation.md +42 -0
- package/src/modules/inventory/docs/commands/ReactivateWarehouse.md +42 -0
- package/src/modules/inventory/docs/commands/RecordCountLine.md +52 -0
- package/src/modules/inventory/docs/commands/RejectCountLine.md +42 -0
- package/src/modules/inventory/docs/commands/RejectInventoryAdjustment.md +38 -0
- package/src/modules/inventory/docs/commands/ReleaseReservation.md +37 -0
- package/src/modules/inventory/docs/commands/ReserveStock.md +49 -0
- package/src/modules/inventory/docs/commands/ReviseInventoryAdjustment.md +38 -0
- package/src/modules/inventory/docs/commands/StartInventoryCount.md +47 -0
- package/src/modules/inventory/docs/commands/SubmitInventoryAdjustment.md +37 -0
- package/src/modules/inventory/docs/commands/UpdateLot.md +41 -0
- package/src/modules/inventory/docs/commands/UpdateStockMovement.md +45 -0
- package/src/modules/inventory/docs/commands/UpdateStorageLocation.md +41 -0
- package/src/modules/inventory/docs/commands/UpdateValuationPolicy.md +44 -0
- package/src/modules/inventory/docs/commands/UpdateWarehouse.md +42 -0
- package/src/modules/inventory/docs/features/inventory-adjustment.md +64 -0
- package/src/modules/inventory/docs/features/inventory-count.md +78 -0
- package/src/modules/inventory/docs/features/inventory-valuation.md +77 -0
- package/src/modules/inventory/docs/features/lot-and-batch-tracking.md +81 -0
- package/src/modules/inventory/docs/features/scrap-management.md +63 -0
- package/src/modules/inventory/docs/features/serial-number-tracking.md +68 -0
- package/src/modules/inventory/docs/features/stock-movement.md +72 -0
- package/src/modules/inventory/docs/features/stock-tracking.md +78 -0
- package/src/modules/inventory/docs/features/warehouse-management.md +97 -0
- package/src/modules/inventory/docs/models/CostLayer.md +37 -0
- package/src/modules/inventory/docs/models/InventoryAdjustment.md +69 -0
- package/src/modules/inventory/docs/models/InventoryCount.md +53 -0
- package/src/modules/inventory/docs/models/InventoryCountLine.md +53 -0
- package/src/modules/inventory/docs/models/ItemValuation.md +38 -0
- package/src/modules/inventory/docs/models/Lot.md +45 -0
- package/src/modules/inventory/docs/models/LotStockLevel.md +34 -0
- package/src/modules/inventory/docs/models/SerialNumber.md +53 -0
- package/src/modules/inventory/docs/models/StockLevel.md +41 -0
- package/src/modules/inventory/docs/models/StockMoveLine.md +44 -0
- package/src/modules/inventory/docs/models/StockMovement.md +52 -0
- package/src/modules/inventory/docs/models/StorageLocation.md +55 -0
- package/src/modules/inventory/docs/models/ValuationPolicy.md +38 -0
- package/src/modules/inventory/docs/models/Warehouse.md +50 -0
- package/src/modules/inventory/docs/queries/GetInventoryAdjustment.md +40 -0
- package/src/modules/inventory/docs/queries/GetInventoryCount.md +43 -0
- package/src/modules/inventory/docs/queries/GetItemValuation.md +42 -0
- package/src/modules/inventory/docs/queries/GetLot.md +42 -0
- package/src/modules/inventory/docs/queries/GetSerialNumber.md +43 -0
- package/src/modules/inventory/docs/queries/GetSerialNumberHistory.md +50 -0
- package/src/modules/inventory/docs/queries/GetStockLevel.md +42 -0
- package/src/modules/inventory/docs/queries/GetStockMovement.md +41 -0
- package/src/modules/inventory/docs/queries/GetStorageLocation.md +40 -0
- package/src/modules/inventory/docs/queries/GetValuationPolicy.md +38 -0
- package/src/modules/inventory/docs/queries/GetWarehouse.md +40 -0
- package/src/modules/inventory/docs/queries/GetWarehouseStockSummary.md +50 -0
- package/src/modules/inventory/docs/queries/ListCostLayers.md +49 -0
- package/src/modules/inventory/docs/queries/ListExpiringLots.md +51 -0
- package/src/modules/inventory/docs/queries/ListInventoryAdjustments.md +47 -0
- package/src/modules/inventory/docs/queries/ListInventoryCounts.md +57 -0
- package/src/modules/inventory/docs/queries/ListItemValuations.md +44 -0
- package/src/modules/inventory/docs/queries/ListLots.md +57 -0
- package/src/modules/inventory/docs/queries/ListSerialNumbers.md +44 -0
- package/src/modules/inventory/docs/queries/ListStockLevels.md +49 -0
- package/src/modules/inventory/docs/queries/ListStockMovements.md +47 -0
- package/src/modules/inventory/docs/queries/ListStorageLocations.md +47 -0
- package/src/modules/inventory/docs/queries/ListValuationPolicies.md +38 -0
- package/src/modules/inventory/docs/queries/ListWarehouses.md +42 -0
- package/src/modules/inventory/docs/queries/TraceLotBackward.md +46 -0
- package/src/modules/inventory/docs/queries/TraceLotForward.md +46 -0
- package/src/modules/inventory/generated/.gitkeep +0 -0
- package/src/modules/inventory/generated/enums.ts +131 -0
- package/src/modules/inventory/generated/kysely-tailordb.ts +201 -0
- package/src/modules/inventory/index.ts +2 -0
- package/src/modules/inventory/lib/_db_deps.ts +17 -0
- package/src/modules/inventory/lib/errors.generated.ts +317 -0
- package/src/modules/inventory/lib/permissions.generated.ts +38 -0
- package/src/modules/inventory/lib/types.ts +92 -0
- package/src/modules/inventory/module.ts +202 -0
- package/src/modules/inventory/permissions.ts +3 -0
- package/src/modules/inventory/query/.gitkeep +0 -0
- package/src/modules/inventory/query/getInventoryAdjustment.generated.ts +5 -0
- package/src/modules/inventory/query/getInventoryAdjustment.test.ts +58 -0
- package/src/modules/inventory/query/getInventoryAdjustment.ts +16 -0
- package/src/modules/inventory/query/getInventoryCount.generated.ts +5 -0
- package/src/modules/inventory/query/getInventoryCount.test.ts +65 -0
- package/src/modules/inventory/query/getInventoryCount.ts +27 -0
- package/src/modules/inventory/query/getItemValuation.generated.ts +5 -0
- package/src/modules/inventory/query/getItemValuation.test.ts +72 -0
- package/src/modules/inventory/query/getItemValuation.ts +29 -0
- package/src/modules/inventory/query/getLot.generated.ts +5 -0
- package/src/modules/inventory/query/getLot.test.ts +62 -0
- package/src/modules/inventory/query/getLot.ts +28 -0
- package/src/modules/inventory/query/getSerialNumber.generated.ts +5 -0
- package/src/modules/inventory/query/getSerialNumber.test.ts +59 -0
- package/src/modules/inventory/query/getSerialNumber.ts +18 -0
- package/src/modules/inventory/query/getSerialNumberHistory.generated.ts +5 -0
- package/src/modules/inventory/query/getSerialNumberHistory.test.ts +80 -0
- package/src/modules/inventory/query/getSerialNumberHistory.ts +30 -0
- package/src/modules/inventory/query/getStockLevel.generated.ts +5 -0
- package/src/modules/inventory/query/getStockLevel.test.ts +70 -0
- package/src/modules/inventory/query/getStockLevel.ts +24 -0
- package/src/modules/inventory/query/getStockMovement.generated.ts +5 -0
- package/src/modules/inventory/query/getStockMovement.test.ts +62 -0
- package/src/modules/inventory/query/getStockMovement.ts +26 -0
- package/src/modules/inventory/query/getStorageLocation.generated.ts +5 -0
- package/src/modules/inventory/query/getStorageLocation.test.ts +54 -0
- package/src/modules/inventory/query/getStorageLocation.ts +26 -0
- package/src/modules/inventory/query/getValuationPolicy.generated.ts +5 -0
- package/src/modules/inventory/query/getValuationPolicy.test.ts +42 -0
- package/src/modules/inventory/query/getValuationPolicy.ts +16 -0
- package/src/modules/inventory/query/getWarehouse.generated.ts +5 -0
- package/src/modules/inventory/query/getWarehouse.test.ts +61 -0
- package/src/modules/inventory/query/getWarehouse.ts +26 -0
- package/src/modules/inventory/query/getWarehouseStockSummary.generated.ts +5 -0
- package/src/modules/inventory/query/getWarehouseStockSummary.test.ts +97 -0
- package/src/modules/inventory/query/getWarehouseStockSummary.ts +82 -0
- package/src/modules/inventory/query/listCostLayers.generated.ts +5 -0
- package/src/modules/inventory/query/listCostLayers.test.ts +58 -0
- package/src/modules/inventory/query/listCostLayers.ts +45 -0
- package/src/modules/inventory/query/listExpiringLots.generated.ts +5 -0
- package/src/modules/inventory/query/listExpiringLots.test.ts +70 -0
- package/src/modules/inventory/query/listExpiringLots.ts +74 -0
- package/src/modules/inventory/query/listInventoryAdjustments.generated.ts +5 -0
- package/src/modules/inventory/query/listInventoryAdjustments.test.ts +89 -0
- package/src/modules/inventory/query/listInventoryAdjustments.ts +59 -0
- package/src/modules/inventory/query/listInventoryCounts.generated.ts +5 -0
- package/src/modules/inventory/query/listInventoryCounts.test.ts +78 -0
- package/src/modules/inventory/query/listInventoryCounts.ts +55 -0
- package/src/modules/inventory/query/listItemValuations.generated.ts +5 -0
- package/src/modules/inventory/query/listItemValuations.test.ts +54 -0
- package/src/modules/inventory/query/listItemValuations.ts +39 -0
- package/src/modules/inventory/query/listLots.generated.ts +5 -0
- package/src/modules/inventory/query/listLots.test.ts +120 -0
- package/src/modules/inventory/query/listLots.ts +68 -0
- package/src/modules/inventory/query/listSerialNumbers.generated.ts +5 -0
- package/src/modules/inventory/query/listSerialNumbers.test.ts +58 -0
- package/src/modules/inventory/query/listSerialNumbers.ts +53 -0
- package/src/modules/inventory/query/listStockLevels.generated.ts +5 -0
- package/src/modules/inventory/query/listStockLevels.test.ts +73 -0
- package/src/modules/inventory/query/listStockLevels.ts +79 -0
- package/src/modules/inventory/query/listStockMovements.generated.ts +5 -0
- package/src/modules/inventory/query/listStockMovements.test.ts +98 -0
- package/src/modules/inventory/query/listStockMovements.ts +105 -0
- package/src/modules/inventory/query/listStorageLocations.generated.ts +5 -0
- package/src/modules/inventory/query/listStorageLocations.test.ts +70 -0
- package/src/modules/inventory/query/listStorageLocations.ts +53 -0
- package/src/modules/inventory/query/listValuationPolicies.generated.ts +5 -0
- package/src/modules/inventory/query/listValuationPolicies.test.ts +38 -0
- package/src/modules/inventory/query/listValuationPolicies.ts +39 -0
- package/src/modules/inventory/query/listWarehouses.generated.ts +5 -0
- package/src/modules/inventory/query/listWarehouses.test.ts +60 -0
- package/src/modules/inventory/query/listWarehouses.ts +39 -0
- package/src/modules/inventory/query/traceLotBackward.generated.ts +5 -0
- package/src/modules/inventory/query/traceLotBackward.test.ts +63 -0
- package/src/modules/inventory/query/traceLotBackward.ts +36 -0
- package/src/modules/inventory/query/traceLotForward.generated.ts +5 -0
- package/src/modules/inventory/query/traceLotForward.test.ts +63 -0
- package/src/modules/inventory/query/traceLotForward.ts +36 -0
- package/src/modules/inventory/tailor.config.ts +13 -0
- package/src/modules/inventory/tailor.d.ts +13 -0
- package/src/modules/inventory/testing/commandTestUtils.ts +29 -0
- package/src/modules/inventory/testing/fixtures.ts +412 -0
- 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/docs/models/{item.md → Item.md} +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/command/activateCompany.generated.ts +1 -1
- package/src/modules/organization/command/activateCompany.test.ts +1 -1
- package/src/modules/organization/command/activateCompany.ts +1 -1
- package/src/modules/organization/command/createCompany.generated.ts +1 -1
- package/src/modules/organization/command/createCompany.test.ts +1 -1
- package/src/modules/organization/command/createCompany.ts +1 -1
- package/src/modules/organization/command/createDepartment.generated.ts +1 -1
- package/src/modules/organization/command/createDepartment.ts +1 -1
- package/src/modules/organization/command/createSite.generated.ts +1 -1
- package/src/modules/organization/command/createSite.ts +1 -1
- package/src/modules/organization/command/deactivateCompany.generated.ts +1 -1
- package/src/modules/organization/command/deactivateCompany.ts +1 -1
- package/src/modules/organization/command/deactivateDepartment.generated.ts +1 -1
- package/src/modules/organization/command/deactivateDepartment.ts +1 -1
- package/src/modules/organization/command/deactivateSite.generated.ts +1 -1
- package/src/modules/organization/command/deactivateSite.ts +1 -1
- package/src/modules/organization/command/deleteCompany.generated.ts +1 -1
- package/src/modules/organization/command/deleteCompany.ts +1 -1
- package/src/modules/organization/command/reactivateCompany.generated.ts +1 -1
- package/src/modules/organization/command/reactivateCompany.ts +1 -1
- package/src/modules/organization/command/reactivateDepartment.generated.ts +1 -1
- package/src/modules/organization/command/reactivateDepartment.ts +1 -1
- package/src/modules/organization/command/reactivateSite.generated.ts +1 -1
- package/src/modules/organization/command/reactivateSite.ts +1 -1
- package/src/modules/organization/command/updateCompany.generated.ts +1 -1
- package/src/modules/organization/command/updateCompany.test.ts +1 -1
- package/src/modules/organization/command/updateCompany.ts +1 -1
- package/src/modules/organization/command/updateDepartment.generated.ts +1 -1
- package/src/modules/organization/command/updateDepartment.ts +1 -1
- package/src/modules/organization/command/updateSite.generated.ts +1 -1
- package/src/modules/organization/command/updateSite.ts +1 -1
- package/src/modules/organization/lib/errors.generated.ts +1 -1
- package/src/modules/organization/lib/permissions.generated.ts +1 -1
- package/src/modules/organization/lib/types.ts +6 -1
- package/src/modules/organization/module.ts +1 -1
- package/src/modules/organization/permissions.ts +1 -1
- package/src/modules/organization/query/detectDepartmentCircularReference.generated.ts +1 -1
- package/src/modules/organization/query/detectDepartmentCircularReference.ts +1 -1
- package/src/modules/organization/query/getCompany.generated.ts +1 -1
- package/src/modules/organization/query/getCompany.ts +1 -1
- package/src/modules/organization/query/getDepartment.generated.ts +1 -1
- package/src/modules/organization/query/getDepartment.ts +1 -1
- package/src/modules/organization/query/getDepartmentChildren.generated.ts +1 -1
- package/src/modules/organization/query/getDepartmentChildren.ts +1 -1
- package/src/modules/organization/query/getSite.generated.ts +1 -1
- package/src/modules/organization/query/getSite.ts +1 -1
- package/src/modules/organization/query/listDepartmentsByCompany.generated.ts +1 -1
- package/src/modules/organization/query/listDepartmentsByCompany.ts +2 -2
- package/src/modules/organization/query/listSitesByCompany.generated.ts +1 -1
- package/src/modules/organization/query/listSitesByCompany.ts +2 -2
- 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.ts +1 -1
- package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
- package/src/modules/primitives/command/setReferenceUnit.ts +1 -1
- package/src/modules/primitives/lib/errors.generated.ts +1 -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/primitives/seed/currencies.ts +22 -0
- package/src/modules/primitives/seed/exchangeRates.ts +22 -0
- package/src/modules/primitives/seed/index.ts +4 -0
- package/src/modules/primitives/seed/seed.test.ts +80 -0
- package/src/modules/primitives/seed/units.ts +62 -0
- package/src/modules/primitives/seed/uomCategories.ts +24 -0
- 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/purchase/README.md +63 -0
- package/src/modules/purchase/command/.gitkeep +0 -0
- package/src/modules/purchase/command/activatePurchasePaymentTerm.generated.ts +6 -0
- package/src/modules/purchase/command/activatePurchasePaymentTerm.test.ts +53 -0
- package/src/modules/purchase/command/activatePurchasePaymentTerm.ts +39 -0
- package/src/modules/purchase/command/activatePurchasePriceList.generated.ts +6 -0
- package/src/modules/purchase/command/activatePurchasePriceList.test.ts +39 -0
- package/src/modules/purchase/command/activatePurchasePriceList.ts +32 -0
- package/src/modules/purchase/command/activatePurchasePriceRule.generated.ts +6 -0
- package/src/modules/purchase/command/activatePurchasePriceRule.test.ts +133 -0
- package/src/modules/purchase/command/activatePurchasePriceRule.ts +75 -0
- package/src/modules/purchase/command/approvePurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/approvePurchaseOrder.test.ts +161 -0
- package/src/modules/purchase/command/approvePurchaseOrder.ts +89 -0
- package/src/modules/purchase/command/cancelGoodsReceipt.generated.ts +6 -0
- package/src/modules/purchase/command/cancelGoodsReceipt.test.ts +37 -0
- package/src/modules/purchase/command/cancelGoodsReceipt.ts +29 -0
- package/src/modules/purchase/command/cancelPurchaseBill.generated.ts +6 -0
- package/src/modules/purchase/command/cancelPurchaseBill.test.ts +101 -0
- package/src/modules/purchase/command/cancelPurchaseBill.ts +84 -0
- package/src/modules/purchase/command/cancelPurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/cancelPurchaseOrder.test.ts +119 -0
- package/src/modules/purchase/command/cancelPurchaseOrder.ts +65 -0
- package/src/modules/purchase/command/closePurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/closePurchaseOrder.test.ts +128 -0
- package/src/modules/purchase/command/closePurchaseOrder.ts +58 -0
- package/src/modules/purchase/command/createGoodsReceipt.generated.ts +6 -0
- package/src/modules/purchase/command/createGoodsReceipt.test.ts +233 -0
- package/src/modules/purchase/command/createGoodsReceipt.ts +93 -0
- package/src/modules/purchase/command/createPurchaseBill.generated.ts +6 -0
- package/src/modules/purchase/command/createPurchaseBill.test.ts +277 -0
- package/src/modules/purchase/command/createPurchaseBill.ts +107 -0
- package/src/modules/purchase/command/createPurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/createPurchaseOrder.test.ts +291 -0
- package/src/modules/purchase/command/createPurchaseOrder.ts +131 -0
- package/src/modules/purchase/command/createPurchasePaymentTerm.generated.ts +6 -0
- package/src/modules/purchase/command/createPurchasePaymentTerm.test.ts +140 -0
- package/src/modules/purchase/command/createPurchasePaymentTerm.ts +66 -0
- package/src/modules/purchase/command/createPurchasePriceList.generated.ts +6 -0
- package/src/modules/purchase/command/createPurchasePriceList.test.ts +108 -0
- package/src/modules/purchase/command/createPurchasePriceList.ts +63 -0
- package/src/modules/purchase/command/createPurchasePriceRule.generated.ts +6 -0
- package/src/modules/purchase/command/createPurchasePriceRule.test.ts +139 -0
- package/src/modules/purchase/command/createPurchasePriceRule.ts +95 -0
- package/src/modules/purchase/command/deactivatePurchasePaymentTerm.generated.ts +6 -0
- package/src/modules/purchase/command/deactivatePurchasePaymentTerm.test.ts +49 -0
- package/src/modules/purchase/command/deactivatePurchasePaymentTerm.ts +41 -0
- package/src/modules/purchase/command/deactivatePurchasePriceList.generated.ts +6 -0
- package/src/modules/purchase/command/deactivatePurchasePriceList.test.ts +50 -0
- package/src/modules/purchase/command/deactivatePurchasePriceList.ts +32 -0
- package/src/modules/purchase/command/deactivatePurchasePriceRule.generated.ts +6 -0
- package/src/modules/purchase/command/deactivatePurchasePriceRule.test.ts +50 -0
- package/src/modules/purchase/command/deactivatePurchasePriceRule.ts +32 -0
- package/src/modules/purchase/command/matchPurchaseBill.generated.ts +6 -0
- package/src/modules/purchase/command/matchPurchaseBill.test.ts +188 -0
- package/src/modules/purchase/command/matchPurchaseBill.ts +146 -0
- package/src/modules/purchase/command/postGoodsReceipt.generated.ts +6 -0
- package/src/modules/purchase/command/postGoodsReceipt.test.ts +210 -0
- package/src/modules/purchase/command/postGoodsReceipt.ts +143 -0
- package/src/modules/purchase/command/rejectPurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/rejectPurchaseOrder.test.ts +79 -0
- package/src/modules/purchase/command/rejectPurchaseOrder.ts +41 -0
- package/src/modules/purchase/command/releasePurchaseBill.generated.ts +6 -0
- package/src/modules/purchase/command/releasePurchaseBill.test.ts +94 -0
- package/src/modules/purchase/command/releasePurchaseBill.ts +111 -0
- package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.generated.ts +6 -0
- package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.test.ts +171 -0
- package/src/modules/purchase/command/setSupplierDefaultPurchasePaymentTerm.ts +90 -0
- package/src/modules/purchase/command/submitPurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/submitPurchaseOrder.test.ts +98 -0
- package/src/modules/purchase/command/submitPurchaseOrder.ts +73 -0
- package/src/modules/purchase/command/updateGoodsReceipt.generated.ts +6 -0
- package/src/modules/purchase/command/updateGoodsReceipt.test.ts +115 -0
- package/src/modules/purchase/command/updateGoodsReceipt.ts +73 -0
- package/src/modules/purchase/command/updatePurchaseBill.generated.ts +6 -0
- package/src/modules/purchase/command/updatePurchaseBill.test.ts +137 -0
- package/src/modules/purchase/command/updatePurchaseBill.ts +89 -0
- package/src/modules/purchase/command/updatePurchaseOrder.generated.ts +6 -0
- package/src/modules/purchase/command/updatePurchaseOrder.test.ts +195 -0
- package/src/modules/purchase/command/updatePurchaseOrder.ts +121 -0
- package/src/modules/purchase/command/updatePurchasePaymentTerm.generated.ts +6 -0
- package/src/modules/purchase/command/updatePurchasePaymentTerm.test.ts +154 -0
- package/src/modules/purchase/command/updatePurchasePaymentTerm.ts +73 -0
- package/src/modules/purchase/command/updatePurchasePriceList.generated.ts +6 -0
- package/src/modules/purchase/command/updatePurchasePriceList.test.ts +73 -0
- package/src/modules/purchase/command/updatePurchasePriceList.ts +55 -0
- package/src/modules/purchase/command/updatePurchasePriceRule.generated.ts +6 -0
- package/src/modules/purchase/command/updatePurchasePriceRule.test.ts +191 -0
- package/src/modules/purchase/command/updatePurchasePriceRule.ts +104 -0
- package/src/modules/purchase/db/.gitkeep +0 -0
- package/src/modules/purchase/db/goodsReceipt.ts +62 -0
- package/src/modules/purchase/db/purchaseBill.ts +74 -0
- package/src/modules/purchase/db/purchaseOrder.ts +100 -0
- package/src/modules/purchase/db/purchasePaymentTerm.ts +46 -0
- package/src/modules/purchase/db/purchasePriceList.ts +53 -0
- package/src/modules/purchase/db/purchasePriceRule.ts +74 -0
- package/src/modules/purchase/db/supplierProfile.ts +59 -0
- package/src/modules/purchase/docs/commands/ActivatePurchasePaymentTerm.md +39 -0
- package/src/modules/purchase/docs/commands/ActivatePurchasePriceList.md +37 -0
- package/src/modules/purchase/docs/commands/ActivatePurchasePriceRule.md +47 -0
- package/src/modules/purchase/docs/commands/ApprovePurchaseOrder.md +55 -0
- package/src/modules/purchase/docs/commands/CancelGoodsReceipt.md +39 -0
- package/src/modules/purchase/docs/commands/CancelPurchaseBill.md +49 -0
- package/src/modules/purchase/docs/commands/CancelPurchaseOrder.md +47 -0
- package/src/modules/purchase/docs/commands/ClosePurchaseOrder.md +49 -0
- package/src/modules/purchase/docs/commands/CreateGoodsReceipt.md +54 -0
- package/src/modules/purchase/docs/commands/CreatePurchaseBill.md +59 -0
- package/src/modules/purchase/docs/commands/CreatePurchaseOrder.md +66 -0
- package/src/modules/purchase/docs/commands/CreatePurchasePaymentTerm.md +52 -0
- package/src/modules/purchase/docs/commands/CreatePurchasePriceList.md +48 -0
- package/src/modules/purchase/docs/commands/CreatePurchasePriceRule.md +62 -0
- package/src/modules/purchase/docs/commands/DeactivatePurchasePaymentTerm.md +42 -0
- package/src/modules/purchase/docs/commands/DeactivatePurchasePriceList.md +39 -0
- package/src/modules/purchase/docs/commands/DeactivatePurchasePriceRule.md +39 -0
- package/src/modules/purchase/docs/commands/MatchPurchaseBill.md +63 -0
- package/src/modules/purchase/docs/commands/PostGoodsReceipt.md +61 -0
- package/src/modules/purchase/docs/commands/RejectPurchaseOrder.md +44 -0
- package/src/modules/purchase/docs/commands/ReleasePurchaseBill.md +48 -0
- package/src/modules/purchase/docs/commands/SetSupplierDefaultPurchasePaymentTerm.md +50 -0
- package/src/modules/purchase/docs/commands/SubmitPurchaseOrder.md +51 -0
- package/src/modules/purchase/docs/commands/UpdateGoodsReceipt.md +48 -0
- package/src/modules/purchase/docs/commands/UpdatePurchaseBill.md +51 -0
- package/src/modules/purchase/docs/commands/UpdatePurchaseOrder.md +59 -0
- package/src/modules/purchase/docs/commands/UpdatePurchasePaymentTerm.md +51 -0
- package/src/modules/purchase/docs/commands/UpdatePurchasePriceList.md +43 -0
- package/src/modules/purchase/docs/commands/UpdatePurchasePriceRule.md +60 -0
- package/src/modules/purchase/docs/features/goods-receipt-matching.md +71 -0
- package/src/modules/purchase/docs/features/purchase-order-lifecycle.md +87 -0
- package/src/modules/purchase/docs/features/purchase-payment-terms.md +67 -0
- package/src/modules/purchase/docs/features/supplier-bill-matching.md +79 -0
- package/src/modules/purchase/docs/features/supplier-purchase-pricing.md +72 -0
- package/src/modules/purchase/docs/models/GoodsReceipt.md +58 -0
- package/src/modules/purchase/docs/models/PurchaseBill.md +68 -0
- package/src/modules/purchase/docs/models/PurchaseOrder.md +88 -0
- package/src/modules/purchase/docs/models/PurchasePaymentTerm.md +59 -0
- package/src/modules/purchase/docs/models/PurchasePriceList.md +53 -0
- package/src/modules/purchase/docs/models/PurchasePriceRule.md +58 -0
- package/src/modules/purchase/docs/models/SupplierProfile.md +37 -0
- package/src/modules/purchase/docs/queries/CalculatePurchaseBillDueSchedule.md +47 -0
- package/src/modules/purchase/docs/queries/CalculatePurchasePrice.md +53 -0
- package/src/modules/purchase/docs/queries/GetGoodsReceipt.md +36 -0
- package/src/modules/purchase/docs/queries/GetPurchaseBill.md +41 -0
- package/src/modules/purchase/docs/queries/GetPurchaseOrder.md +42 -0
- package/src/modules/purchase/docs/queries/GetPurchasePaymentTerm.md +36 -0
- package/src/modules/purchase/docs/queries/GetPurchasePriceList.md +36 -0
- package/src/modules/purchase/docs/queries/GetSupplierProfile.md +36 -0
- package/src/modules/purchase/executor/.gitkeep +0 -0
- package/src/modules/purchase/generated/.gitkeep +0 -0
- package/src/modules/purchase/generated/enums.ts +63 -0
- package/src/modules/purchase/generated/kysely-tailordb.ts +186 -0
- package/src/modules/purchase/index.ts +2 -0
- package/src/modules/purchase/lib/_db_deps.ts +77 -0
- package/src/modules/purchase/lib/domain.ts +467 -0
- package/src/modules/purchase/lib/errors.generated.ts +367 -0
- package/src/modules/purchase/lib/permissions.generated.ts +34 -0
- package/src/modules/purchase/lib/types.ts +65 -0
- package/src/modules/purchase/module.ts +218 -0
- package/src/modules/purchase/permissions.ts +1 -0
- package/src/modules/purchase/query/.gitkeep +0 -0
- package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.generated.ts +5 -0
- package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.test.ts +183 -0
- package/src/modules/purchase/query/calculatePurchaseBillDueSchedule.ts +41 -0
- package/src/modules/purchase/query/calculatePurchasePrice.generated.ts +5 -0
- package/src/modules/purchase/query/calculatePurchasePrice.test.ts +143 -0
- package/src/modules/purchase/query/calculatePurchasePrice.ts +113 -0
- package/src/modules/purchase/query/getGoodsReceipt.generated.ts +5 -0
- package/src/modules/purchase/query/getGoodsReceipt.test.ts +42 -0
- package/src/modules/purchase/query/getGoodsReceipt.ts +27 -0
- package/src/modules/purchase/query/getPurchaseBill.generated.ts +5 -0
- package/src/modules/purchase/query/getPurchaseBill.test.ts +69 -0
- package/src/modules/purchase/query/getPurchaseBill.ts +35 -0
- package/src/modules/purchase/query/getPurchaseOrder.generated.ts +5 -0
- package/src/modules/purchase/query/getPurchaseOrder.test.ts +65 -0
- package/src/modules/purchase/query/getPurchaseOrder.ts +33 -0
- package/src/modules/purchase/query/getPurchasePaymentTerm.generated.ts +5 -0
- package/src/modules/purchase/query/getPurchasePaymentTerm.test.ts +44 -0
- package/src/modules/purchase/query/getPurchasePaymentTerm.ts +30 -0
- package/src/modules/purchase/query/getPurchasePriceList.generated.ts +5 -0
- package/src/modules/purchase/query/getPurchasePriceList.test.ts +48 -0
- package/src/modules/purchase/query/getPurchasePriceList.ts +30 -0
- package/src/modules/purchase/query/getSupplierProfile.generated.ts +5 -0
- package/src/modules/purchase/query/getSupplierProfile.test.ts +50 -0
- package/src/modules/purchase/query/getSupplierProfile.ts +18 -0
- package/src/modules/purchase/tailor.config.ts +13 -0
- package/src/modules/purchase/tailor.d.ts +13 -0
- package/src/modules/purchase/testing/commandTestUtils.ts +35 -0
- package/src/modules/purchase/testing/fixtures.ts +317 -0
- package/src/modules/sales/README.md +69 -0
- package/src/modules/sales/command/.gitkeep +0 -0
- package/src/modules/sales/command/activateChannel.generated.ts +6 -0
- package/src/modules/sales/command/activateChannel.test.ts +70 -0
- package/src/modules/sales/command/activateChannel.ts +48 -0
- package/src/modules/sales/command/activateListing.generated.ts +6 -0
- package/src/modules/sales/command/activateListing.test.ts +87 -0
- package/src/modules/sales/command/activateListing.ts +49 -0
- package/src/modules/sales/command/activateSalesPaymentTerm.generated.ts +6 -0
- package/src/modules/sales/command/activateSalesPaymentTerm.test.ts +58 -0
- package/src/modules/sales/command/activateSalesPaymentTerm.ts +50 -0
- package/src/modules/sales/command/activateSalesPriceList.generated.ts +6 -0
- package/src/modules/sales/command/activateSalesPriceList.test.ts +55 -0
- package/src/modules/sales/command/activateSalesPriceList.ts +46 -0
- package/src/modules/sales/command/activateSalesPriceRule.generated.ts +6 -0
- package/src/modules/sales/command/activateSalesPriceRule.test.ts +83 -0
- package/src/modules/sales/command/activateSalesPriceRule.ts +58 -0
- package/src/modules/sales/command/cancelChannelOrder.generated.ts +6 -0
- package/src/modules/sales/command/cancelChannelOrder.test.ts +47 -0
- package/src/modules/sales/command/cancelChannelOrder.ts +30 -0
- package/src/modules/sales/command/cancelSalesInvoice.generated.ts +6 -0
- package/src/modules/sales/command/cancelSalesInvoice.test.ts +47 -0
- package/src/modules/sales/command/cancelSalesInvoice.ts +37 -0
- package/src/modules/sales/command/cancelSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/cancelSalesOrder.test.ts +70 -0
- package/src/modules/sales/command/cancelSalesOrder.ts +48 -0
- package/src/modules/sales/command/cancelSyncJob.generated.ts +6 -0
- package/src/modules/sales/command/cancelSyncJob.test.ts +58 -0
- package/src/modules/sales/command/cancelSyncJob.ts +30 -0
- package/src/modules/sales/command/closeSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/closeSalesOrder.test.ts +41 -0
- package/src/modules/sales/command/closeSalesOrder.ts +51 -0
- package/src/modules/sales/command/confirmSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/confirmSalesOrder.test.ts +68 -0
- package/src/modules/sales/command/confirmSalesOrder.ts +67 -0
- package/src/modules/sales/command/convertChannelOrder.generated.ts +6 -0
- package/src/modules/sales/command/convertChannelOrder.test.ts +118 -0
- package/src/modules/sales/command/convertChannelOrder.ts +151 -0
- package/src/modules/sales/command/createChannel.generated.ts +6 -0
- package/src/modules/sales/command/createChannel.test.ts +100 -0
- package/src/modules/sales/command/createChannel.ts +58 -0
- package/src/modules/sales/command/createListing.generated.ts +6 -0
- package/src/modules/sales/command/createListing.test.ts +88 -0
- package/src/modules/sales/command/createListing.ts +76 -0
- package/src/modules/sales/command/createSalesCreditNote.generated.ts +6 -0
- package/src/modules/sales/command/createSalesCreditNote.test.ts +56 -0
- package/src/modules/sales/command/createSalesCreditNote.ts +75 -0
- package/src/modules/sales/command/createSalesInvoice.generated.ts +6 -0
- package/src/modules/sales/command/createSalesInvoice.test.ts +85 -0
- package/src/modules/sales/command/createSalesInvoice.ts +94 -0
- package/src/modules/sales/command/createSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/createSalesOrder.test.ts +134 -0
- package/src/modules/sales/command/createSalesOrder.ts +140 -0
- package/src/modules/sales/command/createSalesPaymentTerm.generated.ts +6 -0
- package/src/modules/sales/command/createSalesPaymentTerm.test.ts +59 -0
- package/src/modules/sales/command/createSalesPaymentTerm.ts +50 -0
- package/src/modules/sales/command/createSalesPriceList.generated.ts +6 -0
- package/src/modules/sales/command/createSalesPriceList.test.ts +67 -0
- package/src/modules/sales/command/createSalesPriceList.ts +45 -0
- package/src/modules/sales/command/createSalesPriceRule.generated.ts +6 -0
- package/src/modules/sales/command/createSalesPriceRule.test.ts +137 -0
- package/src/modules/sales/command/createSalesPriceRule.ts +66 -0
- package/src/modules/sales/command/createShipment.generated.ts +6 -0
- package/src/modules/sales/command/createShipment.test.ts +75 -0
- package/src/modules/sales/command/createShipment.ts +86 -0
- package/src/modules/sales/command/deactivateChannel.generated.ts +6 -0
- package/src/modules/sales/command/deactivateChannel.test.ts +29 -0
- package/src/modules/sales/command/deactivateChannel.ts +30 -0
- package/src/modules/sales/command/deactivateSalesPaymentTerm.generated.ts +6 -0
- package/src/modules/sales/command/deactivateSalesPaymentTerm.test.ts +29 -0
- package/src/modules/sales/command/deactivateSalesPaymentTerm.ts +37 -0
- package/src/modules/sales/command/deactivateSalesPriceList.generated.ts +6 -0
- package/src/modules/sales/command/deactivateSalesPriceList.test.ts +33 -0
- package/src/modules/sales/command/deactivateSalesPriceList.ts +37 -0
- package/src/modules/sales/command/deactivateSalesPriceRule.generated.ts +6 -0
- package/src/modules/sales/command/deactivateSalesPriceRule.test.ts +33 -0
- package/src/modules/sales/command/deactivateSalesPriceRule.ts +37 -0
- package/src/modules/sales/command/issueSalesCreditNote.generated.ts +6 -0
- package/src/modules/sales/command/issueSalesCreditNote.test.ts +62 -0
- package/src/modules/sales/command/issueSalesCreditNote.ts +71 -0
- package/src/modules/sales/command/issueSalesInvoice.generated.ts +6 -0
- package/src/modules/sales/command/issueSalesInvoice.test.ts +88 -0
- package/src/modules/sales/command/issueSalesInvoice.ts +115 -0
- package/src/modules/sales/command/markChannelOrderException.generated.ts +6 -0
- package/src/modules/sales/command/markChannelOrderException.test.ts +59 -0
- package/src/modules/sales/command/markChannelOrderException.ts +49 -0
- package/src/modules/sales/command/pauseListing.generated.ts +6 -0
- package/src/modules/sales/command/pauseListing.test.ts +40 -0
- package/src/modules/sales/command/pauseListing.ts +30 -0
- package/src/modules/sales/command/placeSalesOrderOnCreditHold.generated.ts +6 -0
- package/src/modules/sales/command/placeSalesOrderOnCreditHold.test.ts +74 -0
- package/src/modules/sales/command/placeSalesOrderOnCreditHold.ts +46 -0
- package/src/modules/sales/command/postShipment.generated.ts +6 -0
- package/src/modules/sales/command/postShipment.test.ts +97 -0
- package/src/modules/sales/command/postShipment.ts +89 -0
- package/src/modules/sales/command/recordChannelOrder.generated.ts +6 -0
- package/src/modules/sales/command/recordChannelOrder.test.ts +124 -0
- package/src/modules/sales/command/recordChannelOrder.ts +93 -0
- package/src/modules/sales/command/rejectSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/rejectSalesOrder.test.ts +78 -0
- package/src/modules/sales/command/rejectSalesOrder.ts +42 -0
- package/src/modules/sales/command/releaseSalesOrderCreditHold.generated.ts +6 -0
- package/src/modules/sales/command/releaseSalesOrderCreditHold.test.ts +50 -0
- package/src/modules/sales/command/releaseSalesOrderCreditHold.ts +51 -0
- package/src/modules/sales/command/retireListing.generated.ts +6 -0
- package/src/modules/sales/command/retireListing.test.ts +42 -0
- package/src/modules/sales/command/retireListing.ts +30 -0
- package/src/modules/sales/command/retrySyncJob.generated.ts +6 -0
- package/src/modules/sales/command/retrySyncJob.test.ts +54 -0
- package/src/modules/sales/command/retrySyncJob.ts +44 -0
- package/src/modules/sales/command/sendSalesInvoice.generated.ts +6 -0
- package/src/modules/sales/command/sendSalesInvoice.test.ts +50 -0
- package/src/modules/sales/command/sendSalesInvoice.ts +43 -0
- package/src/modules/sales/command/startSyncJob.generated.ts +6 -0
- package/src/modules/sales/command/startSyncJob.test.ts +65 -0
- package/src/modules/sales/command/startSyncJob.ts +54 -0
- package/src/modules/sales/command/submitSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/submitSalesOrder.test.ts +58 -0
- package/src/modules/sales/command/submitSalesOrder.ts +49 -0
- package/src/modules/sales/command/updateChannel.generated.ts +6 -0
- package/src/modules/sales/command/updateChannel.test.ts +71 -0
- package/src/modules/sales/command/updateChannel.ts +68 -0
- package/src/modules/sales/command/updateListing.generated.ts +6 -0
- package/src/modules/sales/command/updateListing.test.ts +56 -0
- package/src/modules/sales/command/updateListing.ts +60 -0
- package/src/modules/sales/command/updateSalesCreditNote.generated.ts +6 -0
- package/src/modules/sales/command/updateSalesCreditNote.test.ts +68 -0
- package/src/modules/sales/command/updateSalesCreditNote.ts +68 -0
- package/src/modules/sales/command/updateSalesInvoice.generated.ts +6 -0
- package/src/modules/sales/command/updateSalesInvoice.test.ts +73 -0
- package/src/modules/sales/command/updateSalesInvoice.ts +80 -0
- package/src/modules/sales/command/updateSalesOrder.generated.ts +6 -0
- package/src/modules/sales/command/updateSalesOrder.test.ts +93 -0
- package/src/modules/sales/command/updateSalesOrder.ts +121 -0
- package/src/modules/sales/command/updateSalesPaymentTerm.generated.ts +6 -0
- package/src/modules/sales/command/updateSalesPaymentTerm.test.ts +66 -0
- package/src/modules/sales/command/updateSalesPaymentTerm.ts +59 -0
- package/src/modules/sales/command/updateSalesPriceList.generated.ts +6 -0
- package/src/modules/sales/command/updateSalesPriceList.test.ts +71 -0
- package/src/modules/sales/command/updateSalesPriceList.ts +52 -0
- package/src/modules/sales/command/updateSalesPriceRule.generated.ts +6 -0
- package/src/modules/sales/command/updateSalesPriceRule.test.ts +95 -0
- package/src/modules/sales/command/updateSalesPriceRule.ts +81 -0
- package/src/modules/sales/command/updateShipment.generated.ts +6 -0
- package/src/modules/sales/command/updateShipment.test.ts +78 -0
- package/src/modules/sales/command/updateShipment.ts +84 -0
- package/src/modules/sales/db/.gitkeep +0 -0
- package/src/modules/sales/db/channel.ts +43 -0
- package/src/modules/sales/db/channelOrder.ts +109 -0
- package/src/modules/sales/db/channelOrderLine.ts +84 -0
- package/src/modules/sales/db/listing.ts +81 -0
- package/src/modules/sales/db/salesCreditNote.ts +63 -0
- package/src/modules/sales/db/salesCreditNoteLine.ts +49 -0
- package/src/modules/sales/db/salesInvoice.ts +95 -0
- package/src/modules/sales/db/salesInvoiceLine.ts +64 -0
- package/src/modules/sales/db/salesOrder.ts +103 -0
- package/src/modules/sales/db/salesOrderLine.ts +82 -0
- package/src/modules/sales/db/salesPaymentTerm.ts +46 -0
- package/src/modules/sales/db/salesPriceList.ts +61 -0
- package/src/modules/sales/db/salesPriceRule.ts +96 -0
- package/src/modules/sales/db/shipment.ts +78 -0
- package/src/modules/sales/db/shipmentLine.ts +58 -0
- package/src/modules/sales/db/syncJob.ts +70 -0
- package/src/modules/sales/docs/commands/ActivateChannel.md +42 -0
- package/src/modules/sales/docs/commands/ActivateListing.md +46 -0
- package/src/modules/sales/docs/commands/ActivateSalesPaymentTerm.md +41 -0
- package/src/modules/sales/docs/commands/ActivateSalesPriceList.md +39 -0
- package/src/modules/sales/docs/commands/ActivateSalesPriceRule.md +48 -0
- package/src/modules/sales/docs/commands/CancelChannelOrder.md +37 -0
- package/src/modules/sales/docs/commands/CancelSalesInvoice.md +39 -0
- package/src/modules/sales/docs/commands/CancelSalesOrder.md +40 -0
- package/src/modules/sales/docs/commands/CancelSyncJob.md +36 -0
- package/src/modules/sales/docs/commands/CloseSalesOrder.md +39 -0
- package/src/modules/sales/docs/commands/ConfirmSalesOrder.md +43 -0
- package/src/modules/sales/docs/commands/ConvertChannelOrder.md +44 -0
- package/src/modules/sales/docs/commands/CreateChannel.md +40 -0
- package/src/modules/sales/docs/commands/CreateListing.md +40 -0
- package/src/modules/sales/docs/commands/CreateSalesCreditNote.md +37 -0
- package/src/modules/sales/docs/commands/CreateSalesInvoice.md +39 -0
- package/src/modules/sales/docs/commands/CreateSalesOrder.md +51 -0
- package/src/modules/sales/docs/commands/CreateSalesPaymentTerm.md +38 -0
- package/src/modules/sales/docs/commands/CreateSalesPriceList.md +37 -0
- package/src/modules/sales/docs/commands/CreateSalesPriceRule.md +46 -0
- package/src/modules/sales/docs/commands/CreateShipment.md +38 -0
- package/src/modules/sales/docs/commands/DeactivateChannel.md +35 -0
- package/src/modules/sales/docs/commands/DeactivateSalesPaymentTerm.md +35 -0
- package/src/modules/sales/docs/commands/DeactivateSalesPriceList.md +35 -0
- package/src/modules/sales/docs/commands/DeactivateSalesPriceRule.md +35 -0
- package/src/modules/sales/docs/commands/IssueSalesCreditNote.md +38 -0
- package/src/modules/sales/docs/commands/IssueSalesInvoice.md +43 -0
- package/src/modules/sales/docs/commands/MarkChannelOrderException.md +37 -0
- package/src/modules/sales/docs/commands/PauseListing.md +36 -0
- package/src/modules/sales/docs/commands/PlaceSalesOrderOnCreditHold.md +41 -0
- package/src/modules/sales/docs/commands/PostShipment.md +41 -0
- package/src/modules/sales/docs/commands/RecordChannelOrder.md +45 -0
- package/src/modules/sales/docs/commands/RejectSalesOrder.md +41 -0
- package/src/modules/sales/docs/commands/ReleaseSalesOrderCreditHold.md +36 -0
- package/src/modules/sales/docs/commands/RetireListing.md +36 -0
- package/src/modules/sales/docs/commands/RetrySyncJob.md +39 -0
- package/src/modules/sales/docs/commands/SendSalesInvoice.md +38 -0
- package/src/modules/sales/docs/commands/StartSyncJob.md +39 -0
- package/src/modules/sales/docs/commands/SubmitSalesOrder.md +43 -0
- package/src/modules/sales/docs/commands/UpdateChannel.md +43 -0
- package/src/modules/sales/docs/commands/UpdateListing.md +38 -0
- package/src/modules/sales/docs/commands/UpdateSalesCreditNote.md +38 -0
- package/src/modules/sales/docs/commands/UpdateSalesInvoice.md +38 -0
- package/src/modules/sales/docs/commands/UpdateSalesOrder.md +45 -0
- package/src/modules/sales/docs/commands/UpdateSalesPaymentTerm.md +41 -0
- package/src/modules/sales/docs/commands/UpdateSalesPriceList.md +40 -0
- package/src/modules/sales/docs/commands/UpdateSalesPriceRule.md +49 -0
- package/src/modules/sales/docs/commands/UpdateShipment.md +38 -0
- package/src/modules/sales/docs/commands/bin/rm.md +52 -0
- package/src/modules/sales/docs/commands/opt/homebrew/bin/codex.md +52 -0
- package/src/modules/sales/docs/commands/opt/homebrew/bin/ps2ps2.md +52 -0
- package/src/modules/sales/docs/commands/opt/homebrew/bin/rg.md +52 -0
- package/src/modules/sales/docs/commands/opt/homebrew/bin/sha384sum.md +52 -0
- package/src/modules/sales/docs/commands/opt/homebrew/opt/libpq/bin/pg_combinebackup.md +52 -0
- package/src/modules/sales/docs/commands/sbin/mount_msdos.md +52 -0
- package/src/modules/sales/docs/commands/sbin/mount_nfs.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/cupstestppd.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/enc2xs.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/hash.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/jarsigner.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/mpsgraphtool.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/nano.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/pod2html5.34.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/ri.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/rs.md +52 -0
- package/src/modules/sales/docs/commands/usr/bin/trustcachectl.md +52 -0
- package/src/modules/sales/docs/commands/usr/sbin/htpasswd.md +52 -0
- package/src/modules/sales/docs/commands/usr/sbin/lpadmin.md +52 -0
- package/src/modules/sales/docs/commands/usr/sbin/setkey.md +52 -0
- package/src/modules/sales/docs/features/channel-listing-management.md +68 -0
- package/src/modules/sales/docs/features/channel-order-sync.md +78 -0
- package/src/modules/sales/docs/features/customer-invoicing.md +89 -0
- package/src/modules/sales/docs/features/customer-sales-pricing.md +72 -0
- package/src/modules/sales/docs/features/sales-order-lifecycle.md +96 -0
- package/src/modules/sales/docs/features/sales-payment-terms.md +67 -0
- package/src/modules/sales/docs/features/shipment-fulfillment.md +71 -0
- package/src/modules/sales/docs/models/Channel.md +48 -0
- package/src/modules/sales/docs/models/ChannelOrder.md +56 -0
- package/src/modules/sales/docs/models/ChannelOrderLine.md +39 -0
- package/src/modules/sales/docs/models/Listing.md +56 -0
- package/src/modules/sales/docs/models/SalesCreditNote.md +47 -0
- package/src/modules/sales/docs/models/SalesCreditNoteLine.md +37 -0
- package/src/modules/sales/docs/models/SalesInvoice.md +55 -0
- package/src/modules/sales/docs/models/SalesInvoiceLine.md +39 -0
- package/src/modules/sales/docs/models/SalesOrder.md +79 -0
- package/src/modules/sales/docs/models/SalesOrderLine.md +42 -0
- package/src/modules/sales/docs/models/SalesPaymentTerm.md +53 -0
- package/src/modules/sales/docs/models/SalesPriceList.md +50 -0
- package/src/modules/sales/docs/models/SalesPriceRule.md +51 -0
- package/src/modules/sales/docs/models/Shipment.md +49 -0
- package/src/modules/sales/docs/models/ShipmentLine.md +38 -0
- package/src/modules/sales/docs/models/SyncJob.md +53 -0
- package/src/modules/sales/docs/queries/CalculateInvoiceDueSchedule.md +37 -0
- package/src/modules/sales/docs/queries/GetApplicableSalesPrice.md +38 -0
- package/src/modules/sales/docs/queries/GetChannel.md +34 -0
- package/src/modules/sales/docs/queries/GetChannelOrder.md +34 -0
- package/src/modules/sales/docs/queries/GetListing.md +34 -0
- package/src/modules/sales/docs/queries/GetListingByExternalIdentifier.md +35 -0
- package/src/modules/sales/docs/queries/GetSalesCreditNote.md +34 -0
- package/src/modules/sales/docs/queries/GetSalesInvoice.md +34 -0
- package/src/modules/sales/docs/queries/GetSalesOrder.md +36 -0
- package/src/modules/sales/docs/queries/GetSalesPaymentTerm.md +34 -0
- package/src/modules/sales/docs/queries/GetSalesPriceList.md +34 -0
- package/src/modules/sales/docs/queries/GetShipment.md +34 -0
- package/src/modules/sales/docs/queries/GetSyncJob.md +34 -0
- package/src/modules/sales/docs/queries/ListChannelOrdersByStatus.md +34 -0
- package/src/modules/sales/docs/queries/ListChannels.md +33 -0
- package/src/modules/sales/docs/queries/ListListingsByChannel.md +33 -0
- package/src/modules/sales/docs/queries/ListSalesCreditNotesByInvoice.md +33 -0
- package/src/modules/sales/docs/queries/ListSalesInvoicesBySalesOrder.md +33 -0
- package/src/modules/sales/docs/queries/ListSalesOrders.md +36 -0
- package/src/modules/sales/docs/queries/ListSalesPaymentTerms.md +33 -0
- package/src/modules/sales/docs/queries/ListSalesPriceLists.md +33 -0
- package/src/modules/sales/docs/queries/ListSalesPriceRulesByPriceList.md +33 -0
- package/src/modules/sales/docs/queries/ListShipmentsBySalesOrder.md +33 -0
- package/src/modules/sales/docs/queries/ListSyncJobs.md +34 -0
- package/src/modules/sales/executor/.gitkeep +0 -0
- package/src/modules/sales/generated/.gitkeep +0 -0
- package/src/modules/sales/generated/enums.ts +119 -0
- package/src/modules/sales/generated/kysely-tailordb.ts +332 -0
- package/src/modules/sales/index.ts +2 -0
- package/src/modules/sales/lib/_db_deps.ts +67 -0
- package/src/modules/sales/lib/domain.ts +354 -0
- package/src/modules/sales/lib/errors.generated.ts +417 -0
- package/src/modules/sales/lib/permissions.generated.ts +53 -0
- package/src/modules/sales/lib/repository.ts +137 -0
- package/src/modules/sales/lib/types.ts +105 -0
- package/src/modules/sales/module.ts +418 -0
- package/src/modules/sales/permissions.ts +3 -0
- package/src/modules/sales/query/.gitkeep +0 -0
- package/src/modules/sales/query/calculateInvoiceDueSchedule.generated.ts +5 -0
- package/src/modules/sales/query/calculateInvoiceDueSchedule.test.ts +107 -0
- package/src/modules/sales/query/calculateInvoiceDueSchedule.ts +35 -0
- package/src/modules/sales/query/getApplicableSalesPrice.generated.ts +5 -0
- package/src/modules/sales/query/getApplicableSalesPrice.test.ts +110 -0
- package/src/modules/sales/query/getApplicableSalesPrice.ts +81 -0
- package/src/modules/sales/query/getChannel.generated.ts +5 -0
- package/src/modules/sales/query/getChannel.test.ts +39 -0
- package/src/modules/sales/query/getChannel.ts +15 -0
- package/src/modules/sales/query/getChannelOrder.generated.ts +5 -0
- package/src/modules/sales/query/getChannelOrder.test.ts +50 -0
- package/src/modules/sales/query/getChannelOrder.ts +29 -0
- package/src/modules/sales/query/getListing.generated.ts +5 -0
- package/src/modules/sales/query/getListing.test.ts +39 -0
- package/src/modules/sales/query/getListing.ts +15 -0
- package/src/modules/sales/query/getListingByExternalIdentifier.generated.ts +5 -0
- package/src/modules/sales/query/getListingByExternalIdentifier.test.ts +61 -0
- package/src/modules/sales/query/getListingByExternalIdentifier.ts +23 -0
- package/src/modules/sales/query/getSalesCreditNote.generated.ts +5 -0
- package/src/modules/sales/query/getSalesCreditNote.test.ts +44 -0
- package/src/modules/sales/query/getSalesCreditNote.ts +14 -0
- package/src/modules/sales/query/getSalesInvoice.generated.ts +5 -0
- package/src/modules/sales/query/getSalesInvoice.test.ts +44 -0
- package/src/modules/sales/query/getSalesInvoice.ts +14 -0
- package/src/modules/sales/query/getSalesOrder.generated.ts +5 -0
- package/src/modules/sales/query/getSalesOrder.test.ts +57 -0
- package/src/modules/sales/query/getSalesOrder.ts +20 -0
- package/src/modules/sales/query/getSalesPaymentTerm.generated.ts +5 -0
- package/src/modules/sales/query/getSalesPaymentTerm.test.ts +44 -0
- package/src/modules/sales/query/getSalesPaymentTerm.ts +24 -0
- package/src/modules/sales/query/getSalesPriceList.generated.ts +5 -0
- package/src/modules/sales/query/getSalesPriceList.test.ts +39 -0
- package/src/modules/sales/query/getSalesPriceList.ts +15 -0
- package/src/modules/sales/query/getShipment.generated.ts +5 -0
- package/src/modules/sales/query/getShipment.test.ts +44 -0
- package/src/modules/sales/query/getShipment.ts +12 -0
- package/src/modules/sales/query/getSyncJob.generated.ts +5 -0
- package/src/modules/sales/query/getSyncJob.test.ts +43 -0
- package/src/modules/sales/query/getSyncJob.ts +24 -0
- package/src/modules/sales/query/listChannelOrdersByStatus.generated.ts +5 -0
- package/src/modules/sales/query/listChannelOrdersByStatus.test.ts +58 -0
- package/src/modules/sales/query/listChannelOrdersByStatus.ts +53 -0
- package/src/modules/sales/query/listChannels.generated.ts +5 -0
- package/src/modules/sales/query/listChannels.test.ts +36 -0
- package/src/modules/sales/query/listChannels.ts +39 -0
- package/src/modules/sales/query/listListingsByChannel.generated.ts +5 -0
- package/src/modules/sales/query/listListingsByChannel.test.ts +36 -0
- package/src/modules/sales/query/listListingsByChannel.ts +39 -0
- package/src/modules/sales/query/listSalesCreditNotesByInvoice.generated.ts +5 -0
- package/src/modules/sales/query/listSalesCreditNotesByInvoice.test.ts +36 -0
- package/src/modules/sales/query/listSalesCreditNotesByInvoice.ts +42 -0
- package/src/modules/sales/query/listSalesInvoicesBySalesOrder.generated.ts +5 -0
- package/src/modules/sales/query/listSalesInvoicesBySalesOrder.test.ts +36 -0
- package/src/modules/sales/query/listSalesInvoicesBySalesOrder.ts +42 -0
- package/src/modules/sales/query/listSalesOrders.generated.ts +5 -0
- package/src/modules/sales/query/listSalesOrders.test.ts +79 -0
- package/src/modules/sales/query/listSalesOrders.ts +67 -0
- package/src/modules/sales/query/listSalesPaymentTerms.generated.ts +5 -0
- package/src/modules/sales/query/listSalesPaymentTerms.test.ts +36 -0
- package/src/modules/sales/query/listSalesPaymentTerms.ts +42 -0
- package/src/modules/sales/query/listSalesPriceLists.generated.ts +5 -0
- package/src/modules/sales/query/listSalesPriceLists.test.ts +36 -0
- package/src/modules/sales/query/listSalesPriceLists.ts +39 -0
- package/src/modules/sales/query/listSalesPriceRulesByPriceList.generated.ts +5 -0
- package/src/modules/sales/query/listSalesPriceRulesByPriceList.test.ts +39 -0
- package/src/modules/sales/query/listSalesPriceRulesByPriceList.ts +47 -0
- package/src/modules/sales/query/listShipmentsBySalesOrder.generated.ts +5 -0
- package/src/modules/sales/query/listShipmentsBySalesOrder.test.ts +36 -0
- package/src/modules/sales/query/listShipmentsBySalesOrder.ts +36 -0
- package/src/modules/sales/query/listSyncJobs.generated.ts +5 -0
- package/src/modules/sales/query/listSyncJobs.test.ts +50 -0
- package/src/modules/sales/query/listSyncJobs.ts +47 -0
- package/src/modules/sales/tailor.config.ts +13 -0
- package/src/modules/sales/tailor.d.ts +13 -0
- package/src/modules/sales/testing/commandTestUtils.ts +35 -0
- package/src/modules/sales/testing/fixtures.ts +520 -0
- package/src/modules/user-management/command/.gitkeep +0 -0
- 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/db/.gitkeep +0 -0
- package/src/modules/user-management/executor/.gitkeep +0 -0
- package/src/modules/user-management/generated/.gitkeep +0 -0
- package/src/modules/user-management/lib/errors.generated.ts +1 -6
- package/src/modules/user-management/lib/permissions.generated.ts +1 -1
- package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -2
- package/src/modules/user-management/lib/types.ts +6 -1
- package/src/modules/user-management/module.ts +1 -1
- package/src/modules/user-management/permissions.ts +3 -0
- package/src/modules/user-management/query/.gitkeep +0 -0
- package/src/modules/user-management/query/listRolePermissionsByRole.generated.ts +5 -0
- package/src/modules/user-management/query/listRolePermissionsByRole.test.ts +20 -0
- package/src/modules/user-management/query/listRolePermissionsByRole.ts +28 -0
- package/src/modules/user-management/query/listUserRolesByUser.generated.ts +5 -0
- package/src/modules/user-management/query/listUserRolesByUser.test.ts +20 -0
- package/src/modules/user-management/query/listUserRolesByUser.ts +28 -0
- package/src/schemas.ts +6 -6
- package/src/shared/defineCommand.ts +1 -1
- package/src/shared/entityTypes.ts +1 -1
- package/src/shared/uuidv5.test.ts +18 -0
- package/src/shared/uuidv5.ts +23 -0
- package/src/testing/index.ts +1 -1
- package/templates/scaffold/app/backend/package.json +1 -3
- package/templates/scaffold/app/backend/seed/exec.mjs +7 -5
- package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +0 -11
- package/templates/scaffold/module/lib/types.ts +6 -1
- package/templates/scaffold/module/permissions.ts +1 -1
- package/templates/scaffold/module/seed/index.ts +19 -0
- package/src/modules/business-partner/lib/errors.ts +0 -2
- package/src/modules/organization/lib/errors.ts +0 -1
- package/templates/scaffold/module/lib/errors.ts +0 -1
- /package/schemas/{app-compose → app}/actors.yml +0 -0
- /package/schemas/{app-compose → app}/business-flow.yml +0 -0
- /package/schemas/{app-compose → app}/requirements.yml +0 -0
- /package/schemas/{app-compose → app}/resolver.yml +0 -0
- /package/schemas/{app-compose → app}/screen.yml +0 -0
- /package/schemas/{app-compose → app}/story.yml +0 -0
- /package/src/modules/{purchase → inventory/command}/.gitkeep +0 -0
- /package/src/modules/{audit/lib/errors.ts → inventory/db/.gitkeep} +0 -0
- /package/src/modules/{coa-management/lib/errors.ts → inventory/executor/.gitkeep} +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Query Doc → Test Coverage Parity Check
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Module: {{MODULE_NAME}}
|
|
6
|
+
Query docs: {{QUERY_DOCS}}
|
|
7
|
+
Test code: {{QUERY_TEST_CODE}}
|
|
8
|
+
|
|
9
|
+
## Instructions
|
|
10
|
+
|
|
11
|
+
1. Read ALL query docs at the paths above
|
|
12
|
+
2. Read ALL test code files at the paths above
|
|
13
|
+
3. For each query doc, extract process flow branches, error scenarios, and edge cases
|
|
14
|
+
4. For each test file, extract test case descriptions and assertions
|
|
15
|
+
5. Run every parity check below against each query
|
|
16
|
+
6. Return results as JSON per the Output Format section
|
|
17
|
+
|
|
18
|
+
## Extraction: Query Docs
|
|
19
|
+
|
|
20
|
+
From each query doc, extract:
|
|
21
|
+
|
|
22
|
+
### Process Flow Branches
|
|
23
|
+
|
|
24
|
+
From the mermaid flowchart, identify each decision node and its outcomes:
|
|
25
|
+
|
|
26
|
+
- Decision: "Permission check?" → Authorized path, Unauthorized path
|
|
27
|
+
- Decision: "Entity exists?" → Found path, Not found path
|
|
28
|
+
- Decision: "Scope valid?" → Valid scope path, Invalid scope path
|
|
29
|
+
- Each terminal node = one expected test case
|
|
30
|
+
|
|
31
|
+
### Error Scenarios
|
|
32
|
+
|
|
33
|
+
From the Error Scenarios section:
|
|
34
|
+
|
|
35
|
+
- Error code + condition = one expected error test case
|
|
36
|
+
|
|
37
|
+
### Null/Empty Return Paths
|
|
38
|
+
|
|
39
|
+
From the process flow, identify "not found → return null" or "no results → return empty array" patterns:
|
|
40
|
+
|
|
41
|
+
- These need explicit test cases
|
|
42
|
+
|
|
43
|
+
### Pagination Scenarios
|
|
44
|
+
|
|
45
|
+
For paginated queries:
|
|
46
|
+
|
|
47
|
+
- Has more results → `hasNextPage: true`
|
|
48
|
+
- Last page → `hasNextPage: false`
|
|
49
|
+
- Empty results → empty items array
|
|
50
|
+
|
|
51
|
+
## Extraction: Test Code
|
|
52
|
+
|
|
53
|
+
From each test file (`query/*.test.ts`), extract:
|
|
54
|
+
|
|
55
|
+
- **Test descriptions**: `it("...")` or `test("...")` strings
|
|
56
|
+
- **Error assertions**: checks for specific error types/codes
|
|
57
|
+
- **Happy path tests**: tests that verify successful outcomes
|
|
58
|
+
- **Null/empty result tests**: tests that verify not-found or empty list handling
|
|
59
|
+
- **Authorization tests**: tests that verify permission and scope checks
|
|
60
|
+
- **Fixture usage**: which fixtures are used
|
|
61
|
+
|
|
62
|
+
See [testing.md](testing.md) for canonical testing patterns.
|
|
63
|
+
|
|
64
|
+
## Parity Checks
|
|
65
|
+
|
|
66
|
+
For each query:
|
|
67
|
+
|
|
68
|
+
| Check ID | Question |
|
|
69
|
+
| ----------------------- | ------------------------------------------------------------ |
|
|
70
|
+
| process_flow_coverage | Does each branch in process flow have a test case? |
|
|
71
|
+
| error_scenario_tests | Does each documented error scenario have a test assertion? |
|
|
72
|
+
| happy_path_tests | Are success paths tested? |
|
|
73
|
+
| null_empty_result_tests | If doc shows "not found → null" or "empty → []", is tested? |
|
|
74
|
+
| authorization_tests | Are permission and scope check paths tested? |
|
|
75
|
+
| pagination_tests | If doc describes pagination, are boundary cases tested? |
|
|
76
|
+
|
|
77
|
+
### How to Check
|
|
78
|
+
|
|
79
|
+
1. Count process flow branches from query doc flowchart
|
|
80
|
+
2. Count test cases in corresponding test file
|
|
81
|
+
3. Map each branch to a test case by description/assertion
|
|
82
|
+
4. Identify any branches without corresponding tests
|
|
83
|
+
|
|
84
|
+
## Common Gap Patterns
|
|
85
|
+
|
|
86
|
+
- **Uncovered process branches**: Flowchart branch has no test
|
|
87
|
+
- **Missing error tests**: Error scenario has no assertion
|
|
88
|
+
- **Missing null/empty tests**: "Not found → null" path untested
|
|
89
|
+
- **Missing authorization tests**: Permission or scope check untested
|
|
90
|
+
- **Missing pagination edge cases**: hasNextPage boundary untested
|
|
91
|
+
- **Missing filter combination tests**: Search queries with multiple filters untested
|
|
92
|
+
- **Test without doc branch**: Test exists but doesn't map to documented flow (potential doc gap)
|
|
93
|
+
|
|
94
|
+
## Output Format
|
|
95
|
+
|
|
96
|
+
Return a JSON object:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"check_type": "query-doc-test-parity",
|
|
101
|
+
"module": "{{MODULE_NAME}}",
|
|
102
|
+
"gaps": [...],
|
|
103
|
+
"inconsistencies": [...],
|
|
104
|
+
"summary": { "total_checks": N, "passed": N, "failed": N, "skipped": N }
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
See [impl-parity-report-format.md](impl-parity-report-format.md) for field definitions.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Query Error Implementation Parity Check
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Module: {{MODULE_NAME}}
|
|
6
|
+
Query docs: {{QUERY_DOCS}}
|
|
7
|
+
Error definitions: {{ERROR_DEFS}}
|
|
8
|
+
Query code: {{QUERY_CODE}}
|
|
9
|
+
Test code: {{QUERY_TEST_CODE}}
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
1. Read ALL query docs at the paths above
|
|
14
|
+
2. Read the error definitions file at the path above
|
|
15
|
+
3. Read ALL query code files at the paths above
|
|
16
|
+
4. Read ALL test code files at the paths above
|
|
17
|
+
5. For each documented error scenario, trace through generated class → query return → test assertion
|
|
18
|
+
6. Run every parity check below
|
|
19
|
+
7. Return results as JSON per the Output Format section
|
|
20
|
+
|
|
21
|
+
## Extraction: Query Docs
|
|
22
|
+
|
|
23
|
+
From each query doc's Error Scenarios section, extract:
|
|
24
|
+
|
|
25
|
+
- **Error code**: e.g. `INSUFFICIENT_PERMISSION`, `INVALID_SCOPE`
|
|
26
|
+
- **Condition**: when this error is returned
|
|
27
|
+
- **Expected class name**: derived from error code (PascalCase + `Error` suffix)
|
|
28
|
+
|
|
29
|
+
## Extraction: Error Definitions
|
|
30
|
+
|
|
31
|
+
From `lib/errors.generated.ts`, extract:
|
|
32
|
+
|
|
33
|
+
- **Error class names**: exported error classes
|
|
34
|
+
- **Error codes**: the code constant in each class
|
|
35
|
+
- **Error message patterns**: message templates
|
|
36
|
+
|
|
37
|
+
See [errors.md](errors.md) for error generation patterns.
|
|
38
|
+
|
|
39
|
+
## Extraction: Query Code
|
|
40
|
+
|
|
41
|
+
From each query file (`query/*.ts`, excluding `*.test.ts` and `*.generated.ts`), extract:
|
|
42
|
+
|
|
43
|
+
- **Error imports**: which error classes are imported from `../lib/errors.generated`
|
|
44
|
+
- **Error returns**: `return err(new XError(...))` statements
|
|
45
|
+
- **Error codes used**: which error codes appear in the code
|
|
46
|
+
- **Permission checks**: `requirePermission(ctx, ...)` calls that return errors
|
|
47
|
+
- **Scope checks**: scope authorization checks that return errors
|
|
48
|
+
|
|
49
|
+
## Extraction: Test Code
|
|
50
|
+
|
|
51
|
+
From each test file (`query/*.test.ts`), extract:
|
|
52
|
+
|
|
53
|
+
- **Error assertions**: tests that check for specific error types or codes
|
|
54
|
+
- **Error test descriptions**: test names that reference error scenarios
|
|
55
|
+
- **Authorization test cases**: tests verifying permission/scope rejections
|
|
56
|
+
|
|
57
|
+
## Parity Checks
|
|
58
|
+
|
|
59
|
+
For each error scenario documented in query docs:
|
|
60
|
+
|
|
61
|
+
| Check ID | Question |
|
|
62
|
+
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
63
|
+
| error_class_generated | Does the error class exist in `errors.generated.ts`? |
|
|
64
|
+
| error_code_accuracy | Does the generated error code equal `{MODULE_PREFIX}_{DOC_CODE}`? The generator prefixes doc codes with the module name in UPPER_SNAKE_CASE. |
|
|
65
|
+
| error_returned | Does the query code return this error via `err(new XError(...))`? |
|
|
66
|
+
| error_import | Does the query code import the error class from `errors.generated`? |
|
|
67
|
+
| error_test_exists | Does a test case assert this error scenario? |
|
|
68
|
+
|
|
69
|
+
### How to Check
|
|
70
|
+
|
|
71
|
+
1. List all error codes from query docs
|
|
72
|
+
2. Verify each has a generated class in `errors.generated.ts`
|
|
73
|
+
3. Check query code imports and returns the error
|
|
74
|
+
4. Check test file has an assertion for this error
|
|
75
|
+
|
|
76
|
+
## Common Gap Patterns
|
|
77
|
+
|
|
78
|
+
- **Missing error class**: Error code in doc but no generated class (re-run `erp-kit module generate code -p <path>`)
|
|
79
|
+
- **Error not returned**: Generated class exists but query code doesn't return it
|
|
80
|
+
- **Error not imported**: Query uses inline error instead of generated class
|
|
81
|
+
- **Missing error test**: Error is returned in code but no test asserts it
|
|
82
|
+
- **Error code mismatch**: Doc code differs from generated/code code
|
|
83
|
+
- **Missing permission error**: Doc requires permission but no `requirePermission` call in code
|
|
84
|
+
- **Missing scope error**: Doc describes scope restriction but no scope check in code
|
|
85
|
+
|
|
86
|
+
## Output Format
|
|
87
|
+
|
|
88
|
+
Return a JSON object:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"check_type": "query-error-implementation-parity",
|
|
93
|
+
"module": "{{MODULE_NAME}}",
|
|
94
|
+
"gaps": [...],
|
|
95
|
+
"inconsistencies": [...],
|
|
96
|
+
"summary": { "total_checks": N, "passed": N, "failed": N, "skipped": N }
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
See [impl-parity-report-format.md](impl-parity-report-format.md) for field definitions.
|
|
@@ -177,7 +177,7 @@ const units = await db
|
|
|
177
177
|
|
|
178
178
|
## Implementation Considerations
|
|
179
179
|
|
|
180
|
-
- **Error handling**: Use `ok()` / `err()` from `
|
|
180
|
+
- **Error handling**: Use `ok()` / `err()` from `@tailor-platform/erp-kit/module` — do not throw
|
|
181
181
|
- **Validation**: Check referenced entities exist before operating, return `err()` if not found
|
|
182
182
|
|
|
183
183
|
## Conventions
|
|
@@ -8,8 +8,8 @@ Run `erp-kit module generate code -p <path>` to generate query shells from `docs
|
|
|
8
8
|
|
|
9
9
|
```typescript
|
|
10
10
|
// @generated — do not edit
|
|
11
|
-
import { defineQuery } from "../../../shared";
|
|
12
11
|
import { run } from "./getItem";
|
|
12
|
+
import { defineQuery } from "@tailor-platform/erp-kit/module";
|
|
13
13
|
|
|
14
14
|
export const getItem = defineQuery(run);
|
|
15
15
|
```
|
|
@@ -17,9 +17,8 @@ export const getItem = defineQuery(run);
|
|
|
17
17
|
### Hand-written implementation
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
|
-
import type { ReadonlyDB } from "../../../shared";
|
|
21
|
-
import { ok } from "../../../shared";
|
|
22
20
|
import type { DB } from "../generated/kysely-tailordb";
|
|
21
|
+
import { ok, type ReadonlyDB } from "@tailor-platform/erp-kit/module";
|
|
23
22
|
|
|
24
23
|
export type GetItemInput = { id: string } | { sku: string };
|
|
25
24
|
|
|
@@ -45,7 +44,7 @@ For queries beyond simple lookups (joins, aggregations, complex filters), write
|
|
|
45
44
|
|
|
46
45
|
- `defineQuery` wraps all queries via generated shells
|
|
47
46
|
- `ReadonlyDB<DB>` ensures read-only access
|
|
48
|
-
- All queries return Result types using `ok()` / `err()` from `
|
|
47
|
+
- All queries return Result types using `ok()` / `err()` from `@tailor-platform/erp-kit/module` — consistent with commands
|
|
49
48
|
- Get queries return `ok({ entity: T | null })` using `executeTakeFirst()`
|
|
50
49
|
- List queries return `ok(PaginatedResult<T>)` using pagination utilities — see [Paginated List Queries](#paginated-list-queries)
|
|
51
50
|
- Input types: `type` for union inputs (get), `interface` for single-shape inputs (list)
|
|
@@ -81,14 +80,14 @@ interface PaginatedResult<T> {
|
|
|
81
80
|
3. Use `buildPaginatedResult(rows, limit)` to build the response — the limit+1 strategy determines `hasNextPage` without a separate count query
|
|
82
81
|
|
|
83
82
|
```typescript
|
|
83
|
+
import type { DB } from "../generated/kysely-tailordb";
|
|
84
84
|
import {
|
|
85
85
|
ok,
|
|
86
86
|
type ReadonlyDB,
|
|
87
87
|
type PaginationInput,
|
|
88
88
|
buildPaginatedResult,
|
|
89
89
|
DEFAULT_PAGE_SIZE,
|
|
90
|
-
} from "
|
|
91
|
-
import type { DB } from "../generated/kysely-tailordb";
|
|
90
|
+
} from "@tailor-platform/erp-kit/module";
|
|
92
91
|
|
|
93
92
|
// Define sortable fields for this query
|
|
94
93
|
type UnitOrderByField = "name" | "symbol" | "createdAt";
|
|
@@ -5,6 +5,7 @@ import { runCheck } from "../check";
|
|
|
5
5
|
import { runSyncCheck, formatSyncCheckReport } from "../sync-check";
|
|
6
6
|
import { runGenerateDoc, APP_DOC_TYPES, type DocType } from "../generate-doc";
|
|
7
7
|
import { runGenerateAppCode } from "../../generator/generate-app-code";
|
|
8
|
+
import { runGenerateSeed } from "../../generator/generate-seed";
|
|
8
9
|
import { runInitAppWithReadme } from "../init-module";
|
|
9
10
|
import { executeCommand, success, silentFailure } from "../lib/command-result";
|
|
10
11
|
|
|
@@ -13,7 +14,7 @@ const cwd = process.cwd();
|
|
|
13
14
|
const pathArgs = z.object({
|
|
14
15
|
path: arg(z.string(), {
|
|
15
16
|
alias: "p",
|
|
16
|
-
description: "Path to app
|
|
17
|
+
description: "Path to app directory",
|
|
17
18
|
}),
|
|
18
19
|
});
|
|
19
20
|
|
|
@@ -97,18 +98,32 @@ const codeCommand = defineCommand({
|
|
|
97
98
|
},
|
|
98
99
|
});
|
|
99
100
|
|
|
101
|
+
const seedCommand = defineCommand({
|
|
102
|
+
name: "seed",
|
|
103
|
+
description: "Generate seed data from module defaults",
|
|
104
|
+
args: pathArgs,
|
|
105
|
+
run: (args) => {
|
|
106
|
+
return executeCommand(() => {
|
|
107
|
+
const appPath = path.resolve(cwd, args.path);
|
|
108
|
+
const exitCode = runGenerateSeed(appPath);
|
|
109
|
+
return exitCode === 0 ? success() : silentFailure(exitCode);
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
100
114
|
const generateCommand = defineCommand({
|
|
101
115
|
name: "generate",
|
|
102
|
-
description: "Generate docs and
|
|
116
|
+
description: "Generate docs, code, and seed data for an app",
|
|
103
117
|
subCommands: {
|
|
104
118
|
doc: docCommand,
|
|
105
119
|
code: codeCommand,
|
|
120
|
+
seed: seedCommand,
|
|
106
121
|
},
|
|
107
122
|
});
|
|
108
123
|
|
|
109
124
|
export const appCommand = defineCommand({
|
|
110
125
|
name: "app",
|
|
111
|
-
description: "App
|
|
126
|
+
description: "App management",
|
|
112
127
|
subCommands: {
|
|
113
128
|
check: checkCommand,
|
|
114
129
|
"sync-check": syncCheckCommand,
|
|
@@ -13,7 +13,7 @@ describe("buildCheckTargets", () => {
|
|
|
13
13
|
]);
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
it("generates app
|
|
16
|
+
it("generates app targets when appRoot is set", () => {
|
|
17
17
|
const targets = buildCheckTargets({ modulesRoot: undefined, appRoot: "apps" });
|
|
18
18
|
expect(targets[0].glob).toBe("apps/[a-zA-Z]*/README.md");
|
|
19
19
|
expect(targets).toHaveLength(6);
|
|
@@ -4,7 +4,6 @@ import { PACKAGE_ROOT } from "../../util";
|
|
|
4
4
|
import { MODULE_PATHS } from "../lib/paths";
|
|
5
5
|
|
|
6
6
|
const MODULES_DIR = join(PACKAGE_ROOT, "src", "modules");
|
|
7
|
-
const EXCLUDED_DIRS = new Set(["shared", "testing"]);
|
|
8
7
|
|
|
9
8
|
const DOC_TYPE_MAP: Record<string, string> = {
|
|
10
9
|
command: MODULE_PATHS.docs.commands,
|
|
@@ -32,7 +31,7 @@ export function runDocModule(
|
|
|
32
31
|
docName?: string,
|
|
33
32
|
format = "text",
|
|
34
33
|
): number {
|
|
35
|
-
if (!existsSync(MODULES_DIR)
|
|
34
|
+
if (!existsSync(MODULES_DIR)) {
|
|
36
35
|
console.error(`Module not found: ${moduleName}`);
|
|
37
36
|
return 1;
|
|
38
37
|
}
|
|
@@ -41,7 +40,7 @@ export function runDocModule(
|
|
|
41
40
|
if (!existsSync(modDir)) {
|
|
42
41
|
console.error(`Module not found: ${moduleName}`);
|
|
43
42
|
const available = readdirSync(MODULES_DIR, { withFileTypes: true })
|
|
44
|
-
.filter((d) => d.isDirectory()
|
|
43
|
+
.filter((d) => d.isDirectory())
|
|
45
44
|
.map((d) => d.name)
|
|
46
45
|
.sort();
|
|
47
46
|
console.error(`Available modules: ${available.join(", ")}`);
|
|
@@ -22,13 +22,6 @@ describe("getModuleOverviews", () => {
|
|
|
22
22
|
expect(primitives!.dependencies).toEqual([]);
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
it("excludes shared and testing directories", () => {
|
|
26
|
-
const modules = getModuleOverviews();
|
|
27
|
-
const names = modules.map((m) => m.name);
|
|
28
|
-
expect(names).not.toContain("shared");
|
|
29
|
-
expect(names).not.toContain("testing");
|
|
30
|
-
});
|
|
31
|
-
|
|
32
25
|
it("returns modules in alphabetical order", () => {
|
|
33
26
|
const modules = getModuleOverviews();
|
|
34
27
|
const names = modules.map((m) => m.name);
|
|
@@ -4,7 +4,6 @@ import { PACKAGE_ROOT } from "../../util";
|
|
|
4
4
|
import { MODULE_PATHS } from "../lib/paths";
|
|
5
5
|
|
|
6
6
|
const MODULES_DIR = join(PACKAGE_ROOT, "src", "modules");
|
|
7
|
-
const EXCLUDED_DIRS = new Set(["shared", "testing"]);
|
|
8
7
|
|
|
9
8
|
interface ModuleOverview {
|
|
10
9
|
name: string;
|
|
@@ -46,7 +45,7 @@ function extractDependencies(readmePath: string): string[] {
|
|
|
46
45
|
export function getModuleOverviews(): ModuleOverview[] {
|
|
47
46
|
if (!existsSync(MODULES_DIR)) return [];
|
|
48
47
|
return readdirSync(MODULES_DIR, { withFileTypes: true })
|
|
49
|
-
.filter((d) => d.isDirectory()
|
|
48
|
+
.filter((d) => d.isDirectory())
|
|
50
49
|
.map((d) => {
|
|
51
50
|
const modDir = join(MODULES_DIR, d.name);
|
|
52
51
|
const readmePath = join(modDir, "README.md");
|
|
@@ -4,7 +4,6 @@ import { PACKAGE_ROOT } from "../../util";
|
|
|
4
4
|
import { MODULE_PATHS } from "../lib/paths";
|
|
5
5
|
|
|
6
6
|
const MODULES_DIR = join(PACKAGE_ROOT, "src", "modules");
|
|
7
|
-
const EXCLUDED_DIRS = new Set(["shared", "testing"]);
|
|
8
7
|
|
|
9
8
|
const DOC_TYPE_MAP: Record<string, string> = {
|
|
10
9
|
command: MODULE_PATHS.docs.commands,
|
|
@@ -53,7 +52,7 @@ export function searchModuleDocs(query: string, typeFilter?: string): SearchResu
|
|
|
53
52
|
|
|
54
53
|
const results: SearchResult[] = [];
|
|
55
54
|
const modules = readdirSync(MODULES_DIR, { withFileTypes: true })
|
|
56
|
-
.filter((d) => d.isDirectory()
|
|
55
|
+
.filter((d) => d.isDirectory())
|
|
57
56
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
58
57
|
|
|
59
58
|
for (const mod of modules) {
|
package/src/commands/init.ts
CHANGED
|
@@ -23,6 +23,10 @@ export function runInit(cwd: string): number {
|
|
|
23
23
|
const symlink = setupSymlink(cwd);
|
|
24
24
|
if (symlink === "linked") {
|
|
25
25
|
console.log(chalk.green(" .claude/skills -> .agents/skills/ (linked)"));
|
|
26
|
+
} else if (symlink === "copied") {
|
|
27
|
+
console.log(
|
|
28
|
+
chalk.yellow(" .claude/skills (copied — re-run `erp-kit update skills` after changes)"),
|
|
29
|
+
);
|
|
26
30
|
} else if (symlink === "skipped_directory") {
|
|
27
31
|
console.log(chalk.yellow(" Skipped .claude/skills (directory exists, not a symlink)"));
|
|
28
32
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
4
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
5
5
|
import { copySkills, copyWorkflows, copyConfigs, setupSymlink } from "./distribute";
|
|
6
6
|
|
|
7
7
|
describe("copySkills", () => {
|
|
@@ -123,4 +123,35 @@ describe("setupSymlink", () => {
|
|
|
123
123
|
const result = setupSymlink(tmpDir);
|
|
124
124
|
expect(result).toBe("skipped_directory");
|
|
125
125
|
});
|
|
126
|
+
|
|
127
|
+
it("falls back to copy when symlink creation fails", () => {
|
|
128
|
+
// Populate .agents/skills with a test file so copy has something to work with
|
|
129
|
+
const agentsSkills = path.join(tmpDir, ".agents", "skills", "test-skill");
|
|
130
|
+
fs.mkdirSync(agentsSkills, { recursive: true });
|
|
131
|
+
fs.writeFileSync(path.join(agentsSkills, "SKILL.md"), "# Test");
|
|
132
|
+
|
|
133
|
+
// Simulate Windows EPERM — symlink creation fails
|
|
134
|
+
vi.spyOn(fs, "symlinkSync").mockImplementation(() => {
|
|
135
|
+
const err = new Error("EPERM: operation not permitted") as NodeJS.ErrnoException;
|
|
136
|
+
err.code = "EPERM";
|
|
137
|
+
throw err;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
try {
|
|
141
|
+
const result = setupSymlink(tmpDir);
|
|
142
|
+
expect(result).toBe("copied");
|
|
143
|
+
|
|
144
|
+
const claudeSkills = path.join(tmpDir, ".claude", "skills");
|
|
145
|
+
expect(fs.existsSync(claudeSkills)).toBe(true);
|
|
146
|
+
expect(fs.statSync(claudeSkills).isDirectory()).toBe(true);
|
|
147
|
+
// Not a symlink — it's a real directory copy
|
|
148
|
+
expect(fs.lstatSync(claudeSkills).isSymbolicLink()).toBe(false);
|
|
149
|
+
// Content was copied
|
|
150
|
+
expect(fs.readFileSync(path.join(claudeSkills, "test-skill", "SKILL.md"), "utf-8")).toBe(
|
|
151
|
+
"# Test",
|
|
152
|
+
);
|
|
153
|
+
} finally {
|
|
154
|
+
vi.restoreAllMocks();
|
|
155
|
+
}
|
|
156
|
+
});
|
|
126
157
|
});
|
|
@@ -90,7 +90,20 @@ export function copyConfigs(cwd: string): CopyResult {
|
|
|
90
90
|
return { copied, removed: 0 };
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
export type SymlinkResult = "linked" | "already_linked" | "skipped_directory";
|
|
93
|
+
export type SymlinkResult = "linked" | "already_linked" | "skipped_directory" | "copied";
|
|
94
|
+
|
|
95
|
+
function createSymlink(target: string, linkPath: string): void {
|
|
96
|
+
const type = process.platform === "win32" ? "junction" : undefined;
|
|
97
|
+
// Junctions on Windows require absolute targets
|
|
98
|
+
const resolvedTarget =
|
|
99
|
+
type === "junction" ? path.resolve(path.dirname(linkPath), target) : target;
|
|
100
|
+
fs.symlinkSync(resolvedTarget, linkPath, type);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function copySkillsDirectory(src: string, dest: string): void {
|
|
104
|
+
if (!fs.existsSync(src)) return;
|
|
105
|
+
fs.cpSync(src, dest, { recursive: true });
|
|
106
|
+
}
|
|
94
107
|
|
|
95
108
|
export function setupSymlink(cwd: string): SymlinkResult {
|
|
96
109
|
const skillsDest = path.join(cwd, ".agents", "skills");
|
|
@@ -111,15 +124,44 @@ export function setupSymlink(cwd: string): SymlinkResult {
|
|
|
111
124
|
const current = fs.readlinkSync(claudeSkills);
|
|
112
125
|
if (current === relTarget) return "already_linked";
|
|
113
126
|
fs.unlinkSync(claudeSkills);
|
|
114
|
-
|
|
115
|
-
|
|
127
|
+
try {
|
|
128
|
+
createSymlink(relTarget, claudeSkills);
|
|
129
|
+
return "linked";
|
|
130
|
+
} catch {
|
|
131
|
+
copySkillsDirectory(skillsDest, claudeSkills);
|
|
132
|
+
return "copied";
|
|
133
|
+
}
|
|
116
134
|
}
|
|
117
135
|
return "skipped_directory";
|
|
118
136
|
}
|
|
119
137
|
|
|
120
138
|
fs.mkdirSync(path.dirname(claudeSkills), { recursive: true });
|
|
121
|
-
|
|
122
|
-
|
|
139
|
+
try {
|
|
140
|
+
createSymlink(relTarget, claudeSkills);
|
|
141
|
+
return "linked";
|
|
142
|
+
} catch {
|
|
143
|
+
copySkillsDirectory(skillsDest, claudeSkills);
|
|
144
|
+
return "copied";
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* When .claude/skills is a real directory (copy fallback on Windows),
|
|
150
|
+
* re-sync it with .agents/skills after an update.
|
|
151
|
+
*/
|
|
152
|
+
export function refreshCopiedSkills(cwd: string): boolean {
|
|
153
|
+
const claudeSkills = path.join(cwd, ".claude", "skills");
|
|
154
|
+
try {
|
|
155
|
+
const stat = fs.lstatSync(claudeSkills);
|
|
156
|
+
if (stat.isSymbolicLink() || !stat.isDirectory()) return false;
|
|
157
|
+
} catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
// It's a real directory — delete and re-copy from .agents/skills
|
|
161
|
+
const skillsDest = path.join(cwd, ".agents", "skills");
|
|
162
|
+
fs.rmSync(claudeSkills, { recursive: true, force: true });
|
|
163
|
+
copySkillsDirectory(skillsDest, claudeSkills);
|
|
164
|
+
return true;
|
|
123
165
|
}
|
|
124
166
|
|
|
125
167
|
export function isAlreadyInitialized(cwd: string): boolean {
|
|
@@ -190,7 +190,7 @@ describe("runSourceSyncCheck", () => {
|
|
|
190
190
|
fs.writeFileSync(path.join(resolverSrcDir, "myResolver.ts"), "export {}");
|
|
191
191
|
|
|
192
192
|
const result = await runSourceSyncCheck({ modulesRoot: "modules", appRoot: undefined }, tmpDir);
|
|
193
|
-
// Without appRoot, app
|
|
193
|
+
// Without appRoot, app patterns are not checked
|
|
194
194
|
expect(result.exitCode).toBe(0);
|
|
195
195
|
expect(result.errors).toHaveLength(0);
|
|
196
196
|
});
|
|
@@ -77,6 +77,22 @@ describe("runUpdate", () => {
|
|
|
77
77
|
expect(content).toContain("@tailor-platform/erp-kit");
|
|
78
78
|
});
|
|
79
79
|
|
|
80
|
+
it("refreshes .claude/skills when it is a copied directory (not a symlink)", () => {
|
|
81
|
+
// Simulate a prior "copied" fallback: .claude/skills is a real directory with stale content
|
|
82
|
+
const claudeSkills = path.join(tmpDir, ".claude", "skills");
|
|
83
|
+
fs.mkdirSync(path.join(claudeSkills, "erp-kit-old"), { recursive: true });
|
|
84
|
+
fs.writeFileSync(path.join(claudeSkills, "erp-kit-old", "SKILL.md"), "# Old");
|
|
85
|
+
|
|
86
|
+
runUpdate(tmpDir, ["skills"]);
|
|
87
|
+
|
|
88
|
+
// Stale skill should be gone from .claude/skills
|
|
89
|
+
expect(fs.existsSync(path.join(claudeSkills, "erp-kit-old"))).toBe(false);
|
|
90
|
+
// Current skills should be present
|
|
91
|
+
expect(
|
|
92
|
+
fs.existsSync(path.join(claudeSkills, "erp-kit-module-1-requirements", "SKILL.md")),
|
|
93
|
+
).toBe(true);
|
|
94
|
+
});
|
|
95
|
+
|
|
80
96
|
it("never touches config files", () => {
|
|
81
97
|
const configPath = path.join(tmpDir, "license.config.json");
|
|
82
98
|
fs.writeFileSync(configPath, '{"groups": ["notice"]}');
|
package/src/commands/update.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { copySkills, copyWorkflows } from "./lib/distribute";
|
|
2
|
+
import { copySkills, copyWorkflows, refreshCopiedSkills } from "./lib/distribute";
|
|
3
3
|
|
|
4
4
|
export const VALID_RESOURCES = ["skills", "workflows"] as const;
|
|
5
5
|
export type Resource = (typeof VALID_RESOURCES)[number];
|
|
@@ -27,6 +27,9 @@ export function runUpdate(cwd: string, resources: string[]): number {
|
|
|
27
27
|
console.log(chalk.green(` Removed ${result.removed} stale erp-kit-* skills`));
|
|
28
28
|
}
|
|
29
29
|
console.log(chalk.green(` Copied ${result.copied} skill files to .agents/skills/`));
|
|
30
|
+
if (refreshCopiedSkills(cwd)) {
|
|
31
|
+
console.log(chalk.green(` Refreshed .claude/skills/ (copy)`));
|
|
32
|
+
}
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
if (selected.has("workflows")) {
|
|
@@ -44,7 +44,9 @@ describe("generateErrors", () => {
|
|
|
44
44
|
const result = generateErrors("item-management", docs);
|
|
45
45
|
|
|
46
46
|
expect(result).toContain("// @generated — do not edit");
|
|
47
|
-
expect(result).toContain(
|
|
47
|
+
expect(result).toContain(
|
|
48
|
+
'import { createDomainError } from "@tailor-platform/erp-kit/module";',
|
|
49
|
+
);
|
|
48
50
|
expect(result).toContain("export const DuplicateSkuError = createDomainError(");
|
|
49
51
|
expect(result).toContain('"DuplicateSkuError", "ITEM_MANAGEMENT_DUPLICATE_SKU"');
|
|
50
52
|
expect(result).toContain("export const UnitNotFoundError = createDomainError(");
|
|
@@ -92,7 +94,9 @@ describe("generatePermissions", () => {
|
|
|
92
94
|
const result = generatePermissions("item-management", commandNames);
|
|
93
95
|
|
|
94
96
|
expect(result).toContain("// @generated — do not edit");
|
|
95
|
-
expect(result).toContain(
|
|
97
|
+
expect(result).toContain(
|
|
98
|
+
'import { definePermissions } from "@tailor-platform/erp-kit/module";',
|
|
99
|
+
);
|
|
96
100
|
expect(result).toContain('"item-management"');
|
|
97
101
|
expect(result).toContain('"createItem"');
|
|
98
102
|
expect(result).toContain('"updateItem"');
|
|
@@ -128,7 +132,7 @@ describe("generateCommandShell", () => {
|
|
|
128
132
|
const result = generateCommandShell(doc);
|
|
129
133
|
|
|
130
134
|
expect(result).toContain("// @generated — do not edit");
|
|
131
|
-
expect(result).toContain('import { defineCommand } from "
|
|
135
|
+
expect(result).toContain('import { defineCommand } from "@tailor-platform/erp-kit/module";');
|
|
132
136
|
expect(result).toContain('import { permissions } from "../lib/permissions.generated";');
|
|
133
137
|
expect(result).toContain('import { run } from "./activateItem";');
|
|
134
138
|
expect(result).toContain(
|
|
@@ -145,7 +149,7 @@ describe("generateCommandShell", () => {
|
|
|
145
149
|
|
|
146
150
|
const result = generateCommandShell(doc);
|
|
147
151
|
|
|
148
|
-
expect(result).toContain('import { defineCommand } from "
|
|
152
|
+
expect(result).toContain('import { defineCommand } from "@tailor-platform/erp-kit/module";');
|
|
149
153
|
expect(result).toContain('import { run } from "./createItem";');
|
|
150
154
|
expect(result).toContain(
|
|
151
155
|
"export const createItem = defineCommand(permissions.createItem, run);",
|
|
@@ -164,7 +168,7 @@ describe("generateQueryShell", () => {
|
|
|
164
168
|
const result = generateQueryShell(doc);
|
|
165
169
|
|
|
166
170
|
expect(result).toContain("// @generated — do not edit");
|
|
167
|
-
expect(result).toContain('import { defineQuery } from "
|
|
171
|
+
expect(result).toContain('import { defineQuery } from "@tailor-platform/erp-kit/module";');
|
|
168
172
|
expect(result).toContain('import { run } from "./getTaxonomyNode";');
|
|
169
173
|
expect(result).toContain("export const getTaxonomyNode = defineQuery(run);");
|
|
170
174
|
});
|
|
@@ -180,7 +184,7 @@ describe("generateQueryStub", () => {
|
|
|
180
184
|
|
|
181
185
|
const result = generateQueryStub(doc);
|
|
182
186
|
|
|
183
|
-
expect(result).toContain('import type { ReadonlyDB } from "
|
|
187
|
+
expect(result).toContain('import type { ReadonlyDB } from "@tailor-platform/erp-kit/module";');
|
|
184
188
|
expect(result).toContain('import type { DB } from "../generated/kysely-tailordb";');
|
|
185
189
|
expect(result).toContain("export interface GetTaxonomyNodeInput {");
|
|
186
190
|
expect(result).toContain(
|
|
@@ -28,7 +28,7 @@ export function generateErrors(moduleName: string, docs: ParsedCommandDoc[]): st
|
|
|
28
28
|
if (lines.length === 0) return "";
|
|
29
29
|
|
|
30
30
|
return `// @generated — do not edit
|
|
31
|
-
import { createDomainError } from "
|
|
31
|
+
import { createDomainError } from "@tailor-platform/erp-kit/module";
|
|
32
32
|
|
|
33
33
|
${lines.join("\n")}`;
|
|
34
34
|
}
|