Commits

Dairon Medina committed 8998677

Mejoradas funciones de los modelos

Comments (0)

Files changed (1)

         
         return tot_pres if tot_pres else Decimal('0.00')
 
-    def total_gastos_in_range(self, desde, hasta):
+    def total_gastos_in_range(self, desde, hasta, proveedor=None):
         '''
         Devuelve el total de gastos de la obra en un rango 
         de fecha dados.
         '''
         tot_imp = DetalleGasto.objects.filter(obra=self,
-                                          gasto__fecha_op__range=(desde,
-                                                                  hasta)).aggregate(
-                                          Sum('imp_neto'))['imp_neto__sum']
+                                          gasto__fecha_op__range=(desde,hasta))
+        if proveedor:
+            tot_imp = tot_imp.filter(gasto__proveedor=proveedor)
+        
+        tot_imp = tot_imp.aggregate(Sum('imp_neto'))['imp_neto__sum']
 
         return tot_imp if tot_imp else Decimal('0.00')
 
-    def tiene_gastos_en_rango(self, desde, hasta):
+    def tiene_gastos_en_rango(self, desde, hasta, proveedor=None):
         '''
         Devuelve si esta obra tiene gastos en determinada fecha
         '''
         tiene = DetalleGasto.objects.filter(obra=self, gasto__fecha_op__range=(desde, hasta))
+        if proveedor:
+            tiene = tiene.filter(gasto__proveedor=proveedor)
 
-        return True if tiene else False
+        return True if tiene and tiene <> [] else False
 
-    def get_categorias(self, desde, hasta):
-        gastos = DetalleGasto.objects.filter(obra=self,
+    def get_categorias(self, desde, hasta, selected_cat=None):
+        if selected_cat:
+            return [selected_cat]
+        else:
+            gastos = DetalleGasto.objects.filter(obra=self,
                                              gasto__fecha_op__range=(desde,
                                                                      hasta))
-
-        categorias = []
-        for gasto in gastos:
-            cat = gasto.concepto.categoria
-            if not cat in categorias:
-                categorias.append(cat.id)
-        return Categoria.objects.filter(pk__in=categorias).order_by('codigo')
+            categorias = []
+            for gasto in gastos:
+                cat = gasto.concepto.categoria
+                if not cat in categorias:
+                    categorias.append(cat.id)
+            return Categoria.objects.filter(pk__in=categorias).order_by('codigo')
     
     
     def __unicode__(self):