diff --git a/kfet/migrations/0042_auto_20160831_0126.py b/kfet/migrations/0042_auto_20160831_0126.py new file mode 100644 index 00000000..3306c401 --- /dev/null +++ b/kfet/migrations/0042_auto_20160831_0126.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('kfet', '0041_auto_20160830_1502'), + ] + + operations = [ + migrations.AlterModelOptions( + name='globalpermissions', + options={'managed': False, 'permissions': (('is_team', 'Is part of the team'), ('perform_deposit', 'Effectuer une charge'), ('perform_negative_operations', 'Enregistrer des commandes en négatif'), ('override_frozen_protection', "Forcer le gel d'un compte"), ('cancel_old_operations', 'Annuler des commandes non récentes'), ('manage_perms', 'Gérer les permissions K-Fêt'), ('manage_addcosts', 'Gérer les majorations'), ('perform_commented_operations', 'Enregistrer des commandes avec commentaires'), ('view_negs', 'Voir la liste des négatifs'), ('order_to_inventory', "Générer un inventaire à partir d'une commande"), ('edit_balance_account', "Modifier la balance d'un compte"))}, + ), + ] diff --git a/kfet/models.py b/kfet/models.py index 59448d52..ce337785 100644 --- a/kfet/models.py +++ b/kfet/models.py @@ -547,7 +547,8 @@ class GlobalPermissions(models.Model): ('manage_addcosts', 'Gérer les majorations'), ('perform_commented_operations', 'Enregistrer des commandes avec commentaires'), ('view_negs', 'Voir la liste des négatifs'), - ('order_to_inventory', "Générer un inventaire à partir d'une commande") + ('order_to_inventory', "Générer un inventaire à partir d'une commande"), + ('edit_balance_account', "Modifier la balance d'un compte"), ) class Settings(models.Model): diff --git a/kfet/static/kfet/js/history.js b/kfet/static/kfet/js/history.js index e99acd5a..cc4748ab 100644 --- a/kfet/static/kfet/js/history.js +++ b/kfet/static/kfet/js/history.js @@ -34,6 +34,7 @@ function KHistory(options={}) { } else { infos1 = parsed_amount.toFixed(2)+'€'; infos2 = (ope['type'] == 'deposit') ? 'Charge' : 'Retrait'; + infos2 = ope['is_checkout'] ? infos2 : 'Édition'; } $ope_html diff --git a/kfet/templates/kfet/kpsul.html b/kfet/templates/kfet/kpsul.html index ddd1ce6b..b9ff0a50 100644 --- a/kfet/templates/kfet/kpsul.html +++ b/kfet/templates/kfet/kpsul.html @@ -543,8 +543,8 @@ $(document).ready(function() { var articleSelect = $('#article_autocomplete'); var articleId = $('#article_id'); var articleNb = $('#article_number'); - // 8:Backspace|9:Tab|13:Enter|46:DEL|112-117:F1-6|120-123:F9-F12 - var normalKeys = /^(8|9|13|46|112|113|114|115|116|117|120|121|122|123)$/; + // 8:Backspace|9:Tab|13:Enter|46:DEL|112-117:F1-6|119-123:F8-F12 + var normalKeys = /^(8|9|13|46|112|113|114|115|116|117|119|120|121|122|123)$/; var articlesList = []; function deleteNonMatching(array, str) { @@ -694,14 +694,15 @@ $(document).ready(function() { updateBasketRel(); } - function addDeposit(amount) { + function addDeposit(amount, is_checkout=1) { var deposit_basket_html = $(item_basket_default_html); var amount = parseFloat(amount).toFixed(2); - var index = addDepositToFormset(amount); + var index = addDepositToFormset(amount, is_checkout); + var text = is_checkout ? 'Charge' : 'Édition'; deposit_basket_html .attr('data-opeindex', index) .find('.number').text(amount+"€").end() - .find('.name').text('Charge').end() + .find('.name').text(text).end() .find('.amount').text(amountToUKF(amount, account_data['is_cof'])); basket_container.prepend(deposit_basket_html); updateBasketRel(); @@ -809,9 +810,10 @@ $(document).ready(function() { // Ask deposit or withdraw // ----- - function askDeposit() { + function askDeposit(is_checkout=1) { + var title = is_checkout ? 'Montant de la charge' : "Montant de l'édition"; $.confirm({ - title: 'Montant de la charge', + title: title, content: '', backgroundDismiss: true, animation:'top', @@ -821,7 +823,7 @@ $(document).ready(function() { var amount = this.$content.find('input').val(); if (!$.isNumeric(amount) || amount <= 0) return false; - addDeposit(amount); + addDeposit(amount, is_checkout); }, onOpen: function() { var that = this @@ -1150,6 +1152,10 @@ $(document).ready(function() { articleSelect.focus(); } return false; + case 119: + // F8 - Edition + askDeposit(0); + return false; case 120: // F9 - Addcost askAddcost(); diff --git a/kfet/views.py b/kfet/views.py index 26fe9164..d606a601 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -800,6 +800,7 @@ def kpsul_perform_operations(request): to_articles_stocks = defaultdict(lambda:0) # For stocks articles is_addcost = (addcost_for and addcost_amount and addcost_for != operationgroup.on_acc) + need_comment = operationgroup.on_acc.need_comment # Filling data of each operations + operationgroup + calculating other stuffs for operation in operations: @@ -811,7 +812,10 @@ def kpsul_perform_operations(request): operation.amount -= operation.addcost_amount to_addcost_for_balance += operation.addcost_amount if operationgroup.on_acc.is_cash: + operation.is_checkout = True to_checkout_balance += -operation.amount + else: + operation.is_checkout = False if operationgroup.on_acc.is_cof: if is_addcost: operation.addcost_amount = operation.addcost_amount / cof_grant_divisor @@ -824,6 +828,10 @@ def kpsul_perform_operations(request): operationgroup.amount += operation.amount if operation.type == Operation.DEPOSIT: required_perms.add('kfet.perform_deposit') + if (not operation.is_checkout + and operation.type in [Operation.DEPOSIT, Operation.WITHDRAW]): + required_perms.add('kfet.edit_balance_account') + need_comment = True if operationgroup.on_acc.is_cof: to_addcost_for_balance = to_addcost_for_balance / cof_grant_divisor @@ -831,7 +839,7 @@ def kpsul_perform_operations(request): amount = operationgroup.amount) required_perms |= perms - if operationgroup.on_acc.need_comment: + if need_comment: operationgroup.comment = operationgroup.comment.strip() if not operationgroup.comment: data['errors']['need_comment'] = True