Fix négatif lors d'annulations/transferts

This commit is contained in:
Aurélien Delobelle 2016-09-03 18:32:12 +02:00
parent 42f6144226
commit 0c210aa48c
2 changed files with 14 additions and 5 deletions

View file

@ -65,8 +65,11 @@ function getErrorsHtml(data) {
content += '<li>'+data['errors']['missing_perms'][i]+'</li>'; content += '<li>'+data['errors']['missing_perms'][i]+'</li>';
content += '</ul>'; content += '</ul>';
} }
if ('negative' in data['errors']) if ('negative' in data['errors']) {
content += '<a class="btn btn-primary" href="/k-fet/accounts/'+account_data['trigramme']+'/edit" target="_blank">Autorisation de négatif requise</a>'; for (var i=0; i<data['errors']['negative'].length; i++) {
content += '<a class="btn btn-primary" href="/k-fet/accounts/'+data['errors']['negative'][i]+'/edit" target="_blank" style="width:100%">Autorisation de négatif requise pour '+data['errors']['negative'][i]+'</a>';
}
}
if ('addcost' in data['errors']) { if ('addcost' in data['errors']) {
content += '<ul>'; content += '<ul>';
if (data['errors']['addcost'].indexOf('__all__') != -1) if (data['errors']['addcost'].indexOf('__all__') != -1)

View file

@ -897,7 +897,7 @@ def kpsul_perform_operations(request):
if missing_perms: if missing_perms:
data['errors']['missing_perms'] = missing_perms data['errors']['missing_perms'] = missing_perms
if stop: if stop:
data['errors']['negative'] = True data['errors']['negative'] = [operationgroup.on_acc.trigramme]
return JsonResponse(data, status=403) return JsonResponse(data, status=403)
# If 1 perm is required, filling who perform the operations # If 1 perm is required, filling who perform the operations
@ -1088,19 +1088,22 @@ def kpsul_cancel_operations(request):
data['warnings']['already_canceled'] = opes_already_canceled data['warnings']['already_canceled'] = opes_already_canceled
return JsonResponse(data) return JsonResponse(data)
negative_accounts = []
# Checking permissions or stop # Checking permissions or stop
for account in to_accounts_balances: for account in to_accounts_balances:
(perms, stop) = account.perms_to_perform_operation( (perms, stop) = account.perms_to_perform_operation(
amount = to_accounts_balances[account]) amount = to_accounts_balances[account])
required_perms |= perms required_perms |= perms
stop_all = stop_all or stop stop_all = stop_all or stop
if stop:
negative_accounts.append(account.trigramme)
if stop_all or not request.user.has_perms(required_perms): if stop_all or not request.user.has_perms(required_perms):
missing_perms = get_missing_perms(required_perms, request.user) missing_perms = get_missing_perms(required_perms, request.user)
if missing_perms: if missing_perms:
data['errors']['missing_perms'] = missing_perms data['errors']['missing_perms'] = missing_perms
if stop_all: if stop_all:
data['errors']['negative'] = True data['errors']['negative'] = negative_accounts
return JsonResponse(data, status=403) return JsonResponse(data, status=403)
canceled_by = required_perms and request.user.profile.account_kfet or None canceled_by = required_perms and request.user.profile.account_kfet or None
@ -1322,19 +1325,22 @@ def perform_transfers(request):
stop_all = False stop_all = False
negative_accounts = []
# Checking if ok on all accounts # Checking if ok on all accounts
for account in to_accounts_balances: for account in to_accounts_balances:
(perms, stop) = account.perms_to_perform_operation( (perms, stop) = account.perms_to_perform_operation(
amount = to_accounts_balances[account]) amount = to_accounts_balances[account])
required_perms |= perms required_perms |= perms
stop_all = stop_all or stop stop_all = stop_all or stop
if stop:
negative_accounts.append(account.trigramme)
if stop_all or not request.user.has_perms(required_perms): if stop_all or not request.user.has_perms(required_perms):
missing_perms = get_missing_perms(required_perms, request.user) missing_perms = get_missing_perms(required_perms, request.user)
if missing_perms: if missing_perms:
data['errors']['missing_perms'] = missing_perms data['errors']['missing_perms'] = missing_perms
if stop_all: if stop_all:
data['errors']['negative'] = True data['errors']['negative'] = negative_accounts
return JsonResponse(data, status=403) return JsonResponse(data, status=403)
# Creating transfer group # Creating transfer group