<?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 nota_legal";
$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['TIPO_COMPROBANTE_DESP'];
            $total4 = $row['SERIE_DESP'];
            $total5 = $row['SECUENCIAL_DESP'];
            $total6 = $row['TIPO_COMPROBANTE_ANT'];
            $totalxp = $row['FECHA_EMISION_ANT'];
            $total7 = $row['DNI'];
            $total8 = $row['NOMBRE'];
            $total9 = $row['DIRECCION'];
            $total10 = $row['DESCRIPCION'];
            $total11 = $row['PRECIO_UNITARIO'];
            $total12 = $row['IGV'];
            $total13 = $row['SUB_TOTAL'];
            $total14 = $row['NOTA'];
            $total15 = $row['JUSTIFICACION'];
            $total16 = $row['SERIE_ANT'];
            $total17 = $row['SECUENCIAL_ANT'];
           

}

}



/* 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);
}

/* datos */
$emisor = [
    'ruc'                   =>      $dato1,
    'razonSocial'           =>      $dato2,
    'nombreComercial'       =>      'EMPRESA EC SA',
    'dirMatriz'             =>      $dato4,
    'dirEstablecimiento'    =>      'CALLE FALSA 123',
    'obligadoContabilidad'  =>      'SI',
    'ambiente'              =>      '1',
    'tipoEmision'           =>      '1',
    'estab'                 =>      $dato12,
    'ptoEmi'                =>      $dato13,
    'secuencial'            =>      $total5,
    'codDoc'                =>      '04' // NOTA DE CRÉDITO
];

$cliente = [
    'tipoIdentificacionComprador'       =>      '05',
    'razonSocial'                       =>      $total8,
    'identificacion'                    =>      $total7,
    'direccion'                         =>      $total9,
    'email'                             =>      'arroba'
];


/* datos nota de crédito */
$fecha = $total1;
$serie = $emisor['estab'] . $emisor['ptoEmi'];
$estabptoemi = $emisor['estab'] ."-". $emisor['ptoEmi'];
//$numeroFacturaModificada = '001-001-000000123'; // Factura que se modifica
$numeroFacturaModificada = $total16.'-'.$total17; // Factura que se modifica
$fechaEmisionDocSustento = $totalxp; // Fecha de la factura modificada
$motivo = $total15;

/* detalles */
$detalles = [
    [
        'codigoInterno' => 'P001',
        'descripcion' => $total10,
        'cantidad' => 1,
        'precioUnitario' => $total11,
        'descuento' => 0,
        'codigo' => '2',
        'codigoPorcentaje' => '2',
        'tarifa' => 15
    ]
];

/* cálculos */
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; $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 */
$emisor['claveAcceso'] = claveAcceso(
    $fecha, $emisor['codDoc'], $emisor['ruc'],
    $emisor['ambiente'], $serie, $emisor['secuencial'],
    '12345678', $emisor['tipoEmision']
);


/* infoNotaCredito */
$infoNotaCredito = [
    'fechaEmision'                  => date('d/m/Y', strtotime($fecha)),
    'dirEstablecimiento'            => $emisor['dirEstablecimiento'],
    'tipoIdentificacionComprador'   => $cliente['tipoIdentificacionComprador'],
    'razonSocialComprador'          => $cliente['razonSocial'],
    'identificacionComprador'       => $cliente['identificacion'],
    'codDocModificado'              => '01',
    'numDocModificado'              => $numeroFacturaModificada,
    'fechaEmisionDocSustento'       => $fechaEmisionDocSustento,
    'totalSinImpuestos'             => nf($totSin),
    'valorModificacion'             => nf($impTot),
    'moneda'                        => 'DOLAR',
    'totalConImpuestos'             => $tImp,
    'motivo'                        => $motivo
];

require 'xml_ec_nc.php';

// Crear carpeta 'xml' si no existe
if (!is_dir('xml')) mkdir('xml');

// Definir ruta del archivo XML
$ruta = 'xml/' . $emisor['claveAcceso'] . '.xml';
$xmlmues=$emisor['claveAcceso'].'.xml';
$xmlmuesin=$emisor['claveAcceso'];

// Crear instancia del generador y generar el XML
$gen = new GeneradorXMLEcuador21();
$gen->crearXMLNotaCredito($ruta, $emisor, $cliente, $infoNotaCredito, $detalles);

// Mensaje final
echo "✅ Nota de Crédito v 2.1.0 generada correctamente: $ruta";


require '../regisdato.php';
$reg=new Registroda();
$reg->Generadanotacredito($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);
