@hed-hog/finance 0.0.237 → 0.0.239

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 (47) hide show
  1. package/dist/dto/create-finance-tag.dto.d.ts +5 -0
  2. package/dist/dto/create-finance-tag.dto.d.ts.map +1 -0
  3. package/dist/dto/create-finance-tag.dto.js +29 -0
  4. package/dist/dto/create-finance-tag.dto.js.map +1 -0
  5. package/dist/dto/reject-title.dto.d.ts +4 -0
  6. package/dist/dto/reject-title.dto.d.ts.map +1 -0
  7. package/dist/dto/reject-title.dto.js +22 -0
  8. package/dist/dto/reject-title.dto.js.map +1 -0
  9. package/dist/dto/reverse-settlement.dto.d.ts +4 -0
  10. package/dist/dto/reverse-settlement.dto.d.ts.map +1 -0
  11. package/dist/dto/reverse-settlement.dto.js +22 -0
  12. package/dist/dto/reverse-settlement.dto.js.map +1 -0
  13. package/dist/dto/settle-installment.dto.d.ts +12 -0
  14. package/dist/dto/settle-installment.dto.d.ts.map +1 -0
  15. package/dist/dto/settle-installment.dto.js +71 -0
  16. package/dist/dto/settle-installment.dto.js.map +1 -0
  17. package/dist/dto/update-installment-tags.dto.d.ts +4 -0
  18. package/dist/dto/update-installment-tags.dto.d.ts.map +1 -0
  19. package/dist/dto/update-installment-tags.dto.js +27 -0
  20. package/dist/dto/update-installment-tags.dto.js.map +1 -0
  21. package/dist/finance-data.controller.d.ts +17 -5
  22. package/dist/finance-data.controller.d.ts.map +1 -1
  23. package/dist/finance-installments.controller.d.ts +325 -8
  24. package/dist/finance-installments.controller.d.ts.map +1 -1
  25. package/dist/finance-installments.controller.js +128 -0
  26. package/dist/finance-installments.controller.js.map +1 -1
  27. package/dist/finance.service.d.ts +357 -13
  28. package/dist/finance.service.d.ts.map +1 -1
  29. package/dist/finance.service.js +835 -64
  30. package/dist/finance.service.js.map +1 -1
  31. package/hedhog/data/route.yaml +90 -0
  32. package/hedhog/frontend/app/_lib/use-finance-data.ts.ejs +2 -0
  33. package/hedhog/frontend/app/accounts-payable/approvals/page.tsx.ejs +92 -12
  34. package/hedhog/frontend/app/accounts-payable/installments/[id]/page.tsx.ejs +601 -79
  35. package/hedhog/frontend/app/accounts-payable/installments/page.tsx.ejs +481 -19
  36. package/hedhog/frontend/app/accounts-receivable/installments/[id]/page.tsx.ejs +598 -69
  37. package/hedhog/frontend/app/accounts-receivable/installments/page.tsx.ejs +472 -15
  38. package/hedhog/frontend/messages/en.json +38 -0
  39. package/hedhog/frontend/messages/pt.json +38 -0
  40. package/package.json +5 -5
  41. package/src/dto/create-finance-tag.dto.ts +15 -0
  42. package/src/dto/reject-title.dto.ts +7 -0
  43. package/src/dto/reverse-settlement.dto.ts +7 -0
  44. package/src/dto/settle-installment.dto.ts +55 -0
  45. package/src/dto/update-installment-tags.dto.ts +12 -0
  46. package/src/finance-installments.controller.ts +145 -9
  47. package/src/finance.service.ts +1333 -165
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hed-hog/finance",
3
- "version": "0.0.237",
3
+ "version": "0.0.239",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "dependencies": {
@@ -10,13 +10,13 @@
10
10
  "@nestjs/jwt": "^11",
11
11
  "@nestjs/mapped-types": "*",
12
12
  "@hed-hog/api-prisma": "0.0.4",
13
- "@hed-hog/tag": "0.0.237",
14
13
  "@hed-hog/api-pagination": "0.0.5",
14
+ "@hed-hog/api-locale": "0.0.11",
15
15
  "@hed-hog/api-types": "0.0.1",
16
+ "@hed-hog/tag": "0.0.239",
16
17
  "@hed-hog/api": "0.0.3",
17
- "@hed-hog/contact": "0.0.237",
18
- "@hed-hog/core": "0.0.237",
19
- "@hed-hog/api-locale": "0.0.11"
18
+ "@hed-hog/contact": "0.0.239",
19
+ "@hed-hog/core": "0.0.239"
20
20
  },
21
21
  "exports": {
22
22
  ".": {
@@ -0,0 +1,15 @@
1
+ import { Transform } from 'class-transformer';
2
+ import { IsHexColor, IsOptional, IsString, MinLength } from 'class-validator';
3
+
4
+ export class CreateFinanceTagDto {
5
+ @Transform(({ value }) =>
6
+ typeof value === 'string' ? value.trim() : value,
7
+ )
8
+ @IsString()
9
+ @MinLength(1)
10
+ name: string;
11
+
12
+ @IsOptional()
13
+ @IsHexColor()
14
+ color?: string;
15
+ }
@@ -0,0 +1,7 @@
1
+ import { IsOptional, IsString } from 'class-validator';
2
+
3
+ export class RejectTitleDto {
4
+ @IsOptional()
5
+ @IsString()
6
+ reason?: string;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { IsOptional, IsString } from 'class-validator';
2
+
3
+ export class ReverseSettlementDto {
4
+ @IsOptional()
5
+ @IsString()
6
+ reason?: string;
7
+ }
@@ -0,0 +1,55 @@
1
+ import { Type } from 'class-transformer';
2
+ import {
3
+ IsDateString,
4
+ IsInt,
5
+ IsNumber,
6
+ IsOptional,
7
+ IsString,
8
+ Min,
9
+ } from 'class-validator';
10
+
11
+ export class SettleInstallmentDto {
12
+ @Type(() => Number)
13
+ @IsInt()
14
+ installment_id: number;
15
+
16
+ @Type(() => Number)
17
+ @IsNumber()
18
+ @Min(0.01)
19
+ amount: number;
20
+
21
+ @IsOptional()
22
+ @IsDateString()
23
+ settled_at?: string;
24
+
25
+ @IsOptional()
26
+ @Type(() => Number)
27
+ @IsInt()
28
+ bank_account_id?: number;
29
+
30
+ @IsOptional()
31
+ @IsString()
32
+ payment_channel?: string;
33
+
34
+ @IsOptional()
35
+ @Type(() => Number)
36
+ @IsNumber()
37
+ @Min(0)
38
+ discount?: number;
39
+
40
+ @IsOptional()
41
+ @Type(() => Number)
42
+ @IsNumber()
43
+ @Min(0)
44
+ interest?: number;
45
+
46
+ @IsOptional()
47
+ @Type(() => Number)
48
+ @IsNumber()
49
+ @Min(0)
50
+ penalty?: number;
51
+
52
+ @IsOptional()
53
+ @IsString()
54
+ description?: string;
55
+ }
@@ -0,0 +1,12 @@
1
+ import { Type } from 'class-transformer';
2
+ import { ArrayUnique, IsArray, IsInt, IsOptional, Min } from 'class-validator';
3
+
4
+ export class UpdateInstallmentTagsDto {
5
+ @IsOptional()
6
+ @IsArray()
7
+ @ArrayUnique()
8
+ @Type(() => Number)
9
+ @IsInt({ each: true })
10
+ @Min(1, { each: true })
11
+ tag_ids?: number[];
12
+ }
@@ -2,21 +2,25 @@ import { Role, User } from '@hed-hog/api';
2
2
  import { Locale } from '@hed-hog/api-locale';
3
3
  import { Pagination } from '@hed-hog/api-pagination';
4
4
  import {
5
- Body,
6
- Controller,
7
- Get,
8
- Param,
9
- ParseIntPipe,
10
- Post,
11
- Query,
12
- UploadedFile,
13
- UseInterceptors,
5
+ Body,
6
+ Controller,
7
+ Get,
8
+ Param,
9
+ ParseIntPipe,
10
+ Patch,
11
+ Post,
12
+ Query,
13
+ UploadedFile,
14
+ UseInterceptors,
14
15
  } from '@nestjs/common';
15
16
  import { FileInterceptor } from '@nestjs/platform-express';
17
+ import { CreateFinanceTagDto } from './dto/create-finance-tag.dto';
16
18
  import { CreateFinancialTitleDto } from './dto/create-financial-title.dto';
17
19
  import { ExtractFinancialTitleFromFileDto } from './dto/extract-financial-title-from-file.dto';
20
+ import { RejectTitleDto } from './dto/reject-title.dto';
18
21
  import { FinanceService } from './finance.service';
19
22
 
23
+ import { UpdateInstallmentTagsDto } from './dto/update-installment-tags.dto';
20
24
  @Role()
21
25
  @Controller('finance')
22
26
  export class FinanceInstallmentsController {
@@ -54,6 +58,75 @@ export class FinanceInstallmentsController {
54
58
  );
55
59
  }
56
60
 
61
+ @Patch('accounts-payable/installments/:id/approve')
62
+ async approveAccountsPayableTitle(
63
+ @Param('id', ParseIntPipe) id: number,
64
+ @Locale() locale: string,
65
+ @User() user,
66
+ ) {
67
+ return this.financeService.approveAccountsPayableTitle(id, locale, user?.id);
68
+ }
69
+
70
+ @Patch('accounts-payable/installments/:id/reject')
71
+ async rejectAccountsPayableTitle(
72
+ @Param('id', ParseIntPipe) id: number,
73
+ @Body() data: RejectTitleDto,
74
+ @Locale() locale: string,
75
+ @User() user,
76
+ ) {
77
+ return this.financeService.rejectAccountsPayableTitle(
78
+ id,
79
+ data,
80
+ locale,
81
+ user?.id,
82
+ );
83
+ }
84
+
85
+ @Post('accounts-payable/installments/:id/settlements')
86
+ async settleAccountsPayableInstallment(
87
+ @Param('id', ParseIntPipe) id: number,
88
+ @Body() data,
89
+ @Locale() locale: string,
90
+ @User() user,
91
+ ) {
92
+ return this.financeService.settleAccountsPayableInstallment(
93
+ id,
94
+ data,
95
+ locale,
96
+ user?.id,
97
+ );
98
+ }
99
+
100
+ @Patch('accounts-payable/installments/:id/settlements/:settlementId/reverse')
101
+ async reverseAccountsPayableSettlement(
102
+ @Param('id', ParseIntPipe) id: number,
103
+ @Param('settlementId', ParseIntPipe) settlementId: number,
104
+ @Body() data,
105
+ @Locale() locale: string,
106
+ @User() user,
107
+ ) {
108
+ return this.financeService.reverseAccountsPayableSettlement(
109
+ id,
110
+ settlementId,
111
+ data,
112
+ locale,
113
+ user?.id,
114
+ );
115
+ }
116
+
117
+ @Patch('accounts-payable/installments/:id/tags')
118
+ async updateAccountsPayableInstallmentTags(
119
+ @Param('id', ParseIntPipe) id: number,
120
+ @Body() data: UpdateInstallmentTagsDto,
121
+ @Locale() locale: string,
122
+ ) {
123
+ return this.financeService.updateAccountsPayableInstallmentTags(
124
+ id,
125
+ data.tag_ids || [],
126
+ locale,
127
+ );
128
+ }
129
+
57
130
  @Post('accounts-payable/installments/extract-from-file')
58
131
  @UseInterceptors(FileInterceptor('file'))
59
132
  async extractAccountsPayableInfoFromFile(
@@ -95,6 +168,69 @@ export class FinanceInstallmentsController {
95
168
  );
96
169
  }
97
170
 
171
+ @Patch('accounts-receivable/installments/:id/approve')
172
+ async approveAccountsReceivableTitle(
173
+ @Param('id', ParseIntPipe) id: number,
174
+ @Locale() locale: string,
175
+ @User() user,
176
+ ) {
177
+ return this.financeService.approveAccountsReceivableTitle(
178
+ id,
179
+ locale,
180
+ user?.id,
181
+ );
182
+ }
183
+
184
+ @Post('accounts-receivable/installments/:id/settlements')
185
+ async settleAccountsReceivableInstallment(
186
+ @Param('id', ParseIntPipe) id: number,
187
+ @Body() data,
188
+ @Locale() locale: string,
189
+ @User() user,
190
+ ) {
191
+ return this.financeService.settleAccountsReceivableInstallment(
192
+ id,
193
+ data,
194
+ locale,
195
+ user?.id,
196
+ );
197
+ }
198
+
199
+ @Patch('accounts-receivable/installments/:id/settlements/:settlementId/reverse')
200
+ async reverseAccountsReceivableSettlement(
201
+ @Param('id', ParseIntPipe) id: number,
202
+ @Param('settlementId', ParseIntPipe) settlementId: number,
203
+ @Body() data,
204
+ @Locale() locale: string,
205
+ @User() user,
206
+ ) {
207
+ return this.financeService.reverseAccountsReceivableSettlement(
208
+ id,
209
+ settlementId,
210
+ data,
211
+ locale,
212
+ user?.id,
213
+ );
214
+ }
215
+
216
+ @Patch('accounts-receivable/installments/:id/tags')
217
+ async updateAccountsReceivableInstallmentTags(
218
+ @Param('id', ParseIntPipe) id: number,
219
+ @Body() data: UpdateInstallmentTagsDto,
220
+ @Locale() locale: string,
221
+ ) {
222
+ return this.financeService.updateAccountsReceivableInstallmentTags(
223
+ id,
224
+ data.tag_ids || [],
225
+ locale,
226
+ );
227
+ }
228
+
229
+ @Post('tags')
230
+ async createTag(@Body() data: CreateFinanceTagDto) {
231
+ return this.financeService.createTag(data);
232
+ }
233
+
98
234
  @Post('accounts-receivable/installments/extract-from-file')
99
235
  @UseInterceptors(FileInterceptor('file'))
100
236
  async extractAccountsReceivableInfoFromFile(