Merge branch 'aureplop/clean_scroll' into 'master'

Misc UI

Closes #90 and #115

See merge request !225
This commit is contained in:
Martin Pepin 2017-05-25 23:03:40 +02:00
commit b13e992a30
53 changed files with 1636 additions and 1614 deletions

View file

@ -8,7 +8,7 @@ from django.core.exceptions import ValidationError
from django.core.validators import MinLengthValidator from django.core.validators import MinLengthValidator
from django.contrib.auth.models import User, Group, Permission from django.contrib.auth.models import User, Group, Permission
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.forms import modelformset_factory from django.forms import modelformset_factory, widgets
from django.utils import timezone from django.utils import timezone
from djconfig.forms import ConfigForm from djconfig.forms import ConfigForm
@ -151,10 +151,24 @@ class UserGroupForm(forms.ModelForm):
fields = ['groups'] fields = ['groups']
class KFetPermissionsField(forms.ModelMultipleChoiceField):
def __init__(self, *args, **kwargs):
queryset = Permission.objects.filter(
content_type__in=ContentType.objects.filter(app_label="kfet"),
)
super().__init__(
queryset=queryset,
widget=widgets.CheckboxSelectMultiple,
*args, **kwargs
)
def label_from_instance(self, obj):
return obj.name
class GroupForm(forms.ModelForm): class GroupForm(forms.ModelForm):
permissions = forms.ModelMultipleChoiceField( permissions = KFetPermissionsField()
queryset= Permission.objects.filter(content_type__in=
ContentType.objects.filter(app_label='kfet')))
def clean_name(self): def clean_name(self):
name = self.cleaned_data['name'] name = self.cleaned_data['name']
@ -525,11 +539,7 @@ class OrderArticleForm(forms.Form):
self.category = kwargs['initial']['category'] self.category = kwargs['initial']['category']
self.category_name = kwargs['initial']['category__name'] self.category_name = kwargs['initial']['category__name']
self.box_capacity = kwargs['initial']['box_capacity'] self.box_capacity = kwargs['initial']['box_capacity']
self.v_s1 = kwargs['initial']['v_s1'] self.v_all = kwargs['initial']['v_all']
self.v_s2 = kwargs['initial']['v_s2']
self.v_s3 = kwargs['initial']['v_s3']
self.v_s4 = kwargs['initial']['v_s4']
self.v_s5 = kwargs['initial']['v_s5']
self.v_moy = kwargs['initial']['v_moy'] self.v_moy = kwargs['initial']['v_moy']
self.v_et = kwargs['initial']['v_et'] self.v_et = kwargs['initial']['v_et']
self.v_prev = kwargs['initial']['v_prev'] self.v_prev = kwargs['initial']['v_prev']

View file

@ -1,16 +1,18 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import (absolute_import, division,
print_function, unicode_literals)
from builtins import *
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.signals import user_logged_in from django.contrib.auth.signals import user_logged_in
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.dispatch import receiver from django.dispatch import receiver
@receiver(user_logged_in) @receiver(user_logged_in)
def messages_on_login(sender, request, user, **kwargs): def messages_on_login(sender, request, user, **kwargs):
if (not user.username == 'kfet_genericteam' if (not user.username == 'kfet_genericteam' and
and user.has_perm('kfet.is_team')): user.has_perm('kfet.is_team') and
messages.info(request, '<a href="%s">Connexion en utilisateur partagé ?</a>' % reverse('kfet.login.genericteam'), extra_tags='safe') 'k-fet' in request.GET.get('next', '')):
messages.info(
request,
('<a href="{}" target="_blank">Connexion en utilisateur partagé ?</a>'
.format(reverse('kfet.login.genericteam'))),
extra_tags='safe')

View file

@ -9,17 +9,20 @@
#history .day { #history .day {
height:40px; height:40px;
line-height:40px; line-height:40px;
background-color:#c8102e; background-color:rgba(200,16,46,0.9);
color:#fff; color:#fff;
padding-left:20px; padding-left:20px;
font-size:16px; font-size:16px;
font-weight:bold; font-weight:bold;
position:sticky;
top:50px;
z-index:10;
} }
#history .opegroup { #history .opegroup {
height:30px; height:30px;
line-height:30px; line-height:30px;
background-color:rgba(200,16,46,0.85); background-color:rgba(200,16,46,0.75);
color:#fff; color:#fff;
font-weight:bold; font-weight:bold;
padding-left:20px; padding-left:20px;

View file

@ -33,10 +33,8 @@ textarea {
.table { .table {
margin-bottom:0; margin-bottom:0;
border-bottom:1px solid #ddd; border-bottom:1px solid #ddd;
}
.table {
width:100%; width:100%;
background-color: #FFF;
} }
.table td { .table td {
@ -70,6 +68,16 @@ textarea {
padding:8px 30px; padding:8px 30px;
} }
.table-responsive {
border: 0;
margin-bottom: 0;
}
.btn {
transition: background-color, color;
transition-duration: 0.15s;
}
.btn, .btn-lg, .btn-group-lg>.btn { .btn, .btn-lg, .btn-group-lg>.btn {
border-radius:0; border-radius:0;
} }
@ -81,19 +89,30 @@ textarea {
border:0; border:0;
} }
.btn-primary:hover, .btn-primary.focus, .btn-primary:focus { .btn-primary:hover,
background-color:#000; .btn-primary.focus, .btn-primary:focus,
.btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover,
.btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover,
.nav-pills>li.active>a, .nav-pills>li.active>a:focus, .nav-pills>li.active>a:hover {
outline: 0;
background-color:rgba(200,16,46,1);
color:#FFF; color:#FFF;
} }
.buttons .nav-pills > li > a { .btn-primary[disabled]:hover,
border-radius:0; .btn-primary[disabled]:focus {
border:1px solid rgba(200,16,46,0.9); background-color: #000;
color: #666;
} }
.buttons .nav-pills > li.active > a { .nav-pills>li>a {
background-color:rgba(200,16,46,0.9); border-radius:0;
background-clip:padding-box; }
.nav-pills>li>a:focus, .nav-pills>li>a:hover {
outline: 0;
background-color:rgba(200,16,46,1);
color:#FFF;
} }
.row-page-header { .row-page-header {
@ -114,26 +133,17 @@ textarea {
padding: 0 !important; padding: 0 !important;
} }
.panel-md-margin{
background-color: white;
overflow:hidden;
padding-left: 15px;
padding-right: 15px;
padding-bottom: 15px;
padding-top: 1px;
}
@media (min-width: 992px) {
.panel-md-margin{
margin:8px;
background-color: white;
}
}
.col-content-left, .col-content-right { .col-content-left, .col-content-right {
padding:0; padding:0;
} }
@media (min-width: 768px) {
.col-content-left {
position: sticky;
top:50px;
}
}
.content-left-top { .content-left-top {
background:#fff; background:#fff;
padding:10px 30px; padding:10px 30px;
@ -147,6 +157,14 @@ textarea {
display:block; display:block;
} }
.content-left .buttons ul.nav-pills {
margin-bottom:5px;
}
.content-left .buttons ul.nav-pills li {
margin:0 0 -5px;
}
.content-left-top.frozen-account { .content-left-top.frozen-account {
background:#000FBA; background:#000FBA;
color:#fff; color:#fff;
@ -179,25 +197,22 @@ textarea {
text-align:center; text-align:center;
} }
.content-right { @media (min-width: 768px) {
margin:0 15px; .content-right {
margin: 15px;
}
} }
.content-right-block { .content-right-block {
padding-bottom:5px;
position:relative; position:relative;
} }
.content-right-block:last-child { .content-right-block > *:not(.buttons-title) {
padding-bottom:15px; background: #fff;
} }
.content-right-block > div:not(.buttons-title) { .content-right-block > h2 {
background:#fff; background: transparent !important;
}
.content-right-block-transparent > div:not(.buttons-title) {
background-color: transparent;
} }
.content-right-block .buttons-title { .content-right-block .buttons-title {
@ -219,9 +234,8 @@ textarea {
.content-right-block h3 { .content-right-block h3 {
border-bottom: 1px solid #c8102e; border-bottom: 1px solid #c8102e;
margin: 20px 15px 15px; margin: 0px 15px 15px;
padding-bottom: 10px; padding: 20px 20px 10px;
padding-left: 20px;
font-size:25px; font-size:25px;
} }
@ -229,20 +243,34 @@ textarea {
* Pages tableaux seuls * Pages tableaux seuls
*/ */
.content-center > div { .content-center > *:not(.content-right-block) {
background:#fff; background: #fff;
}
@media (min-width: 992px) {
.content-center {
margin: 15px 0;
}
} }
.content-center tbody tr:not(.section) td { .content-center tbody tr:not(.section) td {
padding:0px 5px !important; padding:0px 5px;
} }
.content-center .table .form-control { .table .form-control {
padding: 1px 12px ; padding: 1px 12px ;
height:28px; height:28px;
margin:3px 0px; margin:3px 0px;
} }
.content-center .auth-form {
.table-condensed input.form-control {
margin: 0 !important;
border-top: 0;
border-bottom: 0;
border-radius: 0;
}
.content-center .auth-form {
margin:15px; margin:15px;
} }
@ -250,15 +278,12 @@ textarea {
* Pages formulaires seuls * Pages formulaires seuls
*/ */
.form-only .content-form { .content-form {
margin:15px; background-color: #fff;
padding: 15px;
background:#fff;
padding:15px;
} }
.form-only .account_create #id_trigramme { .account_create #id_trigramme {
display:block; display:block;
width:200px; width:200px;
height:80px; height:80px;
@ -324,6 +349,10 @@ textarea {
* Messages * Messages
*/ */
.messages {
margin: 0;
}
.messages .alert { .messages .alert {
padding:10px 15px; padding:10px 15px;
margin:0; margin:0;
@ -561,12 +590,12 @@ thead .tooltip {
} }
} }
.help-block {
padding-top: 15px;
}
/* Inventaires */ /* Inventaires */
#inventoryform input[type=number] {
text-align: center;
}
.inventory_modified { .inventory_modified {
background:rgba(236,100,0,0.15); background:rgba(236,100,0,0.15);
} }
@ -577,5 +606,51 @@ thead .tooltip {
} }
.inventory_update { .inventory_update {
display:none; display: none;
width: 50px;
margin: 0 auto;
}
/* Multiple select customizations */
.ms-choice {
height: 34px !important;
line-height: 34px !important;
border: 1px solid #ccc !important;
box-shadow: inset 0 1px 1px rgba(0,0,0,.075) !important;
}
.ms-choice > div {
top: 4px !important;
}
/* Checkbox select multiple */
.checkbox-select-multiple label {
font-weight: normal;
margin-bottom: 0;
}
/* Statement creation */
.statement-create-summary table {
margin: 0 auto;
}
.statement-create-summary tr td {
text-align: right;
}
.statement-create-summary tr td:first-child {
padding-right: 15px;
font-weight: bold;
}
.statement-create-summary tr td:last-child {
width: 80px;
}
#detail_taken table td,
#detail_balance table td {
padding: 0;
} }

View file

@ -143,7 +143,7 @@ input[type=number]::-webkit-outer-spin-button {
height:50px; height:50px;
padding:0 15px; padding:0 15px;
background:#c8102e; background:rgba(200,16,46,0.9);
color:#fff; color:#fff;
font-weight:bold; font-weight:bold;
@ -232,16 +232,21 @@ input[type=number]::-webkit-outer-spin-button {
float:left; float:left;
background:#c8102e; background: rgba(200,16,46,0.9);
color:#FFF; color:#FFF;
font-size:18px; font-size:18px;
font-weight:bold; font-weight:bold;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
} }
#special_operations button:focus, #special_operations button:hover { #special_operations button:focus,
#special_operations button:hover {
outline:none; outline:none;
background:#000; background: rgba(200,16,46,1);
color:#fff; color:#fff;
} }
@ -256,15 +261,14 @@ input[type=number]::-webkit-outer-spin-button {
height:100%; height:100%;
float:left; float:left;
border:0; border:0;
border-right:1px solid #c8102e;
border-bottom:1px solid #c8102e;
border-radius:0; border-radius:0;
border-bottom: 1px solid rgba(200,16,46,0.9);
font-size:16px; font-size:16px;
font-weight:bold; font-weight:bold;
} }
#article_selection input+input #article_selection input+span { #article_selection input:first-child {
border-right:0; border-right: 1px dashed rgba(200,16,46,0.9);
} }
#article_autocomplete { #article_autocomplete {
@ -319,7 +323,7 @@ input[type=number]::-webkit-outer-spin-button {
#articles_data table tr.category { #articles_data table tr.category {
height:35px; height:35px;
background-color:#c8102e; background-color:rgba(200,16,46,0.9);
font-size:16px; font-size:16px;
color:#FFF; color:#FFF;
font-weight:bold; font-weight:bold;
@ -423,3 +427,7 @@ input[type=number]::-webkit-outer-spin-button {
.kpsul_middle_right_col { .kpsul_middle_right_col {
overflow:auto; overflow:auto;
} }
.kpsul_middle_right_col #history .day {
top: 0;
}

View file

@ -1,67 +1,88 @@
nav { .navbar {
background:#000; background: #000;
color:#DDD; color: #DDD;
font-family:Oswald; font-family: Oswald;
border: 0;
} }
.navbar-nav > li > .dropdown-menu { .navbar .navbar-brand {
border:0; padding: 3px 25px;
border-radius:0;
} }
.navbar-fixed-top { .navbar .navbar-brand img {
border:0; height: 44px;
} }
nav .navbar-brand { .navbar .navbar-toggle .icon-bar {
padding:3px 25px; background-color: #FFF;
}
nav .navbar-brand img {
height:44px;
}
nav .navbar-toggle .icon-bar {
background-color:#FFF;
}
nav a {
color:#DDD;
} }
.navbar-nav { .navbar-nav {
font-weight:bold; font-weight: bold;
font-size:14px; font-size: 14px;
text-transform:uppercase; text-transform: uppercase;
margin: 0 -15px;
} }
.nav>li>a:focus, .nav>li>a:hover { @media (min-width: 768px) {
background-color:#C8102E;
color:#FFF;
}
.nav .open>a, .nav .open>a:focus, .nav .open>a:hover {
background-color:#C8102E;
}
.dropdown-menu {
padding:0;
}
.dropdown-menu>li>a {
padding:8px 20px;
}
.dropdown-menu .divider {
margin:0;
}
@media (max-width: 767px) {
.navbar-nav .open .dropdown-menu {
background-color:#FFF;
}
.navbar-nav { .navbar-nav {
margin:0 -15px; margin: 0px;
}
.navbar-right {
margin-right: -15px;
}
}
.navbar-nav a {
transition: background-color, box-shadow, color;
transition-duration: 0.15s;
}
.navbar-nav > li > a {
color: #FFF;
}
.navbar-nav > li:hover > a,
.navbar-nav > li > a:focus,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #C8102E;
color: #FFF;
box-shadow: inset 0 5px 5px -5px #000;
}
.navbar-nav .dropdown .dropdown-menu {
padding: 0;
border: 0;
border-radius: 0;
background-color: #FFF;
}
.navbar-nav .dropdown .dropdown-menu > li > a {
padding: 8px 20px;
color: #000;
}
.navbar-nav .dropdown .dropdown-menu > li > a:hover,
.navbar-nav .dropdown .dropdown-meny > li > a:focus {
color: #c8102e;
background-color: transparent;
}
.navbar-nav .dropdown .dropdown-menu .divider {
margin: 0;
}
@media (min-width: 768px) {
.navbar-nav .dropdown .dropdown-menu {
display: block;
visibility: hidden;
opacity: 0;
transition: opacity 0.15s;
}
.nav .dropdown:hover .dropdown-menu {
visibility: visible;
opacity: 1;
} }
} }

View file

@ -1,14 +1,4 @@
$(document).ready(function() { $(document).ready(function() {
$(window).scroll(function() {
if ($(window).width() >= 768 && $(this).scrollTop() > 72.6) {
$('.col-content-left').css({'position':'fixed', 'top':'50px'});
$('.col-content-right').addClass('col-sm-offset-4 col-md-offset-3');
} else {
$('.col-content-left').css({'position':'relative', 'top':'0'});
$('.col-content-right').removeClass('col-sm-offset-4 col-md-offset-3');
}
});
if (typeof Cookies !== 'undefined') { if (typeof Cookies !== 'undefined') {
// Retrieving csrf token // Retrieving csrf token
csrftoken = Cookies.get('csrftoken'); csrftoken = Cookies.get('csrftoken');

View file

@ -86,7 +86,10 @@ class Scale(object):
def get_labels(self, label_fmt=None): def get_labels(self, label_fmt=None):
if label_fmt is None: if label_fmt is None:
label_fmt = self.label_fmt label_fmt = self.label_fmt
return [begin.strftime(label_fmt) for begin, end in self] return [
begin.strftime(label_fmt.format(i=i, rev_i=len(self)-i))
for i, (begin, end) in enumerate(self)
]
def chunkify_qs(self, qs, field=None): def chunkify_qs(self, qs, field=None):
if field is None: if field is None:

View file

@ -1,67 +1,61 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_2.html" %}
{% block title %}Liste des comptes{% endblock %} {% block title %}Liste des comptes{% endblock %}
{% block content-header-title %}Comptes{% endblock %} {% block header-title %}Comptes{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ accounts|length|add:-1 }}</div>
<div class="content-left"> <div class="line line-bigsub">compte{{ accounts|length|add:-1|pluralize }}</div>
<div class="content-left-top"> </div>
<div class="line line-big">{{ accounts|length|add:-1 }}</div> <div class="buttons">
<div class="line line-bigsub">compte{{ accounts|length|add:-1|pluralize }}</div> <a class="btn btn-primary btn-lg" href="{% url 'kfet.account.create' %}">Créer un compte</a>
</div> {% if perms.kfet.manage_perms %}
<div class="buttons"> <a class="btn btn-primary btn-lg" href="{% url 'kfet.account.group' %}">Permissions</a>
<a class="btn btn-primary btn-lg" href="{% url 'kfet.account.create' %}">Créer un compte</a> {% endif %}
{% if perms.kfet.manage_perms %} {% if perms.kfet.view_negs %}
<a class="btn btn-primary btn-lg" href="{% url 'kfet.account.group' %}">Permissions</a> <a class="btn btn-primary btn-lg" href="{% url 'kfet.account.negative' %}">Négatifs</a>
{% endif %} {% endif %}
{% if perms.kfet.view_negs %} </div>
<a class="btn btn-primary btn-lg" href="{% url 'kfet.account.negative' %}">Négatifs</a>
{% endif %} {% endblock %}
</div>
</div> {% block main-content %}
</div>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="content-right-block">
{% include 'kfet/base_messages.html' %} <h2>Liste des comptes</h2>
<div class="content-right"> <div class="table-responsive">
<div class="content-right-block"> <table class="table table-condensed">
<h2>Liste des comptes</h2> <thead>
<div class="table-responsive"> <tr>
<table class="table table-condensed"> <td></td>
<thead> <td>Trigramme</td>
<tr> <td>Nom</td>
<td></td> <td>Balance</td>
<td>Trigramme</td> <td>COF</td>
<td>Nom</td> <td>Dpt</td>
<td>Balance</td> <td>Promo</td>
<td>COF</td> </tr>
<td>Dpt</td> </thead>
<td>Promo</td> <tbody>
</tr> {% for account in accounts %}
</thead> <tr>
<tbody> <td class="text-center">
{% for account in accounts %} <a href="{% url 'kfet.account.read' account.trigramme %}">
<tr> <span class="glyphicon glyphicon-cog"></span>
<td class="text-center"> </a>
<a href="{% url 'kfet.account.read' account.trigramme %}"> </td>
<span class="glyphicon glyphicon-cog"></span> <td>{{ account.trigramme }}</td>
</a> <td>{{ account.name }}</td>
</td> <td class="text-right">{{ account.balance }}€</td>
<td>{{ account.trigramme }}</td> <td>{{ account.is_cof|yesno:"Oui,Non" }}</td>
<td>{{ account.name }}</td> <td>{{ account.departement }}</td>
<td class="text-right">{{ account.balance }}€</td> <td>{{ account.promo|default_if_none:'' }}</td>
<td>{{ account.is_cof }}</td> </tr>
<td>{{ account.departement }}</td> {% endfor %}
<td>{{ account.promo|default_if_none:'' }}</td> </tbody>
</tr> </table>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,45 +1,39 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_1.html" %}
{% load staticfiles %} {% load staticfiles %}
{% block title %}Nouveau compte{% endblock %} {% block title %}Nouveau compte{% endblock %}
{% block header-title %}Création d'un compte{% endblock %}
{% block extra_head %} {% block extra_head %}
<script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script> <script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script>
{% endblock %} {% endblock %}
{% block content-header-title %}Création d'un compte{% endblock %} {% block main-class %}content-form{% endblock %}
{% block content %} {% block main-content %}
{% include 'kfet/base_messages.html' %} <form action="" method="post" class="account_create">
{% csrf_token %}
<div class="row form-only"> <div>
<div class="col-sm-12 col-md-8 col-md-offset-2"> {{ trigramme_form.trigramme.errors }}
<div class="content-form"> {{ trigramme_form.trigramme }}
<form action="{% url "kfet.account.create" %}" method="post" class="account_create">
{% csrf_token %}
<div>
{{ trigramme_form.trigramme.errors }}
{{ trigramme_form.trigramme }}
</div>
<div id="trigramme_valid"></div>
<p class="help-block">Les mots contenant des caractères non alphanumériques seront ignorés</p>
<input type="text" name="q" id="search_autocomplete" spellcheck="false" placeholder="Chercher un utilisateur par nom, prénom ou identifiant clipper" class="form-control">
<div style="position:relative;">
<div id="search_results"></div>
</div>
<div class="form-horizontal">
<div id="form-placeholder">
{% include 'kfet/account_create_form.html' %}
</div>
{% if not perms.kfet.add_account %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
</div>
</form>
</div>
</div> </div>
</div> <div id="trigramme_valid"></div>
<p class="help-block">Les mots contenant des caractères non alphanumériques seront ignorés</p>
<input type="text" name="q" id="search_autocomplete" spellcheck="false" placeholder="Chercher un utilisateur par nom, prénom ou identifiant clipper" class="form-control">
<div style="position:relative;">
<div id="search_results"></div>
</div>
<div class="form-horizontal">
<div id="form-placeholder">
{% include 'kfet/account_create_form.html' %}
</div>
{% if not perms.kfet.add_account %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
</div>
</form>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
// Affichage des résultats d'autocomplétion // Affichage des résultats d'autocomplétion

View file

@ -2,44 +2,37 @@
{% load staticfiles %} {% load staticfiles %}
{% block title %}Nouveau compte{% endblock %} {% block title %}Nouveau compte{% endblock %}
{% block header-title %}Création d'un compte{% endblock %}
{% block extra_head %} {% block extra_head %}
<script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script> <script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script>
{% endblock %} {% endblock %}
{% block content-header-title %}Création d'un compte{% endblock %} {% block main-class %}content-form{% endblock %}
{% block content %} {% block main-content %}
{% include 'kfet/base_messages.html' %} <form action="" method="post" class="account_create">
{% csrf_token %}
<div class="row form-only"> <div>
<div class="col-sm-12 col-md-8 col-md-offset-2"> {{ trigramme_form.trigramme.errors }}
<div class="content-form"> {{ trigramme_form.trigramme }}
<form action="{% url "kfet.account.create_special" %}" method="post" class="account_create"> {{ balance_form }}
{% csrf_token %}
<div>
{{ trigramme_form.trigramme.errors }}
{{ trigramme_form.trigramme }}
{{ balance_form }}
</div>
<div id="trigramme_valid"></div>
<input type="text" name="q" id="search_autocomplete" spellcheck="false" placeholder="Chercher un utilisateur par nom, prénom ou identifiant clipper" class="form-control">
<div style="position:relative;">
<div id="search_results"></div>
</div>
<div class="form-horizontal">
<div id="form-placeholder">
{% include 'kfet/account_create_form.html' %}
</div>
{% if not perms.kfet.add_account %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
</div>
</form>
</div>
</div> </div>
</div> <div id="trigramme_valid"></div>
<input type="text" name="q" id="search_autocomplete" spellcheck="false" placeholder="Chercher un utilisateur par nom, prénom ou identifiant clipper" class="form-control">
<div style="position:relative;">
<div id="search_results"></div>
</div>
<div class="form-horizontal">
<div id="form-placeholder">
{% include 'kfet/account_create_form.html' %}
</div>
{% if not perms.kfet.add_account %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
</div>
</form>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
// Affichage des résultats d'autocomplétion // Affichage des résultats d'autocomplétion

View file

@ -1,54 +1,51 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Groupes de comptes{% endblock %} {% block title %}Groupes de comptes{% endblock %}
{% block content-header-title %}Groupes de comptes{% endblock %} {% block header-title %}Groupes de comptes{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="buttons">
<div class="col-sm-4 col-md-3 col-content-left"> <a class="btn btn-primary btn-lg" href="{% url 'kfet.account.group.create' %}">Créer un groupe</a>
<div class="content-left">
<div class="content-left-top text-center">
<div class="line"></div>
</div>
<div class="buttons">
<a class="btn btn-primary btn-lg" href="{% url 'kfet.account.group.create' %}">Créer un groupe</a>
</div>
</div>
</div>
<div class="col-sm-8 col-md-9 col-content-right">
{% include 'kfet/base_messages.html' %}
<div class="content-right">
{% for group in groups %}
<div class="content-right-block">
<div class="buttons-title">
<a class="btn btn-primary" href="{% url 'kfet.account.group.update' group.pk %}">
<span class="glyphicon glyphicon-cog"></span>
</a>
</div>
<h2>{{ group.name }}</h2>
<div class="row">
<div class="col-sm-6">
<h3>Permissions</h3>
<ul>
{% for perm in group.permissions.all %}
<li>{{ perm.name }}</li>
{% endfor %}
</ul>
</div>
<div class="col-sm-6">
<h3>Comptes</h3>
<ul>
{% for user in group.user_set.all %}
<li>{{ user.profile.account_kfet }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div> </div>
{% endblock %} {% endblock %}
{% block main-content %}
{% for group in groups %}
<div class="content-right-block">
<div class="buttons-title">
<a class="btn btn-primary" href="{% url 'kfet.account.group.update' group.pk %}">
<span class="glyphicon glyphicon-cog"></span>
</a>
</div>
<h2>{{ group.name }}</h2>
<div class="row">
<div class="col-sm-6">
<h3>Permissions</h3>
{% regroup group.permissions.all by content_type as grouped_perms %}
<ul class="list-unstyled">
{% for perms_group in grouped_perms %}
<li><b>{{ perms_group.grouper|title }}</b>
<ul class="list-unstyled">
{% for perm in perms_group.list %}
<li style="padding-left: 20px">{{ perm.name }}</li>
{% endfor %}
</ul>
{% endfor %}
</ul>
</div>
<div class="col-sm-6">
<h3>Comptes</h3>
<ul class="list-unstyled">
{% for user in group.user_set.all %}
<li>{{ user.profile.account_kfet }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endfor %}
{% endblock %}

View file

@ -1,37 +1,46 @@
{% extends 'kfet/base.html' %} {% extends 'kfet/base_col_1.html' %}
{% load staticfiles %} {% load staticfiles %}
{% load widget_tweaks %}
{% block extra_head %} {% block extra_head %}
<link rel="stylesheet" text="text/css" href="{% static 'kfet/css/multiple-select.css' %}"> <link rel="stylesheet" text="text/css" href="{% static 'kfet/css/multiple-select.css' %}">
<script src="{% static 'kfet/js/multiple-select.js' %}"></script> <script src="{% static 'kfet/js/multiple-select.js' %}"></script>
{% endblock %} {% endblock %}
{% block content %} {% block title %}Permissions - Édition{% endblock %}
{% block header-title %}Modification des permissions{% endblock %}
<form action="" method="post"> {% block main-class %}content-form{% endblock %}
{% block main-content %}
<form action="" method="post" class="form-horizontal">
{% csrf_token %} {% csrf_token %}
<div> <div class="form-group">
{{ form.name.errors }} <label for="{{ form.name.id_for_label }}" class="col-sm-2 control-label">{{ form.name.label }}</label>
{{ form.name.label_tag }} <div class="col-sm-10">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">K-Fêt</span> <span class="input-group-addon">K-Fêt</span>
{{ form.name }} {{ form.name|add_class:"form-control" }}
</div>
{% if form.name.errors %}<span class="help-block">{{ form.name.errors }}</span>{% endif %}
{% if form.name.help_text %}<span class="help-block">{{ form.name.help_text }}</span>{% endif %}
</div> </div>
</div> </div>
<div> {% include "kfet/form_field_snippet.html" with field=form.permissions %}
{{ form.permissions.errors }} {% if not perms.kfet.manage_perms %}
{{ form.permissions.label_tag }} {% include "kfet/form_authentication_snippet.html" %}
{{ form.permissions }} {% endif %}
</div> {% include "kfet/form_submit_snippet.html" with value="Enregistrer" %}
<input type="submit" value="Enregistrer">
</form> </form>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$("select").multipleSelect({ let $name_input = $("#id_name");
width: 500, let raw_name = $name_input.val();
filter: true, let prefix = "K-Fêt ";
}); if (raw_name.startsWith(prefix))
$name_input.val(raw_name.substring(prefix.length));
}); });
</script> </script>

View file

@ -1,79 +1,73 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Comptes en négatifs{% endblock %} {% block title %}Comptes - Négatifs{% endblock %}
{% block content-header-title %}Comptes - Négatifs{% endblock %} {% block header-title %}Comptes en négatifs{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ negatives|length }}</div>
<div class="content-left"> <div class="line line-bigsub">compte{{ negatives|length|pluralize }} en négatif</div>
<div class="content-left-top"> <div class="block">
<div class="line line-big">{{ negatives|length }}</div> <div class="line"><b>Total:</b> {{ negatives_sum|floatformat:2 }}€</div>
<div class="line line-bigsub">compte{{ negatives|length|pluralize }} en négatif</div>
<div class="block">
<div class="line"><b>Total:</b> {{ negatives_sum|floatformat:2 }}€</div>
</div>
<div class="block">
<div class="line"><b>Découvert autorisé par défaut</b></div>
<div class="line">Montant: {{ kfet_config.overdraft_amount }}€</div>
<div class="line">Pendant: {{ kfet_config.overdraft_duration }}</div>
</div>
</div>
{% if perms.kfet.change_settings %}
<div class="buttons">
<a class="btn btn-primary btn-lg" href="{% url 'kfet.settings' %}">Modifier les valeurs par défaut</a>
</div>
{% endif %}
</div>
</div> </div>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="block">
{% include 'kfet/base_messages.html' %} <div class="line"><b>Découvert autorisé par défaut</b></div>
<div class="content-right"> <div class="line">Montant: {{ kfet_config.overdraft_amount }}€</div>
<div class="content-right-block"> <div class="line">Pendant: {{ kfet_config.overdraft_duration }}</div>
<h2>Liste des comptes en négatifs</h2> </div>
<div class="table-responsive"> </div>
<table class="table table-condensed"> {% if perms.kfet.change_settings %}
<thead> <div class="buttons">
<tr> <a class="btn btn-primary btn-lg" href="{% url 'kfet.settings' %}">Modifier les valeurs par défaut</a>
<td></td> </div>
<td>Tri</td> {% endif %}
<td>Nom</td>
<td>Balance</td> {% endblock %}
<td>Réelle</td>
<td>Début</td> {% block main-content %}
<td>Découvert autorisé</td>
<td>Jusqu'au</td> <div class="content-right-block">
<td>Balance offset</td> <h2>Liste des comptes en négatifs</h2>
</tr> <div class="table-responsive">
</thead> <table class="table table-condensed">
<tbody> <thead>
{% for neg in negatives %} <tr>
<tr> <td></td>
<td class="text-center"> <td>Tri</td>
<a href="{% url 'kfet.account.update' neg.account.trigramme %}"> <td>Nom</td>
<span class="glyphicon glyphicon-cog"></span> <td>Balance</td>
</a> <td>Réelle</td>
</td> <td>Début</td>
<td>{{ neg.account.trigramme }}</td> <td>Découvert autorisé</td>
<td>{{ neg.account.name }}</td> <td>Jusqu'au</td>
<td class="text-right">{{ neg.account.balance|floatformat:2 }}€</td> <td>Balance offset</td>
<td class="text-right"> </tr>
{% if neg.balance_offset %} </thead>
{{ neg.account.real_balance|floatformat:2 }}€ <tbody>
{% endif %} {% for neg in negatives %}
</td> <tr>
<td>{{ neg.start|date:'d/m/Y H:i:s'}}</td> <td class="text-center">
<td>{{ neg.authz_overdraft_amount|default_if_none:'' }}</td> <a href="{% url 'kfet.account.update' neg.account.trigramme %}">
<td>{{ neg.authz_overdrafy_until|default_if_none:'' }}</td> <span class="glyphicon glyphicon-cog"></span>
<td>{{ neg.balance_offset|default_if_none:'' }}</td> </a>
</tr> </td>
{% endfor %} <td>{{ neg.account.trigramme }}</td>
</tbody> <td>{{ neg.account.name }}</td>
</table> <td class="text-right">{{ neg.account.balance|floatformat:2 }}€</td>
</div> <td class="text-right">
</div> {% if neg.balance_offset %}
</div> {{ neg.account.real_balance|floatformat:2 }}€
{% endif %}
</td>
<td>{{ neg.start|date:'d/m/Y H:i:s'}}</td>
<td>{{ neg.authz_overdraft_amount|default_if_none:'' }}</td>
<td>{{ neg.authz_overdrafy_until|default_if_none:'' }}</td>
<td>{{ neg.balance_offset|default_if_none:'' }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div> </div>
</div> </div>

View file

@ -1,4 +1,4 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_2.html" %}
{% load staticfiles %} {% load staticfiles %}
{% load kfet_tags %} {% load kfet_tags %}
{% load l10n %} {% load l10n %}
@ -23,20 +23,12 @@ $(document).ready(function() {
"{% url 'kfet.account.stat.balance.list' trigramme=account.trigramme %}", "{% url 'kfet.account.stat.balance.list' trigramme=account.trigramme %}",
$("#stat_balance") $("#stat_balance")
); );
}); });
</script> </script>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block title %} {% block title %}
{% if account.user == request.user %}
Mon compte
{% else %}
Informations du compte {{ account.trigramme }}
{% endif %}
{% endblock %}
{% block content-header-title %}
{% if account.user == request.user %} {% if account.user == request.user %}
Mon compte Mon compte
{% else %} {% else %}
@ -44,53 +36,47 @@ $(document).ready(function() {
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block header-title %}
{% if account.user == request.user %}
Mon compte
{% else %}
Informations du compte {{ account.trigramme }}
{% endif %}
{% endblock %}
<div class="row"> {% block fixed-content %}
<div class="col-sm-4 col-md-3 col-content-left"> {% include "kfet/left_account.html" %}
<div class="content-left"> {% endblock %}
{% include 'kfet/left_account.html' %}
{% block main-content %}
<div class="tab-content">
{% if account.user == request.user %}
<div class="content-right-block tab-pane fade in active" id="tab_stats">
<h2>Statistiques</h2>
<div>
<h3>Ma balance</h3>
<div id="stat_balance"></div>
<h3>Ma consommation</h3>
<div id="stat_last"></div>
</div> </div>
</div> </div><!-- content-right-block -->
<div class="col-sm-8 col-md-9 col-content-right"> {% endif %}
{% include "kfet/base_messages.html" %} <div class="content-right-block tab-pane fade {% if account.user != request.user %}in active{% endif %}" id="tab_history">
<div class="content-right"> {% if addcosts %}
<div class="content-right-block"> <h2>Gagné des majorations</h2>
<div class="col-sm-12 nopadding"> <div>
{% if account.user == request.user %} <ul>
<div class='tab-content'> {% for addcost in addcosts %}
<div class="tab-pane fade in active" id="tab_stats"> <li>{{ addcost.date|date:'l j F' }}: +{{ addcost.sum_addcosts }}€</li>
<h2>Statistiques</h2> {% endfor %}
<div class="panel-md-margin"> </ul>
<h3>Ma balance</h3> </div>
<div id="stat_balance"></div> {% endif %}
<h3>Ma consommation</h3> <h2>Historique</h2>
<div id="stat_last"></div> <div id="history"></div>
</div> </div><!-- content-right-block -->
</div> </div><!-- tab-content -->
<div class="tab-pane fade" id="tab_history">
{% endif %}
{% if addcosts %}
<h2>Gagné des majorations</h2>
<div>
<ul>
{% for addcost in addcosts %}
<li>{{ addcost.date|date:'l j F' }}: +{{ addcost.sum_addcosts }}€</li>
{% endfor %}
</ul>
</div>
{% endif %}
<h2>Historique</h2>
<div id="history"></div>
{% if account.user == request.user %}
</div>
</div><!-- tab-content -->
{% endif %}
</div><!-- col-sm-12 -->
</div><!-- content-right-block -->
</div><!-- content-right-->
</div>
</div>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {

View file

@ -1,6 +1,4 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_1.html" %}
{% load widget_tweaks %}
{% load staticfiles %}
{% block extra_head %} {% block extra_head %}
{{ negative_form.media }} {{ negative_form.media }}
@ -14,7 +12,7 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content-header-title %} {% block header-title %}
{% if account.user == request.user %} {% if account.user == request.user %}
Modification de mes informations Modification de mes informations
{% else %} {% else %}
@ -22,29 +20,23 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% include "kfet/base_messages.html" %} {% block main-content %}
<div class="row form-only"> <form action="" method="post" class="form-horizontal">
<div class="col-sm-12 col-md-8 col-md-offset-2"> {% csrf_token %}
<div class="content-form"> {% include 'kfet/form_snippet.html' with form=user_form %}
<form action="{% url 'kfet.account.update' account.trigramme %}" method="post" class="form-horizontal"> {% include 'kfet/form_snippet.html' with form=cof_form %}
{% csrf_token %} {% include 'kfet/form_snippet.html' with form=account_form %}
{% include 'kfet/form_snippet.html' with form=user_form %} {% include 'kfet/form_snippet.html' with form=group_form %}
{% include 'kfet/form_snippet.html' with form=cof_form %} {% include 'kfet/form_snippet.html' with form=pwd_form %}
{% include 'kfet/form_snippet.html' with form=account_form %} {% include 'kfet/form_snippet.html' with form=negative_form %}
{% include 'kfet/form_snippet.html' with form=group_form %} {% if perms.kfet.is_team %}
{% include 'kfet/form_snippet.html' with form=pwd_form %} {% include 'kfet/form_authentication_snippet.html' %}
{% include 'kfet/form_snippet.html' with form=negative_form %} {% endif %}
{% if perms.kfet.is_team %} {% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
{% include 'kfet/form_authentication_snippet.html' %} </form>
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
</form>
</div>
</div>
</div>
<script type="text/javascript"> <script type="text/javascript">

View file

@ -1,71 +1,64 @@
{% extends 'kfet/base.html' %} {% extends 'kfet/base_col_2.html' %}
{% block title %}Articles{% endblock %} {% block title %}Articles{% endblock %}
{% block content-header-title %}Articles{% endblock %} {% block header-title %}Articles{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ articles|length }}</div>
<div class="content-left"> <div class="line line-bigsub">article{{ articles|length|pluralize }}</div>
<div class="content-left-top"> </div>
<div class="line line-big">{{ articles|length }}</div> <div class="buttons">
<div class="line line-bigsub">article{{ articles|length|pluralize }}</div> <a class="btn btn-primary btn-lg" href="{% url 'kfet.article.create' %}">
</div> Nouvel article
<div class="buttons"> </a>
<a class="btn btn-primary btn-lg" href="{% url 'kfet.article.create' %}"> <a class="btn btn-primary btn-lg" href="{% url 'kfet.category' %}">
Nouvel article Catégories
</a> </a>
<a class="btn btn-primary btn-lg" href="{% url 'kfet.category' %}"> </div>
Catégories
</a> {% endblock %}
</div>
</div> {% block main-content %}
</div> <div class="content-right-block">
<div class="col-sm-8 col-md-9 col-content-right"> <h2>Liste des articles</h2>
{% include 'kfet/base_messages.html' %} <div class="table-responsive">
<div class="content-right"> <table class="table table-condensed">
<div class="content-right-block"> <thead>
<h2>Liste des articles</h2> <tr>
<div class="table-responsive"> <td></td>
<table class="table table-condensed"> <td>Nom</td>
<thead> <td class="text-right">Prix</td>
<tr> <td class="text-right">Stock</td>
<td></td> <td class="text-right">En vente</td>
<td>Nom</td> <td class="text-right">Affiché</td>
<td class="text-right">Prix</td> <td class="text-right">Dernier inventaire</td>
<td class="text-right">Stock</td> </tr>
<td class="text-right">En vente</td> </thead>
<td class="text-right">Affiché</td> <tbody>
<td class="text-right">Dernier inventaire</td> {% for article in articles %}
</tr> {% ifchanged article.category %}
</thead> <tr class="section">
<tbody> <td colspan="7">{{ article.category.name }}</td>
{% for article in articles %} </tr>
{% ifchanged article.category %} {% endifchanged %}
<tr class="section"> <tr>
<td colspan="7">{{ article.category.name }}</td> <td class="text-center">
</tr> <a href="{% url 'kfet.article.read' article.pk %}">
{% endifchanged %} <span class="glyphicon glyphicon-cog"></span>
<tr> </a>
<td class="text-center"> </td>
<a href="{% url 'kfet.article.read' article.pk %}"> <td>{{ article.name }}</td>
<span class="glyphicon glyphicon-cog"></span> <td class="text-right">{{ article.price }}€</td>
</a> <td class="text-right">{{ article.stock }}</td>
</td> <td class="text-right">{{ article.is_sold | yesno:"En vente,Non vendu"}}</td>
<td>{{ article.name }}</td> <td class="text-right">{{ article.hidden | yesno:"Caché,Affiché" }}</td>
<td class="text-right">{{ article.price }}€</td> <td class="text-right">{{ article.inventory.0.at }}</td>
<td class="text-right">{{ article.stock }}</td> </tr>
<td class="text-right">{{ article.is_sold | yesno:"En vente,Non vendu"}}</td> {% endfor %}
<td class="text-right">{{ article.hidden | yesno:"Caché,Affiché" }}</td> </tbody>
<td class="text-right">{{ article.inventory.0.at }}</td> </table>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,27 +1,12 @@
{% extends 'kfet/base.html' %} {% extends 'kfet/base_col_1.html' %}
{% load widget_tweaks %}
{% load staticfiles %}
{% block title %}Nouvel article{% endblock %} {% block title %}Nouvel article{% endblock %}
{% block content-header-title %}Création d'un article{% endblock %} {% block header-title %}Création d'un article{% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% include "kfet/base_messages.html" %} {% block main-content %}
<div class="row form-only"> {% include "kfet/base_form.html" with authz=perms.kfet.add_article submit_text="Enregistrer" %}
<div class="col-sm-12 col-md-8 col-md-offset-2">
<div class="content-form">
<form submit="" method="post" class="form-horizontal">
{% csrf_token %}
{% include 'kfet/form_snippet.html' with form=form %}
{% if not perms.kfet.add_article %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Enregistrer" %}
</form>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -1,4 +1,4 @@
{% extends 'kfet/base.html' %} {% extends 'kfet/base_col_2.html' %}
{% load staticfiles %} {% load staticfiles %}
{% block extra_head %} {% block extra_head %}
@ -6,97 +6,89 @@
<script type="text/javascript" src="{% static 'kfet/js/statistic.js' %}"></script> <script type="text/javascript" src="{% static 'kfet/js/statistic.js' %}"></script>
{% endblock %} {% endblock %}
{% block title %}Informations sur l'article {{ article }}{% endblock %} {% block title %}Article - {{ article.name }}{% endblock %}
{% block content-header-title %}Article - {{ article.name }}{% endblock %} {% block header-title %}Informations sur l'article {{ article.name }}{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ article.name }}</div>
<div class="content-left"> <div class="line line-bigsub">{{ article.category }}</div>
<div class="content-left-top"> <div class="block">
<div class="line line-big">{{ article.name }}</div> <div class="line">Prix (hors réduc.): {{ article.price }}€</div>
<div class="line line-bigsub">{{ article.category }}</div> <div class="line">Stock: {{ article.stock }}</div>
<div class="block"> <div class="line">En vente: {{ article.is_sold | yesno:"Oui,Non" }}</div>
<div class="line">Prix (hors réduc.): {{ article.price }}€</div> <div class="line">Affiché: {{ article.hidden | yesno:"Non,Oui" }}</div>
<div class="line">Stock: {{ article.stock }}</div>
<div class="line">En vente: {{ article.is_sold | yesno:"Oui,Non" }}</div>
<div class="line">Affiché: {{ article.hidden | yesno:"Non,Oui" }}</div>
</div>
</div>
<div class="buttons">
<a class="btn btn-primary btn-lg" href="{% url 'kfet.article.update' article.pk %}">
Modifier
</a>
</div>
</div>
</div> </div>
<div class="col-sm-8 col-md-9 col-content-right"> </div>
{% include 'kfet/base_messages.html' %} <div class="buttons">
<div class="content-right"> <a class="btn btn-primary btn-lg" href="{% url 'kfet.article.update' article.pk %}">
<div class="content-right-block"> Modifier
<h2>Historique</h2> </a>
<div class="row"> </div>
<div class="col-sm-6">
<h3>Inventaires</h3> {% endblock %}
<table class="table">
<thead> {% block main-content %}
<tr>
<td>Date</td> <div class="content-right-block">
<td>Stock</td> <h2>Historique</h2>
<td>Erreur</td> <div class="row" style="padding-bottom: 15px">
</tr> <div class="col-md-6">
</thead> <h3>Inventaires</h3>
<tbody> <table class="table">
{% for inventoryart in inventoryarts %} <thead>
<tr> <tr>
<td>{{ inventoryart.inventory.at }}</td> <td>Date</td>
<td>{{ inventoryart.stock_new }}</td> <td>Stock</td>
<td>{{ inventoryart.stock_error }}</td> <td>Erreur</td>
</tr> </tr>
{% endfor %} </thead>
</tbody> <tbody>
</table> {% for inventoryart in inventoryarts %}
</div> <tr>
<div class="col-sm-6"> <td>{{ inventoryart.inventory.at }}</td>
<h3>Prix fournisseurs</h3> <td>{{ inventoryart.stock_new }}</td>
<table class="table"> <td>{{ inventoryart.stock_error }}</td>
<thead> </tr>
<tr> {% endfor %}
<td>Date</td> </tbody>
<td>Fournisseur</td> </table>
<td>HT</td> </div>
<td>TVA</td> <div class="col-md-6">
<td>Droits</td> <h3>Prix fournisseurs</h3>
</tr> <div class="table-responsive">
</thead> <table class="table">
<tbody> <thead>
{% for supplierart in supplierarts %} <tr>
<tr> <td>Date</td>
<td>{{ supplierart.at }}</td> <td>Fournisseur</td>
<td>{{ supplierart.supplier.name }}</td> <td>HT</td>
<td>{{ supplierart.price_HT }}</td> <td>TVA</td>
<td>{{ supplierart.TVA }}</td> <td>Droits</td>
<td>{{ supplierart.rights }}</td> </tr>
</tr> </thead>
{% endfor %} <tbody>
</tbody> {% for supplierart in supplierarts %}
</table> <tr>
</div> <td>{{ supplierart.at }}</td>
</div><!-- /row--> <td>{{ supplierart.supplier.name }}</td>
</div> <td>{{ supplierart.price_HT }}</td>
<div class="content-right-block content-right-block-transparent"> <td>{{ supplierart.TVA }}</td>
<h2>Statistiques</h2> <td>{{ supplierart.rights }}</td>
<div class="row"> </tr>
<div class="col-sm-12 nopadding"> {% endfor %}
<div class="panel-md-margin"> </tbody>
<h3>Ventes de {{ article.name }}</h3> </table>
<div id="stat_last"></div>
</div>
</div>
</div><!-- /row -->
</div> </div>
</div> </div>
</div><!-- /row-->
</div>
<div class="content-right-block">
<h2>Statistiques</h2>
<div>
<h3>Ventes</h3>
<div id="stat_last"></div>
</div> </div>
</div> </div>

View file

@ -1,27 +1,12 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% load widget_tweaks %}
{% load staticfiles %}
{% block title %}Édition de l'article {{ article.name }}{% endblock %} {% block title %}{{ article.name }} - Édition{% endblock %}
{% block content-header-title %}Article {{ article.name }} - Édition{% endblock %} {% block header-title %}Édition de l'article {{ article.name }}{% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% include "kfet/base_messages.html" %} {% block main-content %}
<div class="row form-only"> {% include "kfet/base_form.html" with authz=perms.kfet.change_article submit_text="Mettre à jour"%}
<div class="col-sm-12 col-md-8 col-md-offset-2">
<div class="content-form">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% include 'kfet/form_snippet.html' with form=form %}
{% if not perms.kfet.change_article %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
</form>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -30,12 +30,12 @@
<body> <body>
{% include "kfet/base_nav.html" %} {% include "kfet/base_nav.html" %}
<div class="container-fluid"> <div class="container-fluid">
{% block content-header %} {% block header %}
<div class="row row-page-header"> <div class="row row-page-header">
<div class="col-lg-12"> <div class="col-lg-12">
<h1 class="page-header">{% block content-header-title %}{% endblock %}</h1> <h1 class="page-header">{% block header-title %}{% endblock %}</h1>
</div>
</div> </div>
</div>
{% endblock %} {% endblock %}
{% block content %}{% endblock %} {% block content %}{% endblock %}
{% include "kfet/base_footer.html" %} {% include "kfet/base_footer.html" %}

View file

@ -0,0 +1,14 @@
{% extends "kfet/base.html" %}
{% block content %}
<div class="row">
<div class="nopadding {% block main-size %}col-md-8 col-md-offset-2{% endblock %}">
{% include "kfet/base_messages.html" %}
<div class="content-center {% block main-class %}{% endblock %}">
{% block main-content %}{% endblock %}
</div>
</div>
<div>
{% endblock %}

View file

@ -0,0 +1,19 @@
{% extends "kfet/base.html" %}
{% block content %}
<div class="row">
<div class="col-content-left {% block fixed-size %}col-sm-4 col-md-3{% endblock %}">
<div class="content-left">
{% block fixed-content %}{% endblock %}
</div>
</div>
<div class="col-content-right {% block main-size %}col-sm-8 col-md-9{% endblock %}">
{% include "kfet/base_messages.html" %}
<div class="content-right">
{% block main-content %}{% endblock %}
</div>
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,10 @@
{% load kfet_tags %}
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% include "kfet/form_snippet.html" %}
{% if not authz %}
{% include "kfet/form_authentication_snippet.html" %}
{% endif %}
{% include "kfet/form_submit_snippet.html" with value=submit_text %}
</form>

View file

@ -1,8 +1,8 @@
{% if messages %} {% if messages %}
<div class="row messages"> <div class="row messages">
{% for message in messages %} {% for message in messages %}
<div class="col-sm-12 item"> <div class="col-sm-12 nopadding">
<div class="alert alert-{{ message.level_tag }} alert-dismissible fade in{% if message.tags %} {{ message.tags }}{% endif %}"> <div class="alert alert-{{ message.level_tag }} alert-dismissible fade in {{ message.tags }}">
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span></button>
{% if 'safe' in message.tags %} {% if 'safe' in message.tags %}
{{ message|safe }} {{ message|safe }}

View file

@ -9,46 +9,50 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="#"> <a class="navbar-brand" href="{% url 'kfet.home' %}">
<img src="{% static 'kfet/img/logo3.png' %}"> <img src="{% static 'kfet/img/logo3.png' %}">
</a> </a>
</div> </div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="{% url 'kfet.home' %}">Home</a></li> <li class="hidden-xs">
<a href="{% url 'kfet.home' %}">
<span class="glyphicon glyphicon-home"></span>
</a>
</li>
{% if user.profile.account_kfet %}
<li>
<a href="{% url 'kfet.account.read' user.profile.account_kfet.trigramme %}">Mon compte</a>
</li>
{% endif %}
</ul> </ul>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
{% if user.username == 'kfet_genericteam' %} {% if user.username == 'kfet_genericteam' %}
<li class="navbar-text">Équipe standard</li> <li class="navbar-text">Équipe standard</li>
{% endif %}
{% if user.profile.account_kfet %}
<li>
<a href="{% url 'kfet.account.read' user.profile.account_kfet.trigramme %}">Mes infos</a>
</li>
{% endif %} {% endif %}
{% if perms.kfet.is_team %} {% if perms.kfet.is_team %}
<li class="dropdown"> <li><a href="{% url 'kfet.kpsul' %}">K-Psul</a></li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Admin <span class="caret"></span></a> <li><a href="{% url 'kfet.history' %}">Historique</a></li>
<ul class="dropdown-menu"> <li><a href="{% url 'kfet.transfers' %}">Transferts</a></li>
<li><a href="{% url 'kfet.kpsul' %}">K-Psul</a></li> <li class="dropdown">
<li><a href="{% url 'kfet.history' %}">Historique</a></li> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Admin <span class="caret"></span></a>
<li><a href="{% url 'kfet.transfers' %}">Transferts</a></li> <ul class="dropdown-menu">
<li class="divider"></li> <li class="divider"></li>
<li><a href="{% url 'kfet.account' %}">Comptes</a></li> <li><a href="{% url 'kfet.account' %}">Comptes</a></li>
<li><a href="{% url 'kfet.checkout' %}">Caisses</a></li> <li><a href="{% url 'kfet.checkout' %}">Caisses</a></li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="{% url 'kfet.article' %}">Articles</a></li> <li><a href="{% url 'kfet.article' %}">Articles</a></li>
<li><a href="{% url 'kfet.inventory' %}">Inventaires</a></li> <li><a href="{% url 'kfet.inventory' %}">Inventaires</a></li>
<li><a href="{% url 'kfet.order' %}">Commandes</a></li> <li><a href="{% url 'kfet.order' %}">Commandes</a></li>
{% if user.username != 'kfet_genericteam' %} {% if user.username != 'kfet_genericteam' %}
<li class="divider"></li> <li class="divider"></li>
<li><a href="{% url 'kfet.login.genericteam' %}" target="_blank" id="genericteam">Connexion standard</a></li> <li><a href="{% url 'kfet.login.genericteam' %}" target="_blank" id="genericteam">Connexion standard</a></li>
{% endif %} {% endif %}
{% if perms.kfet.change_settings %} {% if perms.kfet.change_settings %}
<li><a href="{% url 'kfet.settings' %}">Paramètres</a></li> <li><a href="{% url 'kfet.settings' %}">Paramètres</a></li>
{% endif %} {% endif %}
</ul> </ul>
</li> </li>
{% endif %} {% endif %}
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li><a href="{% url 'gestioncof.views.logout' %}?next=/k-fet/" title="Déconnexion"><span class="glyphicon glyphicon-log-out"></span></a></li> <li><a href="{% url 'gestioncof.views.logout' %}?next=/k-fet/" title="Déconnexion"><span class="glyphicon glyphicon-log-out"></span></a></li>

View file

@ -1,52 +1,46 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Categories d'articles{% endblock %} {% block title %}Categories d'articles{% endblock %}
{% block content-header-title %}Categories d'articles{% endblock %} {% block header-title %}Categories d'articles{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ categories|length }}</div>
<div class="content-left"> <div class="line line-bigsub">catégorie{{ categories|length|pluralize }}</div>
<div class="content-left-top"> </div>
<div class="line line-big">{{ categories|length }}</div>
<div class="line line-bigsub">catégorie{{ categories|length|pluralize }}</div> {% endblock %}
</div>
</div> {% block main-content %}
</div>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="content-right-block">
{% include 'kfet/base_messages.html' %} <h2>Liste des catégories</h2>
<div class="content-right"> <div class="table-responsive">
<div class="content-right-block"> <table class="table table-condensed">
<h2>Liste des catégories</h2> <thead>
<div class="table-responsive"> <tr>
<table class="table table-condensed"> <td></td>
<thead> <td>Nom</td>
<tr> <td class="text-right">Nombre d'articles</td>
<td></td> <td class="text-right">Peut être majorée</td>
<td>Nom</td> </tr>
<td class="text-right">Nombre d'articles</td> </thead>
<td class="text-right">Peut être majorée</td> <tbody>
</tr> {% for category in categories %}
</thead> <tr>
<tbody> <td class="text-center">
{% for category in categories %} <a href="{% url 'kfet.category.update' category.pk %}">
<tr> <span class="glyphicon glyphicon-cog"></span>
<td class="text-center"> </a>
<a href="{% url 'kfet.category.update' category.pk %}"> </td>
<span class="glyphicon glyphicon-cog"></span> <td>{{ category.name }}</td>
</a> <td class="text-right">{{ category.articles.all|length }}</td>
</td> <td class="text-right">{{ category.has_addcost | yesno:"Oui,Non"}}</td>
<td>{{ category.name }}</td> </tr>
<td class="text-right">{{ category.articles.all|length }}</td> {% endfor %}
<td class="text-right">{{ category.has_addcost | yesno:"Oui,Non"}}</td> </tbody>
</tr> </table>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,25 +1,12 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% block title %}Édition de la catégorie {{ category.name }}{% endblock %} {% block title %}{{ articlecategory.name }} - Édition{% endblock %}
{% block content-header-title %}Catégorie {{ category.name }} - Édition{% endblock %} {% block header-title %}Édition de la catégorie {{ articlecategory.name }}{% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% include "kfet/base_messages.html" %} {% block main-content %}
<div class="row form-only"> {% include "kfet/base_form.html" with authz=perms.kfet.edit_articlecategory submit_text="Enregistrer"%}
<div class="col-sm-12 col-md-8 col-md-offset-2">
<div class="content-form">
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
{% include 'kfet/form_snippet.html' with form=form %}
{% if not perms.kfet.edit_articlecategory %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Enregistrer"%}
<form>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -1,59 +1,53 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_2.html" %}
{% block title %}Liste des caisses{% endblock %} {% block title %}Caisses{% endblock %}
{% block content-header-title %}Caisses{% endblock %} {% block header-title %}Caisses{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top text-center">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ checkouts|length }}</div>
<div class="content-left"> <div class="line line-bigsub">caisse{{ checkouts|length|pluralize }}</div>
<div class="content-left-top text-center"> </div>
<div class="line line-big">{{ checkouts|length }}</div> <div class="buttons">
<div class="line line-bigsub">caisse{{ checkouts|length|pluralize }}</div> <a class="btn btn-primary btn-lg" href="{% url 'kfet.checkout.create' %}">Créer une caisse</a>
</div> </div>
<div class="buttons">
<a class="btn btn-primary btn-lg" href="{% url 'kfet.checkout.create' %}">Créer une caisse</a> {% endblock %}
</div>
</div> {% block main-content %}
</div>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="content-right-block">
{% include 'kfet/base_messages.html' %} <h2>Liste des caisses</h2>
<div class="content-right"> <div class="table-responsive">
<div class="content-right-block"> <table class="table table-condensed">
<h2>Liste des caisses</h2> <thead>
<div class="table-responsive"> <tr>
<table class="table table-condensed"> <td></td>
<thead> <td>Nom</td>
<tr> <td class="text-right">Balance</td>
<td></td> <td class="text-right">Déb. valid.</td>
<td>Nom</td> <td class="text-right">Fin valid.</td>
<td class="text-right">Balance</td> <td class="text-right">Protégée</td>
<td class="text-right">Déb. valid.</td> </tr>
<td class="text-right">Fin valid.</td> </thead>
<td class="text-right">Protégée</td> <tbody>
</tr> {% for checkout in checkouts %}
</thead> <tr>
<tbody> <td>
{% for checkout in checkouts %} <a href="{% url 'kfet.checkout.read' checkout.pk %}">
<tr> <span class="glyphicon glyphicon-cog"></span>
<td> </a>
<a href="{% url 'kfet.checkout.read' checkout.pk %}"> </td>
<span class="glyphicon glyphicon-cog"></span> <td>{{ checkout.name }}</td>
</a> <td class="text-right">{{ checkout.balance}}€</td>
</td> <td class="text-right">{{ checkout.valid_from }}</td>
<td>{{ checkout.name }}</td> <td class="text-right">{{ checkout.valid_to }}</td>
<td class="text-right">{{ checkout.balance}}€</td> <td class="text-right">{{ checkout.is_protected }}</td>
<td class="text-right">{{ checkout.valid_from }}</td> </tr>
<td class="text-right">{{ checkout.valid_to }}</td> {% endfor %}
<td class="text-right">{{ checkout.is_protected }}</td> </tbody>
</tr> </table>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,28 +1,13 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_1.html" %}
{% block extra_head %}{{ form.media }}{% endblock %} {% block extra_head %}{{ form.media }}{% endblock %}
{% block title %}Nouvelle caisse{% endblock %} {% block title %}Nouvelle caisse{% endblock %}
{% block content-header-title %}Création d'une caisse{% endblock %} {% block header-title %}Création d'une caisse{% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% block main-content %}
{% include 'kfet/base_messages.html' %} {% include "kfet/base_form.html" with authz=perms.kfet.add_checkout submit_text="Enregistrer" %}
<form action="" method="post">
{% csrf_token %}
{{ form.non_field_errors}}
{% for field in form %}
{{ field.errors }}
{{ field.label_tag }}
<div style="position:relative">{{ field }}</div>
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
{% endfor %}
{% if not perms.kfet.add_checkout %}
<input type="password" name="KFETPASSWORD">
{% endif %}
<input type="submit" value="Enregistrer">
</form>
<script type="text/javascript"> <script type="text/javascript">

View file

@ -1,50 +1,41 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Informations sur la caisse {{ checkout.name }}{% endblock %} {% block title %}Caisse - {{ checkout.name }}{% endblock %}
{% block content-header-title %}Caisse - {{ checkout.name }}{% endblock %} {% block header-title %}Informations sur la caisse {{ checkout.name }}{% endblock %}
{% block content %} {% block fixed-content %}
{% include 'kfet/left_checkout.html' %}
{% endblock %}
<div class="row"> {% block main-content %}
<div class="col-sm-4 col-md-3 col-content-left"> <div class="content-right-block">
<div class="content-left"> <h2>Relevés</h2>
{% include 'kfet/left_checkout.html' %} <div class="table-responsive">
</div> {% if not statements %}
</div> Pas de relevé
<div class="col-sm-8 col-md-9 col-content-right"> {% else %}
{% include "kfet/base_messages.html" %} <table class="table">
<div class="content-right"> <thead>
<div class="content-right-block"> <tr>
<h2>Relevés</h2> <td></td>
<div> <td>Date/heure</td>
{% if not statements %} <td>Montant pris</td>
Pas de relevé <td>Montant laissé</td>
{% else %} <td>Erreur</td>
<table class="table"> </thead>
<thead> <tbody>
<tr> {% for statement in statements %}
<td></td> <tr>
<td>Date/heure</td> <td><a href="{% url 'kfet.checkoutstatement.update' checkout.pk statement.pk %}"><span class="glyphicon glyphicon-cog"></span></a></td>
<td>Montant pris</td> <td>{{ statement.at }}</td>
<td>Montant laissé</td> <td>{{ statement.amount_taken }}</td>
<td>Erreur</td> <td>{{ statement.balance_new }}</td>
</thead> <td>{{ statement.amount_error }}</td>
<tbody> </tr>
{% for statement in statements %} {% endfor %}
<tr> </tbody>
<td><a href="{% url 'kfet.checkoutstatement.update' checkout.pk statement.pk %}"><span class="glyphicon glyphicon-cog"></span></a></td> </table>
<td>{{ statement.at }}</td> {% endif %}
<td>{{ statement.amount_taken }}</td>
<td>{{ statement.balance_new }}</td>
<td>{{ statement.amount_error }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,39 +1,18 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block extra_head %}{{ form.media }}{% endblock %} {% block extra_head %}{{ form.media }}{% endblock %}
{% block title %}Édition de la caisse {{ checkout.name }}{% endblock %} {% block title %}Caisse {{ checkout.name }} - Édition{% endblock %}
{% block content-header-title %}Caisse {{ checkout.name }} - Édition{% endblock %} {% block header-title %}Édition de la caisse {{ checkout.name }}{% endblock %}
{% block content %} {% block fixed-content %}
{% include "kfet/left_checkout.html" %}
{% endblock %}
<div class="row"> {% block main-content %}
<div class="col-sm-4 col-md-3 col-content-left">
<div class="content-left"> <div class="content-right-block">
{% include 'kfet/left_checkout.html' %} <div style="padding: 15px;">
</div> {% include "kfet/base_form.html" with authz=perms.kfet.change_checkout submit_text="Mettre à jour" %}
</div>
<div class="col-sm-8 col-md-9 col-content-right">
{% include 'kfet/base_messages.html' %}
<div class="content-right">
<div class="content-right-block">
<form action="" method="post">
{% csrf_token %}
{{ form.non_field_errors }}
{% for field in form %}
{{ field.errors }}
{{ field.label_tag }}
<div style="position:relative">{{ field }}</div>
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
{% endfor %}
{% if not perms.kfet.add_checkout %}
<input type="password" name="KFETPASSWORD">
{% endif %}
<input type=submit value="Mettre à jour">
</form>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,139 +1,188 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_2.html" %}
{% load l10n %} {% load l10n %}
{% load widget_tweaks %}
{% block title %}Nouveau relevé{% endblock %} {% block title %}Nouveau relevé - {{ checkout.name }}{% endblock %}
{% block content-header-title %}Caisse {{ checkout.name }} - Nouveau relevé{% endblock %} {% block header-title %}Création d'un relevé pour la caisse {{ checkout.name }}{% endblock %}
{% block content %} {% block fixed-content %}
{% include "kfet/left_checkout.html" %}
{% endblock %}
<div class="row"> {% block main-content %}
<div class="col-sm-4 col-md-3 col-content-left"> <form action="" method="post">
<div class="content-left"> {% csrf_token %}
{% include 'kfet/left_checkout.html' %} <div class="content-right-block">
<h2>Général</h2>
<div class="content-form statement-create-summary">
<table>
<tr>
<td>
<label for="{{ form.not_count.id_for_label }}" class="control-label">{{ form.not_count.label }}</label>
</td>
<td>{{ form.not_count }}</td>
</tr>
<tr>
<td>Ancienne balance</td>
<td>
<span id="balance_old">{{ checkout.balance|unlocalize }}</span>
</td>
</tr>
<tr>
<td>Nouvelle balance</td>
<td><span id="balance_new">0</span></td>
</tr>
<tr>
<td>Pris</td>
<td><span id="amount_taken">0</span></td>
</tr>
<tr>
<td>Erreur</td>
<td><span id="amount_error">0</span></td>
</tr>
</table>
{% if not perms.kfet.add_checkoutstatement %}
{% include "kfet/form_authentication_snippet.html" %}
{% endif %}
<br>
<div class="row text-center">
<input type="submit" value="Enregistrer" class="btn btn-lg btn-primary">
</div>
</div> </div>
</div> </div>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="content-right-block">
{% include "kfet/base_messages.html" %} <h2>Pris</h2>
<div class="content-right"> <div id="detail_taken">
<form action="" method="post"> <div class="table-responsive">
{% csrf_token %} <table class="table table-condensed">
<div class="content-right-block"> <thead>
<h2>Général</h2> <tr>
<div> <td>5€</td>
<label> <td>10€</td>
Ne pas compter la caisse <td>20€</td>
{{ form.not_count }} <td>50€</td>
</label><br> <td>100€</td>
Ancienne balance : <span id="balance_old">{{ checkout.balance|unlocalize }}</span><br> <td>200€</td>
Nouvelle balance : <span id="balance_new">0</span><br> <td>500€</td>
Pris : <span id="amount_taken">0</span><br> </tr>
Erreur : <span id="amount_error">0</span><br> </thead>
{% if not perms.kfet.add_checkoutstatement %} <tbody>
<label for="password">Mot de passe:</label> <tr>
<input type="password" id="password" name="KFETPASSWORD"> <td><input id="id_taken_5" name="taken_5" data-value="5" min="0" value="0" type="number" class="form-control" required></td>
{% endif %} <td><input id="id_taken_10" name="taken_10" data-value="10" min="0" value="0" type="number" class="form-control" required></td>
<input type="submit" value="Enregistrer"> <td><input id="id_taken_20" name="taken_20" data-value="20" min="0" value="0" type="number" class="form-control" required></td>
</div> <td><input id="id_taken_50" name="taken_50" data-value="50" min="0" value="0" type="number" class="form-control" required></td>
</div> <td><input id="id_taken_100" name="taken_100" data-value="100" min="0" value="0" type="number" class="form-control" required></td>
<div class="content-right-block"> <td><input id="id_taken_200" name="taken_200" data-value="200" min="0" value="0" type="number" class="form-control" required></td>
<h2>Pris</h2> <td><input id="id_taken_500" name="taken_500" data-value="500" min="0" value="0" type="number" class="form-control" required></td>
<div id="detail_taken"> </tr>
<table class="table table-bordered"> </tbody>
<tr style="font-weight:bold;"> </table>
<td>5€</td> </div>
<td>10€</td> <div class="table-responsive">
<td>20€</td> <table class="table table-condensed">
<td>50€</td> <thead>
<td>100€</td> <tr>
<td>200€</td> <td>2€</td>
<td>500€</td> <td>1€</td>
<tr> <td>0.50€</td>
<tr> <td>0.20€</td>
<td><input id="id_taken_5" name="taken_5" data-value="5" min="0" value="0" type="number" class="form-control" required></td> <td>0.10€</td>
<td><input id="id_taken_10" name="taken_10" data-value="10" min="0" value="0" type="number" class="form-control" required></td> <td>0.05€</td>
<td><input id="id_taken_20" name="taken_20" data-value="20" min="0" value="0" type="number" class="form-control" required></td> <td>0.02€</td>
<td><input id="id_taken_50" name="taken_50" data-value="50" min="0" value="0" type="number" class="form-control" required></td> <td>0.01€</td>
<td><input id="id_taken_100" name="taken_100" data-value="100" min="0" value="0" type="number" class="form-control" required></td> </tr>
<td><input id="id_taken_200" name="taken_200" data-value="200" min="0" value="0" type="number" class="form-control" required></td> </thead>
<td><input id="id_taken_500" name="taken_500" data-value="500" min="0" value="0" type="number" class="form-control" required></td> <tbody>
</tr> <tr>
</table> <td><input id="id_taken_2" name="taken_2" data-value="2" min="0" value="0" type="number" class="form-control" required></td>
<table class="table table-bordered"> <td><input id="id_taken_1" name="taken_1" data-value="1" min="0" value="0" type="number" class="form-control" required></td>
<tr style="font-weight:bold;"> <td><input id="id_taken_05" name="taken_05" data-value="0.5" min="0" value="0" type="number" class="form-control" required></td>
<td>2€</td> <td><input id="id_taken_02" name="taken_02" data-value="0.2" min="0" value="0" type="number" class="form-control" required></td>
<td>1€</td> <td><input id="id_taken_01" name="taken_01" data-value="0.1" min="0" value="0" type="number" class="form-control" required></td>
<td>0.50€</td> <td><input id="id_taken_005" name="taken_005" data-value="0.05" min="0" value="0" type="number" class="form-control" required></td>
<td>0.20€</td> <td><input id="id_taken_002" name="taken_002" data-value="0.02" min="0" value="0" type="number" class="form-control" required></td>
<td>0.10€</td> <td><input id="id_taken_001" name="taken_001" data-value="0.01" min="0" value="0" type="number" class="form-control" required></td>
<td>0.05€</td> </tr>
<td>0.02€</td> </tbody>
<td>0.01€</td> </table>
<tr> </div>
<tr> <div class="table-responsive">
<td><input id="id_taken_2" name="taken_2" data-value="2" min="0" value="0" type="number" class="form-control" required></td> <table class="table table-condensed">
<td><input id="id_taken_1" name="taken_1" data-value="1" min="0" value="0" type="number" class="form-control" required></td> <thead>
<td><input id="id_taken_05" name="taken_05" data-value="0.5" min="0" value="0" type="number" class="form-control" required></td> <tr><td>Chèques</td></tr>
<td><input id="id_taken_02" name="taken_02" data-value="0.2" min="0" value="0" type="number" class="form-control" required></td> </thead>
<td><input id="id_taken_01" name="taken_01" data-value="0.1" min="0" value="0" type="number" class="form-control" required></td> <tbody>
<td><input id="id_taken_005" name="taken_005" data-value="0.05" min="0" value="0" type="number" class="form-control" required></td> <tr>
<td><input id="id_taken_002" name="taken_002" data-value="0.02" min="0" value="0" type="number" class="form-control" required></td> <td>
<td><input id="id_taken_001" name="taken_001" data-value="0.01" min="0" value="0" type="number" class="form-control" required></td> <input id="id_taken_cheque" name="taken_cheque" data-value="1" min="0" step="0.01" value="0" type="number" class="form-control" required>
</tr> </td>
</table> </tr>
<p style="font-weight:bold"> Chèque:</p> <input id="id_taken_cheque" name="taken_cheque" data-value="1" min="0" step="0.01" value="0" type="number" class="form-control" required> </tbody>
</div> </table>
</div> </div>
<div class="content-right-block">
<h2>En caisse</h2>
<div id="detail_balance">
<table class="table table-bordered">
<tr style="font-weight:bold;">
<td>5€</td>
<td>10€</td>
<td>20€</td>
<td>50€</td>
<td>100€</td>
<td>200€</td>
<td>500€</td>
<tr>
<tr>
<td><input id="id_balance_5" name="balance_5" data-value="5" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_10" name="balance_10" data-value="10" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_20" name="balance_20" data-value="20" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_50" name="balance_50" data-value="50" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_100" name="balance_100" data-value="100" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_200" name="balance_200" data-value="200" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_500" name="balance_500" data-value="500" min="0" value="0" type="number" class="form-control" required></td>
</tr>
</table>
<table class="table table-bordered">
<tr style="font-weight:bold;">
<td>2€</td>
<td>1€</td>
<td>0.50€</td>
<td>0.20€</td>
<td>0.10€</td>
<td>0.05€</td>
<td>0.02€</td>
<td>0.01€</td>
<tr>
<tr>
<td><input id="id_balance_2" name="balance_2" data-value="2" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_1" name="balance_1" data-value="1" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_05" name="balance_05" data-value="0.5" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_02" name="balance_02" data-value="0.2" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_01" name="balance_01" data-value="0.1" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_005" name="balance_005" data-value="0.05" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_002" name="balance_002" data-value="0.02" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_001" name="balance_001" data-value="0.01" min="0" value="0" type="number" class="form-control" required></td>
</tr>
</table>
</div>
</div>
</form>
</div> </div>
</div> </div>
</div> <div class="content-right-block">
<h2>En caisse</h2>
<div id="detail_balance">
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td>5€</td>
<td>10€</td>
<td>20€</td>
<td>50€</td>
<td>100€</td>
<td>200€</td>
<td>500€</td>
</tr>
</thead>
<tbody>
<tr>
<td><input id="id_balance_5" name="balance_5" data-value="5" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_10" name="balance_10" data-value="10" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_20" name="balance_20" data-value="20" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_50" name="balance_50" data-value="50" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_100" name="balance_100" data-value="100" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_200" name="balance_200" data-value="200" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_500" name="balance_500" data-value="500" min="0" value="0" type="number" class="form-control" required></td>
</tr>
</tbody>
</table>
</div>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td>2€</td>
<td>1€</td>
<td>0.50€</td>
<td>0.20€</td>
<td>0.10€</td>
<td>0.05€</td>
<td>0.02€</td>
<td>0.01€</td>
</tr>
</thead>
<tbody>
<tr>
<td><input id="id_balance_2" name="balance_2" data-value="2" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_1" name="balance_1" data-value="1" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_05" name="balance_05" data-value="0.5" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_02" name="balance_02" data-value="0.2" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_01" name="balance_01" data-value="0.1" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_005" name="balance_005" data-value="0.05" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_002" name="balance_002" data-value="0.02" min="0" value="0" type="number" class="form-control" required></td>
<td><input id="id_balance_001" name="balance_001" data-value="0.01" min="0" value="0" type="number" class="form-control" required></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</form>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {

View file

@ -1,33 +1,15 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% block title %}Modification d'un relevé{% endblock %} {% block title %}Modification d'un relevé{% endblock %}
{% block content-header-title %} {% block header-title %}
Caisse {{ checkout.name }} - Modification relevé {{ checkoutstatement.at }} Caisse {{ checkout.name }}<br>
Modification du relevé {{ checkoutstatement.at }}
{% endblock %} {% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
<div class="row"> {% block main-content %}
<div class="col-sm-4 col-md-3 col-content-left">
<div class="content-left"> {% include "kfet/base_form.html" with authz=perms.kfet.change_checkoutstatement submit_text="Enregistrer"%}
{% include 'kfet/left_checkout.html' %}
</div>
</div>
<div class="col-sm-8 col-md-9 col-content-right">
{% include 'kfet/base_messages.html' %}
<div class="content-right form-only">
<div class="content-form">
<form submit="" method="post" class="form-horizontal">
{% csrf_token %}
{% include 'kfet/form_snippet.html' with form=form %}
{% if not perms.kfet.change_checkoutstatement %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Enregistrer" %}
</form>
</div>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -3,7 +3,19 @@
<div class="form-group"> <div class="form-group">
<label for="{{ field.id_for_label }}" class="col-sm-2 control-label">{{ field.label }}</label> <label for="{{ field.id_for_label }}" class="col-sm-2 control-label">{{ field.label }}</label>
<div class="col-sm-10"> <div class="col-sm-10">
{{ field|add_class:'form-control' }} {% if field|widget_type == "checkboxselectmultiple" %}
<ul class="list-unstyled checkbox-select-multiple">
{% for choice in form.permissions %}
<li class="col-sm-6 col-lg-4">
<label for="{{ choice.id_for_label }}">
{{ choice.tag }} {{ choice.choice_label }}
</label>
</li>
{% endfor %}
</ul>
{% else %}
{{ field|add_class:'form-control' }}
{% endif %}
{% if field.errors %} {% if field.errors %}
<span class="help-block">{{field.errors}}</span> <span class="help-block">{{field.errors}}</span>
{% endif %} {% endif %}

View file

@ -14,7 +14,6 @@
<script type="text/javascript" src="{% static 'kfet/js/moment-timezone-with-data-2010-2020.js' %}"></script> <script type="text/javascript" src="{% static 'kfet/js/moment-timezone-with-data-2010-2020.js' %}"></script>
<script type="text/javascript" src="{% static 'kfet/js/bootstrap-datetimepicker.min.js' %}"></script> <script type="text/javascript" src="{% static 'kfet/js/bootstrap-datetimepicker.min.js' %}"></script>
<script type="text/javascript" src="{% static 'kfet/js/multiple-select.js' %}"></script> <script type="text/javascript" src="{% static 'kfet/js/multiple-select.js' %}"></script>
<script type="text/javascript" src="{% static 'kfet/js/kfet.js' %}"></script>
<script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script> <script type="text/javascript" src="{% static 'kfet/js/history.js' %}"></script>
{% endblock %} {% endblock %}
@ -30,7 +29,6 @@
<div class="line line-big" id="nb_opes"></div> <div class="line line-big" id="nb_opes"></div>
<div class="line line-bigsub">opérations</div> <div class="line line-bigsub">opérations</div>
<div class="block"> <div class="block">
<h2>Filtres</h2>
<div class="line" style="position:relative"><b>De</b> <input type="text" id="from_date" class="form-control"></div> <div class="line" style="position:relative"><b>De</b> <input type="text" id="from_date" class="form-control"></div>
<div class="line" style="position:relative"><b>à</b> <input type="text" id="to_date" class="form-control"></div> <div class="line" style="position:relative"><b>à</b> <input type="text" id="to_date" class="form-control"></div>
<div class="line"><b>Caisses</b> {{ filter_form.checkouts }}</div> <div class="line"><b>Caisses</b> {{ filter_form.checkouts }}</div>
@ -130,6 +128,9 @@ $(document).ready(function() {
$("select").multipleSelect({ $("select").multipleSelect({
width: '100%', width: '100%',
filter: true, filter: true,
allSelected: " ",
selectAllText: "Tout-te-s",
countSelected: "# sur %"
}); });
$("input").on('dp.change change', function() { $("input").on('dp.change change', function() {

View file

@ -1,65 +1,57 @@
{% extends "kfet/base.html" %} {% extends "kfet/base_col_1.html" %}
{% load staticfiles %} {% load staticfiles %}
{% load kfet_tags %} {% load kfet_tags %}
{% block title %}Accueil{% endblock %} {% block title %}Accueil{% endblock %}
{% block content-header-title %}Accueil{% endblock %} {% block header %}{% endblock %}
{% block extra_head %} {% block extra_head %}
<link rel="stylesheet" type="text/css" href="{% static 'kfet/css/home.css' %}"> <link rel="stylesheet" type="text/css" href="{% static 'kfet/css/home.css' %}">
{% endblock %} {% endblock %}
{% block content %} {% block main-size %}col-md-10 col-md-offset-1{% endblock %}
<div class="row"> {% block main-content %}
<div class="col-sm-4 col-md-3 col-content-left">
<div class="content-left"> <div class="content-right-block">
</div> <h2>Carte</h2>
</div>
<div class="col-sm-8 col-md-9 col-content-right">
{% include 'kfet/base_messages.html' %}
<div class="content-right">
<div class="content-right-block">
<h2>Carte</h2>
<div class="column-row"> <div class="column-row">
<div class="column-sm-1 column-md-2 column-lg-3"> <div class="column-sm-1 column-md-2 column-lg-3">
<div class="unbreakable carte-inverted"> <div class="unbreakable carte-inverted">
{% if pressions %} {% if pressions %}
<h3>Pressions du moment</h3> <h3>Pressions du moment</h3>
<ul class="carte"> <ul class="carte">
{% for article in pressions %} {% for article in pressions %}
<li class="carte-line"> <li class="carte-line">
<div class="filler"></div> <div class="filler"></div>
<span class="carte-label">{{ article.name }}</span> <span class="carte-label">{{ article.name }}</span>
<span class="carte-ukf">{{ article.price | ukf:False}} UKF</span> <span class="carte-ukf">{{ article.price | ukf:False}} UKF</span>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
</div><!-- endblock unbreakable --> </div><!-- endblock unbreakable -->
{% for article in articles %} {% for article in articles %}
{% ifchanged article.category %} {% ifchanged article.category %}
{% if not forloop.first %} {% if not forloop.first %}
</ul> </ul>
</div><!-- endblock unbreakable --> </div><!-- endblock unbreakable -->
{% endif %} {% endif %}
<div class="unbreakable"> <div class="unbreakable">
<h3>{{ article.category.name }}</h3> <h3>{{ article.category.name }}</h3>
<ul class="carte"> <ul class="carte">
{% endifchanged %} {% endifchanged %}
<li class="carte-line"> <li class="carte-line">
<div class="filler"></div> <div class="filler"></div>
<span class="carte-label">{{ article.name }}</span> <span class="carte-label">{{ article.name }}</span>
<span class="carte-ukf">{{ article.price | ukf:False}} UKF</span> <span class="carte-ukf">{{ article.price | ukf:False}} UKF</span>
</li> </li>
{% if forloop.last %} {% if forloop.last %}
</ul> </ul>
</div><!-- endblock unbreakable --> </div><!-- endblock unbreakable -->
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div>
</div>
</div> </div>
</div>
</div> </div>
</div> </div>

View file

@ -1,63 +1,55 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Inventaires{% endblock %} {% block title %}Inventaires{% endblock %}
{% block content-header-title %}Inventaires{% endblock %} {% block header-title %}Inventaires{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="buttons">
<div class="col-sm-4 col-md-3 col-content-left"> <a href="{% url 'kfet.inventory.create' %}" class="btn btn-primary btn-lg">
<div class="content-left"> Nouveau
<div class="content-left-top"> </a>
</div> </div>
<div class="buttons">
<a href="{% url 'kfet.inventory.create' %}" class="btn btn-primary btn-lg"> {% endblock %}
Nouveau
</a> {% block main-content %}
</div>
</div> <div class="content-right-block">
</div> <h2>Liste des inventaires</h2>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="table-responsive">
{% include 'kfet/base_messages.html' %} <table class="table table-condensed">
<div class="content-right"> <thead>
<div class="content-right-block"> <tr>
<h2>Liste des inventaires</h2> <td></td>
<div class="table-responsive"> <td>Date</td>
<table class="table table-condensed"> <td>Par</td>
<thead class="thead-default"> <td>Nb articles</td>
<tr> <td>Commande</td>
<td></td> </tr>
<td>Date</td> </thead>
<td>Par</td> <tbody>
<td>Nb articles</td> {% for inventory in inventories %}
<td>Commande</td> <tr>
</tr> <td class="text-center">
</thead> <a href="{% url 'kfet.inventory.read' inventory.pk %}">
<tbody> <span class="glyphicon glyphicon-cog"></span>
{% for inventory in inventories %} </a>
<tr> </td>
<td class="text-center"> <td>{{ inventory.at }}</td>
<a href="{% url 'kfet.inventory.read' inventory.pk %}"> <td>{{ inventory.by.trigramme }}</td>
<span class="glyphicon glyphicon-cog"></span> <td>{{ inventory.nb_articles }}</td>
</a> <td>
</td> {% if inventory.order %}
<td>{{ inventory.at }}</td> <a href="{% url 'kfet.order.read' inventory.order.pk %}">
<td>{{ inventory.by.trigramme }}</td> #{{ inventory.order.pk }}
<td>{{ inventory.nb_articles }}</td> </a>
<td> {% endif %}
{% if inventory.order %} </td>
<a href="{% url 'kfet.order.read' inventory.order.pk %}"> </tr>
#{{ inventory.order.pk }} {% endfor %}
</a> </tbody>
{% endif %} </table>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,4 +1,4 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% load staticfiles %} {% load staticfiles %}
{% load widget_tweaks %} {% load widget_tweaks %}
@ -8,75 +8,98 @@
{% endblock %} {% endblock %}
{% block title %}Nouvel inventaire{% endblock %} {% block title %}Nouvel inventaire{% endblock %}
{% block content-header-title %}Nouvel inventaire{% endblock %} {% block header-title %}Création d'un inventaire{% endblock %}
{% block content %} {% block main-size %}col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2{% endblock %}
{% include 'kfet/base_messages.html' %} {% block main-content %}
<div class="content-center">
<div> <form id='inventoryform' action="" method="post">
<form id='inventoryform' action="" method="post"> <div class="table-responsive">
<table class="table text-center"> <table class="table table-condensed text-center">
<thead> <thead>
<tr> <tr>
<td>Article</td> <td>Article</td>
<td>Quantité par caisse</td> <td>Quantité par caisse</td>
<td>Stock Théorique</td> <td>Stock théorique</td>
<td>Caisses en réserve</td> <td>Caisses en réserve</td>
<td>Caisses en arrière</td> <td>Caisses en arrière</td>
<td>Vrac</td> <td>Vrac</td>
<td>Stock total</td> <td>Stock total</td>
<td>Compte terminé</td> <td>Compte terminé</td>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for form in formset %} {% for form in formset %}
{% ifchanged form.category %} {% ifchanged form.category %}
<tr class='section'> <tr class='section'>
<td>{{ form.category_name }}</td> <td>{{ form.category_name }}</td>
<td colspan="7"></td> <td colspan="7"></td>
</tr> </tr>
{% endifchanged %} {% endifchanged %}
<tr> <tr>
{{ form.article }} {{ form.article }}
<td class='name'>{{ form.name }}</td> <td class='name'>{{ form.name }}</td>
<td class='box_capacity'>{{ form.box_capacity }}</td> <td class='box_capacity'>{{ form.box_capacity }}</td>
<td><span class='current_stock'>{{ form.stock_old }}</span><span class='stock_diff'></span></td> <td>
<td class='box_cellar'> <span class='current_stock'>{{ form.stock_old }}</span><span class='stock_diff'></span>
<div class='col-md-2'></div> </td>
<div class='col-md-8'> <td class='box_cellar nopadding'>
<input type='number' class='form-control' step='1'> <input type='number' class='form-control' step='1'>
</div> </td>
</td> <td class='box_bar nopadding'>
<td class='box_bar'> <input type='number' class='form-control' step='1'>
<div class='col-md-offset-2 col-md-8'><input type='number' class='form-control' step='1'></div> </td>
</td> <td class='misc nopadding'>
<td class='misc'> <input type='number' class='form-control' step='1'>
<div class='col-md-offset-2 col-md-8'><input type='number' class='form-control' step='1'></div> </td>
</td> <td class='stock_new nopadding'>
<td class='stock_new'> {{ form.stock_new | attr:"readonly"| add_class:"form-control" }}
<div class='col-md-offset-2 col-md-8'>{{ form.stock_new | attr:"readonly"| add_class:"form-control" }}</div> </td>
<div class='col-md-2 inventory_update'><button type='button' class='btn-sm btn-primary'>MàJ</button></div> <td class='finished'>
</td> <div class="inventory_update">
<td class='finished'><input type='checkbox' class='form_control'></td> <button type='button' class='btn-sm btn-primary'>MàJ</button>
</tr> </div>
{% endfor %} <div class="inventory_done">
</tbody> <input type='checkbox' class='form_control'>
</table> </div>
{{ formset.management_form }} </td>
{% if not perms.kfet.add_inventory %} </tr>
<div class='auth-form form-horizontal'> {% endfor %}
{% include "kfet/form_authentication_snippet.html" %} <tr class="section">
</div> <td>Totaux</td>
{% endif %} <td colspan="2"></td>
<input type="submit" value="Enregistrer" class="btn btn-primary btn-lg btn-block"> <td class="total_box_cellar"></td>
{% csrf_token %} <td class="total_box_bar"></td>
</form> <td colspan="3"></td>
</tr>
</tbody>
</table>
</div> </div>
</div> {{ formset.management_form }}
{% if not perms.kfet.add_inventory %}
<div class='auth-form form-horizontal'>
{% include "kfet/form_authentication_snippet.html" %}
</div>
{% endif %}
<input type="submit" value="Enregistrer" class="btn btn-primary btn-lg btn-block">
{% csrf_token %}
</form>
<script type="text/javascript"> <script type="text/javascript">
function init_total(type) {
update_total(type);
$('.'+type+' input').on('input', () => update_total(type));
}
function update_total(type) {
var total = 0;
$('.'+type+' input').each(function() {
total += +$(this).val();
});
$('.total_'+type).text(total);
}
$(document).ready(function() { $(document).ready(function() {
'use strict'; 'use strict';
@ -106,6 +129,7 @@ $(document).ready(function() {
function update_stock($line, update_count) { function update_stock($line, update_count) {
$line.removeClass('inventory_modified'); $line.removeClass('inventory_modified');
$line.find('.inventory_update').hide(); $line.find('.inventory_update').hide();
$line.find('.inventory_done').show();
var old_stock = +$line.find('.current_stock').text() var old_stock = +$line.find('.current_stock').text()
var stock_diff = +$line.find('.stock_diff').text(); var stock_diff = +$line.find('.stock_diff').text();
@ -132,6 +156,12 @@ $(document).ready(function() {
update_stock($line, true); update_stock($line, true);
}); });
/**
* Total row
*/
init_total('box_cellar');
init_total('box_bar');
/** /**
* Websocket * Websocket
@ -147,6 +177,7 @@ $(document).ready(function() {
//Realigning input and displaying update button //Realigning input and displaying update button
$line.find('.inventory_update').show(); $line.find('.inventory_update').show();
$line.find('.inventory_done').hide();
//Displaying stock changes //Displaying stock changes
var stock = $line.find('.current_stock').text(); var stock = $line.find('.current_stock').text();

View file

@ -1,61 +1,55 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Inventaire #{{ inventory.pk }}{% endblock %} {% block title %}Inventaire #{{ inventory.pk }}{% endblock %}
{% block content-header-title %}Inventaire #{{ inventory.pk }}{% endblock %} {% block header-title %}Inventaire #{{ inventory.pk }}{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line"><b>Date:</b> {{ inventory.at }}</div>
<div class="content-left"> <div class="line"><b>Par:</b> {{ inventory.by.trigramme }}</div>
<div class="content-left-top"> {% if inventory.order %}
<div class="line"><b>Date:</b> {{ inventory.at }}</div> <div class="line">
<div class="line"><b>Par:</b> {{ inventory.by.trigramme }}</div> <b>Commande relative:</b>&nbsp;
{% if inventory.order %} <a href="{% url 'kfet.order.read' inventory.order.pk %}">
<div class="line"> #{{ inventory.order.pk }}
<b>Commande relative:</b>&nbsp; </a>
<a href="{% url 'kfet.order.read' inventory.order.pk %}">
#{{ inventory.order.pk }}
</a>
</div>
{% endif %}
</div>
</div>
</div>
<div class="col-sm-8 col-md-9 col-content-right">
{% include 'kfet/base_messages.html' %}
<div class="content-right">
<div class="content-right-block">
<h2>Détails</h2>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td>Article</td>
<td>Stock avant</td>
<td>Stock après</td>
<td>Erreur</td>
</tr>
</thead>
<tbody>
{% for inventoryart in inventoryarts %}
{% ifchanged inventoryart.article.category %}
<tr class="section">
<td colspan="4">{{ inventoryart.article.category.name }}</td>
</tr>
{% endifchanged %}
<tr>
<td>{{ inventoryart.article.name }}</td>
<td>{{ inventoryart.stock_old }}</td>
<td>{{ inventoryart.stock_new }}</td>
<td>{{ inventoryart.stock_error }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div> </div>
{% endif %}
</div>
{% endblock %}
{% block main-content %}
<div class="content-right-block">
<h2>Détails</h2>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td>Article</td>
<td>Stock avant</td>
<td>Stock après</td>
<td>Erreur</td>
</tr>
</thead>
<tbody>
{% for inventoryart in inventoryarts %}
{% ifchanged inventoryart.article.category %}
<tr class="section">
<td colspan="4">{{ inventoryart.article.category.name }}</td>
</tr>
{% endifchanged %}
<tr>
<td>{{ inventoryart.article.name }}</td>
<td>{{ inventoryart.stock_old }}</td>
<td>{{ inventoryart.stock_new }}</td>
<td>{{ inventoryart.stock_error }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div> </div>
</div> </div>

View file

@ -17,7 +17,7 @@
{% block title %}K-Psul{% endblock %} {% block title %}K-Psul{% endblock %}
{% block content-header %}{% endblock %} {% block header %}{% endblock %}
{% block help %} {% block help %}

View file

@ -38,8 +38,8 @@
<div class="buttons"> <div class="buttons">
{% if account.user == request.user %} {% if account.user == request.user %}
<ul class='nav nav-pills nav-justified'> <ul class='nav nav-pills nav-justified'>
<li class="active"><a data-toggle="pill" href="#tab_stats">Statistiques</a></li> <li class="active"><a class="btn btn-primary" data-toggle="pill" href="#tab_stats">Statistiques</a></li>
<li><a data-toggle="pill" href="#tab_history">Historique</a></li> <li><a class="btn btn-primary" data-toggle="pill" href="#tab_history">Historique</a></li>
</ul> </ul>
{% endif %} {% endif %}
<a class="btn btn-primary btn-lg" href="{% url 'kfet.account.update' account.trigramme %}"> <a class="btn btn-primary btn-lg" href="{% url 'kfet.account.update' account.trigramme %}">

View file

@ -1,7 +1,7 @@
{% extends 'kfet/base.html' %} {% extends 'kfet/base.html' %}
{% block content %} {% block extra_head %}
<script type="text/javascript">
Connexion utilisateur K-Fêt générique réussie close();
</script>
{% endblock %} {% endblock %}

View file

@ -1,105 +1,97 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Commandes{% endblock %} {% block title %}Commandes{% endblock %}
{% block content-header-title %}Commandes{% endblock %} {% block header-title %}Commandes{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line line-big">{{ orders|length }}</div>
<div class="content-left"> <div class="line line-bigsub">commande{{ orders|length|pluralize }}</div>
<div class="content-left-top"> </div>
<div class="line line-big">{{ orders|length }}</div>
<div class="line line-bigsub">commande{{ orders|length|pluralize }}</div> {% endblock %}
</div>
<div class="buttons"> {% block main-content %}
</div>
</div> <div class="content-right-block">
<h2>Fournisseurs</h2>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td></td>
<td></td>
<td>Nom</td>
<td>Mail</td>
<td>Tél.</td>
<td>Adresse</td>
<td>Commentaire</td>
<tbody>
{% for supplier in suppliers %}
<tr>
<td class="no-padding">
<a href="{% url 'kfet.order.new' supplier.pk %}" class="btn btn-primary">
Passer une commande
</a>
</td>
<td class="text-center">
<a href="{% url 'kfet.order.supplier.update' supplier.pk %}">
<span class="glyphicon glyphicon-cog"></span>
</a>
</td>
<td>{{ supplier.name }}</td>
<td>{{ supplier.email }}</td>
<td>{{ supplier.phone }}</td>
<td>{{ supplier.address }}</td>
<td>{{ supplier.comment }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div> </div>
<div class="col-sm-8 col-md-9 col-content-right"> </div>
{% include 'kfet/base_messages.html' %} <div class="content-right-block">
<div class="content-right"> <h2>Liste des commandes</h2>
<div class="content-right-block"> <div class="table-responsive">
<h2>Fournisseurs</h2> <table class="table table-condensed">
<div class="table-responsive"> <thead>
<table class="table table-condensed"> <tr>
<thead> <td></td>
<tr> <td></td>
<td></td> <td>Date</td>
<td></td> <td>Fournisseur</td>
<td>Nom</td> <td>Inventaire</td>
<td>Mail</td> </tr>
<td>Tél.</td> </thead>
<td>Adresse</td> <tbody>
<td>Commentaire</td> {% for order in orders %}
<tbody> <tr>
{% for supplier in suppliers %} <td class="no-padding">
<tr> {% if not order.inventory %}
<td class="no-padding"> <a href="{% url 'kfet.order.to_inventory' order.pk %}" class="btn btn-primary">
<a href="{% url 'kfet.order.new' supplier.pk %}" class="btn btn-primary"> Générer inventaire
Passer une commande </a>
</a> {% endif %}
</td> </td>
<td class="text-center"> <td>
<a href="{% url 'kfet.order.supplier.update' supplier.pk %}"> <a href="{% url 'kfet.order.read' order.pk %}">
<span class="glyphicon glyphicon-cog"></span> <span class="glyphicon glyphicon-cog"></span>
</a> </a>
</td> </td>
<td>{{ supplier.name }}</td> <td>{{ order.at }}</td>
<td>{{ supplier.email }}</td> <td>{{ order.supplier }}</td>
<td>{{ supplier.phone }}</td> <td>
<td>{{ supplier.address }}</td> {% if order.inventory %}
<td>{{ supplier.comment }}</td> <a href="{% url 'kfet.inventory.read' order.inventory.pk %}">
</tr> #{{ order.inventory.pk }}
{% endfor %} </a>
</tbody> {% endif %}
</table> </td>
</div> </tr>
</div> {% endfor %}
<div class="content-right-block"> </tbody>
<h2>Liste des commandes</h2> </table>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td></td>
<td></td>
<td>Date</td>
<td>Fournisseur</td>
<td>Inventaire</td>
</tr>
</thead>
<tbody>
{% for order in orders %}
<tr>
<td class="no-padding">
{% if not order.inventory %}
<a href="{% url 'kfet.order.to_inventory' order.pk %}" class="btn btn-primary">
Générer inventaire
</a>
{% endif %}
</td>
<td>
<a href="{% url 'kfet.order.read' order.pk %}">
<span class="glyphicon glyphicon-cog"></span>
</a>
</td>
<td>{{ order.at }}</td>
<td>{{ order.supplier }}</td>
<td>
{% if order.inventory %}
<a href="{% url 'kfet.inventory.read' order.inventory.pk %}">
#{{ order.inventory.pk }}
</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,71 +1,72 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% load widget_tweaks %} {% load widget_tweaks %}
{% block title %}Nouvelle commande{% endblock %} {% block title %}Nouvelle commande{% endblock %}
{% block content-header-title %}Nouvelle commande {{ supplier.name }}{% endblock %} {% block header-title %}Création d'une commande {{ supplier.name }}{% endblock %}
{% block content %} {% block main-size %}col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2{% endblock %}
{% block main-content %}
<div class="content-center">
<div>
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
<table class="table text-center"> <div class="table-responsive">
<table class="table table-condensed text-center">
<thead> <thead>
<tr> <tr>
<td rowspan="2">Article</td> <td rowspan="2">Article</td>
<td colspan="5">Ventes <td colspan="{{ scale|length }}">Ventes
<span class='glyphicon glyphicon-question-sign' title="Ventes des 5 dernières semaines" data-placement="bottom"></span> <span class='glyphicon glyphicon-question-sign' title="Ventes des 5 dernières semaines" data-placement="bottom"></span>
</td> </td>
<td rowspan="2">V. moy. <td rowspan="2">V. moy.<br>
<span class='glyphicon glyphicon-question-sign' title="Moyenne des ventes" data-placement="bottom"></span> <span class='glyphicon glyphicon-question-sign' title="Moyenne des ventes" data-placement="bottom"></span>
</td> </td>
<td rowspan="2">E.T. <td rowspan="2">E.T.<br>
<span class='glyphicon glyphicon-question-sign' title="Écart-type des ventes" data-placement="bottom"></span> <span class='glyphicon glyphicon-question-sign' title="Écart-type des ventes" data-placement="bottom"></span>
</td> </td>
<td rowspan="2">Prév. <td rowspan="2">Prév.<br>
<span class='glyphicon glyphicon-question-sign' title="Prévision de ventes" data-placement="bottom"></span> <span class='glyphicon glyphicon-question-sign' title="Prévision de ventes" data-placement="bottom"></span>
</td> </td>
<td rowspan="2">Stock</td> <td rowspan="2">Stock</td>
<td rowspan="2">Rec. <td rowspan="2">Box<br>
<span class='glyphicon glyphicon-question-sign' title="Capacité d'une boite" data-placement="bottom"></span>
</td>
<td rowspan="2">Rec.<br>
<span class='glyphicon glyphicon-question-sign' title="Quantité conseillée" data-placement="bottom"></span> <span class='glyphicon glyphicon-question-sign' title="Quantité conseillée" data-placement="bottom"></span>
</td> </td>
<td rowspan="2">Commande</td> <td rowspan="2">Commande</td>
</tr> </tr>
<tr> <tr>
<td>S1</td> {% for label in scale.get_labels %}
<td>S2</td> <td>{{ label }}</td>
<td>S3</td> {% endfor %}
<td>S4</td>
<td>S5</td>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for form in formset %} {% for form in formset %}
{% ifchanged form.category %} {% ifchanged form.category %}
<tr class='section'> <tr class='section text-left'>
<td> {{ form.category_name }}</td> <td colspan="{{ scale|length|add:'8' }}">{{ form.category_name }}</td>
<td colspan="11"></td>
</tr> </tr>
{% endifchanged %} {% endifchanged %}
<tr> <tr>
{{ form.article }} {{ form.article }}
<td>{{ form.name }}</td> <td>{{ form.name }}</td>
<td>{{ form.v_s1 }}</td> {% for v_chunk in form.v_all %}
<td>{{ form.v_s2 }}</td> <td>{{ v_chunk }}</td>
<td>{{ form.v_s3 }}</td> {% endfor %}
<td>{{ form.v_s4 }}</td>
<td>{{ form.v_s5 }}</td>
<td>{{ form.v_moy }}</td> <td>{{ form.v_moy }}</td>
<td>{{ form.v_et }}</td> <td>{{ form.v_et }}</td>
<td>{{ form.v_prev }}</td> <td>{{ form.v_prev }}</td>
<td>{{ form.stock }}</td> <td>{{ form.stock }}</td>
<td>{{ form.box_capacity|default:"" }}</td>
<td>{{ form.c_rec }}</td> <td>{{ form.c_rec }}</td>
<td>{{ form.quantity_ordered | add_class:"form-control" }}</td> <td class="nopadding">{{ form.quantity_ordered | add_class:"form-control" }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{{ formset.management_form }} {{ formset.management_form }}
{% if not perms.kfet.add_inventory %} {% if not perms.kfet.add_inventory %}
<div class='auth-form form-horizontal'> <div class='auth-form form-horizontal'>
@ -74,8 +75,6 @@
{% endif %} {% endif %}
<input type="submit" value="Enregistrer" class="btn btn-primary btn-lg btn-block"> <input type="submit" value="Enregistrer" class="btn btn-primary btn-lg btn-block">
</form> </form>
</div>
</div>
<script type='text/javascript'> <script type='text/javascript'>
$(document).ready(function () { $(document).ready(function () {

View file

@ -1,66 +1,67 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Commande #{{ order.pk }}{% endblock %} {% block title %}Commande #{{ order.pk }}{% endblock %}
{% block content-header-title %}Commande #{{ order.pk }}{% endblock %} {% block header-title %}Commande #{{ order.pk }}{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="content-left-top">
<div class="col-sm-4 col-md-3 col-content-left"> <div class="line"><b>Créée le:</b> {{ order.at }}</div>
<div class="content-left"> <div class="line"><b>Fournisseur:</b> {{ order.supplier.name }}</div>
<div class="content-left-top"> </div>
<div class="line"><b>Créée le:</b> {{ order.at }}</div> <div class="buttons">
<div class="line"><b>Fournisseur:</b> {{ order.supplier.name }}</div> {% if not order.inventory %}
</div> <a class="btn btn-primary btn-lg" href="{% url 'kfet.order.to_inventory' order.pk %}">
</div> Générer inventaire
</a>
{% endif %}
</div>
{% endblock %}
{% block main-content %}
<div class="content-right-block">
<h2>Détails</h2>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td>Article</td>
<td>Commandé</td>
<td>Commandé (#box)</td>
<td>Reçu</td>
</tr>
</thead>
<tbody>
{% for orderart in orderarts %}
{% ifchanged orderart.article.category %}
<tr class="section">
<td colspan="4">{{ orderart.article.category.name }}</td>
</tr>
{% endifchanged %}
<tr>
<td>{{ orderart.article.name }}</td>
<td>{{ orderart.quantity_ordered }}</td>
<td>
{% if orderart.article.box_capacity %}
{# c'est une division ! #}
{% widthratio orderart.quantity_ordered orderart.article.box_capacity 1 %}
{% endif %}
</td>
<td>
{{ orderart.quantity_received|default_if_none:'' }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div> </div>
<div class="col-sm-8 col-md-9 col-content-right"> </div>
{% include 'kfet/base_messages.html' %} <div class="content-right-block">
<div class="content-right"> <h2>Mail</h2>
<div class="content-right-block"> <div>
<h2>Détails</h2> <textarea class="form-control" style="height:500px;">{{ mail }}</textarea>
<div class="table-responsive">
<table class="table table-condensed">
<thead>
<tr>
<td>Article</td>
<td>Commandé</td>
<td>Commandé (#box)</td>
<td>Reçu</td>
</tr>
</thead>
<tbody>
{% for orderart in orderarts %}
{% ifchanged orderart.article.category %}
<tr class="section">
<td colspan="4">{{ orderart.article.category.name }}</td>
</tr>
{% endifchanged %}
<tr>
<td>{{ orderart.article.name }}</td>
<td>{{ orderart.quantity_ordered }}</td>
<td>
{% if orderart.article.box_capacity %}
{# c'est une division ! #}
{% widthratio orderart.quantity_ordered orderart.article.box_capacity 1 %}
{% endif %}
</td>
<td>
{{ orderart.quantity_received|default_if_none:'' }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="content-right-block">
<h2>Mail</h2>
<div>
<textarea class="form-control" style="height:500px;">{{ mail }}</textarea>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,18 +1,17 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% load widget_tweaks %} {% load widget_tweaks %}
{% block title %}{% endblock %} {% block title %}Nouvel inventaire{% endblock %}
{% block content-header-title %}{% endblock %} {% block header-title %}Création d'inventaire depuis la commande #{{ order.pk }}{% endblock %}
{% block content %} {% block main-size %}col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2{% endblock %}
{% include 'kfet/base_messages.html' %} {% block main-content %}
<div class="content-center">
<div>
<form action="" method="post"> <form action="" method="post">
{% csrf_token %} {% csrf_token %}
<table class='table text-center'> <div class="table-responsive">
<table class='table table-condensed text-center'>
<thead> <thead>
<tr> <tr>
<td style="width:25%">Article</td> <td style="width:25%">Article</td>
@ -25,23 +24,24 @@
</thead> </thead>
<tbody> <tbody>
{% for form in formset %} {% for form in formset %}
{% ifchanged form.category %} {% ifchanged form.category %}
<tr class='section'> <tr class='section'>
<td>{{ form.category_name }}</td> <td>{{ form.category_name }}</td>
<td colspan="5"></td> <td colspan="5"></td>
</tr> </tr>
{% endifchanged %} {% endifchanged %}
<tr> <tr>
{{ form.article }} <td>{{ form.name }}</td>
<td>{{ form.name }}</td> <td class="nopadding">{{ form.price_HT | add_class:"form-control" }}</td>
<td>{{ form.price_HT | add_class:"form-control" }}</td> <td class="nopadding">{{ form.TVA | add_class:"form-control" }}</td>
<td>{{ form.TVA | add_class:"form-control" }}</td> <td class="nopadding">{{ form.rights | add_class:"form-control" }}</td>
<td>{{ form.rights | add_class:"form-control" }}</td> <td>{{ form.quantity_ordered }}</td>
<td>{{ form.quantity_ordered }}</td> <td class="nopadding">{{ form.quantity_received | add_class:"form-control" }}</td>
<td>{{ form.quantity_received | add_class:"form-control" }}</td> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</div>
{{ formset.management_form }} {{ formset.management_form }}
{% if not perms.kfet.add_inventory %} {% if not perms.kfet.add_inventory %}
<div class='auth-form form-horizontal'> <div class='auth-form form-horizontal'>
@ -50,7 +50,5 @@
{% endif %} {% endif %}
<input type="submit" value="Enregistrer" class="btn btn-primary btn-lg btn-block"> <input type="submit" value="Enregistrer" class="btn btn-primary btn-lg btn-block">
</form> </form>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -1,45 +1,39 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_2.html" %}
{% block title %}Paramètres{% endblock %} {% block title %}Paramètres{% endblock %}
{% block content-header-title %}Paramètres{% endblock %} {% block header-title %}Paramètres{% endblock %}
{% block content %} {% block fixed-content %}
<div class="row"> <div class="buttons">
<div class="col-sm-4 col-md-3 col-content-left"> <a class="btn btn-primary btn-lg" href="{% url 'kfet.settings.update' %}">
<div class="content-left"> Modifier
<div class="buttons"> </a>
<a class="btn btn-primary btn-lg" href="{% url 'kfet.settings.update' %}"> </div>
Modifier
</a> {% endblock %}
</div>
</div> {% block main-content %}
</div>
<div class="col-sm-8 col-md-9 col-content-right"> <div class="content-right-block">
{% include 'kfet/base_messages.html' %} <h2>Valeurs</h2>
<div class="content-right"> <div class="table-responsive">
<div class="content-right-block"> <table class="table table-condensed">
<h2>Valeurs</h2> <thead>
<div class="table-responsive"> <tr>
<table class="table table-condensed"> <td>Nom</td>
<thead> <td>Valeur</td>
<tr> </tr>
<td>Nom</td> </thead>
<td>Valeur</td> <tbody>
</tr> {% for key, value in kfet_config.list %}
</thead> <tr>
<tbody> <td>{{ key }}</td>
{% for key, value in kfet_config.list %} <td>{{ value|default_if_none:"" }}</td>
<tr> </tr>
<td>{{ key }}</td> {% endfor %}
<td>{{ value }}</td> </tbody>
</tr> </table>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div> </div>
</div> </div>

View file

@ -1,25 +1,12 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% block title %}Modification des paramètres{% endblock %} {% block title %}Modification des paramètres{% endblock %}
{% block content-header-title %}Modification des paramètres{% endblock %} {% block header-title %}Modification des paramètres{% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% include "kfet/base_messages.html" %} {% block main-content %}
<div class="row form-only"> {% include "kfet/base_form.html" with authz=perms.kfet.change_settings submit_text="Mettre à jour"%}
<div class="col-sm-12 col-md-8 col-md-offset-2">
<div class="content-form">
<form submit="" method="post" class="form-horizontal">
{% csrf_token %}
{% include 'kfet/form_snippet.html' with form=form %}
{% if not perms.kfet.change_settings %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
</form>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -1,27 +1,12 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% load widget_tweaks %}
{% load staticfiles %}
{% block title %}Fournisseur - Modification{% endblock %} {% block title %}{{ supplier.name }} - Édition{% endblock %}
{% block content-header-title %}Fournisseur - Modification{% endblock %} {% block header-title %}Édition du fournisseur {{ supplier.name }}{% endblock %}
{% block content %} {% block main-class %}content-form{% endblock %}
{% include 'kfet/base_messages.html' %} {% block main-content %}
<div class="row form-only"> {% include 'kfet/base_form.html' with authz=perms.kfet.change_supplier submit_text="Mettre à jour" %}
<div class="col-sm-12 col-md-8 col-md-offset-2">
<div class="content-form">
<form submit="" method="post" class="form-horizontal">
{% csrf_token %}
{% include 'kfet/form_snippet.html' with form=form %}
{% if not perms.kfet.change_supplier %}
{% include 'kfet/form_authentication_snippet.html' %}
{% endif %}
{% include 'kfet/form_submit_snippet.html' with value="Mettre à jour" %}
</form>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View file

@ -1,4 +1,4 @@
{% extends 'kfet/base.html' %} {% extends "kfet/base_col_1.html" %}
{% load staticfiles %} {% load staticfiles %}
{% block extra_head %} {% block extra_head %}
@ -7,13 +7,14 @@
{% endblock %} {% endblock %}
{% block title %}Nouveaux transferts{% endblock %} {% block title %}Nouveaux transferts{% endblock %}
{% block content-header-title %}Nouveaux transferts{% endblock %} {% block header-title %}Création de transferts{% endblock %}
{% block content %} {% block main-size %}col-sm-12{% endblock %}
{% csrf_token %} {% block main-content %}
<form id="transfers_form"> <form id="transfers_form" style="background-color: transparent;">
{% csrf_token %}
<div class="transfer_general text-center"> <div class="transfer_general text-center">
<input type="text" name="comment" id="comment" placeholder="Commentaire"><!-- <input type="text" name="comment" id="comment" placeholder="Commentaire"><!--
--><button type="submit" id="submit" class="btn btn-primary btn-lg">Enregistrer</button> --><button type="submit" id="submit" class="btn btn-primary btn-lg">Enregistrer</button>

View file

@ -28,7 +28,6 @@ def highlight_user(user, q):
return highlight_text(text, q) return highlight_text(text, q)
@register.filter(is_safe=True) @register.filter(is_safe=True)
def highlight_clipper(clipper, q): def highlight_clipper(clipper, q):
if clipper.fullname: if clipper.fullname:
@ -38,8 +37,12 @@ def highlight_clipper(clipper, q):
return highlight_text(text, q) return highlight_text(text, q)
@register.filter() @register.filter()
def ukf(balance, is_cof): def ukf(balance, is_cof):
grant = is_cof and (1 + kfet_config.subvention_cof / 100) or 1 grant = is_cof and (1 + kfet_config.subvention_cof / 100) or 1
return floor(balance * 10 * grant) return floor(balance * 10 * grant)
@register.filter()
def widget_type(field):
return field.field.widget.__class__.__name__

View file

@ -95,6 +95,8 @@ def login_genericteam(request):
user = authenticate(username="kfet_genericteam", token=token.token) user = authenticate(username="kfet_genericteam", token=token.token)
login(request, user) login(request, user)
messages.success(request, "Connecté en utilisateur partagé")
if need_cas_logout: if need_cas_logout:
# Vue de déconnexion de CAS # Vue de déconnexion de CAS
return logout_cas return logout_cas
@ -553,7 +555,7 @@ class AccountGroupCreate(SuccessMessageMixin, CreateView):
success_message = 'Nouveau groupe : %(name)s' success_message = 'Nouveau groupe : %(name)s'
success_url = reverse_lazy('kfet.account.group') success_url = reverse_lazy('kfet.account.group')
class AccountGroupUpdate(UpdateView): class AccountGroupUpdate(SuccessMessageMixin, UpdateView):
queryset = Group.objects.filter(name__icontains='K-Fêt') queryset = Group.objects.filter(name__icontains='K-Fêt')
template_name = 'kfet/account_group_form.html' template_name = 'kfet/account_group_form.html'
form_class = GroupForm form_class = GroupForm
@ -1908,9 +1910,12 @@ def order_create(request, pk):
else: else:
formset = cls_formset(initial=initial) formset = cls_formset(initial=initial)
scale.label_fmt = "S -{rev_i}"
return render(request, 'kfet/order_create.html', { return render(request, 'kfet/order_create.html', {
'supplier': supplier, 'supplier': supplier,
'formset': formset, 'formset': formset,
'scale': scale,
}) })
@ -2057,6 +2062,7 @@ def order_to_inventory(request, pk):
return render(request, 'kfet/order_to_inventory.html', { return render(request, 'kfet/order_to_inventory.html', {
'formset': formset, 'formset': formset,
'order': order,
}) })
class SupplierUpdate(SuccessMessageMixin, UpdateView): class SupplierUpdate(SuccessMessageMixin, UpdateView):