(
-
- Valor do Pedido
-
- field.onChange(parseNumberInput(e))}
- readOnly={true}
- />
-
-
-
- )}
+ render={({ field }) => {
+ const valorPedido = form.watch('valor_pedido');
+ return (
+
+ Valor do Pedido
+
+
+
+
+
+ );
+ }}
/>
@@ -590,7 +322,7 @@ export default function TServicoPedidoForm({ servico_pedido_id }: TServicoPedido
field.onChange(parseNumberInput(e))}
+ onChange={(e) => field.onChange(Number(e.target.value))}
/>
@@ -623,7 +355,7 @@ export default function TServicoPedidoForm({ servico_pedido_id }: TServicoPedido
{
- setShouldKeepFormOpen(checked);
+ tServicoPedidoController.setShouldKeepFormOpen(checked);
}}
/>
@@ -650,15 +382,15 @@ export default function TServicoPedidoForm({ servico_pedido_id }: TServicoPedido
className="w-full"
variant="outline"
type="button"
- onClick={handleOpenCancelDialog}
+ onClick={tServicoPedidoController.handleOpenCancelDialog}
>
Cancelar
@@ -668,41 +400,41 @@ export default function TServicoPedidoForm({ servico_pedido_id }: TServicoPedido
{/* Cofirmação de envio de dados */}
- {isSaveConfirmOpen && (
+ {tServicoPedidoController.isSaveConfirmOpen && (
)}
{/* Confirma o cancelamento do pedido */}
- {isCancelDialogOpen && (
+ {tServicoPedidoController.isCancelDialogOpen && (
)}
{/* Modal TPessoa */}
- {isPessoaFormOpen && (
+ {tServicoPedidoController.isPessoaFormOpen && (
)}
diff --git a/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoCalculoHook.ts b/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoCalculoHook.ts
index e684870..cb8bd77 100644
--- a/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoCalculoHook.ts
+++ b/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoCalculoHook.ts
@@ -1,14 +1,16 @@
'use client';
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import { FieldValues, Path, PathValue, UseFormSetValue } from 'react-hook-form';
import { GCalculoServicoService } from '@/packages/administrativo/services/GCalculo/GCalculoServicoService';
+import TServicoPedidoItemLocalPrepare from '@/packages/servicos/actions/TServicoPedidoItem/TServicoPedidoItemLocalPrepare';
import TServicoPedidoItemPreparePayload from '@/packages/servicos/actions/TServicoPedidoItem/TServicoPedidoItemPreparePayload';
import TServicoItemPedidoAddInterface from '@/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoAddInterface';
import TServicoItemPedidoCalculoResponseInterface from '@/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoCalculoResponseInterface';
import { useResponse } from '@/shared/components/response/ResponseContext';
+
export function useTServicoItemPedidoCalculoHook(
setValue?: UseFormSetValue,
) {
@@ -17,8 +19,9 @@ export function useTServicoItemPedidoCalculoHook([]);
+ const [shouldSync, setShouldSync] = useState(false);
- const addTServicoItemPedido = async (data: TServicoItemPedidoAddInterface) => {
+ const calculoTServicoItemPedido = async (data: TServicoItemPedidoAddInterface) => {
const payload = TServicoPedidoItemPreparePayload(data);
if (payload.status) {
@@ -26,39 +29,41 @@ export function useTServicoItemPedidoCalculoHook {
- const safePrev = Array.isArray(prev) ? prev : [];
+ const itemLocal = TServicoPedidoItemLocalPrepare(data, response);
- const novoItem = response;
+ if (!itemLocal) return;
- if (!novoItem) return safePrev;
+ // Atualiza apenas o estado local
+ setTServicoItemPedido((prev) => [...prev, itemLocal]);
- const novoArray = [...safePrev, novoItem];
+ // Marca para sincronizar com o formulário
+ setShouldSync(true);
- if (setValue) {
- setValue(
- 'itens' as Path,
- novoArray as unknown as PathValue>,
- { shouldDirty: true },
- );
- }
-
- return novoArray;
- });
-
- return response;
+ return itemLocal;
};
+ // Efeito seguro para sincronizar com o react-hook-form após o render
+ useEffect(() => {
+ if (setValue && shouldSync) {
+ setValue(
+ 'itens' as Path,
+ TServicoItemPedido as unknown as PathValue>,
+ { shouldDirty: true },
+ );
+ setShouldSync(false);
+ }
+ }, [setValue, shouldSync, TServicoItemPedido]);
+
return {
TServicoItemPedido,
setTServicoItemPedido,
- addTServicoItemPedido,
+ calculoTServicoItemPedido,
};
}
diff --git a/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalAddHook.ts b/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalAddHook.ts
deleted file mode 100644
index bd3aee0..0000000
--- a/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalAddHook.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-'use client';
-
-import { useState } from 'react';
-import { FieldValues, Path, PathValue, UseFormSetValue } from 'react-hook-form';
-
-import TServicoItemPedidoCalculoResponseInterface from '@/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoCalculoResponseInterface';
-
-export function useTServicoItemPedidoLocalAddHook(
- setValue?: UseFormSetValue,
-) {
- const [TServicoItemPedidoLocal, setLocalTServicoItemPedido] = useState<
- TServicoItemPedidoCalculoResponseInterface[]
- >([]);
-
- const localAddTServicoItemPedido = (item: TServicoItemPedidoCalculoResponseInterface) => {
- setLocalTServicoItemPedido((prev) => {
- const updated = [...prev, item];
-
- if (setValue) {
- setValue(
- 'itens' as Path,
- updated as unknown as PathValue>,
- );
- }
-
- return updated;
- });
- };
-
- const localClearTServicoItemPedido = () => {
- setLocalTServicoItemPedido([]);
-
- if (setValue) {
- setValue(
- 'itens' as Path,
- [] as unknown as PathValue>,
- );
- }
- };
-
- return {
- TServicoItemPedidoLocal,
- localAddTServicoItemPedido,
- setLocalTServicoItemPedido,
- localClearTServicoItemPedido,
- };
-}
diff --git a/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalHandleHook.ts b/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalHandleHook.ts
new file mode 100644
index 0000000..dd88027
--- /dev/null
+++ b/src/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalHandleHook.ts
@@ -0,0 +1,55 @@
+'use client';
+
+import { useCallback, useEffect, useState } from 'react';
+import { FieldValues, Path, PathValue, UseFormSetValue } from 'react-hook-form';
+
+import TServicoItemPedidoCalculoResponseInterface from '@/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoCalculoResponseInterface';
+
+export function useTServicoItemPedidoLocalHandleHook(
+ setValue?: UseFormSetValue,
+) {
+ const [TServicoItemPedidoLocal, setLocalTServicoItemPedido] = useState<
+ TServicoItemPedidoCalculoResponseInterface[]
+ >([]);
+
+ // Estado auxiliar para indicar que o form deve ser atualizado
+ const [shouldSync, setShouldSync] = useState(false);
+
+ // Adiciona item localmente (apenas atualiza o state)
+ const localAddTServicoItemPedido = (item: TServicoItemPedidoCalculoResponseInterface) => {
+ setLocalTServicoItemPedido((prev) => [...prev, item]);
+ setShouldSync(true);
+ };
+
+ // Remove item por índice
+ const localRemoveTServicoItemPedido = useCallback((index: number) => {
+ setLocalTServicoItemPedido((prev) => prev.filter((_, i) => i !== index));
+ setShouldSync(true);
+ }, []);
+
+ // Limpa os itens
+ const localClearTServicoItemPedido = () => {
+ setLocalTServicoItemPedido([]);
+ setShouldSync(true);
+ };
+
+ // Efeito responsável por sincronizar o formulário depois da atualização
+ useEffect(() => {
+ if (setValue && shouldSync) {
+ setValue(
+ 'itens' as Path,
+ TServicoItemPedidoLocal as unknown as PathValue>,
+ { shouldDirty: true },
+ );
+ setShouldSync(false);
+ }
+ }, [setValue, shouldSync, TServicoItemPedidoLocal]);
+
+ return {
+ TServicoItemPedidoLocal,
+ localAddTServicoItemPedido,
+ localRemoveTServicoItemPedido,
+ setLocalTServicoItemPedido,
+ localClearTServicoItemPedido,
+ };
+}
diff --git a/src/packages/servicos/hooks/TServicoPedido/useTServicoPedidoFormControllerHook.ts b/src/packages/servicos/hooks/TServicoPedido/useTServicoPedidoFormControllerHook.ts
new file mode 100644
index 0000000..2fb3333
--- /dev/null
+++ b/src/packages/servicos/hooks/TServicoPedido/useTServicoPedidoFormControllerHook.ts
@@ -0,0 +1,363 @@
+'use client';
+
+import { useRouter } from 'next/navigation';
+import { useCallback, useEffect, useRef, useState } from 'react';
+
+import TPessoaInterface from '@/packages/administrativo/interfaces/TPessoa/TPessoaInterface';
+import { useTServicoItemPedidoCalculoHook } from '@/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoCalculoHook';
+import { useTServicoItemPedidoIndexHook } from '@/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoIndexHook';
+import { useTServicoItemPedidoLocalHandleHook } from '@/packages/servicos/hooks/TServicoItemPedido/useTServicoItemPedidoLocalHandleHook';
+import { useTServicoPedidoFormHook } from '@/packages/servicos/hooks/TServicoPedido/useTServicoPedidoFormHook';
+import { useTServicoPedidoLoadParamsHook } from '@/packages/servicos/hooks/TServicoPedido/useTServicoPedidoLoadParamsHook';
+import { useTServicoPedidoSaveHook } from '@/packages/servicos/hooks/TServicoPedido/useTServicoPedidoSaveHook';
+import { useTServicoPedidoShowHook } from '@/packages/servicos/hooks/TServicoPedido/useTServicoPedidoShowHook';
+import TServicoPedidoInterface from '@/packages/servicos/interfaces/TServicoPedido/TServicoPedidoInterface';
+import { TServicoPedidoFormValues } from '@/packages/servicos/schemas/TServicoPedido/TServicoPedidoFormSchema';
+import { useResponse } from '@/shared/components/response/ResponseContext';
+import { StepNavigatorRef } from '@/shared/components/step/stepNavigator';
+import { SituacoesEnum } from '@/shared/enums/SituacoesEnum';
+import { TipoPessoaEnum } from '@/shared/enums/TipoPessoaEnum';
+
+export default function useTServicoPedidoFormControllerHook(servico_pedido_id?: number) {
+
+ const router = useRouter();
+ const form = useTServicoPedidoFormHook({});
+ const { setValue, reset, watch } = form;
+
+ const [isSaving, setIsSaving] = useState(false);
+ const [isAdding, setIsAdding] = useState(false);
+ const [isPessoaFormOpen, setIsPessoaFormOpen] = useState(false);
+ const [isSaveConfirmOpen, setIsSaveConfirmOpen] = useState(false);
+ const [isCancelDialogOpen, setIsCancelDialogOpen] = useState(false);
+ const [selectedPessoaTipo, setSelectedPessoaTipo] = useState('');
+ const [shouldKeepFormOpen, setShouldKeepFormOpen] = useState(false);
+
+ const ref = useRef(null);
+
+ // Controles de formulário
+ const handleClosePessoaForm = useCallback(() => setIsPessoaFormOpen(false), []);
+ const handleOpenSaveConfirm = useCallback(() => setIsSaveConfirmOpen(true), []);
+ const handleCloseSaveConfirm = useCallback(() => setIsSaveConfirmOpen(false), []);
+
+ // Hooks
+ // const playSuccess = useSoundHook("/sounds/success.mp3");
+ const { setResponse } = useResponse();
+ const { saveTServicoPedido } = useTServicoPedidoSaveHook();
+ const { showTServicoPedido } = useTServicoPedidoShowHook();
+ const { TServicoItemPedidoLocal, localAddTServicoItemPedido, localRemoveTServicoItemPedido, setLocalTServicoItemPedido } = useTServicoItemPedidoLocalHandleHook(setValue);
+ const { calculoTServicoItemPedido } = useTServicoItemPedidoCalculoHook(setValue);
+ const { indexTServicoItemPedido } = useTServicoItemPedidoIndexHook();
+ const { TServicoPedidoParams, loadParamsTServicoPedido } = useTServicoPedidoLoadParamsHook();
+
+ // Acompanha as alterações, nos campos definidos
+ const selectedServicoTipo = watch('servico_tipo');
+ const selectedEmolumento = watch('emolumento');
+
+ const handleFormError = useCallback((errors: any) => {
+ console.group('Erros de validação do formulário');
+ console.log('Campos com erro:', errors);
+ console.groupEnd();
+ }, []);
+
+ // Envia a requisição para a API
+ const handleSavePedido = useCallback(
+ async (data: TServicoPedidoFormValues) => {
+ // Ativa o botão de loading
+ setIsSaving(true);
+
+ // Converte o tipo do formulário (Zod) para o tipo da API (Interface)
+ const payload: TServicoPedidoInterface = {
+ ...data,
+ situacao: data.situacao as unknown as SituacoesEnum,
+ };
+
+ const response = await saveTServicoPedido(payload);
+
+ // Desativa o botão de loading
+ setIsSaving(false);
+
+ // Verifica se devo redirecionar a pagina
+ if (response?.servico_pedido_id > 0) {
+ // Toca o som do sistema
+ // playSuccess()
+ }
+
+ // Verifica se devo redirecionar a pagina
+ if (response?.servico_pedido_id > 0 && !shouldKeepFormOpen) {
+ router.replace(`/servicos/balcao/detalhes/${response.servico_pedido_id}`);
+ }
+ },
+ [saveTServicoPedido, shouldKeepFormOpen],
+ );
+
+ // Modal de confirmação de serviço
+ const handleSubmitWithConfirmation = useCallback(() => {
+ // Envia o formulário
+ form.handleSubmit(handleSavePedido, handleFormError)();
+ }, [form, handleSavePedido, handleFormError]);
+
+ // Busca os itens do Pedido
+ const fetchPedidoItens = useCallback(
+ async (id: number) => {
+ const pedidoItens = {
+ servico_pedido_id: id,
+ };
+
+ // Busca os itens do pedido
+ const response = await indexTServicoItemPedido(pedidoItens);
+
+ // Verifica se os dados foram localizados
+ if (response?.data?.length) {
+ // Atualiza os dados dos itens locais
+ setLocalTServicoItemPedido(response.data);
+
+ // Atualiza os itens do formulário
+ setValue('itens', response.data);
+ }
+ },
+ [indexTServicoItemPedido, setValue, setLocalTServicoItemPedido],
+ );
+
+ // Busca o pedido Principal
+ const fetchPedido = useCallback(async () => {
+ // Busca o pedido principal
+ const response = await showTServicoPedido({ servico_pedido_id });
+
+ // Verifica se o pedido foi localizado
+ if (response?.servico_pedido_id) {
+ // Atualiza os dados do formulário
+ reset(response);
+
+ // Carrega os itens do pedido
+ fetchPedidoItens(response.servico_pedido_id);
+ }
+ }, [servico_pedido_id, showTServicoPedido, reset, fetchPedidoItens]);
+
+ const handleAddItemWithPessoa = useCallback(
+ async (selectedTPessoa: TPessoaInterface) => {
+ handleAddItem(selectedTPessoa)
+ }, [selectedEmolumento, selectedServicoTipo]);
+
+ // Controla o formulário de cancelamento de pedido
+ const handleOpenCancelDialog = useCallback(async () => {
+ // Fecha a confirmação
+ setIsCancelDialogOpen(true);
+ }, []);
+
+ // Controle de redirecionamento
+ const handleConfirmCancel = useCallback(async () => {
+ // Redireciona o usuário
+ router.replace(`/servicos/balcao/`);
+ }, []);
+
+ // Controle do formulário de cancelamento do Pedido
+ const handleCloseCancelDialog = useCallback(async () => {
+ // Fecha o formulário
+ setIsCancelDialogOpen(false);
+ }, []);
+
+ const handleRemoveLocalItem = useCallback(async (index: number) => {
+
+ localRemoveTServicoItemPedido(index)
+
+ }, []);
+
+ // Controle de itens
+ const handleAddItem = useCallback(async (selectedTPessoa?: TPessoaInterface) => {
+
+ setIsAdding(true);
+
+ // Prepara e valida os dados de item do pedido
+ const payload = {
+ servico_tipo: selectedServicoTipo,
+ emolumento: selectedEmolumento,
+ };
+
+ // Se existir pessoa, adiciona ao payload
+ if (selectedTPessoa) {
+ payload.pessoa = selectedTPessoa;
+ }
+
+ // Obtem o resultado da adição do item
+ const item = await calculoTServicoItemPedido(payload);
+
+ // Verifica se foi realizado o calculo
+ if (!item) {
+ setResponse({
+ status: 422,
+ detail: 'Não foi localizado item para o serviço',
+ })
+ setIsAdding(false);
+ return;
+ }
+
+ // Define índice e adiciona localmente
+ const index = TServicoItemPedidoLocal.length;
+
+ // Guarda o indice
+ item.index = index
+
+ // Adiciona o item calculo localmente
+ localAddTServicoItemPedido(item)
+
+ // Define os itens
+ form.setValue(`itens.${index}`, item);
+
+ setIsAdding(false);
+
+ }, [calculoTServicoItemPedido, selectedServicoTipo, selectedEmolumento, localAddTServicoItemPedido]);
+
+ // Habilita o formulário de pessoas
+ const handleOpenPessoaForm = useCallback((tipoPessoa: string) => {
+ setSelectedPessoaTipo(tipoPessoa);
+ setIsPessoaFormOpen(true);
+ }, []);
+
+ // Adiciona o item a tabela e verifica se deve ou não montar a subview da linha da tabela
+ const handleSelectServicoTipo = useCallback(() => {
+
+ const tipoPessoa = [TipoPessoaEnum.FISICA, TipoPessoaEnum.JURIDICA]
+
+ // Verifica se o emolumento e o tipo de serviço foram selecionados
+ if (!selectedServicoTipo || !selectedEmolumento) {
+ setResponse({
+ status: 422,
+ detail: 'Serviço e emolumento devem ser selecionados',
+ })
+ return;
+ }
+
+ // Verifica se deve selecionar pessoas
+ switch (tipoPessoa.includes(selectedServicoTipo.tipo_pessoa)) {
+
+ // Habilita o formulário
+ case true:
+
+ handleOpenPessoaForm(selectedServicoTipo.tipo_pessoa);
+ break;
+
+ // Adiciona direto
+ default:
+
+ handleAddItem();
+ break;
+
+ }
+
+ }, [selectedServicoTipo, selectedEmolumento, handleOpenPessoaForm, handleAddItem]);
+
+ const calcularTotais = useCallback(() => {
+ const itens = form.getValues('itens') || [];
+
+ if (!itens.length) {
+ setValue('valor_pedido', 0, { shouldDirty: true });
+ setValue('valor_pago', 0, { shouldDirty: true });
+ return;
+ }
+
+ const total = itens.reduce((acc, item) => acc + Number(item.valor ?? 0), 0);
+
+ // Atualiza sempre o valor do pedido
+ setValue('valor_pedido', total, { shouldDirty: true });
+
+ // Atualiza o valor pago apenas se estiver vazio, null, undefined ou 0
+ const valorPagoAtual = Number(form.getValues('valor_pago')) || 0;
+ if (!valorPagoAtual) {
+ setValue('valor_pago', total, { shouldDirty: true });
+ }
+ }, [form, setValue]);
+
+ // Incremente ou decrementa a quantidade
+ const handleChangeQtd = useCallback(
+ (index: number, delta: number) => {
+ const currentItens = form.getValues('itens') || [];
+ const currentItem = currentItens[index];
+ if (!currentItem) return;
+
+ const currentQtd = Number(currentItem.qtd ?? 1);
+ const newQtd = currentQtd + delta;
+
+ // Se quantidade for 0 ou menor, remove o item
+ if (newQtd <= 0) {
+ const filteredItens = currentItens.filter((_, i) => i !== index);
+ form.setValue('itens', filteredItens, { shouldDirty: true });
+ localRemoveTServicoItemPedido(index);
+ calcularTotais();
+ return;
+ }
+
+ const multiplier = newQtd / currentQtd;
+
+ const updatedItem = {
+ ...currentItem,
+ qtd: newQtd,
+ emolumento: (Number(currentItem.emolumento) * multiplier).toFixed(2),
+ taxa_judiciaria: (Number(currentItem.taxa_judiciaria) * multiplier).toFixed(2),
+ fundesp: (Number(currentItem.fundesp) * multiplier).toFixed(2),
+ valor_iss: (Number(currentItem.valor_iss) * multiplier).toFixed(2),
+ valor: (Number(currentItem.valor) * multiplier).toFixed(2),
+ };
+
+ const updatedItens = [...currentItens];
+ updatedItens[index] = updatedItem;
+
+ form.setValue('itens', updatedItens, { shouldDirty: true });
+ calcularTotais();
+ },
+ [form, localRemoveTServicoItemPedido, calcularTotais],
+ );
+
+ // Dispara a busca do pedido
+ useEffect(() => {
+ // Se existir pedido_id, busca o pedido
+ if (servico_pedido_id) fetchPedido();
+ }, [servico_pedido_id, fetchPedido]);
+
+ // Dispara a busca de itens
+ useEffect(() => {
+ // Dispara a busca dos itens
+ setValue('itens', TServicoItemPedidoLocal, { shouldDirty: true });
+ }, [TServicoItemPedidoLocal, setValue]);
+
+ // Dispara a busca de parâmetros
+ useEffect(() => {
+ loadParamsTServicoPedido();
+ }, []);
+
+ // Monitora mudanças na lista de itens
+ useEffect(() => {
+ calcularTotais();
+ }, [TServicoItemPedidoLocal, calcularTotais]);
+
+ return {
+ form,
+ ref,
+ isSaving,
+ isAdding,
+ isPessoaFormOpen,
+ isSaveConfirmOpen,
+ isCancelDialogOpen,
+ shouldKeepFormOpen,
+ selectedPessoaTipo,
+ TServicoItemPedidoLocal,
+ TServicoPedidoParams,
+
+ // setters diretos
+ setIsSaveConfirmOpen,
+ setIsCancelDialogOpen,
+ setShouldKeepFormOpen,
+
+ // handlers principais
+ handleSavePedido,
+ handleSelectServicoTipo,
+ handleSubmitWithConfirmation,
+ handleCloseSaveConfirm,
+ handleOpenCancelDialog,
+ handleConfirmCancel,
+ handleCloseCancelDialog,
+ handleClosePessoaForm,
+ handleAddItemWithPessoa,
+ handleOpenSaveConfirm,
+ handleChangeQtd
+ };
+}
\ No newline at end of file
diff --git a/src/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoFormTableInterface.ts b/src/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoFormTableInterface.ts
index 8f68df3..14efcef 100644
--- a/src/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoFormTableInterface.ts
+++ b/src/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoFormTableInterface.ts
@@ -1,12 +1,13 @@
import { UseFormReturn } from 'react-hook-form';
import TServicoItemPedidoAddResponseInterface from '@/packages/servicos/interfaces/TServicoItemPedido/TServicoItemPedidoCalculoResponseInterface';
+import { TServicoPedidoFormValues } from '@/packages/servicos/schemas/TServicoPedido/TServicoPedidoFormSchema';
import GConfigInterface from '@/shared/interfaces/GConfigInterface';
-import { TServicoPedidoFormValues } from '../../schemas/TServicoPedido/TServicoPedidoFormSchema';
export default interface TServicoItemPedidoFormTableInterface {
data: TServicoItemPedidoAddResponseInterface[];
form: UseFormReturn;
params: GConfigInterface[];
+ handleChangeQtd: any;
}
diff --git a/src/shared/enums/TipoPessoaEnum.ts b/src/shared/enums/TipoPessoaEnum.ts
new file mode 100644
index 0000000..e5c774d
--- /dev/null
+++ b/src/shared/enums/TipoPessoaEnum.ts
@@ -0,0 +1,4 @@
+export const TipoPessoaEnum = {
+ FISICA: "F",
+ JURIDICA: "J"
+} as const
\ No newline at end of file