<?php
require_once "inc/nfecode_xml.php";

$ok   = true; // Recebe true como padrão
$chave= "";
$set_msg = array();   // varáveis de retorno de status;


$id = $_GET['id'];
$id_doc = base64_decode($id);

/*EXIBIR O NÚMERO DO DOCUMENTO DE SAIDA*/
addMessage("Número do Documento de Saída!:$id_doc");
 
// $NfeXml = new NfeXml();
$redirect = "erpc_monitoramento_nfe_list.php";
$r_bd = getDados($id_doc);

if(!$r_bd==true){
  foreach ($set_msg as $key => $value) {
    addError($value);
  }
}else{
  array_push($set_msg, "nfe_id:$ok");

  $ok = nfe_GeraXml($id_doc);

  array_push($set_msg, "nfe_GeraXml:$ok");
  if($ok==true){
    $ok  = nfe_AssinaXml();
    $ret = nfe_ValidaXml();
    $setEnvia = false;

    /* Limpa o Array só para passar pelo validador */
    // $ret = array();
    
    // retorno =1, arquivo validado com sucesso!
    if(count($ret)>1){
      $get_erro = "nfe_ValidaXml:0";
    }else{
      $get_erro = "nfe_ValidaXml:1";
      $setEnvia= true;
    }
    // acrescenta mensagem de status;
    array_push($set_msg, $get_erro);

    // varre o array incluindo erros, ou ultimo status;
    if(is_array($ret)){
      foreach ($ret as $key => $value) {
        array_push($set_msg, $value . '');
      }
    }

        // enviar arquivo para a Sefaz
    if($setEnvia==true){
  	$get_Envio = nfe_EnviaXml();
  	$get_bStat = "nfe_EnviaXml:" . $get_Envio['bStat'];
  	array_push($set_msg, $get_bStat);

  	// Acrescenta motivo de erro em Caso,bStat = 0
  	if(!$get_bStat=="1"){
  		$get_xMot = '';
  		foreach($get_Envio as $key => $value){
  			if(!is_array($key)){
  			$get_xMot = "<br>nfe_EnviaXml_Detail:$key = > $value";
  			array_push($set_msg, $get_bStat);
  			}
  		}
  	}
   }else{
      $ex_mensagem = array();

      foreach ($set_msg as $key => $value) {
        $ar_processo = explode(":", $value);
        if($ar_processo[1]=="0" and isset($ar_processo[2])===true){
          // $ex_mensagem .= "<br>" . $ar_processo[2];
          if(!in_array($ar_processo[2], $ex_mensagem)){
            $ds_limpa  = str_replace("Erro", "", $ar_processo[3]);

            $ds_limpa = str_replace("["   , "", $ds_limpa);
            $ds_limpa = str_replace("]"   , "", $ds_limpa);
            $ds_limpa = str_replace("!-ÿ{1} -ÿ{0,}!-ÿ{1}|!-ÿ{1}"   , "", $ds_limpa);

            $ds_campo = str_replace("Elemento", "Campo", $ar_processo[2]);

            if(!isset($ex_mensagem[$ds_campo])){
              $ex_mensagem += ["$ds_campo" => $ds_limpa]; 
            }else
            {
              $ex_mensagem[$ds_campo] .= ";" . $ds_limpa;
            }
          }
        }
      }
      $ds_mensagem = "";
      foreach ($ex_mensagem as $key => $value) {
        if($ds_mensagem!=""){
          $ds_mensagem .= "<br>";
        }
        $ds_mensagem .= $key . "=" . $value;
      }

      if($ds_mensagem!=""){
        $ds_mensagem = base64_encode($ds_mensagem);
      }

      /*
      echo "<iframe src='erpc_nfecode_mensagem.php?id=$id&ds_mensagem=$ds_mensagem'onload='this.width=screen.width-20;this.height=screen.height-130;'></iframe>";
      */
      $redirect = "erpc_nfecode_mensagem.php?id=$id&ds_mensagem=$ds_mensagem";    
      header("Location:$redirect");
      exit; 
   }
  }
}

$NfeCode->bd_updateStatusProc($setEnvia, $set_msg);


















header("Location:$redirect");
?>
