<?php
//referenciar o DomPDF com namespace
use Dompdf\Dompdf;

//funcao para gerar o relatorio
function gerarRealtorio($baixarDownload,
                        $fabricante,
                        $mostrarabc,
                        $datainicio,
                        $datafinal,
                        $user,
                        $conexao,
                        $loja,
                        $datainicio1,
                        $datafinal1,
                        $mostrarprod,
                        $mostrarestoque,
                        $contador,
                        $acrescentar,
                        $pastaDeDestino,
                        $orientacao = "nao",
                        $mostrarcompras = 0,
                        $valorcalculodesconto = 0, //se vai ser feito um desconto calculado ou um calculo a partir da venda
                        $maximo = 20000000,
                        $mostrarsec = 'nao'


)
{//iniciando a funcao relatorios
    $contagem = 0;
	
	//forcar mostar o enumerador caso seja uma consulta de curva ABC
	if($mostrarabc == 'sim')
	{
		$mostrarsec = 'sim';	
	}
		
   // if($msotrarsec == 'sim') $contagem = 10; //numerador da lista

    // include autoloader do dompdf
    require_once("dompdf/autoload.inc.php");

    //Criando a Instancia
    $dompdf = new DOMPDF();

    //SE MOSTRAR CURVA FICAR EM PAISAGEM
    if ($mostrarabc == 'sim') $dompdf->setPaper('A4', 'landscape');//Paisagem

    //SE ESCOLHEU ORIENTACAO EM PAISAGEM
    if ($orientacao == "sim") $dompdf->setPaper('A4', 'landscape');//Paisagem

    //verificar o periodo em dias
    $tempo = calculoDiaspendentes($datainicio,$datafinal);
    if ($tempo >= 222200) {

        $_SESSION['msg'] = "<div class='alert  alert-danger'>
 	Período maior que 06 meses </div>";
        //se periodo maior ou igual ao limite
        header("Location: ../gerador.php");

    }else{//se o periodo nao for maior que que o limite

        //limpa os dados da tabela antes de inserir novos dados
        //fazer a soma dos valores sem precisar do mysql

        $sql = "DELETE FROM vendas WHERE usuario = '$user'";
        mysqli_query($conexao, $sql) or die ("Erro:" .mysqli_error($conexao));

        //buscar dados no softcom
        $server = new Sqlserver();//instaciar a classe

        //----------------------------------------//
        
		$html = '<table style="text-align: center; font-size:12px">';
		
        $html .= '<thead>';
        $html .= '<tr style="background-color: coral;" >';
        if($mostrarsec == 'sim') $html .= '<th>Seq</th>';
        $html .= '<th>Cod</th>';
        $html .= '<th>Mercadoria</th>';

        if ($mostrarestoque == 'sim') $html .= '<th>Etoque</th>';

        $html .= '<th>Quantidade</th>';

       if($mostrarcompras == "sim") $html .= '<th>Compra</th>';

        $html .= '<th>Venda</th>';
        $html .= '<th>Desconto</th>';
        $html .= '<th>Líquido</th>';

        if ($mostrarabc == 'sim') $html .= '<th>UNT</th>';

        if ($mostrarabc == 'sim') $html .= '<th>ABC</th>';
        $html .= '</tr>';
        $html .= '</thead>';
        $html .= '<tbody>';

//consultar o valor total bruto em uma busca especifica para calcular o valor total bruto
$totalvendasbruto = $server->VendasTotal($fabricante,$loja,$datainicio1,$datafinal1);
//atribuindo o valor total bruto a uma variavel
foreach ($totalvendasbruto as $total){$valorbruto2 = $total[0];}

//variaveis para valores totais
$quantidade1 = 0;
$valorbruto1 =0;
$desconto1 = 0;
$liq1 = 0;
$compra1 = 0;
$comprasAcrescentada = 0;//para fazer a soma dos valor total das vendas caso seja acrescentado uma porcentagem
//buscando as vendas
$vendas2 = $server->Vendas($fabricante,$loja,$datainicio1,$datafinal1,$maximo);

        //percorre os dados recebidos em $vendas2
        foreach ($vendas2 as $row_transacoes)
        {
            //buscando o estoque do produto
            $estoque1 = $server->EstoqueProduto($row_transacoes['codmercadoria'],$loja);
            foreach ($estoque1 as $estoque2) {

                if ($estoque2[1] < 0) {
                    $estoque = 0;
                } else {
                    $estoque = $estoque2[1];
                }
            }

		//valor bruto
		 $valorBrutoProd1 = $server->PrecoBrutoItem($loja,$datainicio1,$datafinal1,$row_transacoes['codmercadoria']);
		 foreach($valorBrutoProd1 as $valorBrutoProd2) { $valorBrutoProd = $valorBrutoProd2[0]; }
		//$valorBrutoProd = $row_transacoes['valorbruto'];
		
		//atribuindo valores para lista de contagem
		$contagem = $contagem + 1;
        //atribuindo a uma variavel o codigo da mercadoria
		$codigomercadoria = $row_transacoes['codmercadoria'];
		
									/* EXCLUIR PRODUTOS DO RELATORIO					
									if (
									 $codigomercadoria <> 562
									 AND $codigomercadoria <> 515
									 AND $codigomercadoria <> 12888
									 AND $codigomercadoria <> 470
									 AND $codigomercadoria <> 7728
									 AND $codigomercadoria <> 7362)
									 {
								*/

		
            // ** FAZ CALCULO DO DESCONTO **
            //verifica se foi enviado um valor para o calculo do desconto se nao foi considerar o desconto fazendo o calculo que veio do banco
            
            if($valorcalculodesconto == 0){

            $desconto = $valorBrutoProd - $row_transacoes['vendaliquido'];
            
            if($desconto < 0.001){//se o desconto for menor que 0.001
                $desconto  = 0;
            }

            $vendaliquida = $row_transacoes['vendaliquido'];//se nao vai fazer calculo de desconto a partir de porcentagem informada
           
        }else{
            //se foi informado o valor a calcular fazer calculo
            $desconto = ($valorcalculodesconto / 100) * $valorBrutoProd;
            $vendaliquida = $valorBrutoProd - $desconto;//se o calculo do desconto vai ser calculado a venda liquida depende do percentual de desconto
            }

            //SE ESCOLHEU MOSTRAR APENAS PRODUTOS COM DESCONTO
            if($mostrarprod == 'sim') {
                //QUANDO ENCONTRAR UM DESCONTO ATRIBUIR AS VARIAVEIS TOTAIS
                if ($desconto > 0) {

                    $desconto1 += $desconto;
                    //fazendo soma de valor total
                    $quantidade1 += $row_transacoes['quantidade'];
                    $valorbruto1 += $valorBrutoProd;
                    $compra1 += $row_transacoes['compra'];
                    $liq1 += $vendaliquida;

                }
                //SE NAO ESCOLHEU APENAS PRODUTOS COM DESCONTO
               }else{

                    //ATRIBUINDO VALORES AS VARIAVEIS TOTAIS
                    $desconto1 += $desconto;
                    //fazendo soma de valor total
                    $quantidade1 += $row_transacoes['quantidade'];
                    $valorbruto1 += $valorBrutoProd;
                    $compra1 += $row_transacoes['compra'];
                    $liq1 += $vendaliquida;
            }



            //se o preco de compra foi o valor de compra que veio do banco de dados
            $comprapreco =  $row_transacoes['compra'];

            //se o valor de compra for o valor mais o que foi acrecentado no preco de compra

            $comprapreco4 = $row_transacoes['valorcompra'];

            $contador = $contador + 1;

            //ACRESCENTAR UMA PORCENTAGEM AO PRECO DE COMPRA
            if($acrescentar)//SE VAI ACRESCENTAR
            {   //faz o calculo acrescentando o valor recebido em porcentagem
                $comprapreco2 = (($comprapreco * $acrescentar) / 100) + $comprapreco; //ALTERA O VALOR DE COMPRA ACRESCENTANDO O VALOR
                //acumula o valor para fazer o valor total de compras ja acrescentado
                $comprasAcrescentada = $comprasAcrescentada + $comprapreco2; //O VALOR TOTAL DE COMPRAR AGORA É ACRESCENTADO

            }else{

                $comprapreco2 = $comprapreco;
            }

            //abc
            $UnitarioAbc =  ($valorBrutoProd / $valorbruto2) * 100 ;

            $acumulado = ($UnitarioAbc + $UnitarioAbc) * 100;

            if ($contador == 1)
            {

                $aculmulado = $UnitarioAbc;
            }else{

                $aculmulado = ($aculmulado + $UnitarioAbc) ;
            }

            //INICIO DA AREA DE IMPRESSAO DA TABELA COM OS DADOS

            if($comprapreco > 0)
            {

                if ($mostrarprod == 'sim')
                {
                    if ($desconto > 0)
                    {   $html .= '<tr>';
                       if($mostrarsec == 'sim') $html .= '<td>'. $contagem . "</td>";
                        $html .= '<td>'.$row_transacoes['codmercadoria'] . "</td>";
                        $html .= '<td style="text-align: left;">'.$row_transacoes['mercadoria'] . "</td>";
                        if ($mostrarestoque == 'sim') $html .= '<td>'.round($estoque) . "</td>";
                        $html .= '<td>'.round($row_transacoes['quantidade']) . "</td>";
                        if($mostrarcompras == "sim") $html .= '<td>'.number_format($comprapreco2 , 2, ',', '.' ). "</td>";
						
						
						
                        $html .= '<td>'.number_format($valorBrutoProd, 2, ',', '.' ). "</td>";
						
						
						
						
                        $html .= '<td>'.number_format($desconto, 2, ',', '.' ) . "</td>";
                        $html .= '<td>'.number_format($vendaliquida, 2, ',', '.' ) . "</td>";

                        if ($mostrarabc == 'sim') $html .= '<td>' . number_format($UnitarioAbc, 2, ',', '.' ) . '%</td>';
                        if ($mostrarabc == 'sim') $html .= '<td>' . number_format($aculmulado, 2, ',', '.' ) . '%</td> </tr>';
                    }

                }else{
                    $html .= '<tr>';
                       if($mostrarsec == 'sim') $html .= '<td>'. $contagem . "</td>";
                    $html .= '<td>'.$row_transacoes['codmercadoria'] . "</td>";
                    $html .= '<td style="text-align: left;">'.$row_transacoes['mercadoria'] . "</td>";
                    if ($mostrarestoque == 'sim') $html .= '<td>'.round($estoque) . "</td>";
                    $html .= '<td>'.round($row_transacoes['quantidade']) . "</td>";
                    if($mostrarcompras == "sim") $html .= '<td>'.number_format($comprapreco2 , 2, ',', '.' ). "</td>";
					
                    $html .= '<td>'.number_format($valorBrutoProd, 2, ',', '.' ). "</td>";
                    
					
					$html .= '<td>'.number_format($desconto, 2, ',', '.' ) . "</td>";
                    $html .= '<td>'.number_format($vendaliquida, 2, ',', '.' ) . "</td>";

                    if ($mostrarabc == 'sim') $html .= '<td>' . number_format($UnitarioAbc, 2, ',', '.' ) . '%</td>';
                    if ($mostrarabc == 'sim') $html .= '<td>' . number_format($aculmulado, 2, ',', '.' ) . '%</td> </tr>';

                }
            }
            //FIM DA IMPRESSAO DA TABELA COM OS DADOS
			
        //} FIM DO EXCLUIR PRODUTOS DO RELATORIO

}
	
	
	}//se o periodo consultado foi maior ou igual ao limite termina aqui


    //trocar o nome da loja pelo nome da razao para cabecalho do relatorio
    //require_once "trocarnomeporrazao.php";

    //trocar o nome da loja pela razao social
    switch ($loja)
    {
        case 'MATRIZ':
            $lojaRelatorio = 'M. A. DA SILVA COSMETICOS';
            break;
        case 'LOJA 02':
            $lojaRelatorio = 'MERCIA A. DA SILVA COSMETICOS';
            break;
        case 'LOJA 03':
            $lojaRelatorio = 'SIDNEI DA SILVA COSMETICOS';
            break;
        case 'LOJA 04':
            $lojaRelatorio = 'M. A. DA SILVA COSMETICOS FILIAL';
            break;
        case 'LOJA 05':
            $lojaRelatorio = 'E. M. DA SILVA COSMETICOS';
            break;
    }


    //---------------------------------------//
    $html .= '<tr style="background-color: coral;" >';
  if($mostrarsec == 'sim')  $html .= '<td> </td>';
    $html .= '<td> </td>';
    $html .= '<td><b>TOTAIS</b> </td>';
    if ($mostrarestoque == 'sim') $html .= '<td> </td>';
    $html .= '<td> <b>'.$quantidade1.'</b> </td>';

    //so mostrar preco de compra se selecionou sim no mostrarprecompras
    if($mostrarcompras == "sim"){

    if($acrescentar)
    {

        $html .= '<td><b>'.$comprasAcrescentada.' </b></td>';

    }else{

        $html .= '<td><b>'.number_format($compra1, 2, ',', '.' ).' </b></td>';
    }
    }//fim do mostrar precocompra total

    $html .= '<td><b>'.number_format($valorbruto1, 2, ',', ' ').'</b> </td>';
    $html .= '<td><b>'. number_format($desconto1, 2, ',', ' ').'</b> </td>';
    $html .= '<td><b>'.number_format($liq1, 2, ',', ' ').'</b></td>';

    if ($mostrarabc == 'sim') $html .= '<td> </td>';
    if ($mostrarabc == 'sim') $html .= '<td> </td>';


    $html .= '<tr>';
    $html .= '</tbody>';
    $html .= '</table';

    if ($quantidade1 > 0)
    {
        // Carrega seu HTML
        $dompdf->load_html('
			<img src="logo.jpg" height=50px>
			<hr>

			<h5 style="text-transform: uppercase;"> EMPRESA: '
            . $lojaRelatorio. ' <br> DATA: '
            .date("d/m/Y", strtotime($datainicio)).'  à '
            .date("d/m/Y", strtotime($datafinal)).
            ' <br> FABRICANTE: ' .$fabricante.
            ' <p> Vendas por período
			'. $html .'
		');


        if($baixarDownload == 'TODAS')
        {
            // Renderizar o HTML
            $dompdf->render();

            // Nome do arquivo que você deseja salvar
            $nomeDoArquivo = $nome . $fabricante . "-" . $loja . "-" . $lojaRelatorio . $contar_relatorio .".pdf";

            // Caminho completo para o arquivo de destino
            $caminhoDoArquivo = $pastaDeDestino . '/' . $nomeDoArquivo;

            // Use file_put_contents para salvar o arquivo no destino
            if (file_put_contents($caminhoDoArquivo, $dompdf->output()) !== false) {
                echo 'Salvo em ->: ' . $caminhoDoArquivo. '<br>';
            } else {
                echo 'Erro ao salvar o arquivo.';
            }

        }else{

            //Renderizar o html
            $dompdf->render();

            //Exibibir a página
            $dompdf->stream(
                "$fabricante"."-"."$loja"."-"."$lojaRelatorio",
                array(
                    "Attachment" => true //Para realizar o download somente alterar para true
                )
            );
        }
    }else{

        echo $fabricante ."NÃO OUVE VENDAS";
    }
}//finalizando a funcao gerarRelatorios