Просмотр исходного кода

corrijo filtro para poner coma en lugar de espacio en los miles

Celestino Rey 8 месяцев назад
Родитель
Сommit
179baf4b03
1 измененных файлов с 33 добавлено и 10 удалено
  1. 33 10
      src/misfinanzas/templatetags/filtros_de_entorno.py

+ 33 - 10
src/misfinanzas/templatetags/filtros_de_entorno.py

@@ -1,6 +1,5 @@
 import os
 from django import template
-from django.utils.numberformat import format as format_number
 
 register = template.Library()
 
@@ -19,14 +18,38 @@ def formato_numero(value, decimal_places=2):
         # Convertir a float
         num = float(value)
         
-        # Formatear con el número de decimales especificado
-        formatted = format_number(
-            num,
-            decimal_sep=',',
-            thousand_sep='.',
-            force_grouping=True,
-            precision=decimal_places
-        )
-        return formatted
+        # Formato con 2 decimales por defecto
+        if decimal_places is None or decimal_places == '':
+            decimal_places = 2
+        else:
+            decimal_places = int(decimal_places)
+        
+        # Formatear manualmente
+        format_string = f"{{:.{decimal_places}f}}"
+        formatted = format_string.format(num)
+        
+        # Separar parte entera y decimal
+        parts = formatted.split('.')
+        integer_part = parts[0]
+        decimal_part = parts[1] if len(parts) > 1 else '0' * decimal_places
+        
+        # Agregar separadores de miles a la parte entera
+        # Manejar números negativos
+        if integer_part.startswith('-'):
+            sign = '-'
+            integer_part = integer_part[1:]
+        else:
+            sign = ''
+        
+        # Invertir para procesar de derecha a izquierda
+        reversed_int = integer_part[::-1]
+        grouped = '.'.join([reversed_int[i:i+3] for i in range(0, len(reversed_int), 3)])
+        integer_part = grouped[::-1]
+        
+        # Combinar con el signo
+        integer_part = sign + integer_part
+        
+        # Retornar con coma como separador decimal
+        return f"{integer_part},{decimal_part}"
     except (ValueError, TypeError):
         return value