Skip to main content

Información General

El sistema proporciona múltiples endpoints para generar reportes y estadísticas de ventas, permitiendo exportar datos en formatos PDF, Excel y TXT para presentación a SUNAT. Todos los reportes están filtrados automáticamente por la empresa activa del usuario autenticado.

Estadísticas del Dashboard

Obtiene las estadísticas principales para mostrar en el dashboard del sistema.

Respuesta

{
  "success": true,
  "stats": [
    {
      "id": 1,
      "title": "Ventas del Mes",
      "value": "S/ 45,320.50",
      "change": "+12.5%",
      "isPositive": true,
      "icon": "DollarSign",
      "bgColor": "bg-green-500"
    },
    {
      "id": 2,
      "title": "Documentos Emitidos",
      "value": "128",
      "change": "+8.3%",
      "isPositive": true,
      "icon": "FileText",
      "bgColor": "bg-blue-600"
    },
    {
      "id": 3,
      "title": "Clientes Totales",
      "value": "342",
      "change": "+5.2%",
      "isPositive": true,
      "icon": "Users",
      "bgColor": "bg-orange-500"
    },
    {
      "id": 4,
      "title": "Productos en Stock",
      "value": "1,245",
      "change": "12 stock bajo",
      "isPositive": false,
      "icon": "Package",
      "bgColor": "bg-purple-500"
    }
  ],
  "recentInvoices": [
    {
      "id": "F001-00001234",
      "client": "EMPRESA ABC S.A.C.",
      "amount": "S/ 1,250.00",
      "date": "2024-03-04",
      "status": "Aceptado"
    },
    {
      "id": "B001-00005678",
      "client": "Juan Pérez García",
      "amount": "S/ 450.00",
      "date": "2024-03-04",
      "status": "Pendiente"
    }
  ],
  "sunat": {
    "pendientes": 5,
    "ultima_conexion": "2024-03-04 10:30:00"
  }
}

Descripción de Estadísticas

Exportación TXT para SUNAT

Genera un archivo TXT en formato PLE 14.1 (Registro de Ventas e Ingresos) para presentar a SUNAT.

Query Parameters

Ejemplo de Solicitud

GET /api/ventas/exportar-txt?mes=2&anio=2024

Formato del Archivo

El archivo generado sigue el formato PLE SUNAT con 35 campos separados por pipe (|):
20240200|M000000001|M-1|01/02/2024||01|F001|00000123||6|20612706702|EMPRESA ABC SAC|0.00|1000.00|0.00|180.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|1180.00|PEN|||||||||1|

Nombre del Archivo

LE{RUC}{PERIODO}140100{INDICADOR}111.TXT
Ejemplo: LE20612706702202402001401001111.TXT

Exportación a Excel

Exporta el registro de ventas en formato Excel con formato y estilos.

Query Parameters

Ejemplo de Solicitud

GET /api/ventas/exportar-excel?mes=3&anio=2024

Contenido del Excel

  • Título: “REGISTRO DE VENTAS -
  • Fecha de generación
  • Columnas: Documento, Fecha, Cliente, RUC/DNI, Subtotal, IGV, Total, Moneda, Estado, SUNAT
  • Filas alternadas con colores para mejor lectura
  • Total general al final
  • Formato numérico con decimales

Nombre del Archivo

ventas-{anio}-{mes}.xlsx
Ejemplo: ventas-2024-03.xlsx

Reporte RVTA (Registro de Ventas SUNAT)

Genera un reporte Excel en formato detallado según los estándares de SUNAT para el Registro de Ventas.

Query Parameters

Características

  • Incluye CUO (Código Único de Operación)
  • Tipo de documento cliente según tabla 2 SUNAT
  • Campos para base imponible, IGV, exonerado, inafecto
  • Totales por columna
  • Formato según PLE 14.1

Columnas del Reporte

ColumnaDescripción
CUOCódigo Único de Operación
Fecha EmisiónFecha del comprobante
Tipo DocCódigo SUNAT (01=Factura, 03=Boleta)
SerieSerie del documento
NúmeroNúmero correlativo
Tipo Doc Cliente1=DNI, 6=RUC, 0=Otros
Nro Doc ClienteDocumento del cliente
Razón SocialNombre/razón social
Base ImponibleMonto gravado
IGVIGV calculado (18%)
ExoneradoVentas exoneradas
InafectoVentas inafectas
TotalImporte total
MonedaPEN/USD
EstadoVIGENTE/ANULADO

Reporte de Ventas por Producto

Genera un reporte Excel agrupado por producto con totales de cantidad y montos vendidos.

Query Parameters

Datos Incluidos

  • Código del producto
  • Nombre/descripción
  • Unidad de medida
  • Cantidad total vendida
  • Número de ventas que incluyen el producto
  • Subtotal, IGV y Total
  • Ordenado por monto total descendente

Ejemplo de Uso

const url = `/api/ventas/reporte-producto?mes=3&anio=2024&token=${authToken}`;
window.open(url, '_blank');

Reporte de Ganancias

Genera un reporte Excel detallado con el análisis de ganancias por producto vendido.

Query Parameters

Cálculo de Ganancia

Ganancia = Total Venta - (Costo Unitario × Cantidad)

Columnas del Reporte

  • Documento (tipo y número)
  • Fecha de venta
  • Cliente
  • Producto
  • Cantidad
  • Precio de venta unitario
  • Costo unitario
  • Total de la venta
  • Ganancia (con color verde/rojo según sea positiva/negativa)

Totales Incluidos

  • Total de ventas
  • Costo total
  • Ganancia total
  • Porcentaje de margen

Nombre del Archivo

ganancias-{anio}-{mes}.xlsx

Exportación a PDF

Genera un reporte PDF de ventas en formato horizontal (landscape) usando mPDF.

Query Parameters

Ejemplo de Uso

// Abrir PDF en nueva ventana
const token = localStorage.getItem('auth_token');
const url = `/api/ventas/exportar-pdf?mes=3&anio=2024&token=${token}`;
window.open(url, '_blank');

Características del PDF

  • Formato A4 horizontal
  • Logo de la empresa
  • Tabla con todas las ventas del periodo
  • Totales al final
  • Generado con mPDF

Autenticación en Reportes

Endpoints API (JSON)

Usan autenticación Bearer estándar:
fetch('/api/dashboard/stats', {
  headers: {
    'Authorization': `Bearer ${token}`
  }
});

Endpoints de Descarga (PDF/Excel/TXT)

Requieren el token como query parameter debido al middleware TokenFromQuery:
const token = localStorage.getItem('auth_token');
const url = `/api/ventas/exportar-pdf?mes=3&anio=2024&token=${token}`;
window.open(url, '_blank');

Filtros y Alcance

Tipos de Documento Incluidos

Los reportes principales incluyen:
  • id_tido = 1: Facturas (01)
  • id_tido = 2: Boletas (03)
Otros documentos como Notas de Crédito y Débito tienen sus propios reportes específicos.

Estados de Documentos

Estado General (campo estado)

ValorDescripción
1Activa
2Anulada
AAnulada
3Vendida

Estado SUNAT (campo estado_sunat)

ValorDescripción
0Pendiente de envío
1Enviado y aceptado
2Rechazado por SUNAT

Monedas

Tipo de Moneda (campo tipo_moneda)

  • PEN: Soles peruanos (S/)
  • USD: Dólares americanos ($)

Conversión

Cuando se requiere convertir montos, se usa el campo tipo_cambio almacenado en la venta.

Formatos Numéricos

En Excel

// Formato con 2 decimales y separadores de miles
$sheet->getStyle('E5:G100')->getNumberFormat()->setFormatCode('#,##0.00');

En JSON

{
  "value": "S/ 45,320.50",
  "raw_value": 45320.50
}

Cálculos Comunes

IGV (18%)

$baseImponible = $total / 1.18;
$igv = $baseImponible * 0.18;

Cambio Porcentual

$cambio = (($actual - $anterior) / $anterior) * 100;

Margen de Ganancia

$margen = ($ganancia / $totalVenta) * 100;

Permisos Requeridos

La mayoría de los endpoints de reportes requieren el permiso:
ventas.view
Ejemplo en routes/api.php:
Route::get('ventas/exportar-excel', [VentaExportController::class, 'exportarExcel'])
    ->middleware('permission:ventas.view');

Almacenamiento Temporal

Los archivos PDF generados con mPDF usan directorio temporal:
'tempDir' => storage_path('app/mpdf')
Asegúrate de que este directorio tenga permisos de escritura.

Build docs developers (and LLMs) love