<?php

	include_once("config.php");
  require_once("./phone_gap/dao/ConfigDAO.class.php");

  function flexacumulado ($codvendedor) {
    $configdao = new ConfigDAO();
    if ($configdao->getDisponibilizar()->getvendAcumFlex()) {
      $queryFlex = sqlvendedores($codvendedor);

      $queryFlex = ibase_query($queryFlex) or die(ibase_errmsg());
      while($rowFlex = ibase_fetch_object($queryFlex)) {
        $queryFlex2 = "select CODVENDEDOR, NRO, VALORBONIF, VALOR, ATUAL_AUTOM_FLEXBONIF ".
                  "from VENDEDORES_FLEX_MENSAL ".
                  "where CODVENDEDOR = ".$codvendedor.
                  " and PADRAO_PEDIDO = '".$rowFlex->PADRAO_PEDIDO."' ".
                  " and ANO = ".$rowFlex->ANO.
                  " and MES = ".$rowFlex->MES;
        $queryFlex2 = ibase_query($queryFlex2) or die(ibase_errmsg());
        $queryFlex2 = ibase_fetch_object($queryFlex2);
        //Módulo para iniciar o mês com flex zerado
        if ($configdao->getDisponibilizar()->getVirarSaldoFlexMesZerado_Negativo() && $rowFlex->VALOR > 0)
          $rowFlex->VALOR = 0;
        if ($configdao->getDisponibilizar()->getVirarSaldoFlexMesZerado_Negativo() && $rowFlex->VALORBONIF > 0)
          $rowFlex->VALORBONIF = 0;
        //Não existe o registro na VENDEDORES_FLEX_MENSAL, inserir

        if ($queryFlex2 == null) {
          $queryFlex3 = "insert into VENDEDORES_FLEX_MENSAL (CODVENDEDOR, NRO, MES, ANO, VALORBONIF, VALOR, PADRAO_PEDIDO, ATUAL_AUTOM_FLEXBONIF) values ".
                    "(".$codvendedor.", (select coalesce(max(NRO),0) + 1 from VENDEDORES_FLEX_MENSAL where CODVENDEDOR = ".$codvendedor."), ".
                    $rowFlex->MES.", ".
                    $rowFlex->ANO.", ".
                    $rowFlex->VALORBONIF.", ".
					$rowFlex->VALOR.", '".
                    $rowFlex->PADRAO_PEDIDO."', 'T')";
          $queryFlex3 = ibase_query($queryFlex3) or die(ibase_errmsg());
        //Caso alterou alguma coisa no saldo do Mês anterior então alterar
        } else if ($queryFlex2->ATUAL_AUTOM_FLEXBONIF == 'T' && ($queryFlex2->VALORBONIF != $rowFlex->VALORBONIF or $queryFlex2->VALOR != $rowFlex->VALOR)) {
          $queryFlex3 = "update VENDEDORES_FLEX_MENSAL set VALORBONIF = ".$rowFlex->VALORBONIF.", VALOR = ".$rowFlex->VALOR.
                " where CODVENDEDOR = ".$codvendedor.
                " and PADRAO_PEDIDO = '".$rowFlex->PADRAO_PEDIDO."' ".
                " and ANO = ".$rowFlex->ANO.
                " and MES = ".$rowFlex->MES;
          $queryFlex3 = ibase_query($queryFlex3) or die(ibase_errmsg());
        }
      }
    }
  }

  function sqlvendedores($codvendedor, $mesatual = "F") {
     if ($mesatual == "T")
       $sql =
         "SELECT extract(month from current_date) MESATUAL, extract(year from current_date) ANOATUAL, ".
         "extract(month from current_date) MES1, extract(year from  current_date) ANO1, ".
         "extract(month from DATEADD(month, +1, current_date)) MES2, extract(year from  DATEADD(month, +1, current_date)) ANO2 ".
         "FROM RDB\$DATABASE ";
     else
       $sql =
         "SELECT extract(month from current_date) MESATUAL, extract(year from current_date) ANOATUAL, ".
         "extract(month from DATEADD(month, -1, current_date)) MES1, extract(year from  DATEADD(month, -1, current_date)) ANO1, ".
         "extract(month from current_date) MES2, extract(year from  current_date) ANO2 ".
         "FROM RDB\$DATABASE ";
     $query = ibase_query($sql) or die(ibase_errmsg());
     $query = ibase_fetch_object($query);
     $MESATUAL = $query->MESATUAL;
     $ANOATUAL = $query->ANOATUAL;
     $MES1 = $query->MES1;
     $ANO1 = $query->ANO1;
     $MES2 = $query->MES2;
     $ANO2 = $query->ANO2;
     $sql =
          "select\n".
          "S.CODVENDEDOR,\n".
          "$MESATUAL MES, $ANOATUAL ANO, S.PADRAO_PEDIDO,\n".
          "coalesce(S1.VALORBONIF, 0) + SUM(CAST(coalesce(S2.VALACUMULAFLEXBONIF, 0) - coalesce(S2.VALPEDBONIF,0) AS NUMERIC(15,2))) + ".
          "coalesce((select  \n".
          " sum(case when M.TIPO = 'S' then -M.VALORBONIF else M.VALORBONIF end) AJUSTEMOVBONIF \n".
          " from MOVCAIXAFLEX M \n".
          " where S.CODVENDEDOR = M.CODVENDEDOR and S.MES = M.MES and S.ANO = M.ANO and S.PADRAO_PEDIDO = M.PADRAO_PEDIDO),0)  \n".
          " VALORBONIF, \n".
          "coalesce(S1.VALOR, 0) + SUM(CAST(coalesce(S2.VALFLEX, 0) AS NUMERIC(15,2))) + SUM(CAST(coalesce(S2.VALACUMULAFLEXVENDA, 0) AS NUMERIC(15,2))) + \n".
          "coalesce((select  \n".
          " sum(case when M.TIPO = 'S' then -M.VALOR else M.VALOR end) AJUSTEMOVVENDA \n".
          " from MOVCAIXAFLEX M \n".
          " where S.CODVENDEDOR = M.CODVENDEDOR and S.MES = M.MES and S.ANO = M.ANO and S.PADRAO_PEDIDO = M.PADRAO_PEDIDO),0)  \n".
          " VALOR\n".
          "\n".
          "FROM\n".
          "--VENDEDOR, TIPOS DE PEDIDOS POSSÍVEIS E TAMBÉM MES E ANO ANTERIOR\n".
          "(select CODVENDEDOR, 'P' PADRAO_PEDIDO, $MES1 MES, $ANO1 ANO\n".
          " from VENDEDORES\n".
          " where CODVENDEDOR = ".$codvendedor." and TIPO IN ('V', 'S', 'R', 'E') AND SITUACAO = 'A' AND (coalesce(PADRAO_PEDIDO, '') = 'P' or coalesce(PADRAO_PEDIDO, '') = 'A')\n".
          " UNION ALL\n".
          " select CODVENDEDOR, 'R' PADRAO_PEDIDO, $MES1 MES, $ANO1 ANO\n".
          " from VENDEDORES\n".
          "  where CODVENDEDOR = ".$codvendedor." and TIPO IN ('V', 'S', 'R', 'E') AND SITUACAO = 'A' AND (coalesce(PADRAO_PEDIDO, '') = 'R' or coalesce(PADRAO_PEDIDO, '') = 'A')\n".
          " UNION ALL\n".
          " select CODVENDEDOR, 'A' PADRAO_PEDIDO, $MES1 MES, $ANO1 ANO\n".
          " from VENDEDORES\n".
          "  where CODVENDEDOR = ".$codvendedor." and TIPO IN ('V', 'S', 'R', 'E') AND SITUACAO = 'A' AND coalesce(PADRAO_PEDIDO, '') IN ('A', 'P','R')) S\n".
          "--FLEX CADASTRADO NO MES ANTERIOR\n".
          "join\n".
          "(select CODVENDEDOR, MES, ANO, VALORBONIF, VALOR, PADRAO_PEDIDO\n".
          " from VENDEDORES_FLEX_MENSAL VM\n".
          " where VM.CODVENDEDOR = ".$codvendedor."\n".
          ") as S1 on S.CODVENDEDOR = S1.CODVENDEDOR AND S.PADRAO_PEDIDO = S1.PADRAO_PEDIDO AND S.MES = S1.MES AND S.ANO \n".
          "= S1.ANO\n".
          "\n".
          "left join\n".
          "--PEDIDOS DO MÊS ANTERIOR PARA MONTAR O SALDO\n".
          "(select P.CODVENDEDOR,\n".
          " extract(month from P.DATA) MES, extract(year from P.DATA) ANO,\n".
          " case when coalesce(P.PADRAO_PEDIDO, 'P') = 'R' or coalesce(P.NROMANIFESTO,0) > 0 then 'R' else 'P' end PADRAO_PEDIDO,\n".
          " SUM(CASE WHEN P.TIPO IN (".tiposBonif().") THEN PP.VALTOTAL ELSE 0 END) VALPEDBONIF,\n".
          " SUM(CASE WHEN P.TIPO IN ('V','4','6') THEN PP.VALACUMULAFLEXBONIF ELSE 0 END) VALACUMULAFLEXBONIF, \n".
		      " SUM(CASE WHEN P.TIPO IN ('V','4','6') THEN PP.VALFLEX ELSE 0 END) VALFLEX,\n".
		      " SUM(CASE WHEN P.TIPO IN ('V','4','6') THEN PP.VALACUMULAFLEXVENDA ELSE 0 END) VALACUMULAFLEXVENDA\n".
          " from PEDIDOS P\n".
          " join PED_PRODS PP ON P.NROPEDIDO = PP.NROPEDIDO\n".
          " where P.SITUACAO <> 4\n".
          " and P.DATA between '01.$MES1.$ANO1' and\n".
          "    CAST('01.$MES2.$ANO2' as date)-1\n".
          " and P.CODVENDEDOR = ".$codvendedor."\n".
          " GROUP BY 1,2,3,4\n".
          ") S2 on S.CODVENDEDOR = S2.CODVENDEDOR and S.MES = S2.MES and S.ANO = S2.ANO and (S.PADRAO_PEDIDO = S2.PADRAO_PEDIDO or S.PADRAO_PEDIDO = 'A')\n".
          "\n".

          "GROUP BY S.CODVENDEDOR,\n".
          "extract(month from current_date), extract(year from current_date), S.PADRAO_PEDIDO, S1.VALORBONIF, S1.VALOR, S.MES, S.ANO\n";
    return $sql;
  }

  function tiposBonif() {
    $configdao = new ConfigDAO();
	  if (strpos($configdao->getModulosDisponiveis(), utf8_encode('WMC Mobile - Flex Bonif. Descontar Pedido Amostra')) > 0)
      return "'B', 'A'";
    else
      return "'B'";
  }

?>