diff --git a/kfet/forms.py b/kfet/forms.py index 0c563b04..fe2e4a9c 100644 --- a/kfet/forms.py +++ b/kfet/forms.py @@ -1,21 +1,17 @@ # -*- coding: utf-8 -*- -from __future__ import (absolute_import, division, - print_function, unicode_literals) -from builtins import * - from decimal import Decimal from django import forms from django.core.exceptions import ValidationError from django.core.validators import MinLengthValidator from django.contrib.auth.models import User, Group, Permission from django.contrib.contenttypes.models import ContentType -from django.forms import modelformset_factory, inlineformset_factory -from django.forms.models import BaseInlineFormSet +from django.forms import modelformset_factory from django.utils import timezone -from kfet.models import (Account, Checkout, Article, OperationGroup, Operation, +from kfet.models import ( + Account, Checkout, Article, OperationGroup, Operation, CheckoutStatement, ArticleCategory, Settings, AccountNegative, Transfer, - TransferGroup, Supplier, Inventory, InventoryArticle) + TransferGroup, Supplier) from gestioncof.models import CofProfile # ----- @@ -131,7 +127,16 @@ class UserRestrictTeamForm(UserForm): class UserGroupForm(forms.ModelForm): groups = forms.ModelMultipleChoiceField( - Group.objects.filter(name__icontains='K-Fêt')) + Group.objects.filter(name__icontains='K-Fêt'), + required=False) + + def clean_groups(self): + groups = self.cleaned_data.get('groups') + # Si aucun groupe, on le dénomme + if not groups: + groups = self.instance.groups.exclude(name__icontains='K-Fêt') + return groups + class Meta: model = User fields = ['groups'] diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js index 31758c36..bab21c12 100644 --- a/kfet/static/kfet/js/kfet.js +++ b/kfet/static/kfet/js/kfet.js @@ -37,9 +37,10 @@ function amountDisplay(amount, is_cof=false, tri='') { return amountToUKF(amount, is_cof); } -function amountToUKF(amount, is_cof=false) { +function amountToUKF(amount, is_cof=false, account=false) { + var rounding = account ? Math.floor : Math.round ; var coef_cof = is_cof ? 1 + settings['subvention_cof'] / 100 : 1; - return Math.floor(amount * coef_cof * 10); + return rounding(amount * coef_cof * 10); } function isValidTrigramme(trigramme) { diff --git a/kfet/templates/kfet/kpsul.html b/kfet/templates/kfet/kpsul.html index 70cf4ba9..e064a10c 100644 --- a/kfet/templates/kfet/kpsul.html +++ b/kfet/templates/kfet/kpsul.html @@ -221,7 +221,7 @@ $(document).ready(function() { function displayAccountData() { var balance = account_data['trigramme'] != 'LIQ' ? account_data['balance'] : ''; if (balance != '') - balance = amountToUKF(account_data['balance'], account_data['is_cof']); + balance = amountToUKF(account_data['balance'], account_data['is_cof'], true); var is_cof = account_data['trigramme'] ? account_data['is_cof'] : ''; if (is_cof !== '') is_cof = is_cof ? 'COF' : 'Non-COF'; @@ -616,7 +616,7 @@ $(document).ready(function() { for (var elem in article) { article_html.find('.'+elem).text(article[elem]) } - article_html.find('.price').text(amountToUKF(article['price'], false)); + article_html.find('.price').text(amountToUKF(article['price'], false, false)); var category_html = articles_container .find('#data-category-'+article['category_id']); if (category_html.length == 0) { @@ -834,7 +834,7 @@ $(document).ready(function() { .attr('data-opeindex', index) .find('.number').text(nb).end() .find('.name').text(article_data[0]).end() - .find('.amount').text(amountToUKF(amount_euro, account_data['is_cof'])); + .find('.amount').text(amountToUKF(amount_euro, account_data['is_cof'], false)); basket_container.prepend(article_basket_html); updateBasketRel(); } @@ -848,7 +848,7 @@ $(document).ready(function() { .attr('data-opeindex', index) .find('.number').text(amount+"€").end() .find('.name').text(text).end() - .find('.amount').text(amountToUKF(amount, account_data['is_cof'])); + .find('.amount').text(amountToUKF(amount, account_data['is_cof'], false)); basket_container.prepend(deposit_basket_html); updateBasketRel(); } @@ -861,7 +861,7 @@ $(document).ready(function() { .attr('data-opeindex', index) .find('.number').text(amount+"€").end() .find('.name').text('Retrait').end() - .find('.amount').text(amountToUKF(amount, account_data['is_cof'])); + .find('.amount').text(amountToUKF(amount, account_data['is_cof'], false)); basket_container.prepend(withdraw_basket_html); updateBasketRel(); } @@ -903,7 +903,7 @@ $(document).ready(function() { var amount = $(this).find('#id_form-'+opeindex+'-amount'); if (!deleted && type == "purchase") amount.val(amountEuroPurchase(article_id, article_nb)); - basket_container.find('[data-opeindex='+opeindex+'] .amount').text(amountToUKF(amount.val(), account_data['is_cof'])); + basket_container.find('[data-opeindex='+opeindex+'] .amount').text(amountToUKF(amount.val(), account_data['is_cof'], false)); }); } @@ -922,9 +922,9 @@ $(document).ready(function() { basketrel_html += '
Sur 20€: '+ (20-amount).toFixed(2) +' €
'; } else if (account_data['trigramme'] != '' && !isBasketEmpty()) { var amount = getAmountBasket(); - var amountUKF = amountToUKF(amount, account_data['is_cof']); + var amountUKF = amountToUKF(amount, account_data['is_cof'], false); var newBalance = account_data['balance'] + amount; - var newBalanceUKF = amountToUKF(newBalance, account_data['is_cof']); + var newBalanceUKF = amountToUKF(newBalance, account_data['is_cof'], true); basketrel_html += '
Total: '+amountUKF+'
'; basketrel_html += '
Nouveau solde: '+newBalanceUKF+'
'; if (newBalance < 0) @@ -959,7 +959,7 @@ $(document).ready(function() { var title = is_checkout ? 'Montant de la charge' : "Montant de l'édition"; $.confirm({ title: title, - content: '', + content: '', backgroundDismiss: true, animation:'top', closeAnimation:'bottom', @@ -986,7 +986,7 @@ $(document).ready(function() { function askWithdraw() { $.confirm({ title: 'Montant du retrait', - content: '', + content: '', backgroundDismiss: true, animation:'top', closeAnimation:'bottom', @@ -1164,7 +1164,7 @@ $(document).ready(function() { function askAddcost(errors = '') { $.confirm({ title: 'Majoration', - content: errors + '', + content: errors + '', backgroundDismiss: true, animation:'top', closeAnimation:'bottom', @@ -1251,7 +1251,7 @@ $(document).ready(function() { } for (var i=0; i