Skip to content

Commit

Permalink
Add preview
Browse files Browse the repository at this point in the history
  • Loading branch information
ldavidsp committed Nov 16, 2022
1 parent eabbb7b commit aba146d
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 28 deletions.
78 changes: 51 additions & 27 deletions app/src/main/java/com/homeflow/invoices/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.snackbar.Snackbar
import com.homeflow.invoices.app.databinding.ActivityMainBinding
Expand All @@ -27,38 +28,61 @@ class MainActivity : AppCompatActivity() {

val printable = ArrayList<Printable>()
printable.add(TextPrintable.Builder().setNewLine())
printable.add(TextPrintable.Builder().setCenter("EL TEST").setNewLine())
printable.add(TextPrintable.Builder().setCenter("18383838383").setNewLine())
printable.add(TextPrintable.Builder().setCenter("San Jose").setNewLine())
printable.add(TextPrintable.Builder().setCenter("[email protected]").setNewLine())
printable.add(TextPrintable.Builder().setCenter(getString(R.string.app_name)).setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

printable.add(TextPrintable.Builder().setLeft("Condición: Contado").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Clave: Contado").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Tiquete: 000010400").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Cliente: Contado").setNewLine())
printable.add(TextPrintable.Builder().setLeft("13/04/2022 15:20:38").setNewLine())
printable.add(TextPrintable.Builder().setLine("----------------------------------------").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Cant.").setCenter("Producto").setRight("Total").setNewLine())
printable.add(TextPrintable.Builder().setLine("----------------------------------------").setNewLine())

printable.add(TextPrintable.Builder().setLeft("1").setCenter("Laptop").setRight("C$ 1,200.00").setNewLine())

printable.add(TextPrintable.Builder().setLine("----------------------------------------").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Subtotal Gravado").setRight("C$ 1,061.95").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Subtotal No Gravado").setRight("C$ 0.00").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Total Gravado").setRight("C$ 1,061.95").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Total No Gravado").setRight("C$ 0.00").setNewLine())
printable.add(TextPrintable.Builder().setLeft("IVA (%13)").setRight("C$ 138.00").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Total").setRight("C$ 1200.00").setNewLine())
printable.add(TextPrintable.Builder().setLine("----------------------------------------").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Pago Efectivo").setRight("C$ 1200.00").setNewLine())


//HomeflowPrinter(this@MainActivity, printable).printUsb()
// Part 2
printable.add(TextPrintable.Builder().setCenter("LEON / 2341-2017").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())
printable.add(TextPrintable.Builder().setCenter("Recibo: 1").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

// Part 3
printable.add(TextPrintable.Builder().setLeft("Fecha/Hora:").setRight("14/11/2022").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Transaccion:").setRight("8463562726").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Transaccion:").setCenter("ID").setRight("8463562726").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Cobro del Dia:").setCenter("2783483").setRight("84635").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

// Part 4
printable.add(TextPrintable.Builder().setLeft("Cliente: ").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Luis David Solorzano Paredes").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

// Part 5
printable.add(TextPrintable.Builder().setLeft("Cobro del Dia").setRight("C$ 1,200").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Monto atrasado:").setRight("C$ 200").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Dias mora:").setRight("1").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Monto int. moratorio:").setRight("C$ 13,200").setNewLine())
printable.add(TextPrintable.Builder().setCenter("--------------------------------").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Total a pagar:").setRight("C$ 16,200").setNewLine())
printable.add(TextPrintable.Builder().setCenter("--------------------------------").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Monto de cancelacion:").setRight("C$ 18,200").setNewLine())
printable.add(TextPrintable.Builder().setCenter("--------------------------------").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

// Part 6
printable.add(TextPrintable.Builder().setLeft("Total cobrado:").setRight("C$ 1,000").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

// Part 7
printable.add(TextPrintable.Builder().setLeft("Concepto:").setRight("ABONO").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Saldo anterior:").setRight("C$ 18,200").setNewLine())
printable.add(TextPrintable.Builder().setLeft("Nuevo saldo:").setRight("C$ 16,200").setNewLine())
printable.add(TextPrintable.Builder().setNewLine())
printable.add(TextPrintable.Builder().setNewLine())

// Part 8
printable.add(TextPrintable.Builder().setCenter("-------------------------").setNewLine())
printable.add(TextPrintable.Builder().setCenter("Jose David Solorzano").setNewLine())


HomeflowPrinter(this@MainActivity, printable).printPreviewLog()
}

printerPermission()

//Log.e("TAG", "onCreate: ${String(byteArrayOf(0), Charsets.UTF_8)}")
}
/**
* Printer Permission
Expand Down
48 changes: 47 additions & 1 deletion printer/src/main/java/com/homeflow/printer/HomeflowPrinter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ import com.dantsu.escposprinter.connection.bluetooth.BluetoothPrintersConnection
import com.dantsu.escposprinter.connection.tcp.TcpConnection
import com.dantsu.escposprinter.connection.usb.UsbConnection
import com.dantsu.escposprinter.connection.usb.UsbPrintersConnections
import com.dantsu.escposprinter.textparser.PrinterTextParser
import com.homeflow.printer.core.Printable
import java.text.FieldPosition
import java.util.*
import java.util.regex.Pattern

/**
* Homeflow USB
Expand Down Expand Up @@ -75,7 +79,49 @@ class HomeflowPrinter(private var mActivity: Activity, private var printables: M
* Print Preview Log
*/
fun printPreviewLog() {
printables.map { Log.e("PREVIEW: ", it.getPrintables()) }
printables.map {
val pattern = Pattern.compile(PrinterTextParser.getRegexAlignTags())
val matcher = pattern.matcher(it.getPrintables()).pattern()
val split = it.getPrintables().trim().split(matcher).toMutableList()

if (split.size > 1) {
split.removeAt(0)
Log.e("PREVIEW: ", addLeftRightSpace(split))
} else {
Log.e("PREVIEW: ", "\n")
}
}
}

/**
* Print Preview Log
*/
fun printGenerateImage() {
printables.map {
val pattern = Pattern.compile(PrinterTextParser.getRegexAlignTags())
val matcher = pattern.matcher(it.getPrintables()).pattern()
val split = it.getPrintables().trim().split(matcher).toMutableList()

if (split.size > 1) {
split.removeAt(0)
Log.e("PREVIEW: ", addLeftRightSpace(split))
} else {
Log.e("PREVIEW: ", "\n")
}
}
}

/**
* Add spaces to left and right.
*
* @param string MutableList<String>
* @return String
*/
private fun addLeftRightSpace(string: MutableList<String>): String {
return when (string.size) {
2 -> string[0].plus(" ".repeat(32 - (string[0].length + string[1].length))).plus(string[1])
else -> string[0]
}
}

/**
Expand Down
35 changes: 35 additions & 0 deletions printer/src/main/java/com/homeflow/printer/core/Converter.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.homeflow.printer.core

/**
* Base class to convert a string into a byte array
*/
abstract class Converter {
/**
* To byte array
*
* @param input String
* @return ByteArray
*/
open fun toByteArray(input: String): ByteArray {
val text = convert(input)
return try {
var i = 0
val bytes = ByteArray(text.length)
for (c in text.toCharArray()) {
bytes[i++] = convert(c)
}
bytes
} catch (e: Exception) {
e.printStackTrace()
byteArrayOf()
}
}

protected open fun convert(input: String): String {
return input
}

protected open fun convert(input: Char): Byte {
return input.toByte()
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.homeflow.printer.core

import com.dantsu.escposprinter.EscPosPrinterCommands.TEXT_ALIGN_LEFT

/**
* Printer Text.
*
Expand Down

0 comments on commit aba146d

Please sign in to comment.