@accounter/server 0.0.9-alpha-20251231123714-6cdd9de71b4672d74ece5d34c438d162987b2c93 → 0.0.9-alpha-20251231171312-67d2850c6eacafb65d42d987f3d49dca3c0f8bdd
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 +27 -5
- package/README.md +66 -3
- package/dist/green-invoice-graphql/src/mesh-artifacts/index.d.ts +1 -1
- package/dist/green-invoice-graphql/src/mesh-artifacts/index.js +2 -2
- package/dist/green-invoice-graphql/src/mesh-artifacts/index.js.map +1 -1
- package/dist/server/scripts/seed-admin-context.js +20 -25
- package/dist/server/scripts/seed-admin-context.js.map +1 -1
- package/dist/server/src/__tests__/db-bootstrap.test.js +7 -2
- package/dist/server/src/__tests__/db-bootstrap.test.js.map +1 -1
- package/dist/server/src/__tests__/factories/business.d.ts +1 -1
- package/dist/server/src/__tests__/factories/financial-account.d.ts +1 -1
- package/dist/server/src/__tests__/factories/index.test.js +1 -0
- package/dist/server/src/__tests__/factories/index.test.js.map +1 -1
- package/dist/server/src/__tests__/factories/tax-category.d.ts +1 -1
- package/dist/server/src/__tests__/factories/tax-category.js +1 -1
- package/dist/server/src/__tests__/factories/tax-category.js.map +1 -1
- package/dist/server/src/__tests__/factories/tax-category.test.js +8 -6
- package/dist/server/src/__tests__/factories/tax-category.test.js.map +1 -1
- package/dist/server/src/__tests__/helpers/fixture-loader.d.ts +1 -1
- package/dist/server/src/__tests__/helpers/fixture-loader.js +25 -52
- package/dist/server/src/__tests__/helpers/fixture-loader.js.map +1 -1
- package/dist/server/src/__tests__/helpers/migration-verification.d.ts +1 -1
- package/dist/server/src/__tests__/helpers/migration-verification.js.map +1 -1
- package/dist/server/src/__tests__/helpers/seed-helpers.business.test.js +4 -4
- package/dist/server/src/__tests__/helpers/seed-helpers.business.test.js.map +1 -1
- package/dist/server/src/__tests__/helpers/seed-helpers.d.ts +9 -9
- package/dist/server/src/__tests__/helpers/seed-helpers.js +57 -54
- package/dist/server/src/__tests__/helpers/seed-helpers.js.map +1 -1
- package/dist/server/src/__tests__/seed-admin-context.integration.test.js +2 -1
- package/dist/server/src/__tests__/seed-admin-context.integration.test.js.map +1 -1
- package/dist/server/src/demo-fixtures/__tests__/deterministic-uuid.test.js +3 -2
- package/dist/server/src/demo-fixtures/__tests__/deterministic-uuid.test.js.map +1 -1
- package/dist/server/src/demo-fixtures/__tests__/seed-and-validate.test.d.ts +1 -0
- package/dist/server/src/demo-fixtures/__tests__/seed-and-validate.test.js +69 -0
- package/dist/server/src/demo-fixtures/__tests__/seed-and-validate.test.js.map +1 -0
- package/dist/server/src/demo-fixtures/__tests__/use-case-registry.test.d.ts +1 -0
- package/dist/server/src/demo-fixtures/__tests__/use-case-registry.test.js +26 -0
- package/dist/server/src/demo-fixtures/__tests__/use-case-registry.test.js.map +1 -0
- package/dist/server/src/demo-fixtures/helpers/admin-context.d.ts +10 -0
- package/dist/server/src/demo-fixtures/helpers/admin-context.js +40 -0
- package/dist/server/src/demo-fixtures/helpers/admin-context.js.map +1 -0
- package/dist/server/src/demo-fixtures/helpers/placeholder.d.ts +45 -0
- package/dist/server/src/demo-fixtures/helpers/placeholder.js +50 -0
- package/dist/server/src/demo-fixtures/helpers/placeholder.js.map +1 -0
- package/dist/server/src/demo-fixtures/helpers/seed-exchange-rates.d.ts +21 -0
- package/dist/server/src/demo-fixtures/helpers/seed-exchange-rates.js +26 -0
- package/dist/server/src/demo-fixtures/helpers/seed-exchange-rates.js.map +1 -0
- package/dist/server/src/demo-fixtures/helpers/seed-vat.d.ts +20 -0
- package/dist/server/src/demo-fixtures/helpers/seed-vat.js +30 -0
- package/dist/server/src/demo-fixtures/helpers/seed-vat.js.map +1 -0
- package/dist/server/src/demo-fixtures/use-cases/equity/shareholder-dividend.d.ts +9 -0
- package/dist/server/src/demo-fixtures/use-cases/equity/shareholder-dividend.js +86 -0
- package/dist/server/src/demo-fixtures/use-cases/equity/shareholder-dividend.js.map +1 -0
- package/dist/server/src/demo-fixtures/use-cases/expenses/monthly-expense-foreign-currency.d.ts +12 -0
- package/dist/server/src/demo-fixtures/use-cases/expenses/monthly-expense-foreign-currency.js +375 -0
- package/dist/server/src/demo-fixtures/use-cases/expenses/monthly-expense-foreign-currency.js.map +1 -0
- package/dist/server/src/demo-fixtures/use-cases/income/client-payment-with-refund.d.ts +10 -0
- package/dist/server/src/demo-fixtures/use-cases/income/client-payment-with-refund.js +113 -0
- package/dist/server/src/demo-fixtures/use-cases/income/client-payment-with-refund.js.map +1 -0
- package/dist/server/src/demo-fixtures/use-cases/index.d.ts +41 -0
- package/dist/server/src/demo-fixtures/use-cases/index.js +50 -0
- package/dist/server/src/demo-fixtures/use-cases/index.js.map +1 -0
- package/dist/server/src/demo-fixtures/validate-demo-data.d.ts +1 -0
- package/dist/server/src/demo-fixtures/validate-demo-data.js +117 -0
- package/dist/server/src/demo-fixtures/validate-demo-data.js.map +1 -0
- package/dist/server/src/demo-fixtures/validators/ledger-validators.d.ts +349 -0
- package/dist/server/src/demo-fixtures/validators/ledger-validators.js +602 -0
- package/dist/server/src/demo-fixtures/validators/ledger-validators.js.map +1 -0
- package/dist/server/src/demo-fixtures/validators/ledger-validators.test.d.ts +1 -0
- package/dist/server/src/demo-fixtures/validators/ledger-validators.test.js +247 -0
- package/dist/server/src/demo-fixtures/validators/ledger-validators.test.js.map +1 -0
- package/dist/server/src/demo-fixtures/validators/types.d.ts +69 -0
- package/dist/server/src/demo-fixtures/validators/types.js +8 -0
- package/dist/server/src/demo-fixtures/validators/types.js.map +1 -0
- package/dist/server/src/fixtures/fixture-spec.d.ts +146 -0
- package/dist/server/src/fixtures/fixture-spec.js +2 -0
- package/dist/server/src/fixtures/fixture-spec.js.map +1 -0
- package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js +4 -0
- package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js.map +1 -1
- package/dist/server/src/modules/ledger/__tests__/ledger-scenario-a.integration.test.js +4 -3
- package/dist/server/src/modules/ledger/__tests__/ledger-scenario-a.integration.test.js.map +1 -1
- package/dist/server/src/modules/ledger/__tests__/ledger-scenario-b.integration.test.js +5 -3
- package/dist/server/src/modules/ledger/__tests__/ledger-scenario-b.integration.test.js.map +1 -1
- package/dist/server/src/shared/constants.d.ts +1 -0
- package/dist/server/src/shared/constants.js +1 -0
- package/dist/server/src/shared/constants.js.map +1 -1
- package/dist/server/src/shared/helpers/misc.js +2 -2
- package/dist/server/src/shared/helpers/misc.js.map +1 -1
- package/docs/demo-staging-guide.md +611 -0
- package/package.json +5 -2
- package/scripts/seed-admin-context.ts +22 -33
- package/src/__tests__/db-bootstrap.test.ts +9 -2
- package/src/__tests__/factories/business.ts +1 -1
- package/src/__tests__/factories/financial-account.ts +1 -1
- package/src/__tests__/factories/index.test.ts +1 -0
- package/src/__tests__/factories/tax-category.test.ts +8 -6
- package/src/__tests__/factories/tax-category.ts +2 -2
- package/src/__tests__/helpers/fixture-loader.ts +26 -61
- package/src/__tests__/helpers/migration-verification.ts +2 -2
- package/src/__tests__/helpers/seed-helpers.business.test.ts +4 -4
- package/src/__tests__/helpers/seed-helpers.ts +66 -75
- package/src/__tests__/seed-admin-context.integration.test.ts +2 -1
- package/src/demo-fixtures/__tests__/deterministic-uuid.test.ts +3 -2
- package/src/demo-fixtures/__tests__/seed-and-validate.test.ts +96 -0
- package/src/demo-fixtures/__tests__/use-case-registry.test.ts +27 -0
- package/src/demo-fixtures/helpers/admin-context.ts +59 -0
- package/src/demo-fixtures/helpers/placeholder.ts +50 -0
- package/src/demo-fixtures/helpers/seed-exchange-rates.ts +29 -0
- package/src/demo-fixtures/helpers/seed-vat.ts +35 -0
- package/src/demo-fixtures/use-cases/equity/shareholder-dividend.ts +88 -0
- package/src/demo-fixtures/use-cases/expenses/monthly-expense-foreign-currency.ts +377 -0
- package/src/demo-fixtures/use-cases/income/client-payment-with-refund.ts +115 -0
- package/src/demo-fixtures/use-cases/index.ts +52 -0
- package/src/demo-fixtures/validate-demo-data.ts +153 -0
- package/src/demo-fixtures/validators/README.md +190 -0
- package/src/demo-fixtures/validators/ledger-validators.test.ts +298 -0
- package/src/demo-fixtures/validators/ledger-validators.ts +711 -0
- package/src/demo-fixtures/validators/types.ts +83 -0
- package/src/fixtures/fixture-spec.ts +158 -0
- package/src/modules/charges-matcher/__tests__/single-match-integration.test.ts +6 -0
- package/src/modules/ledger/__tests__/ledger-scenario-a.integration.test.ts +4 -3
- package/src/modules/ledger/__tests__/ledger-scenario-b.integration.test.ts +6 -3
- package/src/shared/constants.ts +2 -0
- package/src/shared/helpers/misc.ts +2 -3
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
import { assertValidFixture } from './fixture-validation.js';
|
|
11
11
|
import { qualifyTable } from './test-db-config.js';
|
|
12
12
|
import { makeUUID, makeUUIDLegacy } from '../../demo-fixtures/helpers/deterministic-uuid.js';
|
|
13
|
+
import { UUID_REGEX } from '../../shared/constants.js';
|
|
14
|
+
import { ensureBusinessForEntity, ensureFinancialEntity, ensureTaxCategoryForEntity } from './seed-helpers.js';
|
|
13
15
|
/**
|
|
14
16
|
* Custom error for fixture insertion failures
|
|
15
17
|
*
|
|
@@ -100,7 +102,7 @@ export class FixtureInsertionError extends Error {
|
|
|
100
102
|
* );
|
|
101
103
|
* ```
|
|
102
104
|
*/
|
|
103
|
-
export async function insertFixture(client, fixture) {
|
|
105
|
+
export async function insertFixture(client, fixture, adminBusinessId) {
|
|
104
106
|
// Validate fixture before insertion
|
|
105
107
|
assertValidFixture(fixture);
|
|
106
108
|
const idMapping = new Map();
|
|
@@ -125,42 +127,16 @@ export async function insertFixture(client, fixture) {
|
|
|
125
127
|
for (const business of fixture.businesses.businesses) {
|
|
126
128
|
// Insert financial entity first (type='business')
|
|
127
129
|
// Field mapping: business.name used for display (required); hebrewName is legacy/optional
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
const { id: entityId } = await ensureFinancialEntity(client, {
|
|
131
|
+
id: business.id,
|
|
132
|
+
name: business.name || business.id,
|
|
133
|
+
type: 'business',
|
|
134
|
+
ownerId: adminBusinessId,
|
|
135
|
+
});
|
|
136
|
+
const { id: businessId, ...options } = business;
|
|
132
137
|
// Insert business details - note: vat_number column maps to governmentId field
|
|
133
|
-
await client
|
|
134
|
-
|
|
135
|
-
exempt_dealer, suggestion_data, optional_vat, country,
|
|
136
|
-
pcn874_record_type_override, can_settle_with_receipt, no_invoices_required
|
|
137
|
-
)
|
|
138
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)
|
|
139
|
-
ON CONFLICT (id) DO NOTHING`, [
|
|
140
|
-
business.id,
|
|
141
|
-
business.hebrewName,
|
|
142
|
-
business.address,
|
|
143
|
-
business.city,
|
|
144
|
-
business.zipCode,
|
|
145
|
-
business.email,
|
|
146
|
-
business.website,
|
|
147
|
-
business.phoneNumber,
|
|
148
|
-
business.governmentId, // Maps to vat_number column
|
|
149
|
-
business.exemptDealer ?? false,
|
|
150
|
-
business.suggestions ?? null,
|
|
151
|
-
business.optionalVat ?? false,
|
|
152
|
-
business.country ?? 'ISR',
|
|
153
|
-
business.pcn874RecordTypeOverride ?? null,
|
|
154
|
-
business.isReceiptEnough ?? false,
|
|
155
|
-
business.isDocumentsOptional ?? false,
|
|
156
|
-
]);
|
|
157
|
-
if (entityResult.rows.length > 0) {
|
|
158
|
-
idMapping.set(business.id, entityResult.rows[0].id);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
// Entity already existed, map to itself
|
|
162
|
-
idMapping.set(business.id, business.id);
|
|
163
|
-
}
|
|
138
|
+
await ensureBusinessForEntity(client, entityId, options);
|
|
139
|
+
idMapping.set(business.id, entityId);
|
|
164
140
|
}
|
|
165
141
|
});
|
|
166
142
|
}
|
|
@@ -169,22 +145,19 @@ export async function insertFixture(client, fixture) {
|
|
|
169
145
|
await executeSavepointSection('tax_categories', async () => {
|
|
170
146
|
for (const taxCategory of fixture.taxCategories.taxCategories) {
|
|
171
147
|
// Insert financial entity first
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
148
|
+
const { id: entityId } = await ensureFinancialEntity(client, {
|
|
149
|
+
id: taxCategory.id,
|
|
150
|
+
name: taxCategory.name || taxCategory.id,
|
|
151
|
+
type: 'tax_category',
|
|
152
|
+
ownerId: adminBusinessId,
|
|
153
|
+
});
|
|
176
154
|
// Insert tax category details
|
|
177
|
-
await client
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
idMapping.set(taxCategory.id, entityResult.rows[0].id);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
idMapping.set(taxCategory.id, taxCategory.id);
|
|
187
|
-
}
|
|
155
|
+
await ensureTaxCategoryForEntity(client, entityId, {
|
|
156
|
+
name: taxCategory.name,
|
|
157
|
+
hashavshevetName: taxCategory.hashavshevetName,
|
|
158
|
+
taxExcluded: taxCategory.taxExcluded,
|
|
159
|
+
});
|
|
160
|
+
idMapping.set(taxCategory.id, entityId);
|
|
188
161
|
}
|
|
189
162
|
});
|
|
190
163
|
}
|
|
@@ -266,7 +239,7 @@ export async function insertFixture(client, fixture) {
|
|
|
266
239
|
for (const transaction of fixture.transactions.transactions) {
|
|
267
240
|
// If account_id looks like an account_number (not a UUID), look up the actual UUID
|
|
268
241
|
let accountId = transaction.account_id;
|
|
269
|
-
if (accountId && !accountId.match(
|
|
242
|
+
if (accountId && !accountId.match(UUID_REGEX)) {
|
|
270
243
|
// account_id is actually an account_number, look up the UUID
|
|
271
244
|
const accountResult = await client.query(`SELECT id FROM ${qualifyTable('financial_accounts')} WHERE account_number = $1`, [accountId]);
|
|
272
245
|
if (accountResult.rows.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-loader.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/fixture-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"fixture-loader.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/fixture-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-verification.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/migration-verification.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"migration-verification.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/migration-verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,IAAI,EAAmB,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAQjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAwC,EACxC,MAAM,GAAG,kBAAkB;IAE3B,IAAI,MAA2B,CAAC;IAChC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,YAAY,YAAY,IAAI,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,GAAG,UAAU,CAAC;QACpB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,MAAM,GAAG,YAAY,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,iBAAiB,MAAM,oCAAoC,EAC3D,CAAC,qBAAqB,CAAC,CACxB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;QACvC,OAAO;YACL,QAAQ;YACR,mBAAmB,EAAE,qBAAqB;YAC1C,YAAY,EAAE,QAAQ;gBACpB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,qBAAqB,qBAAqB,yBAAyB;SACxE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,mBAAmB,EAAE,qBAAqB;YAC1C,YAAY,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACtG,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,aAAa,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACzC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,YAAwC,EACxC,MAAM,GAAG,kBAAkB;IAE3B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,YAAY;YACjB,8BAA8B,MAAM,CAAC,mBAAmB,2DAA2D,CACtH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -48,7 +48,7 @@ describe('ensureBusinessForEntity', () => {
|
|
|
48
48
|
type: 'business',
|
|
49
49
|
});
|
|
50
50
|
// Ensure business with noInvoicesRequired set to true
|
|
51
|
-
await ensureBusinessForEntity(client, entityId, {
|
|
51
|
+
await ensureBusinessForEntity(client, entityId, { isDocumentsOptional: true });
|
|
52
52
|
// Verify business has correct option set
|
|
53
53
|
const result = await client.query(`SELECT id, no_invoices_required FROM ${qualifyTable('businesses')} WHERE id = $1`, [entityId]);
|
|
54
54
|
expect(result.rows).toHaveLength(1);
|
|
@@ -74,10 +74,10 @@ describe('ensureBusinessForEntity', () => {
|
|
|
74
74
|
name: 'Test Business Entity 5',
|
|
75
75
|
type: 'business',
|
|
76
76
|
});
|
|
77
|
-
// Create business with
|
|
78
|
-
await ensureBusinessForEntity(client, entityId, {
|
|
77
|
+
// Create business with isDocumentsOptional = true
|
|
78
|
+
await ensureBusinessForEntity(client, entityId, { isDocumentsOptional: true });
|
|
79
79
|
// Call again with different options (should be no-op)
|
|
80
|
-
await ensureBusinessForEntity(client, entityId, {
|
|
80
|
+
await ensureBusinessForEntity(client, entityId, { isDocumentsOptional: false });
|
|
81
81
|
// Verify original value is preserved
|
|
82
82
|
const result = await client.query(`SELECT no_invoices_required FROM ${qualifyTable('businesses')} WHERE id = $1`, [entityId]);
|
|
83
83
|
expect(result.rows).toHaveLength(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-helpers.business.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/seed-helpers.business.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"seed-helpers.business.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/seed-helpers.business.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { PoolClient } from 'pg';
|
|
1
|
+
import type { Client, PoolClient } from 'pg';
|
|
2
|
+
import type { FixtureBusinesses, FixtureTaxCategories } from './fixture-types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Valid financial entity types based on database schema
|
|
4
5
|
*/
|
|
5
6
|
export type FinancialEntityType = 'business' | 'tax_category' | 'tag';
|
|
6
7
|
export interface EnsureFinancialEntityParams {
|
|
8
|
+
id?: string;
|
|
7
9
|
name: string;
|
|
8
10
|
type: FinancialEntityType;
|
|
9
11
|
ownerId?: string;
|
|
@@ -56,10 +58,8 @@ export interface FinancialEntityResult {
|
|
|
56
58
|
* // sameId === adminId
|
|
57
59
|
* ```
|
|
58
60
|
*/
|
|
59
|
-
export declare function ensureFinancialEntity(client: PoolClient, params: EnsureFinancialEntityParams): Promise<FinancialEntityResult>;
|
|
60
|
-
export
|
|
61
|
-
noInvoicesRequired?: boolean;
|
|
62
|
-
}
|
|
61
|
+
export declare function ensureFinancialEntity(client: PoolClient | Client, params: EnsureFinancialEntityParams): Promise<FinancialEntityResult>;
|
|
62
|
+
export type EnsureBusinessForEntityOptions = Partial<Omit<FixtureBusinesses['businesses'][number], 'id'>>;
|
|
63
63
|
/**
|
|
64
64
|
* Ensure a business row exists for a given financial entity id (idempotent)
|
|
65
65
|
*
|
|
@@ -101,10 +101,10 @@ export interface EnsureBusinessForEntityOptions {
|
|
|
101
101
|
* });
|
|
102
102
|
* ```
|
|
103
103
|
*/
|
|
104
|
-
export declare function ensureBusinessForEntity(client: PoolClient, entityId: string, options?: EnsureBusinessForEntityOptions): Promise<void>;
|
|
105
|
-
export
|
|
104
|
+
export declare function ensureBusinessForEntity(client: PoolClient | Client, entityId: string, options?: EnsureBusinessForEntityOptions): Promise<void>;
|
|
105
|
+
export type EnsureTaxCategoryForEntityOptions = Partial<Omit<FixtureTaxCategories['taxCategories'][number], 'id'>> & {
|
|
106
106
|
sortCode?: number;
|
|
107
|
-
}
|
|
107
|
+
};
|
|
108
108
|
/**
|
|
109
109
|
* Ensure a tax_categories row exists for a given financial entity id (idempotent)
|
|
110
110
|
*
|
|
@@ -150,4 +150,4 @@ export interface EnsureTaxCategoryForEntityOptions {
|
|
|
150
150
|
* });
|
|
151
151
|
* ```
|
|
152
152
|
*/
|
|
153
|
-
export declare function ensureTaxCategoryForEntity(client: PoolClient, entityId: string, options?: EnsureTaxCategoryForEntityOptions): Promise<void>;
|
|
153
|
+
export declare function ensureTaxCategoryForEntity(client: PoolClient | Client, entityId: string, options?: EnsureTaxCategoryForEntityOptions): Promise<void>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { qualifyTable } from './test-db-config.js';
|
|
2
2
|
import { EntityValidationError, SeedError } from './seed-errors.js';
|
|
3
|
+
import { makeUUID } from '../factories/index.js';
|
|
4
|
+
import { UUID_REGEX } from '../../shared/constants.js';
|
|
3
5
|
/**
|
|
4
6
|
* Valid financial entity types for runtime validation
|
|
5
7
|
*/
|
|
@@ -50,7 +52,7 @@ const VALID_ENTITY_TYPES = ['business', 'tax_category', 'tag'];
|
|
|
50
52
|
* ```
|
|
51
53
|
*/
|
|
52
54
|
export async function ensureFinancialEntity(client, params) {
|
|
53
|
-
const { name, type, ownerId } = params;
|
|
55
|
+
const { name, type, ownerId, id: originId } = params;
|
|
54
56
|
// Validate inputs
|
|
55
57
|
const validationErrors = [];
|
|
56
58
|
if (!name || name.trim() === '') {
|
|
@@ -63,29 +65,25 @@ export async function ensureFinancialEntity(client, params) {
|
|
|
63
65
|
throw new EntityValidationError('FinancialEntity', validationErrors, { name, type, ownerId });
|
|
64
66
|
}
|
|
65
67
|
try {
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
`;
|
|
75
|
-
const existingResult = await client.query(selectQuery, [name, type, ownerId ?? null]);
|
|
76
|
-
if (existingResult.rows.length > 0) {
|
|
77
|
-
return { id: existingResult.rows[0].id };
|
|
78
|
-
}
|
|
79
|
-
// Insert new entity
|
|
68
|
+
// Generate deterministic UUID based on type, name, and ownerId for idempotency
|
|
69
|
+
// Same (type, name, ownerId) always generates same ID, ensuring multiple calls are safe
|
|
70
|
+
// Include ownerId in the composite key so different owners get different IDs
|
|
71
|
+
const compositeKey = ownerId ? `${name}:owner=${ownerId}` : name;
|
|
72
|
+
const consistentId = originId ?? makeUUID(type, compositeKey);
|
|
73
|
+
// Use atomic INSERT...ON CONFLICT on PRIMARY KEY (id) to handle concurrent inserts
|
|
74
|
+
// If the deterministic ID already exists (from a previous call or concurrent insert),
|
|
75
|
+
// the conflict handler will safely return the existing row
|
|
80
76
|
const insertQuery = `
|
|
81
|
-
INSERT INTO ${qualifyTable('financial_entities')} (name, type, owner_id)
|
|
82
|
-
VALUES ($1, $2, $3)
|
|
77
|
+
INSERT INTO ${qualifyTable('financial_entities')} (id, name, type, owner_id)
|
|
78
|
+
VALUES ($1, $2, $3, $4)
|
|
79
|
+
ON CONFLICT (id) DO UPDATE
|
|
80
|
+
SET id = EXCLUDED.id -- No-op update, just to return the existing id
|
|
83
81
|
RETURNING id
|
|
84
82
|
`;
|
|
85
|
-
const
|
|
86
|
-
const row =
|
|
83
|
+
const result = await client.query(insertQuery, [consistentId, name, type, ownerId ?? null]);
|
|
84
|
+
const row = result.rows[0];
|
|
87
85
|
if (!row) {
|
|
88
|
-
throw new SeedError('INSERT returned no rows', { name, type, ownerId });
|
|
86
|
+
throw new SeedError('INSERT...ON CONFLICT returned no rows', { name, type, ownerId });
|
|
89
87
|
}
|
|
90
88
|
return { id: row.id };
|
|
91
89
|
}
|
|
@@ -139,8 +137,7 @@ export async function ensureFinancialEntity(client, params) {
|
|
|
139
137
|
*/
|
|
140
138
|
export async function ensureBusinessForEntity(client, entityId, options) {
|
|
141
139
|
// Validate entityId format (basic UUID check)
|
|
142
|
-
|
|
143
|
-
if (!uuidPattern.test(entityId)) {
|
|
140
|
+
if (!UUID_REGEX.test(entityId)) {
|
|
144
141
|
throw new EntityValidationError('Business', ['entityId must be a valid UUID'], { entityId });
|
|
145
142
|
}
|
|
146
143
|
try {
|
|
@@ -155,23 +152,36 @@ export async function ensureBusinessForEntity(client, entityId, options) {
|
|
|
155
152
|
if (entityExists.rows.length === 0) {
|
|
156
153
|
throw new EntityValidationError('Business', [`Financial entity ${entityId} not found. Create it first via ensureFinancialEntity.`], { entityId });
|
|
157
154
|
}
|
|
158
|
-
//
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
FROM ${qualifyTable('businesses')}
|
|
162
|
-
WHERE id = $1
|
|
163
|
-
LIMIT 1
|
|
164
|
-
`;
|
|
165
|
-
const existingResult = await client.query(selectQuery, [entityId]);
|
|
166
|
-
if (existingResult.rows.length > 0) {
|
|
167
|
-
return; // Business already exists, preserve existing values
|
|
168
|
-
}
|
|
169
|
-
// Insert new business
|
|
155
|
+
// Use atomic INSERT...ON CONFLICT on PRIMARY KEY (id) to handle concurrent inserts
|
|
156
|
+
// If the deterministic ID already exists (from a previous call or concurrent insert),
|
|
157
|
+
// the conflict handler will safely return the existing row
|
|
170
158
|
const insertQuery = `
|
|
171
|
-
INSERT INTO ${qualifyTable('businesses')} (
|
|
172
|
-
|
|
159
|
+
INSERT INTO ${qualifyTable('businesses')} (
|
|
160
|
+
id, hebrew_name, address, city, zip_code, email, website, phone_number, vat_number,
|
|
161
|
+
exempt_dealer, suggestion_data, optional_vat, country,
|
|
162
|
+
pcn874_record_type_override, can_settle_with_receipt, no_invoices_required
|
|
163
|
+
)
|
|
164
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)
|
|
165
|
+
ON CONFLICT (id) DO NOTHING
|
|
173
166
|
`;
|
|
174
|
-
await client.query(insertQuery, [
|
|
167
|
+
await client.query(insertQuery, [
|
|
168
|
+
entityId,
|
|
169
|
+
options?.hebrewName,
|
|
170
|
+
options?.address,
|
|
171
|
+
options?.city,
|
|
172
|
+
options?.zipCode,
|
|
173
|
+
options?.email,
|
|
174
|
+
options?.website,
|
|
175
|
+
options?.phoneNumber,
|
|
176
|
+
options?.governmentId, // Maps to vat_number column
|
|
177
|
+
options?.exemptDealer ?? false,
|
|
178
|
+
options?.suggestions ?? null,
|
|
179
|
+
options?.optionalVat ?? false,
|
|
180
|
+
options?.country ?? 'ISR',
|
|
181
|
+
options?.pcn874RecordTypeOverride ?? null,
|
|
182
|
+
options?.isReceiptEnough ?? false,
|
|
183
|
+
options?.isDocumentsOptional ?? false
|
|
184
|
+
]);
|
|
175
185
|
}
|
|
176
186
|
catch (error) {
|
|
177
187
|
if (error instanceof EntityValidationError || error instanceof SeedError) {
|
|
@@ -227,8 +237,7 @@ export async function ensureBusinessForEntity(client, entityId, options) {
|
|
|
227
237
|
*/
|
|
228
238
|
export async function ensureTaxCategoryForEntity(client, entityId, options) {
|
|
229
239
|
// Validate entityId format (basic UUID check)
|
|
230
|
-
|
|
231
|
-
if (!uuidPattern.test(entityId)) {
|
|
240
|
+
if (!UUID_REGEX.test(entityId)) {
|
|
232
241
|
throw new EntityValidationError('TaxCategory', ['entityId must be a valid UUID'], { entityId });
|
|
233
242
|
}
|
|
234
243
|
try {
|
|
@@ -243,23 +252,17 @@ export async function ensureTaxCategoryForEntity(client, entityId, options) {
|
|
|
243
252
|
if (entityExists.rows.length === 0) {
|
|
244
253
|
throw new EntityValidationError('TaxCategory', [`Financial entity ${entityId} not found. Create it first via ensureFinancialEntity.`], { entityId });
|
|
245
254
|
}
|
|
246
|
-
//
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
FROM ${qualifyTable('tax_categories')}
|
|
250
|
-
WHERE id = $1
|
|
251
|
-
LIMIT 1
|
|
252
|
-
`;
|
|
253
|
-
const existingResult = await client.query(selectQuery, [entityId]);
|
|
254
|
-
if (existingResult.rows.length > 0) {
|
|
255
|
-
return; // Tax category already exists, preserve existing values
|
|
256
|
-
}
|
|
257
|
-
// Insert new tax category
|
|
255
|
+
// Use atomic INSERT...ON CONFLICT on PRIMARY KEY (id) to handle concurrent inserts
|
|
256
|
+
// If the deterministic ID already exists (from a previous call or concurrent insert),
|
|
257
|
+
// the conflict handler will safely return the existing row
|
|
258
258
|
const insertQuery = `
|
|
259
|
-
INSERT INTO ${qualifyTable('tax_categories')} (
|
|
260
|
-
|
|
259
|
+
INSERT INTO ${qualifyTable('tax_categories')} (
|
|
260
|
+
id, hashavshevet_name, tax_excluded
|
|
261
|
+
)
|
|
262
|
+
VALUES ($1, $2, $3)
|
|
263
|
+
ON CONFLICT (id) DO NOTHING
|
|
261
264
|
`;
|
|
262
|
-
await client.query(insertQuery, [entityId]);
|
|
265
|
+
await client.query(insertQuery, [entityId, options?.hashavshevetName, options?.taxExcluded ?? false]);
|
|
263
266
|
}
|
|
264
267
|
catch (error) {
|
|
265
268
|
if (error instanceof EntityValidationError || error instanceof SeedError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-helpers.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/seed-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"seed-helpers.js","sourceRoot":"","sources":["../../../../../src/__tests__/helpers/seed-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it, beforeAll, afterAll } from 'vitest';
|
|
2
2
|
import { TestDatabase } from './helpers/db-setup.js';
|
|
3
3
|
import { seedAdminCore } from '../../scripts/seed-admin-context.js';
|
|
4
|
+
import { UUID_REGEX } from '../shared/constants.js';
|
|
4
5
|
describe('seedAdminCore integration', () => {
|
|
5
6
|
let db;
|
|
6
7
|
beforeAll(async () => {
|
|
@@ -16,7 +17,7 @@ describe('seedAdminCore integration', () => {
|
|
|
16
17
|
const { adminEntityId } = await seedAdminCore(client);
|
|
17
18
|
// Verify admin entity exists
|
|
18
19
|
expect(adminEntityId).toBeTruthy();
|
|
19
|
-
expect(adminEntityId).toMatch(
|
|
20
|
+
expect(adminEntityId).toMatch(UUID_REGEX);
|
|
20
21
|
// Verify admin financial entity
|
|
21
22
|
const adminEntity = await client.query(`SELECT * FROM accounter_schema.financial_entities WHERE id = $1`, [adminEntityId]);
|
|
22
23
|
expect(adminEntity.rows).toHaveLength(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-admin-context.integration.test.js","sourceRoot":"","sources":["../../../../src/__tests__/seed-admin-context.integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"seed-admin-context.integration.test.js","sourceRoot":"","sources":["../../../../src/__tests__/seed-admin-context.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
2
|
import { makeUUID } from '../helpers/deterministic-uuid.js';
|
|
3
|
+
import { UUID5_REGEX } from 'shared/constants.js';
|
|
3
4
|
describe('deterministic-uuid', () => {
|
|
4
5
|
describe('makeUUID', () => {
|
|
5
6
|
it('generates same UUID for same inputs', () => {
|
|
6
7
|
const uuid1 = makeUUID('business', 'acme-consulting-llc');
|
|
7
8
|
const uuid2 = makeUUID('business', 'acme-consulting-llc');
|
|
8
9
|
expect(uuid1).toBe(uuid2);
|
|
9
|
-
expect(uuid1).toMatch(
|
|
10
|
+
expect(uuid1).toMatch(UUID5_REGEX);
|
|
10
11
|
});
|
|
11
12
|
it('generates different UUIDs for different names', () => {
|
|
12
13
|
const uuid1 = makeUUID('business', 'acme-llc');
|
|
@@ -31,7 +32,7 @@ describe('deterministic-uuid', () => {
|
|
|
31
32
|
const uuid = makeUUID('charge', 'monthly-invoice-2024-11');
|
|
32
33
|
// UUID v5 format: xxxxxxxx-xxxx-5xxx-yxxx-xxxxxxxxxxxx
|
|
33
34
|
// where y is one of [8, 9, a, b]
|
|
34
|
-
expect(uuid).toMatch(
|
|
35
|
+
expect(uuid).toMatch(UUID5_REGEX);
|
|
35
36
|
});
|
|
36
37
|
it('handles kebab-case names correctly', () => {
|
|
37
38
|
const uuid1 = makeUUID('business', 'us-supplier-acme-llc');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deterministic-uuid.test.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/__tests__/deterministic-uuid.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"deterministic-uuid.test.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/__tests__/deterministic-uuid.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|