Parcourir la source

Display monthly cost for goods

Jocelyn Delande il y a 9 ans
Parent
commit
8739c0a867
2 fichiers modifiés avec 13 ajouts et 1 suppressions
  1. 4 1
      costs/admin.py
  2. 9 0
      costs/models.py

+ 4 - 1
costs/admin.py

@@ -20,7 +20,10 @@ class CostAdmin(admin.ModelAdmin):
 
 @admin.register(Good)
 class GoodAdmin(admin.ModelAdmin):
-    list_display = ('name', 'price', 'provisioning_duration')
+    list_display = (
+        '__str__', 'price', 'document',
+        'provisioning_duration', 'monthly_provision')
+    list_filter = [DirectDocumentFilter]
 
 
 @admin.register(Service)

+ 9 - 0
costs/models.py

@@ -39,6 +39,12 @@ class Good(AbstractItem):
     provisioning_duration = models.DurationField(
         choices=settings.PROVISIONING_DURATIONS)
 
+    def get_use_class(self):
+        return GoodUse
+
+    def monthly_provision(self):
+        return self.price/self.provisioning_duration.days*(365.25/12)
+
     class Meta:
         verbose_name = 'Bien'
 
@@ -64,6 +70,9 @@ class CostUse(AbstractUse):
 class GoodUse(AbstractUse):
     resource = models.ForeignKey(Good)
 
+    def monthly_provision_share(self):
+        return self.real_share()*self.resource.monthly_provision()
+
 
 class Service(AbstractItem):
     """ A service we sell