- ¿Cómo instalo Laravel Greenter en un proyecto Laravel 11+?
- Ejecuta `composer require codersfree/laravel-greenter` y publica los archivos de configuración con `php artisan vendor:publish --tag=greenter-laravel`. Esto generará el archivo `config/greenter.php` y recursos como certificados y logos. Asegúrate de tener PHP 8.1+ y las extensiones `soap`, `openssl`, `dom` y `xml` habilitadas.
- ¿Qué tipos de comprobantes electrónicos soporta este paquete para SUNAT?
- Laravel Greenter soporta facturas electrónicas, notas de crédito, recibos por operaciones en el exterior (ROE) y otros documentos tributarios exigidos por SUNAT. También permite personalizar plantillas para tipos de comprobantes específicos, como facturas ligeras (hasta S/ 1500). Consulta la sección de 'Otros Tipos de Comprobantes' en la documentación.
- ¿Cómo configuro las credenciales para firmar digitalmente los comprobantes?
- Edita el archivo `config/greenter.php` y define las claves bajo la sección `credentials`. Puedes usar PKCS12 (recomendado por SUNAT) o OCSP. Para PKCS12, sube tu archivo `.p12` a `storage/app/greenter/certs/` y configura el path y contraseña. Verifica que OpenSSL esté habilitado en tu servidor (`php -m | grep openssl`).
- ¿Cómo envío un comprobante a SUNAT y manejo la respuesta (CDR)?
- Usa el facade `Greenter` para emitir el comprobante: `Greenter::invoice()->send()`. El paquete devuelve un objeto con métodos como `getCdr()`, `getResponseCode()` y `isAccepted()` para validar la respuesta. También puedes convertir el CDR a array con `toArray()`. Para depuración, revisa los logs en `storage/logs/laravel.log`.
- ¿Puedo generar el XML firmado sin enviar a SUNAT para pruebas o integración con otros sistemas?
- Sí, usa `Greenter::invoice()->generateSignedXml()` para crear el XML firmado localmente. También puedes enviar un XML existente a SUNAT con `Greenter::sendExistingXml($xmlPath)`. Esto es útil para validar esquemas antes de la emisión real o integrar con sistemas externos que requieran el XML como entrada.
- ¿Cómo genero un PDF o HTML del comprobante para imprimir o mostrar al cliente?
- Usa `Greenter::invoice()->render('pdf')` o `Greenter::invoice()->render('html')`. Para PDF, necesitas `wkhtmltopdf` instalado. Personaliza las plantillas editando los archivos en `resources/views/vendor/greenter/`. Puedes generar el reporte sin enviar a SUNAT con `Greenter::invoice()->generateReportOnly()`.
- ¿Cómo manejo múltiples empresas con diferentes credenciales SUNAT en un solo proyecto?
- Configura un array de credenciales en `config/greenter.php` bajo `credentials`. Luego, al emitir un comprobante, especifica la empresa con `Greenter::setCompany('nombre_empresa')`. El paquete soporta emisión dinámica para múltiples empresas sin duplicar código. Cada empresa debe tener su propio certificado digital y configuración.
- ¿Qué debo hacer si SUNAT rechaza un comprobante por error en el XML o firma?
- Revisa el código de respuesta (`getResponseCode()`) y el mensaje de error (`getResponseMessage()`). Los errores comunes incluyen XML mal formado, certificados expirados o datos inválidos. Usa el entorno de prueba de SUNAT (SEE) para validar antes de producción. Implementa logs detallados y notificaciones para errores críticos.
- ¿Cómo pruebo la integración con SUNAT antes de ir a producción?
- Configura el entorno de prueba en `config/greenter.php` con `env('SUNAT_ENVIRONMENT', 'sandbox')`. Usa el certificado de prueba proporcionado en `public/certs/certificate.pem` y prueba con datos ficticios. SUNAT ofrece un entorno de pruebas (SEE) para validar XML y respuestas sin impacto real. Automatiza pruebas con PHPUnit usando mocks para las respuestas de SUNAT.
- ¿Hay alternativas a Laravel Greenter para facturación electrónica en Perú?
- Alternativas incluyen paquetes como `spatie/laravel-sunat` o integrar directamente la librería [Greenter](https://github.com/thegreenter/greenter) sin Laravel. Sin embargo, Laravel Greenter destaca por su integración nativa con Laravel (facades, eventos, configuración centralizada) y soporte para múltiples tipos de comprobantes. Evalúa si necesitas características específicas como generación de PDF o manejo avanzado de CDR.