De Touch&Sale
(→Métodos) |
|||
| (No se muestran 310 ediciones intermedias de 5 usuarios) | |||
| Línea 1: | Línea 1: | ||
| − | == | + | == 1. Sintaxis de Plantilla (Tags) == |
| − | + | Delimitadores propios del motor de plantillas. Ninguno requiere el prefijo <code>format:</code>. | |
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Tag !! Nombre !! Descripción | ||
| + | |- | ||
| + | | <code>/</code> || Línea en blanco || Imprime una línea en blanco. | ||
| + | |- | ||
| + | | <code><%= ... %></code> || OperacionValor || Devuelve el objeto <code>OperacionValor</code> a imprimir (tabla <code>operacion_valor</code>). | ||
| + | |- | ||
| + | | <code><%& ... %> #</code> || operacionesValor || Itera sobre <code>OperacionValor.operacion.operacionesValor</code> devolviendo objetos <code>OperacionValor</code> (tabla <code>operacion_valor</code>). | ||
| + | |- | ||
| + | | <code><%@ ... %> #</code> || Operacion || Devuelve <code>OperacionValor.operacion</code>, clase <code>Operacion</code> (tabla <code>operacion</code>). | ||
| + | |- | ||
| + | | <code><%# ... %> #</code> || itemsValor || Itera sobre <code>OperacionValor.valor.itemsValor</code> devolviendo objetos <code>ItemValor/ItemFactura/ItemConvenio/etc</code> (tabla <code>item_valor</code>). | ||
| + | |- | ||
| + | | <code><%$ ... %> #</code> || valoresConcepto || Itera sobre <code>OperacionValor.valor.valoresConcepto</code> devolviendo objetos <code>ValorConcepto</code> (tabla <code>valor_conceptos</code>). | ||
| + | |- | ||
| + | | <code><%+ ... %> #</code> || prototipos || Itera sobre la colección de Prototipos de los valores o de los ítems. | ||
| + | |- | ||
| + | | <code><%! ... %> !</code> || comentarios || Los datos incluidos sirven para orientar al usuario de la plantilla, pero no salen impresos. Ej: <code><%! ** Modelo 2 ** %></code> | ||
| + | |- | ||
| + | | <code><< ... >></code> || Eliminación de renglón || Si la ausencia del dato a imprimir tiene que eliminar el renglón actual, se encierra la función entre <code><<</code> y <code>>></code>. Ej: <code><<%=...%>></code> | ||
| + | |} | ||
| − | + | ---- | |
| − | + | ||
| + | == 2. Funciones de Dispositivo == | ||
| − | + | Actúan solo si el dispositivo lo soporta. Se usan directamente, sin prefijo <code>format:</code>. | |
| − | : | + | Vuelven a las condiciones iniciales al finalizar la línea (salvo <code>inicializar</code>, <code>normalizar</code>, <code>cortepapel</code> y <code>cortetotalpapel</code>). |
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Función !! Descripción | ||
| + | |- | ||
| + | | <code>codigobarras(objeto)</code> || Envía los comandos de configuración previos e imprime el código de barras del valor recibido. | ||
| + | |- | ||
| + | | <code>condensado(objeto)</code> || Imprime con letra condensada. | ||
| + | |- | ||
| + | | <code>cortepapel()</code> || Envía un comando de corte '''parcial''' de la cinta de papel. | ||
| + | |- | ||
| + | | <code>cortetotalpapel()</code> || Envía un comando de corte '''total''' de la cinta de papel. | ||
| + | |- | ||
| + | | <code>cursiva(objeto)</code> || Imprime en cursiva (itálica). | ||
| + | |- | ||
| + | | <code>inicializar()</code> || Envía un comando de inicialización que configura la impresora a sus valores iniciales. | ||
| + | |- | ||
| + | | <code>negrita(objeto)</code> || Imprime en negrita (enfatizado). | ||
| + | |- | ||
| + | | <code>normalizar()</code> || Envía un comando de normalización de la letra a sus valores iniciales. | ||
| + | |- | ||
| + | | <code>subrayado(objeto)</code> || Imprime con letra subrayada. | ||
| + | |- | ||
| + | | <code>textodoblealto(objeto)</code> || Imprime con letra expandida en alto. | ||
| + | |- | ||
| + | | <code>textodobleancho(objeto)</code> || Imprime con letra expandida a lo ancho. Ver también <code>format:textodobleancho()</code>. | ||
| + | |} | ||
| − | + | ---- | |
| − | + | ||
| + | == 3. Variables y Propiedades de Ítem == | ||
| − | + | Valores accesibles desde el contexto de la plantilla, sin prefijo <code>format:</code>. | |
| − | : | + | |
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Variable / Propiedad !! Contexto !! Descripción | ||
| + | |- | ||
| + | | <code>cantidadFilas</code> || <code><%=</code> / operacion || Cantidad de líneas de productos de un comprobante de venta. | ||
| + | |- | ||
| + | | <code>cantidadProductos</code> || <code><%=</code> / operacion || Total de productos de un comprobante de venta. | ||
| + | |- | ||
| + | | <code>cantidadTroqueles</code> || <code><%#</code> / item_valor || Cantidad de líneas con productos cubiertos en una receta. Se usa para calcular el espacio para pegar troqueles. | ||
| + | |- | ||
| + | | <code>espacioTroquel</code> || operacion/OS || Configuración de la Obra Social. Si imprime troqueles devuelve <code>1</code>, si no devuelve <code>0</code>. | ||
| + | |- | ||
| + | | <code>lineasEnBlancoXcm</code> || parámetro de nodo || Valor del parámetro <code>ESPACIOS_EN_BLANCO_POR_CENTIMETRO</code>. Si no existe, devuelve <code>2.5</code>. | ||
| + | |} | ||
| − | + | === Propiedades SinIvaPlantilla (en <%# item_valor %>) === | |
| − | + | ||
| + | Estos atributos poseen la propiedad de que: | ||
| + | * Si el comprobante '''discrimina IVA''' (Factura o N/C "A"): traen el valor '''sin''' el IVA incluido. | ||
| + | * Si el comprobante '''no discrimina IVA''': devuelven el valor total, con el impuesto acumulado. | ||
| − | + | {| class="wikitable" | |
| − | + | ! Propiedad | |
| + | |- | ||
| + | | <code>descuentoAfiliadoSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>descuentoAfiliadoTotalSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>descuentoConvenioSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>descuentoSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>precioUnitarioSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>recargoConvenioSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>totalSinIvaPlantilla</code> | ||
| + | |} | ||
| + | Métodos asociados: | ||
| − | + | {| class="wikitable" style="width:100%" | |
| − | + | ! Método !! Descripción | |
| − | + | |- | |
| − | + | | <code>obtTotalCubierto1raCoberturaSinIvaPlantilla()</code> || Importe cubierto por la 1ra. cobertura, sin IVA (condicional). | |
| + | |- | ||
| + | | <code>obtTotalCubierto2daCoberturaSinIvaPlantilla()</code> || Importe cubierto por la 2da. cobertura, sin IVA (condicional). | ||
| + | |} | ||
| + | ---- | ||
| − | + | == 4. Funciones format: == | |
| − | + | ||
| + | Implementadas en <code>TemplateUtilVersion1</code>, <code>TemplateUtilVersion2</code>, ..., <code>TemplateUtilVersion5Pdf</code>. | ||
| + | Se invocan con el prefijo <code>format:</code> dentro de las expresiones de plantilla. | ||
| − | + | === format:abonaCon(montoEfectivo, abonaCon, n) === | |
| − | + | Devuelve el primer parámetro mayor que cero, formateado a <code>n</code> decimales. | |
| + | === format:alignRight(titulo, dato) / format:alignRight(titulo, dato, ancho) === | ||
| + | Si los valores no son nulos, devuelve la concatenación de los parámetros. | ||
| + | Imprime <code>titulo</code> y ajusta <code>dato</code> a la derecha del ancho indicado o al del motor. | ||
| + | <pre> | ||
| + | alignRight("Total OSP", "50,12") => "Total OSP____________________50,12" | ||
| + | </pre> | ||
| − | *''' | + | === format:alignRightDtoRgo(titulo, dato) / format:alignRightDtoRgo(template, titulo, dato) === |
| − | : | + | * '''2 params:''' Actúa como <code>alignRight()</code>, pero si <code>dato < 0</code> inserta un signo <code>"-"</code>. |
| + | * '''3 params:''' Igual al anterior, pero agrega un <code>template</code> con términos de reemplazo según <code>reemplazarTexto()</code>. | ||
| + | === format:alltrim(texto) === | ||
| + | Devuelve el texto indicado, borrando los espacios en blanco a izquierda y a derecha. | ||
| − | + | === format:anchopagina() === | |
| − | + | Devuelve la cantidad de caracteres del ancho de la página seteados en el motor. | |
| + | Se utiliza como complemento de otros métodos para alinear impresiones. | ||
| + | <pre> | ||
| + | <%@format:centerpad('--','- RECETA -',format:anchopagina())%> | ||
| + | </pre> | ||
| + | === format:ascii(número) === | ||
| + | Devuelve el código ASCII del número ingresado, convertido en string. | ||
| − | + | === format:avanzarLineas(value) / format:avanzarLineas(value, cantMaximaLineas) === | |
| − | : | + | Agrega la cantidad de líneas en blanco indicada por <code>value</code> (se toma la parte entera). |
| + | El segundo parámetro limita la cantidad máxima de filas a avanzar. | ||
| + | <pre> | ||
| + | <%=format:avanzarLineas(cantidadTroqueles*3)%> | ||
| + | <%=format:avanzarLineas(cantidadTroqueles*3, cantMaximaLineas)%> | ||
| + | </pre> | ||
| + | === format:bigdecimal(value) === | ||
| + | Devuelve el <code>BigDecimal</code> correspondiente al parámetro indicado, contemplando iterables. | ||
| − | + | === format:cgoAfilCob(total, montoCobertura) === | |
| − | :-devuelve | + | * Si existe la Cobertura (<code>montoCobertura > 0</code>): devuelve <code>total - montoCobertura</code>. |
| + | * Si no existe (<code>montoCobertura = 0</code>): devuelve cero (no se imprime ningún dato). | ||
| + | === format:coalesce(value1, value2) === | ||
| + | Devuelve como respuesta el primer parámetro '''no nulo'''. | ||
| − | + | === format:coalesceNum(value1, value2) === | |
| − | + | Devuelve como respuesta el primer parámetro '''no nulo''', en formato numérico. | |
| + | === format:concatenar(nroCampo, strDatos) — forma v1 === | ||
| + | Concatena los valores del string de datos separados por <code>|</code>, ajusta la longitud del campo indicado por el primer parámetro, hasta completar el Ancho Máximo del motor. | ||
| + | <pre> | ||
| + | format:concatenar(2, " 1|ADALAT 30| 44,00| 44,00") | ||
| + | </pre> | ||
| − | + | === format:concatenar(strDatos) — forma v2 === | |
| − | + | Concatena valores separados por <code>|</code>, tomados de a 3, de la forma <code>ajuste<d,i>|longitud|campo</code>. | |
| + | <pre> | ||
| + | format:concatenar("d|20|ADALAT 30|i|12|44,00|i|12|44,00") | ||
| + | => "ADALAT 30__________________44,00_______44,00" | ||
| + | </pre> | ||
| + | === format:concatNoNull(value1, value2) === | ||
| + | Si '''ambos''' parámetros son no nulos, devuelve un String concatenándolos. | ||
| − | + | === format:cortepapel() — plantillas v5 PDF === | |
| − | + | Permite el corte de la impresión del PDF en mitad de la plantilla, tal como se produce en impresoras térmicas o matriciales comunes. | |
| − | : | + | <pre> |
| + | <%=format:cortepapel()%> | ||
| + | </pre> | ||
| + | === format:cpad(texto, longitud [, caracter]) === | ||
| + | Ver <code>format:lpad / rpad / cpad</code>. | ||
| − | + | === format:datoCondicional(condicion, dato) === | |
| − | + | Si se cumple <code>condicion</code>, devuelve <code>dato</code>; sino, un string vacío. | |
| − | : | + | <pre> |
| + | format:datoCondicional((valor/numeroAutorizacion="4"),'A.') => "A." o "" | ||
| + | </pre> | ||
| + | Uso para detectar copia: | ||
| + | <pre> | ||
| + | <%=format:datoCondicional(format:obtNumeroCopia(parametro[1])!="1",'ES COPIA')%> | ||
| + | </pre> | ||
| + | === format:enlazar(strDatos) — forma v1 === | ||
| + | Concatena los 2 valores del string separados por <code>|</code>, ajusta el 1er campo al Ancho Máximo del motor. | ||
| + | <pre> | ||
| + | format:enlazar("A c/Afil. d/aplicar Cob. 1a. :| 40,00") | ||
| + | </pre> | ||
| − | + | === format:enlazar(valor1, valor2) — forma v2 === | |
| − | : | + | Si los valores no son nulos, devuelve la concatenación de ambos parámetros ajustada al ancho de página. |
| − | + | <pre> | |
| − | + | format:enlazar("A c/Afil. d/aplicar Cob. 1ra.: "," 40,00") | |
| + | </pre> | ||
| + | === format:esNulo(value) === | ||
| + | Similar al método <code>isNull()</code>, contemplando iterables. | ||
| − | + | === format:imprimirbarcode(valor [, alineacion]) — plantillas v5 PDF === | |
| − | + | Imprime código de barras con fuente BarCode font. Alineación: <code>'L'</code>/<code>'I'</code> (izquierda, defecto), <code>'R'</code>/<code>'D'</code> (derecha), <code>'C'</code> (centro). | |
| − | + | ||
| − | : | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | === format:imprimircode128(valor [, alineacion]) — plantillas v5 PDF === | ||
| + | Imprime código de barras Code128. | ||
| + | <pre> | ||
| + | <%@format:imprimircode128('1234567890','C')%> | ||
| + | </pre> | ||
| − | + | === format:imprimircode39h(valor [, alineacion]) — plantillas v5 PDF === | |
| − | + | Imprime código de barras Code39 Hoch. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | === format:imprimircode39l(valor [, alineacion]) — plantillas v5 PDF === | ||
| + | Imprime código de barras Code39 Logitogo. | ||
| − | + | === format:imprimirCodigoDeBarras(valor [, alineacion]) — plantillas v5 PDF === | |
| − | + | Selecciona el tipo de código de barras según el parámetro de nodo <code>CODIGO_BARRA_PLANTILLA</code>. | |
| − | + | Formato del parámetro: <code>CODE39H,R</code> (tipo, alineación). Código por defecto: <code>CODE128,C</code>. | |
| − | + | ||
| − | : | + | |
| − | + | ||
| + | === format:imprimirEAN13(valor) — plantillas v5 PDF === | ||
| + | Imprime código EAN-13 (troqueles). | ||
| + | <pre> | ||
| + | <%#format:imprimirEAN13(obtCodigoBarraProducto())%> | ||
| + | </pre> | ||
| − | + | === format:imprimirfree3of9(valor [, alineacion]) — plantillas v5 PDF === | |
| − | + | Imprime código de barras Code 3of9. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | === format:integer(número) === | ||
| + | Devuelve la parte entera del número ingresado, convertida en string. | ||
| − | + | === format:irLinea(número) === | |
| − | + | Avanza la posición a imprimir hasta la línea indicada por el parámetro. | |
| − | + | ||
| + | === format:leftpad / rightpad / centerpad(dato) — 1 parámetro === | ||
| + | Rellena por izquierda / derecha / centra el texto, siempre con espacios en blanco, hasta completar el '''Ancho Máximo''' del motor de impresión. | ||
| − | + | === format:leftpad / rightpad / centerpad(titulo, dato) — 2 parámetros === | |
| − | : | + | * Si <code>dato</code> es nulo: no imprime nada. |
| − | : | + | * Si <code>dato</code> no es nulo: concatena <code>titulo + dato</code> y rellena/centra hasta el '''Ancho Máximo''' del motor. |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | === format:leftpad / rightpad(titulo, dato, número) — 3 parámetros === | ||
| + | * Si <code>dato</code> es nulo: no imprime nada. | ||
| + | * Si <code>dato</code> no es nulo: concatena <code>titulo + dato</code> y rellena hasta '''Ancho Máximo menos <code>número</code>'''. | ||
| − | + | === format:lefttrim(value) === | |
| − | + | Si el valor no es nulo, recorta los espacios en blanco de la '''izquierda'''. | |
| − | + | <pre> | |
| − | + | format:lefttrim(" A cargo Afiliado") => "A cargo Afiliado" | |
| − | + | </pre> | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | === format:len(objeto) === | ||
| + | Devuelve la longitud del dato ingresado, convertido en string. | ||
| − | + | === format:longDate(fecha) === | |
| − | + | Devuelve la fecha en el formato <code>longDate</code> definido en application. | |
| − | + | ||
| + | === format:longDateTime(fecha) === | ||
| + | Devuelve la fecha y hora en el formato <code>dd/mm/yyyy hh:mm:ss</code>, definido en application. | ||
| − | + | === format:lowerCase(value) === | |
| − | + | Devuelve un String con el lower-case del objeto. | |
| − | : | + | <pre> |
| − | + | format:lowerCase('Valor para Cambiar') => 'valor para cambiar' | |
| − | + | </pre> | |
| + | === format:lpad(texto, longitud [, caracter]) / rpad / cpad === | ||
| + | Rellena a izquierda (<code>lpad</code>) / derecha (<code>rpad</code>) / centra (<code>cpad</code>) el texto, hasta la longitud indicada. | ||
| + | * Si <code>longitud < len(texto)</code>: corta el texto. | ||
| + | * Si no se especifica <code>caracter</code>: rellena con espacios. | ||
| + | === format:nonull(objeto) === | ||
| + | * Si el valor no es nulo: imprime su valor string. | ||
| + | * Si el valor es nulo: imprime un string vacío <code>""</code>. | ||
| − | + | === format:noRepetir(nombre, cantidadBase) === | |
| − | : | + | En ocasiones se recibe un nombre o descripción repetido varias veces y se desea mostrar uno solo. |
| + | * <code>nombre</code>: el dato a mostrar. | ||
| + | * <code>cantidadBase</code>: número mínimo de caracteres a mostrar sin repetición (ej: <code>5</code>). | ||
| + | === format:obtCaracterCopia(parametro[1]) === | ||
| + | Registra el carácter de Original/Duplicado/etc. del documento impreso dentro de la secuencia de copias. | ||
| + | <pre> | ||
| + | <%=format:rightpad('ES COMPROBANTE : ',format:obtCaracterCopia(parametro[1]))%> | ||
| + | => ES COMPROBANTE : ORIGINAL | ||
| + | => ES COMPROBANTE : DUPLICADO | ||
| + | => ES COMPROBANTE : TRIPLICADO | ||
| + | </pre> | ||
| − | + | === format:obtcodigo(objeto) === | |
| + | Formatea el objeto (codificación del comprobante <code>0001-0001234</code>) para imprimir como Código de Barras. | ||
| − | == | + | === format:obtcodigosinguion(objeto) === |
| + | Igual que <code>obtcodigo</code> pero sin el guión separador. | ||
| − | + | === format:obtNumeroCopia(parametro[1]) === | |
| + | Registra el número de copia del documento impreso dentro de la secuencia de copias. | ||
| + | <pre> | ||
| + | <%=format:rightpad('COPIA NUMERO : ',format:obtNumeroCopia(parametro[1]))%> | ||
| + | => COPIA NUMERO : 1 / 2 / 3 | ||
| + | </pre> | ||
| − | + | === format:obtTipoComprobante(tipoOperacion) === | |
| − | + | Dado el tipo de operación, devuelve un string con el respectivo tipo de comprobante. | |
| + | <pre> | ||
| + | format:obtTipoComprobante(obtTipoOperacion()) => "FACTURA", "TICKET", etc. | ||
| + | </pre> | ||
| + | === format:param(value) === | ||
| + | Devuelve un String con el valor de un '''parámetro general''', dado su nombre. | ||
| + | <pre> | ||
| + | format:param('IMPRIMIR_DATOS_PRESCRIPCION') => 'true' o 'false' | ||
| + | </pre> | ||
| − | + | === format:reemplazarParametro(linea, args[]) === | |
| − | + | Reemplaza los parámetros de <code>linea</code> por los métodos indicados en <code>args</code>. | |
| + | El <code>render()</code> (v4 en adelante) puede recibir una lista de parámetros desde el programa. | ||
| + | <pre> | ||
| + | args[1] = "separador()"; | ||
| + | args[2] = "cortepapel()"; | ||
| + | <%=format:parametro[2]%> => <%=format:separador()%> | ||
| + | </pre> | ||
| − | + | === format:reemplazarTexto(titulo, template) === | |
| − | : | + | Devuelve un texto donde se reemplazó el <code>titulo</code> de acuerdo al patrón <code>template</code>. |
| − | :: | + | Los patrones se separan por <code>|</code> en pares <code>buscar|reemplazar</code>. |
| + | <pre> | ||
| + | titulo: "RECARGO POR FORMA DE PAGO EFECTIVO POS" | ||
| + | template: "DESC.||RECARGO|DIF.PRC.| POR|POR|FORMA||DE || PAGO|PAGO EN|POS||*|" | ||
| + | resultado: "DIF.PRC.POR PAGO EN EFECTIVO" | ||
| + | </pre> | ||
| + | === format:redondear(value, decimales, modo) === | ||
| + | Devuelve un String del parámetro <code>value</code>. Si es numérico, aplica el redondeo indicado. | ||
| + | <pre> | ||
| + | value=123.6977887, decimales=0, modo="up" | ||
| + | format:redondear(value, 0, "up") => "124" | ||
| + | </pre> | ||
| − | + | === format:righttrim(value) === | |
| − | : | + | Si el valor no es nulo, recorta los espacios en blanco de la '''derecha'''. |
| − | + | <pre> | |
| + | format:righttrim("A cargo Afiliado ") => "A cargo Afiliado" | ||
| + | </pre> | ||
| + | === format:roundingUP(value) === | ||
| + | Devuelve un String del parámetro <code>value</code>. Si es numérico, devuelve el entero mayor (redondeo hacia arriba). | ||
| + | <pre> | ||
| + | value=5895.195741 | ||
| + | format:roundingUP(value) => "5.896" | ||
| + | </pre> | ||
| − | + | === format:semianchopagina() === | |
| − | + | Devuelve la '''mitad''' de los caracteres del ancho de página del motor. | |
| − | :: | + | Se usa como complemento para alinear impresiones en doble ancho. |
| + | <pre> | ||
| + | <%@format:textodobleancho(format:separador(obtNombreObraSocial(),'- RECETA -',format:semianchopagina()))%> | ||
| + | </pre> | ||
| + | === format:separador() — sin parámetros === | ||
| + | Imprime una línea separadora de caracteres <code>---...---</code> hasta el Ancho Máximo del motor. | ||
| − | + | === format:separador(dato) — 1 parámetro === | |
| − | + | Imprime el separador <code>---...---</code> solo si <code>dato</code> no es nulo. | |
| − | + | ||
| + | === format:separador(dato, titulo) — 2 parámetros === | ||
| + | Imprime el separador con <code>titulo</code> centrado, solo si <code>dato</code> no es nulo. | ||
| + | <pre> | ||
| + | <%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre,'- BONO -')%> | ||
| + | => ---------- BONO ---------- | ||
| + | </pre> | ||
| − | + | === format:separador(dato, titulo, anchoTexto) — 3 parámetros === | |
| − | + | Igual al anterior, pero el ancho total lo define <code>anchoTexto</code> en lugar del motor. | |
| − | : | + | <pre> |
| + | <%@format:separador(operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre,'- RECETA -',24)%> | ||
| + | => -------- RECETA -------- | ||
| + | </pre> | ||
| + | === format:separadorDoble() === | ||
| + | Imprime una línea separadora de caracteres <code>===...===</code> hasta el Ancho Máximo del motor. | ||
| − | + | === format:shortDate(fecha) === | |
| − | + | Devuelve la fecha en el formato <code>shortDate</code> definido en application. | |
| − | + | ||
| + | === format:string(objeto) === | ||
| + | Convierte cualquier tipo de dato en string. | ||
| − | + | === format:stringData(value) === | |
| − | : | + | Devuelve el parámetro sin puntos <code>"."</code>. |
| + | <pre> | ||
| + | format:stringData("1.235.459,78") => "1235459,78" | ||
| + | </pre> | ||
| + | === format:stringDataNoVacio(value) === | ||
| + | Devuelve el parámetro sin puntos <code>"."</code>. Si <code>value</code> es <code>null</code>, devuelve <code>"0,00"</code>. | ||
| − | + | === format:stringNoVacio(número) === | |
| − | + | Devuelve el número ingresado convertido en string. Si el valor es nulo, devuelve <code>"0,00"</code>. | |
| + | === format:stringNoVacioDto(número) === | ||
| + | Devuelve el número ingresado convertido en string. Si el valor es nulo, devuelve <code>"-0,00"</code>. | ||
| − | + | === format:stringtransf(objeto1, objeto2, objeto3) === | |
| − | + | Devuelve <code>objeto1</code>, donde las ocurrencias de <code>objeto2</code> son reemplazadas por <code>objeto3</code>. | |
| − | + | Internamente usa <code>StringUtils.replace()</code>. | |
| − | + | ||
| − | == | + | === format:textodobleancho(objeto) — plantillas v5 PDF === |
| + | Imprime con letra expandida a lo ancho. Equivalente al comando de dispositivo <code>textodobleancho()</code> pero usable como wrapper en plantillas PDF. | ||
| + | <pre> | ||
| + | <%@format:textodobleancho(format:separador(obtNombreObraSocial(),'- RECETA -',format:semianchopagina()))%> | ||
| + | </pre> | ||
| − | + | === format:unirtodo(titulo, subtitulo, dato) / format:unirtodo(titulo, subtitulo, dato, ancho) === | |
| − | + | Si los valores no son nulos, devuelve la concatenación de los parámetros. | |
| + | Ajusta <code>titulo + dato</code> al ancho indicado o al del motor. | ||
| + | === format:unirtodo(dato1, dato2) — 2 parámetros === | ||
| + | Devuelve la concatenación '''incondicional''' de ambos parámetros. | ||
| − | + | === format:upperCase(value) === | |
| − | + | Devuelve un String con el upper-case del objeto. | |
| + | <pre> | ||
| + | format:upperCase('Valor para Cambiar') => 'VALOR PARA CAMBIAR' | ||
| + | </pre> | ||
| + | === format:vuelto(montoEfectivo, abonaCon, n) === | ||
| + | Devuelve <code>(abonaCon - montoEfectivo)</code> o cero, formateado a <code>n</code> decimales. | ||
| − | + | ---- | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | == 5. Pseudo-métodos obt*() — TemplateUtil.java == | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | Organizados por entidad. La columna '''Función''' indica el tag de contexto, '''Tabla''' la tabla de origen y '''Atributo''' el XPath equivalente. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | === Afiliado === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtNombreAfiliado()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtNumeroAfiliado()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado</code> |
| − | + | |} | |
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | === Bono === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtAcumuladoBono()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtNombreBono()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtPuntajeBono()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=500 and subTipoValorCpto/visiblePos=1]/monto</code> |
| − | + | |} | |
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | === Cheque / CH Terceros === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDescuentoChequeTerceros()</code> || <code><%&</code> || operacionesValor || <code>operacionesValor[valor/tipoValor/id=5 and valor/anulacion!='A']/valor/descuentoFPPlantilla</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtImporteFormaPagoChequeTerceros()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtImporteFormaPagoChequeTercerosVenta()</code> || <code><%&</code> || operacionesValor || <code>sum(valor[tipoValor/id=5 and anulacion!='A']/montoPrincipal)</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtNombreFormaPagoChequeTerceros()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=5]/entidad/nombre</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtRecargoChequeTerceros()</code> || <code><%&</code> || operacionesValor || <code>operacionesValor[valor/tipoValor/id=5 and valor/anulacion!='A']/valor/recargoFPPlantilla</code> |
| − | | | + | |} |
| − | | | + | |
| − | | | + | |
| − | + | ||
| − | + | === Cliente === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtApellidoCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/apellido</code> |
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtCodigoCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/codigo</code> |
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtCuitCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/cuit</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtDireccion1Cliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/direcciones[1]</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtEntreCallesCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/entreCalle</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtNombreCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/nombre</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtObservacionCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/observacion</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtObservacionesCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/observaciones</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtObservacionesCliente1raLinea()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/observacionesCliente1raLinea</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtObservacionesCliente2daLinea()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/observacionesCliente2daLinea</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtObservacionesCliente3raLinea()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/observacionesCliente3raLinea</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtRazonSocialCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/razonSocial</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtSituacionIvaCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/objSituacionIVA/nombre</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtTelefonoCliente()</code> || <code><%=</code> || operacion_valor || <code>valor/entidad/telefonosConcatenados</code> |
| − | + | ||
| − | + | ||
| − | | | + | |
| − | | | + | |
| − | + | ||
|} | |} | ||
| − | == | + | ==== Cliente (eventual) ==== |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDocumentoClienteEven()</code> || <code><%=</code> || operacion_valor || <code>valor/documentoCliente</code> |
| + | |- | ||
| + | | <code>obtDomicilioClienteEven()</code> || <code><%=</code> || operacion_valor || <code>valor/domicilioCliente</code> | ||
| + | |- | ||
| + | | <code>obtNombreClienteEven()</code> || <code><%=</code> || operacion_valor || <code>valor/nombreCliente</code> | ||
| + | |} | ||
| − | + | ==== Cliente (secundario) ==== | |
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtNombreClienteSecundario()</code> || <code><%=</code> || operacion_valor || <code>valor/entidadSecundaria/nombre</code> |
| + | |} | ||
| − | + | ==== Cliente Envío ==== | |
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDireccionEnvio()</code> || <code><%=</code> || operacion_valor || <code>valor/direccionSeleccionada</code> |
| − | | | + | |- |
| − | | | + | | <code>obtObservacionEnvio()</code> || <code><%=</code> || operacion_valor || <code>valor/observaciones</code> |
| − | | | + | |- |
| − | + | | <code>obtTelefonoEnvio()</code> || <code><%=</code> || operacion_valor || <code>valor/telefonoSeleccionado</code> | |
| − | + | |} | |
| − | + | === Convenio === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDescuentoConvenio()</code> || <code><%&</code> || operacionesValor || <code>operacionesValor[valor/tipoValor/id=211 and valor/anulacion!='A']/valor/descuentoFPPlantilla</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtDtoGeneralConvenio()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=211]/valor/descuentoGeneral</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtImporteFormaPagoConvenio()</code> || <code><%=</code> || operacion_valor || <code>sum(valor[tipoValor/id=211]/montoPrincipal)</code> |
| + | |- | ||
| + | | <code>obtImporteFormaPagoConvenioVenta()</code> || <code><%&</code> || operacionesValor || <code>valor[tipoValor/id=211 and anulacion!='A']/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtNombreFormaPagoConvenio()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=211]/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtRecargoConvenio()</code> || <code><%&</code> || operacionesValor || <code>operacionesValor[valor/tipoValor/id=211 and valor/anulacion!='A']/valor/recargoFPPlantilla</code> | ||
| + | |} | ||
| − | + | === Cuenta Corriente === | |
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDescuentoCtaCte()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=22 and valor/anulacion!='A']/valor/descuentoFPPlantilla</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtDtoGeneralCtaCte()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=22]/valor/descuentoGeneral</code> |
| + | |- | ||
| + | | <code>obtImporteFormaPagoCtaCte()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtImporteFormaPagoCtaCteVenta()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=22 and valor/anulacion!='A']/valor/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtRecargoCtaCte()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=22 and valor/anulacion!='A']/valor/recargoFPPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSaldoActual()</code> || <code><%@</code> || operacion || <code>operacionesValor/saldoActualComprobante</code> | ||
| + | |- | ||
| + | | <code>obtSaldoActualMasVenta()</code> || <code><%@</code> || operacion || <code>operacionesValor/saldoActualMasVenta</code> | ||
| + | |} | ||
| − | + | ==== Cuota Cuenta Corriente ==== | |
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDescuentoCuotasCtaCte()</code> || <code><%&</code> || operacionesValor || <code>valor[tipoValor/id=21 and anulacion!='A']/valor/descuentoFPPlantilla</code> |
| + | |- | ||
| + | | <code>obtDtoGeneralCuotaCtaCte()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=21]/valor/descuentoGeneral</code> | ||
| + | |- | ||
| + | | <code>obtImporteFormaPagoCuotaCteCte()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtImporteFormaPagoCuotaCteCteVenta()</code> || <code><%&</code> || operacionesValor || <code>sum(valor[tipoValor/id=21 and anulacion!='A']/montoPrincipal)</code> | ||
| + | |- | ||
| + | | <code>obtNombreFormaPagoCuotaCteCte()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=21]/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtRecargoCuotasCtaCte()</code> || <code><%&</code> || operacionesValor || <code>valor[tipoValor/id=21 and anulacion!='A']/valor/recargoFPPlantilla</code> | ||
| + | |} | ||
| − | + | === Efectivo === | |
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtDescuentoEfectivo()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=3 and valor/anulacion!='A']/valor/descuentoFPPlantilla</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtImporteFormaPagoEfectivo()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtImporteFormaPagoEfectivoVenta()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=3 and valor/anulacion!='A']/valor/montoPrincipal</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtRecargoEfectivo()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=3 and valor/anulacion!='A']/valor/recargoFPPlantilla</code> |
| + | |} | ||
| − | + | === Factura Electrónica (Referencias Electrónicas) === | |
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
|- | |- | ||
| − | | | + | | <code>obtFechaAdicional()</code> || <code><%=</code> || operacion_valor || <code>valor/fechaAdicional</code> |
| − | | | + | |
| − | | | + | |
| − | + | ||
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtFechaReferenciaElectronica()</code> || <code><%=</code> || operacion_valor || <code>valor/fechaAutorizacion</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtFechaVencimiento()</code> || <code><%=</code> || operacion_valor || <code>valor/fechaVencimiento</code> |
| − | | | + | |
| − | | | + | |
| − | | | + | |
| − | + | ||
|- | |- | ||
| − | | | + | | <code>obtFormaAutorizacionFE()</code> || <code><%=</code> || operacion_valor || <code>valor/formaAutorizacion</code> |
| − | | | + | |- |
| − | | | + | | <code>obtMarcaCAEA()</code> || <code><%=</code> || operacion_valor || <code>valor/marcaCAEA</code> |
| − | | | + | |- |
| − | + | | <code>obtReferenciaElectronica()</code> || <code><%=</code> || operacion_valor || <code>valor/numeroAutorizacion</code> | |
|} | |} | ||
| + | Ejemplo de uso para C.A.E. / C.A.E.A.: | ||
| + | <pre> | ||
| + | <%=format:separador(obtReferenciaElectronica(),'--- REFERENCIA ELECTRONICA ---')%> | ||
| + | <%=concat(format:enlazar(concat('C.A.E.',format:string(obtMarcaCAEA())),': ', | ||
| + | format:rpad(obtReferenciaElectronica(),15),25), | ||
| + | format:rightpad('Vto.:',format:rpad(format:shortDate(obtFechaAdicional()),11)))%> | ||
| + | <%=format:separador()%> | ||
| + | </pre> | ||
| − | == | + | === Farmacia (Nodo) === |
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Método !! Función !! Tabla !! Atributo | ||
| + | |- | ||
| + | | <code>obtCuitFarmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/cuit</code> | ||
| + | |- | ||
| + | | <code>obtDireccion0Farmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/direcciones[0]</code> | ||
| + | |- | ||
| + | | <code>obtDireccion1Farmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/direcciones[1]</code> | ||
| + | |- | ||
| + | | <code>obtFechaInicioActividades()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/inicioDeActividades</code> | ||
| + | |- | ||
| + | | <code>obtIngresosBrutosFarmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/ingresosBrutos</code> | ||
| + | |- | ||
| + | | <code>obtRazonSocialFarmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/razonSocial</code> | ||
| + | |- | ||
| + | | <code>obtRazonSocialFarmaciaLinea2()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/razonSocialLinea2</code> | ||
| + | |- | ||
| + | | <code>obtSituacionIvaFarmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/objSituacionIVA/nombre</code> | ||
| + | |- | ||
| + | | <code>obtTelefono0Farmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/telefonos[0]/numero</code> | ||
| + | |- | ||
| + | | <code>obtTelefono1Farmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/telefonos[1]/numero</code> | ||
| + | |- | ||
| + | | <code>obtTelefonoFarmacia()</code> || <code><%=</code> || operacion_valor || <code>valor/nodoCreacion/telefonosConcatenados</code> | ||
| + | |} | ||
| + | === Producto / Ítem === | ||
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Método !! Función !! Tabla !! Atributo | ||
| + | |- | ||
| + | | <code>obtCodigoBarraProducto()</code> || <code><%#</code> || item_valor || <code>producto/codigoBarra</code> | ||
| + | |- | ||
| + | | <code>obtNombreProducto()</code> || <code><%#</code> || item_valor || <code>producto/nombreCorto</code> | ||
| + | |} | ||
| − | + | Descuentos de ítem (propiedades directas, sin método): | |
| − | + | ||
| − | : | + | |
| + | {| class="wikitable" | ||
| + | ! Propiedad !! Descripción | ||
| + | |- | ||
| + | | <code>descuento</code> || Descuento de ítem | ||
| + | |- | ||
| + | | <code>descuentoAfiliado</code> || Descuento Automático/Forzado | ||
| + | |- | ||
| + | | <code>descuentoGeneral</code> || Descuento General (manual) | ||
| + | |} | ||
| − | + | === Prototipos / Datos Adicionales === | |
| − | + | {| class="wikitable" style="width:100%" | |
| − | : | + | ! Método / Propiedad !! Contexto !! Descripción |
| − | + | |- | |
| − | + | | <code>obtCabeceraDatoCodificado()</code> || <code><%+</code> || Dato codificado de prototipos de cabecera | |
| − | + | |- | |
| + | | <code>obtCabeceraNombreDatoCodificado()</code> || <code><%+</code> || Nombre del dato codificado de prototipos de cabecera | ||
| + | |- | ||
| + | | <code>obtDatoCodificado()</code> || <code><%+</code> || Dato codificado del prototipo (<code>dato</code>) | ||
| + | |- | ||
| + | | <code>obtNombreDatoCodificado()</code> || <code><%+</code> || <code>prototipoDetalle/datoCodificado/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombreDePrototipoDetalle()</code> || <code><%+</code> || <code>prototipoDetalle/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombrePrototipoDePrototipoDatoAdicional()</code> || <code><%+</code> || <code>prototipoDatoAdicional/prototipo/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombrePrototipoDePrototipoDetalle()</code> || <code><%+</code> || <code>prototipoDetalle/prototipo/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNumeroLineaDePrototipoDatoAdicional()</code> || <code><%+</code> || <code>prototipoDatoAdicional/numeroLinea</code> | ||
| + | |- | ||
| + | | <code>obtPieDatoCodificado()</code> || <code><%+</code> || Dato codificado de prototipos de pie de página | ||
| + | |- | ||
| + | | <code>obtPieNombreDatoCodificado()</code> || <code><%+</code> || Nombre del dato codificado de prototipos de pie de página | ||
| + | |} | ||
| + | === Puesto de Venta === | ||
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Método !! Función !! Tabla !! Atributo | ||
| + | |- | ||
| + | | <code>obtPuestoVenta()</code> || <code><%=</code> || operacion_valor || <code>operacion/puestoVenta/nombre</code> | ||
| + | |} | ||
| − | + | === Receta / Cobertura / Obra Social === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
| + | |- | ||
| + | | <code>obtAutorizacionObraSocial()</code> || <code><%=</code> || operacion_valor || <code>operacionesValor[valor/tipoValor/id=2]/valor/numeroAutorizacion</code> | ||
| + | |- | ||
| + | | <code>obtCodigoFarmaciaOS()</code> || <code><%=</code> || operacion_valor || — | ||
| + | |- | ||
| + | | <code>obtCodigoFarmacia1raOS()</code> … <code>obtCodigoFarmacia7maOS()</code> || <code><%=</code> || operacion_valor || — | ||
| + | |- | ||
| + | | <code>obtDtoGeneralBono()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=1]/valor/descuentoGeneral</code> | ||
| + | |- | ||
| + | | <code>obtDtoGeneralReceta()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=2]/valor/descuentoGeneral</code> | ||
| + | |- | ||
| + | | <code>obtFechaReceta()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=2]/fechaEmision</code> | ||
| + | |- | ||
| + | | <code>obtImporteCobertura()</code> || <code><%&</code> || operacionesValor || <code>valor[tipoValor/id=2 and anulacion!='A']/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtImporteFormaPagoObraSocial()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtImporteReceta()</code> || <code><%&</code> || operacionesValor || <code>valor[tipoValor/id=2 and anulacion!='A']/itemsConvenio/descuentoAfiliado</code> | ||
| + | |- | ||
| + | | <code>obtNombre1raCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio1raCobertura/convenio/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre1raObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio1raCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre2daCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio2daCobertura/convenio/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre2daObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio2daCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre3raCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio3raCobertura/convenio/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre3raObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio3raCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre4taObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio4taCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre5taObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio5taCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre6taObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio6taCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre7maObraSocial()</code> || <code><%#</code> || item_valor || <code>itemConvenio7maCobertura/convenio/obraSocial/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombreCobertura()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=2]/entidad/obraSocial/nombreCorto</code> | ||
| + | |- | ||
| + | | <code>obtNombreLargoCobertura()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=2]/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombreObraSocial()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNumeroCobertura()</code> || <code><%=</code> || operacion_valor || <code>.[valor/tipoValor/id=2]/numeroCobertura</code> | ||
| + | |- | ||
| + | | <code>obtNumeroCoberturaVenta()</code> || <code><%&</code> || operacionesValor || <code>.[valor/tipoValor/id=2 and valor/anulacion!='A']/numeroCobertura</code> | ||
| + | |- | ||
| + | | <code>obtNumeroReceta()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=2]/codificacion</code> | ||
| + | |- | ||
| + | | <code>obtPorcentaje1raCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio1raCobertura/porcentajeCobertura</code> | ||
| + | |- | ||
| + | | <code>obtPorcentaje2daCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio2daCobertura/porcentajeCobertura</code> | ||
| + | |- | ||
| + | | <code>obtPorcentaje3raCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio3raCobertura/porcentajeCobertura</code> | ||
| + | |- | ||
| + | | <code>obtRecetaImporteDescuento()</code> || <code><%#</code> || item_valor || <code>itemsReceta/descuento</code> | ||
| + | |- | ||
| + | | <code>obtRecetaPorcentajeCobertura()</code> || <code><%#</code> || item_valor || <code>itemsReceta/porcentajeCobertura</code> | ||
| + | |- | ||
| + | | <code>obtRecetaPrecioUnitario()</code> || <code><%#</code> || item_valor || <code>producto/codigoBarra</code> | ||
| + | |- | ||
| + | | <code>obtSaldoAfiliado()</code> || <code><%=</code> || operacion_valor || <code>.[valor/tipoValor/id=2]/saldoAfiliado</code> | ||
| + | |- | ||
| + | | <code>obtSaldoAfiliadoVenta()</code> || <code><%&</code> || operacionesValor || <code>.[valor/tipoValor/id=2 and valor/anulacion!='A']/saldoAfiliadoSinDto</code> | ||
| + | |- | ||
| + | | <code>obtSumaMontoTotalCubierto()</code> || <code><%#</code> || item_valor || <code>sum(itemsReceta/montoTotalCubierto)</code> | ||
| + | |- | ||
| + | | <code>obtTotalCubierto1raCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio1raCobertura/montoTotalCubierto</code> | ||
| + | |- | ||
| + | | <code>obtTotalCubierto2daCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio2daCobertura/montoTotalCubierto</code> | ||
| + | |- | ||
| + | | <code>obtTotalCubierto3raCobertura()</code> || <code><%#</code> || item_valor || <code>itemConvenio3raCobertura/montoTotalCubierto</code> | ||
| + | |} | ||
| − | + | ==== Convenios de Ítem ==== | |
| − | + | {| class="wikitable" style="width:100%" | |
| − | + | ! Método !! Función !! Tabla !! Atributo | |
| − | + | |- | |
| − | + | | <code>obtNombre1erConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio1/valor/subTipoValor/nombre</code> | |
| − | + | |- | |
| + | | <code>obtNombre2doConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio2/valor/subTipoValor/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre3erConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio3/valor/subTipoValor/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre4toConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio4/valor/subTipoValor/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombre5toConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio5/valor/subTipoValor/nombre</code> | ||
| + | |- | ||
| + | | <code>obtSumaDescuentos1erConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio1/sumaDescuentosSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaDescuentos2doConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio2/sumaDescuentosSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaDescuentos3erConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio3/sumaDescuentosSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaDescuentos4toConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio4/sumaDescuentosSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaDescuentos5toConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio5/sumaDescuentosSinIvaPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaRecargos1erConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio1/rgoConvenioSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaRecargos2doConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio2/rgoConvenioSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaRecargos3erConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio3/rgoConvenioSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaRecargos4toConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio4/rgoConvenioSinIVAPlantilla</code> | ||
| + | |- | ||
| + | | <code>obtSumaRecargos5toConvenio()</code> || <code><%#</code> || item_valor || <code>itemConvenio5/rgoConvenioSinIVAPlantilla</code> | ||
| + | |} | ||
| + | ==== Receta Digital — Datos Originales de Prescripción ==== | ||
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Propiedad / Método !! Contexto !! Descripción | ||
| + | |- | ||
| + | | <code>cantidadPrescripta</code> || <code><%#</code> item_valor || Cantidad prescripta por el profesional | ||
| + | |- | ||
| + | | <code>productoPrescrito/descripcion</code> || <code><%#</code> item_valor || Nombre del producto prescrito (Receta Digital) | ||
| + | |- | ||
| + | | <code>prescripcionMedica</code> || <code><%#</code> item_valor || Nombre de la droga prescrita | ||
| + | |- | ||
| + | | <code>descripcionRecetaDigital</code> || <code><%#</code> item_valor || Descripción combinada (alias de acceso) | ||
| + | |} | ||
| − | : | + | Ejemplo de uso con impresión opcional (controlada por parámetro): |
| − | + | <pre> | |
| − | : | + | <%#concat( |
| − | :: | + | format:datoCondicional( |
| − | :: | + | (format:param('IMPRIMIR_DATOS_PRESCRIPCION')='true') and |
| + | (format:coalesce(productoPrescrito/descripcion,prescripcionMedica)!=), | ||
| + | format:concatenar(2,concat( | ||
| + | format:rpad(format:integer(cantidadPrescripta),2),'|', | ||
| + | format:rpad(format:coalesce(productoPrescrito/descripcion,prescripcionMedica),30) | ||
| + | )) | ||
| + | ) | ||
| + | )%> | ||
| + | </pre> | ||
| + | === Recargos y Descuentos de Tarjeta (DtoRgo) === | ||
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Método !! Descripción | ||
| + | |- | ||
| + | | <code>obtDescuentoTarjeta()</code> || Descuento por forma de pago Tarjeta en Venta | ||
| + | |- | ||
| + | | <code>obtEntidadDtoRgoTarjeta()</code> || Nombre de la entidad para Recargos/Descuentos de Tarjeta (v2) | ||
| + | |- | ||
| + | | <code>obtNombreDtoRgoTarjeta()</code> || Nombre descriptivo para Recargos/Descuentos de Tarjeta (v1) | ||
| + | |- | ||
| + | | <code>obtNombreFormaPagoTarjeta()</code> || Nombre de la forma de pago de la Tarjeta | ||
| + | |- | ||
| + | | <code>obtRecargoTarjeta()</code> || Recargo por forma de pago Tarjeta en Venta | ||
| + | |} | ||
| − | + | === Tarjeta === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Método !! Función !! Tabla !! Atributo | ||
| + | |- | ||
| + | | <code>obtDtoGeneralTarjeta()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=9]/valor/descuentoGeneral</code> | ||
| + | |- | ||
| + | | <code>obtImporteFormaPagoTarjeta()</code> || <code><%=</code> || operacion_valor || <code>sum(valor[tipoValor/id=9]/montoPrincipal)</code> | ||
| + | |- | ||
| + | | <code>obtImporteFormaPagoTarjetaVenta()</code> || <code><%&</code> || operacionesValor || <code>.[valor/tipoValor/id=9 and valor/anulacion!='A']/montoPrincipal</code> | ||
| + | |- | ||
| + | | <code>obtNombreFormaPagoTarjeta()</code> || <code><%=</code> || operacion_valor || <code>valor[tipoValor/id=9]/entidadSaldable/nombre</code> | ||
| + | |- | ||
| + | | <code>obtNombrePlanPagoTarjeta()</code> || <code><%&</code> || operacionesValor || <code>.[valor/tipoValor/id=9]/planPago/nombre</code> | ||
| + | |} | ||
| − | + | === Valor / Comprobante === | |
| − | : | + | {| class="wikitable" style="width:100%" |
| − | + | ! Método !! Función !! Tabla !! Atributo | |
| − | + | |- | |
| − | + | | <code>obtDtoGeneral()</code> || <code><%@</code> || operacion || <code>comprobante/descuentoGeneral</code> | |
| − | + | |- | |
| − | + | | <code>obtDtoGeneralChequePropio()</code> || <code><%@</code> || operacion || <code>operacionesValor[valor/tipoValor/id=4]/valor/descuentoGeneral</code> | |
| + | |- | ||
| + | | <code>obtFechaCreacion()</code> || <code><%=</code> || operacion_valor || <code>valor/fechaCreacion</code> | ||
| + | |- | ||
| + | | <code>obtFechaEmision()</code> || <code><%=</code> || operacion_valor || <code>valor/fechaEmision</code> | ||
| + | |- | ||
| + | | <code>obtImpuestosProductosExentos()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[contains('1703 1783',subTipoValorCpto/id) and valor/letraFactura='A']/monto</code> | ||
| + | |- | ||
| + | | <code>obtImpuestosProductosIVA1050()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[contains('1705 1785',subTipoValorCpto/id) and valor/letraFactura='A']/monto</code> | ||
| + | |- | ||
| + | | <code>obtImpuestosProductosIVA2100()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[contains('1706 1786',subTipoValorCpto/id) and valor/letraFactura='A']/monto</code> | ||
| + | |- | ||
| + | | <code>obtImpuestosProductosIVA2700()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[contains('2287 2284',subTipoValorCpto/id) and valor/letraFactura='A']/monto</code> | ||
| + | |- | ||
| + | | <code>obtLetraFactura()</code> || <code><%=</code> || operacion_valor || <code>valor/letraFactura</code> | ||
| + | |- | ||
| + | | <code>obtNumeroComprobante()</code> || <code><%=</code> || operacion_valor || <code>valor/codificacion</code> | ||
| + | |- | ||
| + | | <code>obtPercepcionesIngresosBrutos()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto</code> | ||
| + | |- | ||
| + | | <code>obtPrecioFinal()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto</code> | ||
| + | |- | ||
| + | | <code>obtPrecioFinalTodoCte()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto</code> | ||
| + | |- | ||
| + | | <code>obtTipoOperacion()</code> || <code><%=</code> || operacion_valor || <code>operacion/tipoOperacion</code> | ||
| + | |- | ||
| + | | <code>obtTotalExento()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto</code> | ||
| + | |- | ||
| + | | <code>obtTotalGravado()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[subTipoValorCpto/concepto/id=541]/monto</code> | ||
| + | |- | ||
| + | | <code>obtTotalPercepcionesIIBB()</code> || <code><%=</code> || operacion_valor || <code>valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto</code> | ||
| + | |- | ||
| + | | <code>obtValorCteFechaEmision()</code> || <code><%=</code> || operacion_valor || <code>valor/comprobante/fechaEmision</code> | ||
| + | |- | ||
| + | | <code>obtValorCteNumero()</code> || <code><%=</code> || operacion_valor || <code>valor/comprobante/codificacion</code> | ||
| + | |- | ||
| + | | <code>obtValorCteVendedor()</code> || <code><%=</code> || operacion_valor || <code>valor/comprobante/objusuariocreacion/alias</code> | ||
| + | |- | ||
| + | | <code>obtValorMontoPrincipal()</code> || <code><%=</code> || operacion_valor || <code>valor/montoPrincipal</code> | ||
| + | |} | ||
| + | === Vendedor === | ||
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Método !! Función !! Tabla !! Atributo | ||
| + | |- | ||
| + | | <code>obtVendedor()</code> || <code><%=</code> || operacion_valor || <code>valor/objUsuarioCreacion/alias</code> | ||
| + | |} | ||
| − | + | === Liquidaciones (Plantillas v4) === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | Sin método <code>obt*</code> definido — acceso directo por XPath. | ||
| − | + | {| class="wikitable" style="width:100%" | |
| + | ! Atributo !! Función !! Tabla !! Descripción | ||
| + | |- | ||
| + | | <code>entidadLiquidacion</code> || <code><%@</code> || operacion_valor || Nombre del cliente del recibo | ||
| + | |- | ||
| + | | <code>fechaLiquidacion</code> || <code><%@</code> || operacion_valor || Fecha de liquidación | ||
| + | |- | ||
| + | | <code>codificacion</code> || <code><%*</code> || item_liquidacion || Número del comprobante | ||
| + | |- | ||
| + | | <code>entidad</code> || <code><%*</code> || item_liquidacion || Nombre del cliente | ||
| + | |- | ||
| + | | <code>fechaEmision</code> || <code><%*</code> || item_liquidacion || Fecha de emisión del comprobante | ||
| + | |- | ||
| + | | <code>fechaVencimiento</code> || <code><%*</code> || item_liquidacion || Fecha de vencimiento de la cuota | ||
| + | |- | ||
| + | | <code>monto</code> || <code><%*</code> || item_liquidacion || Importe de la cuota | ||
| + | |- | ||
| + | | <code>subTipoValorCpto/nombre</code> || <code><%$</code> || conceptos || Concepto total de liquidación | ||
| + | |- | ||
| + | | <code>monto</code> || <code><%$</code> || conceptos || Importe total de liquidación | ||
| + | |} | ||
| − | + | ---- | |
| + | == 6. Funciones JXPath == | ||
| − | + | Funciones XPath estándar disponibles en las expresiones de plantilla. | |
| − | + | {| class="wikitable" style="width:100%" | |
| − | : | + | ! Función !! Descripción |
| − | + | |- | |
| − | + | | <code>abs(object)</code> || Devuelve el valor absoluto del argumento numérico. ''(Plantillas v4)'' | |
| − | + | |- | |
| − | + | | <code>concat(string, string, ...)</code> || Devuelve la concatenación de sus argumentos. | |
| + | |- | ||
| + | | <code>sum(node-set)</code> || Devuelve la suma de los valores de los nodos del set, convertidos a número. | ||
| + | |} | ||
| + | ---- | ||
| − | + | == 7. Tabla de Caracteres Especiales == | |
| − | + | Para la obtención de la sintaxis completa de comandos, referirse a los manuales de cada modelo de impresora. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | {| class="wikitable" style="width:100%" | ||
| + | ! Modelos !! Hex / Unicode !! ASCII !! Descripción | ||
| + | |- | ||
| + | | Bematech, Epson || <code>\u001B</code> || ESC || Inicio de comando (protocolo) | ||
| + | |- | ||
| + | | Bematech, Epson || <code>\u001B@</code> || ESC @ || Inicializa la impresora | ||
| + | |- | ||
| + | | Bematech || <code>\u001Btn</code> || ESC t n || Selecciona página de código: n=2 (850), n=3 (437), n=4 (860), n=5 (858) | ||
| + | |- | ||
| + | | Bematech || <code>\u001Bln</code> || ESC l n || Programa el margen izquierdo para la columna n | ||
| + | |- | ||
| + | | Epson || <code>\u001Bl</code> || ESC l || Posiciona margen izquierdo | ||
| + | |- | ||
| + | | Bematech, Epson || <code>\u000E</code> || SO || Selecciona expandido por una línea | ||
| + | |- | ||
| + | | Bematech || <code>\u0014</code> || DC4 || Cancela modo expandido de una línea | ||
| + | |- | ||
| + | | Bematech, Epson || <code>\u000F</code> || SI || Selecciona modo condensado | ||
| + | |- | ||
| + | | Bematech, Epson || <code>\u0012</code> || DC2 || Cancela modo condensado | ||
| + | |- | ||
| + | | Bematech || <code>\u001BE</code> || ESC SO || Selecciona expandido por una línea | ||
| + | |- | ||
| + | | Bematech || <code>\u001BF</code> || ESC SI || Selecciona modo condensado | ||
| + | |- | ||
| + | | Epson || <code>\u001BF</code> || ESC F || Cancela modo enfatizado | ||
| + | |- | ||
| + | | Bematech, Epson || <code>\u001Bm</code> || ESC m || Realiza un corte parcial de papel | ||
| + | |- | ||
| + | | Epson || <code>\u001BM</code> || ESC M || Selecciona el ancho elite | ||
| + | |- | ||
| + | | Epson || <code>\u001B0</code> || ESC 0 || Selecciona 1/8 de pulgada de espacio entre líneas | ||
| + | |- | ||
| + | | Epson || <code>\u001B-</code> || ESC - || Selecciona/cancela modo subrayado | ||
| + | |- | ||
| + | | Epson || <code>\u001BW</code> || ESC W || Selecciona/cancela el modo expandido | ||
| + | |- | ||
| + | | Hasar, Epson || <code>\u001B!\u0008</code> || ESC ! 8 || Selecciona modo enfatizado | ||
| + | |} | ||
| − | + | ---- | |
| − | + | == 8. Ejemplos y Prototipos == | |
| − | + | ||
| + | === Ajuste de renglones condicionales === | ||
| − | + | Para que una línea no se imprima si el dato es nulo, colocar el contenido entre <code><<</code> y <code>>></code>: | |
| − | + | {| class="wikitable" style="width:100%" | |
| − | + | ! Fuera del Concat !! Dentro del Concat | |
| − | + | |- | |
| − | + | | <code><<%@concat('Afil.: <', format:rpad(...,25), '>')%>></code> || <code><<%@concat('--- Afil.: <', format:rpad(...,25), '>')%>></code> | |
| − | + | |} | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | 25) | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | : | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | === Troqueles en Recetas === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | <pre> | ||
| + | <%=format:avanzarLineas(round(ceiling(cantidadProductos div 4) * espacioTroquel * lineasEnBlancoXcm * 5))%> | ||
| + | </pre> | ||
| − | + | * <code>ceiling(cantidadProductos div 4)</code>: 1–4 productos → 1 fila, 5–8 → 2 filas, etc. | |
| + | * <code>espacioTroquel</code>: 1 si imprime troqueles, 0 si no. | ||
| + | * <code>lineasEnBlancoXcm</code>: parámetro <code>ESPACIOS_EN_BLANCO_POR_CENTIMETRO</code> (defecto: 2.5). | ||
| + | * <code>5</code>: los 5 cm que miden los troqueles. | ||
| − | + | === Códigos de Farmacia por Obra Social === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | <pre> | ||
| + | <%=format:rightpad('Código en la OSP : ', operacionesValor[valor/tipoValor/id=2]/valor/codigoFarmaciaOS)%> | ||
| + | <%=format:rightpad('Código s/Obra Social: ', obtCodigoFarmaciaOS())%> | ||
| + | <%=format:rightpad('Código en la 1er OS : ', obtCodigoFarmacia1raOS())%> | ||
| + | ... | ||
| + | <%=format:rightpad('Código en la 7ma OS : ', obtCodigoFarmacia7maOS())%> | ||
| + | </pre> | ||
| − | + | === Número de Autorización por Receta (múltiples tipos) === | |
| − | : | + | <pre> |
| − | : | + | <%=format:rightpad('AUTORIZACIO1: ', operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=1]/valor/numeroAutorizacion)%> |
| + | <%=format:rightpad('AUTORIZACIO2: ', operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=2]/valor/numeroAutorizacion)%> | ||
| + | <%=format:rightpad('AUTORIZACIO3: ', operacionesValor[valor/tipoValor/id=2 and valor/tipoReceta/id=3]/valor/numeroAutorizacion)%> | ||
| + | </pre> | ||
| + | === Prototipos — Datos Adicionales === | ||
| − | + | XPaths directos: | |
| + | <pre> | ||
| + | <%=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))%>%> | ||
| + | </pre> | ||
| − | : | + | Usando pseudo-funciones: |
| − | : | + | <pre> |
| + | <%=format:rpad(obtNumeroComprobante(),13) | ||
| + | <%+concat('-', format:string(obtNombreDatoCodificado()), ' : ', | ||
| + | format:string(obtDatoCodificado()), ' : ', | ||
| + | format:string(obtNombreDePrototipoDetalle()), ' : ', | ||
| + | format:string(obtNombrePrototipoDePrototipoDetalle()), ' : ', | ||
| + | format:string(obtNombrePrototipoDePrototipoDatoAdicional()), ' : ', | ||
| + | format:string(obtNumeroLineaDePrototipoDatoAdicional()))%>%> | ||
| + | </pre> | ||
| + | === Prototipos — Impresión de todos los imprimibles === | ||
| − | + | NombreDato: Dato (cabecera, detalle, pie): | |
| + | <pre> | ||
| + | <%=format:cpad('dummy',0)<%+concat(format:string(obtNombreDatoCodificado()),': ',format:string(obtDatoCodificado()))%>%> | ||
| + | <%=format:cpad('dummy',0)<%+concat(format:concatNoNull(format:string(obtCabeceraNombreDatoCodificado()),': ',format:string(obtCabeceraDatoCodificado()))%>%> | ||
| + | <%=format:cpad('dummy',0)<%+concat(format:concatNoNull(format:string(obtPieNombreDatoCodificado()),': ',format:string(obtPieDatoCodificado()))%>> | ||
| + | </pre> | ||
| − | : | + | Solo Dato: |
| + | <pre> | ||
| + | <%=format:cpad('dummy',0)<%+concat('',format:string(obtDatoCodificado()))%>%> | ||
| + | <%=format:cpad('dummy',0)<%+concat('',format:string(obtCabeceraDatoCodificado()))%>%> | ||
| + | <%=format:cpad('dummy',0)<%+concat('',format:string(obtPieDatoCodificado())%>%> | ||
| + | </pre> | ||
Revisión actual del 12:21 4 jun 2026
Contenido
- 1 1. Sintaxis de Plantilla (Tags)
- 2 2. Funciones de Dispositivo
- 3 3. Variables y Propiedades de Ítem
- 4 4. Funciones format:
- 4.1 format:abonaCon(montoEfectivo, abonaCon, n)
- 4.2 format:alignRight(titulo, dato) / format:alignRight(titulo, dato, ancho)
- 4.3 format:alignRightDtoRgo(titulo, dato) / format:alignRightDtoRgo(template, titulo, dato)
- 4.4 format:alltrim(texto)
- 4.5 format:anchopagina()
- 4.6 format:ascii(número)
- 4.7 format:avanzarLineas(value) / format:avanzarLineas(value, cantMaximaLineas)
- 4.8 format:bigdecimal(value)
- 4.9 format:cgoAfilCob(total, montoCobertura)
- 4.10 format:coalesce(value1, value2)
- 4.11 format:coalesceNum(value1, value2)
- 4.12 format:concatenar(nroCampo, strDatos) — forma v1
- 4.13 format:concatenar(strDatos) — forma v2
- 4.14 format:concatNoNull(value1, value2)
- 4.15 format:cortepapel() — plantillas v5 PDF
- 4.16 format:cpad(texto, longitud [, caracter])
- 4.17 format:datoCondicional(condicion, dato)
- 4.18 format:enlazar(strDatos) — forma v1
- 4.19 format:enlazar(valor1, valor2) — forma v2
- 4.20 format:esNulo(value)
- 4.21 format:imprimirbarcode(valor [, alineacion]) — plantillas v5 PDF
- 4.22 format:imprimircode128(valor [, alineacion]) — plantillas v5 PDF
- 4.23 format:imprimircode39h(valor [, alineacion]) — plantillas v5 PDF
- 4.24 format:imprimircode39l(valor [, alineacion]) — plantillas v5 PDF
- 4.25 format:imprimirCodigoDeBarras(valor [, alineacion]) — plantillas v5 PDF
- 4.26 format:imprimirEAN13(valor) — plantillas v5 PDF
- 4.27 format:imprimirfree3of9(valor [, alineacion]) — plantillas v5 PDF
- 4.28 format:integer(número)
- 4.29 format:irLinea(número)
- 4.30 format:leftpad / rightpad / centerpad(dato) — 1 parámetro
- 4.31 format:leftpad / rightpad / centerpad(titulo, dato) — 2 parámetros
- 4.32 format:leftpad / rightpad(titulo, dato, número) — 3 parámetros
- 4.33 format:lefttrim(value)
- 4.34 format:len(objeto)
- 4.35 format:longDate(fecha)
- 4.36 format:longDateTime(fecha)
- 4.37 format:lowerCase(value)
- 4.38 format:lpad(texto, longitud [, caracter]) / rpad / cpad
- 4.39 format:nonull(objeto)
- 4.40 format:noRepetir(nombre, cantidadBase)
- 4.41 format:obtCaracterCopia(parametro[1])
- 4.42 format:obtcodigo(objeto)
- 4.43 format:obtcodigosinguion(objeto)
- 4.44 format:obtNumeroCopia(parametro[1])
- 4.45 format:obtTipoComprobante(tipoOperacion)
- 4.46 format:param(value)
- 4.47 format:reemplazarParametro(linea, args[])
- 4.48 format:reemplazarTexto(titulo, template)
- 4.49 format:redondear(value, decimales, modo)
- 4.50 format:righttrim(value)
- 4.51 format:roundingUP(value)
- 4.52 format:semianchopagina()
- 4.53 format:separador() — sin parámetros
- 4.54 format:separador(dato) — 1 parámetro
- 4.55 format:separador(dato, titulo) — 2 parámetros
- 4.56 format:separador(dato, titulo, anchoTexto) — 3 parámetros
- 4.57 format:separadorDoble()
- 4.58 format:shortDate(fecha)
- 4.59 format:string(objeto)
- 4.60 format:stringData(value)
- 4.61 format:stringDataNoVacio(value)
- 4.62 format:stringNoVacio(número)
- 4.63 format:stringNoVacioDto(número)
- 4.64 format:stringtransf(objeto1, objeto2, objeto3)
- 4.65 format:textodobleancho(objeto) — plantillas v5 PDF
- 4.66 format:unirtodo(titulo, subtitulo, dato) / format:unirtodo(titulo, subtitulo, dato, ancho)
- 4.67 format:unirtodo(dato1, dato2) — 2 parámetros
- 4.68 format:upperCase(value)
- 4.69 format:vuelto(montoEfectivo, abonaCon, n)
- 5 5. Pseudo-métodos obt*() — TemplateUtil.java
- 5.1 Afiliado
- 5.2 Bono
- 5.3 Cheque / CH Terceros
- 5.4 Cliente
- 5.5 Convenio
- 5.6 Cuenta Corriente
- 5.7 Efectivo
- 5.8 Factura Electrónica (Referencias Electrónicas)
- 5.9 Farmacia (Nodo)
- 5.10 Producto / Ítem
- 5.11 Prototipos / Datos Adicionales
- 5.12 Puesto de Venta
- 5.13 Receta / Cobertura / Obra Social
- 5.14 Recargos y Descuentos de Tarjeta (DtoRgo)
- 5.15 Tarjeta
- 5.16 Valor / Comprobante
- 5.17 Vendedor
- 5.18 Liquidaciones (Plantillas v4)
- 6 6. Funciones JXPath
- 7 7. Tabla de Caracteres Especiales
- 8 8. Ejemplos y Prototipos
1. Sintaxis de Plantilla (Tags)
Delimitadores propios del motor de plantillas. Ninguno requiere el prefijo format:.
| Tag | Nombre | Descripción |
|---|---|---|
/ |
Línea en blanco | Imprime una línea en blanco. |
<%= ... %> |
OperacionValor | Devuelve el objeto OperacionValor a imprimir (tabla operacion_valor).
|
<%& ... %> # |
operacionesValor | Itera sobre OperacionValor.operacion.operacionesValor devolviendo objetos OperacionValor (tabla operacion_valor).
|
<%@ ... %> # |
Operacion | Devuelve OperacionValor.operacion, clase Operacion (tabla operacion).
|
<%# ... %> # |
itemsValor | Itera sobre OperacionValor.valor.itemsValor devolviendo objetos ItemValor/ItemFactura/ItemConvenio/etc (tabla item_valor).
|
<%$ ... %> # |
valoresConcepto | Itera sobre OperacionValor.valor.valoresConcepto devolviendo objetos ValorConcepto (tabla valor_conceptos).
|
<%+ ... %> # |
prototipos | Itera sobre la colección de Prototipos de los valores o de los ítems. |
<%! ... %> ! |
comentarios | Los datos incluidos sirven para orientar al usuario de la plantilla, pero no salen impresos. Ej: <%! ** Modelo 2 ** %>
|
<< ... >> |
Eliminación de renglón | Si la ausencia del dato a imprimir tiene que eliminar el renglón actual, se encierra la función entre << y >>. Ej: <<%=...%>>
|
2. Funciones de Dispositivo
Actúan solo si el dispositivo lo soporta. Se usan directamente, sin prefijo format:.
Vuelven a las condiciones iniciales al finalizar la línea (salvo inicializar, normalizar, cortepapel y cortetotalpapel).
| Función | Descripción |
|---|---|
codigobarras(objeto) |
Envía los comandos de configuración previos e imprime el código de barras del valor recibido. |
condensado(objeto) |
Imprime con letra condensada. |
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. |
cursiva(objeto) |
Imprime en cursiva (itálica). |
inicializar() |
Envía un comando de inicialización que configura la impresora a sus valores iniciales. |
negrita(objeto) |
Imprime en negrita (enfatizado). |
normalizar() |
Envía un comando de normalización de la letra a sus valores iniciales. |
subrayado(objeto) |
Imprime con letra subrayada. |
textodoblealto(objeto) |
Imprime con letra expandida en alto. |
textodobleancho(objeto) |
Imprime con letra expandida a lo ancho. Ver también format:textodobleancho().
|
3. Variables y Propiedades de Ítem
Valores accesibles desde el contexto de la plantilla, sin prefijo format:.
| Variable / Propiedad | Contexto | Descripción |
|---|---|---|
cantidadFilas |
<%= / operacion |
Cantidad de líneas de productos de un comprobante de venta. |
cantidadProductos |
<%= / operacion |
Total de productos de un comprobante de venta. |
cantidadTroqueles |
<%# / item_valor |
Cantidad de líneas con productos cubiertos en una receta. Se usa para calcular el espacio para pegar troqueles. |
espacioTroquel |
operacion/OS | Configuración de la Obra Social. Si imprime troqueles devuelve 1, si no devuelve 0.
|
lineasEnBlancoXcm |
parámetro de nodo | Valor del parámetro ESPACIOS_EN_BLANCO_POR_CENTIMETRO. Si no existe, devuelve 2.5.
|
Propiedades SinIvaPlantilla (en <%# item_valor %>)
Estos atributos poseen la propiedad de que:
- Si el comprobante discrimina IVA (Factura o N/C "A"): traen el valor sin el IVA incluido.
- Si el comprobante no discrimina IVA: devuelven el valor total, con el impuesto acumulado.
| Propiedad |
|---|
descuentoAfiliadoSinIVAPlantilla
|
descuentoAfiliadoTotalSinIVAPlantilla
|
descuentoConvenioSinIVAPlantilla
|
descuentoSinIvaPlantilla
|
precioUnitarioSinIvaPlantilla
|
recargoConvenioSinIVAPlantilla
|
totalSinIvaPlantilla
|
Métodos asociados:
| Método | Descripción |
|---|---|
obtTotalCubierto1raCoberturaSinIvaPlantilla() |
Importe cubierto por la 1ra. cobertura, sin IVA (condicional). |
obtTotalCubierto2daCoberturaSinIvaPlantilla() |
Importe cubierto por la 2da. cobertura, sin IVA (condicional). |
4. Funciones format:
Implementadas en TemplateUtilVersion1, TemplateUtilVersion2, ..., TemplateUtilVersion5Pdf.
Se invocan con el prefijo format: dentro de las expresiones de plantilla.
format:abonaCon(montoEfectivo, abonaCon, n)
Devuelve el primer parámetro mayor que cero, formateado a n decimales.
format:alignRight(titulo, dato) / format:alignRight(titulo, dato, ancho)
Si los valores no son nulos, devuelve la concatenación de los parámetros.
Imprime titulo y ajusta dato a la derecha del ancho indicado o al del motor.
alignRight("Total OSP", "50,12") => "Total OSP____________________50,12"
format:alignRightDtoRgo(titulo, dato) / format:alignRightDtoRgo(template, titulo, dato)
- 2 params: Actúa como
alignRight(), pero sidato < 0inserta un signo"-". - 3 params: Igual al anterior, pero agrega un
templatecon términos de reemplazo segúnreemplazarTexto().
format:alltrim(texto)
Devuelve el texto indicado, borrando los espacios en blanco a izquierda y a derecha.
format:anchopagina()
Devuelve la cantidad de caracteres del ancho de la página seteados en el motor. Se utiliza como complemento de otros métodos para alinear impresiones.
<%@format:centerpad('--','- RECETA -',format:anchopagina())%>
format:ascii(número)
Devuelve el código ASCII del número ingresado, convertido en string.
format:avanzarLineas(value) / format:avanzarLineas(value, cantMaximaLineas)
Agrega la cantidad de líneas en blanco indicada por value (se toma la parte entera).
El segundo parámetro limita la cantidad máxima de filas a avanzar.
<%=format:avanzarLineas(cantidadTroqueles*3)%> <%=format:avanzarLineas(cantidadTroqueles*3, cantMaximaLineas)%>
format:bigdecimal(value)
Devuelve el BigDecimal correspondiente al parámetro indicado, contemplando iterables.
format:cgoAfilCob(total, montoCobertura)
- Si existe la Cobertura (
montoCobertura > 0): devuelvetotal - montoCobertura. - Si no existe (
montoCobertura = 0): devuelve cero (no se imprime ningún dato).
format:coalesce(value1, value2)
Devuelve como respuesta el primer parámetro no nulo.
format:coalesceNum(value1, value2)
Devuelve como respuesta el primer parámetro no nulo, en formato numérico.
format:concatenar(nroCampo, strDatos) — forma v1
Concatena los valores del string de datos separados por |, ajusta la longitud del campo indicado por el primer parámetro, hasta completar el Ancho Máximo del motor.
format:concatenar(2, " 1|ADALAT 30| 44,00| 44,00")
format:concatenar(strDatos) — forma v2
Concatena valores separados por |, tomados de a 3, de la forma ajuste<d,i>|longitud|campo.
format:concatenar("d|20|ADALAT 30|i|12|44,00|i|12|44,00")
=> "ADALAT 30__________________44,00_______44,00"
format:concatNoNull(value1, value2)
Si ambos parámetros son no nulos, devuelve un String concatenándolos.
format:cortepapel() — plantillas v5 PDF
Permite el corte de la impresión del PDF en mitad de la plantilla, tal como se produce en impresoras térmicas o matriciales comunes.
<%=format:cortepapel()%>
format:cpad(texto, longitud [, caracter])
Ver format:lpad / rpad / cpad.
format:datoCondicional(condicion, dato)
Si se cumple condicion, devuelve dato; sino, un string vacío.
format:datoCondicional((valor/numeroAutorizacion="4"),'A.') => "A." o ""
Uso para detectar copia:
<%=format:datoCondicional(format:obtNumeroCopia(parametro[1])!="1",'ES COPIA')%>
format:enlazar(strDatos) — forma v1
Concatena los 2 valores del string separados por |, ajusta el 1er campo al Ancho Máximo del motor.
format:enlazar("A c/Afil. d/aplicar Cob. 1a. :| 40,00")
format:enlazar(valor1, valor2) — forma v2
Si los valores no son nulos, devuelve la concatenación de ambos parámetros ajustada al ancho de página.
format:enlazar("A c/Afil. d/aplicar Cob. 1ra.: "," 40,00")
format:esNulo(value)
Similar al método isNull(), contemplando iterables.
format:imprimirbarcode(valor [, alineacion]) — plantillas v5 PDF
Imprime código de barras con fuente BarCode font. Alineación: 'L'/'I' (izquierda, defecto), 'R'/'D' (derecha), 'C' (centro).
format:imprimircode128(valor [, alineacion]) — plantillas v5 PDF
Imprime código de barras Code128.
<%@format:imprimircode128('1234567890','C')%>
format:imprimircode39h(valor [, alineacion]) — plantillas v5 PDF
Imprime código de barras Code39 Hoch.
format:imprimircode39l(valor [, alineacion]) — plantillas v5 PDF
Imprime código de barras Code39 Logitogo.
format:imprimirCodigoDeBarras(valor [, alineacion]) — plantillas v5 PDF
Selecciona el tipo de código de barras según el parámetro de nodo CODIGO_BARRA_PLANTILLA.
Formato del parámetro: CODE39H,R (tipo, alineación). Código por defecto: CODE128,C.
format:imprimirEAN13(valor) — plantillas v5 PDF
Imprime código EAN-13 (troqueles).
<%#format:imprimirEAN13(obtCodigoBarraProducto())%>
format:imprimirfree3of9(valor [, alineacion]) — plantillas v5 PDF
Imprime código de barras Code 3of9.
format:integer(número)
Devuelve la parte entera del número ingresado, convertida en string.
format:irLinea(número)
Avanza la posición a imprimir hasta la línea indicada por el parámetro.
format:leftpad / rightpad / centerpad(dato) — 1 parámetro
Rellena por izquierda / derecha / centra el texto, siempre con espacios en blanco, hasta completar el Ancho Máximo del motor de impresión.
format:leftpad / rightpad / centerpad(titulo, dato) — 2 parámetros
- Si
datoes nulo: no imprime nada. - Si
datono es nulo: concatenatitulo + datoy rellena/centra hasta el Ancho Máximo del motor.
format:leftpad / rightpad(titulo, dato, número) — 3 parámetros
- Si
datoes nulo: no imprime nada. - Si
datono es nulo: concatenatitulo + datoy rellena hasta Ancho Máximo menosnúmero.
format:lefttrim(value)
Si el valor no es nulo, recorta los espacios en blanco de la izquierda.
format:lefttrim(" A cargo Afiliado") => "A cargo Afiliado"
format:len(objeto)
Devuelve la longitud del dato ingresado, convertido en string.
format:longDate(fecha)
Devuelve la fecha en el formato longDate definido en application.
format:longDateTime(fecha)
Devuelve la fecha y hora en el formato dd/mm/yyyy hh:mm:ss, definido en application.
format:lowerCase(value)
Devuelve un String con el lower-case del objeto.
format:lowerCase('Valor para Cambiar') => 'valor para cambiar'
format:lpad(texto, longitud [, caracter]) / rpad / cpad
Rellena a izquierda (lpad) / derecha (rpad) / centra (cpad) el texto, hasta la longitud indicada.
- Si
longitud < len(texto): corta el texto. - Si no se especifica
caracter: rellena con espacios.
format:nonull(objeto)
- Si el valor no es nulo: imprime su valor string.
- Si el valor es nulo: imprime un string vacío
"".
format:noRepetir(nombre, cantidadBase)
En ocasiones se recibe un nombre o descripción repetido varias veces y se desea mostrar uno solo.
-
nombre: el dato a mostrar. -
cantidadBase: número mínimo de caracteres a mostrar sin repetición (ej:5).
format:obtCaracterCopia(parametro[1])
Registra el carácter de Original/Duplicado/etc. del documento impreso dentro de la secuencia de copias.
<%=format:rightpad('ES COMPROBANTE : ',format:obtCaracterCopia(parametro[1]))%>
=> ES COMPROBANTE : ORIGINAL
=> ES COMPROBANTE : DUPLICADO
=> ES COMPROBANTE : TRIPLICADO
format:obtcodigo(objeto)
Formatea el objeto (codificación del comprobante 0001-0001234) para imprimir como Código de Barras.
format:obtcodigosinguion(objeto)
Igual que obtcodigo pero sin el guión separador.
format:obtNumeroCopia(parametro[1])
Registra el número de copia del documento impreso dentro de la secuencia de copias.
<%=format:rightpad('COPIA NUMERO : ',format:obtNumeroCopia(parametro[1]))%>
=> COPIA NUMERO : 1 / 2 / 3
format:obtTipoComprobante(tipoOperacion)
Dado el tipo de operación, devuelve un string con el respectivo tipo de comprobante.
format:obtTipoComprobante(obtTipoOperacion()) => "FACTURA", "TICKET", etc.
format:param(value)
Devuelve un String con el valor de un parámetro general, dado su nombre.
format:param('IMPRIMIR_DATOS_PRESCRIPCION') => 'true' o 'false'
format:reemplazarParametro(linea, args[])
Reemplaza los parámetros de linea por los métodos indicados en args.
El render() (v4 en adelante) puede recibir una lista de parámetros desde el programa.
args[1] = "separador()"; args[2] = "cortepapel()"; <%=format:parametro[2]%> => <%=format:separador()%>
format:reemplazarTexto(titulo, template)
Devuelve un texto donde se reemplazó el titulo de acuerdo al patrón template.
Los patrones se separan por | en pares buscar|reemplazar.
titulo: "RECARGO POR FORMA DE PAGO EFECTIVO POS" template: "DESC.||RECARGO|DIF.PRC.| POR|POR|FORMA||DE || PAGO|PAGO EN|POS||*|" resultado: "DIF.PRC.POR PAGO EN EFECTIVO"
format:redondear(value, decimales, modo)
Devuelve un String del parámetro value. Si es numérico, aplica el redondeo indicado.
value=123.6977887, decimales=0, modo="up" format:redondear(value, 0, "up") => "124"
format:righttrim(value)
Si el valor no es nulo, recorta los espacios en blanco de la derecha.
format:righttrim("A cargo Afiliado ") => "A cargo Afiliado"
format:roundingUP(value)
Devuelve un String del parámetro value. Si es numérico, devuelve el entero mayor (redondeo hacia arriba).
value=5895.195741 format:roundingUP(value) => "5.896"
format:semianchopagina()
Devuelve la mitad de los caracteres del ancho de página del motor. Se usa como complemento para alinear impresiones en doble ancho.
<%@format:textodobleancho(format:separador(obtNombreObraSocial(),'- RECETA -',format:semianchopagina()))%>
format:separador() — sin parámetros
Imprime una línea separadora de caracteres ---...--- hasta el Ancho Máximo del motor.
format:separador(dato) — 1 parámetro
Imprime el separador ---...--- solo si dato no es nulo.
format:separador(dato, titulo) — 2 parámetros
Imprime el separador con titulo centrado, solo si dato no es nulo.
<%@format:separador(operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre,'- BONO -')%> => ---------- BONO ----------
format:separador(dato, titulo, anchoTexto) — 3 parámetros
Igual al anterior, pero el ancho total lo define anchoTexto en lugar del motor.
<%@format:separador(operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre,'- RECETA -',24)%> => -------- RECETA --------
format:separadorDoble()
Imprime una línea separadora de caracteres ===...=== hasta el Ancho Máximo del motor.
format:shortDate(fecha)
Devuelve la fecha en el formato shortDate definido en application.
format:string(objeto)
Convierte cualquier tipo de dato en string.
format:stringData(value)
Devuelve el parámetro sin puntos ".".
format:stringData("1.235.459,78") => "1235459,78"
format:stringDataNoVacio(value)
Devuelve el parámetro sin puntos ".". Si value es null, devuelve "0,00".
format:stringNoVacio(número)
Devuelve el número ingresado convertido en string. Si el valor es nulo, devuelve "0,00".
format:stringNoVacioDto(número)
Devuelve el número ingresado convertido en string. Si el valor es nulo, devuelve "-0,00".
format:stringtransf(objeto1, objeto2, objeto3)
Devuelve objeto1, donde las ocurrencias de objeto2 son reemplazadas por objeto3.
Internamente usa StringUtils.replace().
format:textodobleancho(objeto) — plantillas v5 PDF
Imprime con letra expandida a lo ancho. Equivalente al comando de dispositivo textodobleancho() pero usable como wrapper en plantillas PDF.
<%@format:textodobleancho(format:separador(obtNombreObraSocial(),'- RECETA -',format:semianchopagina()))%>
format:unirtodo(titulo, subtitulo, dato) / format:unirtodo(titulo, subtitulo, dato, ancho)
Si los valores no son nulos, devuelve la concatenación de los parámetros.
Ajusta titulo + dato al ancho indicado o al del motor.
format:unirtodo(dato1, dato2) — 2 parámetros
Devuelve la concatenación incondicional de ambos parámetros.
format:upperCase(value)
Devuelve un String con el upper-case del objeto.
format:upperCase('Valor para Cambiar') => 'VALOR PARA CAMBIAR'
format:vuelto(montoEfectivo, abonaCon, n)
Devuelve (abonaCon - montoEfectivo) o cero, formateado a n decimales.
5. Pseudo-métodos obt*() — TemplateUtil.java
Organizados por entidad. La columna Función indica el tag de contexto, Tabla la tabla de origen y Atributo el XPath equivalente.
Afiliado
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtNombreAfiliado() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=2]/valor/nombreAfiliado
|
obtNumeroAfiliado() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=2]/valor/numeroAfiliado
|
Bono
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtAcumuladoBono() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto
|
obtNombreBono() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=1]/valor/entidad/nombre
|
obtPuntajeBono() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=1]/valor/valoresConcepto[subTipoValorCpto/concepto/id=500 and subTipoValorCpto/visiblePos=1]/monto
|
Cheque / CH Terceros
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDescuentoChequeTerceros() |
<%& |
operacionesValor | operacionesValor[valor/tipoValor/id=5 and valor/anulacion!='A']/valor/descuentoFPPlantilla
|
obtImporteFormaPagoChequeTerceros() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=5]/valor/montoPrincipal
|
obtImporteFormaPagoChequeTercerosVenta() |
<%& |
operacionesValor | sum(valor[tipoValor/id=5 and anulacion!='A']/montoPrincipal)
|
obtNombreFormaPagoChequeTerceros() |
<%= |
operacion_valor | valor[tipoValor/id=5]/entidad/nombre
|
obtRecargoChequeTerceros() |
<%& |
operacionesValor | operacionesValor[valor/tipoValor/id=5 and valor/anulacion!='A']/valor/recargoFPPlantilla
|
Cliente
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtApellidoCliente() |
<%= |
operacion_valor | valor/entidad/apellido
|
obtCodigoCliente() |
<%= |
operacion_valor | valor/entidad/codigo
|
obtCuitCliente() |
<%= |
operacion_valor | valor/entidad/cuit
|
obtDireccion1Cliente() |
<%= |
operacion_valor | valor/entidad/direcciones[1]
|
obtEntreCallesCliente() |
<%= |
operacion_valor | valor/entidad/entreCalle
|
obtNombreCliente() |
<%= |
operacion_valor | valor/entidad/nombre
|
obtObservacionCliente() |
<%= |
operacion_valor | valor/entidad/observacion
|
obtObservacionesCliente() |
<%= |
operacion_valor | valor/entidad/observaciones
|
obtObservacionesCliente1raLinea() |
<%= |
operacion_valor | valor/entidad/observacionesCliente1raLinea
|
obtObservacionesCliente2daLinea() |
<%= |
operacion_valor | valor/entidad/observacionesCliente2daLinea
|
obtObservacionesCliente3raLinea() |
<%= |
operacion_valor | valor/entidad/observacionesCliente3raLinea
|
obtRazonSocialCliente() |
<%= |
operacion_valor | valor/entidad/razonSocial
|
obtSituacionIvaCliente() |
<%= |
operacion_valor | valor/entidad/objSituacionIVA/nombre
|
obtTelefonoCliente() |
<%= |
operacion_valor | valor/entidad/telefonosConcatenados
|
Cliente (eventual)
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDocumentoClienteEven() |
<%= |
operacion_valor | valor/documentoCliente
|
obtDomicilioClienteEven() |
<%= |
operacion_valor | valor/domicilioCliente
|
obtNombreClienteEven() |
<%= |
operacion_valor | valor/nombreCliente
|
Cliente (secundario)
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtNombreClienteSecundario() |
<%= |
operacion_valor | valor/entidadSecundaria/nombre
|
Cliente Envío
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDireccionEnvio() |
<%= |
operacion_valor | valor/direccionSeleccionada
|
obtObservacionEnvio() |
<%= |
operacion_valor | valor/observaciones
|
obtTelefonoEnvio() |
<%= |
operacion_valor | valor/telefonoSeleccionado
|
Convenio
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDescuentoConvenio() |
<%& |
operacionesValor | operacionesValor[valor/tipoValor/id=211 and valor/anulacion!='A']/valor/descuentoFPPlantilla
|
obtDtoGeneralConvenio() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=211]/valor/descuentoGeneral
|
obtImporteFormaPagoConvenio() |
<%= |
operacion_valor | sum(valor[tipoValor/id=211]/montoPrincipal)
|
obtImporteFormaPagoConvenioVenta() |
<%& |
operacionesValor | valor[tipoValor/id=211 and anulacion!='A']/montoPrincipal
|
obtNombreFormaPagoConvenio() |
<%= |
operacion_valor | valor[tipoValor/id=211]/entidad/nombre
|
obtRecargoConvenio() |
<%& |
operacionesValor | operacionesValor[valor/tipoValor/id=211 and valor/anulacion!='A']/valor/recargoFPPlantilla
|
Cuenta Corriente
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDescuentoCtaCte() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=22 and valor/anulacion!='A']/valor/descuentoFPPlantilla
|
obtDtoGeneralCtaCte() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=22]/valor/descuentoGeneral
|
obtImporteFormaPagoCtaCte() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=22]/valor/montoPrincipal
|
obtImporteFormaPagoCtaCteVenta() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=22 and valor/anulacion!='A']/valor/montoPrincipal
|
obtRecargoCtaCte() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=22 and valor/anulacion!='A']/valor/recargoFPPlantilla
|
obtSaldoActual() |
<%@ |
operacion | operacionesValor/saldoActualComprobante
|
obtSaldoActualMasVenta() |
<%@ |
operacion | operacionesValor/saldoActualMasVenta
|
Cuota Cuenta Corriente
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDescuentoCuotasCtaCte() |
<%& |
operacionesValor | valor[tipoValor/id=21 and anulacion!='A']/valor/descuentoFPPlantilla
|
obtDtoGeneralCuotaCtaCte() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=21]/valor/descuentoGeneral
|
obtImporteFormaPagoCuotaCteCte() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=21]/valor/montoPrincipal
|
obtImporteFormaPagoCuotaCteCteVenta() |
<%& |
operacionesValor | sum(valor[tipoValor/id=21 and anulacion!='A']/montoPrincipal)
|
obtNombreFormaPagoCuotaCteCte() |
<%= |
operacion_valor | valor[tipoValor/id=21]/entidad/nombre
|
obtRecargoCuotasCtaCte() |
<%& |
operacionesValor | valor[tipoValor/id=21 and anulacion!='A']/valor/recargoFPPlantilla
|
Efectivo
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDescuentoEfectivo() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=3 and valor/anulacion!='A']/valor/descuentoFPPlantilla
|
obtImporteFormaPagoEfectivo() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=3]/valor/montoPrincipal
|
obtImporteFormaPagoEfectivoVenta() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=3 and valor/anulacion!='A']/valor/montoPrincipal
|
obtRecargoEfectivo() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=3 and valor/anulacion!='A']/valor/recargoFPPlantilla
|
Factura Electrónica (Referencias Electrónicas)
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtFechaAdicional() |
<%= |
operacion_valor | valor/fechaAdicional
|
obtFechaReferenciaElectronica() |
<%= |
operacion_valor | valor/fechaAutorizacion
|
obtFechaVencimiento() |
<%= |
operacion_valor | valor/fechaVencimiento
|
obtFormaAutorizacionFE() |
<%= |
operacion_valor | valor/formaAutorizacion
|
obtMarcaCAEA() |
<%= |
operacion_valor | valor/marcaCAEA
|
obtReferenciaElectronica() |
<%= |
operacion_valor | valor/numeroAutorizacion
|
Ejemplo de uso para C.A.E. / C.A.E.A.:
<%=format:separador(obtReferenciaElectronica(),'--- REFERENCIA ELECTRONICA ---')%>
<%=concat(format:enlazar(concat('C.A.E.',format:string(obtMarcaCAEA())),': ',
format:rpad(obtReferenciaElectronica(),15),25),
format:rightpad('Vto.:',format:rpad(format:shortDate(obtFechaAdicional()),11)))%>
<%=format:separador()%>
Farmacia (Nodo)
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtCuitFarmacia() |
<%= |
operacion_valor | valor/nodoCreacion/cuit
|
obtDireccion0Farmacia() |
<%= |
operacion_valor | valor/nodoCreacion/direcciones[0]
|
obtDireccion1Farmacia() |
<%= |
operacion_valor | valor/nodoCreacion/direcciones[1]
|
obtFechaInicioActividades() |
<%= |
operacion_valor | valor/nodoCreacion/inicioDeActividades
|
obtIngresosBrutosFarmacia() |
<%= |
operacion_valor | valor/nodoCreacion/ingresosBrutos
|
obtRazonSocialFarmacia() |
<%= |
operacion_valor | valor/nodoCreacion/razonSocial
|
obtRazonSocialFarmaciaLinea2() |
<%= |
operacion_valor | valor/nodoCreacion/razonSocialLinea2
|
obtSituacionIvaFarmacia() |
<%= |
operacion_valor | valor/nodoCreacion/objSituacionIVA/nombre
|
obtTelefono0Farmacia() |
<%= |
operacion_valor | valor/nodoCreacion/telefonos[0]/numero
|
obtTelefono1Farmacia() |
<%= |
operacion_valor | valor/nodoCreacion/telefonos[1]/numero
|
obtTelefonoFarmacia() |
<%= |
operacion_valor | valor/nodoCreacion/telefonosConcatenados
|
Producto / Ítem
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtCodigoBarraProducto() |
<%# |
item_valor | producto/codigoBarra
|
obtNombreProducto() |
<%# |
item_valor | producto/nombreCorto
|
Descuentos de ítem (propiedades directas, sin método):
| Propiedad | Descripción |
|---|---|
descuento |
Descuento de ítem |
descuentoAfiliado |
Descuento Automático/Forzado |
descuentoGeneral |
Descuento General (manual) |
Prototipos / Datos Adicionales
| Método / Propiedad | Contexto | Descripción |
|---|---|---|
obtCabeceraDatoCodificado() |
<%+ |
Dato codificado de prototipos de cabecera |
obtCabeceraNombreDatoCodificado() |
<%+ |
Nombre del dato codificado de prototipos de cabecera |
obtDatoCodificado() |
<%+ |
Dato codificado del prototipo (dato)
|
obtNombreDatoCodificado() |
<%+ |
prototipoDetalle/datoCodificado/nombre
|
obtNombreDePrototipoDetalle() |
<%+ |
prototipoDetalle/nombre
|
obtNombrePrototipoDePrototipoDatoAdicional() |
<%+ |
prototipoDatoAdicional/prototipo/nombre
|
obtNombrePrototipoDePrototipoDetalle() |
<%+ |
prototipoDetalle/prototipo/nombre
|
obtNumeroLineaDePrototipoDatoAdicional() |
<%+ |
prototipoDatoAdicional/numeroLinea
|
obtPieDatoCodificado() |
<%+ |
Dato codificado de prototipos de pie de página |
obtPieNombreDatoCodificado() |
<%+ |
Nombre del dato codificado de prototipos de pie de página |
Puesto de Venta
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtPuestoVenta() |
<%= |
operacion_valor | operacion/puestoVenta/nombre
|
Receta / Cobertura / Obra Social
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtAutorizacionObraSocial() |
<%= |
operacion_valor | operacionesValor[valor/tipoValor/id=2]/valor/numeroAutorizacion
|
obtCodigoFarmaciaOS() |
<%= |
operacion_valor | — |
obtCodigoFarmacia1raOS() … obtCodigoFarmacia7maOS() |
<%= |
operacion_valor | — |
obtDtoGeneralBono() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=1]/valor/descuentoGeneral
|
obtDtoGeneralReceta() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=2]/valor/descuentoGeneral
|
obtFechaReceta() |
<%= |
operacion_valor | valor[tipoValor/id=2]/fechaEmision
|
obtImporteCobertura() |
<%& |
operacionesValor | valor[tipoValor/id=2 and anulacion!='A']/montoPrincipal
|
obtImporteFormaPagoObraSocial() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=2]/valor/montoPrincipal
|
obtImporteReceta() |
<%& |
operacionesValor | valor[tipoValor/id=2 and anulacion!='A']/itemsConvenio/descuentoAfiliado
|
obtNombre1raCobertura() |
<%# |
item_valor | itemConvenio1raCobertura/convenio/entidad/nombre
|
obtNombre1raObraSocial() |
<%# |
item_valor | itemConvenio1raCobertura/convenio/obraSocial/nombre
|
obtNombre2daCobertura() |
<%# |
item_valor | itemConvenio2daCobertura/convenio/entidad/nombre
|
obtNombre2daObraSocial() |
<%# |
item_valor | itemConvenio2daCobertura/convenio/obraSocial/nombre
|
obtNombre3raCobertura() |
<%# |
item_valor | itemConvenio3raCobertura/convenio/entidad/nombre
|
obtNombre3raObraSocial() |
<%# |
item_valor | itemConvenio3raCobertura/convenio/obraSocial/nombre
|
obtNombre4taObraSocial() |
<%# |
item_valor | itemConvenio4taCobertura/convenio/obraSocial/nombre
|
obtNombre5taObraSocial() |
<%# |
item_valor | itemConvenio5taCobertura/convenio/obraSocial/nombre
|
obtNombre6taObraSocial() |
<%# |
item_valor | itemConvenio6taCobertura/convenio/obraSocial/nombre
|
obtNombre7maObraSocial() |
<%# |
item_valor | itemConvenio7maCobertura/convenio/obraSocial/nombre
|
obtNombreCobertura() |
<%= |
operacion_valor | valor[tipoValor/id=2]/entidad/obraSocial/nombreCorto
|
obtNombreLargoCobertura() |
<%= |
operacion_valor | valor[tipoValor/id=2]/entidad/nombre
|
obtNombreObraSocial() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=2]/valor/entidad/nombre
|
obtNumeroCobertura() |
<%= |
operacion_valor | .[valor/tipoValor/id=2]/numeroCobertura
|
obtNumeroCoberturaVenta() |
<%& |
operacionesValor | .[valor/tipoValor/id=2 and valor/anulacion!='A']/numeroCobertura
|
obtNumeroReceta() |
<%= |
operacion_valor | valor[tipoValor/id=2]/codificacion
|
obtPorcentaje1raCobertura() |
<%# |
item_valor | itemConvenio1raCobertura/porcentajeCobertura
|
obtPorcentaje2daCobertura() |
<%# |
item_valor | itemConvenio2daCobertura/porcentajeCobertura
|
obtPorcentaje3raCobertura() |
<%# |
item_valor | itemConvenio3raCobertura/porcentajeCobertura
|
obtRecetaImporteDescuento() |
<%# |
item_valor | itemsReceta/descuento
|
obtRecetaPorcentajeCobertura() |
<%# |
item_valor | itemsReceta/porcentajeCobertura
|
obtRecetaPrecioUnitario() |
<%# |
item_valor | producto/codigoBarra
|
obtSaldoAfiliado() |
<%= |
operacion_valor | .[valor/tipoValor/id=2]/saldoAfiliado
|
obtSaldoAfiliadoVenta() |
<%& |
operacionesValor | .[valor/tipoValor/id=2 and valor/anulacion!='A']/saldoAfiliadoSinDto
|
obtSumaMontoTotalCubierto() |
<%# |
item_valor | sum(itemsReceta/montoTotalCubierto)
|
obtTotalCubierto1raCobertura() |
<%# |
item_valor | itemConvenio1raCobertura/montoTotalCubierto
|
obtTotalCubierto2daCobertura() |
<%# |
item_valor | itemConvenio2daCobertura/montoTotalCubierto
|
obtTotalCubierto3raCobertura() |
<%# |
item_valor | itemConvenio3raCobertura/montoTotalCubierto
|
Convenios de Ítem
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtNombre1erConvenio() |
<%# |
item_valor | itemConvenio1/valor/subTipoValor/nombre
|
obtNombre2doConvenio() |
<%# |
item_valor | itemConvenio2/valor/subTipoValor/nombre
|
obtNombre3erConvenio() |
<%# |
item_valor | itemConvenio3/valor/subTipoValor/nombre
|
obtNombre4toConvenio() |
<%# |
item_valor | itemConvenio4/valor/subTipoValor/nombre
|
obtNombre5toConvenio() |
<%# |
item_valor | itemConvenio5/valor/subTipoValor/nombre
|
obtSumaDescuentos1erConvenio() |
<%# |
item_valor | itemConvenio1/sumaDescuentosSinIvaPlantilla
|
obtSumaDescuentos2doConvenio() |
<%# |
item_valor | itemConvenio2/sumaDescuentosSinIvaPlantilla
|
obtSumaDescuentos3erConvenio() |
<%# |
item_valor | itemConvenio3/sumaDescuentosSinIvaPlantilla
|
obtSumaDescuentos4toConvenio() |
<%# |
item_valor | itemConvenio4/sumaDescuentosSinIvaPlantilla
|
obtSumaDescuentos5toConvenio() |
<%# |
item_valor | itemConvenio5/sumaDescuentosSinIvaPlantilla
|
obtSumaRecargos1erConvenio() |
<%# |
item_valor | itemConvenio1/rgoConvenioSinIVAPlantilla
|
obtSumaRecargos2doConvenio() |
<%# |
item_valor | itemConvenio2/rgoConvenioSinIVAPlantilla
|
obtSumaRecargos3erConvenio() |
<%# |
item_valor | itemConvenio3/rgoConvenioSinIVAPlantilla
|
obtSumaRecargos4toConvenio() |
<%# |
item_valor | itemConvenio4/rgoConvenioSinIVAPlantilla
|
obtSumaRecargos5toConvenio() |
<%# |
item_valor | itemConvenio5/rgoConvenioSinIVAPlantilla
|
Receta Digital — Datos Originales de Prescripción
| Propiedad / Método | Contexto | Descripción |
|---|---|---|
cantidadPrescripta |
<%# item_valor |
Cantidad prescripta por el profesional |
productoPrescrito/descripcion |
<%# item_valor |
Nombre del producto prescrito (Receta Digital) |
prescripcionMedica |
<%# item_valor |
Nombre de la droga prescrita |
descripcionRecetaDigital |
<%# item_valor |
Descripción combinada (alias de acceso) |
Ejemplo de uso con impresión opcional (controlada por parámetro):
<%#concat(
format:datoCondicional(
(format:param('IMPRIMIR_DATOS_PRESCRIPCION')='true') and
(format:coalesce(productoPrescrito/descripcion,prescripcionMedica)!=),
format:concatenar(2,concat(
format:rpad(format:integer(cantidadPrescripta),2),'|',
format:rpad(format:coalesce(productoPrescrito/descripcion,prescripcionMedica),30)
))
)
)%>
Recargos y Descuentos de Tarjeta (DtoRgo)
| Método | Descripción |
|---|---|
obtDescuentoTarjeta() |
Descuento por forma de pago Tarjeta en Venta |
obtEntidadDtoRgoTarjeta() |
Nombre de la entidad para Recargos/Descuentos de Tarjeta (v2) |
obtNombreDtoRgoTarjeta() |
Nombre descriptivo para Recargos/Descuentos de Tarjeta (v1) |
obtNombreFormaPagoTarjeta() |
Nombre de la forma de pago de la Tarjeta |
obtRecargoTarjeta() |
Recargo por forma de pago Tarjeta en Venta |
Tarjeta
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDtoGeneralTarjeta() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=9]/valor/descuentoGeneral
|
obtImporteFormaPagoTarjeta() |
<%= |
operacion_valor | sum(valor[tipoValor/id=9]/montoPrincipal)
|
obtImporteFormaPagoTarjetaVenta() |
<%& |
operacionesValor | .[valor/tipoValor/id=9 and valor/anulacion!='A']/montoPrincipal
|
obtNombreFormaPagoTarjeta() |
<%= |
operacion_valor | valor[tipoValor/id=9]/entidadSaldable/nombre
|
obtNombrePlanPagoTarjeta() |
<%& |
operacionesValor | .[valor/tipoValor/id=9]/planPago/nombre
|
Valor / Comprobante
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtDtoGeneral() |
<%@ |
operacion | comprobante/descuentoGeneral
|
obtDtoGeneralChequePropio() |
<%@ |
operacion | operacionesValor[valor/tipoValor/id=4]/valor/descuentoGeneral
|
obtFechaCreacion() |
<%= |
operacion_valor | valor/fechaCreacion
|
obtFechaEmision() |
<%= |
operacion_valor | valor/fechaEmision
|
obtImpuestosProductosExentos() |
<%= |
operacion_valor | valor/valoresConcepto[contains('1703 1783',subTipoValorCpto/id) and valor/letraFactura='A']/monto
|
obtImpuestosProductosIVA1050() |
<%= |
operacion_valor | valor/valoresConcepto[contains('1705 1785',subTipoValorCpto/id) and valor/letraFactura='A']/monto
|
obtImpuestosProductosIVA2100() |
<%= |
operacion_valor | valor/valoresConcepto[contains('1706 1786',subTipoValorCpto/id) and valor/letraFactura='A']/monto
|
obtImpuestosProductosIVA2700() |
<%= |
operacion_valor | valor/valoresConcepto[contains('2287 2284',subTipoValorCpto/id) and valor/letraFactura='A']/monto
|
obtLetraFactura() |
<%= |
operacion_valor | valor/letraFactura
|
obtNumeroComprobante() |
<%= |
operacion_valor | valor/codificacion
|
obtPercepcionesIngresosBrutos() |
<%= |
operacion_valor | valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto
|
obtPrecioFinal() |
<%= |
operacion_valor | valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto
|
obtPrecioFinalTodoCte() |
<%= |
operacion_valor | valor/valoresConcepto[subTipoValorCpto/concepto/id=501]/monto
|
obtTipoOperacion() |
<%= |
operacion_valor | operacion/tipoOperacion
|
obtTotalExento() |
<%= |
operacion_valor | valor/valoresConcepto[subTipoValorCpto/concepto/id=503 and subTipoValorCpto/visiblePos=1]/monto
|
obtTotalGravado() |
<%= |
operacion_valor | valor/valoresConcepto[subTipoValorCpto/concepto/id=541]/monto
|
obtTotalPercepcionesIIBB() |
<%= |
operacion_valor | valor/valoresConcepto[subTipoValorCpto/concepto/id=516 and subTipoValorCpto/visiblePos=1]/monto
|
obtValorCteFechaEmision() |
<%= |
operacion_valor | valor/comprobante/fechaEmision
|
obtValorCteNumero() |
<%= |
operacion_valor | valor/comprobante/codificacion
|
obtValorCteVendedor() |
<%= |
operacion_valor | valor/comprobante/objusuariocreacion/alias
|
obtValorMontoPrincipal() |
<%= |
operacion_valor | valor/montoPrincipal
|
Vendedor
| Método | Función | Tabla | Atributo |
|---|---|---|---|
obtVendedor() |
<%= |
operacion_valor | valor/objUsuarioCreacion/alias
|
Liquidaciones (Plantillas v4)
Sin método obt* definido — acceso directo por XPath.
| Atributo | Función | Tabla | Descripción |
|---|---|---|---|
entidadLiquidacion |
<%@ |
operacion_valor | Nombre del cliente del recibo |
fechaLiquidacion |
<%@ |
operacion_valor | Fecha de liquidación |
codificacion |
<%* |
item_liquidacion | Número del comprobante |
entidad |
<%* |
item_liquidacion | Nombre del cliente |
fechaEmision |
<%* |
item_liquidacion | Fecha de emisión del comprobante |
fechaVencimiento |
<%* |
item_liquidacion | Fecha de vencimiento de la cuota |
monto |
<%* |
item_liquidacion | Importe de la cuota |
subTipoValorCpto/nombre |
<%$ |
conceptos | Concepto total de liquidación |
monto |
<%$ |
conceptos | Importe total de liquidación |
6. Funciones JXPath
Funciones XPath estándar disponibles en las expresiones de plantilla.
| Función | Descripción |
|---|---|
abs(object) |
Devuelve el valor absoluto del argumento numérico. (Plantillas v4) |
concat(string, string, ...) |
Devuelve la concatenación de sus argumentos. |
sum(node-set) |
Devuelve la suma de los valores de los nodos del set, convertidos a número. |
7. Tabla de Caracteres Especiales
Para la obtención de la sintaxis completa de comandos, referirse a los manuales de cada modelo de impresora.
| Modelos | Hex / Unicode | ASCII | Descripción |
|---|---|---|---|
| Bematech, Epson | \u001B |
ESC | Inicio de comando (protocolo) |
| Bematech, Epson | \u001B@ |
ESC @ | Inicializa la impresora |
| Bematech | \u001Btn |
ESC t n | Selecciona página de código: n=2 (850), n=3 (437), n=4 (860), n=5 (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 espacio entre líneas |
| Epson | \u001B- |
ESC - | Selecciona/cancela modo subrayado |
| Epson | \u001BW |
ESC W | Selecciona/cancela el modo expandido |
| Hasar, Epson | \u001B!\u0008 |
ESC ! 8 | Selecciona modo enfatizado |
8. Ejemplos y Prototipos
Ajuste de renglones condicionales
Para que una línea no se imprima si el dato es nulo, colocar el contenido entre << y >>:
| Fuera del Concat | Dentro del Concat |
|---|---|
<<%@concat('Afil.: <', format:rpad(...,25), '>')%>> |
<<%@concat('--- Afil.: <', format:rpad(...,25), '>')%>>
|
Troqueles en Recetas
<%=format:avanzarLineas(round(ceiling(cantidadProductos div 4) * espacioTroquel * lineasEnBlancoXcm * 5))%>
-
ceiling(cantidadProductos div 4): 1–4 productos → 1 fila, 5–8 → 2 filas, etc. -
espacioTroquel: 1 si imprime troqueles, 0 si no. -
lineasEnBlancoXcm: parámetroESPACIOS_EN_BLANCO_POR_CENTIMETRO(defecto: 2.5). -
5: los 5 cm que miden los troqueles.
Códigos de Farmacia por Obra Social
<%=format:rightpad('Código en la OSP : ', operacionesValor[valor/tipoValor/id=2]/valor/codigoFarmaciaOS)%>
<%=format:rightpad('Código s/Obra Social: ', obtCodigoFarmaciaOS())%>
<%=format:rightpad('Código en la 1er OS : ', obtCodigoFarmacia1raOS())%>
...
<%=format:rightpad('Código en la 7ma OS : ', obtCodigoFarmacia7maOS())%>
Número de Autorización por Receta (múltiples tipos)
<%=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)%>
Prototipos — Datos Adicionales
XPaths directos:
<%=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))%>%>
Usando pseudo-funciones:
<%=format:rpad(obtNumeroComprobante(),13)
<%+concat('-', format:string(obtNombreDatoCodificado()), ' : ',
format:string(obtDatoCodificado()), ' : ',
format:string(obtNombreDePrototipoDetalle()), ' : ',
format:string(obtNombrePrototipoDePrototipoDetalle()), ' : ',
format:string(obtNombrePrototipoDePrototipoDatoAdicional()), ' : ',
format:string(obtNumeroLineaDePrototipoDatoAdicional()))%>%>
Prototipos — Impresión de todos los imprimibles
NombreDato: Dato (cabecera, detalle, pie):
<%=format:cpad('dummy',0)<%+concat(format:string(obtNombreDatoCodificado()),': ',format:string(obtDatoCodificado()))%>%>
<%=format:cpad('dummy',0)<%+concat(format:concatNoNull(format:string(obtCabeceraNombreDatoCodificado()),': ',format:string(obtCabeceraDatoCodificado()))%>%>
<%=format:cpad('dummy',0)<%+concat(format:concatNoNull(format:string(obtPieNombreDatoCodificado()),': ',format:string(obtPieDatoCodificado()))%>>
Solo Dato:
<%=format:cpad('dummy',0)<%+concat('',format:string(obtDatoCodificado()))%>%>
<%=format:cpad('dummy',0)<%+concat('',format:string(obtCabeceraDatoCodificado()))%>%>
<%=format:cpad('dummy',0)<%+concat('',format:string(obtPieDatoCodificado())%>%>