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

class ConsultaLoja
{

    private $connectionmysql;
    private $connection;

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


    public function LojaTotal($dataInicial, $dataFinal, $tipo, $filial)
    {


        $sql_consolidado = "SELECT
        COALESCE(A.cdcon, B.cdconre, C.cdconre) AS codigo_filial,
        CASE WHEN '$tipo' = 'Manipulado' OR '$tipo' = 'Todos' THEN COALESCE(A.VALOR_MANIPULADO, 0) ELSE 0 END AS REALIZADO_VALOR_MANIPULADO,
        CASE WHEN '$tipo' = 'Marca Propria' OR '$tipo' = 'Todos' THEN COALESCE(B.VALOR_MARCA_PROPRIA, 0) ELSE 0 END AS REALIZADO_VALOR_MARCA_PROPRIA,
        CASE WHEN '$tipo' = 'Revenda' OR '$tipo' = 'Todos' THEN COALESCE(C.VALOR_REVENDA, 0) ELSE 0 END AS REALIZADO_VALOR_REVENDA,
        CASE 
            WHEN '$tipo' = 'Manipulado' THEN COALESCE(A.VALOR_MANIPULADO, 0)
            WHEN '$tipo' = 'Marca Propria' THEN COALESCE(B.VALOR_MARCA_PROPRIA, 0)
            WHEN '$tipo' = 'Revenda' THEN COALESCE(C.VALOR_REVENDA, 0)
            ELSE COALESCE(A.VALOR_MANIPULADO, 0) + COALESCE(C.VALOR_REVENDA, 0) + COALESCE(B.VALOR_MARCA_PROPRIA, 0)
        END 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";

        if ($dataInicial && $dataFinal) {
            $sql_consolidado .= "AND CAST(A1.entregue_dt AS DATE) BETWEEN '$dataInicial' AND '$dataFinal'";
        }
        $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'
               AND (A3.codigo_produto IN ('3024873', '3025044') OR EG.codigo_estoque_classificacao IN (300002))";

        if ($dataInicial && $dataFinal) {
            $sql_consolidado .= " AND CAST(A1.entregue_dt AS DATE) BETWEEN '$dataInicial' AND '$dataFinal'";
        }
        $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'
               AND A3.codigo_produto NOT IN ('3024873', '3025044')
               AND EG.codigo_estoque_classificacao NOT IN (300002)";

        if ($dataInicial && $dataFinal) {
            $sql_consolidado .= " AND CAST(A1.entregue_dt AS DATE) BETWEEN '$dataInicial' AND '$dataFinal'";
        }
        $sql_consolidado .= "
        GROUP BY A1.AVIADA_LJ) C ON COALESCE(A.cdcon, B.cdconre) = C.cdconre
        WHERE 1=1";

        if ($filial && $filial != "Todos") {
            if (!is_array($filial)) {
                $filial = explode(',', $filial);
            }
            $filial = implode(',', array_map('intval', $filial));
            $sql_consolidado .= " AND COALESCE(A.cdcon, B.cdconre, C.cdconre) IN ($filial)";
        }


        $sql_consolidado .= " ORDER BY COALESCE(A.cdcon, B.cdconre, C.cdconre)";

        // Executar a consulta
        try {
            $result = ibase_query($this->connection, $sql_consolidado);
            if (!$result) {
                return false;
            }
            return $result;
        } catch (Exception $e) {
            return false;
        }
    }
}
