En las plantillas Twig está disponible el filtro price para mostrar precios y monedas:
{{ order.totalSumm|price }} # 1 234,56 $
Utilice el filtro |price para que el sistema aplique el formato y la moneda correspondientes.
El punto importante es identificar y visualizar correctamente la moneda y el monto. Cada uno de los campos correspondientes al dinero contiene el valor en la moneda del objeto o en la moneda básica.
Por ejemplo, el campo order.totalSumm contiene el valor en la moneda del pedido mientras order.purchaseSumm, en la moneda básica.
Para saber a qué moneda corresponde cada campo en concreto, consulte al Directorio de objetos.
Si no se transmite el código de moneda en los parámetros, el filtro intenta identificar primero la moneda del campo. Si no puede hacerlo, muestra la moneda básica.
Para que el filtro identifique correctamente la moneda del campo cuyo valor se muestra, debe recibir la pareja de objeto y campo. En caso de guardar el valor del campo en una variable intermedia e ingresar el precio a través de estos filtros para la variable, el contexto monetario del campo se perderá y se visualizará la moneda básica.
Consideremos un ejemplo
Supongamos que la moneda básica en el sistema sea el Dólar estadounidense ($) y la moneda adicional sea el Euro (€). Un pedido está formalizado en Euro y queremos generar una plantilla de la impresión con twig para imprimirla para este pedido.
Especifiquemos una construcción del siguiente tipo en la plantilla:
Total del pedido: {{ order.totalSumm|price }}
En la plantilla de impresión se visualizará:
Total del pedido: 1 000,45 €
Ahora cambiemos la construcción por
{% set total = order.totalSumm %}
Total del pedido: {{ total|price }}
En la plantilla de impresión se visualizará:
Total del pedido: 1 000,45 $
Como se nota, la moneda del campo del pedido se ha perdido y en la plantilla se visualiza el precio con una moneda incorrecta.
Cabe destacar que la moneda estará identificada correctamente si la referencia al campo se realizará a través de una cadena de llamadas a los objetos.
Por ejemplo,
{{ order.payments[0].amount|price }} # 1 000,45 €
{{ customer.lastOrder.totalSumm|price }} # 1 000,45 €