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

class ConsultaCaixa {
    
    private $connection;

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

    public function getDetalhesManipulado($datainicio, $datafinal, $filial, $cdfun = null)
    {
        // Query baseada na qry_manipulado do caixa_vendedor.php
        $sql = "SELECT 
                    A1.CODIGO_EMPRESA_PADRAO AS CDFIL, 
                    A1.CODIGO AS NRCPM, 
                    CAST(COALESCE(SUM(A2.VALORFORMULA_VENDA_DESC),0) AS NUMERIC(18,2)) AS SOMA
                FROM ATENDIMENTO_A2 A2
                INNER JOIN ATENDIMENTO_A1 A1 ON A2.CODIGO_ATEND_A1 = A1.CODIGO
                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 ? AND ?
                AND A1.CODIGO_EMPRESA_PADRAO IN ($filial)
                AND IIF(A1.STATUS_MOV = 0, A1.CADASTRO_CF, A1.AVIADA_CF) = ?
                GROUP BY A1.CODIGO_EMPRESA_PADRAO, A1.CODIGO";

        $stmt = @ibase_prepare($this->connection, $sql);
        if (!$stmt) {
            die('Erro no prepare getDetalhesManipulado: ' . ibase_errmsg());
        }
        
        $queryResult = @ibase_execute($stmt, $datainicio, $datafinal, $cdfun);

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

        $result = [];
        while ($row = ibase_fetch_assoc($queryResult)) {
            $result[] = $row;
        }

        return $result;
    }

    public function getDetalhesRevenda($datainicio, $datafinal, $filial, $cdfun = null)
    {
        // Query baseada na qry_revenda do caixa_vendedor.php
        $sql = "SELECT 
                    A1.CODIGO_EMPRESA_PADRAO AS CDFIL, 
                    A1.CODIGO AS NRCPM, 
                    CAST(SUM(A3.VALORVENDA_DESC) AS NUMERIC(18,2)) AS SOMA
                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
                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 ? AND ?
                AND A1.CODIGO_EMPRESA_PADRAO IN ($filial)
                AND IIF(AG.AG1_OP = 1, A1.CODIGO_FUNCIONARIO_COMISSAO, A1.AVIADA_CF) = ?
                GROUP BY A1.CODIGO_EMPRESA_PADRAO, A1.CODIGO";

        $stmt = @ibase_prepare($this->connection, $sql);
        if (!$stmt) {
            die('Erro no prepare getDetalhesRevenda: ' . ibase_errmsg());
        }

        $queryResult = @ibase_execute($stmt, $datainicio, $datafinal, $cdfun);

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

        $result = [];
        while ($row = ibase_fetch_assoc($queryResult)) {
            $result[] = $row;
        }

        return $result;
    }

    public function getDetalhesMarca($datainicio, $datafinal, $filial, $cdfun = null)
    {
        // Query baseada na qry_marca do caixa_vendedor.php
        $sql = "SELECT 
                    A1.CODIGO_EMPRESA_PADRAO AS CDFIL, 
                    A1.CODIGO AS NRCPM, 
                    CAST(SUM(A3.VALORVENDA_DESC) AS NUMERIC(18,2)) AS SOMA
                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
                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 ? AND ?
                AND A1.CODIGO_EMPRESA_PADRAO IN ($filial)
                AND IIF(AG.AG1_OP = 1, A1.CODIGO_FUNCIONARIO_COMISSAO, A1.AVIADA_CF) = ?
                GROUP BY A1.CODIGO_EMPRESA_PADRAO, A1.CODIGO";

        $stmt = @ibase_prepare($this->connection, $sql);
        if (!$stmt) {
            die('Erro no prepare getDetalhesMarca: ' . ibase_errmsg());
        }

        $queryResult = @ibase_execute($stmt, $datainicio, $datafinal, $cdfun);

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

        $result = [];
        while ($row = ibase_fetch_assoc($queryResult)) {
            $result[] = $row;
        }

        return $result;
    }
}
?>