
| Path : /home/gujo45me/public_html/margarita/pdf/ |
| Disable Functions : exec,passthru,shell_exec,system System : Linux server-604606.appsiete.com 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 [ Home ][ Zone-h ][ Jumping ][ Symlink ][ Mass Depes ][ Command ] |
| Current File : /home/gujo45me/public_html/margarita/pdf/reporteSire_ventas_txt.php |
<?php
include("config.php");
require_once("phpexcel/PHPExcel.php");
require_once "../sunat/librerias/pclzip/pclzip.lib.php"; //ojo
if (PHP_SAPI == 'cli')
die('Este archivo solo se puede ver desde un navegador web');
// Se crea el objeto PHPExcel
$objPHPExcel = new PHPExcel();
$fecha1 = $_GET['fecha1']; //mes
$fecha2 = $_GET['fecha2']; //año
$ruc = $_GET['ruc'];
$fecha_inicio = $fecha2."-".$fecha1."-01";
$fecha_fin = $fecha2."-".$fecha1."-31";
$conexion = new mysqli($db_host,$db_user,$db_pass,$db_name);
if (mysqli_connect_errno()) {
printf("La conexión con el servidor de base de datos falló: %s\n", mysqli_connect_error());
exit();
}
$consulta1 = 'SELECT
(SELECT razon_social FROM empresa WHERE id_empresa=1) as "Nombre_Empresa",
(SELECT ruc FROM empresa WHERE id_empresa=1) as "RUC_Empresa",
v.id_venta,
DATE_FORMAT(v.fecha_venta, "%d/%m/%Y") as "Fecha_Emision",
DATE_FORMAT(v.fecha_pago, "%d/%m/%Y") as "Fecha_Vencimiento",
tc.codigo as "Tipo_Comprobante",
v.serie_comprobante as "Serie",
v.numero_comprobante as "Numero",
td.codigo as "Tipo_Documento",
c.numero_documento as "RUC",
c.nombre as "Razon_Social",
(SELECT SUM(ROUND(dv.precio_venta_neto, 2)) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="AFECTO" AND dv.id_venta=v.id_venta) as "Base_imponible",
(SELECT SUM(ROUND(dv.impuesto, 2)) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="AFECTO" AND dv.id_venta=v.id_venta) as "Igv",
(SELECT SUM(dv.precio_venta_total) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="EXONERADO" AND dv.id_venta=v.id_venta) as "Exonerado",
(SELECT SUM(dv.precio_venta_total) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="INAFECTO" AND dv.id_venta=v.id_venta) as "Inafecto",
(SELECT (v.total_venta-SUM(dv.precio_venta_total)) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE dv.id_venta=v.id_venta) as "Icbper",
v.total_venta as "Importe_Total",
v.estado_envio as "Estado"
FROM ventas v INNER JOIN clientes c ON v.id_cliente = c.id_cliente
INNER JOIN tipo_comprobante tc ON v.id_tipo_comprobante = tc.id_tipo_comprobante
INNER JOIN tipo_documento td ON c.id_tipo_documento = td.id_tipo_documento
WHERE (v.fecha_venta >= "'.$fecha2.'-'.$fecha1.'-01" AND v.fecha_venta <= "'.$fecha2.'-'.$fecha1.'-31") AND v.estado="1" ORDER BY v.created_at ASC';
$consulta2 = 'SELECT
(SELECT razon_social FROM empresa WHERE id_empresa=1) as "Nombre_Empresa",
(SELECT ruc FROM empresa WHERE id_empresa=1) as "RUC_Empresa",
n.id_nota,
DATE_FORMAT(n.created_at, "%d/%m/%Y") as "Fecha_Emision",
v.fecha_venta as "Fecha_Anulado",
tcn.codigo as "Tipo_Comprobante",
n.serie_nota as "Serie",
n.numero_nota as "Numero",
td.codigo as "Tipo_Documento",
c.numero_documento as "RUC",
c.nombre as "Razon_Social",
(SELECT SUM(ROUND(dv.precio_venta_neto, 2)) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="AFECTO" AND dv.id_venta=v.id_venta) as "Base_imponible",
(SELECT SUM(ROUND(dv.impuesto, 2)) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="AFECTO" AND dv.id_venta=v.id_venta) as "Igv",
(SELECT SUM(dv.precio_venta_total) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="EXONERADO" AND dv.id_venta=n.id_venta) as "Exonerado",
(SELECT SUM(dv.precio_venta_total) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE p.situacion_impuesto="INAFECTO" AND dv.id_venta=n.id_venta) as "Inafecto",
(SELECT (v.total_venta-SUM(dv.precio_venta_total)) FROM detalle_venta dv INNER JOIN productos p ON p.id_producto=dv.id_producto WHERE dv.id_venta=v.id_venta) as "Icbper",
v.total_venta as "Importe_Total",
DATE_FORMAT(v.fecha_venta, "%d/%m/%Y") as "Fecha_Venta",
tcv.codigo as "Tipo_Comprobante_Venta",
v.serie_comprobante as "Serie_Venta",
v.numero_comprobante as "Numero_Venta",
n.estado_envio as "Estado"
FROM notas n INNER JOIN ventas v ON n.id_venta = v.id_venta
INNER JOIN clientes c ON c.id_cliente = v.id_cliente
INNER JOIN tipo_comprobante tcn ON tcn.id_tipo_comprobante = n.id_tipo_comprobante
INNER JOIN tipo_comprobante tcv ON tcv.id_tipo_comprobante = v.id_tipo_comprobante
INNER JOIN tipo_documento td ON td.id_tipo_documento = c.id_tipo_documento
WHERE (n.created_at >= "'.$fecha2.'-'.$fecha1.'-01" AND n.created_at <= "'.$fecha2.'-'.$fecha1.'-31" ) AND n.estado="1" ORDER BY n.created_at ASC';
$resultado1 = $conexion->query($consulta1);
$resultado2 = $conexion->query($consulta2);
$prefijo = "LE";
$sufijo = "00140400021112";
$nombreArchivo = $prefijo.$ruc.$fecha2.$fecha1.$sufijo.".txt";
$archivo = fopen($nombreArchivo, "w");
if ($archivo) {
if($resultado1->num_rows > 0 ){
while ($fila = $resultado1->fetch_array()) {
$linea =
utf8_encode($fila['RUC_Empresa']) . "|" .
utf8_encode($fila['Nombre_Empresa']) . "|" .
utf8_encode($fecha2.$fecha1). "||" . // 202305
utf8_encode($fila['Fecha_Emision']) . "|" .
utf8_encode($fila['Fecha_Vencimiento']) . "|" .
utf8_encode($fila['Tipo_Comprobante']) . "|" .
utf8_encode($fila['Serie']) . "|" .
utf8_encode($fila['Numero']) . "||" .
utf8_encode($fila['Tipo_Documento']) . "|" .
utf8_encode($fila['RUC']) . "|" . // ruc cliente
utf8_encode($fila['Razon_Social']) . "|0.00|" . // nombre cliente
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Base_imponible']) ? $fila['Base_imponible'] : "0.00") ) . "|" . // Base imponible
"0.00|" . // Base imponible Nota mes pasado
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Igv']) ? $fila['Igv'] : "0.00") ) . "|" . // Igv
"0.00|" . // Igv Nota mes pasado
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Exonerado']) ? $fila['Exonerado'] : "0.00") ) . "|" . // exonerado
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Inafecto']) ? $fila['Inafecto'] : "0.00") ) . "|" . // inafacto
"0.00|" . // isc
"0.00|" . // arroz
"0.00|" . // igv arroz
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Icbper']) ? $fila['Icbper'] : "0.00") ) . "|" . // icbper
"0.00|" . // otros
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : $fila['Importe_Total'] ) . "|" . // total
"PEN||" . // moneda
"|" . // fecha anulado
"|" . // tipo anulado
"|" . // serie anulado
"|" . // numero anulado
"||||\n"; // otros
fwrite($archivo, $linea);
}
}
if($resultado2->num_rows > 0 ){
while ($fila = $resultado2->fetch_array()) {
$linea =
utf8_encode($fila['RUC_Empresa']) . "|" .
utf8_encode($fila['Nombre_Empresa']) . "|" .
utf8_encode($fecha2.$fecha1). "||" .
utf8_encode($fila['Fecha_Emision']) . "||" .
utf8_encode($fila['Tipo_Comprobante']) . "|" .
utf8_encode($fila['Serie']) . "|" .
utf8_encode($fila['Numero']) . "||" .
utf8_encode($fila['Tipo_Documento']) . "|" .
utf8_encode($fila['RUC']) . "|" .
utf8_encode($fila['Razon_Social']) . "|0.00|" .
utf8_encode( check_in_range($fecha_inicio, $fecha_fin, $fila['Fecha_Anulado']) ? ($fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Base_imponible']) ? "-".$fila['Base_imponible'] : "0.00")) : "0.00" ) . "|" . // Base imponible
utf8_encode( check_in_range($fecha_inicio, $fecha_fin, $fila['Fecha_Anulado']) ? "0.00" : ($fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Base_imponible']) ? "-".$fila['Base_imponible'] : "0.00")) ) . "|" . // Base imponible Nota mes pasado
utf8_encode( check_in_range($fecha_inicio, $fecha_fin, $fila['Fecha_Anulado']) ? ($fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Igv']) ? "-".$fila['Igv'] : "0.00")) : "0.00" ) . "|" . // Igv
utf8_encode( check_in_range($fecha_inicio, $fecha_fin, $fila['Fecha_Anulado']) ? "0.00" : ($fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Igv']) ? "-".$fila['Igv'] : "0.00")) ) . "|" . // Igv nota mes pasado
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Exonerado']) ? "-".$fila['Exonerado'] : "0.00") ) . "|" . // exonerado
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Inafecto']) ? "-".$fila['Inafecto'] : "0.00") ) . "|" . // exonerado
"0.00|" . // isc
"0.00|" . // arroz
"0.00|" . // igv arroz
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : (!is_null($fila['Icbper']) ? "-".$fila['Icbper'] : "0.00") ) . "|" . // icbper
"0.00|" . // otros
utf8_encode( $fila['Estado']=="RECHAZADO" ? "0.00" : "-".$fila['Importe_Total'] ) . "|" . // total
"PEN||" . // otros
utf8_encode($fila['Fecha_Venta']) . "|" . // fecha
utf8_encode($fila['Tipo_Comprobante_Venta']) . "|" . // tipo
utf8_encode($fila['Serie_Venta']) . "|" . // serie
utf8_encode($fila['Numero_Venta']) . "|" . // numero
"||||\n"; // otros
fwrite($archivo, $linea);
}
}
fclose($archivo);
$nombreArchivoZIP = $prefijo.$ruc.$fecha2.$fecha1.$sufijo.".zip";
$zip = new PclZip($nombreArchivoZIP);
$zip->create($nombreArchivo);
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=' . $nombreArchivoZIP);
ob_end_clean();
flush();
readfile($nombreArchivoZIP);
sleep(1);
unlink($nombreArchivo);
unlink($nombreArchivoZIP);
}
else{
echo "Error al abrir el archivo";
}
//comprobar rango de fechas
function check_in_range($fecha_inicio, $fecha_fin, $fecha){
$fecha_inicio = strtotime($fecha_inicio);
$fecha_fin = strtotime($fecha_fin);
$fecha = strtotime($fecha);
if(($fecha >= $fecha_inicio) && ($fecha <= $fecha_fin)) {
return true;
} else {
return false;
}
}