@hed-hog/finance 0.0.223 → 0.0.225
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/dist/dto/create-financial-title.dto.d.ts +19 -0
- package/dist/dto/create-financial-title.dto.d.ts.map +1 -0
- package/dist/dto/create-financial-title.dto.js +128 -0
- package/dist/dto/create-financial-title.dto.js.map +1 -0
- package/dist/finance.controller.d.ts +276 -0
- package/dist/finance.controller.d.ts.map +1 -0
- package/dist/finance.controller.js +110 -0
- package/dist/finance.controller.js.map +1 -0
- package/dist/finance.module.d.ts.map +1 -1
- package/dist/finance.module.js +8 -3
- package/dist/finance.module.js.map +1 -1
- package/dist/finance.service.d.ts +295 -0
- package/dist/finance.service.d.ts.map +1 -0
- package/dist/finance.service.js +416 -0
- package/dist/finance.service.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/hedhog/data/menu.yaml +72 -25
- package/hedhog/data/route.yaml +55 -1
- package/hedhog/frontend/app/_lib/formatters.ts.ejs +20 -0
- package/hedhog/frontend/app/_lib/use-finance-data.ts.ejs +87 -0
- package/hedhog/frontend/app/accounts-payable/approvals/page.tsx.ejs +290 -0
- package/hedhog/frontend/app/accounts-payable/installments/[id]/page.tsx.ejs +410 -0
- package/hedhog/frontend/app/accounts-payable/installments/page.tsx.ejs +388 -0
- package/hedhog/frontend/app/accounts-receivable/collections-default/page.tsx.ejs +423 -0
- package/hedhog/frontend/app/accounts-receivable/installments/[id]/page.tsx.ejs +411 -0
- package/hedhog/frontend/app/accounts-receivable/installments/page.tsx.ejs +385 -0
- package/hedhog/frontend/app/cash-and-banks/bank-accounts/page.tsx.ejs +296 -0
- package/hedhog/frontend/app/cash-and-banks/bank-reconciliation/page.tsx.ejs +427 -0
- package/hedhog/frontend/app/cash-and-banks/statements/page.tsx.ejs +273 -0
- package/hedhog/frontend/app/cash-and-banks/transfers/page.tsx.ejs +253 -0
- package/hedhog/frontend/app/page.tsx.ejs +338 -17
- package/hedhog/frontend/app/planning/cash-flow-forecast/page.tsx.ejs +298 -0
- package/hedhog/frontend/app/planning/receivables-calendar/page.tsx.ejs +225 -0
- package/hedhog/frontend/app/planning/scenarios/page.tsx.ejs +338 -0
- package/hedhog/frontend/messages/en.json +776 -0
- package/hedhog/frontend/messages/pt.json +776 -0
- package/hedhog/query/constraints.sql +169 -0
- package/package.json +3 -3
- package/src/dto/create-financial-title.dto.ts +142 -0
- package/src/finance.controller.ts +89 -0
- package/src/finance.module.ts +8 -3
- package/src/finance.service.ts +529 -0
- package/src/index.ts +4 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
-- Regras de integridade do módulo financeiro (PostgreSQL)
|
|
2
|
+
-- Script idempotente: pode ser executado mais de uma vez.
|
|
3
|
+
|
|
4
|
+
-- 1) CHECKs simples de domínio
|
|
5
|
+
DO $$
|
|
6
|
+
BEGIN
|
|
7
|
+
IF NOT EXISTS (
|
|
8
|
+
SELECT 1
|
|
9
|
+
FROM pg_constraint
|
|
10
|
+
WHERE conname = 'chk_financial_installment_open_amount_non_negative'
|
|
11
|
+
) THEN
|
|
12
|
+
ALTER TABLE financial_installment
|
|
13
|
+
ADD CONSTRAINT chk_financial_installment_open_amount_non_negative
|
|
14
|
+
CHECK (open_amount_cents >= 0);
|
|
15
|
+
END IF;
|
|
16
|
+
|
|
17
|
+
IF NOT EXISTS (
|
|
18
|
+
SELECT 1
|
|
19
|
+
FROM pg_constraint
|
|
20
|
+
WHERE conname = 'chk_financial_installment_open_amount_lte_amount'
|
|
21
|
+
) THEN
|
|
22
|
+
ALTER TABLE financial_installment
|
|
23
|
+
ADD CONSTRAINT chk_financial_installment_open_amount_lte_amount
|
|
24
|
+
CHECK (open_amount_cents <= amount_cents);
|
|
25
|
+
END IF;
|
|
26
|
+
|
|
27
|
+
IF NOT EXISTS (
|
|
28
|
+
SELECT 1
|
|
29
|
+
FROM pg_constraint
|
|
30
|
+
WHERE conname = 'chk_period_close_period_end_gte_start'
|
|
31
|
+
) THEN
|
|
32
|
+
ALTER TABLE period_close
|
|
33
|
+
ADD CONSTRAINT chk_period_close_period_end_gte_start
|
|
34
|
+
CHECK (period_end >= period_start);
|
|
35
|
+
END IF;
|
|
36
|
+
END $$;
|
|
37
|
+
|
|
38
|
+
-- 2) Unicidade em tabelas de vínculo N:N
|
|
39
|
+
DO $$
|
|
40
|
+
BEGIN
|
|
41
|
+
IF NOT EXISTS (
|
|
42
|
+
SELECT 1
|
|
43
|
+
FROM pg_constraint
|
|
44
|
+
WHERE conname = 'uq_financial_installment_tag_installment_tag'
|
|
45
|
+
) THEN
|
|
46
|
+
ALTER TABLE financial_installment_tag
|
|
47
|
+
ADD CONSTRAINT uq_financial_installment_tag_installment_tag
|
|
48
|
+
UNIQUE (installment_id, tag_id);
|
|
49
|
+
END IF;
|
|
50
|
+
|
|
51
|
+
IF NOT EXISTS (
|
|
52
|
+
SELECT 1
|
|
53
|
+
FROM pg_constraint
|
|
54
|
+
WHERE conname = 'uq_installment_allocation_installment_cost_center'
|
|
55
|
+
) THEN
|
|
56
|
+
ALTER TABLE installment_allocation
|
|
57
|
+
ADD CONSTRAINT uq_installment_allocation_installment_cost_center
|
|
58
|
+
UNIQUE (installment_id, cost_center_id);
|
|
59
|
+
END IF;
|
|
60
|
+
|
|
61
|
+
IF NOT EXISTS (
|
|
62
|
+
SELECT 1
|
|
63
|
+
FROM pg_constraint
|
|
64
|
+
WHERE conname = 'uq_settlement_allocation_settlement_installment'
|
|
65
|
+
) THEN
|
|
66
|
+
ALTER TABLE settlement_allocation
|
|
67
|
+
ADD CONSTRAINT uq_settlement_allocation_settlement_installment
|
|
68
|
+
UNIQUE (settlement_id, installment_id);
|
|
69
|
+
END IF;
|
|
70
|
+
END $$;
|
|
71
|
+
|
|
72
|
+
-- 3) Política de alocação por parcela (somatórios não podem exceder amount_cents)
|
|
73
|
+
-- settlement_allocation: soma(allocated_amount_cents) por installment_id <= financial_installment.amount_cents
|
|
74
|
+
|
|
75
|
+
CREATE OR REPLACE FUNCTION fn_check_settlement_allocation_total_per_installment()
|
|
76
|
+
RETURNS TRIGGER
|
|
77
|
+
LANGUAGE plpgsql
|
|
78
|
+
AS $$
|
|
79
|
+
DECLARE
|
|
80
|
+
target_installment_id financial_installment.id%TYPE;
|
|
81
|
+
installment_amount_cents integer;
|
|
82
|
+
allocated_total_cents bigint;
|
|
83
|
+
BEGIN
|
|
84
|
+
target_installment_id := COALESCE(NEW.installment_id, OLD.installment_id);
|
|
85
|
+
|
|
86
|
+
SELECT fi.amount_cents
|
|
87
|
+
INTO installment_amount_cents
|
|
88
|
+
FROM financial_installment fi
|
|
89
|
+
WHERE fi.id = target_installment_id;
|
|
90
|
+
|
|
91
|
+
IF installment_amount_cents IS NULL THEN
|
|
92
|
+
RETURN NULL;
|
|
93
|
+
END IF;
|
|
94
|
+
|
|
95
|
+
SELECT COALESCE(SUM(sa.allocated_amount_cents), 0)
|
|
96
|
+
INTO allocated_total_cents
|
|
97
|
+
FROM settlement_allocation sa
|
|
98
|
+
WHERE sa.installment_id = target_installment_id;
|
|
99
|
+
|
|
100
|
+
IF allocated_total_cents > installment_amount_cents THEN
|
|
101
|
+
RAISE EXCEPTION
|
|
102
|
+
'Soma de settlement_allocation (%) excede amount_cents (%) para installment_id=%',
|
|
103
|
+
allocated_total_cents,
|
|
104
|
+
installment_amount_cents,
|
|
105
|
+
target_installment_id;
|
|
106
|
+
END IF;
|
|
107
|
+
|
|
108
|
+
RETURN NULL;
|
|
109
|
+
END;
|
|
110
|
+
$$;
|
|
111
|
+
|
|
112
|
+
DROP TRIGGER IF EXISTS trg_check_settlement_allocation_total_per_installment
|
|
113
|
+
ON settlement_allocation;
|
|
114
|
+
|
|
115
|
+
CREATE CONSTRAINT TRIGGER trg_check_settlement_allocation_total_per_installment
|
|
116
|
+
AFTER INSERT OR UPDATE OR DELETE
|
|
117
|
+
ON settlement_allocation
|
|
118
|
+
DEFERRABLE INITIALLY DEFERRED
|
|
119
|
+
FOR EACH ROW
|
|
120
|
+
EXECUTE FUNCTION fn_check_settlement_allocation_total_per_installment();
|
|
121
|
+
|
|
122
|
+
-- installment_allocation: soma(allocated_amount_cents) por installment_id <= financial_installment.amount_cents
|
|
123
|
+
|
|
124
|
+
CREATE OR REPLACE FUNCTION fn_check_installment_allocation_total_per_installment()
|
|
125
|
+
RETURNS TRIGGER
|
|
126
|
+
LANGUAGE plpgsql
|
|
127
|
+
AS $$
|
|
128
|
+
DECLARE
|
|
129
|
+
target_installment_id financial_installment.id%TYPE;
|
|
130
|
+
installment_amount_cents integer;
|
|
131
|
+
allocated_total_cents bigint;
|
|
132
|
+
BEGIN
|
|
133
|
+
target_installment_id := COALESCE(NEW.installment_id, OLD.installment_id);
|
|
134
|
+
|
|
135
|
+
SELECT fi.amount_cents
|
|
136
|
+
INTO installment_amount_cents
|
|
137
|
+
FROM financial_installment fi
|
|
138
|
+
WHERE fi.id = target_installment_id;
|
|
139
|
+
|
|
140
|
+
IF installment_amount_cents IS NULL THEN
|
|
141
|
+
RETURN NULL;
|
|
142
|
+
END IF;
|
|
143
|
+
|
|
144
|
+
SELECT COALESCE(SUM(ia.allocated_amount_cents), 0)
|
|
145
|
+
INTO allocated_total_cents
|
|
146
|
+
FROM installment_allocation ia
|
|
147
|
+
WHERE ia.installment_id = target_installment_id;
|
|
148
|
+
|
|
149
|
+
IF allocated_total_cents > installment_amount_cents THEN
|
|
150
|
+
RAISE EXCEPTION
|
|
151
|
+
'Soma de installment_allocation (%) excede amount_cents (%) para installment_id=%',
|
|
152
|
+
allocated_total_cents,
|
|
153
|
+
installment_amount_cents,
|
|
154
|
+
target_installment_id;
|
|
155
|
+
END IF;
|
|
156
|
+
|
|
157
|
+
RETURN NULL;
|
|
158
|
+
END;
|
|
159
|
+
$$;
|
|
160
|
+
|
|
161
|
+
DROP TRIGGER IF EXISTS trg_check_installment_allocation_total_per_installment
|
|
162
|
+
ON installment_allocation;
|
|
163
|
+
|
|
164
|
+
CREATE CONSTRAINT TRIGGER trg_check_installment_allocation_total_per_installment
|
|
165
|
+
AFTER INSERT OR UPDATE OR DELETE
|
|
166
|
+
ON installment_allocation
|
|
167
|
+
DEFERRABLE INITIALLY DEFERRED
|
|
168
|
+
FOR EACH ROW
|
|
169
|
+
EXECUTE FUNCTION fn_check_installment_allocation_total_per_installment();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hed-hog/finance",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.225",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"@nestjs/core": "^11",
|
|
10
10
|
"@nestjs/jwt": "^11",
|
|
11
11
|
"@nestjs/mapped-types": "*",
|
|
12
|
-
"@hed-hog/api-prisma": "0.0.4",
|
|
13
12
|
"@hed-hog/api-locale": "0.0.11",
|
|
14
13
|
"@hed-hog/api-pagination": "0.0.5",
|
|
14
|
+
"@hed-hog/api-prisma": "0.0.4",
|
|
15
15
|
"@hed-hog/api": "0.0.3",
|
|
16
|
-
"@hed-hog/tag": "0.0.223",
|
|
17
16
|
"@hed-hog/contact": "0.0.223",
|
|
17
|
+
"@hed-hog/tag": "0.0.223",
|
|
18
18
|
"@hed-hog/api-types": "0.0.1"
|
|
19
19
|
},
|
|
20
20
|
"exports": {
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { getLocaleText } from '@hed-hog/api-locale';
|
|
2
|
+
import { Type } from 'class-transformer';
|
|
3
|
+
import {
|
|
4
|
+
IsArray,
|
|
5
|
+
IsDateString,
|
|
6
|
+
IsInt,
|
|
7
|
+
IsNotEmpty,
|
|
8
|
+
IsNumber,
|
|
9
|
+
IsOptional,
|
|
10
|
+
IsString,
|
|
11
|
+
Min,
|
|
12
|
+
ValidateNested,
|
|
13
|
+
} from 'class-validator';
|
|
14
|
+
|
|
15
|
+
export class CreateFinancialInstallmentDto {
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsInt({
|
|
18
|
+
message: (args) =>
|
|
19
|
+
getLocaleText('validation.installmentNumberMustBeNumber', args.value),
|
|
20
|
+
})
|
|
21
|
+
@Min(1, {
|
|
22
|
+
message: (args) =>
|
|
23
|
+
getLocaleText('validation.installmentNumberMin', args.value),
|
|
24
|
+
})
|
|
25
|
+
installment_number?: number;
|
|
26
|
+
|
|
27
|
+
@IsDateString(
|
|
28
|
+
{},
|
|
29
|
+
{
|
|
30
|
+
message: (args) =>
|
|
31
|
+
getLocaleText('validation.dueDateMustBeDate', args.value),
|
|
32
|
+
},
|
|
33
|
+
)
|
|
34
|
+
due_date: string;
|
|
35
|
+
|
|
36
|
+
@IsNumber(
|
|
37
|
+
{},
|
|
38
|
+
{
|
|
39
|
+
message: (args) =>
|
|
40
|
+
getLocaleText('validation.installmentAmountMustBeNumber', args.value),
|
|
41
|
+
},
|
|
42
|
+
)
|
|
43
|
+
@Min(0.01, {
|
|
44
|
+
message: (args) =>
|
|
45
|
+
getLocaleText('validation.installmentAmountMin', args.value),
|
|
46
|
+
})
|
|
47
|
+
amount: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export class CreateFinancialTitleDto {
|
|
51
|
+
@IsString({
|
|
52
|
+
message: (args) => getLocaleText('validation.documentMustBeString', args.value),
|
|
53
|
+
})
|
|
54
|
+
@IsNotEmpty({
|
|
55
|
+
message: (args) => getLocaleText('validation.documentRequired', args.value),
|
|
56
|
+
})
|
|
57
|
+
document_number: string;
|
|
58
|
+
|
|
59
|
+
@IsInt({
|
|
60
|
+
message: (args) => getLocaleText('validation.personIdMustBeNumber', args.value),
|
|
61
|
+
})
|
|
62
|
+
person_id: number;
|
|
63
|
+
|
|
64
|
+
@IsOptional()
|
|
65
|
+
@IsDateString(
|
|
66
|
+
{},
|
|
67
|
+
{
|
|
68
|
+
message: (args) =>
|
|
69
|
+
getLocaleText('validation.competenceDateMustBeDate', args.value),
|
|
70
|
+
},
|
|
71
|
+
)
|
|
72
|
+
competence_date?: string;
|
|
73
|
+
|
|
74
|
+
@IsOptional()
|
|
75
|
+
@IsDateString(
|
|
76
|
+
{},
|
|
77
|
+
{
|
|
78
|
+
message: (args) =>
|
|
79
|
+
getLocaleText('validation.issueDateMustBeDate', args.value),
|
|
80
|
+
},
|
|
81
|
+
)
|
|
82
|
+
issue_date?: string;
|
|
83
|
+
|
|
84
|
+
@IsDateString(
|
|
85
|
+
{},
|
|
86
|
+
{
|
|
87
|
+
message: (args) =>
|
|
88
|
+
getLocaleText('validation.dueDateMustBeDate', args.value),
|
|
89
|
+
},
|
|
90
|
+
)
|
|
91
|
+
due_date: string;
|
|
92
|
+
|
|
93
|
+
@IsNumber(
|
|
94
|
+
{},
|
|
95
|
+
{
|
|
96
|
+
message: (args) =>
|
|
97
|
+
getLocaleText('validation.totalAmountMustBeNumber', args.value),
|
|
98
|
+
},
|
|
99
|
+
)
|
|
100
|
+
@Min(0.01, {
|
|
101
|
+
message: (args) =>
|
|
102
|
+
getLocaleText('validation.totalAmountMin', args.value),
|
|
103
|
+
})
|
|
104
|
+
total_amount: number;
|
|
105
|
+
|
|
106
|
+
@IsOptional()
|
|
107
|
+
@IsInt({
|
|
108
|
+
message: (args) =>
|
|
109
|
+
getLocaleText('validation.financeCategoryIdMustBeNumber', args.value),
|
|
110
|
+
})
|
|
111
|
+
finance_category_id?: number;
|
|
112
|
+
|
|
113
|
+
@IsOptional()
|
|
114
|
+
@IsInt({
|
|
115
|
+
message: (args) =>
|
|
116
|
+
getLocaleText('validation.costCenterIdMustBeNumber', args.value),
|
|
117
|
+
})
|
|
118
|
+
cost_center_id?: number;
|
|
119
|
+
|
|
120
|
+
@IsOptional()
|
|
121
|
+
@IsString({
|
|
122
|
+
message: (args) =>
|
|
123
|
+
getLocaleText('validation.paymentChannelMustBeString', args.value),
|
|
124
|
+
})
|
|
125
|
+
payment_channel?: string;
|
|
126
|
+
|
|
127
|
+
@IsOptional()
|
|
128
|
+
@IsString({
|
|
129
|
+
message: (args) =>
|
|
130
|
+
getLocaleText('validation.descriptionMustBeString', args.value),
|
|
131
|
+
})
|
|
132
|
+
description?: string;
|
|
133
|
+
|
|
134
|
+
@IsOptional()
|
|
135
|
+
@IsArray({
|
|
136
|
+
message: (args) =>
|
|
137
|
+
getLocaleText('validation.installmentsMustBeArray', args.value),
|
|
138
|
+
})
|
|
139
|
+
@ValidateNested({ each: true })
|
|
140
|
+
@Type(() => CreateFinancialInstallmentDto)
|
|
141
|
+
installments?: CreateFinancialInstallmentDto[];
|
|
142
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Role, User } from '@hed-hog/api';
|
|
2
|
+
import { Locale } from '@hed-hog/api-locale';
|
|
3
|
+
import { Pagination } from '@hed-hog/api-pagination';
|
|
4
|
+
import {
|
|
5
|
+
Body,
|
|
6
|
+
Controller,
|
|
7
|
+
Get,
|
|
8
|
+
Param,
|
|
9
|
+
ParseIntPipe,
|
|
10
|
+
Post,
|
|
11
|
+
Query,
|
|
12
|
+
} from '@nestjs/common';
|
|
13
|
+
import { CreateFinancialTitleDto } from './dto/create-financial-title.dto';
|
|
14
|
+
import { FinanceService } from './finance.service';
|
|
15
|
+
|
|
16
|
+
@Role()
|
|
17
|
+
@Controller('finance')
|
|
18
|
+
export class FinanceController {
|
|
19
|
+
constructor(private readonly financeService: FinanceService) {}
|
|
20
|
+
|
|
21
|
+
@Get('data')
|
|
22
|
+
async getData() {
|
|
23
|
+
return this.financeService.getData();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@Get('accounts-payable/installments')
|
|
27
|
+
async listAccountsPayableInstallments(
|
|
28
|
+
@Pagination() paginationParams,
|
|
29
|
+
@Query('status') status?: string,
|
|
30
|
+
) {
|
|
31
|
+
return this.financeService.listAccountsPayableInstallments(
|
|
32
|
+
paginationParams,
|
|
33
|
+
status,
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@Get('accounts-payable/installments/:id')
|
|
38
|
+
async getAccountsPayableInstallment(
|
|
39
|
+
@Param('id', ParseIntPipe) id: number,
|
|
40
|
+
@Locale() locale: string,
|
|
41
|
+
) {
|
|
42
|
+
return this.financeService.getAccountsPayableInstallment(id, locale);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@Post('accounts-payable/installments')
|
|
46
|
+
async createAccountsPayableTitle(
|
|
47
|
+
@Body() data: CreateFinancialTitleDto,
|
|
48
|
+
@Locale() locale: string,
|
|
49
|
+
@User() user,
|
|
50
|
+
) {
|
|
51
|
+
return this.financeService.createAccountsPayableTitle(
|
|
52
|
+
data,
|
|
53
|
+
locale,
|
|
54
|
+
user?.id,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Get('accounts-receivable/installments')
|
|
59
|
+
async listAccountsReceivableInstallments(
|
|
60
|
+
@Pagination() paginationParams,
|
|
61
|
+
@Query('status') status?: string,
|
|
62
|
+
) {
|
|
63
|
+
return this.financeService.listAccountsReceivableInstallments(
|
|
64
|
+
paginationParams,
|
|
65
|
+
status,
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@Get('accounts-receivable/installments/:id')
|
|
70
|
+
async getAccountsReceivableInstallment(
|
|
71
|
+
@Param('id', ParseIntPipe) id: number,
|
|
72
|
+
@Locale() locale: string,
|
|
73
|
+
) {
|
|
74
|
+
return this.financeService.getAccountsReceivableInstallment(id, locale);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@Post('accounts-receivable/installments')
|
|
78
|
+
async createAccountsReceivableTitle(
|
|
79
|
+
@Body() data: CreateFinancialTitleDto,
|
|
80
|
+
@Locale() locale: string,
|
|
81
|
+
@User() user,
|
|
82
|
+
) {
|
|
83
|
+
return this.financeService.createAccountsReceivableTitle(
|
|
84
|
+
data,
|
|
85
|
+
locale,
|
|
86
|
+
user?.id,
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
package/src/finance.module.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { forwardRef, Module } from '@nestjs/common';
|
|
2
|
-
import { ConfigModule } from '@nestjs/config';
|
|
3
1
|
import { LocaleModule } from '@hed-hog/api-locale';
|
|
4
2
|
import { PaginationModule } from '@hed-hog/api-pagination';
|
|
5
3
|
import { PrismaModule } from '@hed-hog/api-prisma';
|
|
4
|
+
import { forwardRef, Module } from '@nestjs/common';
|
|
5
|
+
import { ConfigModule } from '@nestjs/config';
|
|
6
|
+
import { FinanceController } from './finance.controller';
|
|
7
|
+
import { FinanceService } from './finance.service';
|
|
6
8
|
|
|
7
9
|
@Module({
|
|
8
10
|
imports: [
|
|
@@ -10,6 +12,9 @@ import { PrismaModule } from '@hed-hog/api-prisma';
|
|
|
10
12
|
forwardRef(() => PaginationModule),
|
|
11
13
|
forwardRef(() => PrismaModule),
|
|
12
14
|
forwardRef(() => LocaleModule)
|
|
13
|
-
]
|
|
15
|
+
],
|
|
16
|
+
controllers: [FinanceController],
|
|
17
|
+
providers: [FinanceService],
|
|
18
|
+
exports: [FinanceService],
|
|
14
19
|
})
|
|
15
20
|
export class FinanceModule {}
|