Pas besoin de ws pour les suppressions

This commit is contained in:
Ludovic Stephan 2019-12-23 15:09:41 +01:00
parent 550a073d51
commit 49ef8b3c15
3 changed files with 41 additions and 47 deletions

View file

@ -35,14 +35,14 @@ function KHistory(options = {}) {
var is_cof = opegroup['is_cof']; var is_cof = opegroup['is_cof'];
var type = opegroup['type'] var type = opegroup['type']
switch (type) { switch (type) {
case 'opegroup': case 'operation':
for (let ope of opegroup['opes']) { for (let ope of opegroup['opes']) {
var $ope = this._opeHtml(ope, is_cof, trigramme); var $ope = this._opeHtml(ope, is_cof, trigramme);
$ope.data('opegroup', opegroup['id']); $ope.data('opegroup', opegroup['id']);
$opegroup.after($ope); $opegroup.after($ope);
} }
break; break;
case 'transfergroup': case 'transfer':
for (let transfer of opegroup['opes']) { for (let transfer of opegroup['opes']) {
var $transfer = this._transferHtml(transfer); var $transfer = this._transferHtml(transfer);
$transfer.data('transfergroup', opegroup['id']); $transfer.data('transfergroup', opegroup['id']);
@ -80,7 +80,7 @@ function KHistory(options = {}) {
} }
$ope_html $ope_html
.data('type', 'ope') .data('type', 'operation')
.data('id', ope['id']) .data('id', ope['id'])
.find('.amount').text(amount).end() .find('.amount').text(amount).end()
.find('.infos1').text(infos1).end() .find('.infos1').text(infos1).end()
@ -119,7 +119,7 @@ function KHistory(options = {}) {
this.cancelOpe = function (ope, $ope = null) { this.cancelOpe = function (ope, $ope = null) {
if (!$ope) if (!$ope)
$ope = this.findOpe(ope['id'], ope["type"]); $ope = this.findOpe(ope["id"], ope["type"]);
var cancel = 'Annulé'; var cancel = 'Annulé';
var canceled_at = dateUTCToParis(ope['canceled_at']); var canceled_at = dateUTCToParis(ope['canceled_at']);
@ -135,13 +135,13 @@ function KHistory(options = {}) {
switch (type) { switch (type) {
case 'opegroup': case 'operation':
var $opegroup_html = $(this.template_opegroup); var $opegroup_html = $(this.template_opegroup);
var trigramme = opegroup['on_acc__trigramme']; var trigramme = opegroup['on_acc__trigramme'];
var amount = amountDisplay( var amount = amountDisplay(
parseFloat(opegroup['amount']), opegroup['is_cof'], trigramme); parseFloat(opegroup['amount']), opegroup['is_cof'], trigramme);
break; break;
case 'transfergroup': case 'transfer':
var $opegroup_html = $(this.template_transfergroup); var $opegroup_html = $(this.template_transfergroup);
$opegroup_html.find('.infos').text('Transferts').end() $opegroup_html.find('.infos').text('Transferts').end()
var trigramme = ''; var trigramme = '';
@ -183,20 +183,20 @@ function KHistory(options = {}) {
return $day.data('date', at_ser).text(at.format('D MMMM YYYY')); return $day.data('date', at_ser).text(at.format('D MMMM YYYY'));
} }
this.findOpeGroup = function (id) { this.findOpeGroup = function (id, type = "operation") {
return this.$container.find('.opegroup').filter(function () { return this.$container.find('.opegroup').filter(function () {
return $(this).data('opegroup') == id return ($(this).data('id') == id && $(this).data("type") == type)
}); });
} }
this.findOpe = function (id, type = 'ope') { this.findOpe = function (id, type = 'operation') {
return this.$container.find('.ope').filter(function () { return this.$container.find('.ope').filter(function () {
return ($(this).data('id') == id && $(this).data('type') == type) return ($(this).data('id') == id && $(this).data('type') == type)
}); });
} }
this.cancelOpeGroup = function (opegroup) { this.update_opegroup = function (opegroup, type = "operation") {
var $opegroup = this.findOpeGroup(opegroup['id']); var $opegroup = this.findOpeGroup(opegroup['id'], type);
var trigramme = $opegroup.find('.trigramme').text(); var trigramme = $opegroup.find('.trigramme').text();
var amount = amountDisplay( var amount = amountDisplay(
parseFloat(opegroup['amount']), opegroup['is_cof'], trigramme); parseFloat(opegroup['amount']), opegroup['is_cof'], trigramme);
@ -218,13 +218,14 @@ function KHistory(options = {}) {
}); });
} }
this.cancel = function (type, opes, password = "") { this._cancel = function (type, opes, password = "") {
if (window.lock == 1) if (window.lock == 1)
return false return false
window.lock = 1; window.lock = 1;
var that = this;
$.ajax({ $.ajax({
dataType: "json", dataType: "json",
url: django_urls[`kfet.${type}.cancel`](), url: django_urls[`kfet.${type}s.cancel`](),
method: "POST", method: "POST",
data: opes, data: opes,
beforeSend: function ($xhr) { beforeSend: function ($xhr) {
@ -235,6 +236,16 @@ function KHistory(options = {}) {
}).done(function (data) { }).done(function (data) {
window.lock = 0; window.lock = 0;
that.$container.find('.ui-selected').removeClass('ui-selected');
for (let ope of data["canceled"]) {
ope["type"] = type;
that.cancelOpe(ope);
}
if (type == "operation") {
for (let opegroup of data["opegroups_to_update"]) {
that.update_opegroup(opegroup)
}
}
}).fail(function ($xhr) { }).fail(function ($xhr) {
var data = $xhr.responseJSON; var data = $xhr.responseJSON;
switch ($xhr.status) { switch ($xhr.status) {
@ -274,10 +285,10 @@ function KHistory(options = {}) {
}); });
} else if (opes_to_cancel["transfers"].length > 0) { } else if (opes_to_cancel["transfers"].length > 0) {
delete opes_to_cancel["operations"]; delete opes_to_cancel["operations"];
this.cancel("transfers", opes_to_cancel); this._cancel("transfer", opes_to_cancel);
} else if (opes_to_cancel["operations"].length > 0) { } else if (opes_to_cancel["operations"].length > 0) {
delete opes_to_cancel["transfers"]; delete opes_to_cancel["transfers"];
this.cancel("operations", opes_to_cancel); this._cancel("operation", opes_to_cancel);
} }
} }
} }

View file

@ -1256,13 +1256,6 @@ $(document).ready(function() {
for (var i=0; i<data['opegroups'].length; i++) { for (var i=0; i<data['opegroups'].length; i++) {
if (data['opegroups'][i]['add']) { if (data['opegroups'][i]['add']) {
khistory.addOpeGroup(data['opegroups'][i]); khistory.addOpeGroup(data['opegroups'][i]);
} else if (data['opegroups'][i]['cancellation']) {
khistory.cancelOpeGroup(data['opegroups'][i]);
}
}
for (var i=0; i<data['opes'].length; i++) {
if (data['opes'][i]['cancellation']) {
khistory.cancelOpe(data['opes'][i]);
} }
} }
for (var i=0; i<data['checkouts'].length; i++) { for (var i=0; i<data['checkouts'].length; i++) {

View file

@ -1364,7 +1364,11 @@ def cancel_operations(request):
.filter(pk__in=opegroups_pk) .filter(pk__in=opegroups_pk)
.order_by("pk") .order_by("pk")
) )
opes = sorted(opes) opes = (
Operation.objects.values("id", "canceled_at", "canceled_by__trigramme")
.filter(pk__in=opes)
.order_by("pk")
)
checkouts_pk = [checkout.pk for checkout in to_checkouts_balances] checkouts_pk = [checkout.pk for checkout in to_checkouts_balances]
checkouts = ( checkouts = (
Checkout.objects.values("id", "balance") Checkout.objects.values("id", "balance")
@ -1375,27 +1379,7 @@ def cancel_operations(request):
articles = Article.objects.values("id", "stock").filter(pk__in=articles_pk) articles = Article.objects.values("id", "stock").filter(pk__in=articles_pk)
# Websocket data # Websocket data
websocket_data = {"opegroups": [], "opes": [], "checkouts": [], "articles": []} websocket_data = {"checkouts": [], "articles": []}
for opegroup in opegroups:
websocket_data["opegroups"].append(
{
"cancellation": True,
"id": opegroup["id"],
"amount": opegroup["amount"],
"is_cof": opegroup["is_cof"],
}
)
canceled_by__trigramme = canceled_by and canceled_by.trigramme or None
for ope in opes:
websocket_data["opes"].append(
{
"cancellation": True,
"id": ope,
"canceled_by__trigramme": canceled_by__trigramme,
"canceled_at": canceled_at,
}
)
for checkout in checkouts: for checkout in checkouts:
websocket_data["checkouts"].append( websocket_data["checkouts"].append(
{"id": checkout["id"], "balance": checkout["balance"]} {"id": checkout["id"], "balance": checkout["balance"]}
@ -1406,7 +1390,8 @@ def cancel_operations(request):
) )
consumers.KPsul.group_send("kfet.kpsul", websocket_data) consumers.KPsul.group_send("kfet.kpsul", websocket_data)
data["canceled"] = opes data["canceled"] = list(opes)
data["opegroups_to_update"] = list(opegroups)
if opes_already_canceled: if opes_already_canceled:
data["warnings"]["already_canceled"] = opes_already_canceled data["warnings"]["already_canceled"] = opes_already_canceled
return JsonResponse(data) return JsonResponse(data)
@ -1483,7 +1468,7 @@ def history_json(request):
opegroups_list = [] opegroups_list = []
for opegroup in opegroups: for opegroup in opegroups:
opegroup_dict = { opegroup_dict = {
"type": "opegroup", "type": "operation",
"id": opegroup.id, "id": opegroup.id,
"amount": opegroup.amount, "amount": opegroup.amount,
"at": opegroup.at, "at": opegroup.at,
@ -1519,7 +1504,7 @@ def history_json(request):
for transfergroup in transfergroups: for transfergroup in transfergroups:
if transfergroup.filtered_transfers: if transfergroup.filtered_transfers:
transfergroup_dict = { transfergroup_dict = {
"type": "transfergroup", "type": "transfer",
"id": transfergroup.id, "id": transfergroup.id,
"at": transfergroup.at, "at": transfergroup.at,
"comment": transfergroup.comment, "comment": transfergroup.comment,
@ -1809,6 +1794,11 @@ def cancel_transfers(request):
elif hasattr(account, "negative") and not account.negative.balance_offset: elif hasattr(account, "negative") and not account.negative.balance_offset:
account.negative.delete() account.negative.delete()
transfers = (
Transfer.objects.values("id", "canceled_at", "canceled_by__trigramme")
.filter(pk__in=transfers)
.order_by("pk")
)
data["canceled"] = transfers data["canceled"] = transfers
if transfers_already_canceled: if transfers_already_canceled:
data["warnings"]["already_canceled"] = transfers_already_canceled data["warnings"]["already_canceled"] = transfers_already_canceled