De Touch&Sale

Saltar a: navegación, buscar
(Funciones definidas para cada tipo de dispositivo (Plantillas v3))
Línea 240: Línea 240:
 
::vuelve a las condiciones iniciales al finalizar la línea.
 
::vuelve a las condiciones iniciales al finalizar la línea.
  
 +
 +
*Ejemplos para obtener el número de autorizacción de cada receta y coseguro.
 +
<pre>
 +
<%@format:rightpad('AUTORIZACIO1: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=1]/valor/numeroAutorizacion)%>
 +
<%@format:rightpad('AUTORIZACIO2: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=2]/valor/numeroAutorizacion)%>
 +
<%@format:rightpad('AUTORIZACIO3: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=3]/valor/numeroAutorizacion)%>
 +
<%@format:rightpad('AUTORIZACIO4: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=4]/valor/numeroAutorizacion)%>
 +
</pre>
  
 
== Funciones de jxpath==
 
== Funciones de jxpath==

Revisión del 11:17 21 sep 2018

Funciones propias

  • / = imprime línea en blanco.


  • <%= --------- %>
OperacionValor: Devuelve el objeto OperacionValor a imprimir (tabla operacion_valor).


  • <%& --------- %> #
operacionesValor: Itera sobre la colección OperacionValor.operacion.operacionesValor devolviendo objetos OperacionValor (tabla operacion_valor).


  • <%@ --------- %> #
Operacion: Devuelve el objeto OperacionValor.operacion, clase Operacion (tabla operacion).


  • <%# --------- %> #
itemsValor: Itera sobre la colección OperacionValor.valor.itemsValor devolviendo objetos ItemValor/ItemFactura/ItemConvenio/etc (tabla item_valor).


  • <%$ --------- %> #
valoresConcepto: Itera sobre la colección OperacionValor.valor.valoresConcepto devolviendo objetos ValorConcepto (tabla valor_conceptos).


  • <%+ --------- %> #

Itera sobre la colección de Prototipos de los valores o de los items.


  • <%! ** Modelo 2 ** %> !
comentarios: Los datos incluídos sirven para orientar al usuario de la plantilla, pero no salen impresos.


  • format: lpad / rpad / cpad (texto a imprimir, longitud a rellenar, [caracter de relleno])
rellena a izquierda / derecha / centra texto.
-si la longitud a rellenar es menor que la longitud del texto a imprimir, entonces corta el texto.
-si no se especifica ningún caracter de relleno, entonces completa con espacios.


  • format: alltrim (texto a imprimir)
-devuelve el texto indicado, borrando los espacios en blanco a izquierda y a derecha.


  • format: longDate (fecha)
-devuelve la fecha en el formato longDate definido en application.


  • format: shortDate (fecha)
-devuelve la fecha en el formato shortDate definido en application.


  • format: longDateTime (fecha)
-devuelve la fecha y la hora en el formato dd/mm/yyyy hh:mm:ss, definido en application.


  • format: string (objeto)
-convierte cualquier tipo de dato en string.


  • format: integer (número)
-devuelve la parte entera del número ingresado, convertido en string.


  • format: len (objeto)
-devuelve la longitud del dato ingresado, convertido en string.


  • format: ascii (número)
-devuelve el código ASCii del número ingresado, convertido en string.


  • format: stringNoVacio (número)
-devuelve el número ingresado, convertido en string.
-si el valor es nulo, devuelve el texto 0,00.


  • format: stringNoVacioDto (número)
-devuelve el número ingresado, convertido en string.
-si el valor es nulo, devuelve el texto -0,00.


  • format: leftpad / rightpad / centerpad (dato a imprimir)
-rellena por izquierda / derecha / centra el texto del dato ingresado,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: leftpad / rightpad / centerpad (título, dato)
-si el valor de dato es nulo,
-no imprime texto alguno.
-si el valor de dato no es nulo,
-concatena los valores título y dato,
-rellena por izquierda / derecha / centra el texto completo,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: leftpad / rightpad (título, dato, número)
-si el valor de dato es nulo,
-no imprime texto alguno.
-si el valor de dato no es nulo,
-concatena los valores título y dato,
-rellena por izquierda / derecha el texto completo,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión menos el valor indicado en el parámetro número.


  • format: concatenar (número de campo, string de datos serializados)
-concatena los valores del string de datos separados por |,
ajusta la longitud del campo indicado por el primer parámetro,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-por ejemplo:
format:concatenar(2, " 1|ADALAT 30| 44,00| 44,00")


  • format: enlazar (string de 2 datos serializados)
-concatena los 2 valores del string de datos separados por |,
ajusta la longitud del 1er. campo hasta completar la cantidad de caracteres
indicada como Ancho Máximo en el motor de impresión.
-por ejemplo:
format:enlazar("A c/Afil. d/aplicar Cob. 1a. :| 40,00")


  • format: separador ()
-imprime una línea separadora formada por caracteres --------------
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: separador (dato)
-imprime una línea separadora condicional,
-formada por caracteres ------------
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-la condición viene dada por el valor contenido en dato,
si es nulo, el separador no se imprime.
-por ejemplo:
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre)%>
si existen bonos, imprime el separador --------------------------


  • format: separador (dato, título)
-imprime una línea separadora condicional,
-formada por caracteres ------------ con el valor indicado en título, centrado
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-la condición viene dada por el valor contenido en dato,
si es nulo, el separador no se imprime.
-por ejemplo:
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre,'- BONO -')%>
si existen bonos, imprime el separador ---------- BONO ----------


  • format: nonull (objeto)
-si el valor del dato recibido no es nulo, imprime su valor string
-si el valor del dato recibido es nulo, imprime un string vacío: ""


  • format: cgoAfilCob (total, montoCobertura)
-si existe la Cobertura (montoCobertura > 0),
devuelve el importe que resta para el Afiliado: total - montoCobertura
-si no existe la Cobertura (montoCobertura = 0),
devuelve cero, con lo que no se imprime ningún dato.


  • format: irLinea (número)
-avanza la posición a imprimir hasta la línea indicada por el parámetro.


Nuevas funciones definidas (Plantillas v4)

  • format: stringtransf (objeto1,objeto2,objeto3)
-Devuelve el objeto1, donde los objeto2, son reemplazados por objeto3.
Método replace() de StringUtils.


  • format: obtcodigo (objeto)
-Se formatea el objeto (codificación del comprobante 0001-0001234)
para imprimir como Código de Barras.


  • format: obtcodigosinguion (objeto)
-Se formatea el objeto (codificación del comprobante 0001-0001234)
para imprimir como Código de Barras, sin el guión separador.


NOTA: SI LA AUSENCIA DEL DATO A IMPRIMIR TIENE QUE ELIMINAR EL RENGLÓN ACTUAL SE TIENE QUE ENCERRAR ENTRE MAYOR Y MENOR LA FUNCIÓN. EJ: <<%=....%>>

Funciones definidas para cada tipo de dispositivo (Plantillas v3)

Estos comandos actúan sólo si el dispositivo lo permite.

  • inicializar ()
-envía un comando de inicialización a la impresora que la configura a sus valores iniciales.


  • normalizar ()
-envía un comando de normalización de la letra, a sus valores iniciales.


  • negrita (objeto)
-imprime en negrita (o enfatizado) el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • cursiva (objeto)
-imprime en cursiva (o en itálica) el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • subrayado (objeto)
-imprime con letra subrayada el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • condensado (objeto)
-imprime con letra condensada el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • textodobleancho (objeto)
-imprime con letra expandida a lo ancho el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • textodoblealto (objeto)
-imprime con letra expandida en alto el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • cortepapel ()
-envía un comando de corte parcial de la cinta de papel.


  • cortetotalpapel ()
-envía un comando de corte total de la cinta de papel.


  • codigobarras (objeto)
-envía los comandos de configuración previos para imprimir un código de barras.
imprime el código de barras del valor del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • Ejemplos para obtener el número de autorizacción de cada receta y coseguro.
<%@format:rightpad('AUTORIZACIO1: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=1]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO2: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=2]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO3: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=3]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO4: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=4]/valor/numeroAutorizacion)%>

Funciones de jxpath

  • string concat (string, string, string, ...)
-devuelve la concatenación de sus argumentos.


  • number sum (node-set)
-devuelve la suma, para cada nodo del set de nodos del argumento, del resultado de convertir los valores string del nodo a números.


Métodos

objeto atributo función tabla método nuevo método
Farmacia Razón Social <%= operacion_valor valor/nodoCreacion/razonSocial obtRazonSocialFarmacia()
Farmacia Razón Social 2 <%= operacion_valor valor/nodoCreacion/razonSocialLinea2 obtRazonSocialFarmaciaLinea2()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[1] obtDireccion1Farmacia()
Farmacia Tel. <%= operacion_valor valor/nodoCreacion/telefonosConcatenados obtTelefonoFarmacia()
Farmacia C.U.I.T. <%= operacion_valor valor/nodoCreacion/cuit obtCuitFarmacia()
Farmacia I.V.A. <%= operacion_valor valor/nodoCreacion/objSituacionIVA/nombre obtSituacionIvaFarmacia()
Farmacia I.Br. <%= operacion_valor valor/nodoCreacion/ingresosBrutos obtIngresosBrutosFarmacia()
Cliente Nombre <%= operacion_valor valor/entidad/nombre obtNombreCliente()
Cliente Apellido <%= operacion_valor valor/entidad/apellido obtApellidoCliente()
Cliente Dirección <%= operacion_valor valor/entidad/direcciones[1] obtDireccion1Cliente()
Cliente Teléfono <%= operacion_valor valor/entidad/telefonosConcatenados obtTelefonoCliente()
Afiliado Nombre <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado obtNombreAfiliado()
Afiliado Nro <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado obtNumeroAfiliado()
Valor Fecha <%= operacion_valor valor/fechaCreacion
Valor Número <%= operacion_valor valor/codificacion obtNumeroComprobante()
Producto Nombre <%# item_valor producto/nombreCorto
Producto Descuento de ítem <%# item_valor descuento * descuento *
Producto Descuento Automático/Forzado <%# item_valor descuentoAfiliado * descuentoAfiliado *
Producto Descuento General (manual) <%# item_valor descuentoGeneral * descuentoGeneral *
Receta O. Social <%# item_valor sum(itemsReceta/montoTotalCubierto)
Valor TOTAL <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto obtPrecioFinal()
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
Valor CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal obtImporteFormaPagoCtaCte()
Valor CUOTA CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal obtImporteFormaPagoCuotaCteCte()
Valor TARJETA <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal obtImporteFormaPagoTarjeta()
Valor CHEQUE TERCEROS <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal obtImporteFormaPagoChequeTerceros()
Valor EFECTIVO <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal obtImporteFormaPagoEfectivo()
Valor Exento <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto obtTotalExento()
Valor Gravado <%= operacion_valor valor/valoresConcepto[subtipoValorCpto/concepto/id=541]/monto obtTotalGravado()
Valor Perc.II.BB. <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto obtTotalPercepcionesIIBB()
Vendedor Nombre <%= operacion_valor valor/objUsuarioCreacion/alias obtVendedor()
Puesto Nombre <%= operacion_valor operacion/puestoVenta/nombre obtPuestoVenta()

Nuevos Métodos

objeto atributo función tabla método nuevo método
Valor Fecha de Emisión <%= operacion_valor valor/fechaEmision obtFechaEmision()
Cliente (eventual) Domicilio <%= operacion_valor valor/domicilioCliente obtDomicilioClienteEven()
Cliente (eventual) Documento <%= operacion_valor valor/documentoCliente obtDocumentoClienteEven()
Cliente (eventual) Nombre <%= operacion_valor valor/nombreCliente obtNombreClienteEven()
Cliente (secundario) Nombre <%= operacion_valor valor/entidadSecundaria/nombre obtNombreClienteSecundario()
Cliente Código <%= operacion_valor valor/entidad/codigo obtCodigoCliente()
Cliente Envío Dirección <%= operacion_valor valor/direccionSeleccionada obtDireccionEnvio()
Cliente Envío Teléfono <%= operacion_valor valor/telefonoSeleccionado obtTelefonoEnvio()
Cliente Envío Observaciones <%= operacion_valor valor/observaciones obtObservacionEnvio()
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre obtNombreObraSocial()
Receta Nombre OSP <%= operacion_valor valor[tipoValor/id=2]/entidad/obraSocial/nombreCorto obtNombreCobertura()
Receta Nombre OSP <%= operacion_valor valor[tipoValor/id=2]/entidad/nombre obtNombreLargoCobertura()
Receta Número <%= operacion_valor valor[tipoValor/id=2]/codificacion obtNumeroReceta()
Receta Fecha <%= operacion_valor valor[tipoValor/id=2]/fechaEmision obtFechaReceta()
Receta Nombre 1ra. OSP <%# item_valor itemConvenio1raCobertura/convenio/entidad/nombre obtNombre1raCobertura()
Receta Importe 1ra. OSP <%# item_valor itemConvenio1raCobertura/montoTotalCubierto obtTotalCubierto1raCobertura()
Receta Porcentaje 1ra. OSP <%# item_valor itemConvenio1raCobertura/porcentajeCobertura obtPorcentaje1raCobertura()
Receta Nombre 2da. OSP <%# item_valor itemConvenio2daCobertura/convenio/entidad/nombre obtNombre2daCobertura()
Receta Importe 2da. OSP <%# item_valor itemConvenio2daCobertura/montoTotalCubierto obtTotalCubierto2daCobertura()
Receta Porcentaje 2da. OSP <%# item_valor itemConvenio2daCobertura/porcentajeCobertura obtPorcentaje2daCobertura()
Receta Nro.Autorización <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAutorizacion obtAutorizacionObraSocial()
Valor Dto.Comprobante <%@ operacion comprobante/descuentoGeneral obtDtoGeneral()
Valor Dto.Bono <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/descuentoGeneral obtDtoGeneralBono()
Valor Dto.Receta <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/descuentoGeneral obtDtoGeneralReceta()
Valor Dto.Billete <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/descuentoGeneral obtDtoGeneralEfectivo()
Valor Dto.CH/Propio <%@ operacion operacionesValor[valor/tipoValor/id=4]/valor/descuentoGeneral obtDtoGeneralChequePropio()
Valor Dto.CH/Tercero <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/descuentoGeneral obtDtoGeneralChequeTercero()
Valor Dto.Tarjeta <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/descuentoGeneral obtDtoGeneralTarjeta()
Valor Dto.Cuota Cta.Cte. <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/descuentoGeneral obtDtoGeneralCuotaCtaCte()
Valor Dto.Cta.Cte. <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/descuentoGeneral obtDtoGeneralCtaCte()
Valor Descuento Convenio <%@ operacion operacionesValor[valor/tipoValor/id=211]/valor/descuentoGeneral obtDtoGeneralConvenio()
Valor Vendedor <%= operacion_valor valor/comprobante/objusuariocreacion/alias obtValorCteVendedor()
Valor Numero <%= operacion_valor valor/comprobante/codificacion obtValorCteNumero()
Valor Fecha Emisión <%= operacion_valor valor/comprobante/fechaEmision obtValorCteFechaEmision()
Valor Fecha Creación <%= operacion_valor valor/fechaCreacion obtFechaCreacion()
Valor Importe <%= operacion_valor valor/montoPrincipal obtValorMontoPrincipal()
Valor Letra Factura <%= operacion_valor valor/letraFactura obtLetraFactura()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[0] obtDireccion0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[0]/numero obtTelefono0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[1]/numero obtTelefono1Farmacia()
Cliente Situación IVA <%= operacion_valor valor/entidad/objSituacionIva/nombre obtSituacionIvaCliente()
Cliente Cuit <%= operacion_valor valor/entidad/cuit obtCuitCliente()
Producto Nombre Corto <%# item_valor producto/nombreCorto obtNombreProducto()
Producto Código Barra <%# item_valor producto/codigoBarra obtCodigoBarraProducto()
Receta Precio Unidad <%# item_valor producto/codigoBarra obtRecetaPrecioUnitario()
Receta Porcentaje Cobertura <%# item_valor itemsReceta/porcentajeCobertura obtRecetaPorcentajeCobertura()
Receta Importe Cobertura <%# item_valor itemsReceta/descuento obtRecetaImporteDescuento()
Valor Importe <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto obtPrecioFinal()
Receta Número Cobertura <%= operacion_valor .[valor/tipoValor/id=2]/numeroCobertura obtNumeroCobertura()
Receta Saldo Afiliado <%= operacion_valor .[valor/tipoValor/id=2]/saldoAfiliado obtSaldoAfiliado()
Convenio Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=211]/entidad/nombre obtNombreFormaPagoConvenio()
Convenio Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=211]/montoPrincipal) obtImporteFormaPagoConvenio()
Cuota Cta Cte Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=21]/entidad/nombre obtNombreFormaPagoCuotaCteCte()
Cuota Cta Cte Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=21]/montoPrincipal) obtImporteFormaPagoCuotaCteCte()
CH/Tercero Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=5]/entidad/nombre obtNombreFormaPagoChequeTerceros()
CH/Tercero Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=5]/montoPrincipal) obtImporteFormaPagoChequeTerceros()
Tarjeta Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=9]/entidadSaldable/nombre obtNombreFormaPagoTarjeta()
Tarjeta Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=9]/montoPrincipal) obtImporteFormaPagoTarjeta()
Bono Nombre <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre obtNombreBono()
Bono Puntaje <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=500 and subTipoValorCpto/visiblePos=1]/monto obtPuntajeBono()
Bono Acumulado <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto obtAcumuladoBono()
Valor Vendedor <%= operacion_valor valor/comprobante/objusuariocreacion/alias obtValorCteVendedor()
Valor Numero <%= operacion_valor valor/comprobante/codificacion obtValorCteNumero()
Valor Fecha Emisión <%= operacion_valor valor/comprobante/fechaEmision obtValorCteFechaEmision()
Valor Fecha Creación <%= operacion_valor valor/fechaCreacion obtFechaCreacion()
Valor Importe <%= operacion_valor valor/montoPrincipal obtValorMontoPrincipal()
Valor Letra Factura <%= operacion_valor valor/letraFactura obtLetraFactura()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[0] obtDireccion0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[0]/numero obtTelefono0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[1]/numero obtTelefono1Farmacia()
Cliente Situación IVA <%= operacion_valor valor/entidad/objSituacionIva/nombre obtSituacionIvaCliente()
Cliente Cuit <%= operacion_valor valor/entidad/cuit obtCuitCliente()
Producto Nombre Corto <%# item_valor producto/nombreCorto obtNombreProducto()
Producto Código Barra <%# item_valor producto/codigoBarra obtCodigoBarraProducto()
Receta Precio Unidad <%# item_valor producto/codigoBarra obtRecetaPrecioUnitario()
Receta Porcentaje Cobertura <%# item_valor itemsReceta/porcentajeCobertura obtRecetaPorcentajeCobertura()

Caracteres

Para la obtención de la sintaxis de comandos se debe recurrir a los manuales de cada modelo de impresora fiscal.

A modo de ejemplo se transcriben algunos de los caracteres más usados:

modelo impresora HEXA ASCII descripción
Bematech

Epson

\u001B ESC Por definición del protocolo, todo comando empieza con 1B
Bematech

Epson

\u001B@ ESC @ Inicializa la impresora
Bematech \u001Btn ESC t n Selecciona la página de código n:

n = 2 (PÁGINA DE CÓDIGO 850 – Falla)

n = 3 (PÁGINA DE CÓDIGO 437)

n = 4 (PÁGINA DE CÓDIGO 860)

n = 5 (PÁGINA DE CÓDIGO 858)

Bematech \u001Bln ESC l n Programa el margen izquierdo para la columna n
Epson \u001Bl ESC l Posiciona margen izquierdo
Bematech

Epson

\u000E SO Selecciona expandido por una línea
Bematech \u0014 DC4 Cancela modo expandido de una línea
Bematech

Epson

\u000F SI Selecciona modo condensado
Bematech

Epson

\u0012 DC2 Cancela modo condensado
Bematech \u001BE ESC SO Selecciona expandido por una línea
Bematech \u001BF ESC SI Selecciona modo condensado
Epson \u001BF ESC F Cancela modo enfatizado
Bematech

Epson

\u001Bm ESC m Realiza un corte parcial de papel
Epson \u001BM ESC M Selecciona el ancho elite
Epson \u001B0 ESC 0 Selecciona 1/8 de pulgada de línea de espacio
Epson \u001B- ESC - Selecciona/cancela modo subrayado
Epson \u001BW ESC W Selecciona/cancela el modo expandido


Ejemplo Modelo

Hagamos un seguimiento, línea a línea, de la plantilla Factura Bematech MP4000 TH (45) cargada en zWeb:


1) \u001B@\u001Bt2\u001Bl\u0001

ESC @ = inicializa la impresora;
ESC t 2 = selecciona la página de código 850;
ESC l 1 = programa el margen iazquierdo para la columna 1.


2) \u000E<%=format:rpad((valor/nodoCreacion/razonSocial),19)%>

SO = selecciona expandido por una línea;
Busca en la tabla operacion_valor la Factura;
Imprime 19 caracteres de la Razón Social del Nodo Creación de la Factura,
si tiene más de 19 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


3) \u0014\u000F<%=format:rpad((valor/nodoCreacion/razonSocialLinea2),42)%>

DC4 = cancela modo expandido de una línea;

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres de la Razón Social 2a línea del Nodo Creación de la Factura,
si tiene más de 42 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


4) \u000F<%=format:rpad((valor/nodoCreacion/direcciones[1]),42)%>

SI = selecciona modo condesado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres de la 1er Dirección del Nodo Creación de la Factura,
si tiene más de 42 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


5) \u000FTel.: <%=format:rpad((valor/nodoCreacion/telefonosConcatenados),42)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres con los Teléfonos del Nodo Creación de la Factura,
si ocupan más de 42 caracteres: los corta,
si ocupan menos: completa a derecha con espacios.


6) \u000FC.U.I.T. : <%=format:rpad((valor/nodoCreacion/cuit),30)%>

SI = selecciona modo condensado;
Imprime el texto 'C.U.I.T. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del CUIT del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


7) \u000FI.V.A. : <%=format:rpad((valor/nodoCreacion/objSituacionIva/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'I.V.A. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del nombre de la Situación de IVA del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


8) \u000FI.Br. : <%=format:rpad((valor/nodoCreacion/ingresosBrutos),30)%>

SI = selecciona modo condensado;
Imprime el texto 'I.Br. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del nombre del nro. de Ingresos Brutos del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


9) /

Imprime una línea en blanco.


10) \u000FCliente : <%=format:rpad((valor/entidad/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Cliente : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Nombre del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


11) \u000F<%=format:rpad((valor/entidad/apellido),30)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Apellido del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


12) \u000FDireccion: <%=format:rpad((valor/entidad/direcciones[1]),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Direccion: ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres de la 1er Dirección del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


13) \u000FTelefono.: <%=format:rpad((valor/entidad/telefonosConcatenados)</span<,30)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres con los Teléfonos del Cliente asociado la Factura,
si ocupan más de 30 caracteres: los corta,
si ocupan menos: completa a derecha con espacios.


14) \u000F<%@concat('Afiliado: <',format:rpad((operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado),20),'>

\u000FNro. <',format:lpad((operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado),12),'>')%>

SI = selecciona modo condensado;
Busca en la tabla operacion la Receta;
Imprime la concatenación de los textos:
- 'Afiliado: '
- 20 caracteres del Nombre del Afiliado de la Receta,
si tiene más de 20 caracteres: los corta,
si tiene menos: completa a derecha con espacios.
- 'Nro. '
- 12 caracteres del Número del Afiliado de la Receta,
si tiene más de 12 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


15) \u000FFecha : <%=format:rpad(format:longDate((valor/fechaCreacion)),20)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Convierte la Fecha Creación de la Factura a longDate;
Imprime 20 caracteres de la fecha obtenida,
si tiene más de 20 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


16) \u0012\u001BE FACTURA <%=format:rpad((valor/letraFactura),1)%> - <%=format:rpad((valor/codificacion),13)%>\u001BF

DC2 = cancela modo condensado;
ESC SO = selecciona expandido por una línea;
Imprime el texto ' FACTURA ';
Busca en la tabla operacion_valor la Factura;
Imprime la Letra de la Factura (1 caracter);
Imprime el texto ' - '
Busca en la tabla operacion_valor la Factura;
Imprime 13 caracteres del Número de la Factura,
si tiene más de 13 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


17) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


18) \u000F Cant Descripcion P Unit. P.Total

SI = selecciona modo condensado;
Imprime el texto 'Cant Descripcion P Unit. P.Total'.


19) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


20) \u000F<%#concat(format:lpad(format:string((cantidad)),6),' ',format:rpad((producto/nombreCorto),23),' ',format:lpad(format:string((precioUnitario)),12),' ',format:lpad(format:string((total)),12),'

\u000F Descuento <',format:lpad(format:string((descuentoGeneral)),12),'>

\u000F O. Social <',format:lpad(format:string(sum(itemsReceta/precioUnitario)),12),'>')%>

SI = selecciona modo condensado;
Comienza a iterar sobre la tabla item_valor y, para cada Ítem de la Factura, imprime la concatenación de los textos:
- 6 caracteres (completados a izquierda con espacios) de la Cantidad convertida a texto.
- espacio en blanco
- 23 caracteres (completados a derecha con espacios) del Nombre Corto del Producto.
- espacio en blanco
- 12 caracteres (completados a izquierda con espacios) del Precio Unitario convertido a texto.
- espacio en blanco
- 12 caracteres (completados a izquierda con espacios) del Total convertido a texto.
- 'Descuento '
- 12 caracteres (completados a izquierda con espacios) del Descuento General convertido a texto.
- 'O. Social '
- 12 caraceteres (completados a izquierda con espacios) de la suma de los precios Unitarios de los Ítems de la Receta convertida a texto.


21) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


22) \u0012\u001BE TOTAL <%=format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto)),12)%>\u001BF

DC2 = cancela modo condensado;
ESC SO = selecciona expandido por una línea;
Imprime el texto 'TOTAL ';
Busca en la tabla operacion_valor la Factura;
Imprime 12 caracteres del Monto convertido a texto del subTipoValorConcepto tipo Total Neto de la Factura,
si tiene más de 12 caracteres: los corta,
si tiene menos: completa a izquierda con espacios;
ESC SI = selecciona modo condensado.


23) \u000FOBRAS SOCIALES <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'OBRAS SOCIALES ';
Busca en la tabla operacion la Receta;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Receta,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


24) \u000FCUENTA CORRIENTE <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CUENTA CORRIENTE ';
Busca en la tabla operacion la Cuenta Corriente;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Cuenta Corriente,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


25) \u000FCUOTA CUENTA CORRIENTE <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CUOTA CUENTA CORRIENTE ';
Busca en la tabla operacion la Cuota de Cuenta Corriente;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Cuota de Cuenta Corriente,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


26) \u000F<%@concat(format:rpad((operacionesValor[valor/tipoValor/id=9]/valor/entidadSaldable/nombre),33),format:lpad(format:string((operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal)),10))%>

SI = selecciona modo condensado;
Busca en la tabla operacion la Cuota de Tarjeta;
Imprime la concatenación de los textos:
- 33 caracteres (completados a derecha con espacios) del Nombre de la Entidad Saldable de la Cuota de Tarjeta.
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto Principal de la Cuota de Tarjeta.


27) \u000FCHEQUE TERCEROS <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CHEQUE TERCEROS ';
Busca en la tabla operacion el Cheque de Terceros;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal del Cheque de Terceros,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


28) \u000FEFECTIVO <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'EFECTIVO ';

Busca en la tabla operacion el Billete;

Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal del Billete,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


29) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


30) \u000FExento : <%=concat(format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto)),10),' Gravado: ',format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=541]/monto)),10))%>

SI = selecciona modo condensado;
Imprime el texto 'Exento : ';
Busca en la tabla operacion_valor la Factura;
Imprime la concatenación de los textos:
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto Visible en T&S de tipo Total Bruto No Gravado.
- ' Gravado: '
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto de tipo Total Bruto Gravado POS.


31) \u000FVendedor : <%=format:rpad((valor/objUsuarioCreacion/alias),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Vendedor : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Alias del Usuario Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


32) \u000FPuesto : <%=format:rpad((operacion/puestoVenta/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Puesto : ';
Busca en la tabla operacion_valor la operación de Venta;
Imprime 30 caracteres del Nombre del Puesto de Venta,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


33) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


34) \u000F(comprobante sin valor fiscal)

DC2 = cancela el modo condensado;
Imprime el texto '(comprobante sin valor fiscal)'.


35) \u001Bw

ESC 119 = corte total.


Ejemplos Prototipos

XPaths para DATOS ADICIONALES:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato), ' : ', format:string(prototipoDetalle/nombre), ' : ', format:string(prototipoDetalle/prototipo/nombre), ' : ', format:string(prototipoDatoAdicional/prototipo/nombre), ' : ', format:string(prototipoDatoAdicional/numeroLinea))%>%>


PseudoFunciones para DATOS ADICIONALES:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', format:string(obtDatoCodificado()), ' : ', format:string(obtNombreDePrototipoDetalle()), ' : ', format:string(obtNombrePrototipoDePrototipoDetalle()), ' : ', format:string(obtNombrePrototipoDePrototipoDatoAdicional()), ' : ', format:string(obtNumeroLineaDePrototipoDatoAdicional()))%>%>


DATOS ADICIONALES para Valor de la OV a imprimir:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato))%>%>


DATOS ADICIONALES para Valor de la OV a imprimir:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', format:string(obtDatoCodificado()))%>%>


DATOS ADICIONALES para Valor de la OV en la que estoy parado:

<%&format:rpad(obtNumeroComprobante(),13)<%+concat(' - ', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato))%>%>

Funciones propias[editar]

  • / = imprime línea en blanco.


  • <%= --------- %>
OperacionValor: Devuelve el objeto OperacionValor a imprimir (tabla operacion_valor).


  • <%& --------- %> #
operacionesValor: Itera sobre la colección OperacionValor.operacion.operacionesValor devolviendo objetos OperacionValor (tabla operacion_valor).


  • <%@ --------- %> #
Operacion: Devuelve el objeto OperacionValor.operacion, clase Operacion (tabla operacion).


  • <%# --------- %> #
itemsValor: Itera sobre la colección OperacionValor.valor.itemsValor devolviendo objetos ItemValor/ItemFactura/ItemConvenio/etc (tabla item_valor).


  • <%$ --------- %> #
valoresConcepto: Itera sobre la colección OperacionValor.valor.valoresConcepto devolviendo objetos ValorConcepto (tabla valor_conceptos).


  • <%+ --------- %> #

Itera sobre la colección de Prototipos de los valores o de los items.


  • <%! ** Modelo 2 ** %> !
comentarios: Los datos incluídos sirven para orientar al usuario de la plantilla, pero no salen impresos.


  • format: lpad / rpad / cpad (texto a imprimir, longitud a rellenar, [caracter de relleno])
rellena a izquierda / derecha / centra texto.
-si la longitud a rellenar es menor que la longitud del texto a imprimir, entonces corta el texto.
-si no se especifica ningún caracter de relleno, entonces completa con espacios.


  • format: alltrim (texto a imprimir)
-devuelve el texto indicado, borrando los espacios en blanco a izquierda y a derecha.


  • format: longDate (fecha)
-devuelve la fecha en el formato longDate definido en application.


  • format: shortDate (fecha)
-devuelve la fecha en el formato shortDate definido en application.


  • format: longDateTime (fecha)
-devuelve la fecha y la hora en el formato dd/mm/yyyy hh:mm:ss, definido en application.


  • format: string (objeto)
-convierte cualquier tipo de dato en string.


  • format: integer (número)
-devuelve la parte entera del número ingresado, convertido en string.


  • format: len (objeto)
-devuelve la longitud del dato ingresado, convertido en string.


  • format: ascii (número)
-devuelve el código ASCii del número ingresado, convertido en string.


  • format: stringNoVacio (número)
-devuelve el número ingresado, convertido en string.
-si el valor es nulo, devuelve el texto 0,00.


  • format: stringNoVacioDto (número)
-devuelve el número ingresado, convertido en string.
-si el valor es nulo, devuelve el texto -0,00.


  • format: leftpad / rightpad / centerpad (dato a imprimir)
-rellena por izquierda / derecha / centra el texto del dato ingresado,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: leftpad / rightpad / centerpad (título, dato)
-si el valor de dato es nulo,
-no imprime texto alguno.
-si el valor de dato no es nulo,
-concatena los valores título y dato,
-rellena por izquierda / derecha / centra el texto completo,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: leftpad / rightpad (título, dato, número)
-si el valor de dato es nulo,
-no imprime texto alguno.
-si el valor de dato no es nulo,
-concatena los valores título y dato,
-rellena por izquierda / derecha el texto completo,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión menos el valor indicado en el parámetro número.


  • format: concatenar (número de campo, string de datos serializados)
-concatena los valores del string de datos separados por |,
ajusta la longitud del campo indicado por el primer parámetro,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-por ejemplo:
format:concatenar(2, " 1|ADALAT 30| 44,00| 44,00")


  • format: enlazar (string de 2 datos serializados)
-concatena los 2 valores del string de datos separados por |,
ajusta la longitud del 1er. campo hasta completar la cantidad de caracteres
indicada como Ancho Máximo en el motor de impresión.
-por ejemplo:
format:enlazar("A c/Afil. d/aplicar Cob. 1a. :| 40,00")


  • format: separador ()
-imprime una línea separadora formada por caracteres --------------
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: separador (dato)
-imprime una línea separadora condicional,
-formada por caracteres ------------
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-la condición viene dada por el valor contenido en dato,
si es nulo, el separador no se imprime.
-por ejemplo:
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre)%>
si existen bonos, imprime el separador --------------------------


  • format: separador (dato, título)
-imprime una línea separadora condicional,
-formada por caracteres ------------ con el valor indicado en título, centrado
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-la condición viene dada por el valor contenido en dato,
si es nulo, el separador no se imprime.
-por ejemplo:
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre,'- BONO -')%>
si existen bonos, imprime el separador ---------- BONO ----------


  • format: nonull (objeto)
-si el valor del dato recibido no es nulo, imprime su valor string
-si el valor del dato recibido es nulo, imprime un string vacío: ""


  • format: cgoAfilCob (total, montoCobertura)
-si existe la Cobertura (montoCobertura > 0),
devuelve el importe que resta para el Afiliado: total - montoCobertura
-si no existe la Cobertura (montoCobertura = 0),
devuelve cero, con lo que no se imprime ningún dato.


  • format: irLinea (número)
-avanza la posición a imprimir hasta la línea indicada por el parámetro.


Nuevas funciones definidas (Plantillas v4)[editar]

  • format: stringtransf (objeto1,objeto2,objeto3)
-Devuelve el objeto1, donde los objeto2, son reemplazados por objeto3.
Método replace() de StringUtils.


  • format: obtcodigo (objeto)
-Se formatea el objeto (codificación del comprobante 0001-0001234)
para imprimir como Código de Barras.


  • format: obtcodigosinguion (objeto)
-Se formatea el objeto (codificación del comprobante 0001-0001234)
para imprimir como Código de Barras, sin el guión separador.


NOTA: SI LA AUSENCIA DEL DATO A IMPRIMIR TIENE QUE ELIMINAR EL RENGLÓN ACTUAL SE TIENE QUE ENCERRAR ENTRE MAYOR Y MENOR LA FUNCIÓN. EJ: <<%=....%>>

Funciones definidas para cada tipo de dispositivo (Plantillas v3)[editar]

Estos comandos actúan sólo si el dispositivo lo permite.

  • inicializar ()
-envía un comando de inicialización a la impresora que la configura a sus valores iniciales.


  • normalizar ()
-envía un comando de normalización de la letra, a sus valores iniciales.


  • negrita (objeto)
-imprime en negrita (o enfatizado) el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • cursiva (objeto)
-imprime en cursiva (o en itálica) el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • subrayado (objeto)
-imprime con letra subrayada el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • condensado (objeto)
-imprime con letra condensada el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • textodobleancho (objeto)
-imprime con letra expandida a lo ancho el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • textodoblealto (objeto)
-imprime con letra expandida en alto el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • cortepapel ()
-envía un comando de corte parcial de la cinta de papel.


  • cortetotalpapel ()
-envía un comando de corte total de la cinta de papel.


  • codigobarras (objeto)
-envía los comandos de configuración previos para imprimir un código de barras.
imprime el código de barras del valor del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • Ejemplos para obtener el número de autorizacción de cada receta y coseguro.
<%@format:rightpad('AUTORIZACIO1: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=1]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO2: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=2]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO3: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=3]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO4: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=4]/valor/numeroAutorizacion)%>

Funciones de jxpath[editar]

  • string concat (string, string, string, ...)
-devuelve la concatenación de sus argumentos.


  • number sum (node-set)
-devuelve la suma, para cada nodo del set de nodos del argumento, del resultado de convertir los valores string del nodo a números.


Métodos[editar]

objeto atributo función tabla método nuevo método
Farmacia Razón Social <%= operacion_valor valor/nodoCreacion/razonSocial obtRazonSocialFarmacia()
Farmacia Razón Social 2 <%= operacion_valor valor/nodoCreacion/razonSocialLinea2 obtRazonSocialFarmaciaLinea2()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[1] obtDireccion1Farmacia()
Farmacia Tel. <%= operacion_valor valor/nodoCreacion/telefonosConcatenados obtTelefonoFarmacia()
Farmacia C.U.I.T. <%= operacion_valor valor/nodoCreacion/cuit obtCuitFarmacia()
Farmacia I.V.A. <%= operacion_valor valor/nodoCreacion/objSituacionIVA/nombre obtSituacionIvaFarmacia()
Farmacia I.Br. <%= operacion_valor valor/nodoCreacion/ingresosBrutos obtIngresosBrutosFarmacia()
Cliente Nombre <%= operacion_valor valor/entidad/nombre obtNombreCliente()
Cliente Apellido <%= operacion_valor valor/entidad/apellido obtApellidoCliente()
Cliente Dirección <%= operacion_valor valor/entidad/direcciones[1] obtDireccion1Cliente()
Cliente Teléfono <%= operacion_valor valor/entidad/telefonosConcatenados obtTelefonoCliente()
Afiliado Nombre <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado obtNombreAfiliado()
Afiliado Nro <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado obtNumeroAfiliado()
Valor Fecha <%= operacion_valor valor/fechaCreacion
Valor Número <%= operacion_valor valor/codificacion obtNumeroComprobante()
Producto Nombre <%# item_valor producto/nombreCorto
Producto Descuento de ítem <%# item_valor descuento * descuento *
Producto Descuento Automático/Forzado <%# item_valor descuentoAfiliado * descuentoAfiliado *
Producto Descuento General (manual) <%# item_valor descuentoGeneral * descuentoGeneral *
Receta O. Social <%# item_valor sum(itemsReceta/montoTotalCubierto)
Valor TOTAL <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto obtPrecioFinal()
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
Valor CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal obtImporteFormaPagoCtaCte()
Valor CUOTA CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal obtImporteFormaPagoCuotaCteCte()
Valor TARJETA <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal obtImporteFormaPagoTarjeta()
Valor CHEQUE TERCEROS <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal obtImporteFormaPagoChequeTerceros()
Valor EFECTIVO <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal obtImporteFormaPagoEfectivo()
Valor Exento <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto obtTotalExento()
Valor Gravado <%= operacion_valor valor/valoresConcepto[subtipoValorCpto/concepto/id=541]/monto obtTotalGravado()
Valor Perc.II.BB. <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto obtTotalPercepcionesIIBB()
Vendedor Nombre <%= operacion_valor valor/objUsuarioCreacion/alias obtVendedor()
Puesto Nombre <%= operacion_valor operacion/puestoVenta/nombre obtPuestoVenta()

Nuevos Métodos[editar]

objeto atributo función tabla método nuevo método
Valor Fecha de Emisión <%= operacion_valor valor/fechaEmision obtFechaEmision()
Cliente (eventual) Domicilio <%= operacion_valor valor/domicilioCliente obtDomicilioClienteEven()
Cliente (eventual) Documento <%= operacion_valor valor/documentoCliente obtDocumentoClienteEven()
Cliente (eventual) Nombre <%= operacion_valor valor/nombreCliente obtNombreClienteEven()
Cliente (secundario) Nombre <%= operacion_valor valor/entidadSecundaria/nombre obtNombreClienteSecundario()
Cliente Código <%= operacion_valor valor/entidad/codigo obtCodigoCliente()
Cliente Envío Dirección <%= operacion_valor valor/direccionSeleccionada obtDireccionEnvio()
Cliente Envío Teléfono <%= operacion_valor valor/telefonoSeleccionado obtTelefonoEnvio()
Cliente Envío Observaciones <%= operacion_valor valor/observaciones obtObservacionEnvio()
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre obtNombreObraSocial()
Receta Nombre OSP <%= operacion_valor valor[tipoValor/id=2]/entidad/obraSocial/nombreCorto obtNombreCobertura()
Receta Nombre OSP <%= operacion_valor valor[tipoValor/id=2]/entidad/nombre obtNombreLargoCobertura()
Receta Número <%= operacion_valor valor[tipoValor/id=2]/codificacion obtNumeroReceta()
Receta Fecha <%= operacion_valor valor[tipoValor/id=2]/fechaEmision obtFechaReceta()
Receta Nombre 1ra. OSP <%# item_valor itemConvenio1raCobertura/convenio/entidad/nombre obtNombre1raCobertura()
Receta Importe 1ra. OSP <%# item_valor itemConvenio1raCobertura/montoTotalCubierto obtTotalCubierto1raCobertura()
Receta Porcentaje 1ra. OSP <%# item_valor itemConvenio1raCobertura/porcentajeCobertura obtPorcentaje1raCobertura()
Receta Nombre 2da. OSP <%# item_valor itemConvenio2daCobertura/convenio/entidad/nombre obtNombre2daCobertura()
Receta Importe 2da. OSP <%# item_valor itemConvenio2daCobertura/montoTotalCubierto obtTotalCubierto2daCobertura()
Receta Porcentaje 2da. OSP <%# item_valor itemConvenio2daCobertura/porcentajeCobertura obtPorcentaje2daCobertura()
Receta Nro.Autorización <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAutorizacion obtAutorizacionObraSocial()
Valor Dto.Comprobante <%@ operacion comprobante/descuentoGeneral obtDtoGeneral()
Valor Dto.Bono <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/descuentoGeneral obtDtoGeneralBono()
Valor Dto.Receta <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/descuentoGeneral obtDtoGeneralReceta()
Valor Dto.Billete <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/descuentoGeneral obtDtoGeneralEfectivo()
Valor Dto.CH/Propio <%@ operacion operacionesValor[valor/tipoValor/id=4]/valor/descuentoGeneral obtDtoGeneralChequePropio()
Valor Dto.CH/Tercero <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/descuentoGeneral obtDtoGeneralChequeTercero()
Valor Dto.Tarjeta <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/descuentoGeneral obtDtoGeneralTarjeta()
Valor Dto.Cuota Cta.Cte. <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/descuentoGeneral obtDtoGeneralCuotaCtaCte()
Valor Dto.Cta.Cte. <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/descuentoGeneral obtDtoGeneralCtaCte()
Valor Descuento Convenio <%@ operacion operacionesValor[valor/tipoValor/id=211]/valor/descuentoGeneral obtDtoGeneralConvenio()
Valor Vendedor <%= operacion_valor valor/comprobante/objusuariocreacion/alias obtValorCteVendedor()
Valor Numero <%= operacion_valor valor/comprobante/codificacion obtValorCteNumero()
Valor Fecha Emisión <%= operacion_valor valor/comprobante/fechaEmision obtValorCteFechaEmision()
Valor Fecha Creación <%= operacion_valor valor/fechaCreacion obtFechaCreacion()
Valor Importe <%= operacion_valor valor/montoPrincipal obtValorMontoPrincipal()
Valor Letra Factura <%= operacion_valor valor/letraFactura obtLetraFactura()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[0] obtDireccion0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[0]/numero obtTelefono0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[1]/numero obtTelefono1Farmacia()
Cliente Situación IVA <%= operacion_valor valor/entidad/objSituacionIva/nombre obtSituacionIvaCliente()
Cliente Cuit <%= operacion_valor valor/entidad/cuit obtCuitCliente()
Producto Nombre Corto <%# item_valor producto/nombreCorto obtNombreProducto()
Producto Código Barra <%# item_valor producto/codigoBarra obtCodigoBarraProducto()
Receta Precio Unidad <%# item_valor producto/codigoBarra obtRecetaPrecioUnitario()
Receta Porcentaje Cobertura <%# item_valor itemsReceta/porcentajeCobertura obtRecetaPorcentajeCobertura()
Receta Importe Cobertura <%# item_valor itemsReceta/descuento obtRecetaImporteDescuento()
Valor Importe <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto obtPrecioFinal()
Receta Número Cobertura <%= operacion_valor .[valor/tipoValor/id=2]/numeroCobertura obtNumeroCobertura()
Receta Saldo Afiliado <%= operacion_valor .[valor/tipoValor/id=2]/saldoAfiliado obtSaldoAfiliado()
Convenio Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=211]/entidad/nombre obtNombreFormaPagoConvenio()
Convenio Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=211]/montoPrincipal) obtImporteFormaPagoConvenio()
Cuota Cta Cte Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=21]/entidad/nombre obtNombreFormaPagoCuotaCteCte()
Cuota Cta Cte Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=21]/montoPrincipal) obtImporteFormaPagoCuotaCteCte()
CH/Tercero Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=5]/entidad/nombre obtNombreFormaPagoChequeTerceros()
CH/Tercero Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=5]/montoPrincipal) obtImporteFormaPagoChequeTerceros()
Tarjeta Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=9]/entidadSaldable/nombre obtNombreFormaPagoTarjeta()
Tarjeta Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=9]/montoPrincipal) obtImporteFormaPagoTarjeta()
Bono Nombre <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre obtNombreBono()
Bono Puntaje <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=500 and subTipoValorCpto/visiblePos=1]/monto obtPuntajeBono()
Bono Acumulado <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto obtAcumuladoBono()
Valor Vendedor <%= operacion_valor valor/comprobante/objusuariocreacion/alias obtValorCteVendedor()
Valor Numero <%= operacion_valor valor/comprobante/codificacion obtValorCteNumero()
Valor Fecha Emisión <%= operacion_valor valor/comprobante/fechaEmision obtValorCteFechaEmision()
Valor Fecha Creación <%= operacion_valor valor/fechaCreacion obtFechaCreacion()
Valor Importe <%= operacion_valor valor/montoPrincipal obtValorMontoPrincipal()
Valor Letra Factura <%= operacion_valor valor/letraFactura obtLetraFactura()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[0] obtDireccion0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[0]/numero obtTelefono0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[1]/numero obtTelefono1Farmacia()
Cliente Situación IVA <%= operacion_valor valor/entidad/objSituacionIva/nombre obtSituacionIvaCliente()
Cliente Cuit <%= operacion_valor valor/entidad/cuit obtCuitCliente()
Producto Nombre Corto <%# item_valor producto/nombreCorto obtNombreProducto()
Producto Código Barra <%# item_valor producto/codigoBarra obtCodigoBarraProducto()
Receta Precio Unidad <%# item_valor producto/codigoBarra obtRecetaPrecioUnitario()
Receta Porcentaje Cobertura <%# item_valor itemsReceta/porcentajeCobertura obtRecetaPorcentajeCobertura()

Caracteres[editar]

Para la obtención de la sintaxis de comandos se debe recurrir a los manuales de cada modelo de impresora fiscal.

A modo de ejemplo se transcriben algunos de los caracteres más usados:

modelo impresora HEXA ASCII descripción
Bematech

Epson

\u001B ESC Por definición del protocolo, todo comando empieza con 1B
Bematech

Epson

\u001B@ ESC @ Inicializa la impresora
Bematech \u001Btn ESC t n Selecciona la página de código n:

n = 2 (PÁGINA DE CÓDIGO 850 – Falla)

n = 3 (PÁGINA DE CÓDIGO 437)

n = 4 (PÁGINA DE CÓDIGO 860)

n = 5 (PÁGINA DE CÓDIGO 858)

Bematech \u001Bln ESC l n Programa el margen izquierdo para la columna n
Epson \u001Bl ESC l Posiciona margen izquierdo
Bematech

Epson

\u000E SO Selecciona expandido por una línea
Bematech \u0014 DC4 Cancela modo expandido de una línea
Bematech

Epson

\u000F SI Selecciona modo condensado
Bematech

Epson

\u0012 DC2 Cancela modo condensado
Bematech \u001BE ESC SO Selecciona expandido por una línea
Bematech \u001BF ESC SI Selecciona modo condensado
Epson \u001BF ESC F Cancela modo enfatizado
Bematech

Epson

\u001Bm ESC m Realiza un corte parcial de papel
Epson \u001BM ESC M Selecciona el ancho elite
Epson \u001B0 ESC 0 Selecciona 1/8 de pulgada de línea de espacio
Epson \u001B- ESC - Selecciona/cancela modo subrayado
Epson \u001BW ESC W Selecciona/cancela el modo expandido


Ejemplo Modelo[editar]

Hagamos un seguimiento, línea a línea, de la plantilla Factura Bematech MP4000 TH (45) cargada en zWeb:


1) \u001B@\u001Bt2\u001Bl\u0001

ESC @ = inicializa la impresora;
ESC t 2 = selecciona la página de código 850;
ESC l 1 = programa el margen iazquierdo para la columna 1.


2) \u000E<%=format:rpad((valor/nodoCreacion/razonSocial),19)%>

SO = selecciona expandido por una línea;
Busca en la tabla operacion_valor la Factura;
Imprime 19 caracteres de la Razón Social del Nodo Creación de la Factura,
si tiene más de 19 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


3) \u0014\u000F<%=format:rpad((valor/nodoCreacion/razonSocialLinea2),42)%>

DC4 = cancela modo expandido de una línea;

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres de la Razón Social 2a línea del Nodo Creación de la Factura,
si tiene más de 42 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


4) \u000F<%=format:rpad((valor/nodoCreacion/direcciones[1]),42)%>

SI = selecciona modo condesado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres de la 1er Dirección del Nodo Creación de la Factura,
si tiene más de 42 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


5) \u000FTel.: <%=format:rpad((valor/nodoCreacion/telefonosConcatenados),42)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres con los Teléfonos del Nodo Creación de la Factura,
si ocupan más de 42 caracteres: los corta,
si ocupan menos: completa a derecha con espacios.


6) \u000FC.U.I.T. : <%=format:rpad((valor/nodoCreacion/cuit),30)%>

SI = selecciona modo condensado;
Imprime el texto 'C.U.I.T. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del CUIT del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


7) \u000FI.V.A. : <%=format:rpad((valor/nodoCreacion/objSituacionIva/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'I.V.A. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del nombre de la Situación de IVA del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


8) \u000FI.Br. : <%=format:rpad((valor/nodoCreacion/ingresosBrutos),30)%>

SI = selecciona modo condensado;
Imprime el texto 'I.Br. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del nombre del nro. de Ingresos Brutos del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


9) /

Imprime una línea en blanco.


10) \u000FCliente : <%=format:rpad((valor/entidad/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Cliente : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Nombre del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


11) \u000F<%=format:rpad((valor/entidad/apellido),30)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Apellido del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


12) \u000FDireccion: <%=format:rpad((valor/entidad/direcciones[1]),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Direccion: ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres de la 1er Dirección del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


13) \u000FTelefono.: <%=format:rpad((valor/entidad/telefonosConcatenados)</span<,30)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres con los Teléfonos del Cliente asociado la Factura,
si ocupan más de 30 caracteres: los corta,
si ocupan menos: completa a derecha con espacios.


14) \u000F<%@concat('Afiliado: <',format:rpad((operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado),20),'>

\u000FNro. <',format:lpad((operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado),12),'>')%>

SI = selecciona modo condensado;
Busca en la tabla operacion la Receta;
Imprime la concatenación de los textos:
- 'Afiliado: '
- 20 caracteres del Nombre del Afiliado de la Receta,
si tiene más de 20 caracteres: los corta,
si tiene menos: completa a derecha con espacios.
- 'Nro. '
- 12 caracteres del Número del Afiliado de la Receta,
si tiene más de 12 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


15) \u000FFecha : <%=format:rpad(format:longDate((valor/fechaCreacion)),20)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Convierte la Fecha Creación de la Factura a longDate;
Imprime 20 caracteres de la fecha obtenida,
si tiene más de 20 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


16) \u0012\u001BE FACTURA <%=format:rpad((valor/letraFactura),1)%> - <%=format:rpad((valor/codificacion),13)%>\u001BF

DC2 = cancela modo condensado;
ESC SO = selecciona expandido por una línea;
Imprime el texto ' FACTURA ';
Busca en la tabla operacion_valor la Factura;
Imprime la Letra de la Factura (1 caracter);
Imprime el texto ' - '
Busca en la tabla operacion_valor la Factura;
Imprime 13 caracteres del Número de la Factura,
si tiene más de 13 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


17) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


18) \u000F Cant Descripcion P Unit. P.Total

SI = selecciona modo condensado;
Imprime el texto 'Cant Descripcion P Unit. P.Total'.


19) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


20) \u000F<%#concat(format:lpad(format:string((cantidad)),6),' ',format:rpad((producto/nombreCorto),23),' ',format:lpad(format:string((precioUnitario)),12),' ',format:lpad(format:string((total)),12),'

\u000F Descuento <',format:lpad(format:string((descuentoGeneral)),12),'>

\u000F O. Social <',format:lpad(format:string(sum(itemsReceta/precioUnitario)),12),'>')%>

SI = selecciona modo condensado;
Comienza a iterar sobre la tabla item_valor y, para cada Ítem de la Factura, imprime la concatenación de los textos:
- 6 caracteres (completados a izquierda con espacios) de la Cantidad convertida a texto.
- espacio en blanco
- 23 caracteres (completados a derecha con espacios) del Nombre Corto del Producto.
- espacio en blanco
- 12 caracteres (completados a izquierda con espacios) del Precio Unitario convertido a texto.
- espacio en blanco
- 12 caracteres (completados a izquierda con espacios) del Total convertido a texto.
- 'Descuento '
- 12 caracteres (completados a izquierda con espacios) del Descuento General convertido a texto.
- 'O. Social '
- 12 caraceteres (completados a izquierda con espacios) de la suma de los precios Unitarios de los Ítems de la Receta convertida a texto.


21) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


22) \u0012\u001BE TOTAL <%=format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto)),12)%>\u001BF

DC2 = cancela modo condensado;
ESC SO = selecciona expandido por una línea;
Imprime el texto 'TOTAL ';
Busca en la tabla operacion_valor la Factura;
Imprime 12 caracteres del Monto convertido a texto del subTipoValorConcepto tipo Total Neto de la Factura,
si tiene más de 12 caracteres: los corta,
si tiene menos: completa a izquierda con espacios;
ESC SI = selecciona modo condensado.


23) \u000FOBRAS SOCIALES <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'OBRAS SOCIALES ';
Busca en la tabla operacion la Receta;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Receta,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


24) \u000FCUENTA CORRIENTE <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CUENTA CORRIENTE ';
Busca en la tabla operacion la Cuenta Corriente;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Cuenta Corriente,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


25) \u000FCUOTA CUENTA CORRIENTE <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CUOTA CUENTA CORRIENTE ';
Busca en la tabla operacion la Cuota de Cuenta Corriente;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Cuota de Cuenta Corriente,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


26) \u000F<%@concat(format:rpad((operacionesValor[valor/tipoValor/id=9]/valor/entidadSaldable/nombre),33),format:lpad(format:string((operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal)),10))%>

SI = selecciona modo condensado;
Busca en la tabla operacion la Cuota de Tarjeta;
Imprime la concatenación de los textos:
- 33 caracteres (completados a derecha con espacios) del Nombre de la Entidad Saldable de la Cuota de Tarjeta.
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto Principal de la Cuota de Tarjeta.


27) \u000FCHEQUE TERCEROS <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CHEQUE TERCEROS ';
Busca en la tabla operacion el Cheque de Terceros;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal del Cheque de Terceros,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


28) \u000FEFECTIVO <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'EFECTIVO ';

Busca en la tabla operacion el Billete;

Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal del Billete,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


29) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


30) \u000FExento : <%=concat(format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto)),10),' Gravado: ',format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=541]/monto)),10))%>

SI = selecciona modo condensado;
Imprime el texto 'Exento : ';
Busca en la tabla operacion_valor la Factura;
Imprime la concatenación de los textos:
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto Visible en T&S de tipo Total Bruto No Gravado.
- ' Gravado: '
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto de tipo Total Bruto Gravado POS.


31) \u000FVendedor : <%=format:rpad((valor/objUsuarioCreacion/alias),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Vendedor : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Alias del Usuario Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


32) \u000FPuesto : <%=format:rpad((operacion/puestoVenta/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Puesto : ';
Busca en la tabla operacion_valor la operación de Venta;
Imprime 30 caracteres del Nombre del Puesto de Venta,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


33) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


34) \u000F(comprobante sin valor fiscal)

DC2 = cancela el modo condensado;
Imprime el texto '(comprobante sin valor fiscal)'.


35) \u001Bw

ESC 119 = corte total.


Ejemplos Prototipos[editar]

XPaths para DATOS ADICIONALES:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato), ' : ', format:string(prototipoDetalle/nombre), ' : ', format:string(prototipoDetalle/prototipo/nombre), ' : ', format:string(prototipoDatoAdicional/prototipo/nombre), ' : ', format:string(prototipoDatoAdicional/numeroLinea))%>%>


PseudoFunciones para DATOS ADICIONALES:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', format:string(obtDatoCodificado()), ' : ', format:string(obtNombreDePrototipoDetalle()), ' : ', format:string(obtNombrePrototipoDePrototipoDetalle()), ' : ', format:string(obtNombrePrototipoDePrototipoDatoAdicional()), ' : ', format:string(obtNumeroLineaDePrototipoDatoAdicional()))%>%>


DATOS ADICIONALES para Valor de la OV a imprimir:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato))%>%>


DATOS ADICIONALES para Valor de la OV a imprimir:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', format:string(obtDatoCodificado()))%>%>


DATOS ADICIONALES para Valor de la OV en la que estoy parado:

<%&format:rpad(obtNumeroComprobante(),13)<%+concat(' - ', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato))%>%>

new user message

Funciones propias[editar]

  • / = imprime línea en blanco.


  • <%= --------- %>
OperacionValor: Devuelve el objeto OperacionValor a imprimir (tabla operacion_valor).


  • <%& --------- %> #
operacionesValor: Itera sobre la colección OperacionValor.operacion.operacionesValor devolviendo objetos OperacionValor (tabla operacion_valor).


  • <%@ --------- %> #
Operacion: Devuelve el objeto OperacionValor.operacion, clase Operacion (tabla operacion).


  • <%# --------- %> #
itemsValor: Itera sobre la colección OperacionValor.valor.itemsValor devolviendo objetos ItemValor/ItemFactura/ItemConvenio/etc (tabla item_valor).


  • <%$ --------- %> #
valoresConcepto: Itera sobre la colección OperacionValor.valor.valoresConcepto devolviendo objetos ValorConcepto (tabla valor_conceptos).


  • <%+ --------- %> #

Itera sobre la colección de Prototipos de los valores o de los items.


  • <%! ** Modelo 2 ** %> !
comentarios: Los datos incluídos sirven para orientar al usuario de la plantilla, pero no salen impresos.


  • format: lpad / rpad / cpad (texto a imprimir, longitud a rellenar, [caracter de relleno])
rellena a izquierda / derecha / centra texto.
-si la longitud a rellenar es menor que la longitud del texto a imprimir, entonces corta el texto.
-si no se especifica ningún caracter de relleno, entonces completa con espacios.


  • format: alltrim (texto a imprimir)
-devuelve el texto indicado, borrando los espacios en blanco a izquierda y a derecha.


  • format: longDate (fecha)
-devuelve la fecha en el formato longDate definido en application.


  • format: shortDate (fecha)
-devuelve la fecha en el formato shortDate definido en application.


  • format: longDateTime (fecha)
-devuelve la fecha y la hora en el formato dd/mm/yyyy hh:mm:ss, definido en application.


  • format: string (objeto)
-convierte cualquier tipo de dato en string.


  • format: integer (número)
-devuelve la parte entera del número ingresado, convertido en string.


  • format: len (objeto)
-devuelve la longitud del dato ingresado, convertido en string.


  • format: ascii (número)
-devuelve el código ASCii del número ingresado, convertido en string.


  • format: stringNoVacio (número)
-devuelve el número ingresado, convertido en string.
-si el valor es nulo, devuelve el texto 0,00.


  • format: stringNoVacioDto (número)
-devuelve el número ingresado, convertido en string.
-si el valor es nulo, devuelve el texto -0,00.


  • format: leftpad / rightpad / centerpad (dato a imprimir)
-rellena por izquierda / derecha / centra el texto del dato ingresado,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: leftpad / rightpad / centerpad (título, dato)
-si el valor de dato es nulo,
-no imprime texto alguno.
-si el valor de dato no es nulo,
-concatena los valores título y dato,
-rellena por izquierda / derecha / centra el texto completo,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: leftpad / rightpad (título, dato, número)
-si el valor de dato es nulo,
-no imprime texto alguno.
-si el valor de dato no es nulo,
-concatena los valores título y dato,
-rellena por izquierda / derecha el texto completo,
siempre con espacios en blanco,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión menos el valor indicado en el parámetro número.


  • format: concatenar (número de campo, string de datos serializados)
-concatena los valores del string de datos separados por |,
ajusta la longitud del campo indicado por el primer parámetro,
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-por ejemplo:
format:concatenar(2, " 1|ADALAT 30| 44,00| 44,00")


  • format: enlazar (string de 2 datos serializados)
-concatena los 2 valores del string de datos separados por |,
ajusta la longitud del 1er. campo hasta completar la cantidad de caracteres
indicada como Ancho Máximo en el motor de impresión.
-por ejemplo:
format:enlazar("A c/Afil. d/aplicar Cob. 1a. :| 40,00")


  • format: separador ()
-imprime una línea separadora formada por caracteres --------------
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.


  • format: separador (dato)
-imprime una línea separadora condicional,
-formada por caracteres ------------
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-la condición viene dada por el valor contenido en dato,
si es nulo, el separador no se imprime.
-por ejemplo:
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre)%>
si existen bonos, imprime el separador --------------------------


  • format: separador (dato, título)
-imprime una línea separadora condicional,
-formada por caracteres ------------ con el valor indicado en título, centrado
hasta completar la cantidad de caracteres indicada como Ancho Máximo en el motor de impresión.
-la condición viene dada por el valor contenido en dato,
si es nulo, el separador no se imprime.
-por ejemplo:
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre,'- BONO -')%>
si existen bonos, imprime el separador ---------- BONO ----------


  • format: nonull (objeto)
-si el valor del dato recibido no es nulo, imprime su valor string
-si el valor del dato recibido es nulo, imprime un string vacío: ""


  • format: cgoAfilCob (total, montoCobertura)
-si existe la Cobertura (montoCobertura > 0),
devuelve el importe que resta para el Afiliado: total - montoCobertura
-si no existe la Cobertura (montoCobertura = 0),
devuelve cero, con lo que no se imprime ningún dato.


  • format: irLinea (número)
-avanza la posición a imprimir hasta la línea indicada por el parámetro.


Nuevas funciones definidas (Plantillas v4)[editar]

  • format: stringtransf (objeto1,objeto2,objeto3)
-Devuelve el objeto1, donde los objeto2, son reemplazados por objeto3.
Método replace() de StringUtils.


  • format: obtcodigo (objeto)
-Se formatea el objeto (codificación del comprobante 0001-0001234)
para imprimir como Código de Barras.


  • format: obtcodigosinguion (objeto)
-Se formatea el objeto (codificación del comprobante 0001-0001234)
para imprimir como Código de Barras, sin el guión separador.


NOTA: SI LA AUSENCIA DEL DATO A IMPRIMIR TIENE QUE ELIMINAR EL RENGLÓN ACTUAL SE TIENE QUE ENCERRAR ENTRE MAYOR Y MENOR LA FUNCIÓN. EJ: <<%=....%>>

Funciones definidas para cada tipo de dispositivo (Plantillas v3)[editar]

Estos comandos actúan sólo si el dispositivo lo permite.

  • inicializar ()
-envía un comando de inicialización a la impresora que la configura a sus valores iniciales.


  • normalizar ()
-envía un comando de normalización de la letra, a sus valores iniciales.


  • negrita (objeto)
-imprime en negrita (o enfatizado) el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • cursiva (objeto)
-imprime en cursiva (o en itálica) el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • subrayado (objeto)
-imprime con letra subrayada el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • condensado (objeto)
-imprime con letra condensada el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • textodobleancho (objeto)
-imprime con letra expandida a lo ancho el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • textodoblealto (objeto)
-imprime con letra expandida en alto el valor string del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • cortepapel ()
-envía un comando de corte parcial de la cinta de papel.


  • cortetotalpapel ()
-envía un comando de corte total de la cinta de papel.


  • codigobarras (objeto)
-envía los comandos de configuración previos para imprimir un código de barras.
imprime el código de barras del valor del dato recibido.
vuelve a las condiciones iniciales al finalizar la línea.


  • Ejemplos para obtener el número de autorizacción de cada receta y coseguro.
<%@format:rightpad('AUTORIZACIO1: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=1]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO2: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=2]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO3: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=3]/valor/numeroAutorizacion)%>
<%@format:rightpad('AUTORIZACIO4: ',operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=4]/valor/numeroAutorizacion)%>

Funciones de jxpath[editar]

  • string concat (string, string, string, ...)
-devuelve la concatenación de sus argumentos.


  • number sum (node-set)
-devuelve la suma, para cada nodo del set de nodos del argumento, del resultado de convertir los valores string del nodo a números.


Métodos[editar]

objeto atributo función tabla método nuevo método
Farmacia Razón Social <%= operacion_valor valor/nodoCreacion/razonSocial obtRazonSocialFarmacia()
Farmacia Razón Social 2 <%= operacion_valor valor/nodoCreacion/razonSocialLinea2 obtRazonSocialFarmaciaLinea2()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[1] obtDireccion1Farmacia()
Farmacia Tel. <%= operacion_valor valor/nodoCreacion/telefonosConcatenados obtTelefonoFarmacia()
Farmacia C.U.I.T. <%= operacion_valor valor/nodoCreacion/cuit obtCuitFarmacia()
Farmacia I.V.A. <%= operacion_valor valor/nodoCreacion/objSituacionIVA/nombre obtSituacionIvaFarmacia()
Farmacia I.Br. <%= operacion_valor valor/nodoCreacion/ingresosBrutos obtIngresosBrutosFarmacia()
Cliente Nombre <%= operacion_valor valor/entidad/nombre obtNombreCliente()
Cliente Apellido <%= operacion_valor valor/entidad/apellido obtApellidoCliente()
Cliente Dirección <%= operacion_valor valor/entidad/direcciones[1] obtDireccion1Cliente()
Cliente Teléfono <%= operacion_valor valor/entidad/telefonosConcatenados obtTelefonoCliente()
Afiliado Nombre <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado obtNombreAfiliado()
Afiliado Nro <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado obtNumeroAfiliado()
Valor Fecha <%= operacion_valor valor/fechaCreacion
Valor Número <%= operacion_valor valor/codificacion obtNumeroComprobante()
Producto Nombre <%# item_valor producto/nombreCorto
Producto Descuento de ítem <%# item_valor descuento * descuento *
Producto Descuento Automático/Forzado <%# item_valor descuentoAfiliado * descuentoAfiliado *
Producto Descuento General (manual) <%# item_valor descuentoGeneral * descuentoGeneral *
Receta O. Social <%# item_valor sum(itemsReceta/montoTotalCubierto)
Valor TOTAL <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto obtPrecioFinal()
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
Valor CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal obtImporteFormaPagoCtaCte()
Valor CUOTA CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal obtImporteFormaPagoCuotaCteCte()
Valor TARJETA <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal obtImporteFormaPagoTarjeta()
Valor CHEQUE TERCEROS <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal obtImporteFormaPagoChequeTerceros()
Valor EFECTIVO <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal obtImporteFormaPagoEfectivo()
Valor Exento <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto obtTotalExento()
Valor Gravado <%= operacion_valor valor/valoresConcepto[subtipoValorCpto/concepto/id=541]/monto obtTotalGravado()
Valor Perc.II.BB. <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto obtTotalPercepcionesIIBB()
Vendedor Nombre <%= operacion_valor valor/objUsuarioCreacion/alias obtVendedor()
Puesto Nombre <%= operacion_valor operacion/puestoVenta/nombre obtPuestoVenta()

Nuevos Métodos[editar]

objeto atributo función tabla método nuevo método
Valor Fecha de Emisión <%= operacion_valor valor/fechaEmision obtFechaEmision()
Cliente (eventual) Domicilio <%= operacion_valor valor/domicilioCliente obtDomicilioClienteEven()
Cliente (eventual) Documento <%= operacion_valor valor/documentoCliente obtDocumentoClienteEven()
Cliente (eventual) Nombre <%= operacion_valor valor/nombreCliente obtNombreClienteEven()
Cliente (secundario) Nombre <%= operacion_valor valor/entidadSecundaria/nombre obtNombreClienteSecundario()
Cliente Código <%= operacion_valor valor/entidad/codigo obtCodigoCliente()
Cliente Envío Dirección <%= operacion_valor valor/direccionSeleccionada obtDireccionEnvio()
Cliente Envío Teléfono <%= operacion_valor valor/telefonoSeleccionado obtTelefonoEnvio()
Cliente Envío Observaciones <%= operacion_valor valor/observaciones obtObservacionEnvio()
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre obtNombreObraSocial()
Receta Nombre OSP <%= operacion_valor valor[tipoValor/id=2]/entidad/obraSocial/nombreCorto obtNombreCobertura()
Receta Nombre OSP <%= operacion_valor valor[tipoValor/id=2]/entidad/nombre obtNombreLargoCobertura()
Receta Número <%= operacion_valor valor[tipoValor/id=2]/codificacion obtNumeroReceta()
Receta Fecha <%= operacion_valor valor[tipoValor/id=2]/fechaEmision obtFechaReceta()
Receta Nombre 1ra. OSP <%# item_valor itemConvenio1raCobertura/convenio/entidad/nombre obtNombre1raCobertura()
Receta Importe 1ra. OSP <%# item_valor itemConvenio1raCobertura/montoTotalCubierto obtTotalCubierto1raCobertura()
Receta Porcentaje 1ra. OSP <%# item_valor itemConvenio1raCobertura/porcentajeCobertura obtPorcentaje1raCobertura()
Receta Nombre 2da. OSP <%# item_valor itemConvenio2daCobertura/convenio/entidad/nombre obtNombre2daCobertura()
Receta Importe 2da. OSP <%# item_valor itemConvenio2daCobertura/montoTotalCubierto obtTotalCubierto2daCobertura()
Receta Porcentaje 2da. OSP <%# item_valor itemConvenio2daCobertura/porcentajeCobertura obtPorcentaje2daCobertura()
Receta Nro.Autorización <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAutorizacion obtAutorizacionObraSocial()
Valor Dto.Comprobante <%@ operacion comprobante/descuentoGeneral obtDtoGeneral()
Valor Dto.Bono <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/descuentoGeneral obtDtoGeneralBono()
Valor Dto.Receta <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/descuentoGeneral obtDtoGeneralReceta()
Valor Dto.Billete <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/descuentoGeneral obtDtoGeneralEfectivo()
Valor Dto.CH/Propio <%@ operacion operacionesValor[valor/tipoValor/id=4]/valor/descuentoGeneral obtDtoGeneralChequePropio()
Valor Dto.CH/Tercero <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/descuentoGeneral obtDtoGeneralChequeTercero()
Valor Dto.Tarjeta <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/descuentoGeneral obtDtoGeneralTarjeta()
Valor Dto.Cuota Cta.Cte. <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/descuentoGeneral obtDtoGeneralCuotaCtaCte()
Valor Dto.Cta.Cte. <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/descuentoGeneral obtDtoGeneralCtaCte()
Valor Descuento Convenio <%@ operacion operacionesValor[valor/tipoValor/id=211]/valor/descuentoGeneral obtDtoGeneralConvenio()
Valor Vendedor <%= operacion_valor valor/comprobante/objusuariocreacion/alias obtValorCteVendedor()
Valor Numero <%= operacion_valor valor/comprobante/codificacion obtValorCteNumero()
Valor Fecha Emisión <%= operacion_valor valor/comprobante/fechaEmision obtValorCteFechaEmision()
Valor Fecha Creación <%= operacion_valor valor/fechaCreacion obtFechaCreacion()
Valor Importe <%= operacion_valor valor/montoPrincipal obtValorMontoPrincipal()
Valor Letra Factura <%= operacion_valor valor/letraFactura obtLetraFactura()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[0] obtDireccion0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[0]/numero obtTelefono0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[1]/numero obtTelefono1Farmacia()
Cliente Situación IVA <%= operacion_valor valor/entidad/objSituacionIva/nombre obtSituacionIvaCliente()
Cliente Cuit <%= operacion_valor valor/entidad/cuit obtCuitCliente()
Producto Nombre Corto <%# item_valor producto/nombreCorto obtNombreProducto()
Producto Código Barra <%# item_valor producto/codigoBarra obtCodigoBarraProducto()
Receta Precio Unidad <%# item_valor producto/codigoBarra obtRecetaPrecioUnitario()
Receta Porcentaje Cobertura <%# item_valor itemsReceta/porcentajeCobertura obtRecetaPorcentajeCobertura()
Receta Importe Cobertura <%# item_valor itemsReceta/descuento obtRecetaImporteDescuento()
Valor Importe <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto obtPrecioFinal()
Receta Número Cobertura <%= operacion_valor .[valor/tipoValor/id=2]/numeroCobertura obtNumeroCobertura()
Receta Saldo Afiliado <%= operacion_valor .[valor/tipoValor/id=2]/saldoAfiliado obtSaldoAfiliado()
Convenio Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=211]/entidad/nombre obtNombreFormaPagoConvenio()
Convenio Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=211]/montoPrincipal) obtImporteFormaPagoConvenio()
Cuota Cta Cte Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=21]/entidad/nombre obtNombreFormaPagoCuotaCteCte()
Cuota Cta Cte Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=21]/montoPrincipal) obtImporteFormaPagoCuotaCteCte()
CH/Tercero Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=5]/entidad/nombre obtNombreFormaPagoChequeTerceros()
CH/Tercero Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=5]/montoPrincipal) obtImporteFormaPagoChequeTerceros()
Tarjeta Nombre Forma Pago <%= operacion_valor valor[tipoValor/id=9]/entidadSaldable/nombre obtNombreFormaPagoTarjeta()
Tarjeta Importe Forma Pago <%= operacion_valor sum(valor[tipoValor/id=9]/montoPrincipal) obtImporteFormaPagoTarjeta()
Bono Nombre <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre obtNombreBono()
Bono Puntaje <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=500 and subTipoValorCpto/visiblePos=1]/monto obtPuntajeBono()
Bono Acumulado <%@ operacion operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto obtAcumuladoBono()
Valor Vendedor <%= operacion_valor valor/comprobante/objusuariocreacion/alias obtValorCteVendedor()
Valor Numero <%= operacion_valor valor/comprobante/codificacion obtValorCteNumero()
Valor Fecha Emisión <%= operacion_valor valor/comprobante/fechaEmision obtValorCteFechaEmision()
Valor Fecha Creación <%= operacion_valor valor/fechaCreacion obtFechaCreacion()
Valor Importe <%= operacion_valor valor/montoPrincipal obtValorMontoPrincipal()
Valor Letra Factura <%= operacion_valor valor/letraFactura obtLetraFactura()
Farmacia Dirección <%= operacion_valor valor/nodoCreacion/direcciones[0] obtDireccion0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[0]/numero obtTelefono0Farmacia()
Farmacia Teléfono <%= operacion_valor valor/nodoCreacion/telefonos[1]/numero obtTelefono1Farmacia()
Cliente Situación IVA <%= operacion_valor valor/entidad/objSituacionIva/nombre obtSituacionIvaCliente()
Cliente Cuit <%= operacion_valor valor/entidad/cuit obtCuitCliente()
Producto Nombre Corto <%# item_valor producto/nombreCorto obtNombreProducto()
Producto Código Barra <%# item_valor producto/codigoBarra obtCodigoBarraProducto()
Receta Precio Unidad <%# item_valor producto/codigoBarra obtRecetaPrecioUnitario()
Receta Porcentaje Cobertura <%# item_valor itemsReceta/porcentajeCobertura obtRecetaPorcentajeCobertura()

Caracteres[editar]

Para la obtención de la sintaxis de comandos se debe recurrir a los manuales de cada modelo de impresora fiscal.

A modo de ejemplo se transcriben algunos de los caracteres más usados:

modelo impresora HEXA ASCII descripción
Bematech

Epson

\u001B ESC Por definición del protocolo, todo comando empieza con 1B
Bematech

Epson

\u001B@ ESC @ Inicializa la impresora
Bematech \u001Btn ESC t n Selecciona la página de código n:

n = 2 (PÁGINA DE CÓDIGO 850 – Falla)

n = 3 (PÁGINA DE CÓDIGO 437)

n = 4 (PÁGINA DE CÓDIGO 860)

n = 5 (PÁGINA DE CÓDIGO 858)

Bematech \u001Bln ESC l n Programa el margen izquierdo para la columna n
Epson \u001Bl ESC l Posiciona margen izquierdo
Bematech

Epson

\u000E SO Selecciona expandido por una línea
Bematech \u0014 DC4 Cancela modo expandido de una línea
Bematech

Epson

\u000F SI Selecciona modo condensado
Bematech

Epson

\u0012 DC2 Cancela modo condensado
Bematech \u001BE ESC SO Selecciona expandido por una línea
Bematech \u001BF ESC SI Selecciona modo condensado
Epson \u001BF ESC F Cancela modo enfatizado
Bematech

Epson

\u001Bm ESC m Realiza un corte parcial de papel
Epson \u001BM ESC M Selecciona el ancho elite
Epson \u001B0 ESC 0 Selecciona 1/8 de pulgada de línea de espacio
Epson \u001B- ESC - Selecciona/cancela modo subrayado
Epson \u001BW ESC W Selecciona/cancela el modo expandido


Ejemplo Modelo[editar]

Hagamos un seguimiento, línea a línea, de la plantilla Factura Bematech MP4000 TH (45) cargada en zWeb:


1) \u001B@\u001Bt2\u001Bl\u0001

ESC @ = inicializa la impresora;
ESC t 2 = selecciona la página de código 850;
ESC l 1 = programa el margen iazquierdo para la columna 1.


2) \u000E<%=format:rpad((valor/nodoCreacion/razonSocial),19)%>

SO = selecciona expandido por una línea;
Busca en la tabla operacion_valor la Factura;
Imprime 19 caracteres de la Razón Social del Nodo Creación de la Factura,
si tiene más de 19 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


3) \u0014\u000F<%=format:rpad((valor/nodoCreacion/razonSocialLinea2),42)%>

DC4 = cancela modo expandido de una línea;

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres de la Razón Social 2a línea del Nodo Creación de la Factura,
si tiene más de 42 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


4) \u000F<%=format:rpad((valor/nodoCreacion/direcciones[1]),42)%>

SI = selecciona modo condesado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres de la 1er Dirección del Nodo Creación de la Factura,
si tiene más de 42 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


5) \u000FTel.: <%=format:rpad((valor/nodoCreacion/telefonosConcatenados),42)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 42 caracteres con los Teléfonos del Nodo Creación de la Factura,
si ocupan más de 42 caracteres: los corta,
si ocupan menos: completa a derecha con espacios.


6) \u000FC.U.I.T. : <%=format:rpad((valor/nodoCreacion/cuit),30)%>

SI = selecciona modo condensado;
Imprime el texto 'C.U.I.T. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del CUIT del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


7) \u000FI.V.A. : <%=format:rpad((valor/nodoCreacion/objSituacionIva/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'I.V.A. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del nombre de la Situación de IVA del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


8) \u000FI.Br. : <%=format:rpad((valor/nodoCreacion/ingresosBrutos),30)%>

SI = selecciona modo condensado;
Imprime el texto 'I.Br. : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del nombre del nro. de Ingresos Brutos del Nodo Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


9) /

Imprime una línea en blanco.


10) \u000FCliente : <%=format:rpad((valor/entidad/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Cliente : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Nombre del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


11) \u000F<%=format:rpad((valor/entidad/apellido),30)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Apellido del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


12) \u000FDireccion: <%=format:rpad((valor/entidad/direcciones[1]),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Direccion: ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres de la 1er Dirección del Cliente asociado a la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


13) \u000FTelefono.: <%=format:rpad((valor/entidad/telefonosConcatenados)</span<,30)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres con los Teléfonos del Cliente asociado la Factura,
si ocupan más de 30 caracteres: los corta,
si ocupan menos: completa a derecha con espacios.


14) \u000F<%@concat('Afiliado: <',format:rpad((operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado),20),'>

\u000FNro. <',format:lpad((operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado),12),'>')%>

SI = selecciona modo condensado;
Busca en la tabla operacion la Receta;
Imprime la concatenación de los textos:
- 'Afiliado: '
- 20 caracteres del Nombre del Afiliado de la Receta,
si tiene más de 20 caracteres: los corta,
si tiene menos: completa a derecha con espacios.
- 'Nro. '
- 12 caracteres del Número del Afiliado de la Receta,
si tiene más de 12 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


15) \u000FFecha : <%=format:rpad(format:longDate((valor/fechaCreacion)),20)%>

SI = selecciona modo condensado;
Busca en la tabla operacion_valor la Factura;
Convierte la Fecha Creación de la Factura a longDate;
Imprime 20 caracteres de la fecha obtenida,
si tiene más de 20 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


16) \u0012\u001BE FACTURA <%=format:rpad((valor/letraFactura),1)%> - <%=format:rpad((valor/codificacion),13)%>\u001BF

DC2 = cancela modo condensado;
ESC SO = selecciona expandido por una línea;
Imprime el texto ' FACTURA ';
Busca en la tabla operacion_valor la Factura;
Imprime la Letra de la Factura (1 caracter);
Imprime el texto ' - '
Busca en la tabla operacion_valor la Factura;
Imprime 13 caracteres del Número de la Factura,
si tiene más de 13 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


17) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


18) \u000F Cant Descripcion P Unit. P.Total

SI = selecciona modo condensado;
Imprime el texto 'Cant Descripcion P Unit. P.Total'.


19) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


20) \u000F<%#concat(format:lpad(format:string((cantidad)),6),' ',format:rpad((producto/nombreCorto),23),' ',format:lpad(format:string((precioUnitario)),12),' ',format:lpad(format:string((total)),12),'

\u000F Descuento <',format:lpad(format:string((descuentoGeneral)),12),'>

\u000F O. Social <',format:lpad(format:string(sum(itemsReceta/precioUnitario)),12),'>')%>

SI = selecciona modo condensado;
Comienza a iterar sobre la tabla item_valor y, para cada Ítem de la Factura, imprime la concatenación de los textos:
- 6 caracteres (completados a izquierda con espacios) de la Cantidad convertida a texto.
- espacio en blanco
- 23 caracteres (completados a derecha con espacios) del Nombre Corto del Producto.
- espacio en blanco
- 12 caracteres (completados a izquierda con espacios) del Precio Unitario convertido a texto.
- espacio en blanco
- 12 caracteres (completados a izquierda con espacios) del Total convertido a texto.
- 'Descuento '
- 12 caracteres (completados a izquierda con espacios) del Descuento General convertido a texto.
- 'O. Social '
- 12 caraceteres (completados a izquierda con espacios) de la suma de los precios Unitarios de los Ítems de la Receta convertida a texto.


21) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


22) \u0012\u001BE TOTAL <%=format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto)),12)%>\u001BF

DC2 = cancela modo condensado;
ESC SO = selecciona expandido por una línea;
Imprime el texto 'TOTAL ';
Busca en la tabla operacion_valor la Factura;
Imprime 12 caracteres del Monto convertido a texto del subTipoValorConcepto tipo Total Neto de la Factura,
si tiene más de 12 caracteres: los corta,
si tiene menos: completa a izquierda con espacios;
ESC SI = selecciona modo condensado.


23) \u000FOBRAS SOCIALES <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'OBRAS SOCIALES ';
Busca en la tabla operacion la Receta;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Receta,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


24) \u000FCUENTA CORRIENTE <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CUENTA CORRIENTE ';
Busca en la tabla operacion la Cuenta Corriente;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Cuenta Corriente,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


25) \u000FCUOTA CUENTA CORRIENTE <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CUOTA CUENTA CORRIENTE ';
Busca en la tabla operacion la Cuota de Cuenta Corriente;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal de la Cuota de Cuenta Corriente,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


26) \u000F<%@concat(format:rpad((operacionesValor[valor/tipoValor/id=9]/valor/entidadSaldable/nombre),33),format:lpad(format:string((operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal)),10))%>

SI = selecciona modo condensado;
Busca en la tabla operacion la Cuota de Tarjeta;
Imprime la concatenación de los textos:
- 33 caracteres (completados a derecha con espacios) del Nombre de la Entidad Saldable de la Cuota de Tarjeta.
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto Principal de la Cuota de Tarjeta.


27) \u000FCHEQUE TERCEROS <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'CHEQUE TERCEROS ';
Busca en la tabla operacion el Cheque de Terceros;
Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal del Cheque de Terceros,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


28) \u000FEFECTIVO <%@format:lpad(format:string((operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal)),10)%>

SI = selecciona modo condensado;
Imprime el texto 'EFECTIVO ';

Busca en la tabla operacion el Billete;

Imprime 10 caracteres del Monto convertido a texto del subTipoValor Concepto Principal del Billete,
si tiene más de 10 caracteres: los corta,
si tiene menos: completa a izquierda con espacios.


29) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


30) \u000FExento : <%=concat(format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto)),10),' Gravado: ',format:lpad(format:string((valor/valoresConcepto[subTipoValorCpto/concepto/id=541]/monto)),10))%>

SI = selecciona modo condensado;
Imprime el texto 'Exento : ';
Busca en la tabla operacion_valor la Factura;
Imprime la concatenación de los textos:
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto Visible en T&S de tipo Total Bruto No Gravado.
- ' Gravado: '
- 10 caracteres (completados a izquierda con espacios) del Monto convertido a texto del subTipoValorConcepto de tipo Total Bruto Gravado POS.


31) \u000FVendedor : <%=format:rpad((valor/objUsuarioCreacion/alias),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Vendedor : ';
Busca en la tabla operacion_valor la Factura;
Imprime 30 caracteres del Alias del Usuario Creación de la Factura,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


32) \u000FPuesto : <%=format:rpad((operacion/puestoVenta/nombre),30)%>

SI = selecciona modo condensado;
Imprime el texto 'Puesto : ';
Busca en la tabla operacion_valor la operación de Venta;
Imprime 30 caracteres del Nombre del Puesto de Venta,
si tiene más de 30 caracteres: los corta,
si tiene menos: completa a derecha con espacios.


33) \u0012------------------------------------------

DC2 = cancela el modo condensado;
Imprime el texto '------------------------------------------'.


34) \u000F(comprobante sin valor fiscal)

DC2 = cancela el modo condensado;
Imprime el texto '(comprobante sin valor fiscal)'.


35) \u001Bw

ESC 119 = corte total.


Ejemplos Prototipos[editar]

XPaths para DATOS ADICIONALES:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato), ' : ', format:string(prototipoDetalle/nombre), ' : ', format:string(prototipoDetalle/prototipo/nombre), ' : ', format:string(prototipoDatoAdicional/prototipo/nombre), ' : ', format:string(prototipoDatoAdicional/numeroLinea))%>%>


PseudoFunciones para DATOS ADICIONALES:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', format:string(obtDatoCodificado()), ' : ', format:string(obtNombreDePrototipoDetalle()), ' : ', format:string(obtNombrePrototipoDePrototipoDetalle()), ' : ', format:string(obtNombrePrototipoDePrototipoDatoAdicional()), ' : ', format:string(obtNumeroLineaDePrototipoDatoAdicional()))%>%>


DATOS ADICIONALES para Valor de la OV a imprimir:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato))%>%>


DATOS ADICIONALES para Valor de la OV a imprimir:

<%=format:rpad(obtNumeroComprobante(),13)<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', format:string(obtDatoCodificado()))%>%>


DATOS ADICIONALES para Valor de la OV en la que estoy parado:

<%&format:rpad(obtNumeroComprobante(),13)<%+concat(' - ', format:string(prototipoDetalle/datoCodificado/nombre), ' : ', format:string(dato))%>%>