Implementacion de modulo de pedidos
This commit is contained in:
172
app/Printer/PrinterHandler.php
Normal file
172
app/Printer/PrinterHandler.php
Normal file
@@ -0,0 +1,172 @@
|
||||
<?php
|
||||
|
||||
namespace App\Printer;
|
||||
|
||||
use App\Models\Impresora;
|
||||
use App\Models\Pedido;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Mike42\Escpos\EscposImage;
|
||||
use Mike42\Escpos\PrintConnectors\NetworkPrintConnector;
|
||||
use Mike42\Escpos\PrintConnectors\WindowsPrintConnector;
|
||||
use Mike42\Escpos\Printer;
|
||||
|
||||
class PrinterHandler{
|
||||
|
||||
private Impresora $impresora;
|
||||
private Printer $printer;
|
||||
private $printerConfig;
|
||||
|
||||
const PRINTER_BY_IP = 1;
|
||||
const PRINTER_BY_SHARED = 2;
|
||||
|
||||
public function __construct(Impresora $impresora,$type_printer) {
|
||||
$this->impresora = $impresora;
|
||||
if($type_printer == PrinterHandler::PRINTER_BY_IP)
|
||||
{
|
||||
$connector = new NetworkPrintConnector($impresora->estacion,$impresora->nombre_impresora);
|
||||
}
|
||||
else if($type_printer == PrinterHandler::PRINTER_BY_SHARED)
|
||||
{
|
||||
$connector = new WindowsPrintConnector("smb://".$impresora->estacion."/".$impresora->nombre_impresora."");
|
||||
}
|
||||
$this->printer = new Printer($connector);
|
||||
}
|
||||
|
||||
|
||||
public function text(string $message="") : void {
|
||||
$this->printer->text($message."\n");
|
||||
}
|
||||
|
||||
public function testPage()
|
||||
{
|
||||
$img = EscposImage::load('storage/img/proone_print.jpg',false);
|
||||
$this->printer->bitImage($img);
|
||||
|
||||
$this->text("***** ESTRADA AUTOPARTES *****");
|
||||
$this->text("Pagina de prueba de impresion");
|
||||
$this->text("Estacion:".$this->impresora->estacion);
|
||||
$this->text("Nombre Impresora:".$this->impresora->nombre_impresora);
|
||||
$this->text("Desarrollado por Super Dev Bros");
|
||||
$this->feed();
|
||||
$this->cut();
|
||||
$this->close();
|
||||
}
|
||||
|
||||
public function printImage($path)
|
||||
{
|
||||
$img = EscposImage::load($path);
|
||||
$this->printer->bitImage($img);
|
||||
}
|
||||
|
||||
public function printPedido (Pedido $pedido, $hashed = true)
|
||||
{
|
||||
$IVA = 0;
|
||||
$subTotal = 0;
|
||||
$total = 0;
|
||||
$this->printer->setJustification(Printer::JUSTIFY_CENTER);
|
||||
$this->printImage('storage/img/proone_print.jpg');
|
||||
$this->feed();
|
||||
$this->printer -> setTextSize(2, 2);
|
||||
if($hashed)
|
||||
{
|
||||
$this->text("CLIENTE");
|
||||
}
|
||||
$this->text("No. Pedido:");
|
||||
$this->text($pedido->pedido);
|
||||
$this->printer -> setTextSize(1, 1);
|
||||
$this->printer->setJustification(Printer::JUSTIFY_CENTER);
|
||||
$this->feed(1);
|
||||
$this->text("MIGUEL ANGEL ROMERO ESTRADA");
|
||||
$this->text("DIEGO ESQUIVEL #130 INT. 3");
|
||||
$this->text("PLAYAS DE ROSARITO, BC 22706 Mexico");
|
||||
$this->text("R.F.C. : ROEM691011EZ4");
|
||||
$this->text("TELEFONOS: (661) 613-5549, (661) 104-4313");
|
||||
$this->text(" (661) 104-4590, (661) 120-0015");
|
||||
$this->text("CORREO: ventas@stradaautopartes.com");
|
||||
$this->printer->setJustification(Printer::JUSTIFY_LEFT);
|
||||
$this->feed(1);
|
||||
$this->text("Atendido por: ".$pedido->user->name);
|
||||
$this->feed(1);
|
||||
|
||||
$this->text("---------------- Datos Cliente ----------------");
|
||||
$this->text("Cuenta: ".$pedido->cuenta);
|
||||
$this->text("Telefono: ".$pedido->telefono);
|
||||
$this->text("Fecha: ".now()->format('Y-m-d H:m:s'));
|
||||
$this->text("Año:".$pedido->year);
|
||||
$this->text("Marca:".$pedido->marca);
|
||||
$this->text("Modelo:".$pedido->modelo);
|
||||
$this->text("Motor:".$pedido->motor);
|
||||
$this->text("---------------- Datos De Pago ----------------");
|
||||
foreach ($pedido->primeraVenta()->getAbonos() as $value) {
|
||||
$this->text("Metodo: ".$value[1]." | Anticipo: ".$value[0]);
|
||||
}
|
||||
$this->text("Adeudo: ".$pedido->primeraVenta()->faltante());
|
||||
|
||||
// $this->printer->setJustification(Printer::JUSTIFY_CENTER);
|
||||
$this->text("-------------------- Pedido --------------------");
|
||||
if($hashed)
|
||||
{
|
||||
$this->text('Codigo Linea Descripcion Cant Precio ');
|
||||
}
|
||||
else
|
||||
{
|
||||
// 48 digitos.
|
||||
$this->text('Codigo Linea RT Descripcion Cant Precio ');
|
||||
}
|
||||
foreach ($pedido->productos as $producto) {
|
||||
if($hashed)
|
||||
{
|
||||
$this->text(str_pad(substr(Hash::make($producto->codigo),0,10),11)."".str_pad($producto->linea,7)."".str_pad(substr($producto->descripcion,0,18),19)."".str_pad(intval($producto->pivot->unidades),5)."".round($producto->pivot->precio_unitario,8));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->text(str_pad(substr($producto->codigo ,0,10),11)."".str_pad($producto->linea,6)."".str_pad($producto->ruta->prefijo,5)."".str_pad(substr($producto->descripcion,0,11),12)."".str_pad(intval($producto->pivot->unidades),5)."".round($producto->pivot->precio_unitario,8));
|
||||
}
|
||||
// $this->text(str_pad(substr($producto->codigo,0,9),10)."".str_pad($producto->prefijo,6)."".str_pad(substr($producto->descripcion,0,14),15)."".str_pad($producto->pivot->unidades,10)."".round($producto->pivot->unidades*$producto->pivot->precio_unitario/1.16,2));
|
||||
$subTotal+=$producto->pivot->unidades*$producto->pivot->precio_unitario/1.16;
|
||||
}
|
||||
$this->text("________________________________________________");
|
||||
$IVA = $subTotal*0.16;
|
||||
$total = round($subTotal+$IVA,2);
|
||||
$this->feed(1);
|
||||
$this->printer->setJustification(Printer::JUSTIFY_RIGHT);
|
||||
$this->text("SubTotal: ".round($subTotal));
|
||||
$this->text("IVA 8%: ".round($IVA));
|
||||
$this->text("Total a Pagar: ".$total);
|
||||
if($pedido->cambio>0)
|
||||
{
|
||||
$this->text("Cambio: ".$pedido->cambio);
|
||||
}
|
||||
$this->feed(1);
|
||||
$this->printer->setJustification(Printer::JUSTIFY_CENTER);
|
||||
$this->text("-------------------COMENTARIOS------------------");
|
||||
$this->text($pedido->comentarios ?? "");
|
||||
$this->text("________________________________________________");
|
||||
$this->feed(1);
|
||||
$this->text("Revise bien su mercancia, en partes electronicas");
|
||||
$this->text("no hay garantia, no hay devolucion de efectivo.");
|
||||
$this->text("Toda orden requiere un anticipo del 50%,");
|
||||
$this->text("y toda cancelacion se cobrara el 50%");
|
||||
|
||||
$this->feed(1);
|
||||
$this->feed(1);
|
||||
|
||||
$this->printer -> setTextSize(2, 2);
|
||||
$this->text("¡Gracias por su compra!");
|
||||
|
||||
}
|
||||
|
||||
public function cut()
|
||||
{
|
||||
$this->printer->cut();
|
||||
}
|
||||
|
||||
public function close()
|
||||
{
|
||||
$this->printer->close();
|
||||
}
|
||||
public function feed($lines=2)
|
||||
{
|
||||
$this->printer->feed($lines);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user