warrior/ticketer

Imprimir boletas y facturas con ESCPOS

1.0.0 2021-06-04 15:32 UTC

This package is auto-updated.

Last update: 2024-04-04 21:52:14 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

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 es windows o cups.
      • La dirección IP o URI de Samba, por ejemplo: smb://192.168.0.5/PrinterName si su connector_type es network.
      • No es necesario especificar connector_descriptor si su connector_type es dummy.
    • connector_port:
      • Si su connector_type es network el puerto abierto de la impresora.
    • 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 en false 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.