Skip to content

Commit

Permalink
fix: fix relatorio bd
Browse files Browse the repository at this point in the history
  • Loading branch information
LiedsonLB committed Jun 5, 2024
1 parent a2660b6 commit fad1e86
Show file tree
Hide file tree
Showing 7 changed files with 201 additions and 104 deletions.
4 changes: 2 additions & 2 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ model Venda {
id Int @id @default(autoincrement())
Data String
funcionarioId Int
valor Float
valor Float?
quantidadeProdutos Int
comprador String
produtoid Int
Expand All @@ -125,4 +125,4 @@ model VendasEmDivida {
idVenda Int
pago Boolean
venda Venda @relation(fields: [idVenda], references: [id])
}
}
16 changes: 16 additions & 0 deletions server/controllers/debtController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// debtController.js

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

// Rota para obter todas as dívidas
export async function getDividas(req, res) {
try {
const dividas = await prisma.vendasEmDivida.findMany();
res.status(200).json(dividas);
} catch (error) {
console.error('Erro ao obter dívidas:', error);
res.status(500).json({ error: 'Erro ao obter dívidas' });
}
}
116 changes: 83 additions & 33 deletions server/controllers/saleController.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,50 +3,100 @@ import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();

export async function addVenda(req, res) {
const {
Data,
funcionarioId,
produtoid,
quantidadeProdutos,
valor,
comprador,
regiaoId,
formaPagamento,
usuarioId,
} = req.body;
const vendas = req.body;
console.log('Vendas recebidas:', vendas);

try {
// Verifica se já existe um relatório para a data especificada
let relatorio = await prisma.relatorio.findUnique({
where: { Data },
});

// Se não existir, cria um novo relatório
if (!relatorio) {
relatorio = await prisma.relatorio.create({
data: {
Data,
},
});
}

// Adiciona a venda ao relatório
const venda = await prisma.venda.create({
data: {
for (const venda of vendas) {
const {
Data,
funcionarioId,
valor,
produtoid,
quantidadeProdutos,
comprador,
regiaoId,
formaPagamento,
usuarioId,
} = venda;

console.log('Dados da venda:', {
Data,
funcionarioId,
produtoid,
quantidadeProdutos,
comprador,
regiaoId,
formaPagamento,
usuarioId,
relatorioId: relatorio.Data,
},
});
});

if (!Data || !funcionarioId || !produtoid || !regiaoId || !formaPagamento || !usuarioId) {
console.error('Erro: Dados obrigatórios estão faltando');
return res.status(400).json({ success: false, error: 'Dados obrigatórios estão faltando' });
}

// Verifica se já existe um relatório para a data especificada
let relatorio = await prisma.relatorio.findUnique({
where: { Data },
});

console.log('Relatório encontrado:', relatorio);

// Se não existir, cria um novo relatório
if (!relatorio) {
relatorio = await prisma.relatorio.create({
data: {
Data,
},
});
console.log('Novo relatório criado:', relatorio);
}

// Busca o produto pelo produtoid
const produto = await prisma.produto.findUnique({
where: { id: produtoid },
});

if (!produto) {
console.error('Produto não encontrado');
return res.status(404).json({ success: false, error: 'Produto não encontrado' });
}

// Calcula o valor total da venda
const valor = quantidadeProdutos * produto.precoAtual;
console.log(relatorio)

// Adiciona a venda ao relatório
const novaVenda = await prisma.venda.create({
data: {
Data,
funcionarioId,
valor,
quantidadeProdutos,
comprador,
produtoid,
regiaoId,
formaPagamento,
usuarioId,
relatorioId: relatorio.Data,
},
});

console.log('Nova venda criada:', novaVenda);

// Verifica se o formaPagamento é "Dívida" e adiciona a venda à tabela VendasEmDivida
if (formaPagamento === 'Dívida') {
await prisma.vendasEmDivida.create({
data: {
idVenda: novaVenda.id,
pago: false,
},
});
console.log('Venda adicionada à tabela VendasEmDivida');
}
}

return res.status(200).json({ success: true, venda });
return res.status(200).json({ success: true });
} catch (error) {
console.error('Erro ao adicionar venda:', error);
return res.status(500).json({ success: false, error: 'Erro ao adicionar venda' });
Expand Down
5 changes: 5 additions & 0 deletions server/routes/routesV3.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,9 @@ routerV3.get("/vendas", getVenda);
routerV3.delete("/vendas/:id", deleteVenda);
routerV3.put("/vendas/:id", editVenda);

// debt routers
routerV3.get("/dividas", getVenda);
routerV3.delete("/dividas/:id", deleteVenda);
routerV3.put("/dividas/:id", editVenda);

export default routerV3;
106 changes: 56 additions & 50 deletions src/layout/financeiro/Financeiro.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import Popup from "../../components/popup/Popup.tsx";
import Despesa from "../../models/Despesa.tsx";
import DatePicker from 'react-datepicker';
import 'react-datepicker/dist/react-datepicker.css';
import Divida from "../../models/Divida.tsx";

const Financeiro = () => {
const [selectedOption, setSelectedOption] = useState("");
Expand All @@ -31,6 +32,7 @@ const Financeiro = () => {
const [editandoDespesa, setEditandoDespesa] = useState<Despesa | null>(null);
const [despesaDelete, setDespesaDelete] = useState<Despesa>();
const [filtroPesquisa, setFiltroPesquisa] = useState('');
const [dividas, setDividas] = useState<Divida[]>([]);

const [mensagem, setMensagem] = useState('');
const [popupType, setPopupType] = useState('');
Expand Down Expand Up @@ -101,6 +103,16 @@ const Financeiro = () => {
}, 4500);
};

// Atualize a função fetchDividas para armazenar as dívidas no estado
const fetchDividas = async () => {
try {
const response = await axios.get("http://localhost:4000/v3/dividas");
setDividas(response.data);
} catch (error) {
console.error("Erro ao buscar dívidas:", error);
}
};

const fetchDespesas = async () => {
try {
const response = await axios.get("http://localhost:4000/v3/despesas");
Expand Down Expand Up @@ -594,6 +606,7 @@ const Financeiro = () => {
</select>
</div>


<section id="container-table-debts">
<table id="table-prod" className="table-debts">
<thead className="head-list-fin" style={{ backgroundColor: 'var(--primary-color)' }}>
Expand All @@ -605,56 +618,49 @@ const Financeiro = () => {
</tr>
</thead>
<tbody className="body-list-prod debt" style={{ gap: '5px' }}>
<tr>
<td>
<h3 data-toggle="tooltip" title="Picolé sem cobertura">
Mario
</h3>
</td>
<td>
<h3 data-toggle="tooltip" title="07/04/2024">
07/04/2024
</h3>
</td>
<td>
<h3 data-toggle="tooltip" title="Cartão(debito)">
10K
</h3>
</td>
<td
className="action-btns"
style={{ display: "flex", gap: "5px" }}
>
<button
className="edit"
style={{
padding: ".6rem .8rem",
height: "2.5rem",
width: "2.5rem",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
onClick={() => handleEdit()}
>
<FaCheckSquare />
</button>
<button
className="delete"
style={{
padding: ".6rem .8rem",
height: "2.5rem",
width: "2.5rem",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
onClick={handleDelete()}
>
<FaTrash />
</button>
</td>
</tr>
{dividas.map((divida, index) => (
<tr key={index}>
<td>
<h3>{divida.cliente}</h3>
</td>
<td>
<h3>{divida.dataCompra}</h3>
</td>
<td>
<h3>{divida.valor}</h3>
</td>
<td className="action-btns" style={{ display: "flex", gap: "5px" }}>
<button
className="edit"
style={{
padding: ".6rem .8rem",
height: "2.5rem",
width: "2.5rem",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
onClick={() => handleEdit(divida)}
>
<FaCheckSquare />
</button>
<button
className="delete"
style={{
padding: ".6rem .8rem",
height: "2.5rem",
width: "2.5rem",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
onClick={() => openDeleteModal(divida)}
>
<FaTrash />
</button>
</td>
</tr>
))}
</tbody>
</table>
</section>
Expand Down
Loading

0 comments on commit fad1e86

Please sign in to comment.