De Touch&Sale

Saltar a: navegación, buscar

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).


  • <%! ** 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.


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.

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
Cliente Apellido <%= operacion_valor valor/entidad/apellido
Cliente Dirección <%= operacion_valor valor/entidad/direcciones[1]
Cliente Teléfono <%= operacion_valor valor/entidad/telefonosConcatenados
Afiliado Nombre <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado
Afiliado Nro <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado
Valor Fecha <%= operacion_valor valor/fechaCreacion
Valor Número <%= operacion_valor valor/codificacion
Producto Nombre <%# item_valor producto/nombreCorto
Producto Descuento de ítem <%# item_valor descuento
Producto Descuento Automático/Forzado <%# item_valor descuentoAfiliado
Producto Descuento General (manual) <%# item_valor descuentoGeneral
Receta O. Social <%# item_valor sum(itemsReceta/montoTotalCubierto)
Valor TOTAL <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
Valor CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal
Valor CUOTA CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal
Valor TARJETA <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal
Valor CHEQUE TERCEROS <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal
Valor EFECTIVO <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal
Valor Exento <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto
Valor Gravado <%= operacion_valor valor/valoresConcepto[subtipoValorCpto/concepto/id=541]/monto
Vendedor Nombre <%= operacion_valor valor/objUsuarioCreacion/alias
Puesto Nombre <%= operacion_valor operacion/puestoVenta/nombre

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.

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).


  • <%! ** 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.


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.

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
Cliente Apellido <%= operacion_valor valor/entidad/apellido
Cliente Dirección <%= operacion_valor valor/entidad/direcciones[1]
Cliente Teléfono <%= operacion_valor valor/entidad/telefonosConcatenados
Afiliado Nombre <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado
Afiliado Nro <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado
Valor Fecha <%= operacion_valor valor/fechaCreacion
Valor Número <%= operacion_valor valor/codificacion
Producto Nombre <%# item_valor producto/nombreCorto
Producto Descuento de ítem <%# item_valor descuento
Producto Descuento Automático/Forzado <%# item_valor descuentoAfiliado
Producto Descuento General (manual) <%# item_valor descuentoGeneral
Receta O. Social <%# item_valor sum(itemsReceta/montoTotalCubierto)
Valor TOTAL <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
Valor CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal
Valor CUOTA CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal
Valor TARJETA <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal
Valor CHEQUE TERCEROS <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal
Valor EFECTIVO <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal
Valor Exento <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto
Valor Gravado <%= operacion_valor valor/valoresConcepto[subtipoValorCpto/concepto/id=541]/monto
Vendedor Nombre <%= operacion_valor valor/objUsuarioCreacion/alias
Puesto Nombre <%= operacion_valor operacion/puestoVenta/nombre

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.

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).


  • <%! ** 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.


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.

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
Cliente Apellido <%= operacion_valor valor/entidad/apellido
Cliente Dirección <%= operacion_valor valor/entidad/direcciones[1]
Cliente Teléfono <%= operacion_valor valor/entidad/telefonosConcatenados
Afiliado Nombre <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado
Afiliado Nro <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado
Valor Fecha <%= operacion_valor valor/fechaCreacion
Valor Número <%= operacion_valor valor/codificacion
Producto Nombre <%# item_valor producto/nombreCorto
Producto Descuento de ítem <%# item_valor descuento
Producto Descuento Automático/Forzado <%# item_valor descuentoAfiliado
Producto Descuento General (manual) <%# item_valor descuentoGeneral
Receta O. Social <%# item_valor sum(itemsReceta/montoTotalCubierto)
Valor TOTAL <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto
Valor OBRAS SOCIALES <%@ operacion operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
Valor CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal
Valor CUOTA CUENTA CORRIENTE <%@ operacion operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal
Valor TARJETA <%@ operacion operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal
Valor CHEQUE TERCEROS <%@ operacion operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal
Valor EFECTIVO <%@ operacion operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal
Valor Exento <%= operacion_valor valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto
Valor Gravado <%= operacion_valor valor/valoresConcepto[subtipoValorCpto/concepto/id=541]/monto
Vendedor Nombre <%= operacion_valor valor/objUsuarioCreacion/alias
Puesto Nombre <%= operacion_valor operacion/puestoVenta/nombre

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.