From 673e8a0c79df1b5d601c75913950d3c77e0a3e1e Mon Sep 17 00:00:00 2001 From: Modulos Date: Sat, 6 May 2017 14:44:08 +0200 Subject: [PATCH] Add total_price to HostingBill model --- .../0031_hostingbill_total_price.py | 20 ++++ hosting/models.py | 1 + hosting/templates/hosting/bill_detail.html | 91 +++++++++---------- hosting/views.py | 10 +- 4 files changed, 73 insertions(+), 49 deletions(-) create mode 100644 hosting/migrations/0031_hostingbill_total_price.py diff --git a/hosting/migrations/0031_hostingbill_total_price.py b/hosting/migrations/0031_hostingbill_total_price.py new file mode 100644 index 00000000..0a15c1f9 --- /dev/null +++ b/hosting/migrations/0031_hostingbill_total_price.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.4 on 2017-05-06 12:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('hosting', '0030_hostingbill'), + ] + + operations = [ + migrations.AddField( + model_name='hostingbill', + name='total_price', + field=models.FloatField(default=0.0), + ), + ] diff --git a/hosting/models.py b/hosting/models.py index a27fb487..8c6a2c0d 100644 --- a/hosting/models.py +++ b/hosting/models.py @@ -238,6 +238,7 @@ class ManageVM(models.Model): class HostingBill(AssignPermissionsMixin, models.Model): customer = models.ForeignKey(StripeCustomer) billing_address = models.ForeignKey(BillingAddress) + total_price = models.FloatField(default=0.0) permissions = ('view_hostingbill',) diff --git a/hosting/templates/hosting/bill_detail.html b/hosting/templates/hosting/bill_detail.html index 1904bf82..b58c21f7 100644 --- a/hosting/templates/hosting/bill_detail.html +++ b/hosting/templates/hosting/bill_detail.html @@ -7,29 +7,29 @@
{# Adress bar #}
-
-

{% trans "Invoice"%}

{% trans "Order #"%} {{bill.id}}

-
+
+

{% trans "Invoice"%}

{% trans "Order #"%} {{bill.id}}

+

-
-
- {{bill.customer.user.name}}
- {{bill.billing_address.street_address}},{{bill.billing_address.postal_code}}
- {{bill.billing_address.city}}, {{bill.billing_address.country}}. -
-
-
-
- {% trans "ungleich GmbH" %}
- {% trans "buchhaltung@ungleich.ch" %}
- {% trans "Hauptstrasse 14"%}
- {% trans "CH-8775 Luchsingen"%}
- {% trans "Mwst-Nummer: CHE-109.549.333 MWST"%}
+
+
+ {{bill.customer.user.name}}
+ {{bill.billing_address.street_address}},{{bill.billing_address.postal_code}}
+ {{bill.billing_address.city}}, {{bill.billing_address.country}}. +
+
+
+
+ {% trans "ungleich GmbH" %}
+ {% trans "buchhaltung@ungleich.ch" %}
+ {% trans "Hauptstrasse 14"%}
+ {% trans "CH-8775 Luchsingen"%}
+ {% trans "Mwst-Nummer: CHE-109.549.333 MWST"%}
-
-
+
+

@@ -48,45 +48,42 @@ {% for vm in vms %} - - - - + + + + {% endfor %} {# Bill total#} - - - - - + +
{{ vm.name }}{{ vm.cores }}{{ vm.memory }}{{ vm.disk_size }}{{ vm.price }}{{ vm.cores }}{{ vm.memory|floatformat }} GiB {{ vm.disk_size|floatformat }} GiB {{ vm.price|floatformat }} CHF
{% trans "Total:" %} {% trans "Brutto" %} {% trans "Netto" %} {% trans "Total:" %} {{ bill.total_price}} CHF

{# Bill Footer #}
- {% trans "Alles Preise in CHF mit 8% Mehrwertsteuer." %} - {% trans "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang." %} - {% trans "Kontoverbindung:" %} -
-
- {% trans "IBAN:" %} -
-
- {% trans "BIC:" %} -
-
-
-
- {% trans "CH02 ............" %} -
-
- {% trans "POFICHBEXXX" %} -
-
+ {% trans "Alles Preise in CHF mit 8% Mehrwertsteuer." %} + {% trans "Betrag zahlbar innerhalb von 30 Tagen ab Rechnungseingang." %} + {% trans "Kontoverbindung:" %} +
+
+ {% trans "IBAN:" %} +
+
+ {% trans "BIC:" %} +
+
+
+
+ {% trans "CH02 ............" %} +
+
+ {% trans "POFICHBEXXX" %} +
+
{% endblock %} diff --git a/hosting/views.py b/hosting/views.py index c9634200..b552063a 100644 --- a/hosting/views.py +++ b/hosting/views.py @@ -448,9 +448,10 @@ class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailV # Get vm_pool for given user_id vm_pool = oca.VirtualMachinePool(client) vm_pool.info(filter=user_id) + # Reset total price + context['bill'].total_price = 0 # Add vm in vm_pool to context for vm in vm_pool: - #TODO: Replace with vm plan name = vm.name cores = int(vm.template.vcpu) memory = int(vm.template.memory) / 1024 @@ -461,12 +462,17 @@ class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailV disk_size += int(disk.size) / 1024 else: disk_size = int(vm.template.disk.size) / 1024 + + #TODO: Replace with vm plan + price = 0.6 * disk_size + 2 * memory + 5 * cores vm = {} vm['name'] = name - vm['price'] = 0.6 * disk_size + 2 * memory + 5 * cores + vm['price'] = price vm['disk_size'] = disk_size vm['cores'] = cores vm['memory'] = memory context['vms'].append(vm) + context['bill'].total_price += price + context['bill'].save() return context