<?php
require '../conexao/conexao.php';
require '../conexao/acesso.php';
require '../configuacoes.php';
$resultmeta = null;

// recuperando cidade combo filial: tenta Firebird e, se falhar, faz fallback para MySQL
$query_cidade_filial = "SELECT DISTINCT MUNIC FROM FC01000 fc WHERE fc.cdfil IN (SELECT cdfil FROM fc15100)";

$cidadefiliais = [];

$result_cidade_filial = @ibase_query($connection, $query_cidade_filial);

if ($result_cidade_filial === false) {
    if (file_exists(__DIR__ . '/../configuracao/consulta_banco_dados.php')) {
        require_once __DIR__ . '/../configuracao/consulta_banco_dados.php';
        $consulta_bb = new ConsultaBancoDeDados();
        $cidades = $consulta_bb->get_cidades();

        foreach ($cidades as $cidadeItem) {
            $cidadefiliais[] = ['MUNIC' => $cidadeItem['nome_cidade'] ?? $cidadeItem['id_cidade'] ?? ''];
        }
    } else {
        error_log('Fallback get_cidades não disponível: ' . ibase_errmsg());
    }
} else {
    while ($row = ibase_fetch_assoc($result_cidade_filial)) {
        $cidadefiliais[] = $row;
    }
}


if (isset($_GET['form_submitted']) && $_GET['form_submitted'] == '1') {
    $cidade = $_GET['cidade'] ?? null;
    $ano = $_GET['ano'] ?? null;
    $mes = $_GET['mes'] ?? null;
    $DataInicial = $_GET['DataInicial'] ?? null;
    $DataFinal = $_GET['DataFinal'] ?? null;
    $filiais_condicao = $_GET['filial'] ?? [];
    //pegar dados das filiais
    if (!empty($filiais_condicao)) {
        if (is_array($filiais_condicao)) {
            // Se $filial for um array (vários valores selecionados), aplicamos array_map
            $filial = implode(",", array_map('intval', $filiais_condicao));
        } else {
            // Se $filial for uma string (apenas um valor selecionado), convertemos para inteiro diretamente
            $filial = intval($filiais_condicao);
        }
    } else {
        // Se $filiais_condicao estiver vazio, atribuímos o valor "Todos" a $filial
        $filial = "Todos";
    }
	
	// Criar a string de consulta com os parâmetros
$queryString = http_build_query([
    'cidade' => $cidade,
    'ano' => $ano,
    'mes' => $mes,
    'filial' => $filial,
    'DataInicial' => $DataInicial,
    'DataFinal' => $DataFinal,
    'form_submitted' => '1'
]);

// URL da página "ranking.php" com os parâmetros da pesquisa
$rankingPageUrl = "ranking.php?$queryString";


    $qry_manipulado = "select
        FU.NOMEFUNCIONARIO as NOMEFUN,
        iif(A1.STATUS_MOV = 0,A1.CADASTRO_CF,A1.AVIADA_CF) as CDFUNRE,
        cast(coalesce(sum(A2.VALORFORMULA_VENDA_DESC),0) as numeric (18,2)) as soMA,
        0 AS VALOR_REVENDA,
        0 AS VALOR_MARCA_PROPRIA
        from ATENDIMENTO_A2 A2
        inner join ATENDIMENTO_A1 A1 on A2.CODIGO_ATEND_A1 = A1.CODIGO
        inner join FORMAFARMACEUTICA FF on A2.CODIGO_FORMAFARMACEUTICA = FF.CODIGO
        inner join FUNCIONARIO FU on FU.CODIGO = iif(A1.STATUS_MOV = 0,
        A1.CADASTRO_CF,
        A1.AVIADA_CF)
        inner join EMPRESA EMP on EMP.CODIGO = iif(A1.STATUS_MOV = 0,
        A1.CADASTRO_LJ,
        A1.AVIADA_LJ)
        where A1.TIPO_ATENDIMENTO = 1
        AND A1.status_mov = '-1'
        AND A2.concluidoformula = '-1'
        AND A1.CANCELAMENTO_CF IS NULL
        AND A1.DESCARTE_CF IS NULL 
        AND CAST(A1.entregue_dt AS DATE) BETWEEN '$DataInicial' AND '$DataFinal'
                 ";
                    if ($filial && $filial != "Todos") {
                        $qry_manipulado .= " AND A1.CODIGO_EMPRESA_PADRAO IN ($filial) ";
                    }

                    $qry_manipulado .= " GROUP BY NOMEFUN,CDFUNRE";

    $qry_revenda = "SELECT 
        FU.NOMEFUNCIONARIO as NOMEFUN,
        IIF(AG.AG1_OP = 1, A1.CODIGO_FUNCIONARIO_COMISSAO, A1.AVIADA_CF) as CDFUNRE,
        cast(sum(a3.valorvenda_desc) as numeric (18,2)) AS revenda_total
        from atendimento_a3 a3
        inner join atendimento_a1 a1 on a3.codigo_atend_a1 = a1.codigo
        LEFT JOIN UTIL_REL_AG1 (1) AG ON AG.AG1_OP > 0
        inner join estoque_geral eg on a3.codigo_produto = eg.codigo
        inner join medico md on (md.codigo = a1.codigo_medico)
        left join medico_cr cr on (cr.codigo = md.codigo_conselho_regional)
        INNER JOIN FUNCIONARIO FU ON FU.CODIGO = IIF(AG.AG1_OP = 1, A1.CODIGO_FUNCIONARIO_COMISSAO, A1.AVIADA_CF)
        where a1.tipo_atendimento = 2
        and a3.excluirproduto_cf is null and a1.cancelamento_lj is null and A3.QUANTIDADE > 0
        AND A1.PAGAR_COMISSAO_FUNCIONARIO = '-1'
        AND A1.STATUS_MOV = '-1'
        AND A3.codigo_produto NOT IN ('3024873','3025044')
        AND eg.codigo_estoque_classificacao NOT IN (300002)
        AND CAST(A1.entregue_dt AS DATE) BETWEEN '$DataInicial' AND '$DataFinal'
		";
                     if ($filial && $filial != "Todos") {
                        $qry_revenda .= " AND A1.CODIGO_EMPRESA_PADRAO IN ($filial) ";
                    }

                    $qry_revenda .= " GROUP BY NOMEFUN ,CDFUNRE";

    $qry_marca = "SELECT
        FU.NOMEFUNCIONARIO as NOMEFUN,
        IIF(AG.AG1_OP = 1, A1.CODIGO_FUNCIONARIO_COMISSAO, A1.AVIADA_CF) as CDFUNRE,
        cast(sum(a3.valorvenda_desc) as numeric (18,2)) AS marca_propria_total
        from atendimento_a3 a3
        inner join atendimento_a1 a1 on a3.codigo_atend_a1 = a1.codigo
        LEFT JOIN UTIL_REL_AG1 (1) AG ON AG.AG1_OP > 0
        inner join estoque_geral eg on a3.codigo_produto = eg.codigo
        inner join medico md on (md.codigo = a1.codigo_medico)
        left join medico_cr cr on (cr.codigo = md.codigo_conselho_regional)
        INNER JOIN FUNCIONARIO FU ON FU.CODIGO = IIF(AG.AG1_OP = 1, A1.CODIGO_FUNCIONARIO_COMISSAO, A1.AVIADA_CF)
        where a1.tipo_atendimento = 2
        and a3.excluirproduto_cf is null and a1.cancelamento_lj is null and A3.QUANTIDADE > 0
        AND A1.PAGAR_COMISSAO_FUNCIONARIO = '-1'
        AND A1.STATUS_MOV = '-1'
        AND (
        A3.codigo_produto IN ('3024873', '3025044') 
        OR EG.codigo_estoque_classificacao IN (300002) 
        )
		AND CAST(A1.entregue_dt AS DATE) BETWEEN '$DataInicial' AND '$DataFinal'
		";
                      if ($filial && $filial != "Todos") {
                        $qry_marca .= " AND A1.CODIGO_EMPRESA_PADRAO IN ($filial) ";
                    }
    
                    $qry_marca .= " GROUP BY NOMEFUN ,CDFUNRE";

    $qryResult = ibase_query($connection, $qry_manipulado);
    if (!$qryResult) {
        die("Erro na consulta SQL (Manipulado): " . ibase_errmsg());
    }

    $qryResultRevenda = ibase_query($connection, $qry_revenda);
    if (!$qryResultRevenda) {
        die("Erro na consulta SQL (Revenda): " . ibase_errmsg());
    }

    $qryResultMarca = ibase_query($connection, $qry_marca);
    if (!$qryResultMarca) {
        die("Erro na consulta SQL (Marca Própria): " . ibase_errmsg());
    }

}
?>

<!DOCTYPE html>
<html lang="pt-br">
<?php 
    $pageTitle = "Consultar Caixas";
    include('../geral/header.php'); 
?>
<body>

    <?php include('../geral/menu.php'); ?>

    <div class="wrapper candidato">
        <div class="container-fluid">

            <div class="card-box mt-3">
                <div class="row">

                    <div class="col-6 text-left">
                        <h4 class="page-title">Consultar Caixas</h4>
                    </div>

                    <div class="col-6 text-right">
                        <a href="index.php?<?= $queryString ?>" class="btn btn-light">
                            <i class="mdi mdi-keyboard-backspace"></i> Voltar
                        </a>
                    </div>

                    <div class="col-12">
                        <hr>
                    </div>

                    <div class="col-12">
                        <form method="get" action="" id="indexForm">
                        <div class="form-row mb-3">
                            <div class="form-group col-md-3">
                        <label for="cidade" class="col-form-label">Cidade:</label>
                        <select id="cidade" name="cidade" class="form-control">
                            <option value="Todos" <?php echo (!isset($cidade) || $cidade == "Todos") ? "selected" : ""; ?>>Todos</option>
                            <?php foreach ($cidadefiliais as $item): ?>
                                <option value="<?php echo $item['MUNIC']; ?>" <?php echo (isset($cidade) && $cidade == $item['MUNIC']) ? "selected" : ""; ?>>
                                    <?php echo $item['MUNIC']; ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                                
                    <div class="form-group col-md-4">
                        <label for="filial" class="col-form-label">Filial:</label>
                           
                        </label>
    
                                <select multiple id="filial" name="filial[]" class="form-control">
                                    <!-- Options will be filled dynamically -->
                                </select>

                            </div>

                            <div class="col-2">
                                
                                <label for="DataInicial" class="col-form-label">Data Inicial</label>
                                <input type="date" id="DataInicial" name="DataInicial" class="form-control" value="<?php echo isset($DataInicial) ? $DataInicial : ''; ?>">
                            </div>

                            <div class="col-2">
                            
                            <label for="DataFinal" class="col-form-label">Data Final</label>
                            <input type="date" id="DataFinal" name="DataFinal" class="form-control" value="<?php echo isset($DataFinal) ? $DataFinal : ''; ?>">
                        </div>

                                <input type="hidden" name="form_submitted" value="1" />

                                <div class="col-12 text-right">
                                    <button type="submit" class="btn btn-primary"><i class="mdi mdi-magnify"></i> Pesquisar</button>
                                </div>
                            </div>
                        </form>
                    </div>

                    

                        <div class="col-12">
                            <div style="display: flex; justify-content: space-between; align-items: center;">
                                <h6>Valores de Caixa por Vendedor</h6>
                            </div>

                            <table id="datatable-buttons" class="table table-striped table-bordered dt-responsive nowrap">
                                <thead>
                                    <tr class="text-center">
                                        <th>Vendedor</th>
										<th>Código</th>
                                        <th>Manipulado</th>
                                        <th>Revenda</th>
                                        <th>Marca Própria</th>
                                        <th>Total</th>
                                    </tr>
                                </thead>
                                <tbody>

                                    <?php
                                    // Criar arrays associativos para armazenar os resultados
                                    // Criar arrays associativos para armazenar os resultados
                                    $dataManipulado = [];
                                    $dataRevenda = [];
                                    $dataMarca = [];
                                    $nomesVendedores = []; // Novo array para armazenar nomes dos vendedores

                                    // Buscar dados de manipulado
                                    while ($row = ibase_fetch_assoc($qryResult)) {
                                        $dataManipulado[$row['CDFUNRE']] = $row['SOMA'];
                                        $nomesVendedores[$row['CDFUNRE']] = $row['NOMEFUN']; // Adiciona o nome do vendedor
                                    }

                                    // Buscar dados de revenda
                                    while ($row = ibase_fetch_assoc($qryResultRevenda)) {
                                        $dataRevenda[$row['CDFUNRE']] = $row['REVENDA_TOTAL'];

                                        // Adicionar vendedor se não estiver na lista de manipulado
                                        if (!isset($nomesVendedores[$row['CDFUNRE']])) {
                                            $nomesVendedores[$row['CDFUNRE']] = $row['NOMEFUN'];
                                            $dataManipulado[$row['CDFUNRE']] = 0; // Valor zerado para manipulado
                                        }
                                    }

                                    // Buscar dados de marca própria
                                    while ($row = ibase_fetch_assoc($qryResultMarca)) {
                                        $dataMarca[$row['CDFUNRE']] = $row['MARCA_PROPRIA_TOTAL'];

                                        // Adicionar vendedor se não estiver na lista de manipulado
                                        if (!isset($nomesVendedores[$row['CDFUNRE']])) {
                                            $nomesVendedores[$row['CDFUNRE']] = $row['NOMEFUN'];
                                            $dataManipulado[$row['CDFUNRE']] = 0; // Valor zerado para manipulado
                                        }
                                    }

                                    // Inicializar totais
                                    $totalManipulado = 0;
                                    $totalRevenda = 0;
                                    $totalMarca = 0;

                                    // Calcular totais e gerar linhas da tabela
                                    foreach ($dataManipulado as $cdfunre => $manipulado) {
                                        $revenda = $dataRevenda[$cdfunre] ?? 0;
                                        $marca_propria = $dataMarca[$cdfunre] ?? 0;
                                        $total = $manipulado + $revenda + $marca_propria;
                                        $nomefun = $nomesVendedores[$cdfunre] ?? ''; // Obtém o nome do vendedor

                                        $totalManipulado += $manipulado;
                                        $totalRevenda += $revenda;
                                        $totalMarca += $marca_propria;
                                    ?>

                                    <tr class='text-center'>
                                        <td width='87'><?php echo $nomefun; ?></td>
                                        <td width='87'>
                                            <a href="detalhar_vendedor.php?id_vendedor=<?php echo urlencode($cdfunre); ?>&nome=<?php echo urlencode($nomefun); ?>&<?php echo $queryString; ?>">
                                                <?php echo htmlspecialchars($cdfunre); ?>
                                            </a>
                                        </td>
                                        <td width='89'><div align='center'>R$ <?php echo htmlspecialchars(number_format($manipulado, 2, ',', '.')); ?></div></td>
                                        <td width='89'><div align='center'>R$ <?php echo htmlspecialchars(number_format($revenda, 2, ',', '.')); ?></div></td>
                                        <td width='89'><div align='center'>R$ <?php echo htmlspecialchars(number_format($marca_propria, 2, ',', '.')); ?></div></td>
                                        <td width='89'><div align='center'>R$ <?php echo htmlspecialchars(number_format($total, 2, ',', '.')); ?></div></td>
                                    </tr>

                                    <?php
                                    }
                                    ?>

                                    <tr class='text-center'>
                                        <td width='87'><div align='center'><b>Total</b></div></td>
                                        <td></td>
                                        <td width='89'><div align='center'><b>R$ <?php echo htmlspecialchars(number_format($totalManipulado, 2, ',', '.')); ?></b></div></td>
                                        <td width='89'><div align='center'><b>R$ <?php echo htmlspecialchars(number_format($totalRevenda, 2, ',', '.')); ?></b></div></td>
                                        <td width='89'><div align='center'><b>R$ <?php echo htmlspecialchars(number_format($totalMarca, 2, ',', '.')); ?></b></div></td>
                                        <td width='89'><div align='center'><b>R$ <?php echo htmlspecialchars(number_format($totalManipulado + $totalRevenda + $totalMarca, 2, ',', '.')); ?></b></div></td>
                                    </tr>


                                </tbody>
                            </table>
                        </div>

                   
                </div>
            </div>

        </div> <!-- end container -->
    </div>

    <?php include('../geral/footer.php'); ?>
    <?php include('../geral/mensagens_modais.php'); ?>

    <script src="../../assets/js/vendor.min.js"></script>
    <script src="../../assets/libs/jquery-knob/jquery.knob.min.js"></script>
    <script src="../../assets/js/app.min.js"></script>
    <script src="../geral/javascript.js"></script>

    <script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        var form = document.getElementById("indexForm");
        form.addEventListener("submit", function(event) {
            var dataInicial = document.getElementById("DataInicial").value.trim();
            var dataFinal = document.getElementById("DataFinal").value.trim();
           
            
            // Verificar se os campos de data não estão vazios
            if (dataInicial === '' || dataFinal === '') {
                alert('Favor informar um período válido.');
                event.preventDefault(); // Impede o envio do formulário
                return; // Encerra a execução da função
            }

            // Converter as datas para objetos Date
            dataInicial = new Date(dataInicial);
            dataFinal = new Date(dataFinal);

            // Verificar se a data inicial é maior que a final
            if (dataInicial > dataFinal) {
                alert('A data inicial não pode ser maior que a data final.');
                event.preventDefault(); // Impede o envio do formulário
            }

        
        });
    });
</script>

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.1.0-beta.1/css/select2.min.css" rel="stylesheet" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.1.0-beta.1/js/select2.min.js"></script>
<link href="../../assets/css/style.css" rel="stylesheet" />
<script>
 $(document).ready(function() {
    // Função para preencher o combo de filiais com Select2
    function carregarFiliais(cidade) {
        $.ajax({
            url: 'get_filiais.php',
            type: 'POST',
            dataType: 'json',
            data: {
                cidade: cidade
            },
            success: function(data) {
                $('#filial').empty().select2({
                    placeholder: 'Selecione uma ou mais filiais',
                    data: data.map(function(item) {
                        return {
                            id: item.CDFIL,
                            text: item.DESCRFIL
                        };
                    })
                });

                // Recuperar filiais selecionadas do localStorage, se existirem
                var filiaisSelecionadas = JSON.parse(localStorage.getItem('filiaisSelecionadas')) || [];

                // Selecionar as filiais recuperadas
                $('#filial').val(filiaisSelecionadas).trigger('change');
            },
            error: function(xhr, status, error) {
                alert('Erro na chamada AJAX: ' + status + ' - ' + error);
            }
        });
    }

    // Ao carregar a página, chama a função para preencher o combo de filiais com base na cidade inicial
    carregarFiliais($('#cidade').val());

    // Ao alterar a cidade, chama a função para preencher o combo de filiais com base na nova cidade selecionada
    $('#cidade').change(function() {
        const cidade = $(this).val();
        carregarFiliais(cidade);
    });

    // Ao selecionar ou deselecionar uma filial, atualiza o localStorage com as filiais selecionadas
    $('#filial').on('change', function() {
        var filiaisSelecionadas = $(this).val() || [];
        localStorage.setItem('filiaisSelecionadas', JSON.stringify(filiaisSelecionadas));
    });

    // Checkbox para selecionar todas as filiais
    $("#select_todos").click(function() {
        if ($(this).is(':checked')) {
            $('#filial option').prop('selected', true);
            $('#filial').trigger('change');
        } else {
            $('#filial option').prop('selected', false);
            $('#filial').trigger('change');
        }
    });
});


</script>


</body>

</html>
