<?
require_once 'connect.php';
require_once 'messages.php';
require_once 'usuario.php';

/* Criado a Classe */
class ReportAnalitico{

  public function __construct(){
      $this->dt_inicio= '01/01/1900';
      $this->dt_final = '01/01/1900';

      $this->id_forma = '';
      $this->ds_forma = 'Todas';

      $this->id_tipo = '4';
      $this->ds_tipo = 'Todas';

      $usuario_list = getLoggedUser();
      $this->id_usuario=$usuario_list['id'];
      $this->id_unidade=$usuario_list['unidade'];
  }

  // métodos mágicos get e set
  public function __set($atrib, $value){
    $this->$atrib = $value;
  }

  public function __get($atrib){
    return $this->$atrib;
  }

  function getSQL($consulta){
  global $conexao;

    $ar_retorno = array();
    $resultado = mysqli_query($conexao, $consulta) or die ($erro = mysqli_error($conexao));
    	if (mysqli_num_rows($resultado)>0) {
          while ($registro = mysqli_fetch_assoc($resultado)){
            array_push($ar_retorno, $registro);
          }
    }
    return $ar_retorno;
  }

  function getFormaPagamento(){
    if($this->id_forma!=''){
      $sql  = "select ds_forma from erpc_dom_forma_pagamento where id= $this->id_forma";

    	$resultado = $this->getSQL($sql);

    	if (Count($resultado)>0) {
          $this->ds_forma = $resultado[0]['ds_forma'];
    	}
    }
    return $this->ds_forma;
  }

  function getTipoVenda(){
    switch ($this->id_tipo) {
      case 1: // Cupom
        $this->ds_tipo = "Cupom";
        break;
        
      case 2: // Cupom
        $this->ds_tipo = "Nota";
        break;

      case 3:
        $this->ds_tipo = "Recibo";
        break;

      default:
        # code...
        break;
    }
  }

  function formatarData($value){
    $dia = substr($value, 0, 2);
    $mes = substr($value, 3, 2);
    $ano = substr($value, -4);

    $dt_format = "$ano-$mes-$dia";

    return $dt_format;
  }

  function getMontarSQL(){
    $dt_inicio = $this->formatarData($this->dt_inicio);
    $dt_final  = $this->formatarData($this->dt_final );

    

    /* Cupom são pedidos faturados com a data de faturamento no período informado */
    $sql_cupom = "select    date_format(dt_emissao, '%d/%m/%Y') as dt_emissao
                            ,ven.id_pedido_original as pedido
                            ,ven.vl_total_pedido as vl_total
                            ,sai.cd_status_nfe   as status
                            ,'Cupom' as tipo
                            ,pag.ds_forma
                          from erpc_pedidos_venda_liberados ven
                          left join erpc_pedidos_documentos_saida pds on ven.id = pds.id_pedido_liberados
                          left join erpc_dom_forma_pagamento pag on ven.id_forma_pagamento = pag.id
                          join erpc_documentos_saida sai on pds.id_documento_saida = sai.id
                          where sai.id_unidade=$this->id_unidade
                        	and sai.st_ativo = 1
                            and sai.cd_status_nfe in ('06000','07000')
                            and date_format(dt_emissao, '%Y-%m-%d') between '$dt_inicio' and '$dt_final 23:59' ";//modificação Amanda

    /* Notas são pedidos faturados com a data de faturamento no período informado */
    $sql_nota = "SELECT 	date_format(dt_emissao, '%d/%m/%Y') as dt_emissao
                    		,ven.id_pedido_original as pedido
                            ,ven.vl_total_pedido as vl_total
                            ,sai.cd_status_nfe	as status 
                            ,'Nota' as tipo
                            ,pag.ds_forma
                       from erpc_pedidos_venda_liberados as ven
                       		left join erpc_pedidos_documentos_saida pds on pds.id_pedido_liberados = ven.id
                            left join erpc_dom_forma_pagamento pag on pag.id = ven.id_forma_pagamento
                            inner join erpc_documentos_saida sai on sai.id = pds.id_documento_saida
                       where sai.id_unidade=$this->id_unidade
                       		and sai.st_ativo = 1
                            and sai.cd_status_nfe in ('100','101')
                            and date_format(dt_emissao, '%Y-%m-%d') between '$dt_inicio' and '$dt_final 23:59' ";
                            
    /* Recibos são pedidos não faturados liberados dentre um período */
    $sql_recibo = "select    date_format(dh_liberacao, '%d/%m/%Y') as dt_emissao
                            ,ven.id_pedido_original as pedido
                            ,ven.vl_total_pedido as vl_total
                            ,ven.st_ativo   as status
                            ,'Recibo'               as tipo  
                            ,pag.ds_forma
                  from erpc_pedidos_venda_liberados ven
                  inner join erpc_dom_forma_pagamento pag on ven.id_forma_pagamento = pag.id
                  where ven.id_unidade=$this->id_unidade
                    and ven.id_status_pedido = 8
                	and dh_liberacao between '$dt_inicio' and '$dt_final 23:59'
                	and ven.id not in (select id_pedido_liberados from erpc_pedidos_documentos_saida) ";

    /* Se informou a Forma de Pagamento :*/
    if($this->id_forma!=''){
      $sql_recibo.= " and pag.id = $this->id_forma";
      $sql_cupom .= " and pag.id = $this->id_forma";
	  $sql_nota  .= " and pag.id = $this->id_forma";
    }

    /* Monta o SQL a ser executado */
    $sql = '';

    if($this->id_tipo=='4'){
      $sql  = $sql_recibo;
      $sql .= " union all " . $sql_cupom;
      $sql .= " union all " . $sql_nota;

    }else{
      if($this->id_tipo == '1'){
        $sql = $sql_cupom;
      }else if($this->id_tipo=='2'){
        $sql = $sql_nota;
      }else if($this->id_tipo=='3'){
        $sql = $sql_recibo;
      }
    }
    $sql .= " order by pedido";

    $this->sql = $sql;
    /*
    echo "<pre>";
    echo "<br><br>$sql<br><br>";
    echo "</pre>";
    exit;
    */
    return $sql;
  }

  /* Retorna um Array com Todas as Vendas de acordo com o Filtro informado */
  function getCapturarVendas(){
    $this->getFormaPagamento();
    $this->getTipoVenda();

    $consulta= $this->getMontarSQL();  // Monta a String para a execução no BD

    $result  = $this->getSQL($consulta);        // Executa a Instrução no BD
    return $result;
  }
}

?>
