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:
parent
586f831b30
commit
8b64a56cd5
@ -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) {
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user