forked from CGM_Public/pretix_original
Fix #258 -- Add a comment field to bank transactions
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.2 on 2016-10-08 17:50
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('banktransfer', '0002_auto_20160908_2020'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='banktransaction',
|
||||
name='comment',
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
]
|
||||
@@ -50,6 +50,7 @@ class BankTransaction(models.Model):
|
||||
amount = models.DecimalField(max_digits=10, decimal_places=2)
|
||||
date = models.CharField(max_length=50)
|
||||
order = models.ForeignKey('pretixbase.Order', null=True, blank=True)
|
||||
comment = models.TextField(blank=True)
|
||||
|
||||
def calculate_checksum(self):
|
||||
clean = re.compile('[^a-zA-Z0-9.-]')
|
||||
|
||||
@@ -66,6 +66,49 @@ var bankimport_transactionlist = {
|
||||
});
|
||||
},
|
||||
|
||||
comment_reset_to_text: function (id, text) {
|
||||
var $box = $("tr[data-id=" + id + "] .comment-box");
|
||||
$box.html("")
|
||||
.append($("<strong>").text(gettext("Comment:")))
|
||||
.append(" ")
|
||||
.append($("<span>").addClass("comment").text(text))
|
||||
.append(" ")
|
||||
.append($("<a>").addClass("comment-modify btn btn-default btn-xs")
|
||||
.append("<span class='fa fa-edit'></span>"));
|
||||
},
|
||||
|
||||
comment_start_edit: function (e) {
|
||||
var $box = $(e.target).closest("div");
|
||||
var id = $box.closest("tr").attr("data-id");
|
||||
var $inp = $("<textarea>").addClass("form-control");
|
||||
var orig_text = $box.find(".comment").text();
|
||||
$inp.val(orig_text);
|
||||
|
||||
var $btngrp = $("<div>");
|
||||
$btngrp.addClass("btn-group");
|
||||
var $btn1 = $("<button>");
|
||||
$btn1.attr("type", "button").addClass("btn btn-default");
|
||||
$btn1.append("<span class='fa fa-check'></span>");
|
||||
$btngrp.append($btn1);
|
||||
var $btn2 = $("<button>");
|
||||
$btn2.attr("type", "button").addClass("btn btn-default");
|
||||
$btn2.append("<span class='fa fa-close'></span>");
|
||||
$btngrp.append($btn2);
|
||||
$box.html("").append($inp).append($btngrp);
|
||||
$btn1.click(function () {
|
||||
var text = $box.find("textarea").val();
|
||||
$box.find("input, textarea, button").prop("disabled", true);
|
||||
bankimport_transactionlist._action(id, "comment:" + text, function () {
|
||||
bankimport_transactionlist.comment_reset_to_text(id, text);
|
||||
});
|
||||
});
|
||||
$btn2.click(function () {
|
||||
bankimport_transactionlist.comment_reset_to_text(id, orig_text);
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
typeahead_source: function () {
|
||||
return new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
|
||||
@@ -92,6 +135,9 @@ var bankimport_transactionlist = {
|
||||
init: function () {
|
||||
if ($(".transaction-list").length) {
|
||||
$(".transaction-list button").click(bankimport_transactionlist._btn_click);
|
||||
|
||||
$(".transaction-list").on("click", ".comment-modify", bankimport_transactionlist.comment_start_edit);
|
||||
|
||||
$(".transaction-list .form-control").typeahead(null, {
|
||||
minLength: 2,
|
||||
name: 'order-dataset',
|
||||
|
||||
@@ -54,7 +54,17 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ trans.date }}</td>
|
||||
<td>{{ trans.payer }}<br/>{{ trans.reference }}</td>
|
||||
<td>
|
||||
{{ trans.payer }}<br/>
|
||||
{{ trans.reference }}
|
||||
<div class="comment-box">
|
||||
<strong>{% trans "Comment:" %}</strong>
|
||||
<span class="comment">{{ trans.comment }}</span>
|
||||
<a href="#" class="comment-modify btn btn-default btn-xs">
|
||||
<span class="fa fa-edit"></span>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
<td>{{ trans.amount|floatformat:2 }}</td>
|
||||
<td>
|
||||
{% if trans.message %}
|
||||
|
||||
@@ -99,6 +99,13 @@ class ActionView(EventPermissionRequiredMixin, View):
|
||||
else:
|
||||
return self._retry(trans)
|
||||
|
||||
def _comment(self, trans, comment):
|
||||
trans.comment = comment
|
||||
trans.save()
|
||||
return JsonResponse({
|
||||
'status': 'ok'
|
||||
})
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
for k, v in request.POST.items():
|
||||
if not k.startswith('action_'):
|
||||
@@ -113,6 +120,9 @@ class ActionView(EventPermissionRequiredMixin, View):
|
||||
# Accept anyway even with wrong amount
|
||||
return self._accept_ignore_amount(trans)
|
||||
|
||||
elif v.startswith('comment:'):
|
||||
return self._comment(trans, v[8:])
|
||||
|
||||
elif v.startswith('assign:') and trans.state == BankTransaction.STATE_NOMATCH:
|
||||
return self._assign(trans, v[7:])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user