2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-18 21:15:41 +00:00

Report helper (#6454)

* Adds helper function for formatting numbers in reports

* Update docs
This commit is contained in:
Oliver
2024-02-08 15:01:47 +11:00
committed by GitHub
parent 226dc82cfd
commit a99ba75fed
2 changed files with 60 additions and 0 deletions

View File

@ -3,6 +3,7 @@
import base64
import logging
import os
from decimal import Decimal
from django import template
from django.conf import settings
@ -376,3 +377,48 @@ def render_html_text(text: str, **kwargs):
output += ''.join([f'</{tag}>' for tag in tags])
return mark_safe(output)
@register.simple_tag
def format_number(number, **kwargs):
"""Render a number with optional formatting options.
kwargs:
decimal_places: Number of decimal places to render
integer: Boolean, whether to render the number as an integer
leading: Number of leading zeros
"""
try:
number = Decimal(str(number))
except Exception:
# If the number cannot be converted to a Decimal, just return the original value
return str(number)
if kwargs.get('integer', False):
# Convert to integer
number = Decimal(int(number))
# Normalize the number (remove trailing zeroes)
number = number.normalize()
decimals = kwargs.get('decimal_places', None)
if decimals is not None:
try:
decimals = int(decimals)
number = round(number, decimals)
except ValueError:
pass
value = str(number)
leading = kwargs.get('leading', None)
if leading is not None:
try:
leading = int(leading)
value = '0' * leading + value
except ValueError:
pass
return value