From 8b64a56cd5c7cedcdd2da866bac713dded938de3 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 00:48:59 +0000 Subject: [PATCH] Fix TypeScript errors in credit card features The commit addresses multiple TypeScript errors related to the credit card functionality. It corrects an argument count mismatch in `CartaoCreditoForm.tsx`, resolves missing property errors for `cartao_codigo` in `cartaoCreditoService.ts`, and fixes type instantiation issues. --- src/components/credito/CartaoCreditoForm.tsx | 14 ++------- src/components/credito/DespesaCartaoForm.tsx | 1 + src/services/cartaoCreditoService.ts | 31 +++++++++++++------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/components/credito/CartaoCreditoForm.tsx b/src/components/credito/CartaoCreditoForm.tsx index d8bec5e..0b185e3 100644 --- a/src/components/credito/CartaoCreditoForm.tsx +++ b/src/components/credito/CartaoCreditoForm.tsx @@ -1,4 +1,3 @@ - import { useState, useEffect } from 'react'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; @@ -62,24 +61,15 @@ export function CartaoCreditoForm({ onSuccess, onCancel }: CartaoCreditoFormProp } }); - // Função para gerar um código único para o cartão - const gerarCartaoCodigo = (nome: string, banco: string) => { - const randomStr = Math.random().toString(36).substring(2, 8); - return `${banco.toLowerCase()}_${nome.toLowerCase().replace(/\s/g, '')}_${randomStr}`; - }; - async function onSubmit(data: CartaoFormValues) { setIsSubmitting(true); try { - // Gerar código único para o cartão - const cartao_codigo = gerarCartaoCodigo(data.nome, data.banco); - + // Removed the fourth argument that was causing the error const resultado = await criarCartao( data.nome, data.bandeira, - data.banco, - cartao_codigo + data.banco ); if (resultado) { diff --git a/src/components/credito/DespesaCartaoForm.tsx b/src/components/credito/DespesaCartaoForm.tsx index f107cd8..d7063f8 100644 --- a/src/components/credito/DespesaCartaoForm.tsx +++ b/src/components/credito/DespesaCartaoForm.tsx @@ -60,6 +60,7 @@ export function DespesaCartaoForm({ cartao, onSuccess, onCancel }: DespesaCartao return; } + // Make sure we're passing all 5 required parameters const resultado = await criarDespesa( cartao.id, cartao.cartao_codigo, diff --git a/src/services/cartaoCreditoService.ts b/src/services/cartaoCreditoService.ts index 5341a60..f9ef99d 100644 --- a/src/services/cartaoCreditoService.ts +++ b/src/services/cartaoCreditoService.ts @@ -26,18 +26,25 @@ export async function getCartoes(): Promise { throw new Error('Não foi possível carregar os cartões de crédito'); } - // Verificar se todos os cartões têm o campo cartao_codigo - const cartoesValidos = data.map(cartao => { + // Garantir que todos os dados têm os campos necessários da interface CartaoCredito + const cartoesCompletos = data.map(cartao => { + // Se não tiver cartao_codigo, gerar um código temporário baseado no id if (!cartao.cartao_codigo) { - // Se não tiver, gerar um código temporário baseado no id cartao.cartao_codigo = `cartao_${cartao.id.substring(0, 8)}`; } + // Se não tiver bandeira ou banco, adicionar valores padrão + if (!cartao.bandeira) { + cartao.bandeira = 'Não especificada'; + } + if (!cartao.banco) { + cartao.banco = 'Não especificado'; + } return cartao as CartaoCredito; }); // Buscar o total de despesas para cada cartão const cartoesComTotal = await Promise.all( - cartoesValidos.map(async (cartao: CartaoCredito) => { + cartoesCompletos.map(async (cartao: CartaoCredito) => { const total = await getTotalDespesasCartao(cartao.cartao_codigo); return { ...cartao, total_despesas: total }; }) @@ -157,12 +164,15 @@ export async function getCartao(cartaoId: string): Promise throw new Error('Não foi possível carregar os detalhes do cartão'); } + // Garantir que o objeto retornado tem todos os campos necessários + const cartaoCompleto = { ...data } as CartaoCredito; + // Garantir que cartao_codigo existe - if (!data.cartao_codigo) { - data.cartao_codigo = `cartao_${data.id.substring(0, 8)}`; + if (!cartaoCompleto.cartao_codigo) { + cartaoCompleto.cartao_codigo = `cartao_${cartaoCompleto.id.substring(0, 8)}`; } - return data as CartaoCredito; + return cartaoCompleto; } catch (error) { console.error('Erro ao buscar cartão:', error); return null; @@ -204,10 +214,11 @@ export async function getDespesasCartao(cartaoId: string): Promise { - if (!despesa.cartao_codigo) { - despesa.cartao_codigo = cartao.cartao_codigo; + const despesaCompleta = { ...despesa } as DespesaCartao; + if (!despesaCompleta.cartao_codigo) { + despesaCompleta.cartao_codigo = cartao.cartao_codigo; } - return despesa as DespesaCartao; + return despesaCompleta; }); return despesasCompletas;