<?php
require '../conexao/conexao.php';

class ConsultaComercial
{

    private $connectionmysql;
    private $connection;
    private $configuracoes;

    public function __construct()
    {
        global $connectionmysql;
        global $connection;
        global $configuracoes;
        $this->connectionmysql = $connectionmysql;
        $this->connection = $connection;
        $this->configuracoes = $configuracoes;
    }

    // Método para obter as metas
    public function getMetas($exibirManipulado, $exibirRevenda, $exibirMarcaPropria, $ano, $mes, $periodo, $filial)
    {
        // Construção da consulta SQL
        $sql_meta = "SELECT codigo_filial, ";

        // Verificação de permissão para o campo `VALOR_MANIPULADO`
        if ($exibirManipulado) {
            $sql_meta .= "SUM(COALESCE(VALOR_MANIPULADO, 0)) AS META_VALOR_MANIPULADO, ";
        } else {
            $sql_meta .= "0 AS META_VALOR_MANIPULADO, ";
        }

        // Verificação de permissão para o campo `VALOR_REVENDA`
        if ($exibirRevenda) {
            $sql_meta .= "SUM(COALESCE(VALOR_REVENDA, 0)) AS META_VALOR_REVENDA, ";
        } else {
            $sql_meta .= "0 AS META_VALOR_REVENDA, ";
        }

        // Verificação de permissão para o campo `VALOR_MARCA_PROPRIA`
        if ($exibirMarcaPropria) {
            $sql_meta .= "SUM(COALESCE(valor_marcapropria, 0)) AS META_VALOR_MARCA_PROPRIA, ";
        } else {
            $sql_meta .= "0 AS META_VALOR_MARCA_PROPRIA, ";
        }

        // Somatório condicional dos campos, levando em consideração as permissões
        $sql_meta .= "SUM(COALESCE(";
        $sql_meta .= $exibirManipulado ? "VALOR_MANIPULADO, 0" : "0";
        $sql_meta .= ") + COALESCE(";
        $sql_meta .= $exibirRevenda ? "VALOR_REVENDA, 0" : "0";
        $sql_meta .= ") + COALESCE(";
        $sql_meta .= $exibirMarcaPropria ? "valor_marcapropria, 0" : "0";
        $sql_meta .= ")) AS META_SOMA FROM metas WHERE 1=1 ";

        // Condições adicionais
        if ($ano && $ano != "Selecione") {
            $sql_meta .= " AND ano = " . intval($ano);
        }
        if ($mes && $mes != "Selecione") {
            $sql_meta .= " AND mes = " . intval($mes);
        }
        if ($periodo && $periodo != "mes") {
            $sql_meta .= " AND periodo = " . intval($periodo);
        }

        if ($filial && $filial != "Todos") {
            $sql_meta .= " AND codigo_filial IN ($filial)";
        }

        // Agrupamento por código de filial
        $sql_meta .= " GROUP BY codigo_filial";

        // Executar a consulta
        $resultmeta = $this->connectionmysql->query($sql_meta);

        // Verifica se a consulta foi bem-sucedida
        if (!$resultmeta) {
            die('Erro na consulta MySQL: ' . $this->connectionmysql->error);
        }

        // Retorna o resultado da consulta
        return $resultmeta;
    }

    //  public function getConsolidado($exibirManipulado, $exibirRevenda, $exibirMarcaPropria, $ano, $mes, $filial, $operacoes = null)
    // {
    //     // Consulta principal com a nova estrutura de dados
    //     $sql_consolidado = "
    //     SELECT
    //         COALESCE(A.cdcon, B.cdconre, C.cdconre) AS codigo_filial";

    //     if ($exibirManipulado) {
    //         $sql_consolidado .= ",
    //         COALESCE(A.VALOR_MANIPULADO, 0) AS REALIZADO_VALOR_MANIPULADO";
    //     }

    //     if ($exibirRevenda) {
    //         $sql_consolidado .= ",
    //         COALESCE(C.VALOR_REVENDA, 0) AS REALIZADO_VALOR_REVENDA";
    //     }

    //     if ($exibirMarcaPropria) {
    //         $sql_consolidado .= ",
    //         COALESCE(B.VALOR_MARCA_PROPRIA, 0) AS REALIZADO_VALOR_MARCA_PROPRIA";
    //     }

    //     $sql_consolidado .= ",
    //     " . ($exibirManipulado ? "COALESCE(A.VALOR_MANIPULADO, 0)" : "0") . " +
    //     " . ($exibirRevenda ? "COALESCE(C.VALOR_REVENDA, 0)" : "0") . " +
    //     " . ($exibirMarcaPropria ? "COALESCE(B.VALOR_MARCA_PROPRIA, 0)" : "0") . " AS REALIZADO_SOMA
    //     FROM
    //     (
    //        SELECT
    //     B.LOJA_OP  AS CDCON,
    //     -- B.DATA_VENDA,
    //     SUM(B.VLR_FIN_OP) AS VALOR_MANIPULADO
    //     FROM (
    //     SELECT
    //         F.CODIGO_EMPRESA_MOVIMENTO AS LOJA_OP,
    //         FC.ABERTURA_DT AS DATA_VENDA,
    //         SUM(F.LANCAMENTO_VLR * FF.INDICE_OP) AS VLR_FIN_OP
    //     FROM FINANCEIRO F
    //         INNER JOIN FINANCEIRO_CAIXA FC ON FC.CODIGO = F.CAIXA_CODIGO
    //         LEFT JOIN UTIL_FINANCEIRO_IFL(F.CODIGO_FIN) FF ON FF.TIPOATENDIMENTO_OP >= 0
    //     WHERE 1=1 ";

    //     // Filtros de ano e mês na consulta de VALOR_MANIPULADO
    //     if ($ano && $ano != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(YEAR FROM FC.ABERTURA_DT) = " . intval($ano);
    //     }
    //     if ($mes && $mes != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(MONTH FROM FC.ABERTURA_DT) = " . intval($mes);
    //     }

    //     $sql_consolidado .= "  AND F.CODIGO_FIN IS NOT NULL
    //     AND COALESCE(F.CAIXA_ALISUP, 0) = 0
    //     AND COALESCE(F.CAIXA_APAGAR, 0) = 0
    //     AND F.CANCELAMENTO_LJ IS NULL
    //     AND FF.TIPOATENDIMENTO_OP > 0
    //     GROUP BY F.CODIGO_EMPRESA_MOVIMENTO, FC.ABERTURA_DT
    //     ) B
    //     INNER JOIN EMPRESA E ON E.CODIGO = B.LOJA_OP
    //     GROUP BY B.LOJA_OP

    //    ) A
    //     LEFT JOIN
    //    (
    //        SELECT 
    //             A1.AVIADA_LJ AS cdconre,
    //             CAST(SUM(A3.valorvenda_desc) AS NUMERIC(18,2)) AS VALOR_MARCA_PROPRIA
    //        FROM atendimento_a3 A3
    //        INNER JOIN atendimento_a1 A1 ON A3.codigo_atend_a1 = A1.codigo
    //        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
    //        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'";

    //     if (!empty($operacoes) && $operacoes != "NULL") {
    //         $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
    //         // AND A1.codigo_tipooperacao NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)
    //     }

    //     $sql_consolidado .= "
    //            AND (A3.codigo_produto IN ('3024873', '3025044') OR EG.codigo_estoque_classificacao IN (300002))";

    //     // Filtros de ano e mês na consulta de VALOR_MARCA_PROPRIA
    //     if ($ano && $ano != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(YEAR FROM A1.entregue_dt) = " . intval($ano);
    //     }
    //     if ($mes && $mes != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(MONTH FROM A1.entregue_dt) = " . intval($mes);
    //     }

    //     $sql_consolidado .=
    //     "
    //        GROUP BY A1.AVIADA_LJ
    //    ) B ON A.cdcon = B.cdconre
    //           LEFT JOIN
    //    (
    //        SELECT 
    //             A1.AVIADA_LJ AS cdconre,
    //             CAST(SUM(A3.valorvenda_desc) AS NUMERIC(18,2)) AS VALOR_REVENDA
    //        FROM atendimento_a3 A3
    //        INNER JOIN atendimento_a1 A1 ON A3.codigo_atend_a1 = A1.codigo
    //        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
    //        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'";
    //     if (!empty($operacoes) && $operacoes != "NULL") {
    //         $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
    //         // AND A1.codigo_tipooperacao NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)
    //     }
    //     $sql_consolidado .= "
    //            AND A3.codigo_produto NOT IN ('3024873', '3025044')
    //            AND EG.codigo_estoque_classificacao NOT IN (300002)";

    //     // Filtros de ano e mês na consulta de VALOR_REVENDA
    //     if ($ano && $ano != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(YEAR FROM A1.entregue_dt) = " . intval($ano);
    //     }
    //     if ($mes && $mes != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(MONTH FROM A1.entregue_dt) = " . intval($mes);
    //     }

    //     $sql_consolidado .= "
    //        GROUP BY A1.AVIADA_LJ
    //    ) C ON COALESCE(A.cdcon, B.cdconre) = C.cdconre 
    //      WHERE 1=1";

    //     // Filtro de filial
    //     if ($filial && $filial != "Todos") {
    //         $sql_consolidado .= " AND COALESCE(A.cdcon, B.cdconre, C.cdconre) IN ($filial)";
    //     }

    //     $sql_consolidado .= " ORDER BY COALESCE(A.cdcon, B.cdconre, C.cdconre)";
    //     //echo $sql_consolidado; exit () ;
    //             // Executar a consulta
    //     $result = ibase_query($this->connection, $sql_consolidado);

    //     if (!$result) {
    //         die('Erro na consulta Firebird/InterBase: ' . ibase_errmsg());
    //     }

    //     return $result;
    // }

    // Método para obter o consolidado
    // public function getConsolidado($exibirManipulado, $exibirRevenda, $exibirMarcaPropria, $ano, $mes, $filial, $operacoes = null, $semana = null)
    // {
    //     if (!empty($semana)) {
    //         $meu_periodo = $this->configuracoes->getPeriodo();
    //         if ($meu_periodo == 'Semana') {
    //             $periodo_semana = $this->configuracoes->getPeriodoSemana($ano, $mes, $semana);
    //             if ($periodo_semana) {
    //                 $data_inicio = $periodo_semana['data_inicial'];
    //                 $data_fim    = $periodo_semana['data_final'];
    //             }
    //         }
    //     }
    //     // Consulta principal com a nova estrutura de dados
    //     $sql_consolidado = "
    //     SELECT
    //         COALESCE(A.cdcon, B.cdconre, C.cdconre) AS codigo_filial";

    //     if ($exibirManipulado) {
    //         $sql_consolidado .= ",
    //         COALESCE(A.VALOR_MANIPULADO, 0) AS REALIZADO_VALOR_MANIPULADO";
    //     }

    //     if ($exibirRevenda) {
    //         $sql_consolidado .= ",
    //         COALESCE(C.VALOR_REVENDA, 0) AS REALIZADO_VALOR_REVENDA";
    //     }

    //     if ($exibirMarcaPropria) {
    //         $sql_consolidado .= ",
    //         COALESCE(B.VALOR_MARCA_PROPRIA, 0) AS REALIZADO_VALOR_MARCA_PROPRIA";
    //     }

    //     $sql_consolidado .= ",
    //     " . ($exibirManipulado ? "COALESCE(A.VALOR_MANIPULADO, 0)" : "0") . " +
    //     " . ($exibirRevenda ? "COALESCE(C.VALOR_REVENDA, 0)" : "0") . " +
    //     " . ($exibirMarcaPropria ? "COALESCE(B.VALOR_MARCA_PROPRIA, 0)" : "0") . " AS REALIZADO_SOMA
    //     FROM
    //     (
    //         SELECT
    //             A1.codigo_empresa_padrao AS cdcon,
    //             CAST(COALESCE(SUM(A1.VALORVENDA_DESC), 0) AS NUMERIC(18,2)) AS VALOR_MANIPULADO
    //         FROM ATENDIMENTO_A1 A1
    //         LEFT JOIN UTIL_REL_AG1 (1) AG ON AG.AG1_OP > 0
    //         LEFT JOIN ATENDIMENTO_CF CF ON A1.CODIGO_ATEND_FL = CF.CODIGO_ATEND_FL AND CF.CANCELAMENTO_CF IS NULL
    //         LEFT JOIN MEDICO M ON M.CODIGO = A1.CODIGO_MEDICO
    //         LEFT JOIN MEDICO_CR CR ON CR.CODIGO = M.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 = 1";

    //     // Filtros de ano e mês na consulta de VALOR_MANIPULADO
    //     if ($ano && $ano != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(YEAR FROM A1.entregue_dt) = " . intval($ano);
    //     }
    //     if ($mes && $mes != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(MONTH FROM A1.entregue_dt) = " . intval($mes);
    //     }
    //     if (!empty($operacoes) && $operacoes != "NULL") {
    //         $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
    //     }
    //     if (!empty($periodo) && $periodo != "mes") {
    //         if ($periodo == 1) {
    //             $sql_consolidado .= " AND EXTRACT(DAY FROM  A1.entregue_dt) BETWEEN 1 AND 15";
    //         } elseif ($periodo == 2) {
    //             $sql_consolidado .= " AND EXTRACT(DAY FROM  A1.entregue_dt) > 15";
    //         }
    //     }
    //     if (!empty($semana)) {
    //         if ($semana != "mes") {
    //             $sql_consolidado .= " AND  A1.entregue_dt BETWEEN '$data_inicio' AND '$data_fim'";
    //         }
    //     }
    //     $sql_consolidado .= " GROUP BY A1.codigo_empresa_padrao
    //    ) A
    //     LEFT JOIN
    //    (
    //        SELECT 
    //             A1.AVIADA_LJ AS cdconre,
    //             CAST(SUM(A3.valorvenda_desc) AS NUMERIC(18,2)) AS VALOR_MARCA_PROPRIA
    //        FROM atendimento_a3 A3
    //        INNER JOIN atendimento_a1 A1 ON A3.codigo_atend_a1 = A1.codigo
    //        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
    //        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'";

    //     if (!empty($operacoes) && $operacoes != "NULL") {
    //         $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
    //         // AND A1.codigo_tipooperacao NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)
    //     }

    //     $sql_consolidado .= "
    //            AND (A3.codigo_produto IN ('3024873', '3025044') OR EG.codigo_estoque_classificacao IN (300002))";

    //     // Filtros de ano e mês na consulta de VALOR_MARCA_PROPRIA
    //     if ($ano && $ano != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(YEAR FROM A1.entregue_dt) = " . intval($ano);
    //     }
    //     if ($mes && $mes != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(MONTH FROM A1.entregue_dt) = " . intval($mes);
    //     }
    //     if (!empty($periodo) && $periodo != "mes") {
    //         if ($periodo == 1) {
    //             $sql_consolidado .= " AND EXTRACT(DAY FROM  A1.entregue_dt) BETWEEN 1 AND 15";
    //         } elseif ($periodo == 2) {
    //             $sql_consolidado .= " AND EXTRACT(DAY FROM  A1.entregue_dt) > 15";
    //         }
    //     }
    //     if (!empty($semana)) {
    //         if ($semana != "mes") {
    //             $sql_consolidado .= " AND  A1.entregue_dt BETWEEN '$data_inicio' AND '$data_fim'";
    //         }
    //     }
    //     $sql_consolidado .=
    //         "
    //        GROUP BY A1.AVIADA_LJ
    //    ) B ON A.cdcon = B.cdconre
    //           LEFT JOIN
    //    (
    //        SELECT 
    //             A1.AVIADA_LJ AS cdconre,
    //             CAST(SUM(A3.valorvenda_desc) AS NUMERIC(18,2)) AS VALOR_REVENDA
    //        FROM atendimento_a3 A3
    //        INNER JOIN atendimento_a1 A1 ON A3.codigo_atend_a1 = A1.codigo
    //        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
    //        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'";
    //     if (!empty($operacoes) && $operacoes != "NULL") {
    //         $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
    //         // AND A1.codigo_tipooperacao NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)
    //     }
    //     $sql_consolidado .= "
    //            AND A3.codigo_produto NOT IN ('3024873', '3025044')
    //            AND EG.codigo_estoque_classificacao NOT IN (300002)";

    //     // Filtros de ano e mês na consulta de VALOR_REVENDA
    //     if ($ano && $ano != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(YEAR FROM A1.entregue_dt) = " . intval($ano);
    //     }
    //     if ($mes && $mes != "Selecione") {
    //         $sql_consolidado .= " AND EXTRACT(MONTH FROM A1.entregue_dt) = " . intval($mes);
    //     }
    //     if (!empty($periodo) && $periodo != "mes") {
    //         if ($periodo == 1) {
    //             $sql_consolidado .= " AND EXTRACT(DAY FROM A1.entregue_dt) BETWEEN 1 AND 15";
    //         } elseif ($periodo == 2) {
    //             $sql_consolidado .= " AND EXTRACT(DAY FROM A1.entregue_dt) > 15";
    //         }
    //     }
    //     if (!empty($semana) && !empty($data_inicio) && !empty($data_fim)) {
    //         if ($semana != "mes") {
    //             $sql_consolidado .= " AND A1.entregue_dt BETWEEN '$data_inicio' AND '$data_fim'";
    //         }
    //     }
    //     $sql_consolidado .= "
    //        GROUP BY A1.AVIADA_LJ
    //    ) C ON COALESCE(A.cdcon, B.cdconre) = C.cdconre 
    //      WHERE 1=1";

    //     // Filtro de filial
    //     if ($filial && $filial != "Todos") {
    //         $sql_consolidado .= " AND COALESCE(A.cdcon, B.cdconre, C.cdconre) IN ($filial)";
    //     }

    //     $sql_consolidado .= " ORDER BY COALESCE(A.cdcon, B.cdconre, C.cdconre)";
    //     //echo $sql_consolidado; exit () ;
    //     // Executar a consulta
    //     $result = ibase_query($this->connection, $sql_consolidado);

    //     if (!$result) {
    //         die('Erro na consulta Firebird/InterBase: ' . ibase_errmsg());
    //     }

    //     return $result;
    // }

    // Método para obter o consolidado OTIMIZADO
    public function getConsolidado($exibirManipulado, $exibirRevenda, $exibirMarcaPropria, $ano, $mes, $filial, $operacoes = null, $periodo = 'mes', $semana = null)
    {
        // Aumenta o tempo limite do PHP para esta consulta específica (evita o erro de 120s)
        set_time_limit(300); 

        // --- 1. PREPARAÇÃO INTELIGENTE DAS DATAS (Para usar índices do banco) ---
        $data_inicio_sql = "";
        $data_fim_sql = "";
        

        // Herança da ANTIGA: Verifica se o usuário de fato escolheu um ano/mês ou deixou em "Selecione"
        $tem_filtro_mes_ano = ($ano && $ano != "Selecione" && $mes && $mes != "Selecione");

        if (!empty($semana) && $semana != "mes") {
            // Lógica de Semana (já existente)
            $meu_periodo = $this->configuracoes->getPeriodo();
            if ($meu_periodo == 'Semana') {
                $periodo_semana = $this->configuracoes->getPeriodoSemana($ano, $mes, $semana);
                if ($periodo_semana) {
                    $data_inicio_sql = $periodo_semana['data_inicial'];
                    $data_fim_sql    = $periodo_semana['data_final'];
                }
            }
        } elseif ($tem_filtro_mes_ano) {
            // Lógica de Mês/Quinzena (Só entra aqui se os dados não forem "Selecione")
            $ano = str_pad($ano, 4, '0', STR_PAD_LEFT);
            $mes = str_pad($mes, 2, '0', STR_PAD_LEFT);

            // Lógica de Mês/Período Otimizada
            $ultimo_dia = date("t", mktime(0, 0, 0, $mes, 1, $ano));
            
            $data_inicio_sql = "$ano-$mes-01";
            $data_fim_sql    = "$ano-$mes-$ultimo_dia";

            if (!empty($periodo) && $periodo != "mes") {
                if ($periodo == 1) {
                    $data_fim_sql = "$ano-$mes-15"; // 01 a 15
                } elseif ($periodo == 2) {
                    $data_inicio_sql = "$ano-$mes-16"; // 16 ao fim
                }
            }
        }

        // Limitar a data final até o dia anterior (Ontem)
        $data_ontem = date('Y-m-d', strtotime('-1 day'));
        if ($data_fim_sql > $data_ontem) {
            $data_fim_sql = $data_ontem;
        }
        
        // ---------------------------------------------------------------------

        // Consulta principal com a nova estrutura de dados
        $sql_consolidado = "
        SELECT
            COALESCE(A.cdcon, B.cdconre, C.cdconre) AS codigo_filial";

        if ($exibirManipulado) {
            $sql_consolidado .= ", COALESCE(A.VALOR_MANIPULADO, 0) AS REALIZADO_VALOR_MANIPULADO";
        }

        if ($exibirRevenda) {
            $sql_consolidado .= ", COALESCE(C.VALOR_REVENDA, 0) AS REALIZADO_VALOR_REVENDA";
        }

        if ($exibirMarcaPropria) {
            $sql_consolidado .= ", COALESCE(B.VALOR_MARCA_PROPRIA, 0) AS REALIZADO_VALOR_MARCA_PROPRIA";
        }

        $sql_consolidado .= ",
        " . ($exibirManipulado ? "COALESCE(A.VALOR_MANIPULADO, 0)" : "0") . " +
        " . ($exibirRevenda ? "COALESCE(C.VALOR_REVENDA, 0)" : "0") . " +
        " . ($exibirMarcaPropria ? "COALESCE(B.VALOR_MARCA_PROPRIA, 0)" : "0") . " AS REALIZADO_SOMA
        FROM
        (
            SELECT
                A1.codigo_empresa_padrao AS cdcon,
                CAST(COALESCE(SUM(A1.VALORVENDA_DESC), 0) AS NUMERIC(18,2)) AS VALOR_MANIPULADO
            FROM ATENDIMENTO_A1 A1
            LEFT JOIN UTIL_REL_AG1 (1) AG ON AG.AG1_OP > 0
            LEFT JOIN ATENDIMENTO_CF CF ON A1.CODIGO_ATEND_FL = CF.CODIGO_ATEND_FL AND CF.CANCELAMENTO_CF IS NULL
            LEFT JOIN MEDICO M ON M.CODIGO = A1.CODIGO_MEDICO
            LEFT JOIN MEDICO_CR CR ON CR.CODIGO = M.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 = 1";

        // Filtro por período usando range de datas (permite uso de índice)
        if ($data_inicio_sql && $data_fim_sql) {
             $sql_consolidado .= " AND A1.entregue_dt BETWEEN '$data_inicio_sql' AND '$data_fim_sql 23:59:59' ";
        }

        // Filtro de filial já dentro da subconsulta, para reduzir o volume
        if (!empty($filial) && $filial != "Todos") {
            $sql_consolidado .= " AND A1.codigo_empresa_padrao IN ($filial)";
        }

        if (!empty($operacoes) && $operacoes != "NULL") {
            $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
        }
        
        $sql_consolidado .= " GROUP BY A1.codigo_empresa_padrao
        ) A
        FULL OUTER JOIN
        (
            SELECT 
                A1.AVIADA_LJ AS cdconre,
                CAST(SUM(A3.valorvenda_desc) AS NUMERIC(18,2)) AS VALOR_MARCA_PROPRIA
            FROM atendimento_a3 A3
            INNER JOIN atendimento_a1 A1 ON A3.codigo_atend_a1 = A1.codigo
            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
            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'";

        if (!empty($operacoes) && $operacoes != "NULL") {
            $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
        }

           $sql_consolidado .= " AND (A3.codigo_produto IN ('3024873', '3025044') OR EG.codigo_estoque_classificacao IN (300002))";

           // Filtro por período usando range de datas
           if ($data_inicio_sql && $data_fim_sql) {
               $sql_consolidado .= " AND A1.entregue_dt BETWEEN '$data_inicio_sql' AND '$data_fim_sql 23:59:59' ";
           }

           // Filtro de filial também dentro da subconsulta de marca própria
           if (!empty($filial) && $filial != "Todos") {
              $sql_consolidado .= " AND A1.AVIADA_LJ IN ($filial)";
           }

        $sql_consolidado .=
            "
            GROUP BY A1.AVIADA_LJ
        ) B ON A.cdcon = B.cdconre
            FULL OUTER JOIN
        (
            SELECT 
                A1.AVIADA_LJ AS cdconre,
                CAST(SUM(A3.valorvenda_desc) AS NUMERIC(18,2)) AS VALOR_REVENDA
            FROM atendimento_a3 A3
            INNER JOIN atendimento_a1 A1 ON A3.codigo_atend_a1 = A1.codigo
            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
            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'";
        
        if (!empty($operacoes) && $operacoes != "NULL") {
            $sql_consolidado .= " AND A1.codigo_tipooperacao NOT IN ($operacoes)";
        }
        
        $sql_consolidado .= "
            AND A3.codigo_produto NOT IN ('3024873', '3025044')
            AND EG.codigo_estoque_classificacao NOT IN (300002)";

        // Filtro por período usando range de datas
        if ($data_inicio_sql && $data_fim_sql) {
             $sql_consolidado .= " AND A1.entregue_dt BETWEEN '$data_inicio_sql' AND '$data_fim_sql 23:59:59' ";
        }

        // Filtro de filial também dentro da subconsulta de revenda
        if (!empty($filial) && $filial != "Todos") {
            $sql_consolidado .= " AND A1.AVIADA_LJ IN ($filial)";
        }

        $sql_consolidado .= "
            GROUP BY A1.AVIADA_LJ
        ) C ON COALESCE(A.cdcon, B.cdconre) = C.cdconre 
          WHERE 1=1";

        // *** CORREÇÃO DO ERRO -104 (Token Unknown) ***
        // Só adiciona o IN se a variavel filial não estiver vazia e não for Todos
        if (!empty($filial) && $filial != "Todos") {
            $sql_consolidado .= " AND COALESCE(A.cdcon, B.cdconre, C.cdconre) IN ($filial)";
        }

        $sql_consolidado .= " ORDER BY COALESCE(A.cdcon, B.cdconre, C.cdconre)";
        
        // Debug caso precise:
        // echo $sql_consolidado; exit;

        // Executar a consulta
        $result = ibase_query($this->connection, $sql_consolidado);

        if (!$result) {
            die('Erro na consulta Firebird/InterBase: ' . ibase_errmsg());
        }

        return $result;
    }

    public function getTerceiros($ano, $mes, $periodo, $filial, $semana)
    {
        if (!empty($semana)) {
            $meu_periodo = $this->configuracoes->getPeriodo();
            if ($meu_periodo == 'Semana') {
                $periodo_semana = $this->configuracoes->getPeriodoSemana($ano, $mes, $semana);
                if ($periodo_semana) {
                    $data_inicio = $periodo_semana['data_inicial'];
                    $data_fim    = $periodo_semana['data_final'];
                }
            }
        }
        // Construção da consulta SQL
        $sql_terceiros = "SELECT SUM(t.valor) as valor_terceiros 
                          FROM pedido_terceiro as t
                          INNER JOIN funcionarios as f ON t.ID_FUNCIONARIO = f.id_funcionario
                          WHERE 1=1";

        // Aplicar filtros de ano e mês
        if ($ano && $ano != "Selecione") {
            $sql_terceiros .= " AND EXTRACT(YEAR FROM t.data_lancamento) = " . intval($ano);
        }
        if ($mes && $mes != "Selecione") {
            $sql_terceiros .= " AND EXTRACT(MONTH FROM t.data_lancamento) = " . intval($mes);
        }

        // Aplicar filtro de período
        if (!empty($periodo) && $periodo != "mes") {
            if ($periodo == 1) {
                $sql_terceiros .= " AND EXTRACT(day FROM t.data_lancamento) <= 15";
            } elseif ($periodo == 2) {
                $sql_terceiros .= " AND EXTRACT(day FROM t.data_lancamento) > 15";
            }
        }
        if (!empty($semana)) {
            if ($semana != "mes") {
                $sql_terceiros .= " AND t.data_lancamento BETWEEN '$data_inicio' AND '$data_fim'";
            }
        }
        if ($filial && $filial != "Todos") {
            $sql_terceiros .= " AND t.cod_filial IN ($filial)";
        }

        // Executar a consulta SQL
        $result_terceiros = $this->connectionmysql->query($sql_terceiros);

        // Verificar se a consulta foi bem-sucedida
        if ($result_terceiros) {
            // Inicializar a variável para armazenar o total de terceiros
            $total_terceiros = 0;

            // Verificar se há linhas retornadas pela consulta
            if ($result_terceiros->num_rows > 0) {
                // Loop pelas linhas do resultado
                while ($row = $result_terceiros->fetch_assoc()) {
                    // Somar o valor da coluna 'valor_terceiros' ao total
                    $total_terceiros += $row['valor_terceiros'];
                }
            } else {
                // Nenhum resultado encontrado
                echo "Nenhum resultado encontrado.";
            }

            // Retornar o valor total de terceiros
            return $total_terceiros;
        } else {
            // Houve um erro ao executar a consulta
            die('Erro na consulta: ' . $this->connectionmysql->error);
        }
    }

    public function getTerceirosDetalhadoVendedor($ano, $mes, $periodo, $filial, $cod_vendedor = null, $semana, $data_inicio, $data_fim)
    {
        // Construção da consulta SQL
        $sql_terceiros = "SELECT f.nome, SUM(t.valor) as valor_terceiros, t.cod_filial, f.cod_fcerta
                      FROM pedido_terceiro as t
                      INNER JOIN funcionarios as f ON t.ID_FUNCIONARIO = f.id_funcionario
                      WHERE 1=1";

        // Aplicar filtros de ano e mês
        if ($ano && $ano != "Selecione") {
            $sql_terceiros .= " AND EXTRACT(YEAR FROM t.data_lancamento) = " . intval($ano);
        }
        if ($mes && $mes != "Selecione") {
            $sql_terceiros .= " AND EXTRACT(MONTH FROM t.data_lancamento) = " . intval($mes);
        }

        // Aplicar filtro de período
        if (!empty($periodo) && $periodo != "mes") {
            if ($periodo == 1) {
                $sql_terceiros .= " AND EXTRACT(day FROM t.data_lancamento) <= 15";
            } elseif ($periodo == 2) {
                $sql_terceiros .= " AND EXTRACT(day FROM t.data_lancamento) > 15";
            }
        }
        if (!empty($semana) && $semana != 'mes' && !empty($data_inicio) && !empty($data_fim)) {
            $sql_terceiros .= " AND  t.data_lancamento BETWEEN '$data_inicio' AND '$data_fim'";
        }

        if ($filial && $filial != "Todos") {
            $sql_terceiros .= " AND t.cod_filial IN ($filial)";
        }

        // Aplicar filtro de vendedor (cod_vendedor)
        if (!empty($cod_vendedor)) {
            $sql_terceiros .= " AND f.cod_fcerta IN ($cod_vendedor)";
        }

        // Adicionar a cláusula GROUP BY
        $sql_terceiros .= " GROUP BY f.nome, t.cod_filial, f.cod_fcerta";

        // Executar a consulta SQL
        $result_terceiros = $this->connectionmysql->query($sql_terceiros);

        return $result_terceiros;
    }

    // Método para obter cidades das filiais
    public function getCidadesFiliais()
    {
        $query_cidade_filial = " select
        DISTINCT
        EP.codigo_cidadeestado ,
        CE.NOMECIDADE as MUNIC
        from EMPRESA EP
        INNER JOIN CADASTRO_ENDERECO CA ON CA.codigo_cadastro = EP.codigo
        inner join CIDADEESTADO CE on CA.codigo_cidadeestado = CE.CODIGO
        where CA.tipo_cadastro = 5
        order by EP.CODIGO";

        $result_cidade_filial = ibase_query($this->connection, $query_cidade_filial);

        if (!$result_cidade_filial) {
            die('Erro na consulta: ' . ibase_errmsg());
        }

        $cidadefiliais = [];
        while ($row = ibase_fetch_assoc($result_cidade_filial)) {
            $cidadefiliais[] = $row;
        }

        return $cidadefiliais;
    }

    // Método para obter ID da cidade
    public function getIdCidade($cidade)
    {
        $query_idcidade = "SELECT id_cidade FROM cidade WHERE nome_cidade = ?";
        $stmt = $this->connectionmysql->prepare($query_idcidade);
        $stmt->bind_param("s", $cidade);
        $stmt->execute();
        $result = $stmt->get_result();
        $row = $result->fetch_assoc();
        return $row ? $row["id_cidade"] : null;
    }


    public function getMetasVendedores($exibirManipulado, $exibirRevenda, $exibirMarcaPropria, $ano, $mes, $periodo, $filial, $semana)
    {
        $sql_meta = "SELECT 
        mes as MES, 
        ano as ANO, 
        codigo_filial, 
        codigo_vendedor AS CODIGO_FUNCIONARIO,";

        // Condicional para META_VALOR_REVENDA
        if ($exibirRevenda) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 1 
                    THEN COALESCE(valor_meta, 0) + COALESCE(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_REVENDA,";
            } elseif ($periodo == 1) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 1 
                    THEN COALESCE(valor_meta, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_REVENDA,";
            } elseif ($periodo == 2) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 1 
                    THEN COALESCE(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_REVENDA,";
            }
        }

        // Condicional para META_VALOR_MANIPULADO
        if ($exibirManipulado) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 2 
                    THEN COALESCE(valor_meta, 0) + COALESCE(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MANIPULADO,";
            } elseif ($periodo == 1) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 2 
                    THEN COALESCE(valor_meta, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MANIPULADO,";
            } elseif ($periodo == 2) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 2 
                    THEN COALESCE(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MANIPULADO,";
            }
        }

        // Condicional para META_VALOR_MARCA_PROPRIA
        if ($exibirMarcaPropria) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 3 
                    THEN COALESCE(valor_meta, 0) + COALESCE(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MARCA_PROPRIA,";
            } elseif ($periodo == 1) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 3 
                    THEN COALESCE(valor_meta, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MARCA_PROPRIA,";
            } elseif ($periodo == 2) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 3
                    THEN COALESCE(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MARCA_PROPRIA,";
            }
        }


        // Condicionalmente adicionar à soma total com base nas opções selecionadas
        $somaCondition = [];

        if ($exibirManipulado) {
            $somaCondition[] = "1"; // codigo_meta = 1
        }
        if ($exibirRevenda) {
            $somaCondition[] = "2"; // codigo_meta = 2
        }
        if ($exibirMarcaPropria) {
            $somaCondition[] = "3"; // codigo_meta = 3
        }

        if (!empty($somaCondition)) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta IN (" . implode(",", $somaCondition) . ")
                    THEN valor_meta + valor_meta_2
                    ELSE 0 
                END
            ) AS META_SOMA";
            } elseif ($periodo == 1) {
                $sql_meta .= "SUM(
                CASE 
                    WHEN codigo_meta IN (" . implode(",", $somaCondition) . ")
                    THEN 
                        CASE 
                            WHEN IFNULL(valor_meta, 0) <> 0 
                            THEN valor_meta 
                            ELSE 0
                        END
                    ELSE 0 
                END
            ) AS META_SOMA";
            } elseif ($periodo == 2) {
                $sql_meta .= "SUM(
                CASE 
                    WHEN codigo_meta IN (" . implode(",", $somaCondition) . ")
                    THEN 
                        CASE 
                            WHEN IFNULL(valor_meta_2, 0) <> 0 
                            THEN valor_meta_2 
                            ELSE 0 
                        END
                    ELSE 0 
                END
            ) AS META_SOMA";
            }
            //  else {
            //     $sql_meta .= "0 AS META_SOMA"; // Define 0 se nenhuma opção for exibida
            // }
        }

        $sql_meta .= "
        FROM define_metas
        WHERE tipo_meta = 2";

        if ($ano && $ano !== "Todos") {
            $sql_meta .= " AND define_metas.ano = " . intval($ano);
        }

        if ($mes && $mes !== "Todos") {
            $sql_meta .= " AND define_metas.mes = " . intval($mes);
        }

        if ($filial && $filial !== "Todos") {
            $sql_meta .= " AND define_metas.codigo_filial IN ($filial)";
        }
        if (!empty($semana)) {
            $sql_meta .= " AND define_metas.semana IS NOT NULL";
            if ($semana !== 'mes') {
                $sql_meta .= " AND define_metas.semana IN($semana)";
            }
        } else {
            $sql_meta .= " AND define_metas.semana IS NULL";
        }

        $sql_meta .= " GROUP BY mes, ano, codigo_filial, codigo_vendedor";

        //echo $sql_meta;

        $resultmeta = $this->connectionmysql->query($sql_meta);

        if (!$resultmeta) {
            die('Erro na consulta MySQL: ' . $this->connectionmysql->error);
        }

        // Busque todos os registros
        $metas = [];
        while ($row = $resultmeta->fetch_assoc()) {
            $metas[] = $row;
        }
        // Retorna o resultado da consulta
        return $metas;
    }

    public function getMetasVendedoresDetalhes($exibirManipulado, $exibirRevenda, $exibirMarcaPropria, $cod_vendedor, $ano, $mes, $periodo, $filial, $semana)
    {
        //QUERY META - MYSQL
        $sql_meta = "SELECT 
        mes AS MES, 
        ano AS ANO, 
        codigo_filial, 
        codigo_vendedor AS CODIGO_FUNCIONARIO,";

        // Condicional para META_VALOR_REVENDA
        if ($exibirRevenda) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 1 
                    THEN valor_meta + IFNULL(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_REVENDA,";
            } elseif ($periodo == 1 || $periodo == 2) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 1 
                    THEN 
                        CASE 
                            WHEN $periodo = 1 AND IFNULL(valor_meta, 0) <> 0 
                            THEN valor_meta 
                            WHEN $periodo = 2 AND IFNULL(valor_meta_2, 0) <> 0 
                            THEN valor_meta_2
                            ELSE valor_meta / 2  -- Aplica divisão apenas quando necessário
                        END
                    ELSE 0 
                END
            ) AS META_VALOR_REVENDA,";
            }
        } else {
            $sql_meta .= "0 AS META_VALOR_REVENDA,"; // Define 0 se não for exibido
        }

        // Condicional para META_VALOR_MANIPULADO
        if ($exibirManipulado) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 2 
                    THEN valor_meta + IFNULL(valor_meta_2, 0) 
                    ELSE 0 
                END
            ) AS META_VALOR_MANIPULADO,";
            } elseif ($periodo == 1 || $periodo == 2) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 2 
                    THEN 
                        CASE 
                            WHEN $periodo = 1 AND IFNULL(valor_meta, 0) <> 0 
                            THEN valor_meta 
                            WHEN $periodo = 2 AND IFNULL(valor_meta_2, 0) <> 0 
                            THEN valor_meta_2
                            ELSE valor_meta / 2  -- Aplica divisão apenas quando necessário
                        END
                    ELSE 0 
                END
            ) AS META_VALOR_MANIPULADO,";
            }
        } else {
            $sql_meta .= "0 AS META_VALOR_MANIPULADO,"; // Define 0 se não for exibido
        }

        // Condicional para META_VALOR_MARCA_PROPRIA
        if ($exibirMarcaPropria) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 3 
                    THEN valor_meta + IFNULL(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_VALOR_MARCA_PROPRIA,";
            } elseif ($periodo == 1 || $periodo == 2) {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta = 3 
                    THEN 
                        CASE 
                            WHEN $periodo = 1 AND IFNULL(valor_meta, 0) <> 0 
                            THEN valor_meta 
                            WHEN $periodo = 2 AND IFNULL(valor_meta_2, 0) <> 0 
                            THEN valor_meta_2
                            ELSE valor_meta / 2  -- Aplica divisão apenas quando necessário
                        END
                    ELSE 0 
                END
            ) AS META_VALOR_MARCA_PROPRIA,";
            }
        } else {
            $sql_meta .= "0 AS META_VALOR_MARCA_PROPRIA,"; // Define 0 se não for exibido
        }

        // Condicionalmente adicionar à soma total com base nas opções selecionadas
        $somaCondition = [];

        if ($exibirManipulado) {
            $somaCondition[] = "2"; // codigo_meta = 2
        }
        if ($exibirRevenda) {
            $somaCondition[] = "1"; // codigo_meta = 1
        }
        if ($exibirMarcaPropria) {
            $somaCondition[] = "3"; // codigo_meta = 3
        }

        if (!empty($somaCondition)) {
            if (empty($periodo) || $periodo === "mes") {
                $sql_meta .= "
            SUM(
                CASE 
                    WHEN codigo_meta IN (" . implode(",", $somaCondition) . ")
                    THEN valor_meta + IFNULL(valor_meta_2, 0)
                    ELSE 0 
                END
            ) AS META_SOMA";
            } elseif ($periodo == 1 || $periodo == 2) {
                $sql_meta .= "SUM(
                CASE 
                    WHEN codigo_meta IN (" . implode(",", $somaCondition) . ")
                    THEN 
                        CASE 
                            WHEN $periodo = 1 AND IFNULL(valor_meta, 0) <> 0 
                            THEN valor_meta 
                            WHEN $periodo = 2 AND IFNULL(valor_meta_2, 0) <> 0 
                            THEN valor_meta_2 
                            ELSE valor_meta / 2  -- Aplica divisão apenas quando necessário
                        END
                    ELSE 0 
                END
            ) AS META_SOMA";
            }
        } else {
            $sql_meta .= "0 AS META_SOMA"; // Define 0 se nenhuma opção for exibida
        }

        $sql_meta .= "
        FROM define_metas
        WHERE tipo_meta = 2 AND codigo_vendedor = $cod_vendedor";

        if ($ano && $ano !== "Todos") {
            $sql_meta .= " AND define_metas.ano = " . intval($ano);
        }

        if ($mes && $mes !== "Todos") {
            $sql_meta .= " AND define_metas.mes = " . intval($mes);
        }

        if ($filial && $filial !== "Todos") {
            $sql_meta .= " AND define_metas.codigo_filial IN ($filial)";
        }
        if (!empty($semana)) {
            $sql_meta .= " AND define_metas.semana IS NOT NULL";
            if ($semana !== 'mes') {
                $sql_meta .= " AND define_metas.semana IN($semana)";
            }
        } else {
            $sql_meta .= " AND define_metas.semana IS NULL";
        }
        $sql_meta .= " GROUP BY mes, ano, codigo_filial, codigo_vendedor";

        //echo $sql_meta; exit;

        $resultmeta = $this->connectionmysql->query($sql_meta);

        if (!$resultmeta) {
            die('Erro na consulta MySQL: ' . $this->connectionmysql->error);
        }
        return $resultmeta;
    }
}
