De Touch&Sale
Contenido
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 | Entre Calles | <%= | operacion_valor | valor/entidad/entreCalle | obtEntreCallesCliente() |
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.
36) AJUSTE EN LAS PLANTILLAS: Forma de armar la plantilla para que aparezcan solo la lineas de puntos necesarios
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))%>%>