<?php

require_once 'connect.php';
require_once 'inc/messages.php';
require_once 'inc/documento_saida_class.php';
require_once 'inc/usuario.php';

/*
$DocumentoSaida = new DocumentoSaida();

$fatura_user = getLoggedUser();
$id_usuario  = $fatura_user['id'];
$id_unidade  = $fatura_user['unidade'];*/


class FaturarVendaRapida{

  // método inicial de construção da classe
  public function __construct(){
    // capturando o usuário e unidade logado
    $usuario_liberacao = getLoggedUser();

    $this->DocumentoSaida = new DocumentoSaida();
    $this->DocumentoSaida->id_usuario=$usuario_liberacao['id'];
    $this->DocumentoSaida->id_unidade=$usuario_liberacao['unidade'];
   }


    /* retorna o status da liberação do pedido de venda */
    function getLiberarPedido(){


      return true;
    }

    function getInfoDocumentoSaida(){
      echo "<pre>";
      print_r($this->DocumentoSaida);
      echo "</pre>";
    }

    /* captura o array dos pedidos a liberar*/
    function setPedidos($p_array){
      // Modelo Padrão de Status
      $fl_status = array(
                   'PedLibe' => 0, // Numero do Pedido Original
                   'Status'  => 2, // Status para o Novo Pedido
                   'NumNFe' => 0);// Numero do Pedido Liberado

      // Inclui o Status do Pedido e Pedido Original $DocumentoSaida->pedidos
      foreach ($p_array as $key => $value) {
        # code...
        $fl_status['PedLibe'] = $value;
        array_push($p_array, $fl_status);
        array_shift($p_array);
      }
      $this->DocumentoSaida->pedidos = $p_array;
    }

    /* inicia o processo de faturamento*/
    function setAllFaturar($fl_modelo_fiscal){

      $this->DocumentoSaida->ds_modelo = $fl_modelo_fiscal;

      $this->setIncludeNotaFiscal();
      $this->setAssociaNotaFiscal();
      $this->setStatusPedidoOriginal();

    }

    /* retorna o numero da proxima nfe */
    function getNumeroDocumentoSaida(){
      // global $DocumentoSaida;
      return $this->DocumentoSaida->id;
    }

    /* retorna o numero do documento de saida para associação */
    function getNumeroProxNfe(){
      global $conexao;
      $p_ds_numnf = 0;
      $p_ds_modelo= $this->DocumentoSaida->ds_modelo;

        // $consulta = "select concat('00000', max(ds_numnf*1) + 1) as p_ds_numnf from erpc_documentos_saida";
        $consulta = "select max(ds_numnf*1) + 1 as p_ds_numnf from erpc_documentos_saida and ds_modelo=$p_ds_modelo";

        $resultado = mysqli_query($conexao, $consulta) or die ($erro = mysqli_error($conexao));
        if (mysqli_num_rows($resultado)>0) {
              while ($registro = mysqli_fetch_assoc($resultado)){
                $p_ds_numnf = $registro['p_ds_numnf'];
              }
          }

        return $p_ds_numnf;
    }

    /* inclui a nota fiscal conforme informações passadas */
    function setIncludeNotaFiscal(){
      global $conexao;

      if(!$this->DocumentoSaida->ds_modelo=='59'){
        $this->DocumentoSaida->ds_numnf = getNumeroProxNfe();
      }
      /*$this->DocumentoSaida->id_usuario= $id_usuario;
      $this->DocumentoSaida->id_unidade= $id_unidade;*/
      $this->DocumentoSaida->id_natureza=1;
      $this->DocumentoSaida->id_processamento_emissao=0;
      $this->DocumentoSaida->id_status_xml_interno=1;

      $ok = false;
      $sql = 'insert into erpc_documentos_saida ';
      $campos = array('ds_numnf', 'dt_emissao', 'ds_serie', 'ds_modelo', 'id_status_xml_interno', 'id_status_transmissao', 'ds_numnf_referencia', 'id_tipo_ambiente', 'id_tipo_operacao', 'id_destino_operacao', 'id_tipo_emissao', 'fl_consumidor_final', 'id_operacao_presencial', 'id_natureza', 'id_processamento_emissao', 'st_ativo', 'id_usuario', 'id_unidade');
      $values = array();

      foreach($campos as $campo) {
          $values[] = $this->DocumentoSaida->$campo;
      }
      $sql .= '(' . implode(',', $campos) . ') values (' . trim(str_repeat('?,', count($values)), ',') . ')';

      $ok = _prepareAndExecute($sql, $values, $error);
      $this->DocumentoSaida->id = mysqli_insert_id($conexao);

      /*
      echo "<pre>";
      print_r($DocumentoSaida->pedidos);
      echo "</pre>";
      exit;
      */

      /*if ($ok !== false) {
          addMessage('Inserido com sucesso');
      }*/
    return $ok;
    }


    /* Atualiza o Status de Cada Pedido Original em erpc_pedidos_venda */
    function setStatusPedidoOriginal(){
      global $conexao;

      foreach ($this->DocumentoSaida->pedidos as $key => $p_array_status) {
        $p_num_ped = $p_array_status['PedLibe'];
        $p_sta_ped = 4; // FATURADO $p_array_status['Status'];

        $sql = "update erpc_pedidos_venda_liberados set id_status_pedido = $p_sta_ped where id = $p_num_ped";

        $stmt = mysqli_prepare($conexao, $sql) or die(mysqli_error($conexao) . '<br />' . $sql);
        $ok   = mysqli_stmt_execute($stmt) or die(mysqli_error($conexao));
      }
    }


    /* associação do pedido ao documento de saida */
    function setAssociaNotaFiscal(){
      global $conexao;

      foreach ($this->DocumentoSaida->pedidos as $key => $p_array_status) {
        $p_num_ped = $p_array_status['PedLibe'];
        $p_num_doc = $this->DocumentoSaida->id;

        $sql = "insert into erpc_pedidos_documentos_saida values($p_num_ped, $p_num_doc)";

        $stmt = mysqli_prepare($conexao, $sql) or die(mysqli_error($conexao) . '<br />' . $sql);
        $ok   = mysqli_stmt_execute($stmt) or die(mysqli_error($conexao));
      }
    }
}

?>
