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.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-21 00:48:59 +00:00
parent 586f831b30
commit 8b64a56cd5
3 changed files with 24 additions and 22 deletions

View File

@ -1,4 +1,3 @@
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod'; 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) { async function onSubmit(data: CartaoFormValues) {
setIsSubmitting(true); setIsSubmitting(true);
try { try {
// Gerar código único para o cartão // Removed the fourth argument that was causing the error
const cartao_codigo = gerarCartaoCodigo(data.nome, data.banco);
const resultado = await criarCartao( const resultado = await criarCartao(
data.nome, data.nome,
data.bandeira, data.bandeira,
data.banco, data.banco
cartao_codigo
); );
if (resultado) { if (resultado) {

View File

@ -60,6 +60,7 @@ export function DespesaCartaoForm({ cartao, onSuccess, onCancel }: DespesaCartao
return; return;
} }
// Make sure we're passing all 5 required parameters
const resultado = await criarDespesa( const resultado = await criarDespesa(
cartao.id, cartao.id,
cartao.cartao_codigo, cartao.cartao_codigo,

View File

@ -26,18 +26,25 @@ export async function getCartoes(): Promise<CartaoCredito[]> {
throw new Error('Não foi possível carregar os cartões de crédito'); 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 // Garantir que todos os dados têm os campos necessários da interface CartaoCredito
const cartoesValidos = data.map(cartao => { const cartoesCompletos = data.map(cartao => {
// Se não tiver cartao_codigo, gerar um código temporário baseado no id
if (!cartao.cartao_codigo) { 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)}`; 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; return cartao as CartaoCredito;
}); });
// Buscar o total de despesas para cada cartão // Buscar o total de despesas para cada cartão
const cartoesComTotal = await Promise.all( const cartoesComTotal = await Promise.all(
cartoesValidos.map(async (cartao: CartaoCredito) => { cartoesCompletos.map(async (cartao: CartaoCredito) => {
const total = await getTotalDespesasCartao(cartao.cartao_codigo); const total = await getTotalDespesasCartao(cartao.cartao_codigo);
return { ...cartao, total_despesas: total }; return { ...cartao, total_despesas: total };
}) })
@ -157,12 +164,15 @@ export async function getCartao(cartaoId: string): Promise<CartaoCredito | null>
throw new Error('Não foi possível carregar os detalhes do cartão'); 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 // Garantir que cartao_codigo existe
if (!data.cartao_codigo) { if (!cartaoCompleto.cartao_codigo) {
data.cartao_codigo = `cartao_${data.id.substring(0, 8)}`; cartaoCompleto.cartao_codigo = `cartao_${cartaoCompleto.id.substring(0, 8)}`;
} }
return data as CartaoCredito; return cartaoCompleto;
} catch (error) { } catch (error) {
console.error('Erro ao buscar cartão:', error); console.error('Erro ao buscar cartão:', error);
return null; return null;
@ -204,10 +214,11 @@ export async function getDespesasCartao(cartaoId: string): Promise<DespesaCartao
// Garantir que todas as despesas têm cartao_codigo // Garantir que todas as despesas têm cartao_codigo
const despesasCompletas = data.map(despesa => { const despesasCompletas = data.map(despesa => {
if (!despesa.cartao_codigo) { const despesaCompleta = { ...despesa } as DespesaCartao;
despesa.cartao_codigo = cartao.cartao_codigo; if (!despesaCompleta.cartao_codigo) {
despesaCompleta.cartao_codigo = cartao.cartao_codigo;
} }
return despesa as DespesaCartao; return despesaCompleta;
}); });
return despesasCompletas; return despesasCompletas;