mirror of
https://forge.chapril.org/tykayn/caisse-bliss
synced 2025-06-20 01:44:42 +02:00
up to sf 7
This commit is contained in:
parent
a39b6239b0
commit
501795a8fa
16586 changed files with 19384005 additions and 0 deletions
|
@ -0,0 +1,26 @@
|
|||
{% verbatim %}
|
||||
|
||||
<div id="choice-categories" class="choice-categories well" ng-if="categories.length">
|
||||
<h2>
|
||||
<i class="fa-eye fa"></i>
|
||||
Visibilité des
|
||||
{{ categories.length - categoriesVisibleCount() }} /
|
||||
{{ categories.length }} catégories
|
||||
</h2>
|
||||
|
||||
<div ng-repeat="c in categories">
|
||||
<div class="btn btn-block"
|
||||
ng-class="{'btn-success': !c.hidden}"
|
||||
ng-click="c.hidden = !c.hidden">
|
||||
{{ c.name }}
|
||||
|
||||
<span ng-if="c.hidden">(caché)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="well" ng-if="!categories.length">
|
||||
<i class="fa fa-info"></i>
|
||||
Aucune catégorie enregistrée
|
||||
</div>
|
||||
{% endverbatim %}
|
64
v1/old/app/Resources/views/logged/angular/current.html.twig
Executable file
64
v1/old/app/Resources/views/logged/angular/current.html.twig
Executable file
|
@ -0,0 +1,64 @@
|
|||
{% verbatim %}
|
||||
<div class="current-selling">
|
||||
<hr>
|
||||
<form>
|
||||
|
||||
<div class="new-display">
|
||||
<div class="row">
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<button class="btn btn-warning btn-remove-all marged-v" ng-click="removeAll()" ng-disable="!CurrentSellingTotal()">
|
||||
<i class="fa fa-trash"></i> enlever tout
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-repeat="group in activeSellingFiltered track by $index">
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<span class="btn btn-warning remove-item"
|
||||
ng-click="removeGroupeProducts(group.groupId)">
|
||||
<i class="fa fa-trash"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-xs-10">
|
||||
<input class="group-name" type="text" ng-model="group.name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-7 col-xs-offset-2 ">
|
||||
<span ng-if="group.count > 1">
|
||||
|
||||
<strong>
|
||||
{{group.unitPrice}}
|
||||
€ </strong>
|
||||
</span>
|
||||
<span class="badge badge-default" ng-if="group.count">
|
||||
<i class="fa fa-times"></i> {{group.count}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-xs-3 text-right">
|
||||
<strong>
|
||||
{{group.totalPrice}}
|
||||
€ </strong>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
{% endverbatim %}
|
||||
{% include 'logged/angular/totals.html.twig' %}
|
||||
{% include 'logged/angular/validate-button.html.twig' %}
|
||||
{% include 'logged/angular/pause-selling.html.twig' %}
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
40
v1/old/app/Resources/views/logged/angular/listing-products.html.twig
Executable file
40
v1/old/app/Resources/views/logged/angular/listing-products.html.twig
Executable file
|
@ -0,0 +1,40 @@
|
|||
{% verbatim %}
|
||||
<div class="horizontal-land">
|
||||
<div class="super-large" style="min-width: {{(1+categories.length) * 400}}px">
|
||||
<div class="category-listing one-category col-xs-12 col-sm-4 " ng-repeat="c in categories"
|
||||
ng-if="! c.hidden">
|
||||
|
||||
<h2 ng-class="{'hidden':c.hidden}" class="title">
|
||||
{{ c.name }}
|
||||
</h2>
|
||||
<div class="product-listing" >
|
||||
<span ng-repeat="p in c.products track by p.id"
|
||||
class="product-box"
|
||||
|
||||
>
|
||||
<button class="product-button text-left" ng-class="{ 'active' : p.enabled}" ng-click="addProduct( p )">
|
||||
<img class="product-image" src="{{p.image}}" alt="image" ng-if="p.image.length">
|
||||
<span class="product-name">
|
||||
{{ p.name }}
|
||||
</span>
|
||||
<span class="badge">
|
||||
{{ p.price }} €
|
||||
</span>
|
||||
<span class="badge badge-default" ng-if="show_config.stock_count">
|
||||
{{ p.stockCount }}
|
||||
</span>
|
||||
<span class="badge badge-success" ng-if="show_config.sold">
|
||||
<i class="fa fa-tick"></i>
|
||||
{{ countProductsSoldForActiveFestival[p.id] }}
|
||||
</span>
|
||||
</button>
|
||||
<button class="express-button" ng-if="show_config.expressSelling" ng-click="expressSell(p)" title="achat express sans compléter les infos du client">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endverbatim %}
|
30
v1/old/app/Resources/views/logged/angular/loaded-caisse.html.twig
Executable file
30
v1/old/app/Resources/views/logged/angular/loaded-caisse.html.twig
Executable file
|
@ -0,0 +1,30 @@
|
|||
<!--ok loading done-->
|
||||
<div id="loaded" ng-if="initLoadDone">
|
||||
<!--caisse IHM-->
|
||||
<div id="load_ok">
|
||||
<div id="listing-products" class="listing-products col-xs-12 col-md-8">
|
||||
{% include 'logged/angular/messages.html.twig' %}
|
||||
{% include 'logged/angular/listing-products.html.twig' %}
|
||||
|
||||
</div>
|
||||
<div id="sellings" class="sellings col-xs-12 col-md-4">
|
||||
|
||||
<div class="list-sell" ng-class="{'bg-success text-success': sellingOk }">
|
||||
|
||||
{% include 'logged/angular/validate-button.html.twig' %}
|
||||
{% if app.user.products |length %}
|
||||
{% include 'logged/angular/current.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{#{% include 'logged/angular/paused.html.twig' %}#}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="other_time">
|
||||
{% include 'logged/angular/recent.html.twig' %}
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-4 col-md-offset-8">
|
||||
{% include 'logged/angular/categ-options.html.twig' %}
|
||||
|
||||
</div>
|
||||
</div>
|
42
v1/old/app/Resources/views/logged/angular/messages.html.twig
Executable file
42
v1/old/app/Resources/views/logged/angular/messages.html.twig
Executable file
|
@ -0,0 +1,42 @@
|
|||
{% verbatim %}
|
||||
<div id="messages">
|
||||
<div id="no-categories" class="alert alert-info" ng-if="!categories.length">
|
||||
<i class="fa fa-info"></i>
|
||||
Vous n'avez pas encore enregistré de <strong>catégorie de produit</strong>, ajoutez-en donc.
|
||||
</div>
|
||||
<div id="no-products" class="alert alert-info" ng-if="!productsFromDB.length">
|
||||
<i class="fa fa-info"></i>
|
||||
Vous n'avez pas encore enregistré de <strong>produit</strong>, ajoutez-en donc.
|
||||
</div>
|
||||
{% endverbatim %}
|
||||
<div>
|
||||
|
||||
|
||||
{% if app.user.activeFestival is null %}
|
||||
<div id="no-products" class="alert alert-info" ng-if="!productsFromDB.length">
|
||||
<i class="fa fa-info"></i>
|
||||
Sélectionnez un <strong>festival</strong> pour grouper vos ventes clients par évènement.
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
{% if not (app.user.products |length) %}
|
||||
<div class="alert alert-info" ng-if="!productsFromDB.length && initLoadDone">
|
||||
|
||||
<i class="fa fa-info"></i>
|
||||
Créez facilement vos catégories de produits et vos produits juste en écrivant un nom par ligne dans
|
||||
|
||||
<a class="link" href="{{ path('import') }}">
|
||||
<button>
|
||||
l'interface d'importation simplifiée
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
|
||||
{% verbatim %}
|
||||
<!--end messages warning-->
|
||||
</div>
|
||||
{% endverbatim %}
|
8
v1/old/app/Resources/views/logged/angular/pause-selling.html.twig
Executable file
8
v1/old/app/Resources/views/logged/angular/pause-selling.html.twig
Executable file
|
@ -0,0 +1,8 @@
|
|||
{% verbatim %}
|
||||
<!--<div class="col">-->
|
||||
<!--<button class="btn btn-default" id="pause_selling" ng-click="pauseSelling()">-->
|
||||
<!--<i class="fa fa-clock"></i>-->
|
||||
<!--Pause-->
|
||||
<!--</button>-->
|
||||
<!--</div>-->
|
||||
{% endverbatim %}
|
15
v1/old/app/Resources/views/logged/angular/paused.html.twig
Executable file
15
v1/old/app/Resources/views/logged/angular/paused.html.twig
Executable file
|
@ -0,0 +1,15 @@
|
|||
{% verbatim %}
|
||||
<div class="selling-on-hold">
|
||||
<h4>
|
||||
Ventes en pause
|
||||
</h4>
|
||||
<ul>
|
||||
<li ng-repeat="list in pausedSellings track by $index"
|
||||
ng-click="setBackPausedSelling(list, $index)">
|
||||
{{ $index }}) {{ list.products.length }} produits, <strong>
|
||||
{{ sumOfList(list) }}€ </strong>
|
||||
</li>
|
||||
</ul>
|
||||
<hr>
|
||||
</div>
|
||||
{% endverbatim %}
|
8
v1/old/app/Resources/views/logged/angular/recent.html.twig
Executable file
8
v1/old/app/Resources/views/logged/angular/recent.html.twig
Executable file
|
@ -0,0 +1,8 @@
|
|||
<div class="selling-history">
|
||||
{% verbatim %}
|
||||
<div ng-repeat="s in recentSelling track by $index">
|
||||
{{s.id}} )
|
||||
{{s.amount}} €
|
||||
</div>
|
||||
{% endverbatim %}
|
||||
</div>
|
33
v1/old/app/Resources/views/logged/angular/totals.html.twig
Executable file
33
v1/old/app/Resources/views/logged/angular/totals.html.twig
Executable file
|
@ -0,0 +1,33 @@
|
|||
{% verbatim %}
|
||||
<div class="">
|
||||
<div class="row clickable" >
|
||||
<div class="col-xs-12 col-sm-6 text-right">
|
||||
<h3 ng-click="setRightAmountPaid()">Total: </h3>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 text-right">
|
||||
<h3 ng-click="setRightAmountPaid()">
|
||||
<strong>
|
||||
{{ CurrentSellingTotal() }}
|
||||
</strong>€
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
|
||||
<div >
|
||||
Le client paie:
|
||||
</div>
|
||||
<div >
|
||||
<input class="text-right" type="number" id="paid_amount" ng-model="paidAmount">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert alert-success" ng-if="paidAmount && CurrentSellingTotal() - paidAmount <=0">
|
||||
<h3>Rendu: {{ -1*(CurrentSellingTotal() - paidAmount) }} €</h3>
|
||||
</div>
|
||||
<div class="alert alert-warning" ng-if="paidAmount && CurrentSellingTotal() - paidAmount >0">
|
||||
<h3>il manque: {{ CurrentSellingTotal() - paidAmount }} €</h3>
|
||||
</div>
|
||||
</div>
|
||||
{% endverbatim %}
|
13
v1/old/app/Resources/views/logged/angular/validate-button.html.twig
Executable file
13
v1/old/app/Resources/views/logged/angular/validate-button.html.twig
Executable file
|
@ -0,0 +1,13 @@
|
|||
{% verbatim %}
|
||||
<button class="btn btn-primary btn-block validate_selling" ng-click="sendForm(event)"
|
||||
ng-disabled="!paidAmount">
|
||||
<i class="fa fa-check"></i>
|
||||
|
||||
<span ng-if="paidAmount && CurrentSellingTotal() - paidAmount <=0">
|
||||
Valider
|
||||
</span>
|
||||
<span ng-if="paidAmount && CurrentSellingTotal() - paidAmount >0">
|
||||
<i class="fa fa-warning"></i>
|
||||
</span>
|
||||
</button>
|
||||
{% endverbatim %}
|
11
v1/old/app/Resources/views/logged/caisse-main.html.twig
Executable file
11
v1/old/app/Resources/views/logged/caisse-main.html.twig
Executable file
|
@ -0,0 +1,11 @@
|
|||
<div class="caisse-main-box">
|
||||
|
||||
{% verbatim %}
|
||||
<div id="not_loaded" ng-if="!initLoadDone">
|
||||
<div class="well text-center">
|
||||
<i class="fa fa-refresh fa-spin fa-3x"></i> Chargement en cours de vos produits
|
||||
</div>
|
||||
</div>
|
||||
{% endverbatim %}
|
||||
{% include 'logged/angular/loaded-caisse.html.twig' %}
|
||||
</div>
|
25
v1/old/app/Resources/views/logged/customer.html.twig
Normal file
25
v1/old/app/Resources/views/logged/customer.html.twig
Normal file
|
@ -0,0 +1,25 @@
|
|||
{% verbatim %}
|
||||
<!-- client actuel infos-->
|
||||
<div id="client-now" class="client-now padded">
|
||||
<i class="fa fa-user"></i>
|
||||
|
||||
<label for="sellingComment">
|
||||
|
||||
Client actuel: {{ activeSelling.length }} produit<span ng-if="activeSelling.length!=1">s</span>
|
||||
</label>
|
||||
<button type="button" class="deleter pull-right" ng-click="sellingComment = ''">
|
||||
<i class="fa fa-times"></i>
|
||||
</button>
|
||||
<input type="text"
|
||||
class="form-control"
|
||||
aria-label="Note about the client"
|
||||
id="sellingComment"
|
||||
aria-describedby="selling-comment"
|
||||
ng-model="sellingComment"
|
||||
ng-model-options="{ updateOn: 'keyup' , allowInvalid: true}"
|
||||
name="sellingComment"
|
||||
autofocus="autofocus"
|
||||
placeholder="nom ou commentaire">
|
||||
|
||||
</div>
|
||||
{% endverbatim %}
|
38
v1/old/app/Resources/views/logged/dashboard.html.twig
Executable file
38
v1/old/app/Resources/views/logged/dashboard.html.twig
Executable file
|
@ -0,0 +1,38 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
{% block body %}
|
||||
{% verbatim %}
|
||||
<div id="caisse-now" class=""
|
||||
ng-app="caisse"
|
||||
ng-controller="CaisseCtrl as MainCtrl">
|
||||
<div class="caisse-main row-fluid" >
|
||||
|
||||
<div class="col-xs-12 ">
|
||||
<!-- ligne d'informations-->
|
||||
|
||||
{% endverbatim %}
|
||||
{% include 'logged/listing-options.html.twig' %}
|
||||
{% include 'logged/festival-infos.html.twig' %}
|
||||
{# </div>#}
|
||||
<div class="col-xs-12">
|
||||
|
||||
{% include 'logged/customer.html.twig' %}
|
||||
{% verbatim %}
|
||||
|
||||
</div>
|
||||
|
||||
<!--états de sauvegarde-->
|
||||
<div class="selling-ok alert-success alert block" ng-if="sellingOk" ng-click="sellingOk = false">
|
||||
<i class="fa fa-save"></i>
|
||||
Sauvegardé! WOHOOOOOO +{{recentSellings[recentSellings.length -1].amount}} €
|
||||
</div>
|
||||
<div class="selling-ok alert-error alert block" ng-if="sellingError" ng-click="sellingError = false">
|
||||
<i class="fa fa-warning"></i>
|
||||
Problème de sauvegarde (pas de réseau ?)
|
||||
</div>
|
||||
{% endverbatim %}
|
||||
{% include 'logged/caisse-main.html.twig' %}
|
||||
{% verbatim %}
|
||||
{% endverbatim %}
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
25
v1/old/app/Resources/views/logged/festival-infos.html.twig
Normal file
25
v1/old/app/Resources/views/logged/festival-infos.html.twig
Normal file
|
@ -0,0 +1,25 @@
|
|||
<div id="festival-current_info">
|
||||
<a class="btn " href=" {{ path('festival_index') }}">
|
||||
<i class="fa fa-th-large"></i>
|
||||
Festival:
|
||||
|
||||
{% verbatim %}
|
||||
{{activeFestival.name}}
|
||||
</a>
|
||||
<!-- <input type="text" ng-model="activeFestival.name" placeholder="nom du festival">-->
|
||||
<!-- <input class="pull-right" type="text" ng-model="activeFestival.commentaire" placeholder="commentaire">-->
|
||||
<span class="badge" title="fond de caisse + chiffre d'affaire. veillez à vider votre fond de caisse ailleurs lorsqu'il devient trop important, par exemple au dela de 200€" ng-class="{'badge-warning': activeFestival.fondDeCaisseAvant + activeFestival.chiffreAffaire > 200}">
|
||||
<i class="fa fa-archive"></i>
|
||||
{{ activeFestival.fondDeCaisseAvant + activeFestival.chiffreAffaire}} €
|
||||
</span>
|
||||
<span class="badge badge-success">
|
||||
CA {{ activeFestival.chiffreAffaire }} €
|
||||
<span ng-if="sellingOk">
|
||||
<i class="fa fa-check-circle-o"></i>
|
||||
</span>
|
||||
</span>
|
||||
<span class="badge badge-success">
|
||||
{{ activeFestival.clientsCount }} <i class="fa fa-user"></i>
|
||||
</span>
|
||||
{% endverbatim %}
|
||||
</div>
|
75
v1/old/app/Resources/views/logged/history-script.html.twig
Executable file
75
v1/old/app/Resources/views/logged/history-script.html.twig
Executable file
|
@ -0,0 +1,75 @@
|
|||
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
|
||||
<script>
|
||||
|
||||
var dataPoints = [
|
||||
{% for pair in statisticsSoldProducts %}
|
||||
{
|
||||
label: "{{ pair.name }}",
|
||||
x: {{ pair.count }},
|
||||
y: {{ pair.count }}
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
var dataPointsChiffreAffaire = [
|
||||
{% for pair in statisticsSoldProducts %}
|
||||
{
|
||||
label: "{{ pair.name }}",
|
||||
x: {{ pair.value }},
|
||||
y: {{ pair.value }}
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
var dataPointsFestivals = [
|
||||
{% for pair in statisticsFestivals %}
|
||||
{
|
||||
label: "{{ pair.name }} {{ pair.date|date('Y-m-d') }} , {{ pair.chiffreAffaire }} €",
|
||||
y: {{ pair.chiffreAffaire }} ,
|
||||
countClients : "{{ pair.clients_count }} clients"
|
||||
},
|
||||
{% endfor %}
|
||||
];
|
||||
console.log(dataPointsFestivals);
|
||||
var chartFestival = new CanvasJS.Chart("chartContainerstatisticsFestivals", {
|
||||
title:{
|
||||
text: "Chiffre d'affaire par festival"
|
||||
},
|
||||
animationEnabled: true,
|
||||
data: [
|
||||
{
|
||||
// Change type to "doughnut", "line", "splineArea", etc.
|
||||
type: "column",
|
||||
dataPoints: dataPointsFestivals
|
||||
}
|
||||
]
|
||||
});
|
||||
console.log('dataPointsFestivals', dataPointsFestivals);
|
||||
chartFestival.render();
|
||||
var chart = new CanvasJS.Chart("chartContainer", {
|
||||
title:{
|
||||
text: "Volume de produits vendus"
|
||||
},
|
||||
animationEnabled: true,
|
||||
data: [
|
||||
{
|
||||
// Change type to "doughnut", "line", "splineArea", etc.
|
||||
type: "pie",
|
||||
dataPoints: dataPoints
|
||||
}
|
||||
]
|
||||
});
|
||||
chart.render();
|
||||
var chartContainerChiffreAffaire = new CanvasJS.Chart("chartContainerChiffreAffaire", {
|
||||
title:{
|
||||
text: "Valeur en euros des produits vendus"
|
||||
},
|
||||
animationEnabled: true,
|
||||
data: [
|
||||
{
|
||||
// Change type to "doughnut", "line", "splineArea", etc.
|
||||
type: "pie",
|
||||
dataPoints: dataPointsChiffreAffaire
|
||||
}
|
||||
]
|
||||
});
|
||||
chartContainerChiffreAffaire.render();
|
||||
</script>
|
156
v1/old/app/Resources/views/logged/history.html.twig
Executable file
156
v1/old/app/Resources/views/logged/history.html.twig
Executable file
|
@ -0,0 +1,156 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
{% block body %}
|
||||
<div id="wrapper">
|
||||
<div id="container" class="container">
|
||||
|
||||
<div class="row">
|
||||
<h1>Historique</h1>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="sells">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<h2>
|
||||
<i class="fa fa-users"></i>
|
||||
<span class="chiffre key-figure">
|
||||
{{ allSellings }}
|
||||
</span>
|
||||
Clients
|
||||
</h2>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<h2>
|
||||
<i class="fa fa-euro"></i>
|
||||
<span class="chiffre key-figure">
|
||||
{{ chiffreAffaires }}
|
||||
</span>
|
||||
Chiffre d'affaires
|
||||
|
||||
</h2>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<h2>
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
<span class="chiffre key-figure">
|
||||
{% if allSellings %}
|
||||
{{ (chiffreAffaires / (allSellings))|round }}
|
||||
{% else %}
|
||||
?
|
||||
{% endif %}
|
||||
|
||||
</span>
|
||||
€ panier moyen
|
||||
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 ">
|
||||
<h2>Exporter toutes vos données</h2>
|
||||
<a class="btn btn-success" href="{{ path('export_all') }}">
|
||||
<i class="fa fa-file-excel-o fa-3x"></i>
|
||||
en format csv
|
||||
</a
|
||||
><a class="btn btn-success" href="{{ path('export_all_json') }}">
|
||||
<i class="fa fa-file-code-o fa-3x"></i>
|
||||
en JSON
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<h2 class="text-center">Statistiques de ventes </h2>
|
||||
<div id="chartContainer" style="display: inline-block; height: 300px; width: 49%;"></div>
|
||||
<div id="chartContainerChiffreAffaire" style="display: inline-block; height: 300px; width: 49%;"></div>
|
||||
<h2> {{ statisticsFestivals |length }} Festival
|
||||
{% if statisticsFestivals |length >1 %}
|
||||
s
|
||||
{% endif %}</h2>
|
||||
<div id="chartContainerstatisticsFestivals"
|
||||
style="display: inline-block; height: 300px; width: 100%;"></div>
|
||||
|
||||
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div id="last-sellings">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
|
||||
|
||||
<div class="table">
|
||||
<div class="row-fluid">
|
||||
<div class="col-xs-12">
|
||||
<h2>
|
||||
{{ recentSells |length }} Dernières ventes
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>n°</td>
|
||||
<td>date</td>
|
||||
<td>commentaire</td>
|
||||
<td>produits</td>
|
||||
<td>montant</td>
|
||||
<td>Actions</td>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for vente in recentSells %}
|
||||
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td> {{ vente.id }}</td>
|
||||
<td> {{ vente.date |date('Y-m-d H:i:s') }}</td>
|
||||
<td>{{ vente.comment }}</td>
|
||||
<td class="text-right">
|
||||
{% if vente.productsSold |length >1 %}
|
||||
<strong>
|
||||
{{ vente.productsSold |length }}
|
||||
</strong> produits
|
||||
|
||||
{% else %}
|
||||
{% if vente.productsSold and vente.productsSold.0 is defined %}
|
||||
|
||||
{{ vente.productsSold.0.name }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{ vente.amount }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ path('sellrecord_delete',{id: vente.id }) }}"
|
||||
class="btn btn-warning pull-right">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr> {% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{% include ':logged:history-script.html.twig' %}
|
||||
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
39
v1/old/app/Resources/views/logged/import.html.twig
Executable file
39
v1/old/app/Resources/views/logged/import.html.twig
Executable file
|
@ -0,0 +1,39 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
{% block body %}
|
||||
<h1>Importation, création en masse</h1>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 ">
|
||||
{% include 'logged/mass-register.html.twig' %}
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<h2>
|
||||
|
||||
Importer votre historique de ventes
|
||||
</h2>
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i>
|
||||
Fonctionnalité en cours de création
|
||||
</div>
|
||||
{# 1)#}
|
||||
{# <a class="btn btn-success" href="{{ asset('modele_import_caisse.csv') }}">#}
|
||||
{# <i class="fa fa-file-o fa-3x"></i>#}
|
||||
{# Télécharger le fichier de modèle#}
|
||||
{# </a>#}
|
||||
{# <hr>#}
|
||||
{# 2) Remplir votre modèle avec vos ventes#}
|
||||
{# <hr>#}
|
||||
{# 3) à faire#}
|
||||
{#<form action="{{ path('import') }}" method="post">#}
|
||||
{#<fieldset>#}
|
||||
|
||||
{#Importer votre modèle rempli#}
|
||||
{#<input disabled type="file" name="fichier_import">#}
|
||||
{#<input disabled class="btn btn-primary btn-block" type="submit" value="importer votre historique">#}
|
||||
{#</fieldset>#}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
48
v1/old/app/Resources/views/logged/listing-options.html.twig
Normal file
48
v1/old/app/Resources/views/logged/listing-options.html.twig
Normal file
|
@ -0,0 +1,48 @@
|
|||
<div id="festival-listing-options">
|
||||
{% verbatim %}
|
||||
<!-- options-->
|
||||
<div class="row marged-v" ng-if="simpleDisplay">
|
||||
<button class="btn btn-success" ng-click="toggleSimpleDisplay()">
|
||||
<i class="fa fa-bars"></i> Affichage simple <i class="fa fa-check-circle"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="row marged-v" ng-if="! simpleDisplay">
|
||||
<div class="col-xs-12 col-md-6" id="main_options">
|
||||
<button class="btn btn-disabled" ng-click="toggleSimpleDisplay()">
|
||||
<i class="fa fa-bars"></i> Affichage simple
|
||||
</button>
|
||||
<button
|
||||
title="la vente express vous permet d'enregistrer une vente pour un seul article sans remplir le formulaire de détail"
|
||||
class="btn"
|
||||
ng-class="{'btn-success': show_config.expressSelling, 'btn-disabled':! show_config.expressSelling}"
|
||||
ng-click="show_config.expressSelling = !show_config.expressSelling">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
vente express
|
||||
<span ng-if=show_config.show_config.expressSelling>
|
||||
<i class="fa fa-check-circle"></i></span>
|
||||
</button>
|
||||
<button
|
||||
title="montrer le nombre d'objets restants dans les stocks"
|
||||
class="btn"
|
||||
ng-class="{'btn-success': show_config.stock_count, 'btn-disabled':!show_config.stock_count}"
|
||||
ng-click="show_config.stock_count = !show_config.stock_count">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
stocks
|
||||
<span ng-if=show_config.stock_count>
|
||||
<i class="fa fa-check-circle"></i></span>
|
||||
</button>
|
||||
<button
|
||||
title="montrer le nombre d'objets restants dans les stocks"
|
||||
class="btn"
|
||||
ng-class="{'btn-success': show_config.sold, 'btn-disabled':!show_config.sold}"
|
||||
ng-click="show_config.sold = !show_config.sold">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
vendus
|
||||
<span ng-if=show_config.sold>
|
||||
<i class="fa fa-check-circle"></i>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{% endverbatim %}
|
||||
</div>
|
49
v1/old/app/Resources/views/logged/mass-register.html.twig
Executable file
49
v1/old/app/Resources/views/logged/mass-register.html.twig
Executable file
|
@ -0,0 +1,49 @@
|
|||
<div id="mass-register">
|
||||
<form action="{{ path('mass_create') }}" method="post">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<blockquote>
|
||||
<strong>Vous pouvez copier et adapter cet exemple: </strong>
|
||||
<pre id="example_mass_import">
|
||||
catégorie: livre
|
||||
les moutaines;5€
|
||||
la laine des moutons;6€
|
||||
star wars spécial noël;7€
|
||||
catégorie: poster
|
||||
super bannière A2;10€
|
||||
Sébastien Chabal sexy;10€
|
||||
catégorie: dessin à la demande
|
||||
dessin A4 crayon;20€
|
||||
dessin A4 aquarelle;150€
|
||||
</pre>
|
||||
<a href="#filling_zone" id="use_example">
|
||||
<i class="fa fa-arrow-down"></i>
|
||||
Utiliser l'exemple
|
||||
</a>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<div class="well" id="filling_zone">
|
||||
|
||||
<label for="produits">
|
||||
<h3>
|
||||
Créez vos produits et leur catégorie en masse, un par ligne.
|
||||
</h3>
|
||||
Séparez le nom du produit de son prix avec un point virgule. vous n'êtes pas obligé de préciser
|
||||
le symbole € pour le prix. Utilisez une virgule ou un point pour faire des prix à virgule. Si le
|
||||
nom de catégorie existe déjà, le produit sera associé avec celle-ci.
|
||||
</label>
|
||||
<textarea style="width: 100%;" name="produits" id="produits" cols="30" rows="10"
|
||||
placeholder="catégorie et produits">
|
||||
catégorie: livre
|
||||
mon livre ; 5€
|
||||
</textarea>
|
||||
<input class="btn btn-primary btn-block" type="submit" value="créer en masse">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
8
v1/old/app/Resources/views/logged/ng2.html.twig
Executable file
8
v1/old/app/Resources/views/logged/ng2.html.twig
Executable file
|
@ -0,0 +1,8 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
{% block body %}
|
||||
<div id="wrapper">
|
||||
<h1>Appli angular embarquée</h1>
|
||||
<script href="{{ asset('/assets/js/build-frontend-submodule/main.js') }}"></script>
|
||||
<div ng-app="tktest"></div>
|
||||
</div>
|
||||
{% endblock %}
|
281
v1/old/app/Resources/views/logged/previsionnel.html.twig
Executable file
281
v1/old/app/Resources/views/logged/previsionnel.html.twig
Executable file
|
@ -0,0 +1,281 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
{% block body %}
|
||||
{% verbatim %}
|
||||
|
||||
<div id="wrapper">
|
||||
<div class="previsionnel"
|
||||
ng-app="caisse"
|
||||
ng-controller="previsionnelCtrl as pCtrl"
|
||||
>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-lg-6">
|
||||
<h1>Prévisionnel</h1>
|
||||
</div>
|
||||
<div class="col-xs-12 col-lg-6">
|
||||
|
||||
<div ng-if="config.initialLoadingDone && config.loading">
|
||||
<i class="fa fa-spin fa-refresh"></i>
|
||||
Chargement
|
||||
</div>
|
||||
<div ng-if="config.initialLoadingDone && !config.loading">
|
||||
Modifications sauvegardées
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="config well">
|
||||
<h2>
|
||||
Configuration
|
||||
</h2>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<p >
|
||||
<label for="dispo">
|
||||
|
||||
Euros disponibles au départ:
|
||||
</label>
|
||||
<input
|
||||
id="dispo"
|
||||
class="big-number"
|
||||
type="number"
|
||||
ng-model="config.disponibility"
|
||||
ng-change="save()"
|
||||
ng-model-options="{ debounce: config.debounceTime }">
|
||||
<br>
|
||||
<label for="gains">
|
||||
Gains moyen par mois:
|
||||
</label>
|
||||
|
||||
<input type="number"
|
||||
class="big-number"
|
||||
id="gains"
|
||||
ng-model="config.averageMonthlyEarnings"
|
||||
ng-change="save()"
|
||||
ng-model-options="{ debounce: config.debounceTime }">
|
||||
</p>
|
||||
<p>
|
||||
Gérer délais de paiement
|
||||
<input type="checkbox" ng-model="config.showDelays">
|
||||
Gérer répétitions
|
||||
<input type="checkbox" ng-model="config.showRepeats">
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<p>
|
||||
<strong>
|
||||
Dépenses mensuelles:
|
||||
<span class="big-number">
|
||||
|
||||
{{ sumMonthlyExpenses() }} €
|
||||
</span>
|
||||
</strong>
|
||||
</p>
|
||||
<p>
|
||||
<strong>
|
||||
Bénef mensuel: <span class="big-number">{{ config.averageMonthlyEarnings - sumMonthlyExpenses() }} €</span>
|
||||
</strong>
|
||||
</p>
|
||||
<p>
|
||||
Crédit mensuel réalisable (33% des gains moyens par mois): {{ config.averageMonthlyEarnings * 0.33 |number }} €
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-lg-7 postes">
|
||||
<h2>
|
||||
{{expenses.length}} Postes de dépenses mensuelles
|
||||
<button ng-click="addExpense()">+</button>
|
||||
</h2>
|
||||
<p class="desc">
|
||||
Indiquez les catégories de dépenses mensuelles que vous faites pour faire évoluer la
|
||||
simulation de budget restant dans plusieurs mois.
|
||||
</p>
|
||||
<table class="exepanse-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="padded" >
|
||||
Nom
|
||||
</td>
|
||||
<td class="padded" ng-if="config.showDelays">
|
||||
débute dans X mois
|
||||
</td>
|
||||
<td class="padded" ng-if="config.showRepeats">
|
||||
mois répétitions
|
||||
</td>
|
||||
<td class="padded" ng-if="config.showRepeats">
|
||||
prix répétitions
|
||||
</td>
|
||||
<td class="padded" >
|
||||
prix mensuel
|
||||
</td>
|
||||
<td class="padded" >
|
||||
prix annuel
|
||||
</td>
|
||||
<td class="padded" >
|
||||
activé
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
<tr ng-repeat="e in expenses ">
|
||||
<td>
|
||||
<input type="text" ng-model="e.name" ng-change="save()" ng-model-options="{ debounce: config.debounceTime }">
|
||||
</td>
|
||||
<td ng-if="config.showDelays">
|
||||
|
||||
<input type="number" ng-model="e.delay" ng-change="save()" ng-model-options="{ debounce: config.debounceTime }">
|
||||
</td>
|
||||
<td ng-if="config.showRepeats">
|
||||
<input type="number" ng-model="e.repeat" ng-change="save()" ng-model-options="{ debounce: config.debounceTime }">
|
||||
</td>
|
||||
<td ng-if="config.showRepeats" class="text-right padded">
|
||||
{{ e.repeat * e.amount }}
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" ng-model="e.amount" ng-change="save()" ng-model-options="{ debounce: config.debounceTime }">
|
||||
</td>
|
||||
<td class="text-right padded">
|
||||
<strong>
|
||||
|
||||
{{ e.amount * 12 }}
|
||||
</strong>
|
||||
€
|
||||
</td>
|
||||
<td class="padded">
|
||||
<input type="checkbox" ng-model="e.enabled" ng-change="save()" ng-model-options="{ debounce: config.debounceTime }">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="well examples-depenses">
|
||||
<strong>
|
||||
Exemples de postes de dépenses à ajouter:
|
||||
</strong>
|
||||
{% endverbatim %}
|
||||
{{ "
|
||||
appartement
|
||||
mutuelle
|
||||
transport en commun
|
||||
assurance voiture
|
||||
assurance moto
|
||||
trucs de loisirs divers
|
||||
gaz
|
||||
elec
|
||||
internet
|
||||
épargne
|
||||
impots
|
||||
cottisation URSSAF
|
||||
resto au boulot
|
||||
courses
|
||||
serveur wouaibe
|
||||
abonnement protonmail VPN
|
||||
abonnement service audio, vidéo
|
||||
carburant véhicule
|
||||
donations
|
||||
médecin
|
||||
chat
|
||||
chien
|
||||
licorne"|nl2br }}
|
||||
|
||||
{% verbatim %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-lg-5">
|
||||
|
||||
<h2>Simulation sur {{config.lines}} mois</h2>
|
||||
<div class="" id="simulationPrevision" style="display: inline-block; height: 300px; width: 90%;">(graphique)</div>
|
||||
|
||||
<!--block to insert the graph-->
|
||||
<div class="well big-number" ng-if="config.monthsBeforeNoMoney && config.monthsBeforeNoMoney <= config.lines">
|
||||
<i class="fa fa-warning"></i>
|
||||
Ce sera la dèche dans {{config.monthsBeforeNoMoney}} mois
|
||||
</div>
|
||||
<div ng-if=" ! config.monthsBeforeNoMoney" class="bg-success padded">
|
||||
cool ! votre plan est supportable dans le temps
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr >
|
||||
<td class="padded" >
|
||||
Month in the future
|
||||
</td>
|
||||
<td class="padded" >
|
||||
date
|
||||
</td>
|
||||
<td class="padded" >
|
||||
Dépenses
|
||||
</td>
|
||||
<td class="padded" >
|
||||
Disponibilité
|
||||
</td>
|
||||
</trclass>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="line in previsionTable" >
|
||||
<td>
|
||||
<div ng-if="line.available > config.warningThershold"
|
||||
class=" bgsuccess padded ">
|
||||
{{ $index }}
|
||||
</div>
|
||||
<div ng-if="line.available > 0 && line.available < config.warningThershold"
|
||||
class="bgwarning padded ">
|
||||
{{ $index }} bientôt la dèche
|
||||
</div>
|
||||
<div ng-if="line.available < 0"
|
||||
class="bgdanger padded ">
|
||||
{{ $index }} DAMNED pu de pognon!
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
-
|
||||
</td>
|
||||
<td class="text-right ">
|
||||
|
||||
{{ line.expense }}
|
||||
</td>
|
||||
<td class="text-right"
|
||||
ngClass="{'bgdanger' : line.available < 0 }">
|
||||
|
||||
<strong>
|
||||
|
||||
{{ line.available}}
|
||||
</strong>
|
||||
€
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>-->
|
||||
<script>
|
||||
|
||||
var dataPoints = {{graphPointsPrevision}} ;
|
||||
var chartContainerChiffreAffaire = new CanvasJS.Chart("simulationPrevision", {
|
||||
title:{
|
||||
text: "Euros disponibles dans le temps"
|
||||
},
|
||||
animationEnabled: true,
|
||||
data: [
|
||||
{
|
||||
// Change type to "doughnut", "line", "splineArea", etc.
|
||||
type: "splineArea",
|
||||
dataPoints: dataPoints
|
||||
}
|
||||
]
|
||||
});
|
||||
chartContainerChiffreAffaire.render();
|
||||
</script>
|
||||
|
||||
{% endverbatim %}
|
||||
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue