Ir para conteúdo
Fórum Script Brasil
  • 0

Soma valores por clientes


Josue1978

Pergunta

Boa noite pessoal, preciso de uma ajuda para somar os campos de valores por cada cliente, atualmente está somando os valores lançados por cada Ordem de serviço, mas gostaria que soma se por cada cliente.

Banco produtos_os

image.png.50686fff33306f67ce074a9cf4d509fa.png

servicos_os

image.png.e4bac9f79cc9d6c0dc898dabe17a44f3.png

os

image.thumb.png.d0a2268504a535d73da034f42c5f59de.png

view

  <h5>O.s Inadimplentes</h5>
            </div>
            <div class="widget-content">
                <table class="table table-bordered">
                    <thead>
                        <tr>
                           <th>N° OS</th>
                            <th>Data</th>                           
                            <th>Cliente</th>
							<th>Valor s/ desconto</th>
                            <th>Desconto</th>
                            <th>Valor C/ desconto</th>							
                            <th>Ação</th>
                        </tr>
                    </thead>
                    <tbody>
                         <?php foreach ($ordens5 as $o) : ?>
							
                                <tr>
                                     <td>
                                        <?= $o->idOs ?>
                                    </td>
                                     <td>
                                        <?= date('d/m/Y', strtotime($o->dataInicial)) ?>
                                    </td>                              
                                     <td>
                                        <?= $o->nomeCliente ?>
                                    </td>
								     <td>R$
                                        <?= number_format ($o->totalProdutos + $o->totalServicos, 2, ',', '.') ?>
                                    </td>
									 <td>%
                                        <?= number_format ($o->desconto, 2, ',', '.') ?>
                                    </td>
									 <td>R$						
									    <?= number_format ($o->valor_desconto ?: $o->totalProdutos + $o->totalServicos, 2, ',', '.') ?>                                       
                                    </td>
                                     <td>
                                        <?php if ($this->permission->checkPermission($this->session->userdata('permissao'), 'vOs')) : ?>
                                            <a href="<?= base_url() ?>index.php/os/editar/<?= $o->idOs ?>" class="btn-nwe3">
                                              <i class="bx bx-edit"></i></a>								 
											  
                                        <?php endif ?>
                                    </td>
   

Controller

<?php if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
class Home extends MY_Controller

    public function __construct()
    {
        parent::__construct();
        $this->load->model('Home_model');
    }
    public function index()
    {       
		$this->data['ordens5'] = $this->home_model->getOsAbertasInad();
		
        $this->data['view'] = 'home/painel';
        return $this->layout();

Model

 public function getOsAbertasInad()
    {
	  $this->db->select(
            'os.*,
            clientes.nomeCliente,
			COALESCE((SELECT SUM(servicos_os.preço * servicos_os.quantidade ) FROM servicos_os WHERE servicos_os.os_id = os.idOs), 0) totalServicos,
            COALESCE((SELECT SUM(produtos_os.preço * produtos_os.quantidade ) FROM produtos_os WHERE produtos_os.os_id = os.idOs), 0) totalProdutos'           
        );
        $this->db->select('os.*, clientes.nomeCliente');
        $this->db->from('os');
        $this->db->join('clientes', 'clientes.idClientes = os.clientes_id');
        $this->db->where('os.status', 'Finalizado', 'dataFinal BETWEEN CURRENT_DATE()-2000 AND CURRENT_DATE()', null, false);	
        $this->db->limit(50);
        return $this->db->get()->result();
    }

O resultado está sendo esse, e não está somando por cada cliente. Acredito que tenha que mudar no Model acrescentado o Group by mas não consegui somar os valores

image.thumb.png.ca11c76d2b894de066451e64063fa44a.png

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Eu uso o MySQL. Para eu obter o total por cliente, eu usaria a tabela cliente e a tabela OS, e criaria esse tipo de consulta:

SELECT tbcliente.codcliente, tbcliente.nome, Sum(tbos.total) AS SomaDetotal
FROM tbos INNER JOIN tbcliente ON tbos.codcliente = tbcliente.codcliente
GROUP BY tbos.codcliente, tbcliente.cliente
ORDER BY tbcliente.cliente;

Ou seja, primeiro faria um teste no banco de dados e depois iria codificar a apresentação do resultado no PHP, e não o contrário.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...