Plantillas
Funciones propias
- / = imprime línea en blanco.
- <%= --------- %>
- -va a buscar a la tabla operacion_valor.
- <%@ --------- %>
- -va a buscar a la tabla operacion.
- <%# --------- %>
- -va a iterar sobre la tabla item_valor.
- format: lpad / rpad (texto a imprimir, longitud a rellenar, caracter de relleno)
- rellena a izquierda / derecha.
- -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: longDate (fecha)
- -devuelve la fecha en el formato longDate definido en application.
- format: string (número')
- -convierte el número en string.
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 |
Farmacia | Razón Social | <%= | operacion_valor | valor/nodoCreacion/razonSocial |
Farmacia | Razón Social 2 | <%= | operacion_valor | valor/nodoCreacion/razonSocialLinea2 |
Farmacia | Dirección | <%= | operacion_valor | valor/nodoCreacion/direcciones[1] |
Farmacia | Tel. | <%= | operacion_valor | valor/nodoCreacion/telefonosConcatenados |
Farmacia | C.U.I.T. | <%= | operacion_valor | valor/nodoCreacion/cuit |
Farmacia | I.V.A. | <%= | operacion_valor | valor/nodoCreacion/objSituacionIva/nombre |
Farmacia | I.Br. | <%= | operacion_valor | valor/nodoCreacion/ingresosBrutos |
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 | Letra | <%= | operacion_valor | valor/codificacion |
Producto | Nombre | <%# | item_valor | producto/nombreCorto |
Producto | Descuento | <%# | item_valor | descuentoGeneral |
Receta | O. Social | <%# | item_valor | sum(itemsReceta/precioUnitario) |
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(<span style="color:#800080">(valor/entidad/direcciones[1])</span>,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(<span style="color:#800080"(operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado)</span>,20),'>
\u000FNro. <',<span style="color:#6B8E23">format:lpad(</span><span style="color:#800080">(operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado)</span>,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(</span>(cantidad))</span<,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(<span style="color:#800080">(valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto)</SPAN>),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(</span><span style="color:#800080">(operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal)</span>),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(</span><span style="color:#800080">(operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal)</span>),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(<span style="color:#800080">(operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal)</span>),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(<span style="color:#800080">(operacionesValor[valor/tipoValor/id=9]/valor/entidadSaldable/nombre)</span>,33),format:lpad(format:string(<span style="color:#800080">(operacionesValor[valor/tipoValor/id=9]/valor/montoPrincipal)</span>),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(<span style="color:#800080">(operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal)</span>),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(<span style="color:#800080">(operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal)</span>),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(</span><span style="color:#800080">(valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto)</span>),10),' Gravado: ',format:lpad(format:string(<span style="color:#800080">(valor/valoresConcepto[subTipoValorCpto/concepto/id=541]/monto)</span>),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.