Relatório da forma de pagamento

16/07/2023

0

Boa noite a todos!
Tenho duas tabelas, uma vendas e outra formas de pagamento. Preciso mostrar a forma de pagamento com os valores somados, quando seleciono o mês. Segui o código.

Aqui mostra todos entre a data selecionada, mas não soma o valor total referente a cada forma de pagamento.

$pos_venda = $this->venda_model->join(''formas_de_pagamento f'',''f.nome = vendas.forma_de_pagamento'')->where(''vendas.data >='', "$data_agora-01")->where(''vendas.data <='', "$data_agora-31")->orderBy(''f.nome'', ''ASC'')->findAll();
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Aqui só me da o valor total se adiciono o "groupBy", não mostra os outros campos para que eu mostre na tabela do formulário.

$pos_venda = $this->venda_model->join(''formas_de_pagamento f'',''f.nome = vendas.forma_de_pagamento'')->where(''vendas.data >='', "$data_agora-01")->where(''vendas.data <='', "$data_agora-31")->orderBy(''f.nome'', ''ASC'')-> groupBy(''vendas.forma_de_pagamento'')->findAll();


tavelas assim:
Dinheiro 15.00
Dinheiro 10.00
Dinheiro 25.00
Cartão de Débito 25.00
Cartão de Débito 20.00
Cartão de Débito 40.00
Cartão de Crédito 20.00
Cartão de Crédito 20.00
Cartão de Crédito 20.00

Gostaria de mostrar no formulário assim:

Dinheiro 50.00
Cartão de Débito 45.00
Cartão de Crédito 60.00

Podem me ajudar?
Nilson Alvarenga

Nilson Alvarenga

Responder

Posts

17/07/2023

Frank Hosaka

Essa é a primeira vez que ouço falar em CodeIgniter, eu não tenho a menor ideia de como ele funciona. Se fosse comigo, eu iria começar com apenas uma tabela, assim:

CREATE TABLE `vendas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `data` date DEFAULT NULL,
  `venda` float DEFAULT NULL,
  `dinheiro` float DEFAULT NULL,
  `debito` float DEFAULT NULL,
  `credito` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci


Os dados, eu inseri na unha assim:
Insert into vendas (data,venda,dinheiro,debito,credito) values 
('2023-07-01',15,15,0,0), 
('2023-07-02',10,10,0,0),
('2023-07-03',25,25,0,0),
('2023-07-04',25,0,25,0),
('2023-07-05',20,0,20,0),
('2023-07-06',40,0,40,0),
('2023-07-07',20,0,0,20),
('2023-07-07',20,0,0,20),
('2023-07-08',20,0,0,20)
[/code

E finalmente, a consulta seria assim:
[code=xml]
select sum(venda),sum(dinheiro),sum(debito),sum(credito) from vendas where month(data)=7;


Depois de obter o resultado desejado dentro do MySQL é que vejo como adaptar ao PHP, ou Laravel e, no seu caso, o CodeIgniter.
Responder

17/07/2023

Nilson Alvarenga

Frank Hosaka, obrigado por ajudar.
O Codeigniter é uma plataforma MVC.
Mas não pode ser com você mencionou.
Na Venda tem o campo Select "Forma de Pagamento" que traz informação da tabela que pode cadastrar quantas formas quiser. Tenho que buscar da informação da tabela de Vendas.

Eu consigo mostrar assim, mas não atualiza quando seleciono o mês como o restante do formulário:
<?php
$qtd_de_lancamentos = 0;

if(isset($_POST[''data_inicio''])){
$data_agora = $_POST[''data_inicio'']; // Pega o momento atual
}else{
$data_agora = date(''Y-m'');
};
$connection = mysqli_connect(''localhost'', ''root'', '''', ''otica_01'');

echo ''<table width="80%" border="1" color="CCCCCC">
<tr>
<td bgcolor="#orange"> <font face="Bell MT" size="4" color="#FFFFFF"><b>Grupo Variável</b></td>
<td bgcolor="#orange"><font face="Bell MT" size="4" color="#FFFFFF"><b>VALOR</b></td>
<td bgcolor="#orange"><font face="Bell MT" size="4" color="blue"><b>% do Gasto Total</b></td>

</tr>'';

$selec = mysqli_query($connection, "SELECT sum(valor_a_pagar), data, forma_de_pagamento, valor_a_pagar, id_venda
FROM vendas
WHERE data >=''$data_agora-01'' AND data <=''$data_agora-31''
GROUP BY forma_de_pagamento");



$cor="#cccccc";
while ($row = mysqli_fetch_assoc($selec)) {

if ($cor=="#cccccc") { $cor="#f4f4f4"; } else { $cor="#cccccc"; }
echo ''<tr>'';
echo ''<td bgcolor='' . $cor . ''>'' . $row[''forma_de_pagamento''] . ''</td>'';
echo ''<td bgcolor='' . $cor . ''>'' . ''R$ '' . $row[''sum(valor_a_pagar)''] . "</td>";

$fixo_variavel = $row[''sum(valor_a_pagar)''];

while($linhas_fixo = mysqli_fetch_array($sql_fixo)){
$soma_variavel = $linhas_fixo[''sum(valor_a_pagar)''];

}


$teste_variavel = (($row[''sum(valor_a_pagar)''] / $soma_variavel)*100);

echo ''<td style=" font-size:17px;" bgcolor='' . $cor . ''>'' . "<a href=''detalhes_custo.php?
forma_de_pagamento=". $row[''forma_de_pagamento'']." & fixo_variavel=".$fixo_variavel ."''
data-toggle=''tooltip'' title=''Detalhes do Custo''> ". $row[''valor_a_pagar''] = round($teste_variavel, 2) .'' %2''."</a>" . "</td>";
echo ''</tr>'';
}
echo ''</tbody>'';
?>


Preciso pegar esses dados do "Controler" e passar para "View". Isso que não estou conseguindo.
Esse código todo esta na View e não atualiza junto com o restante da página.
Obrigado por ajudar.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar