@hed-hog/finance 0.0.317 → 0.0.319
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-bank-account.dto.d.ts +1 -0
- package/dist/dto/create-bank-account.dto.d.ts.map +1 -1
- package/dist/dto/create-bank-account.dto.js +7 -0
- package/dist/dto/create-bank-account.dto.js.map +1 -1
- package/dist/dto/create-bank-statement-entry.dto.d.ts +8 -0
- package/dist/dto/create-bank-statement-entry.dto.d.ts.map +1 -0
- package/dist/dto/create-bank-statement-entry.dto.js +54 -0
- package/dist/dto/create-bank-statement-entry.dto.js.map +1 -0
- package/dist/dto/update-bank-account.dto.d.ts +1 -0
- package/dist/dto/update-bank-account.dto.d.ts.map +1 -1
- package/dist/dto/update-bank-account.dto.js +7 -0
- package/dist/dto/update-bank-account.dto.js.map +1 -1
- package/dist/dto/update-bank-statement-entry.dto.d.ts +6 -0
- package/dist/dto/update-bank-statement-entry.dto.d.ts.map +1 -0
- package/dist/dto/update-bank-statement-entry.dto.js +42 -0
- package/dist/dto/update-bank-statement-entry.dto.js.map +1 -0
- package/dist/finance-bank-accounts.controller.d.ts +25 -13
- package/dist/finance-bank-accounts.controller.d.ts.map +1 -1
- package/dist/finance-bank-accounts.controller.js +5 -3
- package/dist/finance-bank-accounts.controller.js.map +1 -1
- package/dist/finance-data.controller.d.ts +4 -0
- package/dist/finance-data.controller.d.ts.map +1 -1
- package/dist/finance-installments.controller.d.ts +3 -2
- package/dist/finance-installments.controller.d.ts.map +1 -1
- package/dist/finance-installments.controller.js +10 -6
- package/dist/finance-installments.controller.js.map +1 -1
- package/dist/finance-statements.controller.d.ts +61 -12
- package/dist/finance-statements.controller.d.ts.map +1 -1
- package/dist/finance-statements.controller.js +50 -8
- package/dist/finance-statements.controller.js.map +1 -1
- package/dist/finance-transfers.controller.d.ts +13 -8
- package/dist/finance-transfers.controller.d.ts.map +1 -1
- package/dist/finance-transfers.controller.js +11 -5
- package/dist/finance-transfers.controller.js.map +1 -1
- package/dist/finance.service.d.ts +124 -35
- package/dist/finance.service.d.ts.map +1 -1
- package/dist/finance.service.js +389 -55
- package/dist/finance.service.js.map +1 -1
- package/hedhog/data/role.yaml +9 -1
- package/hedhog/data/route.yaml +42 -0
- package/hedhog/frontend/app/accounts-payable/approvals/page.tsx.ejs +87 -72
- package/hedhog/frontend/app/accounts-payable/installments/page.tsx.ejs +53 -25
- package/hedhog/frontend/app/accounts-receivable/installments/[id]/page.tsx.ejs +8 -0
- package/hedhog/frontend/app/accounts-receivable/installments/page.tsx.ejs +60 -24
- package/hedhog/frontend/app/cash-and-banks/bank-accounts/page.tsx.ejs +114 -31
- package/hedhog/frontend/app/cash-and-banks/bank-reconciliation/page.tsx.ejs +25 -3
- package/hedhog/frontend/app/cash-and-banks/statements/page.tsx.ejs +732 -61
- package/hedhog/frontend/app/cash-and-banks/transfers/page.tsx.ejs +101 -15
- package/hedhog/table/bank_statement_line.yaml +1 -1
- package/hedhog/table/cashflow_projection.yaml +1 -1
- package/hedhog/table/financial_installment.yaml +2 -2
- package/hedhog/table/financial_title.yaml +1 -1
- package/hedhog/table/installment_allocation.yaml +1 -1
- package/hedhog/table/receivable_schedule.yaml +1 -1
- package/hedhog/table/settlement.yaml +1 -1
- package/hedhog/table/settlement_allocation.yaml +5 -5
- package/package.json +7 -7
- package/src/dto/create-bank-account.dto.ts +18 -1
- package/src/dto/create-bank-statement-entry.dto.ts +50 -0
- package/src/dto/update-bank-account.dto.ts +11 -1
- package/src/dto/update-bank-statement-entry.dto.ts +31 -0
- package/src/finance-bank-accounts.controller.ts +3 -2
- package/src/finance-installments.controller.ts +9 -3
- package/src/finance-statements.controller.ts +40 -0
- package/src/finance-transfers.controller.ts +7 -1
- package/src/finance.service.ts +543 -61
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
EmptyState,
|
|
5
|
+
Page,
|
|
6
|
+
PageHeader,
|
|
7
|
+
PaginationFooter,
|
|
8
|
+
} from '@/components/entity-list';
|
|
4
9
|
import {
|
|
5
10
|
AlertDialog,
|
|
6
11
|
AlertDialogAction,
|
|
@@ -84,6 +89,7 @@ const bankAccountFormSchema = z.object({
|
|
|
84
89
|
tipo: z.string().min(1, 'Tipo é obrigatório'),
|
|
85
90
|
descricao: z.string().optional(),
|
|
86
91
|
logoFileId: z.number().int().nullable().optional(),
|
|
92
|
+
dataInicial: z.string().optional(),
|
|
87
93
|
saldoInicial: z.number().min(0, 'Saldo inicial inválido'),
|
|
88
94
|
});
|
|
89
95
|
|
|
@@ -101,6 +107,17 @@ type BankAccount = {
|
|
|
101
107
|
saldoAtual: number;
|
|
102
108
|
saldoConciliado: number;
|
|
103
109
|
ativo: boolean;
|
|
110
|
+
dataInicial: string | null;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
type PaginatedBankAccountsResponse = {
|
|
114
|
+
data: BankAccount[];
|
|
115
|
+
total: number;
|
|
116
|
+
page: number;
|
|
117
|
+
pageSize: number;
|
|
118
|
+
prev: number | null;
|
|
119
|
+
next: number | null;
|
|
120
|
+
lastPage: number;
|
|
104
121
|
};
|
|
105
122
|
|
|
106
123
|
type UploadedFilePayload = {
|
|
@@ -204,6 +221,7 @@ function NovaContaSheet({
|
|
|
204
221
|
tipo: '',
|
|
205
222
|
descricao: '',
|
|
206
223
|
logoFileId: null,
|
|
224
|
+
dataInicial: new Date().toISOString().slice(0, 10),
|
|
207
225
|
saldoInicial: 0,
|
|
208
226
|
},
|
|
209
227
|
});
|
|
@@ -228,6 +246,8 @@ function NovaContaSheet({
|
|
|
228
246
|
(watchedFormValues.conta ?? '').trim() ||
|
|
229
247
|
(watchedFormValues.tipo ?? '').trim() ||
|
|
230
248
|
(watchedFormValues.descricao ?? '').trim() ||
|
|
249
|
+
(watchedFormValues.dataInicial ?? '').trim() !==
|
|
250
|
+
new Date().toISOString().slice(0, 10) ||
|
|
231
251
|
(watchedFormValues.saldoInicial ?? 0) > 0 ||
|
|
232
252
|
logoFileId != null
|
|
233
253
|
),
|
|
@@ -245,6 +265,9 @@ function NovaContaSheet({
|
|
|
245
265
|
tipo: watchedFormValues.tipo ?? '',
|
|
246
266
|
descricao: watchedFormValues.descricao ?? '',
|
|
247
267
|
logoFileId: logoFileId ?? null,
|
|
268
|
+
dataInicial:
|
|
269
|
+
watchedFormValues.dataInicial ||
|
|
270
|
+
new Date().toISOString().slice(0, 10),
|
|
248
271
|
saldoInicial: watchedFormValues.saldoInicial ?? 0,
|
|
249
272
|
},
|
|
250
273
|
logoFileId: logoFileId ?? null,
|
|
@@ -463,6 +486,9 @@ function NovaContaSheet({
|
|
|
463
486
|
tipo: editingAccount.tipo,
|
|
464
487
|
descricao: editingAccount.descricao,
|
|
465
488
|
logoFileId: currentLogoFileId,
|
|
489
|
+
dataInicial:
|
|
490
|
+
editingAccount.dataInicial ??
|
|
491
|
+
new Date().toISOString().slice(0, 10),
|
|
466
492
|
saldoInicial: editingAccount.saldoAtual,
|
|
467
493
|
}
|
|
468
494
|
);
|
|
@@ -488,6 +514,7 @@ function NovaContaSheet({
|
|
|
488
514
|
tipo: '',
|
|
489
515
|
descricao: '',
|
|
490
516
|
logoFileId: null,
|
|
517
|
+
dataInicial: new Date().toISOString().slice(0, 10),
|
|
491
518
|
saldoInicial: 0,
|
|
492
519
|
}
|
|
493
520
|
);
|
|
@@ -509,6 +536,7 @@ function NovaContaSheet({
|
|
|
509
536
|
type: values.tipo,
|
|
510
537
|
description: values.descricao?.trim() || undefined,
|
|
511
538
|
logo_file_id: nextLogoFileId,
|
|
539
|
+
start_date: values.dataInicial || undefined,
|
|
512
540
|
},
|
|
513
541
|
});
|
|
514
542
|
} else {
|
|
@@ -522,6 +550,7 @@ function NovaContaSheet({
|
|
|
522
550
|
type: values.tipo,
|
|
523
551
|
description: values.descricao?.trim() || undefined,
|
|
524
552
|
logo_file_id: nextLogoFileId,
|
|
553
|
+
start_date: values.dataInicial || undefined,
|
|
525
554
|
initial_balance: values.saldoInicial,
|
|
526
555
|
},
|
|
527
556
|
});
|
|
@@ -550,6 +579,7 @@ function NovaContaSheet({
|
|
|
550
579
|
tipo: '',
|
|
551
580
|
descricao: '',
|
|
552
581
|
logoFileId: null,
|
|
582
|
+
dataInicial: new Date().toISOString().slice(0, 10),
|
|
553
583
|
saldoInicial: 0,
|
|
554
584
|
});
|
|
555
585
|
onOpenChange(false);
|
|
@@ -697,6 +727,32 @@ function NovaContaSheet({
|
|
|
697
727
|
)}
|
|
698
728
|
/>
|
|
699
729
|
|
|
730
|
+
<FormField
|
|
731
|
+
control={form.control}
|
|
732
|
+
name="dataInicial"
|
|
733
|
+
render={({ field }) => (
|
|
734
|
+
<FormItem>
|
|
735
|
+
<FormLabel>Data inicial</FormLabel>
|
|
736
|
+
<FormControl>
|
|
737
|
+
<Input
|
|
738
|
+
type="date"
|
|
739
|
+
{...field}
|
|
740
|
+
onChange={(e) =>
|
|
741
|
+
field.onChange(
|
|
742
|
+
e.target.value ||
|
|
743
|
+
new Date().toISOString().slice(0, 10)
|
|
744
|
+
)
|
|
745
|
+
}
|
|
746
|
+
disabled={!!editingAccount}
|
|
747
|
+
/>
|
|
748
|
+
</FormControl>
|
|
749
|
+
<FormMessage />
|
|
750
|
+
</FormItem>
|
|
751
|
+
)}
|
|
752
|
+
/>
|
|
753
|
+
</div>
|
|
754
|
+
|
|
755
|
+
<div className="grid gap-4 md:grid-cols-2">
|
|
700
756
|
<FormField
|
|
701
757
|
control={form.control}
|
|
702
758
|
name="saldoInicial"
|
|
@@ -720,25 +776,25 @@ function NovaContaSheet({
|
|
|
720
776
|
</FormItem>
|
|
721
777
|
)}
|
|
722
778
|
/>
|
|
723
|
-
</div>
|
|
724
779
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
780
|
+
<FormField
|
|
781
|
+
control={form.control}
|
|
782
|
+
name="descricao"
|
|
783
|
+
render={({ field }) => (
|
|
784
|
+
<FormItem>
|
|
785
|
+
<FormLabel>{t('fields.description')}</FormLabel>
|
|
786
|
+
<FormControl>
|
|
787
|
+
<Input
|
|
788
|
+
placeholder={t('fields.descriptionPlaceholder')}
|
|
789
|
+
{...field}
|
|
790
|
+
value={field.value || ''}
|
|
791
|
+
/>
|
|
792
|
+
</FormControl>
|
|
793
|
+
<FormMessage />
|
|
794
|
+
</FormItem>
|
|
795
|
+
)}
|
|
796
|
+
/>
|
|
797
|
+
</div>
|
|
742
798
|
</FinanceSheetSection>
|
|
743
799
|
|
|
744
800
|
<FinanceSheetSection
|
|
@@ -862,19 +918,34 @@ export default function ContasBancariasPage() {
|
|
|
862
918
|
const [accountIdToDelete, setAccountIdToDelete] = useState<string | null>(
|
|
863
919
|
null
|
|
864
920
|
);
|
|
865
|
-
const
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
921
|
+
const [page, setPage] = useState(1);
|
|
922
|
+
const pageSize = 9;
|
|
923
|
+
const { data: contasBancarias, refetch } =
|
|
924
|
+
useQuery<PaginatedBankAccountsResponse>({
|
|
925
|
+
queryKey: ['finance-bank-accounts', currentLocaleCode, page, pageSize],
|
|
926
|
+
queryFn: async () => {
|
|
927
|
+
const response = await request({
|
|
928
|
+
url: '/finance/bank-accounts',
|
|
929
|
+
method: 'GET',
|
|
930
|
+
params: {
|
|
931
|
+
page,
|
|
932
|
+
pageSize,
|
|
933
|
+
},
|
|
934
|
+
});
|
|
872
935
|
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
936
|
+
return (response.data || {
|
|
937
|
+
data: [],
|
|
938
|
+
total: 0,
|
|
939
|
+
page,
|
|
940
|
+
pageSize,
|
|
941
|
+
prev: null,
|
|
942
|
+
next: null,
|
|
943
|
+
lastPage: 1,
|
|
944
|
+
}) as PaginatedBankAccountsResponse;
|
|
945
|
+
},
|
|
946
|
+
placeholderData: (old) => old,
|
|
947
|
+
});
|
|
948
|
+
const accounts = contasBancarias?.data ?? [];
|
|
878
949
|
|
|
879
950
|
const tipoConfig = {
|
|
880
951
|
corrente: { label: t('types.corrente'), icon: Building2 },
|
|
@@ -1159,6 +1230,18 @@ export default function ContasBancariasPage() {
|
|
|
1159
1230
|
onAction={handleCreate}
|
|
1160
1231
|
/>
|
|
1161
1232
|
)}
|
|
1233
|
+
{accounts.length > 0 ? (
|
|
1234
|
+
<div className="border-t border-border/50 px-4 py-4 sm:px-6">
|
|
1235
|
+
<PaginationFooter
|
|
1236
|
+
currentPage={page}
|
|
1237
|
+
pageSize={pageSize}
|
|
1238
|
+
totalItems={contasBancarias?.total || 0}
|
|
1239
|
+
onPageChange={setPage}
|
|
1240
|
+
onPageSizeChange={() => undefined}
|
|
1241
|
+
pageSizeOptions={[9]}
|
|
1242
|
+
/>
|
|
1243
|
+
</div>
|
|
1244
|
+
) : null}
|
|
1162
1245
|
</FinancePageSection>
|
|
1163
1246
|
</Page>
|
|
1164
1247
|
);
|
|
@@ -388,9 +388,20 @@ export default function ConciliacaoPage() {
|
|
|
388
388
|
const response = await request({
|
|
389
389
|
url: '/finance/bank-accounts',
|
|
390
390
|
method: 'GET',
|
|
391
|
+
params: {
|
|
392
|
+
page: 1,
|
|
393
|
+
pageSize: 100,
|
|
394
|
+
},
|
|
391
395
|
});
|
|
392
396
|
|
|
393
|
-
|
|
397
|
+
const payload = response?.data as
|
|
398
|
+
| { data?: BankAccount[] }
|
|
399
|
+
| BankAccount[]
|
|
400
|
+
| undefined;
|
|
401
|
+
|
|
402
|
+
return (
|
|
403
|
+
Array.isArray(payload) ? payload : payload?.data || []
|
|
404
|
+
) as BankAccount[];
|
|
394
405
|
},
|
|
395
406
|
});
|
|
396
407
|
|
|
@@ -437,11 +448,22 @@ export default function ConciliacaoPage() {
|
|
|
437
448
|
}
|
|
438
449
|
|
|
439
450
|
const response = await request({
|
|
440
|
-
url:
|
|
451
|
+
url: '/finance/statements',
|
|
441
452
|
method: 'GET',
|
|
453
|
+
params: {
|
|
454
|
+
bank_account_id: activeContaFilter,
|
|
455
|
+
page: 1,
|
|
456
|
+
pageSize: 500,
|
|
457
|
+
},
|
|
442
458
|
});
|
|
443
459
|
|
|
444
|
-
|
|
460
|
+
const payload = response?.data as
|
|
461
|
+
| { data?: Statement[] }
|
|
462
|
+
| Statement[]
|
|
463
|
+
| undefined;
|
|
464
|
+
return (
|
|
465
|
+
Array.isArray(payload) ? payload : payload?.data || []
|
|
466
|
+
) as Statement[];
|
|
445
467
|
},
|
|
446
468
|
});
|
|
447
469
|
|