Bem amigos, a lógica disso tudo é a seguinte:
Neste sistema de PDV que estou a concluir, o cliente exigiu algumas formas de pagamento, quais seriam:
vista
Cartão
Ticket
Fracionada >>>>> Esta com parte do pagamento em dinheiro e a outra em Cartão ou ticket.
Sendo assim ele quer no relatório a soma de cada tipo de pagamento efetuado...
Vista + Vista da venda fracionada
Cartão + Cartão da venda fracionada
Ticket + Ticket da venda fracionada
no post anterior, resolvi para os campos cuja informações estão bem definidas na tabela
>>>> Vista, Cartão e ticket.
O maior problema era separar as informações para a venda fracionada, posto que no cpValorDin está o valor total da venda, e posto que a venda é por item estava a somar o mesmo valor mais de uma vez.
Então para isto tive que criar uma consulta agrupada por venda, (Venda Número), então baseado nesta consulta o campo não apoplado para os calculos dessa fração.
SQL da consulta base:
SELECT tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin
FROM tblProdutos INNER JOIN tblVendasFinal ON tblProdutos.CodigoBarras = tblVendasFinal.CodigoBarras
GROUP BY tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin
HAVING (((tblVendasFinal.VendaData)=Date()) AND ((tblVendasFinal.cpTurno)="Manhã") AND ((tblVendasFinal.cpUsuario)="Admin"));
SQL da consulta final com os campos não acoplados
SELECT tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Vista'"),0) AS TotalVendaVista, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Ticket'"),0) AS TotalVendaTicket, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Cartão'"),0) AS TotalVendaCartao, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionada, Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionadaVista, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionada_Din_Cartão, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionada_Din_Ticket, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Ticket'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)) AS Valor_Fracionada_Ticket, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Cartão'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)) AS Valor_Fracionada_Cartao
FROM tblProdutos INNER JOIN tblVendasFinal ON tblProdutos.CodigoBarras = tblVendasFinal.CodigoBarras
GROUP BY tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Vista'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Ticket'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Cartão'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Ticket'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Cartão'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0))
HAVING (((tblVendasFinal.VendaData)=Date()) AND ((tblVendasFinal.cpTurno)="Manhã") AND ((tblVendasFinal.cpUsuario)="Admin") AND ((tblVendasFinal.cpTipoVenda)="Fracionado"));
Os campos não acoplados para o tipo fracionado:
TotalVendaFracionadaVista: Nz(DSoma("CpValorDin";"ConsultaBaseVendas";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)
TotalVendaFracionada: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)
Valor_Fracionada_Cartao: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Cartão'");0)-(Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)+Nz(DSoma("CpValorDin";"ConsultaBaseVendas";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'");0)-Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0))
Valor_Fracionada_Ticket: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Ticket'");0)-(Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)+Nz(DSoma("CpValorDin";"ConsultaBaseVendas";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'");0)-Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0))
Bem... um pouco confuso... mas é isso...
O BD com as consultas, espero que seja útil de alguma forma para vosso aprendizado.
https://dl.dropbox.com/u/26441349/SysPDV_be_1.rar
Abraços.
Última edição por PILOTO em 23/7/2012, 18:31, editado 2 vez(es) (Motivo da edição : Acrecentar o link do BD atualizado)