diff --git a/frontend/pages/Finance.tsx b/frontend/pages/Finance.tsx index 349d25c..44fb65f 100644 --- a/frontend/pages/Finance.tsx +++ b/frontend/pages/Finance.tsx @@ -110,6 +110,8 @@ const Finance: React.FC = () => { dataPgto: "", pgtoOk: false, }); + + const isEditInitializing = useRef(false); // Auto-fill state const [fotLoading, setFotLoading] = useState(false); @@ -180,6 +182,7 @@ const Finance: React.FC = () => { const mapped = (Array.isArray(data) ? data : []).map((item: any) => ({ id: item.id, fot: item.fot_numero || 0, + fot_id: item.fot_id, // Ensure fot_id is mapped! data: item.data_cobranca ? new Date(item.data_cobranca).toLocaleDateString("pt-BR", {timeZone: "UTC"}) : "", dataRaw: item.data_cobranca ? item.data_cobranca.split("T")[0] : "", curso: item.curso_nome || "", @@ -430,11 +433,19 @@ const Finance: React.FC = () => { const fetchPrice = async () => { if (!formData.tipoEvento || !formData.tipoServico) return; - // If editing existing transaction, maybe don't overwrite unless user changes something? - // But for "Nova Transação", strictly overwrite. - // Let's assume overwrite if price is 0 or user changed inputs. - // Simplified: always fetch if inputs present. + // Skip auto-pricing if we are initializing the edit form + if (isEditInitializing.current) { + isEditInitializing.current = false; + return; + } + // Don't overwrite if we are editing and the types haven't changed from the original + if (selectedTransaction && + formData.tipoEvento === selectedTransaction.tipoEvento && + formData.tipoServico === selectedTransaction.tipoServico) { + return; + } + const token = localStorage.getItem("token"); if (!token) return; @@ -456,7 +467,7 @@ const Finance: React.FC = () => { } }; fetchPrice(); - }, [formData.tipoEvento, formData.tipoServico]); + }, [formData.tipoEvento, formData.tipoServico, selectedTransaction]); const handleProSearch = async (query: string) => { setProQuery(query); @@ -521,6 +532,7 @@ const Finance: React.FC = () => { }; const handleEdit = async (t: FinancialTransaction) => { + isEditInitializing.current = true; setSelectedTransaction(t); setFormData({ id: t.id, @@ -713,16 +725,19 @@ const Finance: React.FC = () => { setTimeout(() => setSuccessMessage(""), 3000); // Reload list background - loadTransactions(); + await loadTransactions(); } catch (err) { alert("Erro ao salvar: " + err); } }; + // Calculations // Calculations useEffect(() => { - setFormData((prev) => ({ ...prev, totalPagar: total })); + const vFree = Number(formData.valorFree) || 0; + const vExtra = Number(formData.valorExtra) || 0; + setFormData((prev) => ({ ...prev, totalPagar: vFree + vExtra })); }, [formData.valorFree, formData.valorExtra]); const handleExportCSV = () => {