Users can edit their company details for invoices.

This commit is contained in:
Pēteris Caune 2017-08-07 20:18:58 +03:00
parent dfed908873
commit d6917065d4
5 changed files with 111 additions and 44 deletions

5
hc/payments/forms.py Normal file
View File

@ -0,0 +1,5 @@
from django import forms
class BillToForm(forms.Form):
bill_to = forms.CharField(max_length=500, required=False)

View File

@ -24,3 +24,11 @@ class BillingTestCase(BaseTestCase):
r = self.client.get("/billing/") r = self.client.get("/billing/")
self.assertContains(r, "123") self.assertContains(r, "123")
self.assertContains(r, "def456") self.assertContains(r, "def456")
def test_it_saves_company_details(self):
self.client.login(username="alice@example.org", password="password")
r = self.client.post("/billing/", {"bill_to": "foo\nbar"})
self.assertEqual(r.status_code, 302)
self.profile.refresh_from_db()
self.assertEqual(self.profile.bill_to, "foo\nbar")

View File

@ -6,7 +6,8 @@ from django.http import (HttpResponseBadRequest, HttpResponseForbidden,
from django.shortcuts import redirect, render from django.shortcuts import redirect, render
from django.views.decorators.http import require_POST from django.views.decorators.http import require_POST
from .models import Subscription from hc.payments.forms import BillToForm
from hc.payments.models import Subscription
if settings.USE_PAYMENTS: if settings.USE_PAYMENTS:
import braintree import braintree
@ -177,6 +178,13 @@ def cancel_plan(request):
@login_required @login_required
def billing(request): def billing(request):
if request.method == "POST":
form = BillToForm(request.POST)
if form.is_valid():
request.user.profile.bill_to = form.cleaned_data["bill_to"]
request.user.profile.save()
return redirect("hc-billing")
sub = Subscription.objects.get(user=request.user) sub = Subscription.objects.get(user=request.user)
transactions = braintree.Transaction.search( transactions = braintree.Transaction.search(

View File

@ -3,7 +3,8 @@
} }
.channels-table .channel-row > td { .channels-table .channel-row > td {
padding: 10px 0; padding-top: 10px;
padding-bottom: 10px;
} }
.channels-table .value-cell { .channels-table .value-cell {

View File

@ -4,8 +4,9 @@
{% block content %} {% block content %}
<h1>Billing History</h1> <h1>Billing History</h1>
<div class="row">
<div class="col-sm-9">
<table class="table"> <table class="table">
<tr> <tr>
@ -49,5 +50,49 @@
</tr> </tr>
{% endfor%} {% endfor%}
</table> </table>
</div>
<div class="col-sm-3">
<p><strong>Bill to:</strong></p>
<p>
{% if request.user.profile.bill_to %}
{{ request.user.profile.bill_to|linebreaksbr }}
{% else %}
{{ request.user.email }}
{% endif %}
</p>
<button
data-toggle="modal"
data-target="#bill-to-modal"
class="btn btn-default">
Edit Company Details…
</button>
</div>
</div>
<div id="bill-to-modal" class="modal">
<div class="modal-dialog">
<form id="bill-to-form" method="post">
{% csrf_token %}
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4>Company Details for Invoice</h4>
</div>
<div class="modal-body">
<textarea
name="bill_to"
class="form-control"
rows="5">{{ request.user.profile.bill_to|default:request.user.email }}</textarea>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Save Changes</button>
</div>
</div>
</form>
</div>
</div>
{% endblock %} {% endblock %}