Models
Modelos de Datos de Impresión
Estos son los modelos de datos utilizados por los endpoints de impresión y plantillas de tickets.
PrintRequest
Utilizado para enviar una solicitud de impresión.
@Serializable
data class PrintRequest(
val templateName: String, // Nombre de la plantilla a utilizar
val ticketData: TicketData, // Datos del ticket a imprimir
val type: TicketType // Tipo de ticket (KITCHEN o CUSTOMER)
)
SetPrinterRequest
Utilizado para asignar una impresora a un tipo de ticket.
@Serializable
data class SetPrinterRequest(
val type: TicketType, // KITCHEN o CUSTOMER
val printerName: String // Nombre de la impresora
)
TicketTemplate
Define la estructura y contenido de una plantilla de ticket.
@Serializable
data class TicketTemplate(
val name: String, // Nombre único de la plantilla
val elements: List<TicketElement> // Lista de elementos que componen el ticket
)
TicketElement
Representa un elemento individual dentro de una plantilla de ticket.
@Serializable
data class TicketElement(
val type: ElementType, // Tipo de elemento (HEADER, TEXT, etc.)
val value: String, // Contenido o placeholder (ej. {{ticket.total}})
val style: ElementStyle? = null // Estilo opcional del elemento
)
ElementType (Enum)
Define los tipos de elementos que se pueden utilizar en una plantilla.
HEADERTEXTLINE_BREAKSEPARATORTABLE_HEADERTABLE_ROWFOOTER
ElementStyle
Define el estilo de un TicketElement.
@Serializable
data class ElementStyle(
val bold: Boolean = false,
val justification: Justification = Justification.LEFT,
val fontSize: FontSize = FontSize.NORMAL
)
Justification (Enum)
Define la justificación del texto.
LEFTCENTERRIGHT
FontSize (Enum)
Define el tamaño de la fuente.
NORMALLARGEEXTRA_LARGE
TicketData
Contiene los datos específicos de un ticket para ser impreso.
@Serializable
data class TicketData(
val ticketId: String,
val tableName: String,
val roomName: String,
val date: String,
val items: List<TicketDataItem>,
val total: Double
)
TicketDataItem
Representa un ítem individual en la lista de TicketData.
@Serializable
data class TicketDataItem(
val quantity: Int,
val name: String,
val price: Double,
val comments: List<String> = emptyList()
)