[payments] add possibility to mark an invoice as paid, and log it
This commit is contained in:
parent
36ce00d50a
commit
ab3b99cebf
|
@ -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',
|
||||
|
|
Reference in New Issue