{% extends 'base.html.twig' %} {% block title %}{{ title }}{% endblock %} {% macro canvas_field(campo, index, unidad) %}
{{ campo.etiqueta }} {{ campo.etiqueta }}
{% endmacro %} {% block content_header %}
Volver a formatos

{{ title }}

Arrastra los campos sobre la hoja para colocarlos. Lo que ves es lo que se imprime.

{% if formato %} {# target="_blank" (una pestana nueva sin nombre en cada envio) es lo que algunos navegadores endurecidos contra popups (p. ej. Brave con Shields) bloquean en silencio a partir del segundo clic, sin mostrar ningun aviso: el usuario ve "no pasa nada". Un target con nombre fijo reutiliza siempre la misma pestana en vez de abrir una nueva cada vez, que es el patron que esos navegadores SI dejan pasar de forma confiable (y de paso evita acumular pestanas). #}
{% endif %}
{% endblock %} {% block content %} {% import _self as voucher %} {% set currentName = form_data.nombre is defined ? form_data.nombre : (formato ? formato.nombre : '') %} {% set currentBancoId = form_data.banco_id is defined ? form_data.banco_id : (formato and formato.banco ? formato.banco.id : '') %} {% set currentCuentaId = form_data.cuenta_bancaria_id is defined ? form_data.cuenta_bancaria_id : (formato and formato.cuentaBancaria ? formato.cuentaBancaria.id : '') %} {% set currentWidth = form_data.papel_ancho is defined ? form_data.papel_ancho : (formato ? formato.papelAncho : '216.00') %} {% set currentHeight = form_data.papel_alto is defined ? form_data.papel_alto : (formato ? formato.papelAlto : '90.00') %} {% set currentOrientation = form_data.orientacion is defined ? form_data.orientacion : (formato ? formato.orientacion : 'horizontal') %} {% set currentUnit = form_data.unidad is defined and form_data.unidad in ['mm', 'cm', 'px'] ? form_data.unidad : (formato ? formato.unidad : 'mm') %} {% set currentActive = form_data is not empty ? form_data.activo is defined : (not formato or formato.activo) %} {% set hasSubmittedFields = form_data.campos is defined and form_data.campos is iterable and form_data.campos|length > 0 %} {% set currentReferenceImageUrl = formato and formato.referenceImagePath ? '/' ~ formato.referenceImagePath|trim('/') : null %} {# Una sola lista normalizada de campos alimenta la hoja y el panel lateral. #} {% set campos = [] %} {% if hasSubmittedFields %} {% set campos = form_data.campos %} {% elseif formato %} {% for campo in formato.campos %} {% set campos = campos|merge([{ campo: campo.campo, etiqueta: campo.etiqueta, x: campo.x, y: campo.y, width: campo.width, height: campo.height, fontSize: campo.fontSize, fontFamily: campo.fontFamily, align: campo.align, visible: campo.visible }]) %} {% endfor %} {% else %} {% for key, label in defaultFields %} {% set campos = campos|merge([{ campo: key, etiqueta: label, x: '15.00', y: (12 + loop.index0 * 10) ~ '.00', width: key == 'monto_letras' ? '150.00' : '70.00', height: '8.00', fontSize: '10.00', fontFamily: 'Arial', align: 'left', visible: true }]) %} {% endfor %} {% endif %}
{% if form_errors.form is defined %} {% endif %} {# ---------------------------------------------------------------- 1 #}
1

Datos del formato

Con que banco y cuenta se usa esta plantilla.

{# ---------------------------------------------------------------- 2 #}
2

Hoja

Elige un tamano de la lista o escribe el tuyo. Todas las medidas del formato (hoja y campos) se guardan en la unidad que selecciones aqui.

{{ currentUnit }}
{{ currentUnit }}
{# ---------------------------------------------------------------- 3 #}
3

Diseno

Arrastra cada campo sobre la hoja; la esquina inferior derecha cambia el tamano. X se mide desde el borde izquierdo y Y desde el borde superior.

{# ---- vista previa ------------------------------------------------ #}
100%
{% if formato %}
{% if currentReferenceImageUrl %} {% endif %}
{% endif %}

{% if currentReferenceImageUrl %} Imagen de referencia para calcar los campos {% endif %} {% for campo in campos %} {{ voucher.canvas_field(campo, loop.index0, currentUnit) }} {% endfor %}

Con el campo seleccionado: flechas para mover, Shift+flechas para avanzar 5 {{ currentUnit }}, Ctrl+flechas para cambiar el tamano.

{# ---- panel de campos -------------------------------------------- #}
{% set templateField = { campo: 'texto', etiqueta: 'Texto adicional', x: '15.00', y: '15.00', width: '70.00', height: '8.00', fontSize: '10.00', fontFamily: 'Arial', align: 'left', visible: true } %}
Cancelar
{% if formato %} {# Formularios reales fuera del formulario principal (los
no se pueden anidar): el input y el boton de arriba se asocian a estos via el atributo form="", asi se ven dentro de la barra de herramientas del lienzo pero suben/quitan la imagen con su propio POST, sin mezclarse con el guardado de los campos del formato. #}
{% endif %} {% endblock %}