Jump to content
Fórum Script Brasil
  • 0

Relatório com totais das formas de pagamento


Nilson Alvarenga

Question

Bom dia a todos!
Não estou conseguindo resolver esse caso.

Tenho duas tabelas, uma vendas e outra formas de pagamento. Preciso mostrar as formas 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.

[code]

$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();
[/code]

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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.

[code]

$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();
[/code]

tabela 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?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Estudei o Codeigniter e para fazer a sua tarefa, comecei pelo MySQL, mudei ele assim:

CREATE TABLE `vendas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `data` date DEFAULT NULL,
  `venda` float DEFAULT NULL,
  `forma_de_pagamento` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `vendas` VALUES (37,'2023-07-01',15,'Dinheiro'),(38,'2023-07-02',10,'Dinheiro'),
(39,'2023-07-03',25,'Dinheiro'),(40,'2023-07-04',25,'Cartão de Débito'),
(41,'2023-07-05',20,'Cartão de Débito'),(42,'2023-07-06',40,'Cartão de Débito'),
(43,'2023-07-07',20,'Cartão de Crédito'),(44,'2023-07-07',20,'Cartão de Crédito'),
(45,'2023-07-08',20,'Cartão de Crédito');

e o Codeigniter ficou assim:
 

app > Config > Routes.php
...
use App\Controllers\Vendas;
$routes->get('vendas',[Vendas::class,'index']);

app > Controllers > Vendas.php
<?php
namespace App\Controllers;
use App\Models\venda_model;
class Vendas extends BaseController {
    public function index(){
        $model=model(venda_model::class);
        $data=['vendas'=>$model->getVendas('2023-07')];
        return view('vendas',$data);}  
    }

app > Models > venda_model.php
<?php
namespace App\Models;
use CodeIgniter\Model;
class venda_model extends Model {
    protected $table='vendas';
    public function getVendas($data_agora){
        return $this->select('sum(venda) as somavenda')
        ->select('forma_de_pagamento')
        ->where('data >=', "$data_agora-01")
        ->where('data <=', "$data_agora-31")
        ->groupBy('forma_de_pagamento')->findAll();}
}

app > Views > vendas.php
<h1>Relatório de Vendas</h1>
<table><th>Forma de Pagamento<th>Venda
<?php foreach($vendas as $venda){ ?>
<tr><td><?=$venda['forma_de_pagamento']?><td><?=$venda['somavenda']?>
<?php } ?>

E ele ficou assim:

Captura de tela 2023-07-22 225543.png

Link to comment
Share on other sites

  • 0

Frank K Hosaka, Boa tarde!

Muito obrigado por me ajudar.

Desculpe não ter responder antes, acabei de chegar de viagem e já vim correndo conferir sua ajuda.

Eu não estou entendendo a parte do Models, coloco lá e não funciona.

O meu Models original está assim:

 

[code]

<?php

namespace App\Models;

use CodeIgniter\Model;

class VendaModel extends Model
{
    protected $table = 'vendas';
    protected $primaryKey = 'id_venda';
    protected $useSoftDeletes = true;
    protected $allowedFields = [
        'id_venda',
        'valor_a_pagar',
        'desconto',
        'valor_recebido',
        'troco',
        'forma_de_pagamento',
        'juros_link',
        'juros_real_credito',
        'juros_real_debito',
        'juros_real_credito2',
        'juros_real_debito2',
        'valor_real_cartao',
        'numero_parcelas',
        'data',
        'hora',
        'id_cliente',
        'id_funcionario',
        'id_empresa',
        'id_filial',
        'id_usuario',
        'peso',
        'id_caixa'
    ];
    protected $useTimestamps = true;
    protected $createdField  = 'created_at';
    protected $updatedField  = 'updated_at';
    protected $deletedField  = 'deleted_at';
}
 

[/code]

Me desculpe pela falta de conhecimento como vocês, teria como você me ajudar a colocar os códigos do seu Models no meu Controllers, e chamar na Views?

 

Obrigado, Deus te abençõe!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...