@accounter/server 0.0.9-alpha-20251231083050-a0e737863ca2a9fa68506d15357e55d9287972cb → 0.0.9-alpha-20251231163357-33d4c33fec5e21dad2e04d1f293f6248d2550588
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/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/deel/resolvers/deel.resolvers.js +0 -3
- package/dist/server/src/modules/deel/resolvers/deel.resolvers.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 +6 -3
- 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/deel/resolvers/deel.resolvers.ts +0 -3
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-context.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/helpers/admin-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAAc;IAC7D,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAE/D,iEAAiE;IACjE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CACnC;;;cAGU,EACV,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,6GAA6G;IAC7G,0BAA0B;IAC1B,4FAA4F;IAC5F,uEAAuE;IACvE,2EAA2E;IAC3E,EAAE;IACF,oFAAoF;IACpF,uFAAuF;IACvF,MAAM,OAAO,GAAG,eAAe,CAAC;IAChC,MAAM,MAAM,CAAC,KAAK,CAChB;+DAC2D,EAC3D,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,uDAAuD;IACvD,MAAM,MAAM,CAAC,KAAK,CAChB;iBACa,EACb,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,8DAA8D;IAC9D,MAAM,MAAM,CAAC,KAAK,CAChB;;mBAEe,EACf,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholder strings used in demo fixtures for runtime replacement.
|
|
3
|
+
*/
|
|
4
|
+
export declare const PLACEHOLDERS: {
|
|
5
|
+
readonly ADMIN_BUSINESS_ID: "{{ADMIN_BUSINESS_ID}}";
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Resolve admin business ID placeholders in fixture objects.
|
|
9
|
+
*
|
|
10
|
+
* This function performs a deep replacement of all `{{ADMIN_BUSINESS_ID}}` placeholder
|
|
11
|
+
* strings within a fixture object by serializing to JSON, replacing all occurrences,
|
|
12
|
+
* and deserializing back to the original type.
|
|
13
|
+
*
|
|
14
|
+
* @param fixture - Fixture object containing placeholders (any type)
|
|
15
|
+
* @param adminBusinessId - The actual admin business UUID to replace placeholders with
|
|
16
|
+
* @returns New fixture object with all placeholders replaced
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const fixture = {
|
|
21
|
+
* id: 'charge-123',
|
|
22
|
+
* ownerId: '{{ADMIN_BUSINESS_ID}}',
|
|
23
|
+
* nested: {
|
|
24
|
+
* businessId: '{{ADMIN_BUSINESS_ID}}'
|
|
25
|
+
* }
|
|
26
|
+
* };
|
|
27
|
+
*
|
|
28
|
+
* const resolved = resolveAdminPlaceholders(fixture, 'actual-uuid-123');
|
|
29
|
+
* // {
|
|
30
|
+
* // id: 'charge-123',
|
|
31
|
+
* // ownerId: 'actual-uuid-123',
|
|
32
|
+
* // nested: { businessId: 'actual-uuid-123' }
|
|
33
|
+
* // }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* **Performance Note:**
|
|
38
|
+
* Uses JSON serialization for deep replacement. For very large fixture objects,
|
|
39
|
+
* consider a more optimized approach if performance becomes an issue.
|
|
40
|
+
*
|
|
41
|
+
* **Type Safety:**
|
|
42
|
+
* Returns the same type as input, but type information is lost during JSON
|
|
43
|
+
* serialization (e.g., Date objects become strings). Use with plain object fixtures.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveAdminPlaceholders<T>(fixture: T, adminBusinessId: string): T;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholder strings used in demo fixtures for runtime replacement.
|
|
3
|
+
*/
|
|
4
|
+
export const PLACEHOLDERS = {
|
|
5
|
+
ADMIN_BUSINESS_ID: '{{ADMIN_BUSINESS_ID}}',
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Resolve admin business ID placeholders in fixture objects.
|
|
9
|
+
*
|
|
10
|
+
* This function performs a deep replacement of all `{{ADMIN_BUSINESS_ID}}` placeholder
|
|
11
|
+
* strings within a fixture object by serializing to JSON, replacing all occurrences,
|
|
12
|
+
* and deserializing back to the original type.
|
|
13
|
+
*
|
|
14
|
+
* @param fixture - Fixture object containing placeholders (any type)
|
|
15
|
+
* @param adminBusinessId - The actual admin business UUID to replace placeholders with
|
|
16
|
+
* @returns New fixture object with all placeholders replaced
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const fixture = {
|
|
21
|
+
* id: 'charge-123',
|
|
22
|
+
* ownerId: '{{ADMIN_BUSINESS_ID}}',
|
|
23
|
+
* nested: {
|
|
24
|
+
* businessId: '{{ADMIN_BUSINESS_ID}}'
|
|
25
|
+
* }
|
|
26
|
+
* };
|
|
27
|
+
*
|
|
28
|
+
* const resolved = resolveAdminPlaceholders(fixture, 'actual-uuid-123');
|
|
29
|
+
* // {
|
|
30
|
+
* // id: 'charge-123',
|
|
31
|
+
* // ownerId: 'actual-uuid-123',
|
|
32
|
+
* // nested: { businessId: 'actual-uuid-123' }
|
|
33
|
+
* // }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* **Performance Note:**
|
|
38
|
+
* Uses JSON serialization for deep replacement. For very large fixture objects,
|
|
39
|
+
* consider a more optimized approach if performance becomes an issue.
|
|
40
|
+
*
|
|
41
|
+
* **Type Safety:**
|
|
42
|
+
* Returns the same type as input, but type information is lost during JSON
|
|
43
|
+
* serialization (e.g., Date objects become strings). Use with plain object fixtures.
|
|
44
|
+
*/
|
|
45
|
+
export function resolveAdminPlaceholders(fixture, adminBusinessId) {
|
|
46
|
+
const json = JSON.stringify(fixture);
|
|
47
|
+
const resolved = json.replace(/\{\{ADMIN_BUSINESS_ID\}\}/g, adminBusinessId);
|
|
48
|
+
return JSON.parse(resolved);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/helpers/placeholder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB,EAAE,uBAAuB;CAClC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,wBAAwB,CAAI,OAAU,EAAE,eAAuB;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,eAAe,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAM,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Client } from 'pg';
|
|
2
|
+
/**
|
|
3
|
+
* Seed FIAT exchange rates for demo data.
|
|
4
|
+
*
|
|
5
|
+
* Inserts or updates exchange rates for common currencies to ILS.
|
|
6
|
+
* Uses ON CONFLICT to ensure idempotent seeding.
|
|
7
|
+
*
|
|
8
|
+
* **Schema Note**: The exchange_rates table stores rates as individual columns
|
|
9
|
+
* (usd, eur, gbp, etc.) for a given exchange_date, NOT as normalized rows.
|
|
10
|
+
* This denormalized structure optimizes read performance for multi-currency queries.
|
|
11
|
+
*
|
|
12
|
+
* Example row:
|
|
13
|
+
* | exchange_date | usd | eur | gbp |
|
|
14
|
+
* | 2024-11-26 | 3.5 | 4.0 | 4.5 |
|
|
15
|
+
*
|
|
16
|
+
* Rates seeded:
|
|
17
|
+
* - USD: 3.5 ILS
|
|
18
|
+
* - EUR: 4.0 ILS
|
|
19
|
+
* - GBP: 4.5 ILS
|
|
20
|
+
*/
|
|
21
|
+
export declare function seedExchangeRates(client: Client): Promise<void>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seed FIAT exchange rates for demo data.
|
|
3
|
+
*
|
|
4
|
+
* Inserts or updates exchange rates for common currencies to ILS.
|
|
5
|
+
* Uses ON CONFLICT to ensure idempotent seeding.
|
|
6
|
+
*
|
|
7
|
+
* **Schema Note**: The exchange_rates table stores rates as individual columns
|
|
8
|
+
* (usd, eur, gbp, etc.) for a given exchange_date, NOT as normalized rows.
|
|
9
|
+
* This denormalized structure optimizes read performance for multi-currency queries.
|
|
10
|
+
*
|
|
11
|
+
* Example row:
|
|
12
|
+
* | exchange_date | usd | eur | gbp |
|
|
13
|
+
* | 2024-11-26 | 3.5 | 4.0 | 4.5 |
|
|
14
|
+
*
|
|
15
|
+
* Rates seeded:
|
|
16
|
+
* - USD: 3.5 ILS
|
|
17
|
+
* - EUR: 4.0 ILS
|
|
18
|
+
* - GBP: 4.5 ILS
|
|
19
|
+
*/
|
|
20
|
+
export async function seedExchangeRates(client) {
|
|
21
|
+
await client.query(`INSERT INTO accounter_schema.exchange_rates (exchange_date, usd, eur, gbp)
|
|
22
|
+
VALUES (CURRENT_DATE, 3.5, 4.0, 4.5)
|
|
23
|
+
ON CONFLICT (exchange_date)
|
|
24
|
+
DO UPDATE SET usd = EXCLUDED.usd, eur = EXCLUDED.eur, gbp = EXCLUDED.gbp`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=seed-exchange-rates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-exchange-rates.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/helpers/seed-exchange-rates.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IACpD,MAAM,MAAM,CAAC,KAAK,CAChB;;;8EAG0E,CAC3E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Client } from 'pg';
|
|
2
|
+
/**
|
|
3
|
+
* Seed VAT percentage history for demo data.
|
|
4
|
+
*
|
|
5
|
+
* Inserts historical VAT rates with effective dates. Israel's VAT has changed
|
|
6
|
+
* over time, so we maintain a history table to support accurate calculations
|
|
7
|
+
* for documents from different time periods.
|
|
8
|
+
*
|
|
9
|
+
* **Schema Note**: Percentage stored as decimal (0.17 = 17%), not integer.
|
|
10
|
+
* Column name is 'date', not 'effective_date' or 'effectiveDate'.
|
|
11
|
+
*
|
|
12
|
+
* Current rates:
|
|
13
|
+
* - 17% effective from 2015-01-01
|
|
14
|
+
* - 18% effective from 2025-01-01
|
|
15
|
+
*
|
|
16
|
+
* Uses ON CONFLICT to ensure idempotency across multiple seed runs.
|
|
17
|
+
*
|
|
18
|
+
* @param client - PostgreSQL client instance
|
|
19
|
+
*/
|
|
20
|
+
export declare function seedVATDefault(client: Client): Promise<void>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seed VAT percentage history for demo data.
|
|
3
|
+
*
|
|
4
|
+
* Inserts historical VAT rates with effective dates. Israel's VAT has changed
|
|
5
|
+
* over time, so we maintain a history table to support accurate calculations
|
|
6
|
+
* for documents from different time periods.
|
|
7
|
+
*
|
|
8
|
+
* **Schema Note**: Percentage stored as decimal (0.17 = 17%), not integer.
|
|
9
|
+
* Column name is 'date', not 'effective_date' or 'effectiveDate'.
|
|
10
|
+
*
|
|
11
|
+
* Current rates:
|
|
12
|
+
* - 17% effective from 2015-01-01
|
|
13
|
+
* - 18% effective from 2025-01-01
|
|
14
|
+
*
|
|
15
|
+
* Uses ON CONFLICT to ensure idempotency across multiple seed runs.
|
|
16
|
+
*
|
|
17
|
+
* @param client - PostgreSQL client instance
|
|
18
|
+
*/
|
|
19
|
+
export async function seedVATDefault(client) {
|
|
20
|
+
const vatRates = [
|
|
21
|
+
{ percentage: 0.17, date: '2015-01-01' },
|
|
22
|
+
{ percentage: 0.18, date: '2025-01-01' },
|
|
23
|
+
];
|
|
24
|
+
for (const { percentage, date } of vatRates) {
|
|
25
|
+
await client.query(`INSERT INTO accounter_schema.vat_value (percentage, date)
|
|
26
|
+
VALUES ($1, $2)
|
|
27
|
+
ON CONFLICT (date) DO NOTHING`, [percentage, date]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=seed-vat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-vat.js","sourceRoot":"","sources":["../../../../../src/demo-fixtures/helpers/seed-vat.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,MAAM,QAAQ,GAAG;QACf,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;QACxC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;KACzC,CAAC;IAEF,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC5C,MAAM,MAAM,CAAC,KAAK,CAChB;;qCAE+B,EAC/B,CAAC,UAAU,EAAE,IAAI,CAAC,CACnB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { UseCaseSpec } from '../../../fixtures/fixture-spec.js';
|
|
2
|
+
/**
|
|
3
|
+
* Shareholder Dividend (Q4 2024)
|
|
4
|
+
*
|
|
5
|
+
* Models a dividend payout in ILS with a single transaction
|
|
6
|
+
* and optional statement document. Designed as a simple
|
|
7
|
+
* equity scenario with minimal entities.
|
|
8
|
+
*/
|
|
9
|
+
export declare const shareholderDividend: UseCaseSpec;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { CountryCode, Currency } from '../../../shared/enums.js';
|
|
2
|
+
import { makeUUID } from '../../helpers/deterministic-uuid.js';
|
|
3
|
+
/**
|
|
4
|
+
* Shareholder Dividend (Q4 2024)
|
|
5
|
+
*
|
|
6
|
+
* Models a dividend payout in ILS with a single transaction
|
|
7
|
+
* and optional statement document. Designed as a simple
|
|
8
|
+
* equity scenario with minimal entities.
|
|
9
|
+
*/
|
|
10
|
+
export const shareholderDividend = {
|
|
11
|
+
id: 'shareholder-dividend',
|
|
12
|
+
name: 'Shareholder Dividend (Q4 2024)',
|
|
13
|
+
description: 'Dividend payout from ILS bank account with withholding tax counterparty. Includes optional statement document.',
|
|
14
|
+
category: 'equity',
|
|
15
|
+
fixtures: {
|
|
16
|
+
businesses: [
|
|
17
|
+
{
|
|
18
|
+
id: makeUUID('business', 'dividends-withholding-tax'),
|
|
19
|
+
name: 'Dividends Withholding Tax',
|
|
20
|
+
country: CountryCode['Israel'],
|
|
21
|
+
canSettleWithReceipt: false,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
taxCategories: [
|
|
25
|
+
{
|
|
26
|
+
id: makeUUID('tax-category', 'dividend'),
|
|
27
|
+
name: 'Dividend',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
financialAccounts: [
|
|
31
|
+
{
|
|
32
|
+
id: makeUUID('financial-account', 'bank-ils-account'),
|
|
33
|
+
accountNumber: '11-222-3333',
|
|
34
|
+
type: 'BANK_ACCOUNT',
|
|
35
|
+
currency: Currency.Ils,
|
|
36
|
+
taxCategoryMappings: [
|
|
37
|
+
{
|
|
38
|
+
taxCategoryId: makeUUID('tax-category', 'dividend'),
|
|
39
|
+
currency: Currency.Ils,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
charges: [
|
|
45
|
+
{
|
|
46
|
+
id: makeUUID('charge', 'dividend-distribution-2024-q4'),
|
|
47
|
+
ownerId: '{{ADMIN_BUSINESS_ID}}',
|
|
48
|
+
userDescription: 'Dividend distribution for Q4 2024',
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
transactions: [
|
|
52
|
+
{
|
|
53
|
+
id: makeUUID('transaction', 'dividend-payout-2024-q4'),
|
|
54
|
+
chargeId: makeUUID('charge', 'dividend-distribution-2024-q4'),
|
|
55
|
+
businessId: makeUUID('business', 'dividends-withholding-tax'),
|
|
56
|
+
amount: '-10000.00',
|
|
57
|
+
currency: Currency.Ils,
|
|
58
|
+
eventDate: '2024-12-31',
|
|
59
|
+
debitDate: '2024-12-31',
|
|
60
|
+
accountNumber: '11-222-3333',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
documents: [
|
|
64
|
+
{
|
|
65
|
+
id: makeUUID('document', 'dividend-statement-2024-q4'),
|
|
66
|
+
chargeId: makeUUID('charge', 'dividend-distribution-2024-q4'),
|
|
67
|
+
creditorId: makeUUID('business', 'dividends-withholding-tax'),
|
|
68
|
+
debtorId: '{{ADMIN_BUSINESS_ID}}',
|
|
69
|
+
serialNumber: 'DIV-2024-Q4',
|
|
70
|
+
type: 'INVOICE',
|
|
71
|
+
date: '2024-12-31',
|
|
72
|
+
totalAmount: '10000.00',
|
|
73
|
+
currencyCode: Currency.Ils,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
metadata: {
|
|
78
|
+
author: 'demo-team',
|
|
79
|
+
createdAt: '2024-11-24',
|
|
80
|
+
updatedAt: '2024-11-24',
|
|
81
|
+
},
|
|
82
|
+
expectations: {
|
|
83
|
+
ledgerRecordCount: 2,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=shareholder-dividend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shareholder-dividend.js","sourceRoot":"","sources":["../../../../../../src/demo-fixtures/use-cases/equity/shareholder-dividend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,gCAAgC;IACtC,WAAW,EACT,gHAAgH;IAClH,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE;QACR,UAAU,EAAE;YACV;gBACE,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;gBACrD,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC;gBAC9B,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD,aAAa,EAAE;YACb;gBACE,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;gBACxC,IAAI,EAAE,UAAU;aACjB;SACF;QACD,iBAAiB,EAAE;YACjB;gBACE,EAAE,EAAE,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;gBACrD,aAAa,EAAE,aAAa;gBAC5B,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,QAAQ,CAAC,GAAG;gBACtB,mBAAmB,EAAE;oBACnB;wBACE,aAAa,EAAE,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;wBACnD,QAAQ,EAAE,QAAQ,CAAC,GAAG;qBACvB;iBACF;aACF;SACF;QACD,OAAO,EAAE;YACP;gBACE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;gBACvD,OAAO,EAAE,uBAAuB;gBAChC,eAAe,EAAE,mCAAmC;aACrD;SACF;QACD,YAAY,EAAE;YACZ;gBACE,EAAE,EAAE,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC;gBACtD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;gBAC7D,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;gBAC7D,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,QAAQ,CAAC,GAAG;gBACtB,SAAS,EAAE,YAAY;gBACvB,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,aAAa;aAC7B;SACF;QACD,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;gBACtD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC;gBAC7D,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;gBAC7D,QAAQ,EAAE,uBAAuB;gBACjC,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,QAAQ,CAAC,GAAG;aAC3B;SACF;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,YAAY;KACxB;IACD,YAAY,EAAE;QACZ,iBAAiB,EAAE,CAAC;KACrB;CACF,CAAC"}
|
package/dist/server/src/demo-fixtures/use-cases/expenses/monthly-expense-foreign-currency.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { UseCaseSpec } from '../../../fixtures/fixture-spec.js';
|
|
2
|
+
/**
|
|
3
|
+
* Monthly Expense Use-Case: Foreign Currency Transaction
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates a US-based supplier invoice paid via bank transfer with
|
|
6
|
+
* exchange rate conversion from USD to ILS. This use-case validates:
|
|
7
|
+
* - Foreign currency transaction handling
|
|
8
|
+
* - Exchange rate application
|
|
9
|
+
* - Cross-border payment processing
|
|
10
|
+
* - Ledger generation with currency conversion
|
|
11
|
+
*/
|
|
12
|
+
export declare const monthlyExpenseForeignCurrency: UseCaseSpec;
|