Abrechnung angepasst

This commit is contained in:
holger.trampe 2020-10-07 12:35:45 +02:00
parent 746e797ac6
commit 0d31f2b7fe
7 changed files with 48 additions and 19 deletions

View File

@ -57,7 +57,7 @@ class AgencyBillPlan(forms.ModelForm):
"agency_email" : "E-Mail", "agency_email" : "E-Mail",
"phone" : "Telefon", "phone" : "Telefon",
"agb" : "AGB akzeptieren", "agb" : "AGB akzeptieren",
"contract" : "Auftragsdatenverarbeitung akzeptieren" "contract" : "AV-Vertrag akzeptieren"
} }
@ -77,7 +77,7 @@ class AgencyBillPlan(forms.ModelForm):
self.fields['city'] = forms.CharField(required=True, label="Stadt") self.fields['city'] = forms.CharField(required=True, label="Stadt")
self.fields['agb'] = forms.BooleanField(required=True, label="AGB's akzeptieren") self.fields['agb'] = forms.BooleanField(required=True, label="AGB's akzeptieren")
self.fields['contract'] = forms.BooleanField(required=True, label="Auftragsdatenverarbeitung akzeptieren") self.fields['contract'] = forms.BooleanField(required=True, label="AV-Vertrag akzeptieren")
class AgencyEndBillPlan(forms.ModelForm): class AgencyEndBillPlan(forms.ModelForm):

View File

@ -17,7 +17,8 @@
</tr> </tr>
<tr> <tr>
{% loadUserCount request.user as usercount %} {% loadUserCount request.user as usercount %}
<td>Zusätzliche Nutzer (3,00 € pro Nutzer)</td><td>{{usercount}}</td> {% loadUserCountMoney request.user as usercount_pay %}
<td>{{usercount}}&nbsp;zusätzliche Nutzer (3,00 € pro Nutzer)</td><td>{{usercount_pay|floatformat:2}} €</td>
</tr> </tr>
<tr> <tr>
{% loadMWST user as mwst %} {% loadMWST user as mwst %}
@ -35,24 +36,20 @@
<h5 class="card-title">Ihre Zahlungsweise</h5> <h5 class="card-title">Ihre Zahlungsweise</h5>
{% getNextMonth request.user.profile.agency as nextMonth %} {% getNextMonth request.user.profile.agency as nextMonth %}
Ihre Agentur wurde am {{ request.user.profile.agency.registerdate|date:"d.m.Y" }} registriert.
{% if bills|length == 0 %} {% if bills|length == 0 %}
Es wurde noch kein Abonnement gestartet und keine Rechnungen gefunden. Sie können die Digitale Agentur bis zum {{nextMonth|date:"d.m.Y"}} kostenlos nutzen. Möchten Sie die Digitale Agentur auch nach diesem Zeitraum nutzen, starten Sie bitte ein neues Abonnement. Es wurde noch kein Abonnement gestartet und keine Rechnungen gefunden. Sie können die Digitale Agentur bis zum {{nextMonth|date:"d.m.Y"}} kostenlos nutzen. Möchten Sie die Digitale Agentur auch nach diesem Zeitraum nutzen, starten Sie bitte ein neues Abonnement.
<br /> <br />
<a href="{% url 'ag-billplanupdate' request.user.profile.agency.pk %}" class="btn btn-primary btn mt-2" onclick="">Abonnement starten</a> <a href="{% url 'ag-billplanupdate' request.user.profile.agency.pk %}" class="btn btn-primary btn mt-2" onclick="">Abonnement starten</a>
{% elif bills|length > 0 and request.user.profile.agency.paymentplan == 0 %} {% elif bills|length > 0 and request.user.profile.agency.paymentplan == 0 %}
Ihre aktuelle Rechnungen erlaubt Ihnen die Nutzung der digitalen Agentur bis zum {{bills.0.end|date:"d.m.Y"}}. Danach wird der Zugang gesperrt. Starten Sie ein neues Abonnement, um die digitale Agentur auch weiterhin zu nutzen.<br /> Ihre aktuelle Rechnungen erlaubt Ihnen die Nutzung der Digitalen Agentur bis zum {{bills.0.end|date:"d.m.Y"}}. Danach wird der Zugang gesperrt. Starten Sie ein neues Abonnement, um die Digitale Agentur auch weiterhin zu nutzen.<br />
<a href="{% url 'ag-billplanupdate' request.user.profile.agency.pk %}" class="btn btn-primary btn mt-2" onclick="">Abonnement starten</a> <a href="{% url 'ag-billplanupdate' request.user.profile.agency.pk %}" class="btn btn-primary btn mt-2" onclick="">Abonnement starten</a>
{% else %} {% else %}
<br /> Die Abrechnung erfolgt monatlich. Die nächste Rechnungserstellung erfolgt am {{bills.0.end|date:"d.m.Y"}}.<br />
Nächste Rechnungserstellung am {{bills.0.end|date:"d.m.Y"}}<br />
<a href="{% url 'ag-billplanend' request.user.profile.agency.pk %}" class="btn btn-primary btn mt-2" onclick="">Abonnement kündigen</a> <a href="{% url 'ag-billplanend' request.user.profile.agency.pk %}" class="btn btn-primary btn mt-2" onclick="">Abonnement kündigen</a>
{% endif %} {% endif %}
<hr> <hr>
<h5 class="card-title.">Fragen, Hilfe, Kündigung</h5> <h5 class="card-title.">Fragen, Hilfe, Kündigung</h5>
Bei Fragen zu Ihrer Abrechnung melden Sie sich bitte per E-Mail an <a href="mailto:abrechnung@digitale-agentur.com">abrechnung@digitale-agentur.com</a>. Bei Fragen zu Ihrer Abrechnung oder Kündigung wenden Sie sich bitte über das <a href="{% url 'supportda' %}">Kontaktformular</a> an uns. Weitere Informationen finden Sie in den AGB's.
<!-- TASK: Kündigungsmodaliäten einfügen -->
Die Kündigungsmodalitäten finden Sie in den AGB's. Alternativ wenden Sie sich an den Support.
</div> </div>
</div> </div>
</div> </div>
@ -61,7 +58,7 @@
<div class="card d-block mb-3"> <div class="card d-block mb-3">
<div class="card-body"> <div class="card-body">
<h5 class="card-title">E-Mail-Adresse</h5> <h5 class="card-title">E-Mail-Adresse</h5>
Informationen über neue Rechnungen werden automatisch an folgende E-Mailadresse gesendet:<br /> Bei neuen Rechnungen erfolgt eine automatische Benachrichtigung an folgende E-Mailadresse:<br />
{% if request.user.profile.agency.payment_address == None %} {% if request.user.profile.agency.payment_address == None %}
<i>Es wurde keine Adresse hinterlegt. Die Adresse wird an die Agenturadresse versendet:</i>&nbsp;<b>{{request.user.profile.agency.agency_email}}</b> <i>Es wurde keine Adresse hinterlegt. Die Adresse wird an die Agenturadresse versendet:</i>&nbsp;<b>{{request.user.profile.agency.agency_email}}</b>
{% else %} {% else %}
@ -78,9 +75,26 @@
{% if bills|length == 0 %} {% if bills|length == 0 %}
Es liegen keine Rechnungen vor. Es liegen keine Rechnungen vor.
{% endif %} {% endif %}
{% for bill in bills %} <table style="width: 70%;">
<a href="{% url 'ag-getbillpdf' bill.pk %}" target="_blank">Rechnung vom {{bill.billdate|date:"d.m.Y"}} ({{bill.billnumber}})</a> - {% if bill.billstatus == "open" %} Offen {% elif bill.billstatus == "paid" %} Bezahlt {% endif %} <br /> <thead>
{% endfor %} <tr>
<td>Rechnungs-Nr.</td>
<td>Datum</td>
<td>Status</td>
</tr>
</thead>
<tbody>
{% for bill in bills %}
<tr>
<td><a href="{% url 'ag-getbillpdf' bill.pk %}" target="_blank">{{bill.billnumber}}</a></td>
<td>{{bill.billdate|date:"d.m.Y"}}</td>
<td>
{% if bill.billstatus == "open" %} <i class="far fa-times-circle" style="color: red"></i> {% elif bill.billstatus == "paid" %} <i class="far fa-check-circle" style="color: green"></i> {% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div> </div>
</div> </div>
</div> </div>

View File

@ -23,14 +23,14 @@
<div class="col-4"> <div class="col-4">
<h5>Abonnement festlegen</h5> <h5>Abonnement festlegen</h5>
<hr> <hr>
<p>Das Abonnement der digitalen Agentur umfasst die Nutzung inkl. der aktuellen Nutzeranzahl über einen Monat. Nach jedem Monat wird eine neue Rechnung generiert, um die aktuelle Nutzeranzahl zu erfassen. Sie können innerhalb des Monats ihr Abonnement kündigen. <p>Das Abonnement der Digitalen Agentur umfasst die Nutzung inkl. der aktuellen Nutzeranzahl und verlängert sich automatisch. Nach jedem Monat wird eine neue Rechnung erstellt. Sie können innerhalb eines Monats ihr Abonnement kündigen.
<hr> <hr>
<p>Mit Klick auf dem Button <i>Jetzt kostenpflichtig bestellen</i> wird eine Rechnung für Ihre Agentur generiert und per E-Mail an die hinterlegte Rechnungs-E-Mailadresse oder an die Agentur-E-Mailadresse versendet. Der Rechnungsbetrag muss innerhalb von 14 Tagen beglichen werden. <p>Mit Klick auf dem Button <i>Jetzt kostenpflichtig bestellen</i> wird eine Rechnung für Ihre Agentur generiert und per E-Mail an die hinterlegte Rechnungs-E-Mailadresse oder an die Agentur-E-Mailadresse versendet. Der Rechnungsbetrag muss innerhalb von 14 Tagen beglichen werden.
<hr> <hr>
<b>Beginn des Leistungszeitraums: </b>{{end|date:"d.m.Y"}}<br /> <b>Beginn des Leistungszeitraums: </b>{{end|date:"d.m.Y"}}<br />
{% loadFinalMoney user as fm %} {% loadFinalMoney user as fm %}
<b>Rechnungsbetrag: <span id="billfinal">{{fm|floatformat:2|intcomma}}</span>&nbsp;</b> <b>Aktueller Rechnungsbetrag: <span id="billfinal">{{fm|floatformat:2|intcomma}}</span>&nbsp;</b>
<hr> <hr>
{{form.contract|as_crispy_field}} {{form.contract|as_crispy_field}}
{{form.agb|as_crispy_field}} {{form.agb|as_crispy_field}}

View File

@ -1650,7 +1650,7 @@ class BillPlanUpdate(UpdateView):
}, },
{ {
"type" : "custom", "type" : "custom",
"name" : "Digitale Agentur: Zusätzliche Mitarbeiter", "name" : "Digitale Agentur: Zusätzliche Nutzer",
"description" : "Zeitraum " + start_date_string + " - " + end_date_string, "description" : "Zeitraum " + start_date_string + " - " + end_date_string,
"quantity" : usercount, "quantity" : usercount,
"unitName" : "Stück", "unitName" : "Stück",

View File

@ -732,6 +732,17 @@ def loadFinalMoney(user):
return finalMoney return finalMoney
@register.simple_tag
def loadUserCountMoney(user):
usercount = len(User.objects.filter(profile__agency=user.profile.agency))
if(usercount < 4):
usercount = 0
else:
usercount = usercount - 3
return usercount*3
@register.simple_tag @register.simple_tag
def gethistoryuser(userid): def gethistoryuser(userid):

View File

@ -1171,7 +1171,7 @@ def cronactionsbill(request, code):
if(code == settings.CRONAPIKEY): if(code == settings.CRONAPIKEY):
today = date.today() today = date.today()
# Check, ob Rechnungen bezahlt wurden # Check, ob Rechnungen bezahlt wurden
unpaid_bills = AgencyBills.objects.filter(billstatus="open") unpaid_bills = AgencyBills.objects.all()
for bill in unpaid_bills: for bill in unpaid_bills:
# Für jede Rechnung eine Anfrage an die LexOffice API und voucherStatus auslesen # Für jede Rechnung eine Anfrage an die LexOffice API und voucherStatus auslesen
@ -1187,6 +1187,10 @@ def cronactionsbill(request, code):
if(json.loads(r.text)["voucherStatus"] == "paid"): if(json.loads(r.text)["voucherStatus"] == "paid"):
bill.billstatus="paid" bill.billstatus="paid"
bill.save() bill.save()
else:
bill.billstatus="open"
bill.save()
# Monatliche Berechnung # Monatliche Berechnung
# Alle Rechnungen laden, deren Letzter Tag HEUTE ist und bei ausgewähltem Paymentplan 1 eine neue Rechnung erstellen, Mailverschicke, Nutzeraccouns zählen und neue Rechnung in der Agentur hinterlegen # Alle Rechnungen laden, deren Letzter Tag HEUTE ist und bei ausgewähltem Paymentplan 1 eine neue Rechnung erstellen, Mailverschicke, Nutzeraccouns zählen und neue Rechnung in der Agentur hinterlegen
@ -1253,7 +1257,7 @@ def cronactionsbill(request, code):
}, },
{ {
"type" : "custom", "type" : "custom",
"name" : "Digitale Agentur: Zusätzliche Mitarbeiter", "name" : "Digitale Agentur: Zusätzliche Nutzer",
"description" : "Zeitraum " + start_date_string + " - " + end_date_string, "description" : "Zeitraum " + start_date_string + " - " + end_date_string,
"quantity" : usercount, "quantity" : usercount,
"unitName" : "Stück", "unitName" : "Stück",