@hed-hog/finance 0.0.349 → 0.0.351

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.
Files changed (112) hide show
  1. package/dist/dto/create-financial-title.dto.d.ts +6 -0
  2. package/dist/dto/create-financial-title.dto.d.ts.map +1 -1
  3. package/dist/dto/create-financial-title.dto.js +27 -1
  4. package/dist/dto/create-financial-title.dto.js.map +1 -1
  5. package/dist/finance-data.controller.d.ts +12 -0
  6. package/dist/finance-data.controller.d.ts.map +1 -1
  7. package/dist/finance-installments.controller.d.ts +120 -0
  8. package/dist/finance-installments.controller.d.ts.map +1 -1
  9. package/dist/finance-realtime.controller.d.ts +7 -0
  10. package/dist/finance-realtime.controller.d.ts.map +1 -0
  11. package/dist/finance-realtime.controller.js +34 -0
  12. package/dist/finance-realtime.controller.js.map +1 -0
  13. package/dist/finance-realtime.service.d.ts +36 -0
  14. package/dist/finance-realtime.service.d.ts.map +1 -0
  15. package/dist/finance-realtime.service.js +59 -0
  16. package/dist/finance-realtime.service.js.map +1 -0
  17. package/dist/finance-statements.controller.d.ts +6 -0
  18. package/dist/finance-statements.controller.d.ts.map +1 -1
  19. package/dist/finance.module.d.ts.map +1 -1
  20. package/dist/finance.module.js +28 -0
  21. package/dist/finance.module.js.map +1 -1
  22. package/dist/finance.service.d.ts +142 -1
  23. package/dist/finance.service.d.ts.map +1 -1
  24. package/dist/finance.service.js +134 -19
  25. package/dist/finance.service.js.map +1 -1
  26. package/dist/mcp-tools/finance-audit-logs.mcp-tools.d.ts +8 -0
  27. package/dist/mcp-tools/finance-audit-logs.mcp-tools.d.ts.map +1 -0
  28. package/dist/mcp-tools/finance-audit-logs.mcp-tools.js +60 -0
  29. package/dist/mcp-tools/finance-audit-logs.mcp-tools.js.map +1 -0
  30. package/dist/mcp-tools/finance-bank-accounts.mcp-tools.d.ts +16 -0
  31. package/dist/mcp-tools/finance-bank-accounts.mcp-tools.d.ts.map +1 -0
  32. package/dist/mcp-tools/finance-bank-accounts.mcp-tools.js +121 -0
  33. package/dist/mcp-tools/finance-bank-accounts.mcp-tools.js.map +1 -0
  34. package/dist/mcp-tools/finance-categories.mcp-tools.d.ts +20 -0
  35. package/dist/mcp-tools/finance-categories.mcp-tools.d.ts.map +1 -0
  36. package/dist/mcp-tools/finance-categories.mcp-tools.js +135 -0
  37. package/dist/mcp-tools/finance-categories.mcp-tools.js.map +1 -0
  38. package/dist/mcp-tools/finance-collections.mcp-tools.d.ts +16 -0
  39. package/dist/mcp-tools/finance-collections.mcp-tools.d.ts.map +1 -0
  40. package/dist/mcp-tools/finance-collections.mcp-tools.js +91 -0
  41. package/dist/mcp-tools/finance-collections.mcp-tools.js.map +1 -0
  42. package/dist/mcp-tools/finance-cost-centers.mcp-tools.d.ts +16 -0
  43. package/dist/mcp-tools/finance-cost-centers.mcp-tools.d.ts.map +1 -0
  44. package/dist/mcp-tools/finance-cost-centers.mcp-tools.js +114 -0
  45. package/dist/mcp-tools/finance-cost-centers.mcp-tools.js.map +1 -0
  46. package/dist/mcp-tools/finance-currencies.mcp-tools.d.ts +16 -0
  47. package/dist/mcp-tools/finance-currencies.mcp-tools.d.ts.map +1 -0
  48. package/dist/mcp-tools/finance-currencies.mcp-tools.js +120 -0
  49. package/dist/mcp-tools/finance-currencies.mcp-tools.js.map +1 -0
  50. package/dist/mcp-tools/finance-data.mcp-tools.d.ts +15 -0
  51. package/dist/mcp-tools/finance-data.mcp-tools.d.ts.map +1 -0
  52. package/dist/mcp-tools/finance-data.mcp-tools.js +80 -0
  53. package/dist/mcp-tools/finance-data.mcp-tools.js.map +1 -0
  54. package/dist/mcp-tools/finance-installments.mcp-tools.d.ts +93 -0
  55. package/dist/mcp-tools/finance-installments.mcp-tools.d.ts.map +1 -0
  56. package/dist/mcp-tools/finance-installments.mcp-tools.js +646 -0
  57. package/dist/mcp-tools/finance-installments.mcp-tools.js.map +1 -0
  58. package/dist/mcp-tools/finance-period-close.mcp-tools.d.ts +9 -0
  59. package/dist/mcp-tools/finance-period-close.mcp-tools.d.ts.map +1 -0
  60. package/dist/mcp-tools/finance-period-close.mcp-tools.js +79 -0
  61. package/dist/mcp-tools/finance-period-close.mcp-tools.js.map +1 -0
  62. package/dist/mcp-tools/finance-reports.mcp-tools.d.ts +10 -0
  63. package/dist/mcp-tools/finance-reports.mcp-tools.d.ts.map +1 -0
  64. package/dist/mcp-tools/finance-reports.mcp-tools.js +89 -0
  65. package/dist/mcp-tools/finance-reports.mcp-tools.js.map +1 -0
  66. package/dist/mcp-tools/finance-statements.mcp-tools.d.ts +34 -0
  67. package/dist/mcp-tools/finance-statements.mcp-tools.d.ts.map +1 -0
  68. package/dist/mcp-tools/finance-statements.mcp-tools.js +253 -0
  69. package/dist/mcp-tools/finance-statements.mcp-tools.js.map +1 -0
  70. package/dist/mcp-tools/finance-transfers.mcp-tools.d.ts +9 -0
  71. package/dist/mcp-tools/finance-transfers.mcp-tools.d.ts.map +1 -0
  72. package/dist/mcp-tools/finance-transfers.mcp-tools.js +79 -0
  73. package/dist/mcp-tools/finance-transfers.mcp-tools.js.map +1 -0
  74. package/hedhog/data/route.yaml +659 -1
  75. package/hedhog/frontend/app/_components/finance-title-actions-menu.tsx.ejs +9 -3
  76. package/hedhog/frontend/app/_lib/http-error.ts.ejs +105 -0
  77. package/hedhog/frontend/app/_lib/use-finance-realtime-refresh.ts.ejs +62 -0
  78. package/hedhog/frontend/app/accounts-payable/approvals/page.tsx.ejs +3 -0
  79. package/hedhog/frontend/app/accounts-payable/installments/[id]/page.tsx.ejs +5 -5
  80. package/hedhog/frontend/app/accounts-payable/installments/page.tsx.ejs +776 -344
  81. package/hedhog/frontend/app/accounts-receivable/collections-default/page.tsx.ejs +7 -13
  82. package/hedhog/frontend/app/accounts-receivable/installments/[id]/page.tsx.ejs +5 -5
  83. package/hedhog/frontend/app/accounts-receivable/installments/page.tsx.ejs +802 -355
  84. package/hedhog/frontend/app/administration/categories/page.tsx.ejs +9 -3
  85. package/hedhog/frontend/app/administration/cost-centers/page.tsx.ejs +9 -3
  86. package/hedhog/frontend/app/administration/currencies/page.tsx.ejs +9 -3
  87. package/hedhog/frontend/app/administration/period-close/page.tsx.ejs +9 -3
  88. package/hedhog/frontend/app/cash-and-banks/bank-accounts/page.tsx.ejs +7 -3
  89. package/hedhog/frontend/app/cash-and-banks/bank-reconciliation/page.tsx.ejs +3 -3
  90. package/hedhog/frontend/app/cash-and-banks/statements/page.tsx.ejs +28 -7
  91. package/hedhog/frontend/app/cash-and-banks/transfers/page.tsx.ejs +12 -3
  92. package/hedhog/frontend/messages/en.json +63 -3
  93. package/hedhog/frontend/messages/pt.json +63 -3
  94. package/hedhog/table/financial_title.yaml +10 -0
  95. package/package.json +6 -6
  96. package/src/dto/create-financial-title.dto.ts +23 -0
  97. package/src/finance-realtime.controller.ts +12 -0
  98. package/src/finance-realtime.service.ts +106 -0
  99. package/src/finance.module.ts +28 -0
  100. package/src/finance.service.ts +184 -45
  101. package/src/mcp-tools/finance-audit-logs.mcp-tools.ts +38 -0
  102. package/src/mcp-tools/finance-bank-accounts.mcp-tools.ts +76 -0
  103. package/src/mcp-tools/finance-categories.mcp-tools.ts +86 -0
  104. package/src/mcp-tools/finance-collections.mcp-tools.ts +50 -0
  105. package/src/mcp-tools/finance-cost-centers.mcp-tools.ts +69 -0
  106. package/src/mcp-tools/finance-currencies.mcp-tools.ts +75 -0
  107. package/src/mcp-tools/finance-data.mcp-tools.ts +43 -0
  108. package/src/mcp-tools/finance-installments.mcp-tools.ts +560 -0
  109. package/src/mcp-tools/finance-period-close.mcp-tools.ts +53 -0
  110. package/src/mcp-tools/finance-reports.mcp-tools.ts +59 -0
  111. package/src/mcp-tools/finance-statements.mcp-tools.ts +202 -0
  112. package/src/mcp-tools/finance-transfers.mcp-tools.ts +53 -0
@@ -3,15 +3,33 @@ import { Type } from 'class-transformer';
3
3
  import {
4
4
  IsArray,
5
5
  IsDateString,
6
+ IsIn,
6
7
  IsInt,
7
8
  IsNotEmpty,
8
9
  IsNumber,
9
10
  IsOptional,
10
11
  IsString,
12
+ Max,
11
13
  Min,
12
14
  ValidateNested,
13
15
  } from 'class-validator';
14
16
 
17
+ export class CreateRecurrenceRuleDto {
18
+ @IsString()
19
+ @IsIn(['weekly', 'biweekly', 'monthly', 'bimonthly', 'quarterly', 'semiannual', 'annual'])
20
+ frequency: string;
21
+
22
+ @IsOptional()
23
+ @IsDateString()
24
+ end_date?: string;
25
+
26
+ @IsOptional()
27
+ @IsInt()
28
+ @Min(1)
29
+ @Max(600)
30
+ max_occurrences?: number;
31
+ }
32
+
15
33
  export class CreateFinancialInstallmentDto {
16
34
  @IsOptional()
17
35
  @IsInt({
@@ -151,4 +169,9 @@ export class CreateFinancialTitleDto {
151
169
  getLocaleText('validation.attachmentFileIdMustBeNumber', args.value),
152
170
  })
153
171
  attachment_file_ids?: number[];
172
+
173
+ @IsOptional()
174
+ @ValidateNested()
175
+ @Type(() => CreateRecurrenceRuleDto)
176
+ recurrence_rule?: CreateRecurrenceRuleDto;
154
177
  }
@@ -0,0 +1,12 @@
1
+ import { Controller, Get } from '@nestjs/common';
2
+ import { FinanceRealtimeCursor, FinanceRealtimeService } from './finance-realtime.service';
3
+
4
+ @Controller('finance/realtime')
5
+ export class FinanceRealtimeController {
6
+ constructor(private readonly financeRealtime: FinanceRealtimeService) {}
7
+
8
+ @Get('cursor')
9
+ getCursor(): FinanceRealtimeCursor {
10
+ return this.financeRealtime.getCursor();
11
+ }
12
+ }
@@ -0,0 +1,106 @@
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ export type FinanceRealtimeDomain =
4
+ | 'installment'
5
+ | 'settlement'
6
+ | 'bank_account'
7
+ | 'bank_statement'
8
+ | 'bank_reconciliation'
9
+ | 'category'
10
+ | 'cost_center'
11
+ | 'currency'
12
+ | 'transfer'
13
+ | 'period_close'
14
+ | 'collection'
15
+ | 'tag';
16
+
17
+ export type FinanceRealtimeEventType =
18
+ | 'created'
19
+ | 'updated'
20
+ | 'deleted'
21
+ | 'approved'
22
+ | 'rejected'
23
+ | 'canceled'
24
+ | 'settled'
25
+ | 'reversed'
26
+ | 'imported'
27
+ | 'moved';
28
+
29
+ export type FinanceRealtimeEvent = {
30
+ version: 'finance-realtime-v1';
31
+ eventId: string;
32
+ cursor: number;
33
+ occurredAt: string;
34
+ domain: FinanceRealtimeDomain;
35
+ type: FinanceRealtimeEventType;
36
+ entityId?: number | null;
37
+ actorId?: number | null;
38
+ payload?: Record<string, unknown>;
39
+ };
40
+
41
+ export type FinanceRealtimeEventPayload = {
42
+ domain: FinanceRealtimeDomain;
43
+ type: FinanceRealtimeEventType;
44
+ entityId?: number | null;
45
+ actorId?: number | null;
46
+ payload?: Record<string, unknown>;
47
+ };
48
+
49
+ export type FinanceRealtimeCursor = {
50
+ cursor: number;
51
+ updatedAt: string | null;
52
+ };
53
+
54
+ type FinanceRealtimeListener = {
55
+ onEvent: (event: FinanceRealtimeEvent) => void;
56
+ };
57
+
58
+ @Injectable()
59
+ export class FinanceRealtimeService {
60
+ private static readonly EVENT_RETENTION_LIMIT = 500;
61
+
62
+ private sequence = 0;
63
+ private updatedAt: string | null = null;
64
+ private readonly eventLog: FinanceRealtimeEvent[] = [];
65
+ private readonly listeners = new Map<number, FinanceRealtimeListener>();
66
+ private listenerSequence = 0;
67
+
68
+ publish(event: FinanceRealtimeEventPayload): FinanceRealtimeCursor {
69
+ const nextCursor = ++this.sequence;
70
+ const occurredAt = new Date().toISOString();
71
+ this.updatedAt = occurredAt;
72
+
73
+ const realtimeEvent: FinanceRealtimeEvent = {
74
+ version: 'finance-realtime-v1',
75
+ eventId: String(nextCursor),
76
+ cursor: nextCursor,
77
+ occurredAt,
78
+ domain: event.domain,
79
+ type: event.type,
80
+ entityId: event.entityId ?? null,
81
+ actorId: event.actorId ?? null,
82
+ payload: event.payload,
83
+ };
84
+
85
+ this.eventLog.push(realtimeEvent);
86
+ if (this.eventLog.length > FinanceRealtimeService.EVENT_RETENTION_LIMIT) {
87
+ this.eventLog.splice(0, this.eventLog.length - FinanceRealtimeService.EVENT_RETENTION_LIMIT);
88
+ }
89
+
90
+ for (const listener of this.listeners.values()) {
91
+ listener.onEvent(realtimeEvent);
92
+ }
93
+
94
+ return { cursor: nextCursor, updatedAt: this.updatedAt };
95
+ }
96
+
97
+ getCursor(): FinanceRealtimeCursor {
98
+ return { cursor: this.sequence, updatedAt: this.updatedAt };
99
+ }
100
+
101
+ subscribe(onEvent: (event: FinanceRealtimeEvent) => void): () => void {
102
+ const id = ++this.listenerSequence;
103
+ this.listeners.set(id, { onEvent });
104
+ return () => this.listeners.delete(id);
105
+ }
106
+ }
@@ -18,7 +18,21 @@ import { FinanceStatementsController } from './finance-statements.controller';
18
18
  import { FinanceTransfersController } from './finance-transfers.controller';
19
19
  import { FinanceContractActivatedSubscriber } from './finance.contract-activated.subscriber';
20
20
  import { FinanceIntegrationExampleSubscriber } from './finance.integration-example.subscriber';
21
+ import { FinanceRealtimeController } from './finance-realtime.controller';
22
+ import { FinanceRealtimeService } from './finance-realtime.service';
21
23
  import { FinanceService } from './finance.service';
24
+ import { FinanceAuditLogsMcpTools } from './mcp-tools/finance-audit-logs.mcp-tools';
25
+ import { FinanceBankAccountsMcpTools } from './mcp-tools/finance-bank-accounts.mcp-tools';
26
+ import { FinanceCategoriesMcpTools } from './mcp-tools/finance-categories.mcp-tools';
27
+ import { FinanceCollectionsMcpTools } from './mcp-tools/finance-collections.mcp-tools';
28
+ import { FinanceCostCentersMcpTools } from './mcp-tools/finance-cost-centers.mcp-tools';
29
+ import { FinanceCurrenciesMcpTools } from './mcp-tools/finance-currencies.mcp-tools';
30
+ import { FinanceDataMcpTools } from './mcp-tools/finance-data.mcp-tools';
31
+ import { FinanceInstallmentsMcpTools } from './mcp-tools/finance-installments.mcp-tools';
32
+ import { FinancePeriodCloseMcpTools } from './mcp-tools/finance-period-close.mcp-tools';
33
+ import { FinanceReportsMcpTools } from './mcp-tools/finance-reports.mcp-tools';
34
+ import { FinanceStatementsMcpTools } from './mcp-tools/finance-statements.mcp-tools';
35
+ import { FinanceTransfersMcpTools } from './mcp-tools/finance-transfers.mcp-tools';
22
36
 
23
37
  @Module({
24
38
  imports: [
@@ -31,6 +45,7 @@ import { FinanceService } from './finance.service';
31
45
  forwardRef(() => IntegrationModule),
32
46
  ],
33
47
  controllers: [
48
+ FinanceRealtimeController,
34
49
  FinanceAuditLogsController,
35
50
  FinanceDataController,
36
51
  FinanceInstallmentsController,
@@ -45,9 +60,22 @@ import { FinanceService } from './finance.service';
45
60
  FinanceTransfersController,
46
61
  ],
47
62
  providers: [
63
+ FinanceRealtimeService,
48
64
  FinanceService,
49
65
  FinanceIntegrationExampleSubscriber,
50
66
  FinanceContractActivatedSubscriber,
67
+ FinanceAuditLogsMcpTools,
68
+ FinanceBankAccountsMcpTools,
69
+ FinanceCategoriesMcpTools,
70
+ FinanceCollectionsMcpTools,
71
+ FinanceCostCentersMcpTools,
72
+ FinanceCurrenciesMcpTools,
73
+ FinanceDataMcpTools,
74
+ FinanceInstallmentsMcpTools,
75
+ FinancePeriodCloseMcpTools,
76
+ FinanceReportsMcpTools,
77
+ FinanceStatementsMcpTools,
78
+ FinanceTransfersMcpTools,
51
79
  ],
52
80
  exports: [FinanceService],
53
81
  })