<?php
declare(strict_types=0);



// function p122pem($p12_cont)
// {
// $filename = 'apns-dev-cert.p12';
// $password = '...';
// $results = array();
// $worked = openssl_pkcs12_read(file_get_contents($filename), $results, $password));
// if($worked) {
//     echo '<pre>', print_r($results, true), '</pre>';
// } else {
//     echo openssl_error_string();
// }     
     
// }


function test_caduca()
{
// Ruta del archivo .p12
$p12File = 'ruta/del/certificado.p12';
$password = 'tu_contraseña';

// Cargar el archivo .p12
openssl_pkcs12_read(file_get_contents($p12File), $certs, $password);

// Obtener el certificado
$cert = $certs['cert'];

// Obtener la fecha de caducidad
$certInfo = openssl_x509_parse($cert);
$expiryDate = $certInfo['validTo'];

// Mostrar la fecha de caducidad
echo "Fecha de caducidad: " . date('Y-m-d H:i:s', $expiryDate);
}





function open_p12($p12_cont='',$p12_pass='')
{
     if(empty($p12_cont) or empty($p12_pass)){return;}
    // echo '<br> ===> '.$p12_pass;
    // echo '<br> ===> '.$p12_cont;
     $p12_object=[];
     $info_p12=[];
    
    
    // error_reporting(E_ALL);
    // ini_set('display_errors', 1);
    // openssl_pkcs12_read($p12_cont, $p12_object, $p12_pass);
    // $error = error_get_last();
    // var_dump2($error);
    
    
    // echo '<br>VVVVVV=====>'.$p12_cont;
    // echo '<br>======';
    // echo '<br>======'.gettype($p12_object);
    // var_dump2($p12_object);
    // return;
    
//     echo '<br>';
//     echo '<br>SSL ==> ';
    // echo openssl_version();
    
     if (openssl_pkcs12_read($p12_cont, $p12_object, $p12_pass))
     {
         $info_p12=$p12_object; 
            // Obtener el certificado
            // $p12_cert = $p12_object['cert'];
            
            // Extraer la información del certificado
            // $info_p12 = openssl_x509_parse($p12_cert);
            
            // var_dump2($info_p12); 
            // var_dump2($info_p12['pkey']); 
            // var_dump2($info_p12['cert']); 
            // var_dump2($info_p12['extracerts']); 
     }
     else
     {
         $info_p12['cert']= "No se pudo leer el archivo PKCS#12 o la contraseña es incorrecta.";
        while ($error = openssl_error_string()) {echo " - $error\n";}         

     }
     
// openssl_pkcs12_read($p12_cont, $p12_object, $p12_pass);
//     $error = error_get_last();
    echo "<br> ==> Error al leer el archivo PKCS #12: " . $error['message'] ;
    // var_dump2($error);
    // var_dump2($p12_object);

    return $info_p12;
}



function p12_vali_date($p12_cont='',$p12_pass='')
{
     if(empty($p12_cont) or empty($p12_pass)){return;}
     $p12_valid=date('3000-01-01 00:00:00');
     
     $public_path=$_SESSION['public_path'];
//      $javaFile = "../_java/p12_expire"; 
//      $outputCompile = shell_exec("javac -encoding UTF-8 $javaFile.java 2>&1");
//      if ($outputCompile){echo "Error al compilar Java:\n$outputCompile";}
//      else{echo "Compilación exitosa.\n";}
//      echo '<br>';
     
     $p12File = $public_path."_pk12/".$p12_cont;
     $password=$p12_pass;
     $classPath=$public_path."_java/";

     $javaCommand = "java -cp  ".($classPath)." p12_expire "." ".escapeshellarg($p12File)." ".escapeshellarg($password)." ";
     $p12_valid = shell_exec($javaCommand);
     return $p12_valid;
}

function p12_vali_date_PHP($p12_cont='',$p12_pass='')
{
     if(empty($p12_cont) or empty($p12_pass)){return;}
     $p12_valid=date('3000-01-01 00:00:00');
     return $p12_valid;

     $p12_info=[];
     $p12_cert0=[];
     $p12_cert=[];

     $p12_info=open_p12($p12_cont,$p12_pass);
     $p12_cert0=$p12_info['cert'];
     $p12_cert=openssl_x509_parse($p12_cert0);

     if(gettype($p12_cert)=='array')
     {$p12_valid=date('Y-m-d H:i:s', $p12_cert['validTo_time_t']);}

     return $p12_valid;
}


function mkdir_ce($clave)
{
     $ruta_ce='../_cele/';
     $dir_yy=substr($clave,4,4).'/';
     $dir_ce=substr($clave,4,4).substr($clave,2,2).substr($clave,0,2).'/';
//      if (!file_exists($ruta_ce.$dir_ce.'index.html'))
     if(!is_dir($ruta_ce.$dir_ce))     
     {
       @mkdir($ruta_ce.$dir_ce,0751);
//        file_put_contents($ruta_ce.$dir_ce.'index.html','Espere....');
     }
//      echo '====> '.$ruta_ce.$dir_ce;
     chmod($ruta_ce.$dir_ce,0751);
     return $dir_ce; 
}

function mkdir_ceX($clave)
{
     $ruta_ce='../_cele/';
     $dir_yy=substr($clave,4,4).'/';
     $dir_ce=substr($clave,4,4).substr($clave,2,2).substr($clave,0,2).'/';
     if (!file_exists($ruta_ce.$dir_ce.'index.html'))
     {
//        @mkdir($ruta_ce.$dir_yy);
       @mkdir($ruta_ce.$dir_ce);
       file_put_contents($ruta_ce.$dir_ce.'index.html','Espere....');
     }
     return $dir_ce; 
}


function val_clac($clave,$msg=0)
{
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
  
     $empr0=data_maes('empr',$cfg_empr);


     
     $ccheck=true;
     $msgerror='';

     $clave=trim($clave);
     $clave=str_replace(' ','',$clave);
     $clave=substr($clave,0,49);

     $anio2=date("Y", time());
     $anioact=date("Y");

     $cdia=substr($clave,0,2);
     $cmes=substr($clave,2,2);
     $canio=substr($clave,4,4);
     $cfecha=$canio.'-'.$cmes.'-'.$cdia;

     $ctipo=substr($clave,8,2);
     $cruc=substr($clave,10,13);
     $cambi=substr($clave,23,1);
     $cptoe=substr($clave,24,6);
     $cnumero=substr($clave,30,9);
     $ctipoemi=substr($clave,47,1);
     
//      echo '======CRUC  '.$tipo;
//      echo '======CRUC  '.$cruc;

//      $emisores='***';
//      if(mb_stristr2('.demo.cele',$empr0['empr_codigo']))
//      {
//           $emisores.='1790016919.'; //supermaxi
//           $emisores.='0990017514.'; // tia
//           $emisores.='0990004196.'; // comisariato
//           //     $emisores.='0190072002.'; // gerardo ortiz hipercoral

//           $emisores.='1790710319.'; //fybeca
//           $emisores.='0992696036.'; //cofarmalsa
//           $emisores.='0992870095.'; // comprimfarm;
//           $emisores.='0990858322.'; //difare
//           $emisores.='1791715772.'; // econofarm
//           $emisores.='0992563168.'; // divifarm
//           $emisores.='1791984722.'; //farmaenlace
//           $emisores.='0992495685.'; // megafarmacias
//      //     if(!mb_stristr2($emisores,substr($cruc,0,10))){$ccheck=false;$msgerror.='*** EMISOR '; }
//      }

   
//      if(empty($cambi)){$cambi='1';}
//      if(empty($ctipoemi)){$ctipoemi='1';}
     
//      echo '=========='.$cruc;
     
//      echo '========='.$clave;
     
     if(!ctype_digit($clave)){return false; }
     
//      if(!ctype_digit($clave)){$ccheck=false; $msgerror.='*NO NUMERICO '; }
	if(strlen($clave)!=49){$ccheck=false; $msgerror.='*LONGITUD '; }
	if(!mb_stristr('0123',substr($clave,0,1))){$ccheck=false; $msgerror.='*DIA+ '; }

     
     
	if($cdia<1 or $cdia>date('t',strtotime($canio.$cmes.'01'))){$ccheck=false;$msgerror.='*DIAx '; }
	if($cmes<1 or $cmes>12){$ccheck=false;$msgerror.='*MES '; }
	if($canio<2014 or $canio>$anioact){$ccheck=false;$msgerror.='*AÑO '; }
// 	if(ruc_tipo($cruc)!=0){$ccheck=false;$msgerror.='*RUC';}
	if(ruc_tipo($cruc)=='0'){$ccheck=false;$msgerror.='*RUC ';}
     

	if($cambi!='1' and $cambi!='2'){$ccheck=false; $msgerror.='*AMBIENTE ';}
	if(!mb_stristr2('.12',$ctipoemi)){$ccheck=false; $msgerror.='*EMISION ';}
	if(!val_mod11($clave,true)){$ccheck=false; $msgerror.='*VERIFICADOR';}

//                          echo '**/*/*/*/ AQUIIIi aaaaaaaaaaaaaaaaaa'.$ccheck;

     if($ccheck)
     {
        //   $sql_clac='select * from clac0 where clac_codigo ="'.$clave.'" and clac_status not in ("O","X")';
          $sql_clac='select * from clac0 where clac_codigo ="'.$clave.'" ';
          $res_clac=msql_query($sql_clac,$link_data);
          
//                          echo '**/*/*/*/ AQUIIIi aaaaaaaaaaaaaaaaaa'.$sql_clac;
          
          if(msql_num_rows($res_clac)==0)
          {
               $cdescri =$canio.'-'.$cmes.'-'.$cdia;
               $cdescri.='/'.$cruc;
               $cdescri.='/'.$ctipo;
               $cdescri.='/'.$cptoe.'-'.$cnumero;
               
            //   $sql_clac ='insert into clac0(clac_codigo,clac_descri,clac_tipo,clac_fecha,clac_enti,clac_status,clac_idate)';
            //   $sql_clac.='value("'.$clave.'","'.$cdescri.'","'.$ctipo.'","'.substr($cfecha,0,10).'","'.$cruc.'","-",now())';
               $sql_clac ='insert into clac0(clac_codigo,clac_idate)';
               $sql_clac.='value("'.$clave.'",now())';
               $res_clac=msql_query($sql_clac,$link_data);
               
               
               $sql_clac='update clac0 set clac_status="-" where clac_codigo="'.$clave.'" and clac_status in ("O","X")';
               $res_clac=msql_query($sql_clac,$link_data);
          }

        //   $res_clac=msql_query($sql_clac,$link_data);
        //   if(msql_num_rows($res_clac)==0)
          {
               $cdescri =$canio.'-'.$cmes.'-'.$cdia;
               $cdescri.='/'.$cruc;
               $cdescri.='/'.$ctipo;
               $cdescri.='/'.$cptoe.'-'.$cnumero;
               
            //   $sql_clac ='insert into clac0(clac_codigo,clac_descri,clac_tipo,clac_fecha,clac_enti,clac_status,clac_idate)';
            //   $sql_clac.='value("'.$clave.'","'.$cdescri.'","'.$ctipo.'","'.substr($cfecha,0,10).'","'.$cruc.'","-",now())';
            //   $res_clac=msql_query($sql_clac,$link_data);
               
               $sql_clac ='update clac0 set ';
               $sql_clac.='clac_descri="'.$cdescri.'", ';
               $sql_clac.='clac_tipo="'.$ctipo.'", ';
               $sql_clac.='clac_fecha="'.substr($cfecha,0,10).'", ';
               $sql_clac.='clac_enti="'.$cruc.'", ';
               $sql_clac.='clac_status="-" ';
               $sql_clac.='where clac_codigo="'.$clave.'" ';
            //   $sql_clac.='and clac_status in ("O","X") ';
               $res_clac=msql_query($sql_clac,$link_data);
          }
          
          
          
     }
     else
     {echo '<br>CA :'.$clave.' ==>> ERROR : '.$msgerror.'';}

    
     return $ccheck;	
}

// function get_clac($docu,$idnum)
// {
//      if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
//      if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     
//      $empr0=data_maes('empr',$cfg_empr);
//      $docu0=data_maes('docu',$docu);
// }

function gen_clacc($docu,$idnum)
{
// clave de acceso char(49)
// 8-fecha ddmmaaaa
// 2-tipo de comprobante 01-fact 04-n/c 07-reten
// 13- ruc emisor
// 1- ambiente 1-pruebas 2-produccion
// 6- num serie (sucursal y ptoemision)
// 9- num secuencial
// 8- aleatorios
// 1- tipo emision 1-normal
// 1- verificador modulo 11
     
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     
     $sql_ambi='update ptov0 set ptov_ambice=1 where ifnull(ptov_ambice,"")="" ';
     $res_ambi=msql_query($sql_ambi,$link_data);
     
     $sql_ambi='update ptoe0 set ptoe_ambice=1 where ifnull(ptoe_ambice,"")="" ';
     $res_ambi=msql_query($sql_ambi,$link_data);
     
     $sql_ambi='update empr0 set empr_ambice=1 where ifnull(empr_ambice,"")="" ';
     $res_ambi=msql_query($sql_ambi,$link_data);
     
     
     $empr0=data_maes('empr',$cfg_empr);
     $docu0=data_maes('docu',$docu);
     $tabla=$docu0['docu_tabla'];
//      $tice=$docu0['docu_tice'];
     $tcel=$docu0['docu_tcel'];
     
     $gencla_ok=0;
     if(!mb_stristr2('.vtas.retp.guia.clie.prov.role.caja.bcos.comp.prod.opro.inXve.jwrt.rmed',$tabla)){return;}
     if(!mb_stristr2('.FC.NC.RP.GR.PC.PF,PS.PP.RE.IE.IC.CH.DC.FP.OP.IB.EB.RT.RM',substr($docu,0,2))){return;}
     if($tabla=='comp' and !mb_stristr2('.FP03.FP11',$docu)){return;}  
     
     $sql_docu='select * from '.$tabla.'1 where idnum1="'.$idnum.'" ';
     $res_docu=msql_query($sql_docu,$link_data);
     $aso_docu=msql_fetch_assoc($res_docu);

     if($aso_docu['status']=='O'){return $aso_docu['claveacc'];}
     if($aso_docu['status']=='X'){return $aso_docu['claveacc'];}
     if(!empty($aso_docu['autorfec'])){return $aso_docu['claveacc'];}
     
     $ptov0=data_maes('ptov',$aso_docu['ptov']);
     $ptoe0=data_maes('ptoe',$aso_docu['ptoe']);
     $enti0=data_maes('enti',$aso_docu['enti']);
     $user0=data_maes('user',$aso_docu['iuser']);
     
//      var_dump2($aso_docu);
     
     $ambice=$empr0['empr_ambice'];
     
     $ruc_emisor=$empr0['empr_ruc'];
     if($empr0['empr_ceuser']==1){$ruc_emisor=$aso_docu['vndd'];}
     if($empr0['empr_ceuser']==1 and empty($ruc_emisor)){$ruc_emisor=$user0['user_cedula'];}
     if($empr0['empr_ceuser']==1 and empty($ruc_emisor)){$ruc_emisor='9999999999';}
     if(empty($ruc_emisor)){$ruc_emisor='9999999999';}
     $ruc_emisor=substr($ruc_emisor,0,10).'001';

     if($empr0['empr_ceuser']==1)
     {
          $sql_user='select * from user0 where user_cedula like "'.substr($ruc_emisor,0,10).'%"';
          $res_user=msql_query($sql_user,$link_data);
          $ceuser_codigo=msql_result($res_user,0,'user_codigo');
          $ceuser0=data_maes('user',$ceuser_codigo);
     }
     
     
     if(mb_stristr2('.vtas',$tabla) and mb_stristr2('.FC.NV',substr($docu,0,2)))
     {$ambice=$ptov0['ptov_ambice'];}
  
     if(mb_stristr2('.vtas',$tabla) and mb_stristr2('.NC',substr($docu,0,2)))
     {$ambice=$ptoe0['ptoe_ambice'];}

     if(mb_stristr2('.comp',$tabla) and mb_stristr2('.FP03.FP11',substr($docu,0,4)))
     {$ambice=$ptoe0['ptoe_ambice'];}
     
     if(mb_stristr2('.retp',$tabla)){$ambice=$ptoe0['ptoe_ambice'];}
     if(mb_stristr2('.guia',$tabla)){$ambice=$ptoe0['ptoe_ambice'];}
     
//      var_dump2($ceuser0);
     
//      echo '<br>*/*/'.$empr0['empr_ceuser'];
//      echo '<br>*/*/'.$ceuser0['user_codigo'];
     
//      if($empr0['empr_ceuser']==1){$ambice=$user0['user_ambice'];}
     if($empr0['empr_ceuser']==1){$ambice=$ceuser0['user_ambice'];}
     
     if(mb_stristr2('.clie.prov.caja.bcos',$tabla)){$ambice=1;}
     if($empr0['empr_codigo']=='demo'){$ambice=1;}
     if(empty($ambice)){$ambice=1;}

//      echo '<br>*/*/'.$ambice;
     
//      echo '=============================='.$ambice;
     
     $email=$enti0['enti_emailce'];
     if(empty($email)){$email=$enti0['enti_email'];}
     if(empty($email)){$email='vicore@hotmail.com';}
     
     $xenti10=substr($aso_docu['enti'],0,10);     
     $xnumero=substr($aso_docu['numero'],-5);     
     $xdoy=date('z',strtotime($aso_docu['fecha']))+1;
     
     $fecha1=date_create('2000-01-01');
     $fecha2=date_create($aso_docu['fecha']);
     $xdia=date_diff($fecha1,$fecha2);
     $xdia=$xdia->format('%a');
     
     $codinume = '';
     $codinume.=val_mod10($xenti10).val_mod10($xnumero).val_mod10($xdoy).val_mod10($xdia);
     $codinume.=val_mod11($xenti10).val_mod11($xnumero).val_mod11($xdoy).val_mod11($xdia);
     if(mb_stristr2('.amay',$empr0['empr_codigo'])){$codinume='12345678';}

//      echo '*/*/*/'.$codinume;
     
     
     $tipoemi ='1'; // 1:normal 2:indisponibilidad	

     $clave1 ='';
     $clave1.=substr($aso_docu['fecha'],8,2);
     $clave1.=substr($aso_docu['fecha'],5,2);
     $clave1.=substr($aso_docu['fecha'],0,4);

//      $clave1.=$docu0['docu_tice'];
     $clave1.=$docu0['docu_tcel'];
     $clave1.=$ruc_emisor;
     $clave1.=$ambice;
     $clave1.=$aso_docu['ptoe'].$aso_docu['numero'];
     $clave1.=$codinume;
     $clave1.=$tipoemi; 

     $xmod11 =val_mod11($clave1);
     $clave1.=$xmod11;
     

//      echo '==='.$clave1;
  
     if(val_clac($clave1))
     {
//                echo '<br>*/*/'.$ambice;

          $sql_docu ='update '.$tabla.'1 ';
          $sql_docu.='set claveacc="'.$clave1.'",';
          if(mb_stristr2('.vtas.comp.retp.guia.clie.prov',$tabla))
          {$sql_docu.='emailto="'.$email.'",';}
          $sql_docu.='status=status ';
          $sql_docu.='where idnum1="'.$idnum.'" ';
          if(mb_stristr2('.vtas.comp.retp.guia',$tabla))
          {
                // $sql_docu.='and ifnull(autorfec,"2000-01-01 00:00:00")<="2000-01-01 00:00:00" ';
               $sql_docu.='and ifnull(autorfec,"2000-01-01 00:00:00")<="2000-01-01 00:00:00" ';
//                $sql_docu.='and fecha<="'.date('Y-m-d').'" ';
               $sql_docu.='and fecha<="'.date('Y-m-01',strtotime('+1 month')).'" ';
          }
          else
          {
//                $sql_docu.='and ifnull(claveacc,"")="" ';
          }
          $res_docu=msql_query($sql_docu,$link_data);

     }
     else
     {
       $clave1='<br>*** ERROR AL GENERAR CLAVE ==> '.$clave1;
//        echo '<br>TICE: '.$tice;
//        echo '<br>RUC: '.$empr0['empr_ruc'];
// //        echo '<br>RUC: '.$ruc_emisor;
//        echo '<br>AMBI: '.$ambice;
//        echo '<br>CODI :'.$codinume;
//        echo '<br>TEMI: '.$tipoemi;
     }
     return $clave1;
     
//      echo '==========='.$clave1;     
     
}


function gen_cexml($clave_acceso)
{
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}

     if(strlen(trim($clave_acceso))<49){return;}
     if(empty($clave_acceso)){return;}
     $empr0=data_maes('empr',$cfg_empr);
     
     
     $clac1=data_clac($clave_acceso);
     $docu=$clac1['docu'];
     $idnum=$clac1['idnum1'];
     $recepfec=$clac1['recepfec'];
     $autorfec=$clac1['autorfec'];
     if($autorfec>='2000-01-01'){return;}

     if(empty($docu)){return;}
//      var_dump2($clac1);
     
     $docu0=data_maes('docu',$docu);
//      var_dump2($docu0);
     
     $tabla=$docu0['docu_tabla'];
//      $tice=$docu0['docu_tice'];
     $tcel=$docu0['docu_tcel'];
     $tabla1=$tabla.'1';
     $tabla2=$tabla.'2';
     
     $sql_docu1='select * from '.$tabla1.' ';
     $sql_docu1.='where docu="'.$docu.'" ';
     $sql_docu1.='and idnum1="'.$idnum.'" ';
     if(mb_stristr2('.vtas.retp.comp.guia.retc',$tabla))
     {$sql_docu1.='and ifnull(autorfec,"2000-01-01 00:00:00")<="2000-01-01 00:00:00" ';}
     $sql_docu1.='and ifnull(status,"")not in("O","X")';
     $res_docu1=msql_query($sql_docu1,$link_data);
     
     
     // XML OLD
     if(msql_num_rows($res_docu1)==0)
     {
          $sql_docu1='select * from '.$tabla1.' ';
          $sql_docu1.='where docu="'.$docu.'" ';
          $sql_docu1.='and idnum1="'.$idnum.'" ';
          $res_docu1=msql_query($sql_docu1,$link_data);
          $clave_acceso=msql_result($res_docu1,0,'claveacc');          
          
          $ruta_ce='../_cele/';
          $dir_ce=mkdir_ce($clave_acceso);
          
          $xmlold=$ruta_ce.substr($dir_ce,0,6).'/'.$clave_acceso.'.xml';
          if(file_exists($xmlold))
          {
               $file=file_get_contents($xmlold);
               if(mb_stristr2($file,'<comprobante>'))
               {
                    $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.sri.xml';
                    file_put_contents($xml3,$file);
               }
               
               if(!mb_stristr2($file,'<comprobante>'))
               {
                    
                    if(mb_stristr2($file,'<ds:Signature'))
                    {
                         $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.sign.xml';
                         file_put_contents($xml3,$file);
                    }
                    
                    if(!mb_stristr2($file,'<ds:Signature'))
                    {
                         $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
                         file_put_contents($xml3,$file);
                    }
               }
          }
          
          $xmlold=$ruta_ce.substr($dir_ce,0,6).'/'.$clave_acceso.'b.xml';
          if(file_exists($xmlold))
          {
               
               $file=file_get_contents($xmlold);
               
               if(mb_stristr2($file,'<comprobante>'))
               {
                    $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.sri.xml';
                    file_put_contents($xml3,$file);
               }
               
               if(!mb_stristr2($file,'<comprobante>'))
               {
                    
                    if(mb_stristr2($file,'<ds:Signature'))
                    {
                         $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.sign.xml';
                         file_put_contents($xml3,$file);
                    }
                    
                    if(!mb_stristr2($file,'<ds:Signature'))
                    {
                         $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
                         file_put_contents($xml3,$file);
                    }
               }
          }
          
          return;
     }
          
     
     if(!mb_stristr2('.vtas.clie.retp.guia.prov',$tabla) and !mb_stristr2('.FP03.FP11',$docu)){return;}     
     if(mb_stristr2('.amay.amin',$cfg_empr))
     {if(substr($clave_acceso,24,6)!='001100' or substr($clave_acceso,4,4)<'2019' ){return;}}
  
	//01 04 05
// 	$tabla='vtas';
     
     $docu1=msql_fetch_assoc($res_docu1);
     $clave_acceso=$docu1['claveacc'];
     
	$codDoc=substr($clave_acceso,8,2); 	
	$estab=substr($clave_acceso,24,3);
     
     $sql_docu2='select * from '.$tabla1.' ';
     $sql_docu2.='left join '.$tabla2.' on idnum1=idnum2 ';
     $sql_docu2.='left join docu0 on docu=docu_codigo ';
     $sql_docu2.='left join enti0 on enti=enti_codigo ';
     $sql_docu2.='left join item0 on item=item_codigo ';
     $sql_docu2.='left join user0 on iuser=user_codigo ';
     $sql_docu2=calc_fields($tabla,$sql_docu2);
     $sql_docu2=calc_maes('enti',$sql_docu2);
     $sql_docu2.='where idnum1='.$idnum.' ';

     $sql_docu1=$sql_docu2;
     $sql_docu3=$sql_docu2;
          
     $sql_docu1.='group by idnum1 ';
     
     $sql_docu2.='group by idnum1,iddet ';
     $sql_docu2.='order by iddet ';
     
     if(mb_stristr2('.vtas.comp',$tabla))
     {
          $sql_docu3.='group by idnum1,iva ';
          $sql_docu3.='order by iva ';
     }
     
     $res_docu1=msql_query($sql_docu1,$link_data);
     $res_docu2=msql_query($sql_docu2,$link_data);
     $res_docu3=msql_query($sql_docu3,$link_data);
     
     
//      echo '<br>====='.$sql_docu1;
     $docu1=msql_fetch_assoc($res_docu1);
     
//      if(val_clac($clave_acceso))
	{	
          {
          //   Alba Vasquez     
//           $xfecha=msql_result($res_docu,0,'fecha');   
//           $xuser=msql_result($res_docu,0,'iuser');               

//           if($empr_ceuser==1)
          $ruc_emisor=substr($clave_acceso,10,13);
//           $ruc_emisor=$empr0['empr_ruc'];
//           if($empr0['empr_ceuser']==1){$ruc_emisor=$aso_docu['vndd'];}
//           if($empr0['empr_ceuser']==1 and empty($ruc_emisor)){$ruc_emisor=$user0['user_cedula'];}
//           $ruc_emisor=substr($ruc_emisor,0,10).'001';
               

//           if($cfg_empr=='gnya' and $xfecha>='2021-04-01' and $codDoc=='01'){$empr0['empr_ruc']="1900318468001";}
//           if($cfg_empr=='gnya' and $xfecha>='2021-04-01' and $codDoc=='04'){$empr0['empr_ruc']="1900318468001";}

          $emis0=data_maes('enti',$ruc_emisor);
               
//           $sql_emis='select * from enti0 where enti_codigo="'.$empr0['empr_ruc'].'" ';
//           $res_emis=msql_query($sql_emis,$link_data);

//           $rime=@msql_result($res_emis,0,'enti_rime');
//           $rimpe=@msql_result($res_emis,0,'enti_rimpe');
//           $agret=@msql_result($res_emis,0,'enti_agret');

//           $sql_adrs='select * from adrs0 where adrs_enti="'.$empr0['empr_ruc'].'" and adrs_sucu="'.substr($clave_acceso,24,3).'" ';
//           $res_adrs=msql_query($sql_adrs,$link_data);

//           $sql_cel1='select * from '.$tabla.'12 where claveacc="'.$clave_acceso.'" ';
//           $sql_total=sql_total($tabla);      
//           $sql_cel1=str_replace('*','*,'.$sql_total,$sql_cel1);

//           $res_cel1=msql_query($sql_cel1,$link_data);

//           $enti=msql_result($res_cel1,0,'enti');
//           $enti_razsoc=msql_result($res_cel1,0,'enti_razsoc');
//           $enti_nomcom=msql_result($res_cel1,0,'enti_nomcom');
//           $enti_descri=msql_result($res_cel1,0,'enti_descri');
//           $idnum=msql_result($res_cel1,0,'idnum1');
//           $status=msql_result($res_cel1,0,'status');


//           if($enti_razsoc=="")
//           {
//           get_ruc0($enti);
//           $res_cel1=msql_query($sql_cel1,$link_data);
//           $enti_razsoc=msql_result($res_cel1,0,'enti_razsoc');
//           }
//           if(mb_stristr2('.***',$enti_descri)){$enti_descri='';}
//           if(empty($enti_razsoc)){$enti_razsoc=$enti_descri;}
//           if(empty($enti_razsoc)){$enti_razsoc=$enti_nomcom;echo '<br>***'.$enti_razsoc;}
//           if(empty($docu0['enti_razsoc'])){return '*** FALTA RAZON SOCIAL ***';}
          if(empty($emis0['enti_razsoc'])){return '*** FALTA RAZON SOCIAL ***';}

//           $sql_cel2='select * from '.$tabla.'12 where idnum1="'.$idnum.'" ';
//           $res_docu2=msql_query($sql_cel2,$link_data);

//           $sql_enti='select * from enti0 where enti_codigo="'.$enti.'" ';
//           $res_enti=msql_query($sql_enti,$link_data);

          }

    
// 		$dirEstab='';
		{
// 			if(msql_num_rows($res_adrs)!=0){$dirEstab=msql_result($res_adrs,0,'adrs_direccion');}
// 			$matriz=msql_result($res_emis,0,'enti_matriz');
// 			$tipoId=msql_result($res_cel1,0,'enti_tipoid');
// 			if(strlen(trim($dirEstab))<=2 or $estab=='001'){$dirEstab=$matriz;}
// 			if(strlen(trim($dirEstab))<=2 ){$dirEstab=msql_result($res_emis,0,'enti_direccion');}
// 			if(strlen(trim($dirEstab))<=2 ){$dirEstab=msql_result($res_emis,0,'enti_ciudad');}
	     }
          
		
// 		$tipoIdComp='04';
          $tipoIdComp=$docu1['enti_tipoIdComp']; 
          
//           echo '==='.$tipoIdComp;
// 		{
//                $tipoId=$docu0['enti_tiporuc'];
//                if($tipoId=='R'){$tipoIdComp='04';}
//                if($tipoId=='C'){$tipoIdComp='05';}
//                if($tipoId=='P'){$tipoIdComp='06';}
//                if($tipoId=='F'){$tipoIdComp='07';}
//                if($tipoId=='E'){$tipoIdComp='08';}
//                if($tipoId=='V'){$tipoIdComp='09';}
// 		}

// 		if($tabla=='vtas')
		{
			
//            $porcIva=msql_result($res_cel1,0,'iva');
//            {
//              if($porcIva==0){$codPorcIva='0';}
//              if($porcIva==12){$codPorcIva='2';}
//              if($porcIva==14){$codPorcIva='3';}
//            }

//            $porcIce=msql_result($res_cel1,0,'ice');
//            if($porcIce==0){$codPorcIce='0';}
		
		}

          
		$xml=new DomDocument("1.0","UTF-8");
		$xml->xmlStandalone = true;

//           
//           echo '*/*/*/*'.$codDoc;
    
		if($codDoc=='01')
		{
			$compelec=$xml->appendChild($xml->createElement("factura"));
			$compelec->setAttribute("id","comprobante");
			$compelec->setAttribute("version", "1.1.0");
// 			$compelec->setAttribute("emision", date("Y-m-d H:i:s"));
			{
                    $razsoc=$emis0['enti_razsoc'];
                    $nomcom=$emis0['enti_nomcom'];
                    $matriz=$emis0['enti_matriz'];
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
                    $dirEstab=$emis0['enti_matriz'];
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_direccion'];}
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_ciudad'];}
                    if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
                    
                    
                    if($nomcom==""){$nomcom=$razsoc;}
                    if(!empty($empr0['empr_ceuser'])){$matriz=$user0['user_calle1'];}

                    if(empty($matriz)){$matriz=$emis0['enti_matriz'];}
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
                    if(!empty($xefect)){$xfpag='01';}
                    if(!empty($xtarje)){$xfpag='19';}
//                          $plazo=msql_result($res_cel1,0,'plazo');
//                          $correo=@msql_result($res_cel1,0,'enti_email');

// 					$xobcon='NO';
// 					$xcoesp='NO';
// 					$xcoesn=msql_result($res_cel1,0,'enti_coesn');
// 					$xcoesn='5368';
//                          if(msql_result($res_emis,0,'enti_obcon')=='1'){$xobcon='SI';}
//                          if(msql_result($res_emis,0,'enti_coesp')=='1'){$xcoesp='SI'; $xcoesn='';}

//                          $idComprador=msql_result($res_cel1,0,'enti');
//                          if(mb_stristr2('.06',$tipoIdComp)){$idComprador=msql_result($res_cel1,0,'enti_pasaporte');}  
//                          if(mb_stristr2('.08',$tipoIdComp)){$idComprador=msql_result($res_cel1,0,'enti_idexterior');}
//                          if(substr($enti,0,4)=='9999'){$fcnego=0;$idComprador='9999999999999';}
                    
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
//                          if(empty($empr_ceuser))
//                          {
//                               $infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
//                               $infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
//                               $infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
//                               $infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
//                               $infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
//                               $infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
//                               $infoTrib->appendChild($xml->createElement("codDoc",substr($clave_acceso,8,2)));
//                               $infoTrib->appendChild($xml->createElement("estab",substr($clave_acceso,24,3)));
//                               $infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
//                               $infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
//                               $infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
//                                if($emis0['enti_agret']==1)
//                                {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
//                          }                              
                         
//                          if(!empty($empr_ceuser))
                         {
                              $infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
                              $infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
                              $infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
                              $infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
                              $infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
                              $infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
                              $infoTrib->appendChild($xml->createElement("codDoc",substr($clave_acceso,8,2)));
                              $infoTrib->appendChild($xml->createElement("estab",substr($clave_acceso,24,3)));
                              $infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
                              $infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
                              $infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
                              
                              
                              
                              if(empty($empr0['empr_ceuser']))
                              {
                                    if($emis0['enti_agret']==1)
                                    {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                              }

                              
                         }

                         }

                    $infoFact=$compelec->appendChild($xml->createElement("infoFactura"));
				{
                         
                         
                         {
//                          echo '<br>*/*/*/'.$docu1['enti_razsoc'];
//                          echo '<br>*/*/*/'.$docu1['enti_IdComp'];
//                          echo '<br>*/*/*/'.$docu1['enti_codigo'];
//                          echo '<br>*/*/*/'.$docu1['enti_tipoIdComp'];
//                          echo '<br>*/*/*/'.$docu1['enti_obCont'];
                         }
// 					$infoFact->appendChild($xml->createElement("fechaEmision",$xfecha));
					$infoFact->appendChild($xml->createElement("fechaEmision",date('d/m/Y',strtotime($docu1['fecha']))));
					$infoFact->appendChild($xml->createElement("dirEstablecimiento",$dirEstab));
// 					if($xcoesp=='SI'){$infoFact->appendChild($xml->createElement("contribuyenteEspecial",$xcoesn));}
					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$docu1['enti_obCont']));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionComprador",$docu1['enti_tipoIdComp']));
					$infoFact->appendChild($xml->createElement("razonSocialComprador",htmlspecialchars($docu1['enti_razsoc'])));
// 					$infoFact->appendChild($xml->createElement("identificacionComprador",$docu1['enti']));
					$infoFact->appendChild($xml->createElement("identificacionComprador",$docu1['enti_IdComp']));

                         if($fcnego==1)
                         {$infoFact->appendChild($xml->createElement("direccionComprador",htmlspecialchars($docu1['enti_matriz'].'/'.$docu1['enti_direccion'])));}
          
//                          $totalsinimpuestos1=msql_result($res_cel1,0,'stsubt')-msql_result($res_cel1,0,'stdcto');
// 					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format($totalsinimpuestos1,2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalDescuento",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format($docu1['tsubt']-$docu1['tdcto'],2,'.','')));
					$infoFact->appendChild($xml->createElement("totalDescuento",number_format($docu1['tdcto'],2,'.','')));
          
          // REEMBOLSOS
// 					$infoFact->appendChild($xml->createElement("codDocReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalComprobantesReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalBaseImponibleReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalImpuestoReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
          
          
					$totConImp=$infoFact->appendChild($xml->createElement("totalConImpuestos"));
                         
                         
                         msql_data_seek($res_docu3);
					while($aso_docu3=msql_fetch_assoc($res_docu3))
					{
						if($aso_docu3['subtiva0']!=0)
						{
                                   $codPorcIva='0';
                                   if($docu1['enti_exiva']==1){$codPorcIva='7';}
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$codPorcIva));
// 							$totImp->appendChild($xml->createElement("descuentoAdicional",number_format(msql_result($res_cel1,0,'stdcto'),2)));
							$totImp->appendChild($xml->createElement("baseImponible",number_format($aso_docu3['subtiva0'],2,'.','')));
							$totImp->appendChild($xml->createElement("tarifa","0"));
							$totImp->appendChild($xml->createElement("valor","0.00"));
						}

						if($aso_docu3['subtiva']!=0)
						{
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$aso_docu3['codPorcIva']));
							$totImp->appendChild($xml->createElement("baseImponible",number_format($aso_docu3['subtiva'],2,'.','')));
							$totImp->appendChild($xml->createElement("tarifa",number_format($aso_docu3['iva'],0,'.','')));
							$totImp->appendChild($xml->createElement("valor",number_format($aso_docu3['tiva'],2,'.','')));
						}
			
						// 3 ICE
						// 5 IRBP
					}
					
                         
// 					$infoFact->appendChild($xml->createElement("propina","0.00"));
//                          $xtprop=$docu1['tprop'];
//                          if(empty($xtprop)){$xtprop='0.00';}
//                          else{$xtprop=number_format($xtprop,2,'.','');}
                         
					$infoFact->appendChild($xml->createElement("propina",number_format($docu1['tprop'],2,'.','')));
					$infoFact->appendChild($xml->createElement("importeTotal",number_format($docu1['total'],2,'.','')));
					$infoFact->appendChild($xml->createElement("moneda","DOLAR"));
					$pagos=$infoFact->appendChild($xml->createElement("pagos"));
					{
// 						if($plazo=0){$plazo=1;}
						$pago=$pagos->appendChild($xml->createElement("pago"));
						{
							$pago->appendChild($xml->createElement("formaPago",$docu1['fpag']));
							$pago->appendChild($xml->createElement("total",number_format($docu1['total'],2,'.','')));
							$pago->appendChild($xml->createElement("plazo",number_format($docu1['plazo'],0)));
							$pago->appendChild($xml->createElement("unidadTiempo","dias"));
						}
					}
				}
				$detalles=$compelec->appendChild($xml->createElement("detalles"));
//                     $totalsinimpuestos12=0;
				{
//                          echo '===='.msql_num_rows($res_docu2);
                         msql_data_seek($res_docu2);
					while($aso_docu2=msql_fetch_assoc($res_docu2))
					{
						$detalle=$detalles->appendChild($xml->createElement("detalle"));
						{
                                  $itemdescri=$aso_docu2['item_descri'];
                                  $itemdescri=str_replace('&','&amp;',$itemdescri);
                                  $itemdescri=str_replace('"','&quot;',$itemdescri);
                                  $itemdescri=str_replace('´´','&quot;',$itemdescri);
                                  $itemdescri=str_replace('``','&quot;',$itemdescri);
//                                    $itemdescri=str_replace(',','.',$itemdescri);
              
							$detalle->appendChild($xml->createElement("codigoPrincipal",$aso_docu2['item_codigo']));
                                   if($aso_docu2['item_codigov']=='')
                                   {$detalle->appendChild($xml->createElement("codigoAuxiliar",$aso_docu2['item_codigo']));}
                                   if($aso_docu2['item_codigov']!='')
                                   {$detalle->appendChild($xml->createElement("codigoAuxiliar",$aso_docu2['item_codigov']));}
// 							$detalle->appendChild($xml->createElement("descripcion",$aso_docu2['item_descri']));
// 							$detalle->appendChild($xml->createElement("descripcion",htmlspecialchars($aso_docu2['item_descri'])));
							$detalle->appendChild($xml->createElement("descripcion",htmlspecialchars($itemdescri)));
							$detalle->appendChild($xml->createElement("cantidad",number_format($aso_docu2['cant'],2,'.','')));
							$detalle->appendChild($xml->createElement("precioUnitario",number_format($aso_docu2['puni'],6,'.','')));
							$detalle->appendChild($xml->createElement("descuento",number_format($aso_docu2['tdcto'],2,'.','')));
//                                    $totalsinimpuestos2=$aso_docu2['tsubt']-$aso_docu2['tdcto'];
							$detalle->appendChild($xml->createElement("precioTotalSinImpuesto",number_format($aso_docu2['subt']-$aso_docu2['tdcto'],2,'.','')));
// 							$totalsinimpuestos12+=$totalsinimpuestos2;

							//maximo 3 campos char(300)
// 							$detAdic1='';
// 							$detAdic2='';
// 							$detAdic3='';
// 							$nomAdic1='';
// 							$nomAdic2='';
// 							$nomAdic3='';
							
                                   $detaAdic=array();
                                   $detaAdic[0]['nombre']='Detalle';
                                   $detaAdic[0]['valor']=$aso_docu2['detalle'];

                                  if($cfg_empr=='pcs1' and !empty($aso_docu2['cntn']))
                                  {
                                   $detaAdic[1]['nombre']='Contenedor';
                                   $detaAdic[1]['valor']=$aso_docu2['cntn'];
                                   $detaAdic[2]['nombre']='Fecha1';
                                   $detaAdic[2]['valor']=$aso_docu2['cntnf1'];
                                   $detaAdic[3]['nombre']='Fecha2';
                                   $detaAdic[3]['valor']=$aso_docu2['cntnf2'];
                                  }

                                  if(mb_stristr2('.tgck.sawo',$cfg_empr) and !empty($aso_docu2['plvh']))
                                  {
                                   $detaAdic[1]['nombre']='Placa';
                                   $detaAdic[1]['valor']=$aso_docu2['plvh'];
                                  }

                                  if($cfg_empr=='imcp' and !empty($aso_docu2['lote']))
                                  {
                                   $detaAdic[1]['nombre']='Lote';
                                   $detaAdic[1]['valor']=$aso_docu2['lote'];
                                  }
              
                                   
                                   if(!empty($detaAdic[3]['nombre'])){$detaAdic[0]='';}
                                   
                                   $det_adi_ok=0;
                                   if(count($detaAdic)>0)
                                   {
                                        $adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
//                                         for($idx=0; $idx<3; $idx++)
                                        for($idx=0; $idx<=count($detaAdic); $idx++)
                                        {
                                             if(!empty($detaAdic[$idx]['valor']))
                                             {
                                             $adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
                                             $adicional->setAttribute("nombre",$detaAdic[$idx]['nombre']);
                                             $adicional->setAttribute("valor",$detaAdic[$idx]['valor']);
                                             $det_adi_ok=1;
                                             }
                                        }
                                        
                                   }
                                   if($det_adi_ok==0)
                                   {$detalle->removeChild($adicionales);}     
                                        
													
							$impuestos=$detalle->appendChild($xml->createElement("impuestos"));
							{
									// 2 IVA
// 								$porcIva=$aso_docu2['iva'];
//                                         echo '*/*/*/'.$aso_docu2['subtiva'];
// 								if($porcIva==0){$codPorcIva='0';}
// 								if($porcIva==12){$codPorcIva='2';}
// 								if($porcIva==14){$codPorcIva='3';}
								$impuesto=$impuestos->appendChild($xml->createElement("impuesto"));
								{
									$impuesto->appendChild($xml->createElement("codigo","2"));
									$impuesto->appendChild($xml->createElement("codigoPorcentaje",$aso_docu2['codPorcIva']));
									$impuesto->appendChild($xml->createElement("tarifa",number_format($aso_docu2['iva'],2,'.','')));
//                                              $aso_docu2['iva']
                                             $impuesto->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['subtiva0']+$aso_docu2['subtiva'],2,'.','')));     
// 									if($porcIva==0)
// 									{$impuesto->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['tsubtiva0'],2,'.','')));}
// 									else
// 									{$impuesto->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['tsubtiva'],2,'.','')));}
									$impuesto->appendChild($xml->createElement("valor",number_format($aso_docu2['tiva'],2,'.','')));
								}
						
									// 3 ICE
									// 5 IRBP
						
							}
						}
					}	
				}

        
        
//         reembolsos
//           reembolsosDetalle
//             tipoIdentificacionProveedorReembolso
//             identificacionProveedorReembolso
//             codPaisPagoProveedorReembolso
//             tipoProveedorReembolso
//             codDocReembolso
//             estabDocReembolso
//             ptoEmiDocReembolso
//             secuencialDocReembolso
//             fechaEmisionDocReembolso
//             numeroautorizacionDocReemb
            
//             detalleImpuestos
//               detalleImpuesto
//                 codigo
//                 codigoPorcentaje
//                 tarifa
//                 baseImponibleReembolso
//                 impuestoReembolso
                
        
        
                       if($fcnego==1)
                       {
                         $negociable=$compelec->appendChild($xml->createElement("tipoNegociable"));
                         $correo=$negociable->appendChild($xml->createElement("correo",$correo));
                       }
        

                    $headAdic=array();
                    $headAdic[1]['nombre']='Concepto';
                    $headAdic[1]['valor']=$docu1['concepto'];
                    $headAdic[2]['nombre']='Contribuyente';
                    $headAdic[2]['valor']=$docu1['enti_tipoCont'];
                    $headAdic[3]['nombre']='Dirección';
                    $headAdic[3]['valor']=$docu1['enti_direccion'];
                    $headAdic[3]['nombre']='Teléfono';
                    $headAdic[3]['valor']=$docu1['enti_telefono'];
                    $headAdic[3]['nombre']='Email';
                    $headAdic[3]['valor']=$docu1['enti_email'];

                    
// $string = $headAdic[1]['valor'];
// foreach (str_split($string) as $char) 
// {
//     echo "El valor ASCII de '$char' es " . ord($char) . "<br>";
// }                                       
                    
                    
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",""));
                    for($idx=1; $idx<=count($headAdic); $idx++)
                    {
//                          echo'==='.ord(strlen(trim($headAdic[$idx]['valor']));
                                       
                         
                         if(!empty($headAdic[$idx]['valor']))
                         {
//                               $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",($headAdic[$idx]['valor'])));  
                              $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",htmlspecialchars($headAdic[$idx]['valor'])));  
                              $campoAdic->setAttribute("nombre",$headAdic[$idx]['nombre']);
                         }
                    }

//                     $xinfoa=0;
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
                    if(1==2)
				{
//                          if($rimpe> 0)
//                          {
//                             if($rimpe == 1)
//                                $titrimpe = 'EMPRENDEDOR';
//                             if($rimpe == 2)
//                                $titrimpe = 'NEGOCIO POPULAR';
//                             if($rimpe == 3)
//                                $titrimpe = 'REGIMEN GENERAL';

//                              $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$titrimpe));
//                              $campoAdic->setAttribute("nombre","CONTRIBUYENTE");
//                              $xinfoa=1;
//                          }

// 					$adi_concepto=msql_result($res_cel1,0,'concepto');
// 					if($adi_concepto!='')
//                {
// 					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",htmlspecialchars($adi_concepto)));
// 					$campoAdic->setAttribute("nombre","Concepto");
//                 $xinfoa=1;
// 					}

// 					$adi_direccion=msql_result($res_enti,0,'enti_matriz');
// 					if($adi_direccion!='')
//                 {
// 					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$adi_direccion));
// 					$campoAdic->setAttribute("nombre","Direccion");
//                 $xinfoa=1;
// 					}

// 					$adi_telefono=msql_result($res_enti,0,'enti_telefono');
// 					if($adi_telefono!='')
//                 {
// 					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$adi_telefono));
// 					$campoAdic->setAttribute("nombre","Telefono");
//                 $xinfoa=1;
// 					}

//                $adi_emailce=get_emailce(msql_result($res_enti,0,'enti_codigo'));
//                if($empr_ceuser==1 and empty($adi_emailce))
//                {$adi_emailce=get_emailce($empr0['empr_ruc']);}
                         
// 					if($adi_emailce!='')
//                {
//                $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$adi_emailce));
//                $campoAdic->setAttribute("nombre","Email");
//                $xinfoa=1;
// 					}
          
//                 if($xinfoa==0)
//                 {
//                      $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$enti));
//                      $campoAdic->setAttribute("nombre","Cliente");
//                 }
               
               
               
				}
			}
		}

		if($codDoc=='03')
		{
			$compelec=$xml->appendChild($xml->createElement("liquidacionCompra"));
			$compelec->setAttribute("id","comprobante");
			$compelec->setAttribute("version", "1.1.0");
			{
                    $razsoc=$emis0['enti_razsoc'];
                    $nomcom=$emis0['enti_nomcom'];
                    $razsoc=utf8_encode($razsoc);
                    $nomcom=utf8_encode($nomcom);
                    
                    
                    $matriz=$emis0['enti_matriz'];
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}

                    
                    $dirEstab=$emis0['enti_matriz'];
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_direccion'];}
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_ciudad'];}
                    if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
                    
                    
        
//                     $xletraN='Ã'; //Ñ 
//                     $razsoc=str_replace('&','&amp;',$razsoc);
//                     $razsoc=str_replace('"','&quot;',$razsoc);
//                     $razsoc=str_replace($xletraN,'N',$razsoc);
//                     $nomcom=str_replace('&','&amp;',$nomcom);
//                     $nomcom=str_replace('"','&quot;',$nomcom);
//                     $nomcom=str_replace($xletraN,'N',$nomcom);
                    
                    if($nomcom==""){$nomcom=$razsoc;}
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
					$infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
					$infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
					$infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
					$infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
					$infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
					$infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
					$infoTrib->appendChild($xml->createElement("codDoc",$codDoc));
					$infoTrib->appendChild($xml->createElement("estab",$estab));
					$infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
					$infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
					$infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
                         
                         if($rime==12)
                         {$infoTrib->appendChild($xml->createElement("regimenMicroempresas","CONTRIBUYENTE RÉGIMEN MICROEMPRESAS"));}
                         if($agret==1)
                         {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
				}
				$infoFact=$compelec->appendChild($xml->createElement("infoLiquidacionCompra"));
				{
// 					$xfecha= date('d/m/Y' ,strtotime(msql_result($res_cel1,0,'fecha')));
// 					$xcoesp='NO';
// 					$xobcon='NO';
// 					$xcoesn=msql_result($res_cel1,0,'enti_coesn');
// 					$xcoesn='5368';
//           $xdircomp=@msql_result($res_cel1,0,'enti_matriz');
//           if($xdircomp=='')
//           {$xdircomp=@msql_result($res_cel1,0,'enti_direccion');}
          
//           $xfpag=msql_result($res_cel1,0,'fpag');
// 					$plazo=msql_result($res_cel1,0,'plazo');
// 					$correo=@msql_result($res_cel1,0,'enti_email');
          
//           if(msql_result($res_emis,0,'enti_obcon')=='1'){$xobcon='SI';}
//           if(msql_result($res_emis,0,'enti_coesp')=='1'){$xcoesp='SI'; $xcoesn='';}
          
//           $idComprador=msql_result($res_cel1,0,'enti');
//           if(mb_stristr2('.06',$tipoIdComp))
//           {$idComprador=msql_result($res_cel1,0,'enti_pasaporte');}  
//           if(mb_stristr2('.08',$tipoIdComp))
//           {$idComprador=msql_result($res_cel1,0,'enti_idexterior');}
          
          
					$infoFact->appendChild($xml->createElement("fechaEmision",date('d/m/Y',strtotime($docu1['fecha']))));
					$infoFact->appendChild($xml->createElement("dirEstablecimiento",$dirEstab));
// 					if($xcoesp=='SI'){$infoFact->appendChild($xml->createElement("contribuyenteEspecial",$xcoesn));}
					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$docu1['enti_obCont']));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionProveedor",$docu1['enti_tipoIdComp']));
					$infoFact->appendChild($xml->createElement("razonSocialProveedor",htmlspecialchars($docu1['enti_razsoc'])));
					$infoFact->appendChild($xml->createElement("identificacionProveedor",$docu1['enti_IdComp']));

//           if($fcnego==1)
//           {$infoFact->appendChild($xml->createElement("direccionProveedor",$xdircomp));}
          
//                          $totalsinimpuestos1=msql_result($res_cel1,0,'stsubt')-msql_result($res_cel1,0,'stdcto');
// 					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format(msql_result($res_cel1,0,'stsubt'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format($totalsinimpuestos1,2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalSubsidio",number_format(msql_result($res_cel1,0,'stsubt'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalDescuento",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format($docu1['tsubt']-$docu1['tdcto'],2,'.','')));
					$infoFact->appendChild($xml->createElement("totalDescuento",number_format($docu1['tdcto'],2,'.','')));

          //REEMBOLSOS
// 					$infoFact->appendChild($xml->createElement("codDocReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalComprobantesReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalBaseImponibleReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalImpuestoReembolso",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));

                         $totConImp=$infoFact->appendChild($xml->createElement("totalConImpuestos"));
                         msql_data_seek($res_docu3);
					while($aso_docu3=msql_fetch_assoc($res_docu3))
					{
						if($aso_docu3['subtiva0']!=0)
						{
                                   $codPorcIva='0';
                                   if($docu1['enti_exiva']==1){$codPorcIva='7';}
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$codPorcIva));
// 							$totImp->appendChild($xml->createElement("descuentoAdicional",number_format(msql_result($res_cel1,0,'stdcto'),2)));
							$totImp->appendChild($xml->createElement("baseImponible",number_format($aso_docu3['subtiva0'],2,'.','')));
							$totImp->appendChild($xml->createElement("tarifa","0"));
							$totImp->appendChild($xml->createElement("valor","0.00"));
						}

						if($aso_docu3['subtiva']!=0)
						{
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$aso_docu3['codPorcIva']));
							$totImp->appendChild($xml->createElement("baseImponible",number_format($aso_docu3['subtiva'],2,'.','')));
							$totImp->appendChild($xml->createElement("tarifa",number_format($aso_docu3['iva'],0,'.','')));
							$totImp->appendChild($xml->createElement("valor",number_format($aso_docu3['tiva'],2,'.','')));
						}
			
						// 3 ICE
						// 5 IRBP
					}
					
// 					$infoFact->appendChild($xml->createElement("propina","0.00"));
					$infoFact->appendChild($xml->createElement("importeTotal",number_format($docu1['total'],2,'.','')));
					$infoFact->appendChild($xml->createElement("moneda","DOLAR"));
					$pagos=$infoFact->appendChild($xml->createElement("pagos"));
					{
						$pago=$pagos->appendChild($xml->createElement("pago"));
						{
							$pago->appendChild($xml->createElement("formaPago",$docu1['fpag']));
							$pago->appendChild($xml->createElement("total",number_format($docu1['total'],2,'.','')));
							$pago->appendChild($xml->createElement("plazo",number_format($docu1['plazo'],0)));
							$pago->appendChild($xml->createElement("unidadTiempo","dias"));
						}
					}
				}
                    
				$detalles=$compelec->appendChild($xml->createElement("detalles"));
//                     $totalsinimpuestos12=0;
				{
					while($aso_docu2=msql_fetch_assoc($res_docu2))
					{
						$detalle=$detalles->appendChild($xml->createElement("detalle"));
						{
//                                   $itemdescri=$aso_docu2['item_descri'];
//                                   if($itemdescri==''){$itemdescri=$aso_docu2['detalle'];}
//                                   if($itemdescri==''){$itemdescri=$aso_docu2['concepto'];}

//                                   $itemdescri=str_replace('&','&amp;',$itemdescri);
//                                   $itemdescri=str_replace('"','&quot;',$itemdescri);
//                                   $itemdescri=str_replace('´´','&quot;',$itemdescri);
//                                   $itemdescri=str_replace('``','&quot;',$itemdescri);


//                                   $itemdescri=str_replace(',','.',$itemdescri);
              
							$detalle->appendChild($xml->createElement("codigoPrincipal",$aso_docu2['item_codigo']));
							$detalle->appendChild($xml->createElement("codigoAuxiliar",$aso_docu2['item_codigo']));
							$detalle->appendChild($xml->createElement("descripcion",$aso_docu2['item_descri']));
							$detalle->appendChild($xml->createElement("cantidad",number_format($aso_docu2['cant'],2,'.','')));
							$detalle->appendChild($xml->createElement("precioUnitario",number_format($aso_docu2['puni'],6,'.','')));
							$detalle->appendChild($xml->createElement("descuento",number_format($aso_docu2['tdcto'],2,'.','')));
                                   
//                                    $totalsinimpuestos2=$aso_docu2['tsubt']-$aso_docu2['tdcto'];
							$detalle->appendChild($xml->createElement("precioTotalSinImpuesto",number_format($aso_docu2['subt']-$aso_docu2['tdcto'],2,'.','')));
// 							$totalsinimpuestos12+=$totalsinimpuestos2;

							//maximo 3 campos char(300)
// 							$detAdic1='';
// 							$detAdic2='';
// 							$detAdic3='';
// 							$nomAdic1='';
// 							$nomAdic2='';
// 							$nomAdic3='';

//                                    $detaAdic=array();
//                                    $detaAdic[1]['nombre']='Detalle';
//                                    $detaAdic[1]['valor']=$aso_docu2['detalle'];
              
//                                    $adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
//                                    for($idx=1; $idx<=count($detaAdic); $idx++)
//                                    {
//                                         $adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
//                                         $adicional->setAttribute("nombre",$detaAdic[$idx]['nombre']);
//                                         $adicional->setAttribute("valor",$detaAdic[$idx]['valor']);
//                                    }
                                   
                                   $detaAdic=array();
                                   $detaAdic[0]['nombre']='Detalle';
                                   $detaAdic[0]['valor']=$aso_docu2['detalle'];
//                                    if(empty($detaAdic[0]['valor'])){$detaAdic[0]['valor']='-';}

//                                   if($cfg_empr=='pcs1' and !empty($aso_docu2['cntn']))
//                                   {
//                                    $detaAdic[1]['nombre']='Contenedor';
//                                    $detaAdic[1]['valor']=$aso_docu2['cntn'];
//                                    $detaAdic[2]['nombre']='Fecha1';
//                                    $detaAdic[2]['valor']=$aso_docu2['cntnf1'];
//                                    $detaAdic[3]['nombre']='Fecha2';
//                                    $detaAdic[3]['valor']=$aso_docu2['cntnf2'];
//                                   }

//                                   if(mb_stristr2('.tgck.sawo',$cfg_empr) and !empty($aso_docu2['plvh']))
//                                   {
//                                    $detaAdic[1]['nombre']='Placa';
//                                    $detaAdic[1]['valor']=$aso_docu2['plvh'];
//                                   }

//                                   if($cfg_empr=='imcp' and !empty($aso_docu2['lote']))
//                                   {
//                                    $detaAdic[1]['nombre']='Lote';
//                                    $detaAdic[1]['valor']=$aso_docu2['lote'];
//                                   }
                                   
                                   $det_adi_ok=0;
                                   if(count($detaAdic)>0)
                                   {
                                        $adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
                                        for($idx=0; $idx<=count($detaAdic); $idx++)
                                        {
                                             if(!empty($detaAdic[$idx]['valor']))
                                             {
                                             $adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
                                             $adicional->setAttribute("nombre",$detaAdic[$idx]['nombre']);
                                             $adicional->setAttribute("valor",$detaAdic[$idx]['valor']);
                                             $det_adi_ok=1;
                                             }
                                        }
                                        
                                   }
                                   if($det_adi_ok==0)
                                   {$detalle->removeChild($adicionales);}     
                                        
                                   
                                   
                                   
                                   
													
							$impuestos=$detalle->appendChild($xml->createElement("impuestos"));
							{
									// 2 IVA
// 								$porcIva=$aso_docu2['iva'];
// 								if($porcIva==0){$codPorcIva='0';}
// 								if($porcIva==12){$codPorcIva='2';}
// 								if($porcIva==14){$codPorcIva='3';}
//                                         if($porcIva==15){$codPorcIva='4';}
								$impuesto=$impuestos->appendChild($xml->createElement("impuesto"));
								{
									$impuesto->appendChild($xml->createElement("codigo","2"));
									$impuesto->appendChild($xml->createElement("codigoPorcentaje",$aso_docu2['codPorcIva']));
									$impuesto->appendChild($xml->createElement("tarifa",number_format($aso_docu2['iva'],2,'.','')));
// 									if($porcIva==0)
									$impuesto->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['subtiva0']+$aso_docu2['subtiva'],2,'.','')));
// 									else
// 									{$impuesto->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['tsubtiva'],2,'.','')));}
									$impuesto->appendChild($xml->createElement("valor",number_format($aso_docu2['tiva'],2,'.','')));
								}
						
									// 3 ICE
									// 5 IRBP
						
							}
						}
					}	
				}

        
//         reembolsos
//           reembolsosDetalle
//             tipoIdentificacionProveedorReembolso
//             identificacionProveedorReembolso
//             codPaisPagoProveedorReembolso
//             tipoProveedorReembolso
//             codDocReembolso
//             estabDocReembolso
//             ptoEmiDocReembolso
//             secuencialDocReembolso
//             fechaEmisionDocReembolso
//             numeroautorizacionDocReemb
            
//             detalleImpuestos
//               detalleImpuesto
//                 codigo
//                 codigoPorcentaje
//                 tarifa
//                 baseImponibleReembolso
//                 impuestoReembolso
        
        
//         if($fcnego==1)
//         {
//           $negociable=$compelec->appendChild($xml->createElement("tipoNegociable"));
//           $correo=$negociable->appendChild($xml->createElement("correo",$correo));
//         }
        
        
        
// 				$adicionales=msql_result($res_cel1,0,'infoadic');
// 				$adicionales=str_replace('[[','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace(']]','">',$adicionales);
// 				$adicionales=str_replace('||','.</campoAdicional>',$adicionales);
                    $headAdic=array();
                    $headAdic[1]['nombre']='Concepto';
                    $headAdic[1]['valor']=$docu1['concepto'];
                    $headAdic[2]['nombre']='Contribuyente';
                    $headAdic[2]['valor']=$docu1['enti_tipoCont'];
                    $headAdic[3]['nombre']='Dirección';
                    $headAdic[3]['valor']=$docu1['enti_direccion'];
                    $headAdic[3]['nombre']='Teléfono';
                    $headAdic[3]['valor']=$docu1['enti_telefono'];
                    $headAdic[3]['nombre']='Email';
                    $headAdic[3]['valor']=$docu1['enti_email'];
        
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",""));
                    for($idx=1; $idx<=count($headAdic); $idx++)
                    {
                         if(!empty($headAdic[$idx]['valor']))
                         {
                              $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$headAdic[$idx]['valor']));  
                              $campoAdic->setAttribute("nombre",$headAdic[$idx]['nombre']);
                         }
                    }
			}
		}
    
		if($codDoc=='04')
		{
			$compelec=$xml->appendChild($xml->createElement("notaCredito"));
			$compelec->setAttribute("id","comprobante");
			$compelec->setAttribute("version", "1.1.0");
			{
                    $razsoc=$emis0['enti_razsoc'];
                    $nomcom=$emis0['enti_nomcom'];
                    $matriz=$emis0['enti_matriz'];
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}

                    $dirEstab=$emis0['enti_matriz'];
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_direccion'];}
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_ciudad'];}
                    if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
                    
				if($nomcom==""){$nomcom=$razsoc;}
                    if(!empty($empr0['empr_ceuser'])){$matriz=$user0['user_calle1'];}
                    
                    if(empty($matriz)){$matriz=$emis0['enti_matriz'];}
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
                              $infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
                              $infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
                              $infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
                              $infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
                              $infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
                              $infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
                              $infoTrib->appendChild($xml->createElement("codDoc",substr($clave_acceso,8,2)));
                              $infoTrib->appendChild($xml->createElement("estab",substr($clave_acceso,24,3)));
                              $infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
                              $infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
//                               $xmatriz=r_fiel('user',$xuser,'calle1');
                              $infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));

//                if($rime==12)
//            {$infoTrib->appendChild($xml->createElement("regimenMicroempresas","CONTRIBUYENTE RÉGIMEN MICROEMPRESAS"));}
//            if($agret==1)
//            {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                         
                              if(empty($empr0['empr_ceuser']))
                              {
                                    if($emis0['enti_agret']==1)
                                    {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                              }
                         
                         
				}
				$infoFact=$compelec->appendChild($xml->createElement("infoNotaCredito"));
				{
// 					$xfecha= date('d/m/Y' ,strtotime($docu1['fecha']));
// 					$xcoesp='NO';
// 					$xobcon='NO';
// 					$xcoesn=$docu1['enti_coesn'];
// 					$xcoesn='5368';
					
					$xtodocu=$docu1['todocu'];
					$xtoptoe=$docu1['toptoe'];
					$xtonumero=$docu1['tonume'];
                         
                         if(empty($xtodocu)){$xtodocu='FC10';}
					$sql_todoc='select * from vtas1 where ifnull(status,"")not in ("O","X") and docu="'.$xtodocu.'" and ptoe="'.$xtoptoe.'" and numero="'.$xtonumero.'" ';
					$res_todoc=msql_query($sql_todoc,$link_data);
                         if(msql_num_rows($res_todoc)==0)
                         {
                              $sql_todoc='select * from vtas1 where ifnull(status,"")not in ("O","X") and docu="'.$xtodocu.'" and numero="'.$xtonumero.'" ';
                              $res_todoc=msql_query($sql_todoc,$link_data);
                         }
					$xtofecha=@msql_result($res_todoc,0,'fecha');
                         
					$xtodocu='01';
					$xtonumero=substr($xtoptoe,0,3).'-'.substr($xtoptoe,3,3).'-'.$xtonumero;
					$xtofecha=substr($xtofecha,8,2).'/'.substr($xtofecha,5,2).'/'.substr($xtofecha,0,4);
						
					
// 					if($docu1['enti_coesp']=='1'){$xcoesp='SI'; $xcoesn='SI';}
// 					if($docu1['enti_obcon']=='1'){$xobcon='SI';}
					$infoFact->appendChild($xml->createElement("fechaEmision",date('d/m/Y',strtotime($docu1['fecha']))));
					$infoFact->appendChild($xml->createElement("dirEstablecimiento",$dirEstab));
// 					if($xcoesp=='SI'){$infoFact->appendChild($xml->createElement("contribuyenteEspecial",$xcoesn));}
// 					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$docu1['enti_obCont']));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionComprador",$docu1['enti_tipoIdComp']));
					$infoFact->appendChild($xml->createElement("razonSocialComprador",htmlspecialchars($docu1['enti_razsoc'])));
// 					$infoFact->appendChild($xml->createElement("identificacionComprador",$docu1['enti']));
					$infoFact->appendChild($xml->createElement("identificacionComprador",$docu1['enti_IdComp']));

					$infoFact->appendChild($xml->createElement("codDocModificado",$xtodocu));
					$infoFact->appendChild($xml->createElement("numDocModificado",$xtonumero));
					$infoFact->appendChild($xml->createElement("fechaEmisionDocSustento",$xtofecha));
// 					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format(abs(msql_result($res_cel1,0,'stsubt')),2,'.','')));
                         $infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format(abs($docu1['tsubt'])-abs($docu1['tdcto']),2,'.','')));
                         $infoFact->appendChild($xml->createElement("valorModificacion",number_format(abs($docu1['total']),2,'.','')));
					$infoFact->appendChild($xml->createElement("moneda",'DOLAR'));
					
// 					$infoFact->appendChild($xml->createElement("totalDescuento",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
					$totConImp=$infoFact->appendChild($xml->createElement("totalConImpuestos"));
                         msql_data_seek($res_docu3);
					while($aso_docu3=msql_fetch_assoc($res_docu3))
					{
						if($aso_docu3['subtiva0']!=0)
						{
                                   $codPorcIva='0';
                                   if($docu1['enti_exiva']==1){$codPorcIva='7';}
//                                    echo '====='.$codPorcIva;
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$codPorcIva));
							$totImp->appendChild($xml->createElement("baseImponible",number_format(abs($aso_docu3['subtiva0']),2,'.','')));
// 							$totImp->appendChild($xml->createElement("tarifa","0"));
							$totImp->appendChild($xml->createElement("valor","0.00"));
						}

						if($aso_docu3['subtiva']!=0)
						{
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$aso_docu3['codPorcIva']));
							$totImp->appendChild($xml->createElement("baseImponible",number_format(abs($aso_docu3['subtiva']),2,'.','')));
// 							$totImp->appendChild($xml->createElement("tarifa",number_format($aso_docu3['iva'],0,'.','')));
							$totImp->appendChild($xml->createElement("valor",number_format(abs($aso_docu3['tiva']),2,'.','')));
						}
			
						// 3 ICE
						// 5 IRBP
					}
                         
					$motivo=$docu1['concepto'];
                         if($motivo==''){$motivo=$aso_docu2['detalle'];}
                         if($motivo==''){$motivo=$aso_docu2['item_descri'];}
					$infoFact->appendChild($xml->createElement("motivo",$motivo));
// 					$infoFact->appendChild($xml->createElement("moneda","DOLAR"));
// 					$pagos=$infoFact->appendChild($xml->createElement("pagos"));
// 					{
// 						$plazo=msql_result($res_cel1,0,'plazo');
// 						if($plazo=0){$plazo=1;}
// 						$pago=$pagos->appendChild($xml->createElement("pago"));
// 						{
// 							$pago->appendChild($xml->createElement("formaPago",msql_result($res_cel1,0,'fpag')));
// 							$pago->appendChild($xml->createElement("total",number_format(msql_result($res_cel1,0,'stotal'),2,'.','')));
// 							$pago->appendChild($xml->createElement("plazo",number_format($plazo,0)));
// 							$pago->appendChild($xml->createElement("unidadTiempo","dias"));
// 						}
// 					}
				}
				$detalles=$compelec->appendChild($xml->createElement("detalles"));
				{
                         
                         msql_data_seek($res_docu2);
					while($aso_docu2=msql_fetch_assoc($res_docu2))
					{
						$detalle=$detalles->appendChild($xml->createElement("detalle"));
						{
							$detalle->appendChild($xml->createElement("codigoInterno",$aso_docu2['item_codigo']));
                                   if($aso_docu2['item_codigov']=='')
                                   {$detalle->appendChild($xml->createElement("codigoAdicional",$aso_docu2['item_codigo']));}
                                   if($aso_docu2['item_codigov']!='')
                                   {$detalle->appendChild($xml->createElement("codigoAdicional",$aso_docu2['item_codigov']));}
							$detalle->appendChild($xml->createElement("descripcion",$aso_docu2['item_descri']));
							$detalle->appendChild($xml->createElement("cantidad",number_format($aso_docu2['cant'],2,'.','')));
// 							$detalle->appendChild($xml->createElement("precioUnitario",number_format($aso_docu2['puni'],6,'.','')));
							$detalle->appendChild($xml->createElement("precioUnitario",number_format($aso_docu2['puni']*(1-$aso_docu2['dcto']/100),6,'.','')));
// 							$detalle->appendChild($xml->createElement("precioSinSubsidio",number_format($aso_docu2['puni'],6,'.','')));
// 							$detalle->appendChild($xml->createElement("descuento",number_format(abs($aso_docu2['tdcto']),2,'.','')));
// 							$detalle->appendChild($xml->createElement("precioTotalSinImpuesto",number_format(abs($aso_docu2['tsubt']),2,'.','')));
							$detalle->appendChild($xml->createElement("precioTotalSinImpuesto",number_format(abs($aso_docu2['subt'])-abs($aso_docu2['tdcto']),2,'.','')));
							

							//maximo 3 campos char(300)
// 							$detAdic1='';
// 							$detAdic2='';
// 							$detAdic3='';
// 							$nomAdic1='';
// 							$nomAdic2='';
// 							$nomAdic3='';
                                   
//                                    $detaAdic=array();
//                                    $detaAdic[1]['nombre']='Detalle';
//                                    $detaAdic[1]['valor']=$aso_docu2['detalle'];
							
// 							$detAdic1=substr($aso_docu2['detalle'],0,300);
// 							$nomAdic1='Detalle';
                                   
//                                    $adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
//                                    for($idx=1; $idx<=count($detaAdic); $idx++)
//                                    {
//                                         $adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
//                                         $adicional->setAttribute("nombre",$detaAdic[$idx]['nombre']);
//                                         $adicional->setAttribute("valor",$detaAdic[$idx]['valor']);
//                                    }
                                   
                                   
                                   $detaAdic=array();
                                   
                                   $detaAdic[0]['nombre']='Detalle';
                                   $detaAdic[0]['valor']=$aso_docu2['detalle'];
//                                    if(empty($detaAdic[0]['valor'])){$detaAdic[0]['valor']='-';}

//                                   if($cfg_empr=='pcs1' and !empty($aso_docu2['cntn']))
//                                   {
//                                    $detaAdic[1]['nombre']='Contenedor';
//                                    $detaAdic[1]['valor']=$aso_docu2['cntn'];
//                                    $detaAdic[2]['nombre']='Fecha1';
//                                    $detaAdic[2]['valor']=$aso_docu2['cntnf1'];
//                                    $detaAdic[3]['nombre']='Fecha2';
//                                    $detaAdic[3]['valor']=$aso_docu2['cntnf2'];
//                                   }

//                                   if(mb_stristr2('.tgck.sawo',$cfg_empr) and !empty($aso_docu2['plvh']))
//                                   {
//                                    $detaAdic[1]['nombre']='Placa';
//                                    $detaAdic[1]['valor']=$aso_docu2['plvh'];
//                                   }

//                                   if($cfg_empr=='imcp' and !empty($aso_docu2['lote']))
//                                   {
//                                    $detaAdic[1]['nombre']='Lote';
//                                    $detaAdic[1]['valor']=$aso_docu2['lote'];
//                                   }
              
                                   
                                   $det_adi_ok=0;
                                   if(count($detaAdic)>0)
                                   {
                                        $adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
                                        for($idx=0; $idx<=count($detaAdic); $idx++)
                                        {
                                             if(!empty($detaAdic[$idx]['valor']))
                                             {
                                             $adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
                                             $adicional->setAttribute("nombre",$detaAdic[$idx]['nombre']);
                                             $adicional->setAttribute("valor",$detaAdic[$idx]['valor']);
                                             $det_adi_ok=1;
                                             }
                                        }
                                        
                                   }
                                   if($det_adi_ok==0)
                                   {$detalle->removeChild($adicionales);}     
                                        
                                   
                                   
													
							$impuestos=$detalle->appendChild($xml->createElement("impuestos"));
							{
									// 2 IVA
// 								$porcIva=$aso_docu2['iva'];
// 								if($porcIva==0){$codPorcIva='0';}
// 								if($porcIva==12){$codPorcIva='2';}
// 								if($porcIva==14){$codPorcIva='3';}
//                                         if($porcIva==15){$codPorcIva='4';}
								$impuesto=$impuestos->appendChild($xml->createElement("impuesto"));
								{
									$impuesto->appendChild($xml->createElement("codigo","2"));
									$impuesto->appendChild($xml->createElement("codigoPorcentaje",$aso_docu2['codPorcIva']));
									$impuesto->appendChild($xml->createElement("tarifa",number_format($aso_docu2['iva'],2,'.','')));
// 									if($porcIva==0)
									{$impuesto->appendChild($xml->createElement("baseImponible",number_format(abs($aso_docu2['subtiva0'])+abs($aso_docu2['subtiva']),2,'.','')));}
// 									else
// 									{$impuesto->appendChild($xml->createElement("baseImponible",number_format(abs($aso_docu2['tsubtiva']),2,'.','')));}
									$impuesto->appendChild($xml->createElement("valor",number_format(abs($aso_docu2['tiva']),2,'.','')));
								}
						
									// 3 ICE
									// 5 IRBP
						
							}
						}
					}	
				}
				
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional"));
// 				$adicionales=$docu1['infoadic'];
// 				$adicionales=str_replace('[[','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace(']]','">',$adicionales);
// 				$adicionales=str_replace('||','.</campoAdicional>',$adicionales);

// 				$adicionales=str_replace('{"','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace('":"','">',$adicionales);
// 				$adicionales=str_replace('"}','.</campoAdicional>',$adicionales);
        
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",$adicionales));
                    
                    $headAdic=array();
                    $headAdic[1]['nombre']='Concepto';
                    $headAdic[1]['valor']=$docu1['concepto'];
                    $headAdic[2]['nombre']='Contribuyente';
                    $headAdic[2]['valor']=$docu1['enti_tipoCont'];
                    $headAdic[3]['nombre']='Dirección';
                    $headAdic[3]['valor']=$docu1['enti_direccion'];
                    $headAdic[3]['nombre']='Teléfono';
                    $headAdic[3]['valor']=$docu1['enti_telefono'];
                    $headAdic[3]['nombre']='Email';
                    $headAdic[3]['valor']=$docu1['enti_email'];
                    
                    
				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional"," "));
                    for($idx=1; $idx<=count($headAdic); $idx++)
                    {
                         if(!empty($headAdic[$idx]['valor']))
                         {
                              $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$headAdic[$idx]['valor']));  
                              $campoAdic->setAttribute("nombre",$headAdic[$idx]['nombre']);
                         }
                    }
			}
		}
		
		if($codDoc=='05')
		{
			$compelec=$xml->appendChild($xml->createElement("notaDebito"));
			$compelec->setAttribute("id","comprobante");
// 			$compelec->setAttribute("version", "1.1.0");
			$compelec->setAttribute("version", "1.0.0");
			{
                    $razsoc=$emis0['enti_razsoc'];
                    $nomcom=$emis0['enti_nomcom'];
                    $matriz=$emis0['enti_matriz'];
                    
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
                    $dirEstab=$emis0['enti_matriz'];
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_direccion'];}
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_ciudad'];}
                    if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
                    
                    if($nomcom==""){$nomcom=$razsoc;}

                    if(empty($matriz)){$matriz=$emis0['enti_matriz'];}
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
                         $infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
                         $infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
                         $infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
                         $infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
                         $infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
                         $infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
                         $infoTrib->appendChild($xml->createElement("codDoc",substr($clave_acceso,8,2)));
                         $infoTrib->appendChild($xml->createElement("estab",substr($clave_acceso,24,3)));
                         $infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
                         $infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
//                               $xmatriz=r_fiel('user',$xuser,'calle1');
                         $infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
                         
//                          if($rime==12)
//                          {$infoTrib->appendChild($xml->createElement("regimenMicroempresas","CONTRIBUYENTE RÉGIMEN MICROEMPRESAS"));}
//                          if($agret==1)
//                          {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                         if(empty($empr0['empr_ceuser']))
                         {
                               if($emis0['enti_agret']==1)
                               {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                         }
                         
				}
				$infoFact=$compelec->appendChild($xml->createElement("infoNotaDebito"));
				{
// 					$xfecha= date('d/m/Y' ,strtotime(msql_result($res_cel1,0,'fecha')));
// 					$xfecha= date('d/m/Y' ,strtotime($docu1['fecha']));
// 					$xcoesp='NO';
// 					$xobcon='NO';
// // 					$xcoesn=msql_result($res_cel1,0,'enti_coesn');
// 					$xcoesn=$docu1['enti_coesn'];
// 					$xcoesn='5368';
					
// // 					$xtodocu=msql_result($res_cel1,0,'todocu');
// // 					$xtoptoe=msql_result($res_cel1,0,'toptoe');
// // 					$xtonumero=msql_result($res_cel1,0,'tonume');
					$xtodocu=$docu1['todocu'];
					$xtoptoe=$docu1['toptoe'];
					$xtonumero=$docu1['tonume'];
					$sql_todoc='select * from vtas1 where ifnull(status,"")not in ("O","X") and  docu="'.$xtodocu.'" and ptoe="'.$xtoptoe.'" and numero="'.$xtonumero.'" ';
					$res_todoc=msql_query($sql_todoc,$link_data);
          
                         if(msql_num_rows($res_todoc)==0)
                         {
                           $sql_todoc='select * from vtas1 where docu="'.$xtodocu.'" and numero="'.$xtonumero.'" ';
                           $res_todoc=msql_query($sql_todoc,$link_data);
                         }
					
					$xtofecha=@msql_result($res_todoc,0,'fecha');
					$xtodocu='01';
					$xtonumero=substr($xtoptoe,0,3).'-'.substr($xtoptoe,3,3).'-'.$xtonumero;
					$xtofecha=substr($xtofecha,8,2).'/'.substr($xtofecha,5,2).'/'.substr($xtofecha,0,4);
						
					
// 					if(msql_result($res_cel1,0,'enti_coesp')=='1'){$xcoesp='SI'; $xcoesn='SII';}
// 					if(msql_result($res_cel1,0,'enti_obcon')=='1'){$xobcon='SI';}
// 					if($docu1['enti_coesp']=='1'){$xcoesp='SI'; $xcoesn='SI';}
// 					if($docu1['enti_coesp']=='S'){$xcoesp='SI'; $xcoesn='SI';}
                         
// 					if($docu1['enti_obcon']=='1'){$xobcon='SI';}
// 					if($docu1['enti_obcon']=='S'){$xobcon='SI';}
                         
					$infoFact->appendChild($xml->createElement("fechaEmision",date('d/m/Y',strtotime($docu1['fecha']))));
					$infoFact->appendChild($xml->createElement("dirEstablecimiento",$dirEstab));
// 					if($xcoesp=='SI'){$infoFact->appendChild($xml->createElement("contribuyenteEspecial",$xcoesn));}
// 					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$xobcon));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionComprador",$docu1['enti_tipoIdComp']));
					$infoFact->appendChild($xml->createElement("razonSocialComprador",htmlspecialchars($docu1['enti_razsoc'])));
// 					$infoFact->appendChild($xml->createElement("identificacionComprador",$docu1['enti']));
					$infoFact->appendChild($xml->createElement("identificacionComprador",$docu1['enti_IdComp']));

					$infoFact->appendChild($xml->createElement("codDocModificado",$xtodocu));
					$infoFact->appendChild($xml->createElement("numDocModificado",$xtonumero));
					$infoFact->appendChild($xml->createElement("fechaEmisionDocSustento",$xtofecha));
// 					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format(abs(msql_result($res_cel1,0,'stsubt')),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format(abs(msql_result($res_cel1,0,'stsubt'))-abs(msql_result($res_cel1,0,'stdcto')),2,'.','')));
					$infoFact->appendChild($xml->createElement("totalSinImpuestos",number_format(abs($docu1['tubt'])-abs($docu1['tdcto']),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("valorModificacion",number_format(abs(msql_result($res_cel1,0,'stotal')),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("moneda",'DOLAR'));
					
// 					$infoFact->appendChild($xml->createElement("totalDescuento",number_format(msql_result($res_cel1,0,'stdcto'),2,'.','')));
// 					$totConImp=$infoFact->appendChild($xml->createElement("totalConImpuestos"));
// 					{
// 						// 2 IVA
// 						$xtsubtiva0=abs(msql_result($res_cel1,0,'stsubtiva0'));
// 						if($xtsubtiva0!=0)
// 						{
// 						$totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
// 						{
// 							$totImp->appendChild($xml->createElement("codigo","2"));
// 							$totImp->appendChild($xml->createElement("codigoPorcentaje","0"));
// // 							$totImp->appendChild($xml->createElement("descuentoAdicional",number_format(msql_result($res_cel1,0,'stdcto'),2)));
// 							$totImp->appendChild($xml->createElement("baseImponible",number_format($xtsubtiva0,2,'.','')));
// // 							$totImp->appendChild($xml->createElement("tarifa","0"));
// 							$totImp->appendChild($xml->createElement("valor","0.00"));
							
// 						}
// 						}

						
// 						$porcIva=msql_result($res_cel1,0,'piva');
// 						if($porcIva==0){$codPorcIva='0';}
// 						if($porcIva==12){$codPorcIva='2';}
// 						if($porcIva==14){$codPorcIva='3';}
						
// 						$xtsubtiva=abs(msql_result($res_cel1,0,'stsubtiva'));
//             $xvaloriva=abs(msql_result($res_cel1,0,'stiva'));
// 						if($xtsubtiva!=0)
// 						{
// 						$totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
// 						{
// 							$totImp->appendChild($xml->createElement("codigo","2"));
// 							$totImp->appendChild($xml->createElement("codigoPorcentaje",$codPorcIva));
// // 							$totImp->appendChild($xml->createElement("descuentoAdicional",number_format(msql_result($res_cel1,0,'stdcto'),2)));
// 							$totImp->appendChild($xml->createElement("baseImponible",number_format($xtsubtiva,2,'.','')));
// // 							$totImp->appendChild($xml->createElement("tarifa",number_format(msql_result($res_cel1,0,'piva'),0,'.','')));
// 							$totImp->appendChild($xml->createElement("valor",number_format($xvaloriva,2,'.','')));
// 						}
// 						}
			
// 						// 3 ICE
// 						// 5 IRBP
// 					}


//           $valorTotal=0;
          
					$totConImp=$infoFact->appendChild($xml->createElement("impuestos"));
                         msql_data_seek($res_docu3);
					while($aso_docu3=msql_fetch_assoc($res_docu3))
					{
						if($aso_docu3['subtiva0']!=0)
						{
                                   $codPorcIva='0';
                                   if($docu1['enti_exiva']==1){$codPorcIva='7';}
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$codPorcIva));
// 							$totImp->appendChild($xml->createElement("descuentoAdicional",number_format(msql_result($res_cel1,0,'stdcto'),2)));
							$totImp->appendChild($xml->createElement("baseImponible",number_format($aso_docu3['subtiva0'],2,'.','')));
							$totImp->appendChild($xml->createElement("tarifa","0"));
							$totImp->appendChild($xml->createElement("valor","0.00"));
						}

						if($aso_docu3['subtiva']!=0)
						{
						     $totImp=$totConImp->appendChild($xml->createElement("totalImpuesto"));
							$totImp->appendChild($xml->createElement("codigo","2"));
							$totImp->appendChild($xml->createElement("codigoPorcentaje",$aso_docu3['codPorcIva']));
							$totImp->appendChild($xml->createElement("baseImponible",number_format($aso_docu3['subtiva'],2,'.','')));
							$totImp->appendChild($xml->createElement("tarifa",number_format($aso_docu3['iva'],0,'.','')));
							$totImp->appendChild($xml->createElement("valor",number_format($aso_docu3['tiva'],2,'.','')));
						}
			
						// 3 ICE
						// 5 IRBP
					}
          
// 					$motivo=msql_result($res_cel1,0,'concepto');
//                          if($motivo==''){$motivo=@msql_result($res_cel1,0,'detalle');}
//                          if($motivo==''){$motivo=@msql_result($res_cel1,0,'item_descri');}
// 					$motivo=$docu1['concepto'];
//                          if($motivo==''){$motivo=$docu1['detalle'];}
//                          if($motivo==''){$motivo=$docu1['item_descri'];}
//           if($motivo==''){$motivo='NOTA DE CREDITO';}
          
// 					$infoFact->appendChild($xml->createElement("propina","0.00"));
// 					$infoFact->appendChild($xml->createElement("importeTotal",number_format(msql_result($res_cel1,0,'stotal'),2,'.','')));
// 					$infoFact->appendChild($xml->createElement("valorTotal",number_format(msql_result($res_cel1,0,'stotal'),2,'.','')));
					$infoFact->appendChild($xml->createElement("valorTotal",number_format($docu1['total'],2,'.','')));
// 					$infoFact->appendChild($xml->createElement("moneda","DOLAR"));
					$pagos=$infoFact->appendChild($xml->createElement("pagos"));
					{
// 						$plazo=msql_result($res_cel1,0,'plazo');
// 						$plazo=$docu1['plazo'];
// 						if($plazo=0){$plazo=1;}
						$pago=$pagos->appendChild($xml->createElement("pago"));
						{
							$pago->appendChild($xml->createElement("formaPago",$docu1['fpag']));
							$pago->appendChild($xml->createElement("total",number_format($docu1['total'],2,'.','')));
							$pago->appendChild($xml->createElement("plazo",number_format($docu1['plazo'],0)));
							$pago->appendChild($xml->createElement("unidadTiempo","dias"));
						}
					}
				}
        
// 				$detalles->appendChild($xml->createElement("motivo",$motivo));
				$detalles=$compelec->appendChild($xml->createElement("motivos"));
				{
					while($aso_docu2=msql_fetch_assoc($res_docu2))
					{
						$detalle=$detalles->appendChild($xml->createElement("motivo"));
						{
                                   $xrazon=$aso_docu2['detalle'];
                                   if(empty($xrazon)){$xrazon=$aso_docu2['concepto'];}
                                   $detalle->appendChild($xml->createElement("razon",$xrazon));
                                   $detalle->appendChild($xml->createElement("valor",number_format($aso_docu2['tsubt'],2,'.','')));
						}
					}	
				}
        
// 				$detalles=$compelec->appendChild($xml->createElement("detalles"));
// 				{
//           msql_data_seek($res_docu2,0);
// 					while($aso_docu2=msql_fetch_assoc($res_docu2))
// 					{
// 						$detalle=$detalles->appendChild($xml->createElement("detalle"));
// 						{
// 							$detalle->appendChild($xml->createElement("codigoInterno",$aso_docu2['item']));
// 							$detalle->appendChild($xml->createElement("codigoAdicional",$aso_docu2['item']));
// 							$detalle->appendChild($xml->createElement("descripcion",$aso_docu2['item_descri']));
// 							$detalle->appendChild($xml->createElement("cantidad",number_format($aso_docu2['cant'],2,'.','')));
// // 							$detalle->appendChild($xml->createElement("precioUnitario",number_format($aso_docu2['puni'],6,'.','')));
// 							$detalle->appendChild($xml->createElement("precioUnitario",number_format($aso_docu2['puni']*(1-$aso_docu2['dcto']/100),6,'.','')));
// // 							$detalle->appendChild($xml->createElement("precioSinSubsidio",number_format($aso_docu2['puni'],6,'.','')));
// // 							$detalle->appendChild($xml->createElement("descuento",number_format(abs($aso_docu2['tdcto']),2,'.','')));
// // 							$detalle->appendChild($xml->createElement("precioTotalSinImpuesto",number_format(abs($aso_docu2['tsubt']),2,'.','')));
// 							$detalle->appendChild($xml->createElement("precioTotalSinImpuesto",number_format(abs($aso_docu2['tsubt'])-abs($aso_docu2['tdcto']),2,'.','')));
							

// 							//maximo 3 campos char(300)
// 							$detAdic1='';
// 							$detAdic2='';
// 							$detAdic3='';
// 							$nomAdic1='';
// 							$nomAdic2='';
// 							$nomAdic3='';
							
// 							$detAdic1=substr($aso_docu2['detalle'],0,300);
// 							$nomAdic1='Detalle';
// 							if($detAdic1.$detAdic2.$detAdic3!='')
// 							{
// 								$adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
// 								{
// 									if($detAdic1!='')
// 									{
// 										$adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
// 										$adicional->setAttribute("nombre",$nomAdic1);
// 										$adicional->setAttribute("valor",$detAdic1);
// 									}
// 									if($detAdic2!='')
// 									{
// 										$adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
// 										$adicional->setAttribute("nombre",$nomAdic2);
// 										$adicional->setAttribute("valor",$detAdic2);
// 									}
// 									if($detAdic3!='')
// 									{
// 										$adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
// 										$adicional->setAttribute("nombre",$nomAdic3);
// 										$adicional->setAttribute("valor",$detAdic3);
// 									}
// 								}
// 							}
													
// 							$impuestos=$detalle->appendChild($xml->createElement("impuestos"));
// 							{
// 									// 2 IVA
// 								$porcIva=$aso_docu2['iva'];
// 								if($porcIva==0){$codPorcIva='0';}
// 								if($porcIva==12){$codPorcIva='2';}
// 								if($porcIva==14){$codPorcIva='3';}
// 								$impuesto=$impuestos->appendChild($xml->createElement("impuesto"));
// 								{
// 									$impuesto->appendChild($xml->createElement("codigo","2"));
// 									$impuesto->appendChild($xml->createElement("codigoPorcentaje",$codPorcIva));
// 									$impuesto->appendChild($xml->createElement("tarifa",number_format($aso_docu2['iva'],2,'.','')));
// 									if($porcIva==0)
// 									{$impuesto->appendChild($xml->createElement("baseImponible",number_format(abs($aso_docu2['tsubtiva0']),2,'.','')));}
// 									else
// 									{$impuesto->appendChild($xml->createElement("baseImponible",number_format(abs($aso_docu2['tsubtiva']),2,'.','')));}
// 									$impuesto->appendChild($xml->createElement("valor",number_format(abs($aso_docu2['tiva']),2,'.','')));
// 								}
						
// 									// 3 ICE
// 									// 5 IRBP
						
// 							}
// 						}
// 					}	
// 				}
				
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional"));
// 				$adicionales=msql_result($res_cel1,0,'infoadic');
// 				$adicionales=$docu1['infoadic'];
// 				$adicionales=str_replace('[[','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace(']]','">',$adicionales);
// 				$adicionales=str_replace('||','.</campoAdicional>',$adicionales);

// 				$adicionales=str_replace('{"','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace('":"','">',$adicionales);
// 				$adicionales=str_replace('"}','.</campoAdicional>',$adicionales);
        
                    $headAdic=array();
                    $headAdic[1]['nombre']='Concepto';
                    $headAdic[1]['valor']=$docu1['concepto'];
                    $headAdic[2]['nombre']='Contribuyente';
                    $headAdic[2]['valor']=$docu1['enti_tipoCont'];
                    $headAdic[3]['nombre']='Dirección';
                    $headAdic[3]['valor']=$docu1['enti_direccion'];
                    $headAdic[3]['nombre']='Teléfono';
                    $headAdic[3]['valor']=$docu1['enti_telefono'];
                    $headAdic[3]['nombre']='Email';
                    $headAdic[3]['valor']=$docu1['enti_email'];
                    
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",$adicionales));
				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
                    for($idx=1; $idx<=count($headAdic); $idx++)
                    {
                         if(!empty($headAdic[$idx]['valor']))
                         {
                              $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$headAdic[$idx]['valor']));  
                              $campoAdic->setAttribute("nombre",$headAdic[$idx]['nombre']);
                         }
                    }

			}
		}
		
		if($codDoc=='06')
		{
			$compelec=$xml->appendChild($xml->createElement("guiaRemision"));
			$compelec->setAttribute("id","comprobante");
			$compelec->setAttribute("version", "1.0.0");
			{
                    $razsoc=$emis0['enti_razsoc'];
                    $nomcom=$emis0['enti_nomcom'];
                    $matriz=$emis0['enti_matriz'];
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
                    $dirEstab=$emis0['enti_matriz'];
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_direccion'];}
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_ciudad'];}
                    if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
                    
                    
                    if($nomcom==""){$nomcom=$razsoc;}
                    if(empty($matriz)){$matriz=$emis0['enti_matriz'];}
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
                         $infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
                         $infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
                         $infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
                         $infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
                         $infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
                         $infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
                         $infoTrib->appendChild($xml->createElement("codDoc",substr($clave_acceso,8,2)));
                         $infoTrib->appendChild($xml->createElement("estab",substr($clave_acceso,24,3)));
                         $infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
                         $infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
//                               $xmatriz=r_fiel('user',$xuser,'calle1');
                         $infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
//            if($rime==12)
//            {$infoTrib->appendChild($xml->createElement("regimenMicroempresas","CONTRIBUYENTE RÉGIMEN MICROEMPRESAS"));}
//            if($agret==1)
//            {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
				}
				$infoFact=$compelec->appendChild($xml->createElement("infoGuiaRemision"));
				{
// 					$xobcon='NO';
// 					$xfecha1=date('d/m/Y', strtotime(msql_result($res_cel1,0,'fecha1')));
// 					$xfecha2=date('d/m/Y', strtotime(msql_result($res_cel1,0,'fecha2')));
					
// 					$cedula1=msql_result($res_cel1,0,'cedula1');
                         
                         
                         
// 					$sql_tran='select * from enti00 where enti_codigo like "'.$docu1['cedula1'].'%" order by enti_codigo';
// 					$res_tran=msql_query($sql_tran,$link_data);
                         
                         $enti1=data_maes('enti',$docu1['cedula1']);
                         $enti2=data_maes('enti',$docu1['cedula2']);
                         
//                          var_dump2($enti1);
                              

//                          $tipoId=msql_result($res_tran,0,'enti_tipoid');
					
// 					if($tipoId=='R'){$tipoIdTran='04';}
// 					if($tipoId=='C'){$tipoIdTran='05';}
// 					if($tipoId=='P'){$tipoIdTran='06';}
// 					if($tipoId=='F'){$tipoIdTran='07';}
// 					if($tipoId=='-'){$tipoIdTran='08';}
// 					if($tipoId=='V'){$tipoIdTran='09';}
					
// 					if(r_fiel('enti',$cedula1,'obcon')=='1'){$xobcon='SI';}
					$infoFact->appendChild($xml->createElement("dirPartida",$docu1['punto1']));
					$infoFact->appendChild($xml->createElement("razonSocialTransportista",$docu1['nombre1']));
// 					$infoFact->appendChild($xml->createElement("tipoIdentificacionTransportista",$tipoIdTran));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionTransportista",$enti1['enti_tipoIdComp']));
					$infoFact->appendChild($xml->createElement("rucTransportista",$docu1['cedula1'].''));
					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$docu1['enti_obCont']));
					$infoFact->appendChild($xml->createElement("fechaIniTransporte",date('d/m/Y',strtotime($docu1['fecha1']))));
					$infoFact->appendChild($xml->createElement("fechaFinTransporte",date('d/m/Y',strtotime($docu1['fecha2']))));
					$xplvh=$docu1['plvh'];
					if(empty($xplvh)){$xplvh=$docu1['placa'];}
					$infoFact->appendChild($xml->createElement("placa",$xplvh));
				}

				$motivo='VENTA';
				$rutagr=$docu1['ruta'];
                    if($rutagr==''){$rutagr='GUAYAQUIL';}
        
				$idorig=$docu1['idfrom'];
				$mdorig=$docu1['mdfrom'];

        if($idorig!='')
        {
          $sql_orig='select * from '.$mdorig.'1 left join docu0 on docu=docu_codigo where idnum1="'.$idorig.'" ';
          $res_orig=msql_query($sql_orig,$link_data);
          $orig1=msql_fetch_assoc($res_orig);   
             
          $docuorig=$orig1['docu'];
          $ptoeorig=$orig1['ptoe'];
          $numeorig=substr($ptoeorig,0,3).'-'.substr($ptoeorig,3,3).'-'.$orig1['numero'];;
          $autoorig=$orig1['autornum'];
//           $coddocsus=r_fiel('docu',$docuorig,'tice');
          $coddocsus=$orig1['docu_tice'];
          if($autoorig==''){$autoorig=$orig1['claveacc'];}
             
          if(substr($docuorig,0,2)=='FC'){$motivo='VENTA';}
          if(substr($docuorig,0,2)=='EB'){$motivo='TRANSFERENCIA';}
          if(substr($docuorig,0,4)=='EB10')
          {
               $motivo='VENTA';
               $numfac=$orig1['numfac'];
               $fecha=$orig1['fecha'];
               $fecha1=date('Ymd',strtotime($fecha.' -2 month'));
               $fecha2=date('Ymd',strtotime($fecha.' +1 month'));
//                echo '*/*/*/'.$numfac.$fecha1;
               $sql_fact ='select * from vtas1 ';
               $sql_fact.='left join docu0 on docu=docu_codigo ';
               $sql_fact.='where status not in ("O","X") ';
               $sql_fact.='and numero='.$numfac.' ';
               $sql_fact.='and fecha>="'.$fecha1.'" ';
               $sql_fact.='and fecha<="'.$fecha2.'" ';
               $res_orig=msql_query($sql_fact,$link_data);
               $orig1=msql_fetch_assoc($res_orig);   
               $idorig=$orig1['idnum1'];
               if(!empty($idorig))
               {
                    $docuorig=$orig1['docu'];
                    $ptoeorig=$orig1['ptoe'];
                    $numeorig=substr($ptoeorig,0,3).'-'.substr($ptoeorig,3,3).'-'.$orig1['numero'];;
                    $autoorig=$orig1['autornum'];;
                    $coddocsus=$orig1['docu_tcel'];
                    if($autoorig==''){$autoorig=$orig1['claveacc'];;}
               }

          }
        }
        

				$destinatarios=$compelec->appendChild($xml->createElement("destinatarios"));
				{
					$destinatario=$destinatarios->appendChild($xml->createElement("destinatario"));
					{
						$destinatario->appendChild($xml->createElement("identificacionDestinatario",$docu1['cedula2'].'001'));
						$destinatario->appendChild($xml->createElement("razonSocialDestinatario",htmlspecialchars($docu1['nombre2'])));
						$destinatario->appendChild($xml->createElement("dirDestinatario",$docu1['punto2']));
						$destinatario->appendChild($xml->createElement("motivoTraslado",$motivo));
						$destinatario->appendChild($xml->createElement("ruta",$rutagr));
                              if($docuorig!='')
                              {
                                   $destinatario->appendChild($xml->createElement("codDocSustento",$coddocsus));
                                   $destinatario->appendChild($xml->createElement("numDocSustento",$numeorig));
                                   $destinatario->appendChild($xml->createElement("numAutDocSustento",$autoorig));
                              }  

	// 				$detalles=$compelec->appendChild($xml->createElement("detalles"));
						$detalles=$destinatario->appendChild($xml->createElement("detalles"));
						{
                                   msql_data_seek($res_docu2);
							while($aso_docu2=msql_fetch_assoc($res_docu2))
							{
								$detalle=$detalles->appendChild($xml->createElement("detalle"));
								{
									$detalle->appendChild($xml->createElement("codigoInterno",$aso_docu2['item_codigo']));
									$detalle->appendChild($xml->createElement("codigoAdicional",$aso_docu2['item_codigo']));
									$detalle->appendChild($xml->createElement("descripcion",$aso_docu2['item_descri']));
									$detalle->appendChild($xml->createElement("cantidad",number_format($aso_docu2['cant'],2,'.','')));
                                             
                                             
                                   $detaAdic=array();
                                   
                                   $detaAdic[0]['nombre']='Detalle';
                                   $detaAdic[0]['valor']=$aso_docu2['detalle'];
//                                    if(empty($detaAdic[0]['valor'])){$detaAdic[0]['valor']='-';}

//                                   if($cfg_empr=='pcs1' and !empty($aso_docu2['cntn']))
//                                   {
//                                    $detaAdic[1]['nombre']='Contenedor';
//                                    $detaAdic[1]['valor']=$aso_docu2['cntn'];
//                                    $detaAdic[2]['nombre']='Fecha1';
//                                    $detaAdic[2]['valor']=$aso_docu2['cntnf1'];
//                                    $detaAdic[3]['nombre']='Fecha2';
//                                    $detaAdic[3]['valor']=$aso_docu2['cntnf2'];
//                                   }

//                                   if(mb_stristr2('.tgck.sawo',$cfg_empr) and !empty($aso_docu2['plvh']))
//                                   {
//                                    $detaAdic[1]['nombre']='Placa';
//                                    $detaAdic[1]['valor']=$aso_docu2['plvh'];
//                                   }

//                                   if($cfg_empr=='imcp' and !empty($aso_docu2['lote']))
//                                   {
//                                    $detaAdic[1]['nombre']='Lote';
//                                    $detaAdic[1]['valor']=$aso_docu2['lote'];
//                                   }
              
                                   
                                   $det_adi_ok=0;
                                   if(count($detaAdic)>0)
                                   {
                                        $adicionales=$detalle->appendChild($xml->createElement("detallesAdicionales"));
                                        for($idx=0; $idx<=count($detaAdic); $idx++)
                                        {
                                             if(!empty($detaAdic[$idx]['valor']))
                                             {
                                             $adicional=$adicionales->appendChild($xml->createElement("detAdicional"));
                                             $adicional->setAttribute("nombre",$detaAdic[$idx]['nombre']);
                                             $adicional->setAttribute("valor",$detaAdic[$idx]['valor']);
                                             $det_adi_ok=1;
                                             }
                                        }
                                        
                                   }
                                   if($det_adi_ok==0)
                                   {$detalle->removeChild($adicionales);}     
                                             
                                             
                                             
                                             
								}
							}	
						}
				

                              
                              
                              
                              
					}
				}

			}
		}
		
		if($codDoc=='07x')
		{
			$compelec=$xml->appendChild($xml->createElement("comprobanteRetencion"));
			$compelec->setAttribute("id","comprobante");
			$compelec->setAttribute("version", "1.0.0");
			{
				$razsoc=msql_result($res_emis,0,'enti_razsoc');
				$nomcom=msql_result($res_emis,0,'enti_nomcom');
				if($nomcom==""){$nomcom=$razsoc;}
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
					$infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
					$infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
					$infoTrib->appendChild($xml->createElement("razonSocial",$razsoc));
					$infoTrib->appendChild($xml->createElement("nombreComercial",$nomcom));
					$infoTrib->appendChild($xml->createElement("ruc",msql_result($res_emis,0,'enti_codigo')));
					$infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
					$infoTrib->appendChild($xml->createElement("codDoc",$codDoc));
					$infoTrib->appendChild($xml->createElement("estab",$estab));
					$infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
					$infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
					$infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
           if($rime==12)
           {$infoTrib->appendChild($xml->createElement("regimenMicroempresas","CONTRIBUYENTE RÉGIMEN MICROEMPRESAS"));}
           if($agret==1)
           {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
				}
				$infoFact=$compelec->appendChild($xml->createElement("infoCompRetencion"));
				{
					$xfecha= date('d/m/Y' ,strtotime(msql_result($res_cel1,0,'fecha')));
					$xcoesp='NO';
					$xobcon='NO';
					$xcoesn=msql_result($res_cel1,0,'enti_coesn');
// 					$dirEstab=msql_result($res_cel1,0,'enti_matriz');
          $dirEstab='';
          {
            $matriz=msql_result($res_cel1,0,'enti_matriz');
            $tipoId=msql_result($res_cel1,0,'enti_tipoid');
            if(strlen(trim($dirEstab))<=2 or $estab=='001'){$dirEstab=$matriz;}
          }
          if(strlen(trim($dirEstab))<=2){$dirEstab=r_fiel('enti',msql_result($res_cel1,0,'enti'),'matriz');}
          if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
          
          
					$xcoesn='5368';
					if(msql_result($res_cel1,0,'enti_coesp')=='1'){$xcoesp='SI';}
					if(msql_result($res_cel1,0,'enti_obcon')=='1'){$xobcon='SI';}
          $idsujret=msql_result($res_cel1,0,'enti');
          if(mb_stristr2('.06',$tipoIdComp))
          {$idsujret=msql_result($res_cel1,0,'enti_pasaporte');}  
          if(mb_stristr2('.08',$tipoIdComp))
          {$idsujret=msql_result($res_cel1,0,'enti_idexterior');}
          
					$infoFact->appendChild($xml->createElement("fechaEmision",$xfecha));
					$infoFact->appendChild($xml->createElement("dirEstablecimiento",$dirEstab));
// 					if($xcoesp=='SI'){$infoFact->appendChild($xml->createElement("contribuyenteEspecial",$xcoesn));}
					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$xobcon));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionSujetoRetenido",$tipoIdComp));
					$infoFact->appendChild($xml->createElement("razonSocialSujetoRetenido",htmlspecialchars(msql_result($res_cel1,0,'enti_razsoc'))));
          $infoFact->appendChild($xml->createElement("identificacionSujetoRetenido",$idsujret));
            
          
					$infoFact->appendChild($xml->createElement("periodoFiscal",msql_result($res_cel1,0,'fmes').'/'.msql_result($res_cel1,0,'fanio')));
// 					$infoFact->appendChild($xml->createElement("periodoFiscal",substr(msql_result($res_cel1,0,'fecha'),5,2).'/*'.substr(msql_result($res_cel1,0,'fecha'),0,4)));
				}
				$detalles=$compelec->appendChild($xml->createElement("impuestos"));
				{
					while($aso_docu2=msql_fetch_assoc($res_docu2))
					{
						$detalle=$detalles->appendChild($xml->createElement("impuesto"));
						{
// 							biva
// 							piva
// 							riva
							//Tabla 20
							$cair=trim($aso_docu2['cair']);
							$puni=$aso_docu2['puni'];
							$biva=$aso_docu2['biva'];
							$brta=$aso_docu2['brta'];
							$deta=$aso_docu2['detalle'];

// 							$coddocsus='01';
// 							if($aso_docu2['docum']=='FP11'){$coddocsus='03';}
                                   $coddocsus=r_fiel('docu',$aso_docu2['docum'],'tico');
// 							if($cair<300){$porcIva=$aso_docu2['puni'];}
							
// 							if($deta=='IVA'){$tabla20='1';}
							
							if($cair>="300"){$tabla20='1';}
							else{$tabla20='2';}
							
							if($tabla20=='1'){$tabla21=$cair;}
							
							if($tabla20=='2')
							{
								if($puni==30){$tabla21='1';} //OK
								if($puni==70){$tabla21='2';}
								if($puni==100){$tabla21='3';}

								if($puni==10){$tabla21='9';}
								if($puni==20){$tabla21='10';}
								if($puni==50){$tabla21='11';}
                
								if($puni==0){$tabla21='7';}
                
                //NO PROCEDE RETENCION
								//if($puni==0){$tabla21='8';}
							}
							
							if($puni==5){$tabla21='5480';}
							

// 							$xfecha= date('d/m/Y' ,strtotime($aso_docu2['fecdocum']));
							$xfecha= date('d/m/Y' ,strtotime($aso_docu2['fecha']));

							$detalle->appendChild($xml->createElement("codigo",$tabla20));
							$detalle->appendChild($xml->createElement("codigoRetencion",$tabla21));
							$detalle->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['cant'],2,'.','')));
							$detalle->appendChild($xml->createElement("porcentajeRetener",number_format($aso_docu2['puni'],2,'.','')));
							$detalle->appendChild($xml->createElement("valorRetenido",number_format($aso_docu2['tcant'],2,'.','')));
							$detalle->appendChild($xml->createElement("codDocSustento",$coddocsus));
							$detalle->appendChild($xml->createElement("numDocSustento",$aso_docu2['ptoem'].$aso_docu2['numer']));
							$detalle->appendChild($xml->createElement("fechaEmisionDocSustento",$xfecha));
						}
					}	
				}
				
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional"));
				$adicionales=msql_result($res_cel1,0,'infoadic');
				$adicionales=str_replace('[[','<campoAdicional nombre="',$adicionales);
				$adicionales=str_replace(']]','">',$adicionales);
				$adicionales=str_replace('||','</campoAdicional>',$adicionales);

// 				$adicionales=str_replace('{"','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace('":"','">',$adicionales);
// 				$adicionales=str_replace('"}','.</campoAdicional>',$adicionales);
        
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",$adicionales));
				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
				{
					// AQUI INFOADIC EDSK
               
//                if($enti=='0990071969001')
               if($rimpe> 0)
               {
                  if($rimpe == 1)
                     $titrimpe = 'EMPRENDEDOR';
                  if($rimpe == 2)
                     $titrimpe = 'NEGOCIO POPULAR';
                  if($rimpe == 3)
                     $titrimpe = 'REGIMEN GENERAL';
//                  if (substr($empr0['empr_ruc'],2,1) <> '9')
//                      $titrimpe = 'RIMPE EMPRENDEDOR';
//                  else
//                      $titrimpe = 'REGIMEN RIMPE';

                   $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",'REGIMEN RIMPE'));
                   $campoAdic->setAttribute("nombre","CONTRIBUYENTE");
                   $xinfoa=1;
               }
          
               if($rime==12)
               {
//                   $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",'RÉGIMEN MICROEMPRESA'));
//                   $campoAdic->setAttribute("nombre","CONTRIBUYENTE");
//                   $xinfoa=1;
               }
					
//                if($agret==1)
//                {
//                   $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",'AGENTE DE RETENCION - RESOLUCION No NACDNCRASC20-00000001'));
//                   $campoAdic->setAttribute("nombre","CONTRIBUYENTE");
//                   $xinfoa=1;
//                }
					
					
					$adi_concepto=msql_result($res_cel1,0,'concepto');
					if($adi_concepto!=''){
					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",htmlspecialchars($adi_concepto)));
					$campoAdic->setAttribute("nombre","Concepto");
					}

					$adi_direccion=msql_result($res_enti,0,'enti_matriz');
               if($adi_direccion==''){$adi_direccion=$dirEstab;}
					if($adi_direccion!=''){
					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$adi_direccion));
					$campoAdic->setAttribute("nombre","Direccion");
					}

					$adi_telefono=msql_result($res_enti,0,'enti_telefono');
					if($adi_telefono!=''){
					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$adi_telefono));
					$campoAdic->setAttribute("nombre","Telefono");
					}

// 					$adi_emailce=strtolower(msql_result($res_enti,0,'enti_emailce'));
               $adi_emailce=get_emailce(msql_result($res_enti,0,'enti_codigo'));
               if($empr_ceuser==1 and empty($adi_emailce))
               {$adi_emailce=get_emailce($empr0['empr_ruc']);}
                         
					if($adi_emailce!=''){
					$campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$adi_emailce));
					$campoAdic->setAttribute("nombre","Email");
					}
				}
			}
		}

		if($codDoc=='07')
		{
			$compelec=$xml->appendChild($xml->createElement("comprobanteRetencion"));
			$compelec->setAttribute("id","comprobante");
			$compelec->setAttribute("version", "2.0.0");
			{
                    $razsoc=$emis0['enti_razsoc'];
                    $nomcom=$emis0['enti_nomcom'];
                    $matriz=$emis0['enti_matriz'];
                    if(empty($matriz)){$matriz=$emis0['enti_direccion'];}
                    if(empty($matriz)){$matriz='GUAYAQUIL';}
                    
                    $dirEstab=$emis0['enti_matriz'];
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_direccion'];}
                    if(strlen($dirEstab)<=2){$dirEstab=$emis0['enti_ciudad'];}
                    if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
                    
				if($nomcom==""){$nomcom=$razsoc;}
                    
				$infoTrib=$compelec->appendChild($xml->createElement("infoTributaria"));
				{
					$infoTrib->appendChild($xml->createElement("ambiente",substr($clave_acceso,23,1)));
					$infoTrib->appendChild($xml->createElement("tipoEmision",substr($clave_acceso,47,1)));
					$infoTrib->appendChild($xml->createElement("razonSocial",htmlspecialchars($razsoc)));
					$infoTrib->appendChild($xml->createElement("nombreComercial",htmlspecialchars($nomcom)));
					$infoTrib->appendChild($xml->createElement("ruc",substr($clave_acceso,10,13)));
					$infoTrib->appendChild($xml->createElement("claveAcceso",$clave_acceso));
                         $infoTrib->appendChild($xml->createElement("codDoc",substr($clave_acceso,8,2)));
                         $infoTrib->appendChild($xml->createElement("estab",substr($clave_acceso,24,3)));
                         $infoTrib->appendChild($xml->createElement("ptoEmi",substr($clave_acceso,27,3)));
                         $infoTrib->appendChild($xml->createElement("secuencial",substr($clave_acceso,30,9)));
//                               $xmatriz=r_fiel('user',$xuser,'calle1');
                         $infoTrib->appendChild($xml->createElement("dirMatriz",$matriz));
                         
//                           if($rime==12)
//                           {$infoTrib->appendChild($xml->createElement("regimenMicroempresas","CONTRIBUYENTE RÉGIMEN MICROEMPRESAS"));}
//                           if($agret==1)
//                           {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                         if(empty($empr0['empr_ceuser']))
                         {
                               if($emis0['enti_agret']==1)
                               {$infoTrib->appendChild($xml->createElement("agenteRetencion","1"));}
                         }

                         
				}
				$infoFact=$compelec->appendChild($xml->createElement("infoCompRetencion"));
				{
// 					$xfecha= date('d/m/Y' ,strtotime($docu1['fecha']));
// 					$xcoesp='NO';
// 					$xobcon='NO';
// 					$xcoesn='5368';
                         
// 					$xcoesn=$docu1['enti_coesn'];
// 					$xobcon=$docu1['enti_obcon'];
                         
                         
// 					$dirEstab=msql_result($res_cel1,0,'enti_matriz');
//                          $dirEstab='';
//                          {
//                            $matriz=$docu1['enti_matriz'];
//                            $tipoId=$docu1['enti_tipoid'];
//                            if(strlen(trim($dirEstab))<=2 or $estab=='001'){$dirEstab=$matriz;}
//                          }
// //                          if(strlen(trim($dirEstab))<=2){$dirEstab=r_fiel('enti',msql_result($res_cel1,0,'enti'),'matriz');}
//                          if(strlen(trim($dirEstab))<=2){$dirEstab='Guayaquil';}
// 					if($docu1['enti_coesp']=='1'){$xcoesp='SI';}
// 					if($docu1['enti_obcon']=='1'){$xobcon='SI';}else{$xobcon='NO';}
                         
//                          $idsujret=$docu1['enti'];
                         
//                          if(mb_stristr2('.06',$tipoIdComp)){$idsujret=$docu1['enti_pasaporte'];}  
//                          if(mb_stristr2('.08',$tipoIdComp)){$idsujret=$docu1['enti_idexterior'];}
                         
//                          echo '*/*/*'.$tipoIdComp;
          
					$infoFact->appendChild($xml->createElement("fechaEmision",date('d/m/Y',strtotime($docu1['fecha']))));
					$infoFact->appendChild($xml->createElement("dirEstablecimiento",$dirEstab));
// 					if($xcoesp=='SI'){$infoFact->appendChild($xml->createElement("contribuyenteEspecial",$xcoesn));}
					$infoFact->appendChild($xml->createElement("obligadoContabilidad",$docu1['enti_obCont']));
					$infoFact->appendChild($xml->createElement("tipoIdentificacionSujetoRetenido",$docu1['enti_tipoIdComp']));

                         
                         $tipoId=$docu1['enti_tipoid'];
                         $tiposujetoretenido='04';
                         {
                               if($tipoId=='R'){$tiposujetoretenido='01';}
                               if($tipoId=='C'){$tiposujetoretenido='01';}
                               if($tipoId=='F'){$tiposujetoretenido='01';}
                              
                               if($tipoId=='P'){$tiposujetoretenido='02';}
                               if($tipoId=='E'){$tiposujetoretenido='02';}
                               if($tipoId=='V'){$tiposujetoretenido='02';}
                         }
                         
                         $parterel='NO';
                         if(!mb_stristr2('.R.C',$tipoId))     
                         {$infoFact->appendChild($xml->createElement("tipoSujetoRetenido",$tiposujetoretenido));}
					$infoFact->appendChild($xml->createElement("parteRel",$parterel));
                         
                         
					$infoFact->appendChild($xml->createElement("razonSocialSujetoRetenido",htmlspecialchars($docu1['enti_razsoc'])));
//                          $infoFact->appendChild($xml->createElement("identificacionSujetoRetenido",$idsujret));
                         $infoFact->appendChild($xml->createElement("identificacionSujetoRetenido",$docu1['enti_IdComp']));
//                          echo '<br>== '.$docu1['enti_idComp'];
          
					$infoFact->appendChild($xml->createElement("periodoFiscal",$docu1['mes'].'/'.$docu1['anio']));
				}
                    
                    
//                     $sql_fact ='select * from comp12 ';
                    
                    $sql_fact='select * from comp1 ';
                    $sql_fact.='left join comp2 on idnum1=idnum2 ';
                    $sql_fact.='left join docu0 on docu=docu_codigo ';
                    $sql_fact.='left join enti0 on enti=enti_codigo ';
                    $sql_fact.='left join pais0 on enti_pais=pais_codigo ';
                    $sql_fact=calc_fields('comp',$sql_fact);
//                     $sql_fact=calc_maes('comp',$sql_fact);
                    $sql_fact.='where status not in ("O","X") ';
                    $sql_fact.='and enti like "'.substr($docu1['enti'],0,10).'%" ';
                    $sql_fact.='and docu="'.$docu1['docum'].'" ';
                    $sql_fact.='and numero="'.$docu1['numer'].'" ';
                    $sql_fact.='and fecha>="'.date('Y-m-01',strtotime($docu1['fecha'].' -1 month')).'" ';
                    $sql_fact.='and fecha<="'.$docu1['fecha'].'" ';
                    
                    $res_fact=msql_query($sql_fact,$link_data);
                    $fact1=msql_fetch_assoc($res_fact);
                    
                    $xnumero=$fact1['ptoe'].$fact1['numero'];
                    $xfecha=$fact1['fecha'];
                    if(empty($xnumero))
                    {
                         $xnumero=$docu1['ptoe'].$docu1['numero'];
                         $xfecha=$docu1['fecha'];
                    }
                    
                    $xsuco=$fact1['suco'];
                    if(strlen($xsuco)<2){$xsuco='01';}
                    $xtico=$fact1['docu_tico'];
                    if(strlen($xtico)<2){$xtico='01';}
                    
                    $xnumaut=$fact1['autornum'];;
                    if(empty($xnumaut)){$xnumaut=$fact1['atrznum'];;}
                    if(empty($xnumaut)){$xnumaut='1234567890';}

                    $xpagole='01';
                    $xpais=$fact1['enti_pais'];
                    if($xpais!='ECUA' and !empty($xpais)){$xpagole='02';}
                    $xpaiscodi=$fact1['pais_ats'];

                    
//                     retencion version nueva
                    $rete_ver=2;
                    $cair=trim($docu1['cair']);
//                     if(mb_stristr2('.327.',$cair)){$rete_ver=1;}

                    
                    if($rete_ver==1)
                    {
//                     <impuestos><impuesto>
//                          <codigo>1</codigo>
//                          <codigoRetencion>344</codigoRetencion>
//                          <baseImponible>31.72</baseImponible>
//                          <porcentajeRetener>2.00</porcentajeRetener>
//                          <valorRetenido>0.63</valorRetenido>
//                          <codDocSustento>01</codDocSustento>
//                          <numDocSustento>001003009265675</numDocSustento>
//                          <fechaEmisionDocSustento>04/01/2019</fechaEmisionDocSustento>
//                     </impuesto></impuestos>
                         
				$impuestos=$compelec->appendChild($xml->createElement("impuestos"));
                         $impuesto=$impuestos->appendChild($xml->createElement("impuesto"));
                              $impuesto->appendChild($xml->createElement("codigo",""));
                              $impuesto->appendChild($xml->createElement("codigoRetencion",""));
                              $impuesto->appendChild($xml->createElement("porcentajeRetener",""));
                              $impuesto->appendChild($xml->createElement("valorRetenido",""));
//                               $impuesto->appendChild($xml->createElement("codigo",""));
//                               $impuesto->appendChild($xml->createElement("codigo",""));
//                               $impuesto->appendChild($xml->createElement("codigo",""));
                    }
                         
                    
                    
                    if($rete_ver==2)
                    {
				$docssustento=$compelec->appendChild($xml->createElement("docsSustento"));
                         $docsustento=$docssustento->appendChild($xml->createElement("docSustento"));
                              $docsustento->appendChild($xml->createElement("codSustento",$xsuco));
                              $docsustento->appendChild($xml->createElement("codDocSustento",$xtico));

                              //opcional
                              $docsustento->appendChild($xml->createElement("numDocSustento",$xnumero));                    
                              $docsustento->appendChild($xml->createElement("fechaEmisionDocSustento",date('d/m/Y',strtotime($xfecha))));                    
                              //opcional
                    
                              $docsustento->appendChild($xml->createElement("numAutDocSustento",$xnumaut));                    
                              $docsustento->appendChild($xml->createElement("pagoLocExt",$xpagole));
                    
                              if($xpagole=='02')
                              {
                                   $xtiporegi='01';
                                   $docsustento->appendChild($xml->createElement("tipoRegi",$xtiporegi));
                                   $docsustento->appendChild($xml->createElement("paisEfecPago",$xpaiscodi));
                                   
//                                    $xcondobtri='SI/NO';
                                   $xcondobtri='NO';
//                                    $docsustento->appendChild($xml->createElement("apliConvDobTrib",$xcondobtri));
                                   $docsustento->appendChild($xml->createElement("aplicConvDobTrib",$xcondobtri));
                                   
                                   if($xcondobtri=='NO')
                                   {$docsustento->appendChild($xml->createElement("pagExtSujRetNorLeg",'NO'));}
                                   $docsustento->appendChild($xml->createElement("pagoRegFis",'NO'));
                              }
                    
                              if($xtico=='41')
                              {
                                   $docsustento->appendChild($xml->createElement("totalComprobantesReembolso",''));
                                   $docsustento->appendChild($xml->createElement("totalBaseImponibleReembolso",''));
                                   $docsustento->appendChild($xml->createElement("totalImpuestoReembolso",''));
                              }

                              $totsinimp=$fact1['subtiva']+$fact1['subtiva0'];
                              $importetotal=$fact1['total'];
                              if($totsinimp==0)
                              {
                                   $totsinimp=abs($docu1['base_rta']);
                                   $importetotal=abs($docu1['base_rta'])+abs($docu1['base_iva']);
                              }
                    
                              $docsustento->appendChild($xml->createElement("totalSinImpuestos",round($totsinimp,2)));
                              $docsustento->appendChild($xml->createElement("importeTotal",round($importetotal,2)));
                    
                    
// tabla 16 CE
// IVA 2
// ICE 3                      
// IRBPNR 5
                    
                    
// tabla 17 CE
// 0% 0
// 12% 2
// 14% 3
// No Objeto de Impuesto 6
// Exento de IVA 7                    
                              $facbiva=msql_result($res_fact,0,'subtiva');
                              $facpiva=msql_result($res_fact,0,'piva');
                              $factiva=msql_result($res_fact,0,'tiva');
                    
                              $facbice=msql_result($res_fact,0,'subtice');
                              $facpice=msql_result($res_fact,0,'ice');
                              $factice=msql_result($res_fact,0,'tice');
                    
                              $facbirbp=msql_result($res_fact,0,'subtirbp');
                              $facpirbp=msql_result($res_fact,0,'irbp');
                              $factirbp=msql_result($res_fact,0,'tirbp');
                    
                              if($facbiva==0)
                              {
                                   $facbiva=$docu1['subtiva'];
//                                    $facpiva=msql_result($res_cel1,0,'piva');
                                   $facpiva=$docu1['iva'];
                                   if($facpiva!=0)
                                   {$facbiva=$facbiva/($facpiva/100);}
                                   $factiva=$docu1['tiva'];
                              }
                    
                              if($facbice==0)
                              {
                                   $facbice=$docu1['subtice'];
                                   $facpice=$docu1['ice'];
                                   $factice=$docu1['tice'];
                              }
                    
                              if($facbirbp==0)
                              {
                                   $facbirbp=$docu1['subtirbp'];
                                   $facpirbp=$docu1['irbp'];
                                   $factirbp=$docu1['tirbp'];
                              }
                    
                              $facbiva=round($facbiva,2);
                              $factiva=round($factiva,2);
//                                         $retencion->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['cant'],2,'.','')));
//                               $codpiva=2;
                              if($facpiva==0){$codpiva='0';}  
                              if($facpiva==5){$codpiva='5';}  
                              if($facpiva==12){$codpiva='2';}  
                              if($facpiva==14){$codpiva='3';}  
                              if($facpiva==15){$codpiva='4';}  

                    
                              $impuestosdocsustento=$docsustento->appendChild($xml->createElement("impuestosDocSustento",''));
                                   if($facbiva==0)
                                   {
                                   $impuestodocsustento=$impuestosdocsustento->appendChild($xml->createElement("impuestoDocSustento",' '));
                                        $impuestodocsustento->appendChild($xml->createElement("codImpuestoDocSustento","2"));
                                        $impuestodocsustento->appendChild($xml->createElement("codigoPorcentaje",$codpiva));
                                        $impuestodocsustento->appendChild($xml->createElement("baseImponible",number_format($facbiva,2,'.','')));
                                        $impuestodocsustento->appendChild($xml->createElement("tarifa","0"));
                                        $impuestodocsustento->appendChild($xml->createElement("valorImpuesto",number_format($factiva,2,'.','')));
                                   }
                    
                                   if($facbiva>0)
                                   {
                                   $impuestodocsustento=$impuestosdocsustento->appendChild($xml->createElement("impuestoDocSustento",' '));
                                        $impuestodocsustento->appendChild($xml->createElement("codImpuestoDocSustento","2"));
                                        $impuestodocsustento->appendChild($xml->createElement("codigoPorcentaje",$codpiva));
                                        $impuestodocsustento->appendChild($xml->createElement("baseImponible",number_format($facbiva,2,'.','')));
                                        $impuestodocsustento->appendChild($xml->createElement("tarifa",$facpiva));
                                        $impuestodocsustento->appendChild($xml->createElement("valorImpuesto",number_format($factiva,2,'.','')));
                                   }
                    
                                   if($facbice>0)
                                   {
                                   $impuestodocsustento=$impuestosdocsustento->appendChild($xml->createElement("impuestoDocSustento",' '));
                                        $impuestodocsustento->appendChild($xml->createElement("codImpuestoDocSustento","3"));
                                        $impuestodocsustento->appendChild($xml->createElement("codigoPorcentaje",""));
                                        $impuestodocsustento->appendChild($xml->createElement("baseImponible",number_format($facbice,2)));
                                        $impuestodocsustento->appendChild($xml->createElement("tarifa",$facpirbp));
                                        $impuestodocsustento->appendChild($xml->createElement("valorImpuesto",$factirbp));
                                   }
                    
                                   if($facbirbp>0)
                                   {
                                   $impuestodocsustento=$impuestosdocsustento->appendChild($xml->createElement("impuestoDocSustento",' '));
                                        $impuestodocsustento->appendChild($xml->createElement("codImpuestoDocSustento","5"));
                                        $impuestodocsustento->appendChild($xml->createElement("codigoPorcentaje",""));
                                        $impuestodocsustento->appendChild($xml->createElement("baseImponible",round($facbirbp,2)));
                                        $impuestodocsustento->appendChild($xml->createElement("tarifa",$facpirbp));
                                        $impuestodocsustento->appendChild($xml->createElement("valorImpuesto",$factirbp));
                                   }
                    

                    
// tabla 19 CE
// RENTA 1
// IVA 2
// ISD 6     
                              $retenciones=$docsustento->appendChild($xml->createElement("retenciones",''));
                                   $totreten=0;
//                                    while($aso_docu2=msql_fetch_assoc($res_docu2))
                                   while($aso_docu2=msql_fetch_assoc($res_docu2))
                                   {
                                   $retencion=$retenciones->appendChild($xml->createElement("retencion",''));
                                        //Tabla 20
                                        $cair=trim($aso_docu2['cair']);
                                        $puni=$aso_docu2['puni'];
                                        $biva=$aso_docu2['subtiva'];
                                        $brta=$aso_docu2['subtot'];
                                        $deta=$aso_docu2['detalle'];

//                                         $coddocsus=r_fiel('docu',$aso_docu2['docum'],'tico');
                                        if($cair>="300"){$tabla20='1';}
                                        else{$tabla20='2';}

                                        if($tabla20=='1'){$tabla21=$cair;}

                                        if($tabla20=='2')
                                        {
                                             if($puni==30){$tabla21='1';} //OK
                                             if($puni==70){$tabla21='2';}
                                             if($puni==100){$tabla21='3';}

                                             if($puni==10){$tabla21='9';}
                                             if($puni==20){$tabla21='10';}
                                             if($puni==50){$tabla21='11';}

                                             if($puni==0){$tabla21='7';}

                                        }

                                        if($puni==5){$tabla21='5480';}
                                        $xfecha= date('d/m/Y' ,strtotime($aso_docu2['fecha']));

                                        $retencion->appendChild($xml->createElement("codigo",$tabla20));
                                        $retencion->appendChild($xml->createElement("codigoRetencion",$tabla21));
                                        $retencion->appendChild($xml->createElement("baseImponible",number_format($aso_docu2['cant'],2,'.','')));
                                        $retencion->appendChild($xml->createElement("porcentajeRetener",number_format($aso_docu2['puni'],2,'.','')));
//                                         $retencion->appendChild($xml->createElement("valorRetenido",number_format($aso_docu2['tcant'],2,'.','')));
                                        $retencion->appendChild($xml->createElement("valorRetenido",number_format($aso_docu2['total'],2,'.','')));
                                        $totreten+=$aso_docu2['total'];
//                                         $retencion->appendChild($xml->createElement("codDocSustento",$coddocsus));
//                                         $retencion->appendChild($xml->createElement("numDocSustento",$aso_docu2['ptoem'].$aso_docu2['numer']));
//                                         $retencion->appendChild($xml->createElement("fechaEmisionDocSustento",$xfecha));
                                        
                                   }
                    
//                               msql_data_seek($res_fact);
                    // obligatori coddocsustento=41
//                               $reembolsos=$docsustento->appendChild($xml->createElement("reembolsos",''));
//                                    $reembolsodetalle=$reembolsos->appendChild($xml->createElement("reembolsoDetalle",''));
//                                    $detalleimpuestos=$reembolsos->appendChild($xml->createElement("detalleImpuestos",''));
//                                         $detalleimpuesto=$detalleimpuestos->appendChild($xml->createElement("detalleImpuesto",''));
                    
                    
                              $pagos=$docsustento->appendChild($xml->createElement("pagos",''));
                                   $xpago='20';
//                                    $xtotpago=msql_result($res_fact,0,'stotal');
                                   $xtotpago=$fact1['total'];
                                   if($xtotpago==0)
                                   {$xtotpago=$importetotal;}
                                   $xtotpago=$xtotpago-abs($totreten);
                                   $pago=$pagos->appendChild($xml->createElement("pago",''));
                                        $pago->appendChild($xml->createElement("formaPago",$xpago));
                                        $pago->appendChild($xml->createElement("total",round($xtotpago,2)));
                         
                    
                    
                    
// 				$detalles=$compelec->appendChild($xml->createElement("impuestos"));
// 				{
// 					while($aso_docu2=msql_fetch_assoc($res_docu2))
// 					{
// 						$detalle=$detalles->appendChild($xml->createElement("impuesto"));
// 						{
// 						}
// 					}	
// 				}
				
                    }

                    
                         
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional"));
				$adicionales=$docu1['infoadic'];
				$adicionales=str_replace('[[','<campoAdicional nombre="',$adicionales);
				$adicionales=str_replace(']]','">',$adicionales);
				$adicionales=str_replace('||','</campoAdicional>',$adicionales);

// 				$adicionales=str_replace('{"','<campoAdicional nombre="',$adicionales);
// 				$adicionales=str_replace('":"','">',$adicionales);
// 				$adicionales=str_replace('"}','.</campoAdicional>',$adicionales);
        
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",$adicionales));
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
				{
                         
                    $headAdic=array();
                    $headAdic[1]['nombre']='Concepto';
                    $headAdic[1]['valor']=$docu1['concepto'];
                    $headAdic[2]['nombre']='Contribuyente';
                    $headAdic[2]['valor']=$docu1['enti_tipoCont'];
                    $headAdic[3]['nombre']='Direccion';
                    $headAdic[3]['valor']=$docu1['enti_direccion'];
                    $headAdic[3]['nombre']='Telefono';
                    $headAdic[3]['valor']=$docu1['enti_telefono'];
                    $headAdic[3]['nombre']='Email';
                    $headAdic[3]['valor']=$docu1['enti_email'];
                    
// 				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional","[[ADICIONALES]]"));
				$infoAdic=$compelec->appendChild($xml->createElement("infoAdicional",""));
                    for($idx=1; $idx<=count($headAdic); $idx++)
                    {
                         if(!empty($headAdic[$idx]['valor']))
                         {
                              $campoAdic=$infoAdic->appendChild($xml->createElement("campoAdicional",$headAdic[$idx]['valor']));  
                              $campoAdic->setAttribute("nombre",$headAdic[$idx]['nombre']);
                         }
                    }

                         
                         
				}
			}
		}
    
    
//           $dir_ce=mk_subdce($clave_acceso);
// 		$xml3=$rutace.$dir_ce.$clave_acceso.'.xml';
          
          $ruta_ce='../_cele/';
          $dir_ce=mkdir_ce($clave_acceso);
          $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
          
          
		$xml->formatOut=true;
		$xml->save($xml3);
		$xmlfile=file_get_contents($xml3);
          
          $xmlfile=str_replace("\n", " ", $xmlfile);
		$xmlfile=str_replace("&nbsp;",' ',$xmlfile);
          $xmlfile=xml_chr13($xmlfile);
          
          file_put_contents($xml3,$xmlfile);
          
    
// 		$xmlfile=str_replace('[[ADICIONALES]]',$adicionales,$xmlfile);
// 		$xmlfile=str_replace('&','&amp;',$xmlfile);
// 		$xmlfile=str_replace('´´','&quot;',$xmlfile);
// 		$xmlfile=str_replace('``','&quot;',$xmlfile);

//           $xmlfile=str_replace('°','',$xmlfile);
// 		$xmlfile=str_replace('½','(1/2)',$xmlfile);
// 		$xmlfile=str_replace('º','*',$xmlfile);
// 		$xmlfile=str_replace('Ø','0',$xmlfile);
// 		$xmlfile=str_replace('À','A',$xmlfile);
// 		$xmlfile=str_replace('Ò','O',$xmlfile);
// 		$xmlfile=str_replace('·',' ',$xmlfile);
      
// 		$xmlfile=str_replace('N°','No.',$xmlfile);
// 		$xmlfile=str_replace('\n',' ',$xmlfile);
// 		$xmlfile=str_replace("\n",' ',$xmlfile);
// 		$xmlfile=str_replace(',','.',$xmlfile);
// 		$xmlfile=str_replace("&nbsp;",' ',$xmlfile);

// 		$xmlfile=str_replace("'",'&apos;',$xmlfile);

    
//           $xmlfile=xml_chr13($xmlfile);
// 		file_put_contents($xml3,$xmlfile);

    
//           $sql_cele="update clac0 set clac_xml1=null where clac_codigo='".$clave_acceso."'";
// 		$res_cele=msql_query($sql_cele,$link_data);

// 		$sql_cele="update clac0 set clac_xml1='".$xmlfile."' where clac_codigo='".$clave_acceso."'";
// 		$res_cele=msql_query($sql_cele,$link_data);
          
//           if($codDoc!='06' and $codDoc!='07')  
//           {val_xml1($clave_acceso);}
    
// 		return $xml3;
// 		return $xmlfile;
		return $claveacc;
	}
}


function fir_cexml_old($clave_acceso)
{
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     if(empty($clave_acceso)){return;}

     $empr0=data_maes('empr',$cfg_empr);
     $clac1=data_clac($clave_acceso);
     $docu=$clac1['docu'];
     $idnum=$clac1['idnum1'];
     $firmafec=$clac1['firmafec'];
     $recepfec=$clac1['recepfec'];
     $autorfec=$clac1['autorfec'];
     $claveacc=$clac1['claveacc'];
     $claveacc=$clave_acceso;
     $emisor=substr($clave_acceso,10,10);
     
     if($autorfec>='2000-01-01'){return ': AUTORIZADO : '.$autorfec;}
     if($recepfec>date('Y-m-d H:i:s',strtotime('-60 minutes'))){return ': ENVIADO : '.$autorfec;}     
          
     $docu1=data_docu($docu,$idnum);
     $docu0=data_maes('docu',$docu);
     $tabla=$docu0['docu_tabla'];
     $tcel=$docu0['docu_tcel'];
     
     $tabla1=$tabla.'1';
     $tabla2=$tabla.'2';
     $mensaje='';
     
     $sql_pk12='select * from pk120 where ifnull(pk12_status,"")not in ("O","X") and pk12_enti like "'.$emisor.'%" order by pk12_codigo desc limit 1';
     $res_pk12=msql_query($sql_pk12,$link_data);
     $aso_pk12=msql_fetch_assoc($res_pk12);
     
     $pk12pass=$aso_pk12['pk12_pass'];
     if(empty($pk12pass))
     {$pk12pass=$empr0['empr_p12pass'];}

     $pk12file=$aso_pk12['pk12_file'];
//      $pk12='../pk12/'.$pk12file;
//      $pk12='../.pk12/'.$pk12file;
     $pk12='../_pk12/'.$pk12file;
     
     $pk12cont=file_get_contents($pk12);
     $pk12caduca=p12_vali_date($pk12cont,$pk12pass);
     if($pk12caduca < date('Y-m-d H:i:s')){return 'FIRMA CADUCADA';}
     
     $domain=$_SERVER['SERVER_NAME'];
     $domain=str_replace($cfg_empr.'.','',$domain);
     
     $ruta_ce='../_cele/';
     $dir_ce=mkdir_ce($claveacc);
     $xml1=$ruta_ce.$dir_ce.$claveacc.'.xml';
     $xml2=$ruta_ce.$dir_ce.$claveacc.'.sign.xml';
     $xmlr=$domain.'/_cele/'.$dir_ce.$claveacc.'.xml';
     
     $url='https://vcrxol.jvmhost.net/firmador/firma2.php';
//      $url='https://vcrxol.com/firmador/firma3.php';     

     $datos['xmlfile']=new CURLFile($xml1, 'application/xml',$claveacc.'.xml');
     $datos['p12file']=new CURLFile($pk12, 'application/x-pkcs12',$emisor.'.p12');
     $datos['p12pass']=$pk12pass;
     $datos['claveacc']=$claveacc;
     $datos['empr']=$cfg_empr;

     
//      echo '==> '.$datos['xmlfile'];
//      echo '==> '.$datos['p12file'];
//      var_dump2($datos);
//      return;
     
// $proxy = "23.122.184.9:8888"; // Dirección y puerto del proxy
// $proxyUserPwd = "usuario:contraseña"; // Opcional: usuario y contraseña para el proxy
// echo '===='.$url;


     $ch = curl_init();
     // Configurar opciones de cURL para hacer una solicitud POST
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, true);
     // para datos
//      curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datos));
     // para archivos
     curl_setopt($ch, CURLOPT_POSTFIELDS, $datos);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // 5 segundos     
     curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 30 segundos     
     
//      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // Desactivar la verificación SSL (usar solo si el sitio es de confianza)
//      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // Desactivar la verificación del host SSL

     // Habilita la opción para usar un proxy
//      curl_setopt($ch, CURLOPT_PROXY, $proxy);
     // Si el proxy requiere autenticación
//      curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyUserPwd);     
     
     $xuseragent=rand_useragent();
     curl_setopt($ch, CURLOPT_USERAGENT, $xuseragent);     
     
//      echo '<br>== UA == '.$xuseragent;
     $response = curl_exec($ch);
//      $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//      $error = curl_error($ch);
     curl_close($ch);
     
//      if ($respuesta && $httpCode === 200){}
//      else{}
          
     
     $mensaje='';

//      echo '==============/*/*/*';
     if(curl_errno($ch))
     {$mensaje= 'Error: ' . curl_error($ch);}     
     
     if(mb_stristr2($response,$claveacc))
     if(mb_stristr2($response,'Signature'))
     {
          file_put_contents($xml2, $response);
          $mensaje='FIRMA OK';
          $sql_updt='update '.$tabla1.' set firmafec=now() where idnum1="'.$idnum.'"';
          $res_updt=msql_query($sql_updt,$link_data);
     }
     
     echo '<br>';
     echo $response;

     
     return $mensaje;     
}



function fir_cexml($clave_acceso)
{
     
     
//      echo '*/*/*/*/AAAA';
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     if(empty($clave_acceso)){return;}

     $empr0=data_maes('empr',$cfg_empr);
     $clac1=data_clac($clave_acceso);
     $docu=$clac1['docu'];
     $idnum=$clac1['idnum1'];
     $firmafec=$clac1['firmafec'];
     $recepfec=$clac1['recepfec'];
     $autorfec=$clac1['autorfec'];
     $claveacc=$clac1['claveacc'];
     $claveacc=$clave_acceso;
     $emisor=substr($clave_acceso,10,10);
     
     if($autorfec>='2000-01-01'){return ': AUTORIZADO : '.$autorfec;}
     if($recepfec>date('Y-m-d H:i:s',strtotime('-60 minutes'))){return ': ENVIADO : '.$autorfec;}     
     
     $docu1=data_docu($docu,$idnum);
     $docu0=data_maes('docu',$docu);
     $tabla=$docu0['docu_tabla'];
     $tcel=$docu0['docu_tcel'];
     
     $tabla1=$tabla.'1';
     $tabla2=$tabla.'2';
     $mensaje='';

     $sql_pk12='select * from pk120 where ifnull(pk12_status,"")not in ("O","X") and pk12_enti like "'.$emisor.'%" order by pk12_codigo desc limit 1';
     $res_pk12=msql_query($sql_pk12,$link_data);
     $aso_pk12=msql_fetch_assoc($res_pk12);
     
     $pk12pass=$aso_pk12['pk12_pass'];
     if(empty($pk12pass))
     {$pk12pass=$empr0['empr_p12pass'];}

     $pk12file=$aso_pk12['pk12_file'];
     $pk12='../_pk12/'.$pk12file;
     
//      $pk12cont=file_get_contents($pk12);
     $pk12caduca=p12_vali_date($pk12file,$pk12pass);
     if($pk12caduca < date('Y-m-d H:i:s')){return 'FIRMA CADUCADA';}
     
     
     if(mb_stristr2($pk12caduca,'incorrect')){echo 'PASSWORD INCORRECTO';}
          
          
//      echo '<br>';
//      echo '<br>'.$pk12file;
//      echo '<br>';
//      echo '<br>'.$pk12pass;
//      echo '<br>';
//      echo '<br>'.$pk12caduca;
//      echo '<br>';
//      echo '<br>'.$pk12cont;
     
     $domain=$_SERVER['SERVER_NAME'];
     $domain=str_replace($cfg_empr.'.','',$domain);
     
     $ruta_ce='../_cele/';
     $dir_ce=mkdir_ce($claveacc);
     $xml1=$ruta_ce.$dir_ce.$claveacc.'.xml';
     $xml2=$ruta_ce.$dir_ce.$claveacc.'.sign.xml';
     $xmlr=$domain.'/_cele/'.$dir_ce.$claveacc.'.xml';

     {
          $public_path=$_SESSION['public_path'];
          $jarFile=$public_path.'_java/sr2.jar';
          $javaCommand = "java -jar '../_java/p12_sri.jar' '/home/vcrxol/public_html/_cele/".$dir_ce."' '".$claveacc."' '/home/vcrxol/public_html/_pk12/".$pk12file."' '".$pk12pass."'";
//           echo '<br>==> '.$javaCommand;
          $response = shell_exec($javaCommand);
          
          $response=file_get_contents('../_cele/'.$dir_ce.$claveacc.'.sign');
          @unlink('../_cele/'.$dir_ce.$claveacc.'.sign');
          
     }

     
     
     if(mb_stristr2($response,$claveacc))
     if(mb_stristr2($response,'Signature'))
     {
          $mensaje='FIRMA OK ';
          $sql_updt='update '.$tabla1.' set firmafec=now() where idnum1="'.$idnum.'"';
          $res_updt=msql_query($sql_updt,$link_data);
          file_put_contents($xml2, $response);
     }
     return $mensaje;     
}



function fir_cexml_PHP($clave_acceso)
{
     return;
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     
     $empr0=data_maes('empr',$cfg_empr);
     $ruc=substr($clave_acceso,10,10);
     
     $tabla='';
     if(substr($clave_acceso,8,2)=='01'){$tabla='vtas';}
     if(substr($clave_acceso,8,2)=='03'){$tabla='comp';}
     if(substr($clave_acceso,8,2)=='04'){$tabla='vtas';}
     if(substr($clave_acceso,8,2)=='06'){$tabla='guia';}
     if(substr($clave_acceso,8,2)=='07'){$tabla='retp';}
     
     $sql_docu='select * from '.$tabla.'1 ';
     $sql_docu.='where claveacc="'.$clave_acceso.'" ';
     $sql_docu.='and ifnull(status,"")not in ("O","X") ';
     $sql_docu.='and ifnull(autorfec,"2000-01-01 00:00:00")<="2000-01-01 00:00:00" ';
     $res_docu=msql_query($sql_docu,$link_data);
     if(msql_num_rows($res_docu)==0){return;}

     $ruta_ce='../_cele/';
     $dir_ce=mkdir_ce($clave_acceso);
     $xml3=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
     $xmlfile=file_get_contents($xml3);
     
//      if(!empty($xmlfile))

     if(mb_stristr2($xmlfile,$clave_acceso))
     {
          $sql_pk12='select * from pk120 order by pk12_file desc limit 1';
          $res_pk12=msql_query($sql_pk12,$link_data);
          $pk12=msql_fetch_assoc($res_pk12);
          
          $pk12file=$aso_pk12['pk12_file'];
          $pk12='../_pk12/'.$pk12file;
          
          
//           $p12_file='pk12/'.$pk12['pk12_file'];
//           $p12_file='.pk12/'.$pk12['pk12_file'];
//           $p12_file='_pk12/'.$pk12['pk12_file'];
          
          $p12_pass=$pk12['pk12_pass'];
//           $p12_cont=file_get_contents($pk12);
          $caduca=p12_vali_date($pk12file,$p12_pass);
          
          $res_pem = array();
          openssl_pkcs12_read($p12_cont, $pem_cont, $p12_pass);
          
     //      $pem_file=str_replace('.xml','.pem',$p12_file);
     //      file_put_contents($pem_file,$pem_cont);          
          
// if($worked) {
//     echo '<pre>', print_r($pem_cont, true), '</pre>';
// } else {
//     echo openssl_error_string();
// }     

          
          
          
          
          // robrichard github
          {
// use RobRichards\XMLSecLibs\XMLSecurityDSig;
// use RobRichards\XMLSecLibs\XMLSecurityKey;

// Load the XML to be signed
$doc = new DOMDocument();
// $doc->load('./path/to/file/tobesigned.xml');
$doc->load($xml3);

// Create a new Security object 
$objDSig = new XMLSecurityDSig();
// Use the c14n exclusive canonicalization
$objDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N);
// Sign using SHA-256
$objDSig->addReference(
    $doc, 
    XMLSecurityDSig::SHA256, 
    array('http://www.w3.org/2000/09/xmldsig#enveloped-signature')
);

// Create a new (private) Security key
$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, array('type'=>'private'));
               
/*
If key has a passphrase, set it using
$objKey->passphrase = '<passphrase>';
*/
$objKey->passphrase = $p12_pass;
               
// Load the private key
// $objKey->loadKey('./path/to/privatekey.pem', TRUE);
               
// $objKey->loadKey($pem_file, true);

return;               

// Sign the XML file
$objDSig->sign($objKey);

// Add the associated public key to the signature
$objDSig->add509Cert(file_get_contents('./path/to/file/mycert.pem'));

// Append the signature to the XML
$objDSig->appendSignature($doc->documentElement);
// Save the signed XML
$doc->save('./path/to/signed.xml');               
               
               
          }
          return;
          
          
          //robrichards chtgpt
          {

//                require 'vendor/autoload.php'; // Asegúrate de ajustar la ruta si es necesario

//                use RobRichards\XMLSecLibs\XMLSecurityDSig;
//                use RobRichards\XMLSecLibs\XMLSecurityKey;
               
//                   include_once('../xmlseclibs-master/src/XMLSecurityDSig.php');
//                   include_once('../xmlseclibs-master/src/XMLSecurityKey.php');

               // Ruta al archivo XML a firmar
//                $archivo_xml = 'ruta/al/archivo.xml';
               $archivo_xml = $xml3;

//                // Ruta al archivo PKCS#12 (p12)
//                $archivo_p12 = 'ruta/al/certificado.p12';
               $archivo_p12 = $p12_file;
               $contendio_p12 = $p12_cont;

               // Contraseña del archivo p12
//                $contrasena_p12 = 'tu_contrasena';
               $contrasena_p12 = $p12_pass;

               // Cargar el contenido del archivo XML
               $xml_contenido = file_get_contents($archivo_xml);

               // Crear un objeto XMLSecurityDSig
               $xmlseclibsDSig = new XMLSecurityDSig();
               $xmlseclibsDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N);

//                // Cargar el certificado PKCS#12 y establecer la clave privada
               $key = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, ['type' => 'private']);
//                $key->loadKey($archivo_p12, true, $contrasena_p12);
//                $key->loadKey($archivo_p12, true, false);
//                $key->loadKey($contendio_p12, false, false);
//                $xmlseclibsDSig->addPrivateKey($key);

//                // Cargar el documento XML
//                $xmlseclibsDSig->loadSignature($xml_contenido);

//                // Añadir la referencia al documento XML
//                $xmlseclibsDSig->addReference(
//                    $xml_contenido,
//                    XMLSecurityDSig::SHA1,
//                    ['http://www.w3.org/2000/09/xmldsig#enveloped-signature']
//                );

//                // Firmar el documento
//                $xmlseclibsDSig->sign();

//                // Agregar la firma al documento XML
//                $xmlseclibsDSig->appendSignature($xml_contenido);

//                // Guardar el XML firmado
//                $archivo_xml_firmado = 'ruta/de/salida/archivo_firmado.xml';
// //                file_put_contents($archivo_xml_firmado, $xml_contenido);

// //                echo "XML firmado correctamente. Se ha guardado en $archivo_xml_firmado.";

               
          }
          
          
          
          
          return;
          
          $headers = array("Content-Type" => "multipart/form-data");
          $vars = array('xmlfile'=>$xmlfile, 'p12file'=>$p12_file, 'p12pass'=>$p12_pass);
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, "https://vcrxol.jvmhost.net/firmador/firma1.php");
          curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
          curl_setopt($ch, CURLOPT_POST, 1);
          curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
     //      curl_setopt($ch, CURLOPT_SAFE_UPLOAD,true);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
          curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
          $result = curl_exec($ch);
          

          if(mb_stristr2($result,$clave_acceso))
          {
//                $sql_updt='update clac0 set clac_xml2=\''.$result.'\' where clac_codigo="'.$clave_acceso.'"';
//                $res_updt=msql_query($sql_updt,$link_data);
               echo ' */*/*/* OK' ;
               if(msql_errno($link_data)==0)
               {
//                     $sql_updt='update '.$tabla.'1 set firmafec=now() where claveacc="'.$claveacc.'"';
//                     $res_updt=msql_query($sql_updt,$link_data);
               }
          }
     }
     
}     


function ws_recep($clave_acceso)
{
     $ambiente=substr($clave_acceso,23,1); // 1 pruebas 2 produccion
//      if((time()-$_SESSION['ws_recep_'.$ambiente])<(3*60)){return 'WS_RECEP OFF';}
     
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     if(empty($clave_acceso)){return;}

//      dtec de 8:00 a 20:00
//      echo '<br>=== '.date('H');
     if($cfg_empr=='dtec' and date('dmY')==substr($clave_acceso,0,8) and date('H')>='08' and date('H')<'20'){return '::: OUT OF TIME : ';}
     if($cfg_empr=='vmre' and date('dmY')==substr($clave_acceso,0,8) and date('H')>='08' and date('H')<'20'){return '::: OUT OF TIME : ';}
     
     $empr0=data_maes('empr',$cfg_empr);
     $clac1=data_clac($clave_acceso);
     $docu=$clac1['docu'];
     $idnum=$clac1['idnum1'];
     $firmafec=$clac1['firmafec'];
     $recepfec=$clac1['recepfec'];
     $autorfec=$clac1['autorfec'];
     $autormsj=$clac1['autormsj'];
     if($firmafec<'2000-01-01'){return ': FALTA FIRMA :'; }
     if($autorfec>='2000-01-01'){return ': AUTORIZADO : '.$autorfec;}
     if(err_autor($autormsj)!=0)
     {
//           if($recepfec>=date('Y-m-d H:i:s',strtotime('-120 minutes')))
//           {return ': ERROR EN AUTORIZACION : '.$autormsj;}
     }
     // resetear recepmsj,autormsj
     
     $ambiente=substr($clave_acceso,23,1); // 1 pruebas 2 produccion
     $srvr_test='https://celcer.sri.gob.ec';
     $srvr_prod='https://cel.sri.gob.ec';
     $url_recep='/comprobantes-electronicos-ws/RecepcionComprobantesOffline?wsdl';
     $ws_recep=$srvr_test.$url_recep;
     if($ambiente=='2')
     {$ws_recep=$srvr_prod.$url_recep;}	
     
     $ws_ok=verificarWebService($ws_recep);
     if($ws_ok!=1)
     {
//           $_SESSION['ws_recep_'.$ambiente]=time();
//           return 'WS_RECEP OFF';
     }
     
     $codDoc=substr($clave_acceso,8,2); 
     $tabla='vtas';
     if($codDoc=='03'){$tabla='comp';}
     if($codDoc=='06'){$tabla='guia';}
     if($codDoc=='07'){$tabla='retp';}
     
     $sql_docu ='select * from '.$tabla.'1 ';
     $sql_docu.='where claveacc="'.$clave_acceso.'" ';
//      $sql_docu.='and recepmsj not like "RECIBIDA%" ';
     $sql_docu.='and ifnull(autorfec,"2000-01-01 00:00:00")<="2000-01-01 00:00:00"';
     $sql_docu.='and ifnull(status,"") not in ("O","X")';
     $res_docu=msql_query($sql_docu,$link_data);
     if(msql_num_rows($res_docu)==0){return '*** NO DOCU ***';}
     
     $ruta_ce='../_cele/';
     $dir_ce=mkdir_ce($clave_acceso);
     
     $xmlfile=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
     $xmlfiles=$ruta_ce.$dir_ce.$clave_acceso.'.sign.xml';
     $xmlfiler=$ruta_ce.$dir_ce.$clave_acceso.'.sri.xml';

     if(file_exists($xmlfiles))
     {
//           echo 'SI EXISTE FIRMADO OK ';
     }
     $xmlfirmado=file_get_contents($xmlfiles);
     
//      $xmlfirmado1=file_get_contents($xmlfile);
//      $xmlfirmado2=file_get_contents($xmlfiles);
     
//      $clac0=data_maes('clac',$clave_acceso);
//      $xmlfirmado1=$clac0['clac_xml1'];
//      $xmlfirmado2=$clac0['clac_xml2'];
     
//      echo '<br>**************';
//      echo '<br> XML Name ====> '.$xmlfiles;
//      echo '<br> XML Content ====> '.$xmlfirmado;    
//      echo '<br> XML Content ====> '.$xmlfirmado2;
//      echo '<br> WS Rrecep ====> '.$ws_recep;
//      echo '<br>';
//      return;

     ini_set('default_socket_timeout', 120);     
//      $client = new SoapClient($wsdl, ['trace' => 1, 'exceptions' => true]);     
     
//      if(mb_stristr2($xmlfirmado,'*** Nuev')){return ': ERROR EN DESCRIPCION : ';}
     
     $olClient = new SoapClient($ws_recep, array('encoding'=>'UTF-8'));
//      $olClient = new SoapClient($ws_recep, array('encoding'=>'UTF-8','trace'=>'1','exeptions'=>true));
     try{$olResp = $olClient->validarComprobante(array('xml'=>$xmlfirmado));}
     catch (Exception $exception){echo '<br>Exception : '.$exception .'<br> WS : '.$ws_recep;}
  
     $estado=	$olResp->RespuestaRecepcionComprobante->estado;
     $error=	$olResp->RespuestaRecepcionComprobante->comprobantes->comprobante->mensajes->mensaje->mensaje;
     $ident=	$olResp->RespuestaRecepcionComprobante->comprobantes->comprobante->mensajes->mensaje->identificador;	
     $adici=utf8_decode(	$olResp->RespuestaRecepcionComprobante->comprobantes->comprobante->mensajes->mensaje->informacionAdicional);
	
//      echo '<br>===>';
//      echo '<br>===>'.$xmlfirmado;
//      echo '<br>===>'.$estado;
//      echo '<br>===>'.$error;
//      echo '<br>===>'.$ident;
//      echo '<br>===>'.$adici;
     
     $mensaje='';
     $mensaje.=$estado;	

     if(!mb_stristr($estado,'RECIBIDA'))
     {
          $adici=str_replace("cvc-","",$adici);
          $adici=str_replace("-valid","",$adici);
          $adici=str_replace("is not facet-valid with respect to","NO VALIDO ==>",$adici);
          $adici=str_replace("is not facet with respect to","NO VALIDO ==>",$adici);
          $adici=str_replace("for type","DATO :",$adici);
          $adici=str_replace("Se encontr","",$adici);
          $adici=str_replace("error en la estructura del comprobante:","Error Estructura:",$adici);

          $mensaje.=' ==> IDENTIF : '.$ident;	
          $mensaje.=' ==> ERROR : '.$error;	
          $mensaje.=' ==> INFO : '.$adici;	
     }

     $sql_cele ='update '.$tabla.'1 set ';
     if(mb_stristr($estado,'RECIBIDA')){$sql_cele.='recepfec=now(),';}

     $updt_ok=1;     
     if($ident=='43'){$updt_ok=0;} // 43 CLAVE REGISTRADA
//      if($ident=='90'){$updt_ok=0;} // 90 LIMITE DE INTENTOS

     if($updt_ok==1)
     {$sql_cele.='recepmsj="'.$mensaje.'",';}

     $sql_cele.='status=status ';
     $sql_cele.='where claveacc="'.$clave_acceso.'"';
     $res_cele = msql_query($sql_cele,$link_data);
     
     //43 CLAVE DE ACCESO REGISTRADA  
//      if($error==43){ws_autor($clave_acceso);}
     
     if(1==2)
     {
     echo '<br>';
     echo '<br>==>'.$estado;
     echo '<br>==>'.$mensaje;
     }
     
     return $estado;
}     



function ws_autor($clave_acceso)
{
     $ambiente=substr($clave_acceso,23,1); // 1 pruebas 2 produccion
//      if((time()-$_SESSION['ws_autor_'.$ambiente])<(3*60)){return 'WS_AUTOR OFF';}
     
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     if(empty($clave_acceso)){return;}
     
     $empr0=data_maes('empr',$cfg_empr);
     
     $clac1=data_clac($clave_acceso);
     $docu=$clac1['docu'];
     $idnum=$clac1['idnum1'];
     $firmafec=$clac1['firmafec'];
     $recepfec=$clac1['recepfec'];
     $autorfec=$clac1['autorfec'];
     if($autorfec>='2000-01-01'){return ': AUTORIZADO :'.$autorfec;}
    
     
     $ambiente=substr($clave_acceso,23,1); // 1 pruebas 2 produccion
     $ws_ok=verificarWebService($ws_autor);
     if($ws_ok!=1)
     {
          $_SESSION['ws_autor_'.$ambiente]=time();
//           return 'WS_AUTOR OFF';
     }

     
     
     $srvr_test='https://celcer.sri.gob.ec';
     $srvr_prod='https://cel.sri.gob.ec';
     $url_autor='/comprobantes-electronicos-ws/AutorizacionComprobantesOffline?wsdl';
     $ws_autor=$srvr_test.$url_autor;
     if($ambiente=='2')
     {$ws_autor=$srvr_prod.$url_autor;}	
     
     $fecha_ws=date('Y-m-01',strtotime(' -3 month'));
          
     $cdia=substr($clave_acceso,0,2);
     $cmes=substr($clave_acceso,2,2);
     $canio=substr($clave_acceso,4,4);
     $cfecha=$canio.'-'.$cmes.'-'.$cdia;
     
     if($cfecha<$fecha_ws){return;}
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     
     if(!val_clac($clave_acceso)){return false;}
     $empr0=data_maes('empr',$cfg_empr);
     if(strlen(trim($empr0['empr_ruc']))<10){return false;}
     
     $ruta_ce='../_cele/';
     $dir_ce=mkdir_ce($clave_acceso);
     
     $xmlfile=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
     $xmlfiles=$ruta_ce.$dir_ce.$clave_acceso.'.sign.xml';
     $xmlfiler=$ruta_ce.$dir_ce.$clave_acceso.'.sri.xml';
     
//      $ambiente=substr($clave_acceso,23,1); // 1 pruebas 2 produccion
     $codDoc=substr($clave_acceso,8,2); 

     $tabla='';
     if(substr($clave_acceso,10,13)!=$empr0['empr_ruc'])
     {
          if($codDoc=='01'){$tabla='comp';}
          if($codDoc=='04'){$tabla='comp';}
          if($codDoc=='06'){$tabla='guia';}
          if($codDoc=='07'){$tabla='retc';}
     }
     
     if(substr($clave_acceso,10,13)==$empr0['empr_ruc'])
     {
          if($codDoc=='01'){$tabla='vtas';}
          if($codDoc=='03'){$tabla='comp';} // liquidacion
          if($codDoc=='04'){$tabla='vtas';}
          if($codDoc=='06'){$tabla='guia';}
          if($codDoc=='07'){$tabla='retp';}
     }
     
     if(mb_stristr2('.demo',$empr0['empr_codigo']))
     {
          if($codDoc=='01'){$tabla='comp';}
          if($codDoc=='03'){$tabla='comp';} // liquidacion
          if($codDoc=='04'){$tabla='comp';}
          if($codDoc=='06'){$tabla='guia';}
          if($codDoc=='07'){$tabla='retc';}
     }

     if(empty($tabla)){return;}
     
     if($empr0['empr_ceuser']==1){$tabla='vtas';}  

//      $srvr_test='https://celcer.sri.gob.ec';
//      $srvr_prod='https://cel.sri.gob.ec';
//      $url_autor='/comprobantes-electronicos-ws/AutorizacionComprobantesOffline?wsdl';
//      $ws_autor=$srvr_test.$url_autor;
//      if($ambiente=='2')
//      {$ws_autor=$srvr_prod.$url_autor;}	
     
     $params=array('claveAccesoComprobante'=>$clave_acceso);
     $result0 = new SoapClient($ws_autor);

//      echo '<br>=='.$clave_acceso;
     try{$result1=$result0->autorizacionComprobante($params);}
     catch (Exception $exception) {echo '<br> Excep :'.$exception;}  
     
     $result2=$result1->RespuestaAutorizacionComprobante->autorizaciones->autorizacion;

     $autornum='';
     $mensaje='';

     $estado=$result2->estado;
     $ident=$result2->mensajes->mensaje->identificador;
     $msj=$result2->mensajes->mensaje->mensaje;
     $tipo=$result2->mensajes->mensaje->tipo;
     $info=$result2->mensajes->mensaje->informacionAdicional;
          
     if($estado=='AUTORIZADO')
     {
          $autornum=$result2->numeroAutorizacion;
          $autorfec=$result2->fechaAutorizacion;
          $comprobante=$result2->comprobante;

          $mensaje.='==>IDENTIF A :'.$ident;	
          $mensaje.='==>'.$tipo.' :'.$msj;
          
          $sql_cele ='update '.$tabla.'1 set ';
          $sql_cele.='autorfec="'.$autorfec.'",';
          $sql_cele.='autornum="'.$autornum.'",';
          $sql_cele.='autormsj="'.$autormsj.'",';
          $sql_cele.='status=status ';
          $sql_cele.='where claveacc="'.$clave_acceso.'" ';
          $res_cele = msql_query($sql_cele,$link_data);
          
//           echo '*/*/*/============='.$sql_cele;

          $sql_clac ='update clac0 set ';
          $sql_clac.='clac_autorfec="'.$autorfec.'",';
          $sql_clac.='clac_autornum="'.$autornum.'",';
          $sql_clac.='clac_status="A" ';
          $sql_clac.='where clac_codigo="'.$clave_acceso.'" ';
          $res_clac=msql_query($sql_clac,$link_data);
          $mensaje=$autornum;

          // actualiza fecha recep
//           if(1==2)
          {
               $sql_cele ='update '.$tabla.'1 set ';
               $sql_cele.='recepfec="'.$autorfec.'",';
               $sql_cele.='status=status ';
               $sql_cele.='where claveacc="'.$clave_acceso.'" ';
               $sql_cele.='and(ifnull(recepfec,"")="") ';
               $res_cele = msql_query($sql_cele,$link_data);

               $sql_clac ='update clac0 set ';
               $sql_clac.='clac_recepfec="'.$autorfec.'",';
               $sql_clac.='clac_status="A" ';
               $sql_clac.='where clac_codigo="'.$clave_acceso.'" ';
               $sql_clac.='and(ifnull(clac_recepfec,"")) ';
               $res_clac=msql_query($sql_clac,$link_data);
          }

          
               $domg = new DOMDocument();
                    $domg->encoding = 'utf-8';
                    $domg->xmlVersion = '1.0';
                    $domg->xmlStandalone = true;
                    $domg->formatOutput = true;
          
               $autorizacion=$domg->appendChild($domg->createElement("autorizacion",""));
               foreach ($result2 as $key1=>$val1)
               {
                    if(gettype($val1)=='string')
                    {
                         if($key1=='comprobante')
                         {
                              $root=$autorizacion->appendChild($domg->createElement($key1,""));
                              $root->appendChild($domg->createCDATASection(html_entity_decode($val1)));
                         }
                         else
                         {$root=$autorizacion->appendChild($domg->createElement($key1,html_entity_decode($val1)));}
                    }
               }
               file_put_contents($xmlfiler,$domg->saveXML()); 
               file_put_contents($xmlfiles,$comprobante); 
          
     }
     else
     {
          $mensaje.='==>IDENTIF X: '.$ident;	
          $mensaje.='==>'.$tipo.' : '.$msj.' ==> '.$info;	
          // 	$mensaje.='==>TIPO :'.$tipo;	
          $sql_clac ='update '.$tabla.'1 set ';
          $sql_clac.='autormsj="'.$mensaje.'",';
          $sql_clac.='status=status ';
          $sql_clac.='where claveacc="'.$clave_acceso.'" ';
          $sql_clac.='and ifnull(autornum,"")="" ';
//           $sql_clac.='and (clac_autornum="" or clac_autornum is null)';
          $res_clac=msql_query($sql_clac,$link_data);
      
          $sql_clac ='update clac0 set ';
          $sql_clac.='clac_autormsj="'.$mensaje.'",';
          $sql_clac.='clac_status=clac_status ';
          $sql_clac.='where clac_codigo="'.$clave_acceso.'" ';
          $sql_clac.='and ifnull(clac_autornum,"")="" ';
//           $sql_clac.='and (clac_autornum="" or clac_autornum is null)';
          $res_clac=msql_query($sql_clac,$link_data);
      
//           echo '*/*/*/*/*'.$sql_clac;
     }
     return $mensaje;	
}

function upl_cexml($clave_acceso,$sri=0)
{
     
//      echo '============>'.$clave_acceso;
     
	if(substr($clave_acceso,23,1)!='2'){return '<br>'.'*** AMBIENTE INCORRECTO ***'; }
	if(!mb_stristr2('.01.04.05.06.07',substr($clave_acceso,8,2))){return '<br>'.'*** TIPO COMPROBANTE NO VALIDO ***';}
     
     if(!val_clac($clave_acceso)){return '<br>'.'*** CLAVE INVALIDA ***';}
     
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     
     $empr0=data_maes('empr',$cfg_empr);
     if(strlen(trim($empr0['empr_ruc']))<10){return false;}
     $miruc0=data_maes('enti',$empr0['empr_ruc']);
//      $clave0=data_maes('clac',$clave_acceso);

     $upl_ok=0;
     $ruta_ce='../_cele/';
     $dir_ce=mkdir_ce($clave_acceso);
     
     $xmlfile=$ruta_ce.$dir_ce.$clave_acceso.'.xml';
     $xmlfiles=$ruta_ce.$dir_ce.$clave_acceso.'.sign.xml';
     $xmlfiler=$ruta_ce.$dir_ce.$clave_acceso.'.sri.xml';
   	
	$codDoc=substr($clave_acceso,8,2); 
     
// 	if(ruc_tipo(substr($clave_acceso,10,13))=='0'){return '<br>'.'*** RUC INCORRECTO ***'; }
	{
		$tabla='comp';
		$docu='FP10';
		if($codDoc=='04')
		{
			$tabla='comp';
			$docu='NP10';
		}
    
		if($codDoc=='05')
		{
			$tabla='comp';
			$docu='FP05';
		}
    
		if($codDoc=='06')
		{
			$tabla='guia';
			$docu='GR20';
		}
          
		if($codDoc=='07')
		{
			$tabla='retc';
			$docu='RCLI';
		}
    
    
     // PROPIOS
         if(substr($clave_acceso,10,13)==$empr0['empr_ruc'] and $empr0['empr_mice']==1)
         {
              
//            echo 'CARGANDO PROPIOS';
               $tabla='vtas';
               $docu='FC10';
               if($codDoc=='04')
               {
                    $tabla='vtas';
                    $docu='FC10';
               }
               if($codDoc=='06')
               {
                    $tabla='guia';
                    $docu='GR10';
               }
               if($codDoc=='07')
               {
                    $tabla='retp';
                    $docu='RPRO';
               }
         }
    
          
	}

	if(!file_exists($xmlfiler) or $sri==1)
     {ws_autor($clave_acceso);}
     
	if(file_exists($xmlfiler))
	{
		$xml1=file_get_contents($xmlfiler);
          if(!mb_stristr2($xml1,'numeroAutorizacion')){echo '<br>SRI:'.$clave_acceso.'-->'.ws_autor($clave_acceso);}
    
		$dom1 = new DOMDocument('1.0', 'utf-8');
		$dom2 = new DOMDocument('1.0', 'utf-8');
		$dom3 = new DOMDocument('1.0', 'utf-8');
    
		$dom1->loadXML($xml1);
		$claveacc= $dom1->getElementsByTagName('claveAcceso')->item(0)->nodeValue;
		$atrzce= $dom1->getElementsByTagName('numeroAutorizacion')->item(0)->nodeValue;
		$atrzfe= $dom1->getElementsByTagName('fechaAutorizacion')->item(0)->nodeValue;
          $atrzfe=date('Y-m-d H:i:s',strtotime($atrzfe));

          
		$xml2=$dom1->getElementsByTagName('comprobante')->item(0)->nodeValue;
          $xml2=str_replace("\n",'',$xml2);
          $xml2=str_replace("\r",'',$xml2);
          $xml2=str_replace("&",'&amp;',$xml2);
          $xml2=trim($xml2);
          
          
		if(empty($claveacc)){$dom2->loadXML($xml2);}
		else{$dom2->loadXML($xml1);}

// 		$comprobanteVersion= $dom2->getElementsByTagName('comprobanteRetencion');
		$searchNode= $dom2->getElementsByTagName('comprobanteRetencion');
          foreach( $searchNode as $searchNode )
          {$version = $searchNode->getAttribute('version');}
    
		$claveacc=$dom2->getElementsByTagName('claveAcceso')->item(0)->nodeValue;
		$ptoe= $dom2->getElementsByTagName('estab')->item(0)->nodeValue.$dom2->getElementsByTagName('ptoEmi')->item(0)->nodeValue;;
		$numero= $dom2->getElementsByTagName('secuencial')->item(0)->nodeValue;
		$fecha= $dom2->getElementsByTagName('fechaEmision')->item(0)->nodeValue;


          // general
          {
               $emisor=$dom2->getElementsByTagName('ruc')->item(0)->nodeValue;
               $razsoc=$dom2->getElementsByTagName('razonSocial')->item(0)->nodeValue;
               $nomcom=$dom2->getElementsByTagName('nombreComercial')->item(0)->nodeValue;
               $matriz=$dom2->getElementsByTagName('dirMatriz')->item(0)->nodeValue;
               $obcon=$dom2->getElementsByTagName('obligadoContabilidad')->item(0)->nodeValue;
               $coesp=$dom2->getElementsByTagName('contribuyenteEspecial')->item(0)->nodeValue;
               
               $razsoc=str_replace('"CONTRIBUYENTE REGIMEN RIMPE"','',$razsoc);
               $razsoc=str_replace('"AGENTE DE RETENCION"','',$razsoc);
               $razsoc=str_replace('RESOLUCION No. NAC-DNCRASC20-00000001','',$razsoc);
               
               $nomcom=str_replace('"CONTRIBUYENTE REGIMEN RIMPE"','',$nomcom);
               $nomcom=str_replace('"AGENTE DE RETENCION"','',$nomcom);
               $nomcom=str_replace('RESOLUCION No. NAC-DNCRASC20-00000001','',$nomcom);
               
               
               $matriz=str_replace('"','\"',$matriz);
               
               new_maes('enti',$emisor,$razsoc);
               updt_maes('enti',$emisor,'razsoc',$razsoc);
               updt_maes('enti',$emisor,'nomcom',$nomcom);
               {
                    updt_maes('enti',$emisor,'direccion',$matriz);
                    updt_maes('enti',$emisor,'obcon',$obcon);
                    updt_maes('enti',$emisor,'coesp',$coesp);
               }
               
          }
          
          
          if($tabla=='vtas')
          {
               $emisor=$dom2->getElementsByTagName('identificacionComprador')->item(0)->nodeValue;
               $razsoc=$dom2->getElementsByTagName('razonSocialComprador')->item(0)->nodeValue;
               $nomcom='';
               $matriz=$dom2->getElementsByTagName('direccionComprador')->item(0)->nodeValue;
               $obcon='';
               $coesp='';
          }

          if($tabla=='retp')
          {
               $emisor=$dom2->getElementsByTagName('identificacionSujetoRetenido')->item(0)->nodeValue;
               $razsoc=$dom2->getElementsByTagName('razonSocialSujetoRetenido')->item(0)->nodeValue;
               $nomcom='';
               $matriz=$dom2->getElementsByTagName('dirEstablecimiento')->item(0)->nodeValue;
               $obcon='';
               $coesp='';

          }

          if($tabla=='guia')
          {
               $emisor=$dom2->getElementsByTagName('ruc')->item(0)->nodeValue;
               $razsoc=$dom2->getElementsByTagName('razonSocial')->item(0)->nodeValue;
               $nomcom='';
               $matriz=$dom2->getElementsByTagName('dirMatriz')->item(0)->nodeValue;
               $cedula1=$dom2->getElementsByTagName('rucTransportista')->item(0)->nodeValue;
               $cedula2=$dom2->getElementsByTagName('rucTransportista')->item(0)->nodeValue;
               $obcon='';
               $coesp='';
               $fecha= $dom2->getElementsByTagName('fechaFinTransporte')->item(0)->nodeValue;
          }

          if(substr($fecha,4,1)=='/')
          {$fecha=str_replace('/','-',$fecha);}
               
          if(substr($fecha,2,1)=='/')
          {$fecha=substr($fecha,-4).'-'.substr($fecha,3,2).'-'.substr($fecha,0,2);}
          
		$placa= $dom2->getElementsByTagName('placa')->item(0)->nodeValue;
		$propina= $dom2->getElementsByTagName('propina')->item(0)->nodeValue;
		$formapago= $dom2->getElementsByTagName('formaPago')->item(0)->nodeValue;
		$totsinimp= $dom2->getElementsByTagName('totalSinImpuestos')->item(0)->nodeValue;
		$totsubsid= $dom2->getElementsByTagName('totalSubsidio')->item(0)->nodeValue;
		
		$prop=10;
		if($totsinimp>0)
		{$prop=$propina/$totsinimp*100;}
		$enti=$emisor;
    
          $tipoid2='';
          //04 RUC
          //05 CEDULA
          //06 PASAPORTE
          //07 CONSUMIDOR FINAL
          //08 IDENTIFICACION DEL EXTERIOR
          //09 PLACA
		$tipoid2= $dom2->getElementsByTagName('tipoIdentificacionComprador')->item(0)->nodeValue;
		$ruc2= $dom2->getElementsByTagName('identificacionComprador')->item(0)->nodeValue;
		$razsoc2= $dom2->getElementsByTagName('razonSocialComprador')->item(0)->nodeValue;
		$direcc2= $dom2->getElementsByTagName('direccionComprador')->item(0)->nodeValue;
          
          
          if($tipoid2=='06' or $tipoid2=='08')
          {
              if($ruc2==$empr0['empr_ruc']){$tipoid2='04';}
              if($ruc2==substr($empr0['empr_ruc'],0,10)){$tipoid2='05';}
          }
          
          if($tipoid2=='06')
          {
               $sql_pass='select * from enti0 where enti_pasaporte="'.$ruc2.'" ';
               $res_pass=msql_query($sql_pass,$link_data);
               if(msql_num_rows($res_pass)==0)
               {
                    $sql_pass='select * from enti0 where enti_codigo like "'.substr($ruc2,0,10).'%" order by enti_codigo';
                    $res_pass=msql_query($sql_pass,$link_data);
               }
               if(msql_num_rows($res_pass)==0)
               {
                    new_pasaporte($ruc2,$razsoc2,$direcc2);
                    $res_pass=msql_query($sql_pass,$link_data);
               }
               $ruc2=msql_result($res_pass,0,'enti_codigo');
               $ruc20=data_maes('enti',$ruc2);
          }

          if($tipoid2=='08' and 1==2)
          {
               $sql_pass='select * from enti0 where enti_idexterior="'.$ruc2.'" ';
               $res_pass=msql_query($sql_pass,$link_data);
               if(msql_num_rows($res_pass)==0)
               {
                    new_idexterior($ruc2,$razsoc2,$direcc2);
                    $res_pass=msql_query($sql_pass,$link_data);
               }
               $ruc2=msql_result($res_pass,0,'enti_codigo');
          }

		// ruc en las retenciones
		$ruc2r= $dom2->getElementsByTagName('identificacionSujetoRetenido')->item(0)->nodeValue;
		$razsoc2r= $dom2->getElementsByTagName('razonSocialSujetoRetenido')->item(0)->nodeValue;
    
          $codDocMod=$dom2->getElementsByTagName('codDocModificado')->item(0)->nodeValue;
          $numDocMod=$dom2->getElementsByTagName('numDocModificado')->item(0)->nodeValue;
    
		if(!empty($ruc2r)){$ruc2=$ruc2r; $razsoc2=$razsoc2r;}
          
		$msjxml='';
		
		$sql_ruc2='select * from enti0 where enti_codigo like "'.$ruc2.'%" ';
		$res_ruc2=msql_query($sql_ruc2,$link_data);
		if(msql_num_rows($res_ruc2)==0){ruc_tipo($ruc2,'1');}
    
		$sql_ruc2='update enti0 set enti_descri="'.$razsoc2.'" where enti_codigo like "'.$ruc2.'%" and (ifnull(enti_descri,"")="" or enti_descri like "%sp;%")';
		$res_ruc2=msql_query($sql_ruc2,$link_data);
		
		$sql_ruc2='update enti0 set enti_razsoc="'.$razsoc2.'" where enti_codigo like "'.$ruc2.'%" and (ifnull(enti_razsoc,"")="" or enti_razsoc like "%sp;%")';
		$res_ruc2=msql_query($sql_ruc2,$link_data);
		
		$sql_ruc2='update enti0 set enti_nomcom="'.$razsoc2.'" where enti_codigo like "'.$ruc2.'%" and (ifnull(enti_nomcom,"")=""  or enti_nomcom like "%sp;%")';
		$res_ruc2=msql_query($sql_ruc2,$link_data);

          if(mb_stristr2('.demo.cele.srie',$cfg_empr))
          {
               $sql_ruc2='update enti0 set enti_matriz="'.$direcc2.'" where enti_codigo like "'.$ruc2.'%" and (ifnull(enti_matriz,"")=""  or enti_matriz like "%sp;%")';
               $res_ruc2=msql_query($sql_ruc2,$link_data);
          }    
    
          if(empty($atrzce)){return '<br>'.'*** XML SIN AUTORIZACION ***';}
          
		$docu90="";
		if(substr($empr0['empr_ruc'],0,10)!=substr($ruc2,0,10))
		{
               if(!mb_stristr2('.demo.cele.srie.aacc.facx',$cfg_empr))
               {
                    if($empr0['empr_mice']==1)
                    {}
                    else
                    {
                         if($ruc20['fp90']==1)
                         {$docu90='FP90';}
                         else
                         {
                              $sql_dele='delete from clac0 where clac_codigo="'.$claveacc.'" ';
                              $res_dele=msql_query($sql_dele,$link_data);
                              return '<br>'.'*** RUC NO CORRESPONDE *** ==>'.$claveacc.'==>'.$tipoid2.'::'.$ruc2;
                         }     
                    }
               }
		}

          
          
		if(ruc_tipo($emisor)!='0')
		{
			$sql_enti ='update enti0 set ';
			$sql_enti.='enti_descri="'.esc_string($razsoc).'" ';
			$sql_enti.='where enti_codigo="'.$emisor.'" ';
			$sql_enti.='and (ifnull(enti_descri,"")="" or enti_descri like "%NUEVO%" or enti_descri like "%sp;%")';
			$res_enti = msql_query($sql_enti,$link_data);

               $sql_enti ='update enti0 set ';
			$sql_enti.='enti_razsoc="'.esc_string($razsoc).'" ';
			$sql_enti.='where enti_codigo="'.$emisor.'" ';
			$sql_enti.='and (ifnull(enti_razsoc,"")="" or enti_razsoc like "%sp;%")';
			$res_enti = msql_query($sql_enti,$link_data);
			
			$sql_enti ='update enti0 set ';
			$sql_enti.='enti_nomcom="'.esc_string($nomcom).'" ';
			$sql_enti.='where enti_codigo="'.$emisor.'" ';
			$sql_enti.='and (ifnull(enti_nomcom,"")="" or enti_nomcom like "%sp;%")';
			$res_enti = msql_query($sql_enti,$link_data);

			$sql_enti ='update enti0 set ';
			$sql_enti.='enti_matriz="'.esc_string($matriz).'" ';
			$sql_enti.='where enti_codigo="'.$emisor.'" ';
			$sql_enti.='and (ifnull(enti_matriz,"")="")';
			$res_enti = msql_query($sql_enti,$link_data);
      
		}

          if($obcon=='SI')
          {
               $sql_ruc1='update enti0 set enti_obcon="1" where enti_codigo like "'.$emisor.'" ';
               $res_ruc1=msql_query($sql_ruc1,$link_data);
          }

          if(!empty($coesp))
          {
               $sql_ruc1='update enti0 set enti_coesp=1, enti_coesn="'.$coesp.'" where enti_codigo like "'.$emisor.'" ';
               $res_ruc1=msql_query($sql_ruc1,$link_data);
          }
          
		// INFO ADICIONAL
		$xinfoadic='';
		{
			$xfirmante='';
			$infox= $dom2->getElementsByTagName('infoAdicional');
//                var_dump
               $xinfoadic4=array();
			foreach($infox as $infoy)
			{
				foreach($infoy->childNodes as $adicional)
				{
					$campoadic='';
					if($adicional->nodeName=='campoAdicional')
					{
						$adicnombre=$adicional->getAttribute('nombre');
						$adicvalue=$adicional->nodeValue;
						$xinfoadic.='/'.$adicnombre.':'.$adicvalue;
						$xinfoadic2.='[['.$adicnombre.']]'.$adicvalue.'||';						
						$xinfoadic3.='{\"'.$adicnombre.'\":\"'.$adicvalue.'\"}';
                              $xinfoadic4[$adicnombre]=$adicvalue;
                              
						if(mb_stristr2($adicnombre,'FIRMANTE')){$xfirmante=$adicvalue;}
                              if(mb_stristr2('.demo.cele.srie',$cfg_empr))
                              {
                                   if(mb_stristr2(strtoupper($adicnombre),'DIRECCION'))
                                   {
                                    $sql_ruc2='update enti0 set enti_direccion="'.$adicvalue.'" where enti_codigo like "'.$ruc2.'%" and (enti_direccion="" or enti_direccion is null)';
                                    $res_ruc2=msql_query($sql_ruc2,$link_data);
                                   }    
                                   if(mb_stristr2(strtoupper($adicnombre),'TELEFONO'))
                                   {
                                    $sql_ruc2='update enti0 set enti_telefono="'.$adicvalue.'" where enti_codigo like "'.$ruc2.'%" and (enti_telefono="" or enti_telefono is null)';
                                    $res_ruc2=msql_query($sql_ruc2,$link_data);
                                   }    
                                   if(mb_stristr2(strtoupper($adicnombre),'EMAIL'))
                                   {
                                    $sql_ruc2='update enti0 set enti_email="'.$adicvalue.'" where enti_codigo like "'.$ruc2.'%" and (enti_email="" or enti_email is null)';
                                    $res_ruc2=msql_query($sql_ruc2,$link_data);
                                   }    
                              }
// 						if($adicnombre=='VALOR IMPAGO'){$xinfoadic.='/'.$adicnombre.':'.$adicvalue;}
					}
				}
			}

               $xinfoadic4=json_encode($xinfoadic4,JSON_UNESCAPED_UNICODE);
               $xinfoadic4=str_replace('\"','"',$xinfoadic4);
               $xinfoadic4=str_replace('""','"',$xinfoadic4);
               $xinfoadic4=str_replace('"','\"',$xinfoadic4);
//                echo '<br>==='.$xinfoadic4;
                         
			
		}
          
		// GET IDNUM1
		{	
			//docu numero fecha enti
			$sql_cabe='update '.$tabla.'1 set adjunto1="OVERWRITE", claveacc="'.$clave_acceso.'" ';
			$sql_cabe.='where docu="'.$docu.'" and numero="'.$numero.'" and fecha="'.$fecha.'" and left(enti,10) like "'.$enti.'%" ';
			$sql_cabe.='and ifnull(claveacc,"")="" ';
// 			$sql_cabe.='and (claveacc="" or claveacc is null)';
			$res_cabe=msql_query($sql_cabe,$link_data);
           
//                echo '<br>==>'.$sql_cabe;
               

			$sql_cabe='select * from '.$tabla.'1 where claveacc="'.$clave_acceso.'" ';
			$res_cabe=msql_query($sql_cabe,$link_data);

			if(msql_num_rows($res_cabe)==0)
			{
        
                    $sql_cabeb ='select * from '.$tabla.'1 ';
                    $sql_cabeb.='where enti like "'.substr($clave_acceso,10,10).'%" and ptoe="'.$ptoe.'" and numero="'.$numero.'" ';
                    $sql_cabeb.='and ifnull(claveacc,"")="" ';
//                     $sql_cabeb.='and (claveacc="" or claveacc is null)';
                    $sql_cabeb.='order by idnum1 desc limit 1';
                    $res_cabeb=msql_query($sql_cabeb,$link_data);
                    
                    if(msql_num_rows($res_cabeb)!=0)	
                    {
                         $idnumx=msql_result($res_cabeb,0,'idnum1');
                         $sql_updt='update '.$tabla.'1 set atrz=null, claveacc="'.$clave_acceso.'" where idnum1="'.$idnumx.'" ';
                         $res_updt=msql_query($sql_updt,$link_data);
                    }
                    else
                    {
                         $sql_inse='insert into '.$tabla.'1(claveacc,autornum,autorfec,atrznume,status,iuser,idate)';
                         $sql_inse.='value("'.$clave_acceso.'","'.$atrzce.'","'.$atrzfe.'","'.$atrzce.'","-","'.$_SESSION['user_codigo'].'",now())';
                         $res_inse=msql_query($sql_inse,$link_data);

                         if($empr0['empr_zeus']==1 and $tabla=='retc')
                         {
                              $zeus=get_lzeus($emisor);
//                               $sql_updt='update '.$tabla.'1 set zeus=1 where claveacc="'.$clave_acceso.'" ';
                              $sql_updt='update '.$tabla.'1 set zeus="'.$zeus.'" where zeus is null and  claveacc="'.$clave_acceso.'" ';
                              $res_updt=@msql_query($sql_updt,$link_data);
                         }
                    }

                    $sql_cabe='select * from '.$tabla.'1 where claveacc="'.$clave_acceso.'" ';
                    $res_cabe=msql_query($sql_cabe,$link_data);
			}
			$xidnum1=msql_result($res_cabe,0,'idnum1');
			$xstatus=msql_result($res_cabe,0,'status');

               $sql_clac ='update clac0 set ';
               $sql_clac.='clac_autornum="'.$atrzce.'",';
               $sql_clac.='clac_autorfec="'.$atrzfe.'",';
               $sql_clac.='clac_status="A" ';
               $sql_clac.='where clac_codigo="'.$clave_acceso.'" ';
               $res_clac=msql_query($sql_clac,$link_data);
      
		}

          
          if($xstatus=='A'){return;}
    
		if($codDoc=='01')
		{	
               //   $docu='FP10';	
               if ($docu90!=""){$docu=$docu90;}

               // aqui validar reembolsos
               $total= $dom2->getElementsByTagName('importeTotal')->item(0)->nodeValue;

               $enti=substr($emisor,0,10).'001';	
               $concepto="";	

               //  SUSTENTO COMPROBANTE
               $suco=get_lsuco($emisor);

               //  FORMA PAGO
               $fpag=$formapago;
               if(empty($fpag)){$fpag=get_lfpag($emisor);}
			
			// CABECERA
			{
                    $sql_cabe='update '.$tabla.'1 set ';
                    if($tabla=='comp')
                    {
                         $sql_cabe.='enti="'.$emisor.'",';
                         $sql_cabe.='toenti="'.$ruc2.'",';
                    }  
                    if($tabla=='vtas')
                    {
                         $sql_cabe.='enti="'.$ruc2.'",';
                         $sql_cabe.='ptov="'.$ptoe.'",';
                    }  
                    $sql_cabe.='docu="'.$docu.'",';
                    $sql_cabe.='ptoe="'.$ptoe.'",';
                    $sql_cabe.='numero="'.$numero.'",';
                    $sql_cabe.='fecha="'.$fecha.'",';
                    $sql_cabe.='suco="'.$suco.'",';
                    $sql_cabe.='fpag="'.$fpag.'",';
                    $sql_cabe.='concepto="'.$concepto.'",';
                    $sql_cabe.='claveacc="'.$claveacc.'",';
                    $sql_cabe.='autornum="'.$atrzce.'",';
                    $sql_cabe.='autorfec="'.$atrzfe.'",';
                    $sql_cabe.='atrznume="'.$atrzce.'",';
                    $sql_cabe.='status="-",';
                    $sql_cabe.='stfin="1" ';
                    $sql_cabe.='where idnum1='.$xidnum1.' ';
                    $sql_cabe.='and status!="O" ';
                    $res_cabe=msql_query($sql_cabe,$link_data);
			}

			$xiddet=0;	
			$detallex= $dom2->getElementsByTagName('detalle');
			foreach($detallex as $detalley)
			{
				$xiddet++;
				$dcto=0;
				$ice=0;
				$iva=0;
				$irbp=0;
				$itemce2='';

				foreach($detalley->childNodes as $detalle)
				{
					if($detalle->nodeName=='codigoPrincipal'){$itemce=$detalle->nodeValue;}
					if($detalle->nodeName=='codigoAuxiliar'){$itemce2=$detalle->nodeValue;}
					if($detalle->nodeName=='cantidad'){$cant=$detalle->nodeValue;}
					if($detalle->nodeName=='precioUnitario'){$puni=$detalle->nodeValue;}
					if($detalle->nodeName=='descuento'){$dcto=$detalle->nodeValue;}
					if($detalle->nodeName=='descripcion'){$xdetalle=$detalle->nodeValue;}
                         
					if($detalle->nodeName=='impuestos')
					{
						foreach($detalle->childNodes as $impuestos)
						{
							if($impuestos->nodeName=='impuesto')
							{
								foreach($impuestos->childNodes as $impuesto)
								{
									if($impuesto->nodeName=='codigo'){$codigoimp=$impuesto->nodeValue;}
									if($impuesto->nodeName=='tarifa')
									{
										if($codigoimp=='2'){$iva=$impuesto->nodeValue;}
										if($codigoimp=='3'){$ice=$impuesto->nodeValue;}
									}
								}
							}
						}
					 }
				}
                    if($cant*$puni!=0){$dcto=round(($dcto/($cant * $puni))*100,6);}
//                       $dcto=round(($dcto/($cant * $puni))*100,4);

                    $xdetalle=str_replace('"','-',$xdetalle);
                    $itemce=str_replace('"','',$itemce);
                    $itemce2=str_replace('"','',$itemce2);
//  					if($xdetalle==''){$xdetalle=$itemce;}
				
                    if($xdetalle==""){$xdetalle=$itemce;}

                    $sql_deta='select * from '.$tabla.'2  where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
                    $res_deta=msql_query($sql_deta,$link_data);
				
                    if(msql_num_rows($res_deta)!=1)
                    {
//                          $sql_dele='delete from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" and (ctas="" or ctas is null)';
                         $sql_dele='delete from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" and ifnull(ctas,"")="" ';
                         $res_dele=msql_query($sql_dele,$link_data);
                         $res_deta=msql_query($sql_deta,$link_data);
                    }
				
                    if(msql_num_rows($res_deta)!=1)
                    {
                         $sql_dele='delete from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
                         $res_dele=msql_query($sql_dele,$link_data);
                         $res_deta=msql_query($sql_deta,$link_data);
                    }
				
                    if(msql_num_rows($res_deta)==0)
                    {
                         $sql_inse='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
                         $res_inse=msql_query($sql_inse,$link_data);
                         $upl_ok=1;
                    }
        
                    $codret = "";
                    if (mb_stristr2('.pec1',$cfg_empr)){$codret = '332';}
        
                    $sql_deta='update '.$tabla.'2 set ';
                    {
                         if($tabla=='comp')
                         {
                              $sql_deta.='itemce="'.$itemce.'",';
                              $sql_deta.='itemce2="'.$itemce2.'",';
                         }
                         $sql_deta.='cant="'.$cant.'",';
                         $sql_deta.='puni="'.$puni.'",';
                         $sql_deta.='ice="'.$ice.'",';
                         $sql_deta.='dcto="'.$dcto.'",';
                         $sql_deta.='prop="'.$prop.'",';
                         $sql_deta.='iva="'.$iva.'",';
                         $sql_deta.='irbp="'.$irbp.'",';
                         $sql_deta.='cair="'.$codret.'",';
                         $sql_deta.='detalle="'.$xdetalle.'" ';
                         $sql_deta.='where idnum2="'.$xidnum1.'" ';
                         $sql_deta.='and iddet="'.$xiddet.'" ';
                         $res_deta=@msql_query($sql_deta,$link_data);

                         
                    }
				
				//  ITEM
                    if(mb_stristr2('.demo.cele.srie',$cfg_empr) and !val_ean($item,true)){$item="9999999999";}
                    else{$item=get_litem($emisor,$itemce,$itemce2,$fecha);}
					
				{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='item="'.$item.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and (item="" or item is null or item like "9999%")';
					$res_deta=msql_query($sql_deta,$link_data);
				}
//                          echo '<br>==== '.$sql_deta;
        
                    
                    // UXPRE 
                    
					$uxpre=get_luxpre($emisor,$item,$itemce,$itemce2,$fecha);
                         if(empty($uxpre))
                         {set_uxpre($docu,$xidnum1);}
                         if(!empty($uxpre))
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='uxpre="'.$uxpre.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
// 					$sql_deta.='and ifnull(uxpre,0)=0';
					$res_deta=@msql_query($sql_deta,$link_data);
                              
					}
                    
                    // FACON
					$facon=get_lfacon($emisor,$item,$itemce,$itemce2,$fecha);
                         if(empty($facon))
                         {set_facon($docu,$xidnum1);}
                         if(!empty($facon))
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='facon="'.$facon.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
// 					$sql_deta.='and ifnull(facon,0)=0';
					$res_deta=@msql_query($sql_deta,$link_data);
                              
//                               echo '<br>===='.$sql_deta;
					}
                    
				//  CTAS
                    $ctas=get_lctas($emisor,$itemce);
                    {
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='ctas="'.$ctas.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and ifnull(ctas,"")="" ';
					$res_deta=@msql_query($sql_deta,$link_data);
                    }

                    //  CAIR
                    // tarjeta va 332 sin retencion
                    if(mb_stristr2('.16.19',$fpag) and  $fecha>="2020-01-01"){$cair='332';}
                    else{$cair=get_lcair($emisor,$item);}
                    
                    if(mb_stristr2('.ffsp',$cfg_empr)){$cair='332';}
                    {
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='cair="'.$cair.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
                         if($cair!='332')
                         {$sql_deta.='and (cair="" or cair is null)';}
					$res_deta=@msql_query($sql_deta,$link_data);
                    }
				
                    
                    if(!empty($miruc0['enti_agret']))
                    {
                         //  RRTA
//                          $rrta=get_lrrta($emisor,$item,$cair);
                         {
                              $sql_deta='update '.$tabla.'2 set ';
                              $sql_deta.='rrta="'.$rrta.'",';
                              $sql_deta.='detalle="'.$xdetalle.'" ';
                              $sql_deta.='where idnum2="'.$xidnum1.'" ';
                              $sql_deta.='and iddet="'.$xiddet.'" ';
                              $sql_deta.='and ifnull(rrta,"")!="" ';
//                               $res_deta=@msql_query($sql_deta,$link_data);
                         }

                         //  RIVA
//                          $riva=get_lriva($emisor,$item);
                         {
                              $sql_deta='update '.$tabla.'2 set ';
                              $sql_deta.='riva="'.$riva.'",';
                              $sql_deta.='detalle="'.$xdetalle.'" ';
                              $sql_deta.='where idnum2="'.$xidnum1.'" ';
                              $sql_deta.='and iddet="'.$xiddet.'" ';
                              $sql_deta.='and ifnull(riva,"")!="" ';
//                               $res_deta=@msql_query($sql_deta,$link_data);
                         }
                         
                    }
                    
				
			}

               
// 			if($xconcepto==""){$xconcepto=$xinfoadic;}
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='concepto="'.$xconcepto.'",';
			$sql_cabe.='firmante="'.$xfirmante.'",';
// 			$sql_cabe.='infoadic="'.$xinfoadic2.'" ';
// 			$sql_cabe.='infoadic="'.$xinfoadic3.'" ';
			$sql_cabe.='infoadic="'.$xinfoadic4.'" ';
			$sql_cabe.='where idnum1="'.$xidnum1.'" ';
			$res_cabe=@msql_query($sql_cabe,$link_data);
               
//                if($fecha>="2022-01-01" and $docu=='FP10' and 1==1)
               if($fecha>="2024-01-01" and $docu=='FP10' and 1==1)
               {
                    $sql_infoadic='select * from comp1 where idnum1='.$xidnum1;
                    $res_infoadic=msql_query($sql_infoadic,$link_data);
                    $objadi1=msql_result($res_infoadic,0,'infoadic');
                    $objadi1=str_replace('}{',',',$objadi1);
                    $objadi1=str_replace('}','',$objadi1);
                    $objadi1=str_replace('{','',$objadi1);
                    $objadi1=str_replace('"','',$objadi1);
                    $objadi1=explode(',',$objadi1);
                    for($idx=0; $idx<=count($objadi1); $idx++)
                    {
                         $objadi2=explode(':',$objadi1[$idx]);
                         if(substr($objadi2[0],0,4)=='TASA' or substr($objadi2[0],0,8)=='CONTRIBU')
                         {
//                               if(($objadi2[1]*1)>0)
                              if((int)$objadi2[1]>0)
                              {
                              $sql_iadi='select * from comp2 where idnum2="'.$xidnum1.'" and left(detalle,10)="'.substr($objadi2[1],0,10).'" ';
                              $res_iadi=msql_query($sql_iadi,$link_data);
                              $xidadi=msql_result($res_iadi,0,'idnum2');
                              $xiddad=msql_result($res_iadi,0,'iddet');
                              if(empty($xiddad))
                              {
                                   $xiddet++;
                                   $sql_inse='insert into comp2(idnum2,iddet,item,detalle)value("'.$xidnum1.'","'.$xiddet.'","9999999999999","'.$objadi2[0].'")';
                                   $res_inse=msql_query($sql_inse,$link_data);
//                                    echo '<br>'.$sql_inse;
                              }
                              $sql_updt='update comp2 set cant=1, puni='.$objadi2[1].' where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
                              $sql_updt='update comp2 set cant=1, puni='.$objadi2[1].',detalle="'.$objadi2[0].'" where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
                              $res_updt=msql_query($sql_updt,$link_data);
//                               echo '<br>'.$sql_updt;
                              }
                                   
                         }
                    }
               }
      
               $msjxml ='';
               $msjxml.='<table border="0" cellpadding="2" style="font-family:arial;font-size:90%; border-collapse:collapse;">';
               $msjxml.='<tr>';
               $msjxml.='<td colspan="2">*** COMPROBANTE OK ***</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>Fecha :</td>';
               $msjxml.='<td>'.$fecha.'</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>FACTURA No :</td>';
               $msjxml.='<td><a href="?prnt=1&docu='.$docu.'&idnum='.$xidnum1.'&formato='.''.'" target="_blank">';
               $msjxml.= $ptoe.'-'.$numero;
               $msjxml.= '</a></td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>Proveedor :</td>';
               $msjxml.='<td>'.$emisor.' - '.$razsoc.'</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>Comprador :</td>';
               $msjxml.='<td>'.$ruc2.' - '.$razsoc2.'</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>Clave Acceso :</td>';
               $msjxml.='<td>'.$clave_acceso.'</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>Autorizacion :</td>';
               $msjxml.='<td>'.$atrzce.'</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>TOTAL :</td>';
               $msjxml.='<td>'.$total.'</td>';
               $msjxml.='</tr>';

               $msjxml.='<tr>';
               $msjxml.='<td>Concepto :</td>';
               $msjxml.='<td>'.$xconcepto.'</td>';
               $msjxml.='</tr>';

               $msjxml.='</table>';
	}

		if($codDoc=='04')
		{	
// 			$docu='NP10';	
               $total= $dom2->getElementsByTagName('importeTotal')->item(0)->nodeValue;
               $concepto="";	

               $codDocMod='';
               $numDocMod=str_replace('-','',$numDocMod);
               $ptoDocMod=substr($numDocMod,0,6);
               $numDocMod=substr($numDocMod,6,9);
               $codDocMod='FP10';
               if($tabla=='vtas')
               {$codDocMod='FC10';}

               
			//  SUSTENTO COMPROBANTE
			$suco='-';
			{
				$sql_suco='select * from '.$tabla.'1 ';
				$sql_suco.='where ifnull(status,"") not in("O","X") ';
				$sql_suco.='and docu like "FP%" ';
				$sql_suco.='and enti like "'.substr($emisor,0,10).'%" ';
				$sql_suco.='and ifnull(suco,0)*1>0 ';
// 				$sql_suco.='and suco not like "" ';
// 				$sql_suco.='and suco not like "-%" ';
				$sql_suco.='order by fecha desc, numero desc ';
				$sql_suco.='limit 1';
				$res_suco=msql_query($sql_suco,$link_data);
				if(msql_num_rows($res_suco)!=0)
				{$suco=msql_result($res_suco,0,'suco');}
			}

			//  FORMA PAGO
			$fpag='-';
			{
				$sql_suco='select * from '.$tabla.'1 ';
				$sql_suco.='where ifnull(status,"") not in("O","X") ';
				$sql_suco.='and docu like "FP%" ';
				$sql_suco.='and enti like "'.substr($emisor,0,10).'%" ';
				$sql_suco.='and ifnull(fpag,0)*1>0 ';
// 				$sql_suco.='and fpag not like "" ';
// 				$sql_suco.='and fpag not like "-%" ';
				$sql_suco.='order by fecha desc, numero desc ';
				$sql_suco.='limit 1';
				$res_suco=msql_query($sql_suco,$link_data);
				if(msql_num_rows($res_suco)!=0)
				{$fpag=msql_result($res_suco,0,'fpag');}
			}

			// CABECERA
			{
                    $sql_cabe='update '.$tabla.'1 set ';
                    $sql_cabe.='enti="'.$enti.'",';
                    $sql_cabe.='docu="'.$docu.'",';
                    $sql_cabe.='ptoe="'.$ptoe.'",';
                    $sql_cabe.='numero="'.$numero.'",';
                    $sql_cabe.='fecha="'.$fecha.'",';
                    $sql_cabe.='suco="'.$suco.'",';
                    $sql_cabe.='fpag="'.$fpag.'",';
                    $sql_cabe.='claveacc="'.$claveacc.'",';
                    $sql_cabe.='autornum="'.$atrzce.'",';
                    $sql_cabe.='autorfec="'.$atrzfe.'",';
                    $sql_cabe.='atrznume="'.$atrzce.'",';
                    $sql_cabe.='concepto="'.$concepto.'",';
                    $sql_cabe.='todocu="'.$codDocMod.'",';
                    $sql_cabe.='toptoe="'.$ptoDocMod.'",';
                    $sql_cabe.='tonume="'.$numDocMod.'",';
                    $sql_cabe.='stfin="1" ';
                    $sql_cabe.='where idnum1='.$xidnum1.'';
                    $res_cabe=msql_query($sql_cabe,$link_data);
			}

			$xiddet=0;	
			$detallex= $dom2->getElementsByTagName('detalle');
			foreach($detallex as $detalley)
			{
				$xiddet++;
				$dcto=0;
				$ice=0;
				$iva=0;
				$irbp=0;
				$itemce2='';

				foreach($detalley->childNodes as $detalle)
				{
					if($detalle->nodeName=='codigoPrincipal'){$itemce=$detalle->nodeValue;}
					if($detalle->nodeName=='codigoAuxiliar'){$itemce2=$detalle->nodeValue;}
					if($detalle->nodeName=='cantidad'){$cant=$detalle->nodeValue;}
					if($detalle->nodeName=='precioUnitario'){$puni=$detalle->nodeValue;}
					if($detalle->nodeName=='descuento'){$dcto=$detalle->nodeValue;}
					if($detalle->nodeName=='descripcion'){$xdetalle=$detalle->nodeValue;}
					if($detalle->nodeName=='impuestos')
					{
						foreach($detalle->childNodes as $impuestos)
						{
							if($impuestos->nodeName=='impuesto')
							{
								foreach($impuestos->childNodes as $impuesto)
								{
									if($impuesto->nodeName=='codigo')
									{$codigoimp=$impuesto->nodeValue;}
									if($impuesto->nodeName=='tarifa')
									{
// 										$ice=0;
// 										$iva=0;
// 										$irbp=0;
										if($codigoimp=='2'){$iva=$impuesto->nodeValue;}
										if($codigoimp=='3'){$ice=$impuesto->nodeValue;}
									}
								}
							}
						}
					 }
				}
// 				$dcto=round(($dcto/($cant * $puni))*100,2);
                    if($cant*$puni!=0)
                    {$dcto=round(($dcto/($cant * $puni))*100,6);}

// 				$xdetalle=str_replace('"','-',$xdetalle);
				$xdetalle=str_replace('"','-',$xdetalle).' /'.$itemce;
				if ($xdetalle==""){$xdetalle=$itemce;}

					$sql_deta='select * from '.$tabla.'2  where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
					$res_deta=msql_query($sql_deta,$link_data);
	
	
					if(msql_num_rows ($res_deta)==0)
					{
					$sql_deta='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
					$res_deta=msql_query($sql_deta,$link_data);
					}

				$sql_deta='update '.$tabla.'2 set ';
				{
                    if($tabla=='comp')
                    {
                    $sql_deta.='itemce="'.$itemce.'",';
                    $sql_deta.='itemce2="'.$itemce2.'",';
                    }  
				$sql_deta.='cant="'.$cant.'",';
				$sql_deta.='puni="'.$puni.'",';
				$sql_deta.='ice="'.$ice.'",';
				$sql_deta.='dcto="'.$dcto.'",';
				$sql_deta.='iva="'.$iva.'",';
				$sql_deta.='irbp="'.$irbp.'",';
				$sql_deta.='detalle="'.$xdetalle.'" ';
				$sql_deta.='where idnum2="'.$xidnum1.'" ';
				$sql_deta.='and iddet="'.$xiddet.'" ';
				$res_deta=msql_query($sql_deta,$link_data);
                         
//                          echo '<br>==== '.$sql_deta;
                         
			 }

				//  ITEM
					$item=get_litem($emisor,$itemce,$itemce2);
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='item="'.$item.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and ifnull(item,"")=""';
// 					$sql_deta.='and (item="" or item is null)';
					$res_deta=@msql_query($sql_deta,$link_data);
					}

                    
                    
				//  CTAS
					$ctas=get_lctas($emisor,$itemce);
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='ctas="'.$ctas.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and (ctas="" or ctas is null)';
					$res_deta=@msql_query($sql_deta,$link_data);
					}

				//  CAIR
					$cair=get_lcair($emisor,$itemce);
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='cair="'.$cair.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and (cair="" or cair is null)';
					$res_deta=@msql_query($sql_deta,$link_data);
					}
                    
				
			}


			if($xconcepto==""){$xconcepto=$xinfoadic;}
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='concepto="'.$xconcepto.'",';
			$sql_cabe.='firmante="'.$xfirmante.'",';
// 			$sql_cabe.='infoadic="'.$xinfoadic.'" ';
// 			$sql_cabe.='infoadic="'.$xinfoadic3.'" ';
			$sql_cabe.='infoadic="'.$xinfoadic4.'" ';
			$sql_cabe.='where idnum1="'.$xidnum1.'" ';
			$res_cabe=@msql_query($sql_cabe,$link_data);
      
			$msjxml ='';
			$msjxml.='<table border="0" cellpadding="2" style="font-family:arial;font-size:90%; border-collapse:collapse;">';
			$msjxml.='<tr>';
			$msjxml.='<td colspan="2">*** COMPROBANTE OK ***</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Fecha :</td>';
			$msjxml.='<td>'.$fecha.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>N/CREDITO No :</td>';
               $msjxml.='<td><a href="?prnt=1&docu='.$docu.'&idnum='.$xidnum1.'&formato='.''.'" target="_blank">';
               $msjxml.= $ptoe.'-'.$numero;
               $msjxml.= '</a></td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Proveedor :</td>';
			$msjxml.='<td>'.$emisor.' - '.$razsoc.'</td>';
			$msjxml.='</tr>';
            
			$msjxml.='<tr>';
			$msjxml.='<td>Comprador :</td>';
			$msjxml.='<td>'.$ruc2.' - '.$razsoc2.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Clave Acceso :</td>';
			$msjxml.='<td>'.$clave_acceso.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Autorizacion :</td>';
			$msjxml.='<td>'.$atrzce.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
      $msjxml.='<td>TOTAL :</td>';
      $msjxml.='<td>'.$total.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Concepto :</td>';
			$msjxml.='<td>'.$xconcepto.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='</table>';
      
      
			
		}

		if($codDoc=='05')
		{	
// 			$docu='NP10';	
			$total= $dom2->getElementsByTagName('valorTotal')->item(0)->nodeValue;
			$concepto= $dom2->getElementsByTagName('razon')->item(0)->nodeValue;
      $xconcepto=$concepto;

      $codDocMod='';
      $numDocMod=str_replace('-','',$numDocMod);
      $ptoDocMod=substr($numDocMod,0,6);
      $numDocMod=substr($numDocMod,6,9);
      $codDocMod='FP10';
      if($tabla=='vtas')
      {$codDocMod='FC10';}

      
			//  SUSTENTO COMPROBANTE
			$suco='-';
      if(1==2)
			{
				$sql_suco='select * from '.$tabla.'1 ';
				$sql_suco.='where status not like "O" and status not like "X" ';
				$sql_suco.='and docu like "FP%" ';
				$sql_suco.='and enti like "'.substr($emisor,0,10).'%" ';
				$sql_suco.='and suco not like "" ';
				$sql_suco.='and suco not like "-%" ';
				$sql_suco.='order by fecha desc, numero desc';
				$sql_suco.='limit 1';
				$res_suco=msql_query($sql_suco,$link_data);
				if(msql_num_rows($res_suco)!=0)
				{$suco=msql_result($res_suco,0,'suco');}
			}

			//  FORMA PAGO
			$fpag='-';
      if(1==2)
			{
				$sql_suco='select * from '.$tabla.'1 ';
				$sql_suco.='where status not like "O" and status not like "X" ';
				$sql_suco.='and docu like "FP%" ';
				$sql_suco.='and enti like "'.substr($emisor,0,10).'%" ';
				$sql_suco.='and fpag not like "" ';
				$sql_suco.='and fpag not like "-%" ';
				$sql_suco.='order by fecha desc, numero desc';
				$sql_suco.='limit 1';
				$res_suco=msql_query($sql_suco,$link_data);
				if(msql_num_rows($res_suco)!=0)
				{$fpag=msql_result($res_suco,0,'fpag');}
			}

			// CABECERA
			{
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='enti="'.$enti.'",';
			$sql_cabe.='docu="'.$docu.'",';
			$sql_cabe.='ptoe="'.$ptoe.'",';
			$sql_cabe.='numero="'.$numero.'",';
			$sql_cabe.='fecha="'.$fecha.'",';
			$sql_cabe.='suco="'.$suco.'",';
			$sql_cabe.='fpag="'.$fpag.'",';
			$sql_cabe.='claveacc="'.$claveacc.'",';
			$sql_cabe.='autornum="'.$atrzce.'",';
			$sql_cabe.='autorfec="'.$atrzfe.'",';
			$sql_cabe.='atrznume="'.$atrzce.'",';
			$sql_cabe.='concepto="'.$concepto.'",';
			$sql_cabe.='todocu="'.$codDocMod.'",';
			$sql_cabe.='toptoe="'.$ptoDocMod.'",';
			$sql_cabe.='tonume="'.$numDocMod.'",';
			$sql_cabe.='stfin="1" ';
			$sql_cabe.='where idnum1='.$xidnum1.'';
			$res_cabe=msql_query($sql_cabe,$link_data);
//         echo '*/*/*/'.$concepto;
			}

			$xiddet=0;	
			$detallex= $dom2->getElementsByTagName('detalle');
// 			foreach($detallex as $detalley)
			{
				$xiddet++;
				$dcto=0;
				$ice=0;
				$iva=0;
				$irbp=0;
				$itemce2='';

        $cant=1;
//         $puni=$dom2->getElementsByTagName('totalSinImpuestos')->item(0)->nodeValue;
        
			  $impuestosx= $dom2->getElementsByTagName('impuestos');
						foreach($impuestosx as $impuestos)
						{
							foreach($impuestos->childNodes as $impuesto)
							{
							  foreach($impuesto->childNodes as $impuesto1)
								{
									if($impuesto1->nodeName=='baseImponible')
									{$puni=$impuesto1->nodeValue;}
									if($impuesto1->nodeName=='codigo')
									{$codigoimp=$impuesto1->nodeValue;}
									if($impuesto1->nodeName=='tarifa')
									{
// 										$ice=0;
// 										$iva=0;
// 										$irbp=0;
										if($codigoimp=='2'){$iva=$impuesto1->nodeValue;}
										if($codigoimp=='3'){$ice=$impuesto1->nodeValue;}
									}
								}
							}
						}
        
			  $motivosx= $dom2->getElementsByTagName('motivos');
						foreach($motivosx as $motivos)
						{
							foreach($motivos->childNodes as $motivo)
							{
							  foreach($motivo->childNodes as $motivo1)
								{
									if($motivo1->nodeName=='razon')
									{$mrazon=$motivo1->nodeValue;}
									if($motivo1->nodeName=='valor')
									{$mvalor=$motivo1->nodeValue;}
//                                                   $xdetalle=$mrazon;

								}
							}
						}
        
        
        if($cant*$puni!=0)
        {$dcto=round(($dcto/($cant * $puni))*100,6);}

// 				$xdetalle=str_replace('"','-',$xdetalle);
// 				$xdetalle=str_replace('"','-',$xdetalle).' /'.$itemce;
//         $xdetalle=$mrazon;
                    
				if ($xdetalle==""){$xdetalle=$itemce;}

					$sql_deta='select * from '.$tabla.'2  where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
					$res_deta=msql_query($sql_deta,$link_data);
	
	
					if(msql_num_rows ($res_deta)==0)
					{
					$sql_deta='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
					$res_deta=msql_query($sql_deta,$link_data);
					}

				$sql_deta='update '.$tabla.'2 set ';
				{
        if($tabla=='comp')
        {
				$sql_deta.='itemce="'.$itemce.'",';
				$sql_deta.='itemce2="'.$itemce2.'",';
        }  
				$sql_deta.='cant="'.$cant.'",';
				$sql_deta.='puni="'.$puni.'",';
				$sql_deta.='ice="'.$ice.'",';
				$sql_deta.='dcto="'.$dcto.'",';
				$sql_deta.='iva="'.$iva.'",';
				$sql_deta.='irbp="'.$irbp.'",';
				$sql_deta.='detalle="'.$xdetalle.'" ';
				$sql_deta.='where idnum2="'.$xidnum1.'" ';
				$sql_deta.='and iddet="'.$xiddet.'" ';
				$res_deta=msql_query($sql_deta,$link_data);
			 }

				//  ITEM
					$item=get_litem($emisor,$itemce,$itemce2);
        if(1==2)
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='item="'.$item.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and (item="" or item is null)';
					$res_deta=@msql_query($sql_deta,$link_data);
					}

				//  CTAS
					$ctas=get_lctas($emisor,$itemce);
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='ctas="'.$ctas.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and (ctas="" or ctas is null)';
					$res_deta=@msql_query($sql_deta,$link_data);
					}

				//  CAIR
					$cair=get_lcair($emisor,$itemce);
                         if(1==2)
					{
					$sql_deta='update '.$tabla.'2 set ';
					$sql_deta.='cair="'.$cair.'",';
					$sql_deta.='detalle="'.$xdetalle.'" ';
					$sql_deta.='where idnum2="'.$xidnum1.'" ';
					$sql_deta.='and iddet="'.$xiddet.'" ';
					$sql_deta.='and (cair="" or cair is null)';
					$res_deta=@msql_query($sql_deta,$link_data);
					}
				
			}


			if($xconcepto==""){$xconcepto=$xinfoadic;}
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='concepto="'.$xconcepto.'",';
			$sql_cabe.='firmante="'.$xfirmante.'",';
// 			$sql_cabe.='infoadic="'.$xinfoadic.'" ';
// 			$sql_cabe.='infoadic="'.$xinfoadic3.'" ';
			$sql_cabe.='infoadic="'.$xinfoadic4.'" ';
			$sql_cabe.='where idnum1="'.$xidnum1.'" ';
			$res_cabe=@msql_query($sql_cabe,$link_data);

			
      
			$msjxml ='';
			$msjxml.='<table border="0" cellpadding="2" style="font-family:arial;font-size:90%; border-collapse:collapse;">';
			$msjxml.='<tr>';
			$msjxml.='<td colspan="2">*** COMPROBANTE OK ***</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Fecha :</td>';
			$msjxml.='<td>'.$fecha.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>N/DEBITO No :</td>';
      $msjxml.='<td><a href="?prnt=1&docu='.$docu.'&idnum='.$xidnum1.'&formato='.''.'" target="_blank">';
      $msjxml.= $ptoe.'-'.$numero;
      $msjxml.= '</a></td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Proveedor :</td>';
			$msjxml.='<td>'.$emisor.' - '.$razsoc.'</td>';
			$msjxml.='</tr>';
            
			$msjxml.='<tr>';
			$msjxml.='<td>Comprador :</td>';
			$msjxml.='<td>'.$ruc2.' - '.$razsoc2.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Clave Acceso :</td>';
			$msjxml.='<td>'.$clave_acceso.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Autorizacion :</td>';
			$msjxml.='<td>'.$atrzce.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
      $msjxml.='<td>TOTAL :</td>';
      $msjxml.='<td>'.$total.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Concepto :</td>';
			$msjxml.='<td>'.$xconcepto.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='</table>';
      
      
			
		}

		if($codDoc=='06')
		{	
// 			$docu='RCLI';	
//       $tabla='retc';
			$enti=$emisor;	
			$concepto="";
			
			// CABECERA
			{
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='enti="'.$enti.'",';
// 			$sql_cabe.='toenti="'.$ruc2.'",';
			$sql_cabe.='docu="'.$docu.'",';
			$sql_cabe.='ptoe="'.$ptoe.'",';
			$sql_cabe.='numero="'.$numero.'",';
			$sql_cabe.='fecha="'.$fecha.'",';
			$sql_cabe.='placa="'.$placa.'",';
			$sql_cabe.='cedula1="'.$cedula1.'",';
// 			$sql_cabe.='cedula2="'.$cedula2.'",';
			$sql_cabe.='claveacc="'.$claveacc.'",';
			$sql_cabe.='autornum="'.$atrzce.'",';
			$sql_cabe.='autorfec="'.$atrzfe.'",';
			$sql_cabe.='atrznume="'.$atrzce.'",';
		// 		$sql_cabe.='concepto="'.$concepto.'",';
			$sql_cabe.='stfin="1" ';
			$sql_cabe.='where idnum1='.$xidnum1.'';
			$res_cabe=msql_query($sql_cabe,$link_data);
// 			echo $sql_cabe;
// 			echo msql_error($link_data);
			}
			
			$sql_cabe='delete from '.$tabla.'2 where idnum2='.$xidnum1.'';
			$res_cabe=msql_query($sql_cabe,$link_data);
// echo $sql_cabe;

      
// 			$comprobanteVersion= $dom2->getElementByTagName('comprobanteRetencion');
// //       $version = $comprobanteVersion->getAttribute('version');      
      
			$xiddet=0;	
			$detallex= $dom2->getElementsByTagName('detalle');
      $ptonumer2='';
//       if($version=='2.0.0')
//       {
//         $detallex= $dom2->getElementsByTagName('retencion');
//         $search = $dom2->getElementsByTagName('numDocSustento');
//         foreach($search as $search)
//         {$ptonumer2=$search->nodeValue;}
//       }
      
      if($detallex->length!=0)
      {
        foreach($detallex as $detalley)
        {
          $xiddet++;
          foreach($detalley->childNodes as $detalle)
          {
//             if($detalle->nodeName=='codigo'){$ctas=$detalle->nodeValue;}
//             if($detalle->nodeName=='codigoRetencion'){$cair=$detalle->nodeValue;}
            if($detalle->nodeName=='cantidad'){$cant=$detalle->nodeValue;}
            if($detalle->nodeName=='descripcion'){$xdetalle=$detalle->nodeValue;}
            if($detalle->nodeName=='codigoInterno'){$itemce=$detalle->nodeValue;}
          }
             
          if(!empty($ptonumer2)){$ptonumer=$ptonumer2;}
             
            echo '<msgalert>';
//           echo '--';
//             echo $ptonumer;
            echo '</msgalert>';
          
          $xdetalle=str_replace('"','-',$xdetalle);
//           if($xdetalle==""){}
          // INSERT RETC2
          {
            $ptoem=substr($ptonumer,0,6);
            $numer=substr($ptonumer,6,9);

            
//             $sql_docum='select * from vtas1 ';
//             if($tabla=='retp')
//             {$sql_docum='select * from comp1 ';}
//             $sql_docum.='where status!="X" ';
//             $sql_docum.='and enti like "'.$emisor.'" ';
//             $sql_docum.='and docu like "F%" ';
//             $sql_docum.='and ptoe like "'.$ptoem.'" ';
//             $sql_docum.='and numero like "'.$numer.'" ';
//             $sql_docum.='order by fecha desc ';
//             $sql_docum.='limit 1';
//             $res_docum=msql_query($sql_docum,$link_data);
//             $docum="FC10";
//             if($tabla=='retp')
//             {$docum='FP10';}
//             if(msql_num_rows($res_docum)!=0)
//             {$docum=msql_result($res_docum,0,'docu');}

            $sql_deta='select * from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
            $res_deta=msql_query($sql_deta,$link_data);
            if(msql_num_rows($res_deta)==0)
            {
              $sql_deta='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
              $res_deta=msql_query($sql_deta,$link_data);
//                  echo '*/*/*'.$sql_deta;
            }	

            $sql_deta='update '.$tabla.'2 set ';
            $sql_deta.='item="9999999999",';
            $sql_deta.='itemce="'.$itemce.'",';
            $sql_deta.='cant="'.$cant.'",';
            $sql_deta.='puni=0.01,';
//             $sql_deta.='cair="'.$cair.'",';
            $sql_deta.='detalle="'.$xdetalle.'" ';
            $sql_deta.='where idnum2="'.$xidnum1.'" ';
            $sql_deta.='and iddet="'.$xiddet.'" ';
            $res_deta=msql_query($sql_deta,$link_data);

//                echo '/*/*/*'.$sql_deta;die();

//  echo '*/*/*//* HERE 22'.$sql_deta;die()
               
//             $sql_deta='update '.$tabla.'2 set ';
//             $sql_deta.='docum="'.$docum.'",';
//             $sql_deta.='ptoem="'.$ptoem.'",';
//             $sql_deta.='numer="'.$numer.'",';
//             $sql_deta.='detalle="'.$xdetalle.'" ';
//             $sql_deta.='where idnum2="'.$xidnum1.'" ';
//             $sql_deta.='and iddet="'.$xiddet.'" ';
//             $res_deta=msql_query($sql_deta,$link_data);
            
//             echo '<msgalert>';
//             echo $sql_deta;
//             echo '</msgalert>';

            
            
//             if($cair=='4580' or $cair=='323B1')
//             if(mb_stristr2('.4580.323B1.323E.344A',$cair))
//             if($cair=='323B1' or $cair=='323E' or $cair=='344A' or $cair=='4580')
//             if($cair=='323B1' or $cair=='323E' or $cair=='4580')
//             if($cair=='323B1' or $cair=='323E' or $cair=='34X4A' or $cair=='4580')
//             {
//               $sql_cabe='update '.$tabla.'1 set ';
//               $sql_cabe.='docu="RBCO",';
//               $sql_cabe.='status=status ';
//               $sql_cabe.='where idnum1="'.$xidnum1.'" ';
//               $res_cabe=msql_query($sql_cabe,$link_data);
//             }
          }
        }
      }else{
			  $detallex= $dom2->getElementsByTagName('docSustento');
//         echo '<br>';
//         echo '<br>';
//               var_dump($dom2);
//         echo '<br>';
//         echo '<br>';
        foreach($detallex as $detalley)
        {
          foreach($detalley->childNodes as $detalle)
          {
            if($detalle->nodeName=='numDocSustento'){$ptonumer=$detalle->nodeValue;}
            if($detalle->nodeName=='retenciones')
            {
              $xml3=$detalle->nodeValue;
              $xml3='<xml3>'.$xml3.'</xml3>';
              $dom3->loadXML($xml3);
              $retencionx= $dom3->getElementsByTagName('xml3');
              $xiddet++;
              foreach($detalle->childNodes as $retenciony)
              {
                foreach($retenciony->childNodes as $retencion)
                {
                  if($retencion->nodeName=='codigo'){$ctas=$retencion->nodeValue;}
                  if($retencion->nodeName=='codigoRetencion'){$cair=$retencion->nodeValue;}
                  if($retencion->nodeName=='baseImponible'){$cant=$retencion->nodeValue;}
                  if($retencion->nodeName=='porcentajeRetener'){$puni=$retencion->nodeValue;}
                }
              }
          // INSERT RETC2
          {
            $ptoem=substr($ptonumer,0,6);
            $numer=substr($ptonumer,6,9);

            $sql_docum='select * from vtas1 ';
            if($tabla=='retp')
            {$sql_docum='select * from comp1 ';}
            $sql_docum.='where status!="X" ';
            $sql_docum.='and enti like "'.$emisor.'" ';
            $sql_docum.='and docu like "F%" ';
            $sql_docum.='and ptoe like "'.$ptoem.'" ';
            $sql_docum.='and numero like "'.$numer.'" ';
            $sql_docum.='order by fecha desc ';
            $sql_docum.='limit 1';
            $res_docum=msql_query($sql_docum,$link_data);
            $docum="FC10";
            if($tabla=='retp')
            {$docum='FP10';}
            if(msql_num_rows($res_docum)!=0)
            {$docum=msql_result($res_docum,0,'docu');}

            $sql_deta='select * from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
            $res_deta=msql_query($sql_deta,$link_data);
            if(msql_num_rows($res_deta)==0)
            {
              $sql_deta='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
              $res_deta=msql_query($sql_deta,$link_data);
            }	

            $sql_deta='update '.$tabla.'2 set ';
            $sql_deta.='cant="'.$cant.'",';
            $sql_deta.='puni="'.$puni.'",';
            $sql_deta.='cair="'.$cair.'",';
            $sql_deta.='detalle="'.$xdetalle.'" ';
            $sql_deta.='where idnum2="'.$xidnum1.'" ';
            $sql_deta.='and iddet="'.$xiddet.'" ';
            $res_deta=msql_query($sql_deta,$link_data);
               
  
            $sql_deta='update '.$tabla.'2 set ';
            $sql_deta.='docum="'.$docum.'",';
            $sql_deta.='ptoem="'.$ptoem.'",';
            $sql_deta.='numer="'.$numer.'",';
            $sql_deta.='detalle="'.$xdetalle.'" ';
            $sql_deta.='where idnum2="'.$xidnum1.'" ';
            $sql_deta.='and iddet="'.$xiddet.'" ';
            $res_deta=msql_query($sql_deta,$link_data);
  
//             if($cair=='4580' or $cair=='323B1')
//             if($cair=='323B1' or $cair=='323E' or $cair=='344A' or $cair=='4580')          
            if($cair=='323B1' or $cair=='323E'  or $cair=='4580')          
            {
              $sql_cabe='update '.$tabla.'1 set ';
              $sql_cabe.='docu="RBCO",';
              $sql_cabe.='status=status ';
              $sql_cabe.='where idnum1="'.$xidnum1.'" ';
              $res_cabe=msql_query($sql_cabe,$link_data);
            }
          }
                
            }
          }
        }
      }

      
			if($xconcepto==""){$xconcepto=$xinfoadic;}
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='concepto="'.$xconcepto.'",';
			$sql_cabe.='firmante="'.$xfirmante.'",';
// 			$sql_cabe.='infoadic="'.$xinfoadic.'" ';
// 			$sql_cabe.='infoadic="'.$xinfoadic3.'" ';
			$sql_cabe.='infoadic="'.$xinfoadic4.'" ';
			$sql_cabe.='where idnum1="'.$xidnum1.'" ';
			$res_cabe=msql_query($sql_cabe,$link_data);
			
			$msjxml ='';
			$msjxml.='<table border="0" cellpadding="2" style="font-family:arial;font-size:90%; border-collapse:collapse;">';
			$msjxml.='<tr>';
			$msjxml.='<td colspan="2">*** COMPROBANTE OK ***</td>';
			$msjxml.='</tr>';

			$msjxml.='<tr>';
			$msjxml.='<td>Fecha :</td>';
			$msjxml.='<td>'.$fecha.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>RETENCION No :</td>';
      $msjxml.='<td><a href="?prnt=1&docu='.$docu.'&idnum='.$xidnum1.'&formato='.''.'" target="_blank">';
      $msjxml.= $ptoe.'-'.$numero;
      $msjxml.= '</a></td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Cliente :</td>';
			$msjxml.='<td>'.$emisor.' - '.$razsoc.'</td>';
			$msjxml.='</tr>';
            
			$msjxml.='<tr>';
			$msjxml.='<td>Proveedor :</td>';
			$msjxml.='<td>'.$ruc2.' - '.$razsoc2.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Clave Acceso :</td>';
			$msjxml.='<td>'.$clave_acceso.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Autorizacion :</td>';
			$msjxml.='<td>'.$atrzce.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
      $msjxml.='<td>TOTAL :</td>';
      $msjxml.='<td>'.$total.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='<tr>';
			$msjxml.='<td>Concepto :</td>';
			$msjxml.='<td>'.$xconcepto.'</td>';
			$msjxml.='</tr>';
      
			$msjxml.='</table>';
      
      
      
		}
		
		if($codDoc=='07')
		{	
          // $docu='RCLI';	
          // $tabla='retc';
			$enti=$emisor;	
			$concepto="";
               
//                echo '*/*/*/*======'.$xidnum1;
			
			// CABECERA
			{
                    $sql_cabe='update '.$tabla.'1 set ';
                    $sql_cabe.='enti="'.$enti.'",';
                    $sql_cabe.='toenti="'.$ruc2.'",';
                    $sql_cabe.='docu="'.$docu.'",';
                    $sql_cabe.='ptoe="'.$ptoe.'",';
                    $sql_cabe.='numero="'.$numero.'",';
                    $sql_cabe.='fecha="'.$fecha.'",';
                    $sql_cabe.='claveacc="'.$claveacc.'",';
                    $sql_cabe.='autornum="'.$atrzce.'",';
                    $sql_cabe.='autorfec="'.$atrzfe.'",';
                    $sql_cabe.='atrznume="'.$atrzce.'",';
//                     $sql_cabe.='status="-",';
               // 		$sql_cabe.='concepto="'.$concepto.'",';
                    $sql_cabe.='stfin="1" ';
                    $sql_cabe.='where idnum1='.$xidnum1.'';
                    $res_cabe=msql_query($sql_cabe,$link_data);
			}
			
			$sql_cabe='delete from '.$tabla.'2 where idnum2='.$xidnum1.'';
			$res_cabe=msql_query($sql_cabe,$link_data);

      
			$xiddet=0;	
			$detallex= $dom2->getElementsByTagName('impuesto');
               $ptonumer2='';
               if($version=='2.0.0')
               {
                    $detallex= $dom2->getElementsByTagName('retencion');
                    $search = $dom2->getElementsByTagName('numDocSustento');
                    foreach($search as $search)
                    {$ptonumer2=$search->nodeValue;}
               }
      
               if($detallex->length!=0)
               {
                    foreach($detallex as $detalley)
                    {
                         $xiddet++;
                         foreach($detalley->childNodes as $detalle)
                         {
                              if($detalle->nodeName=='codigo'){$ctas=$detalle->nodeValue;}
                              if($detalle->nodeName=='codigoRetencion'){$cair=$detalle->nodeValue;}
                              if($detalle->nodeName=='baseImponible'){$cant=$detalle->nodeValue;}
                              if($detalle->nodeName=='porcentajeRetener'){$puni=$detalle->nodeValue;}
                              if($detalle->nodeName=='numDocSustento'){$ptonumer=$detalle->nodeValue;}
                         }
                         if(!empty($ptonumer2))
                         {$ptonumer=$ptonumer2;}
                         $xdetalle=str_replace('"','-',$xdetalle);
                         // INSERT RETC2
                         {
                         $ptoem=substr($ptonumer,0,6);
                         $numer=substr($ptonumer,6,9);


                         $sql_docum='select * from vtas1 ';
                         if($tabla=='retp')
                         {$sql_docum='select * from comp1 ';}
                         $sql_docum.='where status!="X" ';
                         $sql_docum.='and enti like "'.$emisor.'" ';
                         $sql_docum.='and docu like "F%" ';
                         $sql_docum.='and ptoe like "'.$ptoem.'" ';
                         $sql_docum.='and numero like "'.$numer.'" ';
                         $sql_docum.='order by fecha desc ';
                         $sql_docum.='limit 1';
                         $res_docum=msql_query($sql_docum,$link_data);
                         $docum="FC10";
                         if($tabla=='retp')
                         {$docum='FP10';}
                         if(msql_num_rows($res_docum)!=0)
                         {$docum=msql_result($res_docum,0,'docu');}

                         $sql_deta='select * from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
                         $res_deta=msql_query($sql_deta,$link_data);
                         if(msql_num_rows($res_deta)==0)
                         {
                              $sql_deta='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
                              $res_deta=msql_query($sql_deta,$link_data);
                              $upl_ok=1;
                         }	

                         $sql_deta='update '.$tabla.'2 set ';
                         $sql_deta.='cant="'.$cant.'",';
                         $sql_deta.='puni="'.$puni.'",';
                         $sql_deta.='cair="'.$cair.'",';
                         $sql_deta.='detalle="'.$xdetalle.'" ';
                         $sql_deta.='where idnum2="'.$xidnum1.'" ';
                         $sql_deta.='and iddet="'.$xiddet.'" ';
                         $res_deta=msql_query($sql_deta,$link_data);

                         //  echo '*/*/*//* HERE 22'.$sql_deta;die()

                         $sql_deta='update '.$tabla.'2 set ';
                         $sql_deta.='docum="'.$docum.'",';
                         $sql_deta.='ptoem="'.$ptoem.'",';
                         $sql_deta.='numer="'.$numer.'",';
                         $sql_deta.='detalle="'.$xdetalle.'" ';
                         $sql_deta.='where idnum2="'.$xidnum1.'" ';
                         $sql_deta.='and iddet="'.$xiddet.'" ';
                         $res_deta=msql_query($sql_deta,$link_data);

                         //             echo '<msgalert>';
                         //             echo $sql_deta;
                         //             echo '</msgalert>';



                         //             if($cair=='4580' or $cair=='323B1')
                         //             if(mb_stristr2('.4580.323B1.323E.344A',$cair))
                         //             if($cair=='323B1' or $cair=='323E' or $cair=='344A' or $cair=='4580')
                         //             if($cair=='323B1' or $cair=='323E' or $cair=='4580')
                         if($cair=='323B1' or $cair=='323E' or $cair=='34X4A' or $cair=='4580')
                         {
                         $sql_cabe='update '.$tabla.'1 set ';
                         $sql_cabe.='docu="RBCO",';
                         $sql_cabe.='status=status ';
                         $sql_cabe.='where idnum1="'.$xidnum1.'" ';
                         $res_cabe=msql_query($sql_cabe,$link_data);
                         }
                         }
                    }
               }
               else
               {
                    $detallex= $dom2->getElementsByTagName('docSustento');
                    foreach($detallex as $detalley)
                    {
                         foreach($detalley->childNodes as $detalle)
                         {
                              if($detalle->nodeName=='numDocSustento'){$ptonumer=$detalle->nodeValue;}
                              if($detalle->nodeName=='retenciones')
                              {
                                   $xml3=$detalle->nodeValue;
                                   $xml3='<xml3>'.$xml3.'</xml3>';
                                   $dom3->loadXML($xml3);
                                   $retencionx= $dom3->getElementsByTagName('xml3');
                                   $xiddet++;
                                   foreach($detalle->childNodes as $retenciony)
                                   {
                                        foreach($retenciony->childNodes as $retencion)
                                        {
                                        if($retencion->nodeName=='codigo'){$ctas=$retencion->nodeValue;}
                                        if($retencion->nodeName=='codigoRetencion'){$cair=$retencion->nodeValue;}
                                        if($retencion->nodeName=='baseImponible'){$cant=$retencion->nodeValue;}
                                        if($retencion->nodeName=='porcentajeRetener'){$puni=$retencion->nodeValue;}
                                        }
                                   }
                                   // INSERT RETC2
                                   {
                                   $ptoem=substr($ptonumer,0,6);
                                   $numer=substr($ptonumer,6,9);

                                   $sql_docum='select * from vtas1 ';
                                   if($tabla=='retp')
                                   {$sql_docum='select * from comp1 ';}
                                   $sql_docum.='where ifnull(status,"")!="X" ';
                                   $sql_docum.='and enti like "'.$emisor.'" ';
                                   $sql_docum.='and docu like "F%" ';
                                   $sql_docum.='and ptoe like "'.$ptoem.'" ';
                                   $sql_docum.='and numero like "'.$numer.'" ';
                                   $sql_docum.='order by fecha desc ';
                                   $sql_docum.='limit 1';
                                   $res_docum=msql_query($sql_docum,$link_data);
                                   $docum="FC10";
                                   if($tabla=='retp')
                                   {$docum='FP10';}
                                   if(msql_num_rows($res_docum)!=0)
                                   {$docum=msql_result($res_docum,0,'docu');}

                                   $sql_deta='select * from '.$tabla.'2 where idnum2="'.$xidnum1.'" and iddet="'.$xiddet.'" ';
                                   $res_deta=msql_query($sql_deta,$link_data);
                                   if(msql_num_rows($res_deta)==0)
                                   {
                                        $sql_deta='insert into '.$tabla.'2(idnum2,iddet)value("'.$xidnum1.'","'.$xiddet.'")';
                                        $res_deta=msql_query($sql_deta,$link_data);
                                        $upl_ok=1;
                                   }	

                                   $sql_deta='update '.$tabla.'2 set ';
                                   $sql_deta.='cant="'.$cant.'",';
                                   $sql_deta.='puni="'.$puni.'",';
                                   $sql_deta.='cair="'.$cair.'",';
                                   $sql_deta.='detalle="'.$xdetalle.'" ';
                                   $sql_deta.='where idnum2="'.$xidnum1.'" ';
                                   $sql_deta.='and iddet="'.$xiddet.'" ';
                                   $res_deta=msql_query($sql_deta,$link_data);


                                   $sql_deta='update '.$tabla.'2 set ';
                                   $sql_deta.='docum="'.$docum.'",';
                                   $sql_deta.='ptoem="'.$ptoem.'",';
                                   $sql_deta.='numer="'.$numer.'",';
                                   $sql_deta.='detalle="'.$xdetalle.'" ';
                                   $sql_deta.='where idnum2="'.$xidnum1.'" ';
                                   $sql_deta.='and iddet="'.$xiddet.'" ';
                                   $res_deta=msql_query($sql_deta,$link_data);

                                   //             if($cair=='4580' or $cair=='323B1')
                                   //             if($cair=='323B1' or $cair=='323E' or $cair=='344A' or $cair=='4580')          
                                   if($cair=='323B1' or $cair=='323E'  or $cair=='4580')          
                                   {
                                        $sql_cabe='update '.$tabla.'1 set ';
                                        $sql_cabe.='docu="RBCO",';
                                        $sql_cabe.='status=status ';
                                        $sql_cabe.='where idnum1="'.$xidnum1.'" ';
                                        $res_cabe=msql_query($sql_cabe,$link_data);
                                   }
                                   }

                              }
                         }
                    }
               }

               
               
      
			if($xconcepto==""){$xconcepto=$xinfoadic;}
               
               if($empr0['empr_codigo']=='demo'){$xinfoadic4='';}
               if($empr0['empr_codigo']=='demo'){$xconcepto='';}
               
               
               
			$sql_cabe='update '.$tabla.'1 set ';
			$sql_cabe.='concepto="'.$xconcepto.'",';
			$sql_cabe.='firmante="'.$xfirmante.'",';
// 			$sql_cabe.='infoadic="'.$xinfoadic.'" ';
// 			$sql_cabe.='infoadic="'.$xinfoadic3.'" ';
			$sql_cabe.='infoadic="'.$xinfoadic4.'" ';
			$sql_cabe.='where idnum1="'.$xidnum1.'" ';
			$res_cabe=msql_query($sql_cabe,$link_data);
			
                    $msjxml ='';
                    $msjxml.='<table border="0" cellpadding="2" style="font-family:arial;font-size:90%; border-collapse:collapse;">';
                    $msjxml.='<tr>';
                    $msjxml.='<td colspan="2">*** COMPROBANTE OK ***</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>Fecha :</td>';
                    $msjxml.='<td>'.$fecha.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>RETENCION No :</td>';
                    $msjxml.='<td><a href="?prnt=1&docu='.$docu.'&idnum='.$xidnum1.'&formato='.''.'" target="_blank">';
                    $msjxml.= $ptoe.'-'.$numero;
                    $msjxml.= '</a></td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>Cliente :</td>';
                    $msjxml.='<td>'.$emisor.' - '.$razsoc.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>Proveedor :</td>';
                    $msjxml.='<td>'.$ruc2.' - '.$razsoc2.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>Clave Acceso :</td>';
                    $msjxml.='<td>'.$clave_acceso.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>Autorizacion :</td>';
                    $msjxml.='<td>'.$atrzce.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>TOTAL :</td>';
                    $msjxml.='<td>'.$total.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='<tr>';
                    $msjxml.='<td>Concepto :</td>';
                    $msjxml.='<td>'.$xconcepto.'</td>';
                    $msjxml.='</tr>';

                    $msjxml.='</table>';
      
      
      
		}
		
          
          if($upl_ok==1)
          {
               $sql_upld='update clac0 set clac_upldfec=now() where clac_codigo="'.$clave_acceso.'" ';
               $res_upld=msql_query($sql_upld,$link_data);
          }
          
          
// 		if(substr($docu,0,2)=='FP'){updt_itemce($docu,$xidnum1);}
// 		if(substr($docu,0,2)=='FP'){updt_ctascomp($docu,$xidnum1);}
      
//           vali_regidocu($docu,$xidnum1);
//           gen_contab($docu,$xidnum1);
      
          return $msjxml;
	}

     
//           if($upl_ok==0)
//           {
//                $sql_upld='update clac0 set clac_upldfec=null where clac_codigo="'.$clave_acceso.'" ';
//                $res_upld=msql_query($sql_upld,$link_data);
//           }
     
     
	return $xupl;
}


function send_mailce($docu,$idnum)
{
     if(empty($cfg_empr)){$cfg_empr=$_SESSION['cfg_empr'];}
     if(empty($link_data)){$link_data=$_SESSION['link_data'];}
     
     $claveacc=gen_clacc($docu,$idnum);
     
}



function objectToXml($object, &$xml)
{
    foreach ($object as $key => $value) {
        if (is_object($value)) {
            // If the value is an object, create a new child element and call the function recursively
            $child = $xml->addChild($key);
            objectToXml($value, $child);
        } else {
            // If the value is a scalar or an array, add it as an element or attribute
            if (is_array($value)) {
                $child = $xml->addChild($key);
                foreach ($value as $item) {
                    $child->addChild('item', $item);
                }
            } else {
                $xml->addChild($key, $value);
            }
        }
    }
}

// Convert the object to XML
// objectToXml($object, $xml);

// // Save the XML to a file
// $xml->asXML('output.xml');

// echo "XML file created successfully.";

// In this example, we have an object with properties like name, age, and email. The objectToXml function recursively converts the object to XML by adding child elements for each property. Scalar values are added as elements, and arrays are handled by adding child elements with the name "item" for each item in the array.

// Finally, the XML is saved to a file named "output.xml" using the asXML method of the SimpleXMLElement object.

// Please note that this example assumes you have the SimpleXML extension enabled in your PHP configuration.








?>