[payments] add possibility to mark an invoice as paid, and log it

This commit is contained in:
Benjamin Dauvergne 2012-10-03 17:21:01 +02:00
parent 36ce00d50a
commit ab3b99cebf
1 changed files with 48 additions and 12 deletions

View File

@ -12,7 +12,7 @@ import wcs.admin.root
from wcs.backoffice.menu import *
from wcs.formdef import FormDef
from qommon import errors, misc, template
from qommon import errors, misc, template, get_logger
from qommon.form import *
from qommon.strftime import strftime
@ -349,17 +349,51 @@ class RegieDirectory(Directory):
invoices.sort(reverse=reverse, key=key)
return invoices
def unpay(self, request, invoice):
get_logger().info(_('manually set unpaid invoice %s in regie %s')
% (invoice.id, self.regie.id))
transaction = Transaction()
transaction.invoice_ids = [ invoice.id ]
transaction.order_id = 'Manual action'
transaction.start = datetime.datetime.now()
transaction.end = transaction.start
transaction.bank_data = {
'action': 'Set unpaid',
'by': request.user.get_display_name() + ' (%s)' % request.user.id
}
transaction.store()
invoice.paid = False
invoice.paid_date = None
invoice.store()
def pay(self, request, invoice):
get_logger().info(_('manually set paid invoice %s in regie %s')
% (invoice.id, self.regie.id))
transaction = Transaction()
transaction.invoice_ids = [ invoice.id ]
transaction.order_id = 'Manual action'
transaction.start = datetime.datetime.now()
transaction.end = transaction.start
transaction.bank_data = {
'action': 'Set paid',
'by': request.user.get_display_name() + ' (%s)' % request.user.id
}
transaction.store()
invoice.paid = True
invoice.paid_date = transaction.start
invoice.store()
def invoice_listing [html] (self):
request = get_request()
get_response().add_css_include('../../themes/auquotidien/admin.css')
if request.get_method() == 'POST':
if 'unpay' in request.form:
invoice_id = request.form.get('id')
invoice = Invoice.get(invoice_id, ignore_errors=True)
if invoice:
invoice.paid = False
invoice.paid_date = None
invoice.store()
invoice_id = request.form.get('id')
invoice = Invoice.get(invoice_id, ignore_errors=True)
if invoice:
if 'unpay' in request.form:
self.unpay(request, invoice)
elif 'pay' in request.form:
self.pay(request, invoice)
return redirect('')
try:
offset = int(request.form.get('offset', 0))
@ -394,11 +428,13 @@ class RegieDirectory(Directory):
user.name
'</td><td class="subject">%s</td>' % (invoice.subject or '')
'<td>'
'<form method="post">'
'<input type="hidden" name="id" value="%s"/> ' % invoice.id
if invoice.paid:
'<form method="post">'
'<input type="hidden" name="id" value="%s"/> ' % invoice.id
'<input type="submit" name="unpay" value="%s"/>' % _('Unpay')
'</form>'
'<input type="submit" name="unpay" value="%s"/>' % _('Set unpaid')
else:
'<input type="submit" name="pay" value="%s"/>' % _('Set paid')
'</form>'
'</td></tr>'
transactions = Transaction.get_with_indexed_value('invoice_ids',