<?php
date_default_timezone_set('America/Guayaquil');


include'../../conexion1.php';
$conectar = new mysqli($servidor,$nombre,$clave,$base);
$empre = "SELECT * FROM datos_empresa";
$res = $conectar->query($empre);
$dato1=0;
if ($res->num_rows > 0) {
     while($rowx = $res->fetch_assoc()) { 

            $dato1 = $rowx['RUC'];
            $dato2 = $rowx['RAZON_SOCIAL'];
            $dato3 = $rowx['NOMBRE_COMERCIAL'];
            $dato4 = $rowx['DIRECCION'];
            $dato5 = $rowx['DEPARTAMENTO'];
            $dato6 = $rowx['PROVINCIA'];
            $dato7 = $rowx['DISTRITO'];
            $dato8 = $rowx['TELEFONO'];
            $dato9 = $rowx['CORREO'];
            $dato10 = $rowx['WEB'];
            $dato11 = $rowx['UBIGEO'];
            $dato12 = $rowx['ESTABLECIMIENTO'];
            $dato13 = $rowx['PUNTO_EMISION'];
   
}

}

$sql = "SELECT * FROM venta";
$resultado = $conectar->query($sql);
$total1=0;
if ($resultado->num_rows > 0) {

     while($row = $resultado->fetch_assoc()) { 

            $id = $row['ID'];
            $total1 = $row['FECHA_REGISTRO'];
            $total2 = $row['HORA_REGISTRO'];
            $total3 = $row['NOMBRE'];
            $total4 = $row['DNI'];
            $total5 = $row['CELULAR'];
            $total6 = $row['DIRECCION'];
            $total7 = $row['DESCRIPCION'];
            $total8 = $row['CORREO'];
            $total9 = $row['HORA_ENTREGA'];
            $total10 = $row['NOMBRE_VENDEDOR'];
            $total11 = $row['SERIE'];
            $total12 = $row['SECUENCIAL'];
            $total13 = $row['DESCRIPCION'];
            $total14 = $row['SUB_TOTAL'];
            $total15 = $row['PRECIO_UNITARIO'];
            $total16 = $row['IGV'];

}

}




/* utilidades */
function nf($n,$d=2){
    return number_format($n,$d,'.','');
}
function mod11($c){
    $b=7;$f=2;$t=0;for($i=strlen($c)-1;$i>=0;$i--){$t+=$f*$c[$i];$f=($f<$b)?$f+1:2;} $m=11-($t%11);return $m==11?'0':($m==10?'1':$m);
}
function claveAcceso($f,$td,$r,$amb,$serie,$sec,$cn,$te='1'){
    $base=date('dmY',strtotime($f)).str_pad($td,2,'0',STR_PAD_LEFT)
         .str_pad($r,13,'0',STR_PAD_LEFT).$amb.$serie
         .str_pad($sec,9,'0',STR_PAD_LEFT).str_pad($cn,8,'0',STR_PAD_LEFT).$te;
    return $base.mod11($base);
}


//codigo numerico

function codigoNumericoUnico(): string {
    $carpeta = __DIR__ . '/guardartxt';
    if (!is_dir($carpeta)) mkdir($carpeta, 0775, true);
    $ruta = $carpeta . '/codigo_numerico.txt';

    $ultimo = is_file($ruta) ? (int)trim(file_get_contents($ruta)) : 0;
    $nuevo  = $ultimo + 1;
    if ($nuevo > 99999999) $nuevo = 1;

    file_put_contents($ruta, (string)$nuevo);
    return str_pad((string)$nuevo, 8, '0', STR_PAD_LEFT);
}


/* datos */
$emisor=[
 'ruc'                  =>      $dato1,
 'razonSocial'          =>      $dato2,
 'nombreComercial'      =>      'EMPRESA EC SA',
 'dirMatriz'            =>      $total6,
 'dirEstablecimiento'   =>      'CALLE FALSA 123',
 'obligadoContabilidad' =>      'SI',
 'ambiente'             =>      '1',
 'tipoEmision'          =>      '1',
 'estab'                =>      $dato12,
 'ptoEmi'               =>      $dato13,
 'secuencial'           =>      $total12,
 'codDoc'               =>      '01'
];

$cliente=[
 'tipoIdentificacionComprador'   =>     '05',
 'razonSocial'                   =>     $total3,
 'identificacion'                =>     $total4,
 'direccion'                     =>     $total6,
 'email'                         =>     $total8
];

$detalles=[
 ['codigoPrincipal'              =>     'P001',
 'descripcion'                   =>     $total13,
  'cantidad'                     =>     1,
  'precioUnitario'               =>     $total15,
  'descuento'                    =>     0,
  'codigo'                       =>     '2',
  'codigoPorcentaje'             =>     '2',
  'tarifa'                       =>     15]
];

/*
$detalles=[
 ['codigoPrincipal'              =>     'P001',
 'descripcion'                   =>     $total13,
  'cantidad'                     =>     1,
  'precioUnitario'               =>     $total15,
  'descuento'                    =>     0,
  'codigo'                       =>     '2',
  'codigoPorcentaje'             =>     '2',
  'tarifa'                       =>     15],
 ['codigoPrincipal'              =>     'P002',
 'descripcion'                   =>     'SERVICIO EXONERADO',
  'cantidad'                     =>     1,
  'precioUnitario'               =>     30,
  'descuento'                    =>     0,
  'codigo'                       =>     '2',
  'codigoPorcentaje'             =>     '7',
  'tarifa'                       =>     0]
];
*/
/* totales */
foreach($detalles as &$d){
    $d['precioTotalSinImpuesto']=$d['cantidad']*$d['precioUnitario']-$d['descuento'];
    $d['baseImponible']=$d['precioTotalSinImpuesto'];
    $d['valor']=round($d['baseImponible']*$d['tarifa']/100,2);
}unset($d);

$totSin=0;$totDes=0;$impTot=0;$tImp=[];
foreach($detalles as $d){
    $totSin+=$d['precioTotalSinImpuesto'];
    $impTot+=$d['precioTotalSinImpuesto']+$d['valor'];
    $k=$d['codigo'].'-'.$d['codigoPorcentaje'];
    if(!isset($tImp[$k])) $tImp[$k]=['codigo'=>$d['codigo'],
                                     'codigoPorcentaje'=>$d['codigoPorcentaje'],
                                     'baseImponible'=>0,'valor'=>0];
    $tImp[$k]['baseImponible']+=$d['baseImponible'];
    $tImp[$k]['valor']+=$d['valor'];
}

/* clave acceso */
//$fecha='2025-10-29';
$fecha= date("Y-m-d");
$serie=$emisor['estab'].$emisor['ptoEmi'];
$estabptoemi=$emisor['estab']."-".$emisor['ptoEmi'];
$emisor['claveAcceso']=claveAcceso($fecha,$emisor['codDoc'],$emisor['ruc'],
                                   $emisor['ambiente'],$serie,$emisor['secuencial'],
                                   codigoNumericoUnico(),$emisor['tipoEmision']);

/* infoFactura */
$infoFactura=[
  'fechaEmision'                =>      date('d/m/Y',strtotime($fecha)),
  'dirEstablecimiento'          =>      $emisor['dirEstablecimiento'],
  'obligadoContabilidad'        =>      $emisor['obligadoContabilidad'],
  'tipoIdentificacionComprador' =>      $cliente['tipoIdentificacionComprador'],
  'razonSocialComprador'        =>      $cliente['razonSocial'],
  'identificacionComprador'     =>      $cliente['identificacion'],
  'totalSinImpuestos'           =>      nf($totSin),
  'totalDescuento'              =>      '0.00',
  'totalConImpuestos'           =>      $tImp,
  'propina'                     =>      '0.00',
  'importeTotal'                =>      nf($impTot),
  'moneda'                      =>      'DOLAR',
  'pagos'                       =>      [['formaPago'     =>      '01',
                                          'total'         =>      nf($impTot),
                                          'plazo'         =>      '0',
                                          'unidadTiempo'  =>      'dias']]
];

require 'xml_ec.php';
$gen=new GeneradorXMLEcuador21();
if(!is_dir('xml'))mkdir('xml');
$ruta='xml/'.$emisor['claveAcceso'].'.xml';
$xmlmues=$emisor['claveAcceso'].'.xml';
$xmlmuesin=$emisor['claveAcceso'];
$gen->crearXMLFactura($ruta,$emisor,$cliente,$infoFactura,$detalles/*,$retenciones=[]*/);
echo "✅ XML válido v 2.1.0 generado: $ruta";

require '../regisdato.php';
$reg=new Registroda();
$reg->Generada($id, $xmlmuesin, $estabptoemi);


require '../firmaecu/firma.php';
$fir=new Generadorfirma();
$fir->Firmacomprobante($xmlmues);


require '../enviarsri/enviar_xml_sri.php';
$env=new Generarenvioxmlfir();
$env->Enviarxml($xmlmues);


require '../autorizacion/consultar_autorizacion.php';
$aut=new Generarauto();
$aut->Autorizacionxml($xmlmuesin);