6 code snippets para desarrolladores Odoo
Reportes QWEB, código QR, símbolos monetarios y más
1 marzo, 2022 por
6 code snippets para desarrolladores Odoo
Yen Martínez
| Sin comentarios

Hoy te comparto algunos ‘snippets’ que me han resultado de gran utilidad. Si estás comenzando con Odoo, puede que aún no hayas trabajado con estos temas, así que puedes utilizar este post como punto de partida para investigar más sobre ellos, seguramente vas a necesitar conocerlos a profundidad en algún punto del desarrollo de tus proyectos. 

  1. Poner símbolo de moneda en un campo float de una vista Form

 <field name="total" widget='monetary' options="{'currency_field': 'currency_id'}"/>


Donde currency_id es un campo también de la vista, y en función de este, será el signo mostrado: EUR se mostrará como al final, USD se mostrará como $ antes del valor, etc.  

  1. Mostrar floats con 2 lugares decimales, en reportes QWEB

<span t-esc="'%.2f'%(float_field_value)"/>

  1. Mostrar en mayúsculas el nombre de la empresa activa, en reportes QWEB

<t t-esc="res_company.name.upper()"/>

  1. Generar código QR 

El modelo  'res.partner.bank' tiene métodos para trabajar con el código QR. Teniendo en cuenta que se encuentra en el módulo base, no tendrás que adicionar dependencias innecesarias para trabajar con él.
Para generar el código QR a partir de parámetros, puedes hacer lo siguiente:  


p_bank_obj = self.env['res.partner.bank']

qr_code = p_bank_obj.build_qr_code_base64(field_str_1, field_str_2)


Si tu interés es generarlo en un reporte QWEB, pásalo a una etiqueta <img/>:


<img class="border border-dark rounded" t-att-src="'qr_code" width="64" height="64"/>

Nota: Por supuesto puedes llamar el método que lo genera desde el mismo template del reporte.

  1. Forzar el cambio de página en reportes QWEB para no tronchar el contenido 

Dependiendo de lo que necesites, puedes usar una de esta variantes:


  1. <p style="page-break-before:always;"> 

</p> 


  1. <p style="page-break-after:always">

</p>


  1. <div style="page-break-after: auto;">

<span style="display: none;"> 

</span>

</div>


  1. <p style="page-break-inside: avoid">

</p>


  1. <div style="page-break-inside: auto">

</div>


  1. Completar con ceros una cantidad de caracteres a partir de un número dado

Ej: para obtener 0000089 a partir de 89.


init_str = 89

final_value = init_str.zfill(7)  


# result = 0000089

Nota: También puedes usarlo desde el mismo template de un reporte.


Aquí lo dejamos por hoy.  ;)

6 code snippets para desarrolladores Odoo
Yen Martínez
1 marzo, 2022
Share this post
Archivar
Registrarse to leave a comment