Uno de mis módulos favoritos de Odoo es report_xlsx. El primer motivo es por los usuarios, muy raras veces piden un PDF. Quiza para una factura o pedido de ventas, o remito. Y para de contar. Para cualquier otro listado prefieren una planilla de Excel (por razones obvias).
El módulo report_xlsx (el cual lo pueden descargar de OCA) permite generar reportes desde Odoo, pero no cualquier tipo de reportes. No es un PDF, no es un documento Word ni archivo de texto... permite armar (y descargar) una planilla de Excel con el formato y contenido que uno quiera. Practicamente no tiene limitaciones. Ya hablamos en otros posts sobre como usar report_xlsx, pero hoy voy a contar un pequeño truco.
Una necesidad constante en las planillas de Excel es formatear los números (montos o cantidades) y si bien podemos hacerlo tranquilamente formateando el monto en Python formateando un número como un string... muy lejos no nos va a llevar. El usuario de Excel espera una cifra apropiadamente formateada como número en Excel. Como lo hacemos?
report_xlsx está basada en la librería XLSXWriter. Entonces, lo que podamos hacer con dicha librería, lo podemos hacer con nuestro módulo en Odoo. Por ende, si tenemos que formatear una cifra, primero debemos definir el estilo
currency_format = workbook.add_format({'num_format': '#,##0.00'}) # two decimals
Y luego escribir la celda con el formato necesitado:
sheet.write(row,col,amount,currency_format)
Y de esa manera obtenemos la celda con el monto en el formato que desea el usuario.