warrior / ticketer
Imprimir boletas y facturas con ESCPOS
Requires
- php: ^7.2.5|^8.0
- illuminate/container: ^7.0|^8.0
- illuminate/contracts: ^7.0|^8.0
- illuminate/database: ^7.0|^8.0
- illuminate/support: ^7.0|^8.0
- mike42/escpos-php: ^3.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
Paquete Laravel simple para integrar ESC/POS Print Driver para PHP y dar estructura de comprobantes segun Normativa Sunat.
- Comprobantes: Boleta y Factura
- Tickets: Cocina, Avance de cuenta (proximamete).
Instalación
Puedes instalar el paquete a través de composer:
composer require warrior/ticketer
Uso
Ejecute el siguiente comando para publicar la configuración utilizada por este paquete:
php artisan vendor:publish --provider="Warrior\Ticketer\TicketerServiceProvider" --tag="config"
Opcional: el service provider se registrará automáticamente. O puede agregar manualmente el proveedor de servicios en su archivo config / app.php:
'providers' => [ // ... Warrior\Ticketer\TicketerServiceProvider::class, ];
Configuracíon previa
Edite el archivo de configuración ubicado en config / ticketer.php
de la siguiente manera:
-
Configure
conexion
en:connector_type
:windows
si está utilizando Windows como servidor web.cups
si está utilizando Linux o Mac como servidor web.network
si está utilizando una impresora de red.dummy
si el usuario debe recuperar los datos almacenados en búfer. Usado para apis.
connector_descriptor
:- El nombre de la impresora si su
connector_type
eswindows
ocups
. - La dirección IP o URI de Samba, por ejemplo:
smb://192.168.0.5/PrinterName
si suconnector_type
esnetwork
. - No es necesario especificar
connector_descriptor
si suconnector_type
esdummy
.
- El nombre de la impresora si su
connector_port
:- Si su
connector_type
esnetwork
el puerto abierto de la impresora.
- Si su
- Más información en mike42/escpos-php
-
Configure
store
para la cabecera de sus comprobantes:ruc
: Número de registro único de contribuyente de la tienda ó empresa.nombre_comercial
: Nombre comercial de la tienda ó empresa.razon_social
: Razón social de la tienda ó empresa.direccion
: Direción de tienda ó empresa.telefono
: Teléfono de la tienda ó empresa.email
:Correo electrónico de la tienda ó empresa.website
: Sitio web de la tienda o empresa (donde el cliente prodra consultar su comprobante).logo
: Path del logo de la tienda, sino posee logo se debe especificar enfalse
y se tomara el nombre comercial como logo principal de la cabecera. Se recomienda usar las dimenciones de 300x120 en pixeles, y de preferencia imagen en blanco y negro.
-
Configure
leyendas
para el final de sus comprobantes:CONTRATOS DE CONSTRUCCIÓN EJECUTADOS EN LA AMAZONÍA REGIÓN SELVA
.SERVICIOS PRESTADOS EN LA AMAZONÍA REGIÓN SELVA PARA SER CONSUMIDOS EN LA MISMA
.BIENES TRANSFERIDOS EN LA AMAZONÍA REGIÓN SELVA PARA SER CONSUMIDOS EN LA MISMA
.- Cualquier otra leyenda que se requiera.
Ejemplo de Imprimir comporbante
use Warrior\Ticketer\Ticketer; ...
$now = Carbon::now(); $ticketer = new Ticketer(); $ticketer->init('windows', 'EPSON TM-T88V Receipt'); $ticketer->setFechaEmision($now); $ticketer->setComprobante('BOLETA'); $ticketer->setSerieComprobante('B001'); $ticketer->setNumeroComprobante('000000100'); $ticketer->seCodigoComprobante('01'); $ticketer->setCliente('Edwin Alexander Bautista Villegas'); $ticketer->setTipoDocumento(1); $ticketer->setNumeroDocumento('72462226'); $ticketer->setCodigoDocumento('01'); $ticketer->setDireccion('Jr. Enarte Torres 421 - Santa Lucia'); $ticketer->setTipoDetalle('DETALLADO'); // $nombre, $cantidad, $precio, $icbper, $gratuita $ticketer->addItem("POLLO A LA BRASA", 2, 21.5, false, false); // $ticketer->addItem("ENSALADA RUSA", 3, 12, false, false); // $ticketer->addItem("POLLO A LA BRASA", 4, 2 , false, false); // $ticketer->addItem("AGUA MINERAL", 1, 2 , false, true); // $ticketer->addItem("BOLSA PLASTICA", 1, 0.2 , true, false); // Retornara true al mandar la impresión $ticketer->printComprobante(); // Si quiere obtener los datos de impresion en base64 // util para trabajar con APIS web // return $ticketer->printComprobante(true);
Ejemplo de Imprimir avance de cuenta
use Warrior\Ticketer\Ticketer; ...
$now = Carbon::now(); $ticketer = new Ticketer(); $ticketer->init('windows', 'EPSON TM-T88V Receipt'); $ticketer->setFechaEmision($now); $ticketer->setCliente('Edwin Alexander Bautista Villegas'); $ticketer->setAmbiente('MESA 01 - SALON PRINCIPAL'); $ticketer->addItem("POLLO A LA BRASA", 2, 21.5, false, false); $ticketer->addItem("ENSALADA RUSA", 3, 12, false, false); $ticketer->setMozo('Junito Bardales'); // Retornara true al mandar la impresión $ticketer->printAvance(); // Si quiere obtener los datos de impresion en base64 // util para trabajar con APIS web // return $ticketer->printAvance(true);
Ejemplo de Imprimir ticket de cocina
use Warrior\Ticketer\Ticketer; ...
$now = Carbon::now(); $ticketer = new Ticketer(); $ticketer->init('windows', 'EPSON TM-T88V Receipt'); $ticketer->setFechaEmision($now); $ticketer->setCliente('Edwin Alexander Bautista Villegas'); $ticketer->setAmbiente('MESA 01 - SALON PRINCIPAL'); /** * Agregar un false adicional para no imprimir en formato comprobante * El precio, el icbper, transferencia gratuita seran obiados ya que no son necesarios en la cocina * Ejemplo: * [1] - Pollo a la brasa * [2] - Coca Cola */ $ticketer->addItem("POLLO A LA BRASA", 2, 21.5, false, false, false); $ticketer->addItem("ENSALADA RUSA", 3, 12, false, false, false); $ticketer->setMozo('Junito Bardales'); // Retornara true al mandar la impresión $ticketer->printCocina(); // Si quiere obtener los datos de impresion en base64 // util para trabajar con APIS web // return $ticketer->printCocina(true);
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email edwinbautista@upeu.edu.pe instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.