From f5ffe5739ca470e94f9c9217a3290c8595458870 Mon Sep 17 00:00:00 2001 From: keven Date: Fri, 3 Oct 2025 10:35:43 -0300 Subject: [PATCH] =?UTF-8?q?[MVPTN-99]=20refactor(Arquitetura):=20Refatora?= =?UTF-8?q?=C3=A7=C3=A3o=20da=20arquitetura=C3=A7=C3=A3o=20do=20Tpessoa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../administrativo/pessoas/fisicas/page.tsx | 6 +- .../administrativo/pessoas/juridicas/page.tsx | 6 +- .../TPessoaFisica/TPessoaFisicaColumns.tsx} | 67 ++---- .../TPessoaFisica}/TPessoaFisicaForm.tsx | 72 +++--- .../TPessoaFisica/TPessoaFisicaTable.tsx | 22 ++ .../TPessoaJuridicaColumns.tsx | 159 ++++++++++++++ .../TPessoaJuridica}/TPessoaJuridicaForm.tsx | 2 +- .../TPessoaJuridica/TPessoaJuridicaTable.tsx | 27 +++ .../juridica/TPessoaJuridicaTable.tsx | 205 ------------------ .../TPessoaRepresentanteForm.tsx | 6 +- .../TPessoaRepresentantePage.tsx | 4 +- .../TPessoaRepresentanteTable.tsx | 2 +- .../t_pessoa/fisica/usetTPessoaFormHook.ts | 16 ++ .../juridica/useTPessoaJuridicaDeleteHook.ts | 2 +- .../juridica/useTPessoaJuridicaIndexHook.ts | 2 +- .../juridica/useTPessoaJuridicaSaveHook.ts | 2 +- .../hooks/t_pessoa/useTPessoaDeleteHook.ts | 2 +- .../hooks/t_pessoa/useTPessoaIndexHook.ts | 2 +- .../hooks/t_pessoa/useTPessoaSaveHook.ts | 2 +- .../useTPessoaDeleteHook.ts | 2 +- .../useTPessoaRepresentanteIndexHook.ts | 2 +- .../useTPessoaSaveHook.ts | 2 +- .../TPessoaFisicaFormInterface.ts | 9 + .../TPessoaFisica/TPessoaFisicaInterface.ts | 33 +++ .../TPessoaFisicaTableInterface.ts | 7 + .../interfaces/TPessoa/TPessoaInterface.ts | 32 +++ .../TPessoaJuridicaFormInterface.ts | 9 + .../TPessoaJuridicaInterface.ts | 12 + .../TPessoaJuridicaTableInterface.ts | 7 + .../interfaces/TPessoaInterface.ts | 63 ------ .../interfaces/TPessoaJuridicaInterface.ts | 63 ------ .../interfaces/TPessoaRepresentante.ts | 5 - .../schemas/TPessoa/TPessoaFisicaSchema.ts | 36 +++ .../schemas/TPessoa/TPessoaJuridicaSchema.ts | 15 ++ .../schemas/TPessoa/TPessoaSchema.ts | 33 +++ .../schemas/TPessoaFisicaSchema.ts | 64 ------ 36 files changed, 481 insertions(+), 519 deletions(-) rename src/packages/administrativo/components/{t_pessoa/fisica/TPessoaFisicaTable.tsx => TPessoa/TPessoaFisica/TPessoaFisicaColumns.tsx} (76%) rename src/packages/administrativo/components/{t_pessoa/fisica => TPessoa/TPessoaFisica}/TPessoaFisicaForm.tsx (95%) create mode 100644 src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaTable.tsx create mode 100644 src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaColumns.tsx rename src/packages/administrativo/components/{t_pessoa/juridica => TPessoa/TPessoaJuridica}/TPessoaJuridicaForm.tsx (99%) create mode 100644 src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaTable.tsx delete mode 100644 src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaTable.tsx create mode 100644 src/packages/administrativo/hooks/t_pessoa/fisica/usetTPessoaFormHook.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaFormInterface.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaInterface.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaTableInterface.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaInterface.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaFormInterface.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface.ts create mode 100644 src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaTableInterface.ts delete mode 100644 src/packages/administrativo/interfaces/TPessoaInterface.ts delete mode 100644 src/packages/administrativo/interfaces/TPessoaJuridicaInterface.ts delete mode 100644 src/packages/administrativo/interfaces/TPessoaRepresentante.ts create mode 100644 src/packages/administrativo/schemas/TPessoa/TPessoaFisicaSchema.ts create mode 100644 src/packages/administrativo/schemas/TPessoa/TPessoaJuridicaSchema.ts create mode 100644 src/packages/administrativo/schemas/TPessoa/TPessoaSchema.ts delete mode 100644 src/packages/administrativo/schemas/TPessoaFisicaSchema.ts diff --git a/src/app/(protected)/(administrativo)/administrativo/pessoas/fisicas/page.tsx b/src/app/(protected)/(administrativo)/administrativo/pessoas/fisicas/page.tsx index 3d69165..3e44744 100644 --- a/src/app/(protected)/(administrativo)/administrativo/pessoas/fisicas/page.tsx +++ b/src/app/(protected)/(administrativo)/administrativo/pessoas/fisicas/page.tsx @@ -3,8 +3,8 @@ import React, { useEffect, useState, useCallback } from 'react'; import Loading from '@/app/_components/loading/loading'; -import TPessoaTable from '@/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaTable'; -import TPessoaForm from '@/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaForm'; +import TPessoaTable from '@/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaTable'; +import TPessoaForm from '@/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaForm'; import { useTPessoaIndexHook } from '@/packages/administrativo/hooks/t_pessoa/useTPessoaIndexHook'; import { useTPessoaSaveHook } from '@/packages/administrativo/hooks/t_pessoa/useTPessoaSaveHook'; @@ -13,7 +13,7 @@ import { useTPessoaDeleteHook } from '@/packages/administrativo/hooks/t_pessoa/u import ConfirmDialog from '@/app/_components/confirm_dialog/ConfirmDialog'; import { useConfirmDialog } from '@/app/_components/confirm_dialog/useConfirmDialog'; -import TPessoaInterface from '@/packages/administrativo/interfaces/TPessoaInterface'; +import TPessoaInterface from '@/packages/administrativo/interfaces/TPessoa/TPessoaInterface'; import Header from '@/app/_components/structure/Header'; export default function TPessoaFisica() { diff --git a/src/app/(protected)/(administrativo)/administrativo/pessoas/juridicas/page.tsx b/src/app/(protected)/(administrativo)/administrativo/pessoas/juridicas/page.tsx index 00e6713..f2486f3 100644 --- a/src/app/(protected)/(administrativo)/administrativo/pessoas/juridicas/page.tsx +++ b/src/app/(protected)/(administrativo)/administrativo/pessoas/juridicas/page.tsx @@ -10,11 +10,11 @@ import { useTPessoaDeleteHook } from '@/packages/administrativo/hooks/t_pessoa/u import ConfirmDialog from '@/app/_components/confirm_dialog/ConfirmDialog'; import { useConfirmDialog } from '@/app/_components/confirm_dialog/useConfirmDialog'; -import TPessoaInterface from '@/packages/administrativo/interfaces/TPessoaInterface'; +import TPessoaInterface from '@/packages/administrativo/interfaces/TPessoa/TPessoaInterface'; import Header from '@/app/_components/structure/Header'; -import TPessoaJuridicaTable from '@/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaTable'; +import TPessoaJuridicaTable from '@/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaTable'; import { useTPessoaJuridicaIndexHook } from '@/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaIndexHook'; -import TPessoaJuridicaForm from '@/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaForm'; +import TPessoaJuridicaForm from '@/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaForm'; export default function TPessoaFisica() { // Controle de estado do botão diff --git a/src/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaTable.tsx b/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaColumns.tsx similarity index 76% rename from src/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaTable.tsx rename to src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaColumns.tsx index fbe1b6d..120b85c 100644 --- a/src/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaTable.tsx +++ b/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaColumns.tsx @@ -1,41 +1,21 @@ -'use client'; - -import { Button } from '@/components/ui/button'; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from '@/components/ui/dropdown-menu'; - -import { ArrowUpDownIcon, EllipsisIcon, PencilIcon, Trash2Icon } from 'lucide-react'; -import { ColumnDef } from '@tanstack/react-table'; - -import GetNameInitials from '@/actions/text/GetNameInitials'; -import { DataTable } from '@/app/_components/dataTable/DataTable'; - -import TPessoaInterface from '../../../interfaces/TPessoaInterface'; -import { FormatCPF } from '@/actions/CPF/FormatCPF'; -import { FormatPhone } from '@/actions/phone/FormatPhone'; -import { FormatDateTime } from '@/actions/dateTime/FormatDateTime'; -import empty from '@/actions/validations/empty'; - -// Tipagem das props -interface TPessoaTableProps { - data: TPessoaInterface[]; - onEdit: (item: TPessoaInterface, isEditingFormStatus: boolean) => void; - onDelete: (item: TPessoaInterface, isEditingFormStatus: boolean) => void; -} +import { FormatCPF } from "@/actions/CPF/FormatCPF"; +import { FormatDateTime } from "@/actions/dateTime/FormatDateTime"; +import { FormatPhone } from "@/actions/phone/FormatPhone"; +import GetNameInitials from "@/actions/text/GetNameInitials"; +import empty from "@/actions/validations/empty"; +import { Button } from "@/components/ui/button"; +import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; +import TPessoaFisicaInterface from "@/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaInterface"; +import { ColumnDef } from "@tanstack/react-table"; +import { ArrowUpDownIcon, EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; /** * Função para criar a definição das colunas da tabela */ -function createPessoaColumns( - onEdit: (item: TPessoaInterface, isEditingFormStatus: boolean) => void, - onDelete: (item: TPessoaInterface, isEditingFormStatus: boolean) => void, -): ColumnDef[] { +export function TPessoaFisicaColumns( + onEdit: (item: TPessoaFisicaInterface, isEditingFormStatus: boolean) => void, + onDelete: (item: TPessoaFisicaInterface, isEditingFormStatus: boolean) => void, +): ColumnDef[] { return [ // ID { @@ -196,21 +176,4 @@ function createPessoaColumns( enableHiding: false, }, ]; -} - -/** - * Componente principal da tabela - */ -export default function TPessoaTable({ data, onEdit, onDelete }: TPessoaTableProps) { - const columns = createPessoaColumns(onEdit, onDelete); - return ( -
- -
- ); -} +} \ No newline at end of file diff --git a/src/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaForm.tsx b/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaForm.tsx similarity index 95% rename from src/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaForm.tsx rename to src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaForm.tsx index 6575600..3af6e23 100644 --- a/src/packages/administrativo/components/t_pessoa/fisica/TPessoaFisicaForm.tsx +++ b/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaForm.tsx @@ -1,9 +1,6 @@ 'use client'; -import z from 'zod'; import React, { useEffect } from 'react'; -import { useForm, Controller } from 'react-hook-form'; -import { zodResolver } from '@hookform/resolvers/zod'; import { Button } from '@/components/ui/button'; import { @@ -25,7 +22,6 @@ import { } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; -import { TPessoaSchema } from '../../../schemas/TPessoaFisicaSchema'; import LoadingButton from '@/app/_components/loadingButton/LoadingButton'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { @@ -33,7 +29,6 @@ import { SelectContent, SelectItem, SelectTrigger, - SelectValue, } from '@/components/ui/select'; import { CheckIcon, ChevronsUpDownIcon, HouseIcon, IdCardIcon, UserIcon } from 'lucide-react'; import { Sexo } from '@/enums/SexoEnum'; @@ -51,50 +46,36 @@ import { CommandList, } from '@/components/ui/command'; import { cn } from '@/lib/utils'; +import TPessoaFisicaFormInterface from '../../../interfaces/TPessoa/TPessoaFisica/TPessoaFisicaFormInterface'; +import { ResetFormIfData } from '@/actions/form/ResetFormIfData'; +import { useTPessoaForm } from '@/packages/administrativo/hooks/t_pessoa/fisica/usetTPessoaFormHook'; -type FormValues = z.infer; - -interface TPessoaFormProps { - isOpen: boolean; - data: FormValues | null; - onClose: (item: null, isFormStatus: boolean) => void; - onSave: (data: FormValues) => void; - buttonIsLoading: boolean; -} - -export default function TCensecForm({ +export default function TPessoaFisicaForm({ isOpen, data, onClose, onSave, buttonIsLoading, -}: TPessoaFormProps) { +}: TPessoaFisicaFormInterface) { + const { gTBProfissao, fetchGTBProfissao } = useGTBProfissaoReadHook(); const { gTBEstadoCivil, fetchGTBEstadoCivil } = useGTBEstadoCivilReadHook(); const { gTBRegimeComunhao, fetchGTBRegimeComunhao } = useGTBRegimeComunhaoReadHook(); // Inicializa o react-hook-form com schema zod - const form = useForm({ - resolver: zodResolver(TPessoaSchema), - defaultValues: { - nome: '', - pessoa_id: 0, - }, - }); + const form = useTPessoaForm({}); // Atualiza o formulário quando recebe dados para edição useEffect(() => { // Função para carregar os dados de forma sincrona const loadData = async () => { // Se existir dados, reseta o formulário com os dados informados - if (data) form.reset(data); - + ResetFormIfData(form, data) // Aguarda a busca terminar await fetchGTBProfissao(); await fetchGTBEstadoCivil(); await fetchGTBRegimeComunhao(); }; - // Dispara a função loadData(); }, [data, form]); @@ -108,8 +89,12 @@ export default function TCensecForm({ > - Pessoa - Preencha os dados da pessoa + + Pessoa Física + + + Preencha os dados da pessoa +
@@ -310,10 +295,10 @@ export default function TCensecForm({ className="justify-between" > {field.value - ? gTBEstadoCivil.find( - (item) => - String(item.tb_estadocivil_id) === String(field.value), - )?.descricao + ? gTBEstadoCivil?.find( + (item) => + String(item.tb_estadocivil_id) === String(field.value), + )?.descricao : 'Escolha o estado civil'} @@ -376,11 +361,11 @@ export default function TCensecForm({ className="justify-between" > {field.value - ? gTBRegimeComunhao.find( - (item) => - String(item.tb_regimecomunhao_id) === - String(field.value), - )?.descricao + ? gTBRegimeComunhao?.find( + (item) => + String(item.tb_regimecomunhao_id) === + String(field.value), + )?.descricao : 'Escolha o regime'} @@ -444,10 +429,10 @@ export default function TCensecForm({ className="justify-between" > {field.value - ? gTBProfissao.find( - (item) => - String(item.tb_profissao_id) === String(field.value), - )?.descricao + ? gTBProfissao?.find( + (item) => + String(item.tb_profissao_id) === String(field.value), + )?.descricao : 'Escolha a profissão'} @@ -800,7 +785,6 @@ export default function TCensecForm({ )} /> - {/* Validade */}
- {/* Rodapé do Dialog */} @@ -840,7 +823,6 @@ export default function TCensecForm({ loading={buttonIsLoading} /> - {/* Campo oculto */} diff --git a/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaTable.tsx b/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaTable.tsx new file mode 100644 index 0000000..4179571 --- /dev/null +++ b/src/packages/administrativo/components/TPessoa/TPessoaFisica/TPessoaFisicaTable.tsx @@ -0,0 +1,22 @@ +'use client'; + +import { DataTable } from '@/app/_components/dataTable/DataTable'; +import TPessoaFisicaTableInterface from '@/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaTableInterface'; +import { TPessoaFisicaColumns } from './TPessoaFisicaColumns'; + +/** + * Componente principal da tabela + */ +export default function TPessoaFisicaTable({ data, onEdit, onDelete }: TPessoaFisicaTableInterface) { + const columns = TPessoaFisicaColumns(onEdit, onDelete); + return ( +
+ +
+ ); +} diff --git a/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaColumns.tsx b/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaColumns.tsx new file mode 100644 index 0000000..9adc96c --- /dev/null +++ b/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaColumns.tsx @@ -0,0 +1,159 @@ +import { FormatCNPJ } from "@/actions/CNPJ/FormatCNPJ"; +import { FormatDateTime } from "@/actions/dateTime/FormatDateTime"; +import { FormatPhone } from "@/actions/phone/FormatPhone"; +import empty from "@/actions/validations/empty"; +import { Button } from "@/components/ui/button"; +import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; +import TPessoaJuridicaInterface from "@/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface"; +import { ColumnDef } from "@tanstack/react-table"; +import { ArrowUpDownIcon, EllipsisIcon, PencilIcon, Trash2Icon } from "lucide-react"; + +export default function TPessoaJuridicaColumns( + onEdit: (item: TPessoaJuridicaInterface, isEditingFormStatus: boolean) => void, + onDelete: (item: TPessoaJuridicaInterface, isEditingFormStatus: boolean) => void, +): ColumnDef[] { + return [ + // ID + { + accessorKey: 'pessoa_id', + header: ({ column }) => ( + + ), + cell: ({ row }) => Number(row.getValue('pessoa_id')), + enableSorting: false, + }, + + // Nome / Email / Foto + { + id: 'nome_completo', + accessorFn: (row) => row, + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const pessoa = row.original; + return ( +
+ {/* Nome e Email */} +
+
{pessoa.nome || '-'}
+
+ {empty(pessoa.email) ? 'Email não informado' : pessoa.email} +
+
+
+ ); + }, + sortingFn: (a, b) => + (a.original.nome?.toLowerCase() || '').localeCompare(b.original.nome?.toLowerCase() || ''), + }, + + // CPF + { + accessorKey: 'cpf_cnpj', + header: ({ column }) => ( + + ), + cell: ({ row }) => FormatCNPJ(row.getValue('cpf_cnpj')), + }, + + // Telefone + { + accessorKey: 'telefone', + header: ({ column }) => ( + + ), + cell: ({ row }) => FormatPhone(row.getValue('telefone')), + }, + + // Cidade / UF + { + id: 'cidade_uf', + accessorFn: (row) => `${row.cidade}/${row.uf}`, + header: ({ column }) => ( + + ), + cell: ({ row }) => {row.getValue('cidade_uf') || '-'}, + sortingFn: (a, b) => + `${a.original.cidade}/${a.original.uf}` + .toLowerCase() + .localeCompare(`${b.original.cidade}/${b.original.uf}`.toLowerCase()), + }, + + // Data de cadastro + { + accessorKey: 'data_cadastro', + header: ({ column }) => ( + + ), + cell: ({ row }) => FormatDateTime(row.getValue('data_cadastro')), + sortingFn: 'datetime', + }, + + // Ações + { + id: 'actions', + header: 'Ações', + cell: ({ row }) => { + const pessoa = row.original; + return ( + + + + + + + onEdit(pessoa, true)}> + + Editar + + + onDelete(pessoa, true)} + > + + Remover + + + + + ); + }, + enableSorting: false, + enableHiding: false, + }, + ]; +} diff --git a/src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaForm.tsx b/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaForm.tsx similarity index 99% rename from src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaForm.tsx rename to src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaForm.tsx index c3a4d77..8db35d4 100644 --- a/src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaForm.tsx +++ b/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaForm.tsx @@ -25,7 +25,7 @@ import { } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; -import { TPessoaSchema } from '../../../schemas/TPessoaFisicaSchema'; +import { TPessoaSchema } from '../../../schemas/TPessoa/TPessoaSchema'; import LoadingButton from '@/app/_components/loadingButton/LoadingButton'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { HouseIcon, IdCardIcon, UserIcon } from 'lucide-react'; diff --git a/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaTable.tsx b/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaTable.tsx new file mode 100644 index 0000000..eafa92c --- /dev/null +++ b/src/packages/administrativo/components/TPessoa/TPessoaJuridica/TPessoaJuridicaTable.tsx @@ -0,0 +1,27 @@ +'use client'; + +import { DataTable } from '@/app/_components/dataTable/DataTable'; + +import TPessoaJuridicaColumns from './TPessoaJuridicaColumns'; +import TPessoaJuridicaTableInterface from '@/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaTableInterface'; + +/** + * Componente principal da tabela + */ +export default function TPessoaJuridicaTable({ + data, + onEdit, + onDelete, +}: TPessoaJuridicaTableInterface) { + const columns = TPessoaJuridicaColumns(onEdit, onDelete); + return ( +
+ +
+ ); +} diff --git a/src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaTable.tsx b/src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaTable.tsx deleted file mode 100644 index 9996da6..0000000 --- a/src/packages/administrativo/components/t_pessoa/juridica/TPessoaJuridicaTable.tsx +++ /dev/null @@ -1,205 +0,0 @@ -'use client'; - -import { Button } from '@/components/ui/button'; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from '@/components/ui/dropdown-menu'; - -import { ArrowUpDownIcon, EllipsisIcon, PencilIcon, Trash2Icon } from 'lucide-react'; -import { ColumnDef } from '@tanstack/react-table'; - -import GetNameInitials from '@/actions/text/GetNameInitials'; -import { DataTable } from '@/app/_components/dataTable/DataTable'; - -import TPessoaInterface from '../../../interfaces/TPessoaInterface'; -import { FormatCPF } from '@/actions/CPF/FormatCPF'; -import { FormatPhone } from '@/actions/phone/FormatPhone'; -import { FormatDateTime } from '@/actions/dateTime/FormatDateTime'; -import empty from '@/actions/validations/empty'; -import { FormatCNPJ } from '@/actions/CNPJ/FormatCNPJ'; - -// Tipagem das props -interface TPessoaJuridicaTableProps { - data: TPessoaInterface[]; - onEdit: (item: TPessoaInterface, isEditingFormStatus: boolean) => void; - onDelete: (item: TPessoaInterface, isEditingFormStatus: boolean) => void; -} - -/** - * Função para criar a definição das colunas da tabela - */ -function createPessoaColumns( - onEdit: (item: TPessoaInterface, isEditingFormStatus: boolean) => void, - onDelete: (item: TPessoaInterface, isEditingFormStatus: boolean) => void, -): ColumnDef[] { - return [ - // ID - { - accessorKey: 'pessoa_id', - header: ({ column }) => ( - - ), - cell: ({ row }) => Number(row.getValue('pessoa_id')), - enableSorting: false, - }, - - // Nome / Email / Foto - { - id: 'nome_completo', - accessorFn: (row) => row, - header: ({ column }) => ( - - ), - cell: ({ row }) => { - const pessoa = row.original; - return ( -
- {/* Nome e Email */} -
-
{pessoa.nome || '-'}
-
- {empty(pessoa.email) ? 'Email não informado' : pessoa.email} -
-
-
- ); - }, - sortingFn: (a, b) => - (a.original.nome?.toLowerCase() || '').localeCompare(b.original.nome?.toLowerCase() || ''), - }, - - // CPF - { - accessorKey: 'cpf_cnpj', - header: ({ column }) => ( - - ), - cell: ({ row }) => FormatCNPJ(row.getValue('cpf_cnpj')), - }, - - // Telefone - { - accessorKey: 'telefone', - header: ({ column }) => ( - - ), - cell: ({ row }) => FormatPhone(row.getValue('telefone')), - }, - - // Cidade / UF - { - id: 'cidade_uf', - accessorFn: (row) => `${row.cidade}/${row.uf}`, - header: ({ column }) => ( - - ), - cell: ({ row }) => {row.getValue('cidade_uf') || '-'}, - sortingFn: (a, b) => - `${a.original.cidade}/${a.original.uf}` - .toLowerCase() - .localeCompare(`${b.original.cidade}/${b.original.uf}`.toLowerCase()), - }, - - // Data de cadastro - { - accessorKey: 'data_cadastro', - header: ({ column }) => ( - - ), - cell: ({ row }) => FormatDateTime(row.getValue('data_cadastro')), - sortingFn: 'datetime', - }, - - // Ações - { - id: 'actions', - header: 'Ações', - cell: ({ row }) => { - const pessoa = row.original; - return ( - - - - - - - onEdit(pessoa, true)}> - - Editar - - - onDelete(pessoa, true)} - > - - Remover - - - - - ); - }, - enableSorting: false, - enableHiding: false, - }, - ]; -} - -/** - * Componente principal da tabela - */ -export default function TPessoaJuridicaTable({ - data, - onEdit, - onDelete, -}: TPessoaJuridicaTableProps) { - const columns = createPessoaColumns(onEdit, onDelete); - return ( -
- -
- ); -} diff --git a/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteForm.tsx b/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteForm.tsx index 253ebaa..7de7356 100644 --- a/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteForm.tsx +++ b/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteForm.tsx @@ -25,7 +25,7 @@ import { } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; -import { TPessoaSchema } from '../../schemas/TPessoaFisicaSchema'; +import { TPessoaSchema } from '../../schemas/TPessoa/TPessoaSchema'; import LoadingButton from '@/app/_components/loadingButton/LoadingButton'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { @@ -62,8 +62,8 @@ import { } from '@/components/ui/command'; import { cn } from '@/lib/utils'; import { useTPessoaIndexHook } from '../../hooks/t_pessoa/useTPessoaIndexHook'; -import TPessoaTable from '../t_pessoa/fisica/TPessoaFisicaTable'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaTable from '../TPessoa/TPessoaFisica/TPessoaFisicaTable'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { ColumnDef } from '@tanstack/react-table'; import GetNameInitials from '@/actions/text/GetNameInitials'; import empty from '@/actions/validations/empty'; diff --git a/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentantePage.tsx b/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentantePage.tsx index 4f078c2..5d8a5d7 100644 --- a/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentantePage.tsx +++ b/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentantePage.tsx @@ -3,7 +3,7 @@ import React, { useEffect, useState, useCallback } from 'react'; import Loading from '@/app/_components/loading/loading'; -import TPessoaForm from '../t_pessoa/fisica/TPessoaFisicaForm'; +import TPessoaForm from '../TPessoa/TPessoaFisica/TPessoaFisicaForm'; import { useTPessoaIndexHook } from '../../hooks/t_pessoa/useTPessoaIndexHook'; import { useTPessoaSaveHook } from '../../hooks/t_pessoa/useTPessoaSaveHook'; @@ -12,7 +12,7 @@ import { useTPessoaDeleteHook } from '../../hooks/t_pessoa/useTPessoaDeleteHook' import ConfirmDialog from '@/app/_components/confirm_dialog/ConfirmDialog'; import { useConfirmDialog } from '@/app/_components/confirm_dialog/useConfirmDialog'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import TPessoaRepresentanteTable from './TPessoaRepresentanteTable'; import { useTPessoaRepresentanteIndexHook } from '../../hooks/t_pessoa_representante/useTPessoaRepresentanteIndexHook'; import { Button } from '@/components/ui/button'; diff --git a/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteTable.tsx b/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteTable.tsx index 655a6d8..dd7efe3 100644 --- a/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteTable.tsx +++ b/src/packages/administrativo/components/t_pessoa_representante/TPessoaRepresentanteTable.tsx @@ -16,7 +16,7 @@ import { ColumnDef } from '@tanstack/react-table'; import GetNameInitials from '@/actions/text/GetNameInitials'; import { DataTable } from '@/app/_components/dataTable/DataTable'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { FormatCPF } from '@/actions/CPF/FormatCPF'; import { FormatPhone } from '@/actions/phone/FormatPhone'; import empty from '@/actions/validations/empty'; diff --git a/src/packages/administrativo/hooks/t_pessoa/fisica/usetTPessoaFormHook.ts b/src/packages/administrativo/hooks/t_pessoa/fisica/usetTPessoaFormHook.ts new file mode 100644 index 0000000..f9269b1 --- /dev/null +++ b/src/packages/administrativo/hooks/t_pessoa/fisica/usetTPessoaFormHook.ts @@ -0,0 +1,16 @@ +// hooks/useTPessoaForm.ts +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { TPessoaFormValues, TPessoaSchema } from "@/packages/administrativo/schemas/TPessoa/TPessoaSchema"; + +// Hook customizado +export function useTPessoaForm(defaults?: Partial) { + return useForm({ + resolver: zodResolver(TPessoaSchema), + defaultValues: { + nome: "", + pessoa_id: 0, + ...defaults, // sobrescreve valores iniciais se forem passados + }, + }); +} \ No newline at end of file diff --git a/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaDeleteHook.ts b/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaDeleteHook.ts index fdbb302..89f74df 100644 --- a/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaDeleteHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaDeleteHook.ts @@ -1,5 +1,5 @@ import { useResponse } from '@/app/_response/ResponseContext'; -import TPessoaJuridicaInterface from '../../../interfaces/TPessoaJuridicaInterface'; +import TPessoaJuridicaInterface from '../../../interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface'; import { TCensecDeleteService } from '../../../../../app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService'; export const useTPessoaJuridicaDeleteHook = () => { diff --git a/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaIndexHook.ts b/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaIndexHook.ts index 634db61..ecb0720 100644 --- a/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaIndexHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaIndexHook.ts @@ -1,7 +1,7 @@ import { useResponse } from '@/app/_response/ResponseContext'; import { TPessoaJuridicaIndexService } from '../../../services/t_pessoa/juridica/TPessoaJuridicaIndexService'; import { useState } from 'react'; -import TPessoaJuridicaInterface from '../../../interfaces/TPessoaJuridicaInterface'; +import TPessoaJuridicaInterface from '../../../interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface'; export const useTPessoaJuridicaIndexHook = () => { const { setResponse } = useResponse(); diff --git a/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaSaveHook.ts b/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaSaveHook.ts index 852c89e..c5f1ff3 100644 --- a/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaSaveHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa/juridica/useTPessoaJuridicaSaveHook.ts @@ -2,7 +2,7 @@ import { useResponse } from '@/app/_response/ResponseContext'; import { useState } from 'react'; -import TPessoaInterface from '../../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../../interfaces/TPessoa/TPessoaInterface'; import { TCensecSaveService } from '../../../../../app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService'; export const useTPessoaJuridicaSaveHook = () => { diff --git a/src/packages/administrativo/hooks/t_pessoa/useTPessoaDeleteHook.ts b/src/packages/administrativo/hooks/t_pessoa/useTPessoaDeleteHook.ts index 3958370..8764a52 100644 --- a/src/packages/administrativo/hooks/t_pessoa/useTPessoaDeleteHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa/useTPessoaDeleteHook.ts @@ -1,5 +1,5 @@ import { useResponse } from '@/app/_response/ResponseContext'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { TCensecDeleteService } from '../../../../app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService'; export const useTPessoaDeleteHook = () => { diff --git a/src/packages/administrativo/hooks/t_pessoa/useTPessoaIndexHook.ts b/src/packages/administrativo/hooks/t_pessoa/useTPessoaIndexHook.ts index d5ab376..e1fc3a2 100644 --- a/src/packages/administrativo/hooks/t_pessoa/useTPessoaIndexHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa/useTPessoaIndexHook.ts @@ -1,7 +1,7 @@ import { useResponse } from '@/app/_response/ResponseContext'; import { TPessoaIndexService } from '../../services/t_pessoa/TPessoaIndexService'; import { useState } from 'react'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; export const useTPessoaIndexHook = () => { const { setResponse } = useResponse(); diff --git a/src/packages/administrativo/hooks/t_pessoa/useTPessoaSaveHook.ts b/src/packages/administrativo/hooks/t_pessoa/useTPessoaSaveHook.ts index 87b03ee..c349302 100644 --- a/src/packages/administrativo/hooks/t_pessoa/useTPessoaSaveHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa/useTPessoaSaveHook.ts @@ -2,7 +2,7 @@ import { useResponse } from '@/app/_response/ResponseContext'; import { useState } from 'react'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { TCensecSaveService } from '../../../../app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService'; export const useTPessoaSaveHook = () => { diff --git a/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaDeleteHook.ts b/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaDeleteHook.ts index 3958370..8764a52 100644 --- a/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaDeleteHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaDeleteHook.ts @@ -1,5 +1,5 @@ import { useResponse } from '@/app/_response/ResponseContext'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { TCensecDeleteService } from '../../../../app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService'; export const useTPessoaDeleteHook = () => { diff --git a/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaRepresentanteIndexHook.ts b/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaRepresentanteIndexHook.ts index abd014b..f163fa9 100644 --- a/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaRepresentanteIndexHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaRepresentanteIndexHook.ts @@ -1,7 +1,7 @@ import { useResponse } from '@/app/_response/ResponseContext'; import { TPessoaIndexService } from '../../services/t_pessoa/TPessoaIndexService'; import { useState } from 'react'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { TPessoaRepresentanteIndexData } from '../../data/TPessoaRepresentante/TPessoaRepresentanteIndexData'; export const useTPessoaRepresentanteIndexHook = () => { diff --git a/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaSaveHook.ts b/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaSaveHook.ts index 87b03ee..c349302 100644 --- a/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaSaveHook.ts +++ b/src/packages/administrativo/hooks/t_pessoa_representante/useTPessoaSaveHook.ts @@ -2,7 +2,7 @@ import { useResponse } from '@/app/_response/ResponseContext'; import { useState } from 'react'; -import TPessoaInterface from '../../interfaces/TPessoaInterface'; +import TPessoaInterface from '../../interfaces/TPessoa/TPessoaInterface'; import { TCensecSaveService } from '../../../../app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService'; export const useTPessoaSaveHook = () => { diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaFormInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaFormInterface.ts new file mode 100644 index 0000000..1f9425e --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaFormInterface.ts @@ -0,0 +1,9 @@ +import { TPessoaFisicaFormValues } from "../../../schemas/TPessoa/TPessoaFisicaSchema"; + +export default interface TPessoaFisicaFormInterface { + isOpen: boolean; + data: TPessoaFisicaFormValues | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: TPessoaFisicaFormValues) => void; + buttonIsLoading: boolean; +} \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaInterface.ts new file mode 100644 index 0000000..ffe56df --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaInterface.ts @@ -0,0 +1,33 @@ +import TPessoaInterface from "../TPessoaInterface"; + +export default interface TPessoaFisicaInterface extends TPessoaInterface { + nacionalidade?: string; + tb_documentotipo_id?: number; + tb_profissao_id?: number; + tb_estadocivil_id?: number; + nome_pai?: string; + nome_mae?: string; + data_nascimento?: string; + sexo?: string; + tb_regimecomunhao_id?: number; + pessoa_conjuge_id?: number; + documento_expedicao?: string; + documento_validade?: string; + cert_casamento_numero?: string; + cert_casamento_folha?: string; + cert_casamento_livro?: string; + cert_casamento_cartorio?: string; + cert_casamento_data?: string; + cert_casamento_lei?: string; + pessoa_conjuge_nome?: string; + estrangeiro_nat?: string; + estrangeiro_nat_tb_pais_id?: number; + estrangeiro_res_tb_pais_id?: number; + estrangeiro_res?: string; + documento_orgao?: string; + documento_uf?: string; + uf_residencia?: string; + deficiencias?: string; + grau_instrucao?: string; + cidade_nat_id?: number; +} diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaTableInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaTableInterface.ts new file mode 100644 index 0000000..10898d3 --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaFisica/TPessoaFisicaTableInterface.ts @@ -0,0 +1,7 @@ +import TPessoaFisicaInterface from "./TPessoaFisicaInterface"; + +export default interface TPessoaFisicaTableInterface { + data: TPessoaFisicaInterface[]; + onEdit: (item: TPessoaFisicaInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: TPessoaFisicaInterface, isEditingFormStatus: boolean) => void; +} \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaInterface.ts new file mode 100644 index 0000000..b45137c --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaInterface.ts @@ -0,0 +1,32 @@ +export default interface TPessoaInterface { + pessoa_id?: number; + pessoa_tipo?: string; + nome?: string; + documento?: string; + data_cadastro?: string; + naturalidade?: string; + telefone?: string; + endereco?: string; + cidade?: string; + uf?: string; + email?: string; + documento_numero?: string; + bairro?: string; + cep?: string; + observacao?: string; + cpf_cnpj?: string; + cpf_terceiro?: string; + texto?: string; + ddd?: number; + municipio_id?: number; + enviado_cnncnb?: boolean; + data_auteracao?: string; + data_envioccn?: string; + ccnregistros_id?: number; + observacao_envioccn?: string; + observacao_envio_ccn?: string; + tb_tipologradouro_id?: number; + unidade?: string; + numero_end?: string; + foto?: string; +} \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaFormInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaFormInterface.ts new file mode 100644 index 0000000..8ea81b9 --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaFormInterface.ts @@ -0,0 +1,9 @@ +import TPessoaJuridicaInterface from "./TPessoaJuridicaInterface"; + +export default interface TPessoaJuridicaFormInterface { + isOpen: boolean; + data: TPessoaJuridicaInterface | null; + onClose: (item: null, isFormStatus: boolean) => void; + onSave: (data: TPessoaJuridicaInterface) => void; + buttonIsLoading: boolean; +} \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface.ts new file mode 100644 index 0000000..6ca5fe6 --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaInterface.ts @@ -0,0 +1,12 @@ +import TPessoaInterface from "../TPessoaInterface"; + +export default interface TPessoaJuridicaInterface extends TPessoaInterface { + razao_social?: string; + nome_fantasia?: string; + inscricao_estadual?: string; + inscricao_municipal?: string; + capital_social?: number; + data_abertura?: string; + cnae_principal?: string; + cnae_secundario?: string[]; +} diff --git a/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaTableInterface.ts b/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaTableInterface.ts new file mode 100644 index 0000000..1538e35 --- /dev/null +++ b/src/packages/administrativo/interfaces/TPessoa/TPessoaJuridica/TPessoaJuridicaTableInterface.ts @@ -0,0 +1,7 @@ +import TPessoaJuridicaInterface from "./TPessoaJuridicaInterface"; + +export default interface TPessoaJuridicaTableInterface { + data: TPessoaJuridicaInterface[]; + onEdit: (item: TPessoaJuridicaInterface, isEditingFormStatus: boolean) => void; + onDelete: (item: TPessoaJuridicaInterface, isEditingFormStatus: boolean) => void; +} \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/TPessoaInterface.ts b/src/packages/administrativo/interfaces/TPessoaInterface.ts deleted file mode 100644 index f7e7711..0000000 --- a/src/packages/administrativo/interfaces/TPessoaInterface.ts +++ /dev/null @@ -1,63 +0,0 @@ -export default interface TPessoaInterface { - pessoa_id?: number; - pessoa_tipo?: string; - nome?: string; - nacionalidade?: string; - documento?: string; - tb_documentotipo_id?: number; - tb_profissao_id?: number; - tb_estadocivil_id?: number; - nome_pai?: string; - nome_mae?: string; - data_cadastro?: string; // ou Date - naturalidade?: string; - telefone?: string; - endereco?: string; - cidade?: string; - uf?: string; - data_nascimento?: string; // ou Date - sexo?: string; - tb_regimecomunhao_id?: number; - pessoa_conjuge_id?: number; - email?: string; - documento_numero?: string; - bairro?: string; - cep?: string; - documento_expedicao?: string; // ou Date - documento_validade?: string; // ou Date - observacao?: string; - cpf_cnpj?: string; - cpf_terceiro?: string; - nome_fantasia?: string; - texto?: string; - ddd?: number; - cert_casamento_numero?: string; - cert_casamento_folha?: string; - cert_casamento_livro?: string; - cert_casamento_cartorio?: string; - cert_casamento_data?: string; // ou Date - cert_casamento_lei?: string; - pessoa_conjuge_nome?: string; - estrangeiro_nat?: string; - estrangeiro_nat_tb_pais_id?: number; - estrangeiro_res_tb_pais_id?: number; - estrangeiro_res?: string; - municipio_id?: number; - documento_orgao?: string; - documento_uf?: string; - uf_residencia?: string; - inscricao_municipal?: string; - enviado_cnncnb?: boolean; - data_auteracao?: string; // ou Date - data_envioccn?: string; // ou Date - ccnregistros_id?: number; - observacao_envioccn?: string; - observacao_envio_ccn?: string; - deficiencias?: string; - grau_instrucao?: string; - cidade_nat_id?: number; - tb_tipologradouro_id?: number; - unidade?: string; - numero_end?: string; - foto?: string; -} diff --git a/src/packages/administrativo/interfaces/TPessoaJuridicaInterface.ts b/src/packages/administrativo/interfaces/TPessoaJuridicaInterface.ts deleted file mode 100644 index ba2c551..0000000 --- a/src/packages/administrativo/interfaces/TPessoaJuridicaInterface.ts +++ /dev/null @@ -1,63 +0,0 @@ -export default interface TPessoaJuridicaInterface { - pessoa_id?: number; - pessoa_tipo?: string; - nome?: string; - nacionalidade?: string; - documento?: string; - tb_documentotipo_id?: number; - tb_profissao_id?: number; - tb_estadocivil_id?: number; - nome_pai?: string; - nome_mae?: string; - data_cadastro?: string; // ou Date - naturalidade?: string; - telefone?: string; - endereco?: string; - cidade?: string; - uf?: string; - data_nascimento?: string; // ou Date - sexo?: string; - tb_regimecomunhao_id?: number; - pessoa_conjuge_id?: number; - email?: string; - documento_numero?: string; - bairro?: string; - cep?: string; - documento_expedicao?: string; // ou Date - documento_validade?: string; // ou Date - observacao?: string; - cpf_cnpj?: string; - cpf_terceiro?: string; - nome_fantasia?: string; - texto?: string; - ddd?: number; - cert_casamento_numero?: string; - cert_casamento_folha?: string; - cert_casamento_livro?: string; - cert_casamento_cartorio?: string; - cert_casamento_data?: string; // ou Date - cert_casamento_lei?: string; - pessoa_conjuge_nome?: string; - estrangeiro_nat?: string; - estrangeiro_nat_tb_pais_id?: number; - estrangeiro_res_tb_pais_id?: number; - estrangeiro_res?: string; - municipio_id?: number; - documento_orgao?: string; - documento_uf?: string; - uf_residencia?: string; - inscricao_municipal?: string; - enviado_cnncnb?: boolean; - data_auteracao?: string; // ou Date - data_envioccn?: string; // ou Date - ccnregistros_id?: number; - observacao_envioccn?: string; - observacao_envio_ccn?: string; - deficiencias?: string; - grau_instrucao?: string; - cidade_nat_id?: number; - tb_tipologradouro_id?: number; - unidade?: string; - numero_end?: string; - foto?: string; -} diff --git a/src/packages/administrativo/interfaces/TPessoaRepresentante.ts b/src/packages/administrativo/interfaces/TPessoaRepresentante.ts deleted file mode 100644 index 62eda11..0000000 --- a/src/packages/administrativo/interfaces/TPessoaRepresentante.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default interface TPessoaJuridicaInterface { - pessoa_representante_id: number; - nome: string; - tipo: string; -} diff --git a/src/packages/administrativo/schemas/TPessoa/TPessoaFisicaSchema.ts b/src/packages/administrativo/schemas/TPessoa/TPessoaFisicaSchema.ts new file mode 100644 index 0000000..bd7a041 --- /dev/null +++ b/src/packages/administrativo/schemas/TPessoa/TPessoaFisicaSchema.ts @@ -0,0 +1,36 @@ +import { TPessoaSchema } from "./TPessoaSchema"; +import z from "zod"; + +export const TPessoaFisicaSchema = TPessoaSchema.extend({ + nacionalidade: z.string().optional(), + tb_documentotipo_id: z.number().optional(), + tb_profissao_id: z.number().optional(), + tb_estadocivil_id: z.number().optional(), + nome_pai: z.string().optional(), + nome_mae: z.string().optional(), + data_nascimento: z.string().optional(), + sexo: z.string().optional(), + tb_regimecomunhao_id: z.number().optional(), + pessoa_conjuge_id: z.number().optional(), + documento_expedicao: z.string().optional(), + documento_validade: z.string().optional(), + cert_casamento_numero: z.string().optional(), + cert_casamento_folha: z.string().optional(), + cert_casamento_livro: z.string().optional(), + cert_casamento_cartorio: z.string().optional(), + cert_casamento_data: z.string().optional(), + cert_casamento_lei: z.string().optional(), + pessoa_conjuge_nome: z.string().optional(), + estrangeiro_nat: z.string().optional(), + estrangeiro_nat_tb_pais_id: z.number().optional(), + estrangeiro_res_tb_pais_id: z.number().optional(), + estrangeiro_res: z.string().optional(), + documento_orgao: z.string().optional(), + documento_uf: z.string().optional(), + uf_residencia: z.string().optional(), + deficiencias: z.string().optional(), + grau_instrucao: z.string().optional(), + cidade_nat_id: z.number().optional(), +}); + +export type TPessoaFisicaFormValues = z.infer; diff --git a/src/packages/administrativo/schemas/TPessoa/TPessoaJuridicaSchema.ts b/src/packages/administrativo/schemas/TPessoa/TPessoaJuridicaSchema.ts new file mode 100644 index 0000000..a802df7 --- /dev/null +++ b/src/packages/administrativo/schemas/TPessoa/TPessoaJuridicaSchema.ts @@ -0,0 +1,15 @@ +import { TPessoaSchema } from "./TPessoaSchema"; +import z from "zod"; + +export const TPessoaJuridicaSchema = TPessoaSchema.extend({ + razao_social: z.string().min(1, "Razão social é obrigatória"), + nome_fantasia: z.string().optional(), + inscricao_estadual: z.string().optional(), + inscricao_municipal: z.string().optional(), + capital_social: z.number().optional(), + data_abertura: z.string().optional(), + cnae_principal: z.string().optional(), + cnae_secundario: z.array(z.string()).optional(), +}); + +export type TPessoaJuridicaFormValues = z.infer; \ No newline at end of file diff --git a/src/packages/administrativo/schemas/TPessoa/TPessoaSchema.ts b/src/packages/administrativo/schemas/TPessoa/TPessoaSchema.ts new file mode 100644 index 0000000..244ef1f --- /dev/null +++ b/src/packages/administrativo/schemas/TPessoa/TPessoaSchema.ts @@ -0,0 +1,33 @@ +import z from 'zod'; + +export const TPessoaSchema = z.object({ + pessoa_id: z.number().optional(), + pessoa_tipo: z.string().optional(), + nome: z.string().min(1, 'O campo deve ser preenchido').max(120, 'O nome excede 120 caracteres'), + documento: z.string().optional(), + data_cadastro: z.string().optional(), + telefone: z.string().optional(), + endereco: z.string().optional(), + cidade: z.string().optional(), + uf: z.string().optional(), + email: z.string().email().optional(), + documento_numero: z.string().optional(), + bairro: z.string().optional(), + cep: z.string().optional(), + observacao: z.string().optional(), + cpf_cnpj: z.string().optional(), + cpf_terceiro: z.string().optional(), + texto: z.string().optional(), + ddd: z.number().optional(), + municipio_id: z.number().optional(), + enviado_cnncnb: z.boolean().optional(), + data_auteracao: z.string().optional(), + data_envioccn: z.string().optional(), + ccnregistros_id: z.number().optional(), + observacao_envioccn: z.string().optional(), + observacao_envio_ccn: z.string().optional(), + tb_tipologradouro_id: z.number().optional(), + unidade: z.string().optional(), + numero_end: z.string().optional(), + foto: z.string().optional(), +}); diff --git a/src/packages/administrativo/schemas/TPessoaFisicaSchema.ts b/src/packages/administrativo/schemas/TPessoaFisicaSchema.ts deleted file mode 100644 index b5d0ba7..0000000 --- a/src/packages/administrativo/schemas/TPessoaFisicaSchema.ts +++ /dev/null @@ -1,64 +0,0 @@ -import z from 'zod'; - -export const TPessoaSchema = z.object({ - pessoa_id: z.number().optional(), - pessoa_tipo: z.string().optional(), - nome: z.string().min(1, 'O campo deve ser preenchido').max(120, 'O nome excede 120 caracteres'), - nacionalidade: z.string().optional(), - documento: z.string().optional(), - tb_documentotipo_id: z.number().optional(), - tb_profissao_id: z.number().optional(), - tb_estadocivil_id: z.number().optional(), - nome_pai: z.string().optional(), - nome_mae: z.string().optional(), - data_cadastro: z.string().optional(), // ou z.string().datetime() - naturalidade: z.string().optional(), - telefone: z.string().optional(), - endereco: z.string().optional(), - cidade: z.string().optional(), - uf: z.string().optional(), - data_nascimento: z.string().optional(), // ou z.string().datetime() - sexo: z.string().optional(), - tb_regimecomunhao_id: z.number().optional(), - pessoa_conjuge_id: z.number().optional(), - email: z.string().email().optional(), - documento_numero: z.string().optional(), - bairro: z.string().optional(), - cep: z.string().optional(), - documento_expedicao: z.string().optional(), // ou z.string().datetime() - documento_validade: z.string().optional(), // ou z.string().datetime() - observacao: z.string().optional(), - cpf_cnpj: z.string().optional(), - cpf_terceiro: z.string().optional(), - nome_fantasia: z.string().optional(), - texto: z.string().optional(), - ddd: z.number().optional(), - cert_casamento_numero: z.string().optional(), - cert_casamento_folha: z.string().optional(), - cert_casamento_livro: z.string().optional(), - cert_casamento_cartorio: z.string().optional(), - cert_casamento_data: z.string().optional(), // ou z.string().datetime() - cert_casamento_lei: z.string().optional(), - pessoa_conjuge_nome: z.string().optional(), - estrangeiro_nat: z.string().optional(), - estrangeiro_nat_tb_pais_id: z.number().optional(), - estrangeiro_res_tb_pais_id: z.number().optional(), - estrangeiro_res: z.string().optional(), - municipio_id: z.number().optional(), - documento_orgao: z.string().optional(), - documento_uf: z.string().optional(), - uf_residencia: z.string().optional(), - inscricao_municipal: z.string().optional(), - enviado_cnncnb: z.boolean().optional(), - data_auteracao: z.string().optional(), // ou z.string().datetime() - data_envioccn: z.string().optional(), // ou z.string().datetime() - ccnregistros_id: z.number().optional(), - observacao_envioccn: z.string().optional(), - observacao_envio_ccn: z.string().optional(), - deficiencias: z.string().optional(), - grau_instrucao: z.string().optional(), - cidade_nat_id: z.number().optional(), - tb_tipologradouro_id: z.number().optional(), - unidade: z.string().optional(), - numero_end: z.string().optional(), -});