<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');

// Banco de Dados
require_once 'connect.php';
require_once 'messages.php';
require_once "nfc_class.php";
require_once "Xml.Class.php";

$NfcCode = new NfcCode();
$xml     = new Xml();
$id_unidade = 2;

class NfcXmlCancela{

  private $set_msg      = array();
  private $id_documento = 0;
  private $ds_chave_cfe = '';
  private $ds_numnf     = '';
  private $vl_total_cancela = '0.00';


  private $documentos_saida_cancela= array();

  public function __construct(){
    global $xml;
    $xml->openTag("CFeCanc");
  }

  public function getCupomOriginal(){
    return $this->ds_numnf;
  }

  public function getChaveCancela(){
    return $this->ds_chave_cfe;
  }

  public function getTotalCancela(){
    return $this->vl_total_cancela;
  }

  // retorna um XML de acordo com o array de um SQL
  function getSQLtoTag($p_tag_sql, $p_tag_name) {
    global $conexao;
    global $xml;

    // cria uma tag e transforma o resultado do array para um XML
    //Abrindo a Tag de Resposta
    $xml->openTag($p_tag_name);
    foreach ($p_tag_sql as $key => $value) {
      if($key!='nr_documento'){
        $xml->addTag($key, $value);
      }
    }
    // fecha a tag e retorna o resultado
    $xml->closeTag($p_tag_name);
    return $xml;
  }

  function getCANCELARtoTag($p_sql_cancelar){
    global $xml;

    /*
    echo "<pre>";
    print_r($p_sql_cancelar);
    echo "</pre>";
    echo "<br>";
    */


    $chCanc     = $p_sql_cancelar['chCanc'];
    $CNPJ       = $p_sql_cancelar['CNPJ'];
    $signAC     = $p_sql_cancelar['signAC'];
    $numeroCaixa= $p_sql_cancelar['numeroCaixa'];

    // dados para uso posterior na impressão do cupom
    $this->ds_chave_cfe = $p_sql_cancelar['chCanc'];
    $this->ds_numnf     = $p_sql_cancelar['ds_numnf'];
    $this->vl_total_cfe = $p_sql_cancelar['vl_total_cfe'];

    $this->ds_chave_cfe = $chCanc;

    $xml->openTag("infCFe chCanc=" . chr(34) . $chCanc . chr(34) . "");
    $xml->openTag("ide");

    $xml->addTag('CNPJ', $CNPJ);
    $xml->addTag('signAC', $signAC);
    $xml->addTag('numeroCaixa', $numeroCaixa);

    $xml->closeTag("ide");

    $xml->addTag('emit', '');
    $xml->addTag('dest', '');
    $xml->addTag('total', '');

    /*
    $xml->openTag('emit');
    $xml->closeTag('emit');

    $xml->openTag('dest');
    $xml->closeTag('dest');

    $xml->openTag('total');
    $xml->closeTag('total');
    */

    $xml->closeTag('infCFe');
  }


  /* função que verifica se todos os dados do cupom estão OK ! */
    function getDados($id_documento){
      global $NfcCode;
      global $xml;
      global $id_unidade;

      $r_getDados = true;
      $NfcCode->setNrNota($id_documento);

      $sql_cancelar = $NfcCode->getIdeSatCancela();

      $this->ds_chave_cfe = $sql_cancelar[0]['chCanc'];

      /*
      echo "<pre>";
      print_r($sql_cancelar);
      echo "</pre>";
      exit;*/

      // $xml_entrega  = $this->getSQLtoTag($sql_entrega[0] , "entrega");
      // $this->getProdutoToTag($sql_produto);
      $this->getCANCELARtoTag($sql_cancelar[0]);
      $xml->closeTag("CFeCanc");

      /*
      $xml2 = new SimpleXMLElement('<xml/>');
      $xml2 = new SimpleXMLElement($xml);
      Header('Content-type: text/xml');
      print($xml2->asXML());


      $sql_emitente = $NfcCode->getEmitente();
      $xml_emitente = $this->getSQLtoTag($sql_emitente[0], 'emit');

      $sql_
      echo '<pre>', htmlentities($xml), '</pre>';

      echo '<pre>', htmlentities($xml), '</pre>';
      exit;*/

      return $xml;
    }




    // valida o arquivo xml gerado
    function nfc_ValidaXml(){
      global $chave;
      global $nfcTools;

      $nfc = new Toolsnfc('../nfcphp/config/config.json');
      $nfc->setModelo('55');

      $p_file_dir = 'homologacao';
      $p_mesg_ret = array();
      $tpAmb      = '2';
      // $nfc->setModelo('55');
      // echo "<br>$tpAmb";
      //

      // echo "<br>$xml";

      if($tpAmb=="1"){
        $p_file_dir = 'producao';
      }

      // $xml = "C:/Apache24/htdocs/nfcphp/xmls/nfc/{$p_file_dir}/assinadas/{$chave}-nfc.xml"; // Ambiente Windows
      $xml = "../nfcphp/xmls/nfc/{$p_file_dir}/assinadas/{$chave}-nfc.xml"; // Ambiente Windows

      if(!file_exists($xml)){
        $msg      = "<br>arquivo não existe!";
        $st_ativo = 0;
      }else if (! $nfc->validarXml($xml) || sizeof($nfcTools->errors)) {
          global $p_mesg_ret;
           // echo "<br><br>Erros :" . Count($nfc->errors);
          foreach ($nfc->errors as $erro) {
              $p_mesg_ret = $erro;
          }
      }
      array_push($p_mesg_ret, "nfc_FileName:<a href='$xml'/>$xml</a>");
      return $p_mesg_ret;
    }

    // Cálculo do IVA-ST ou MVA-ST
    function nfc_CalculaSt($p_mva_orig, $p_aliq_inter, $p_aliq_intra){
      // IVA-ST ajustado = [(1+IVA-ST original) x (1 - ALQ inter) / (1- ALQ intra)] -1, onde:
      echo "<br>p_mva_orig => $p_mva_orig";
      echo "<br>p_aliq_inter => $p_aliq_inter";
      echo "<br>p_aliq_intra => $p_aliq_intra";
      echo "<br>";

      $get_ret = 0;
      $get_ret = number_format((1 + ($p_mva_orig / 100)) * (1 - $p_aliq_inter / 100) / (1- $p_aliq_intra / 100) -1, 4, '.', ',');
      return  $get_ret;
    }

}

?>
