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); } }