|
-
- /**
- Copyright La boîte à pain (2018)
-
- contact@laboiteapain.net
-
- Ce logiciel est un programme informatique servant à aider les producteurs
- à distribuer leur production en circuits courts.
-
- Ce logiciel est régi par la licence CeCILL soumise au droit français et
- respectant les principes de diffusion des logiciels libres. Vous pouvez
- utiliser, modifier et/ou redistribuer ce programme sous les conditions
- de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
- sur le site "http://www.cecill.info".
-
- En contrepartie de l'accessibilité au code source et des droits de copie,
- de modification et de redistribution accordés par cette licence, il n'est
- offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
- seule une responsabilité restreinte pèse sur l'auteur du programme, le
- titulaire des droits patrimoniaux et les concédants successifs.
-
- A cet égard l'attention de l'utilisateur est attirée sur les risques
- associés au chargement, à l'utilisation, à la modification et/ou au
- développement et à la reproduction du logiciel par l'utilisateur étant
- donné sa spécificité de logiciel libre, qui peut le rendre complexe à
- manipuler et qui le réserve donc à des développeurs et des professionnels
- avertis possédant des connaissances informatiques approfondies. Les
- utilisateurs sont donc invités à charger et tester l'adéquation du
- logiciel à leurs besoins dans des conditions permettant d'assurer la
- sécurité de leurs systèmes et ou de leurs données et, plus généralement,
- à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
-
- Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
- pris connaissance de la licence CeCILL, et que vous en avez accepté les
- termes.
- */
-
- /* French initialisation for the jQuery UI date picker plugin. */
- /* Written by Keith Wood (kbwood{at}iinet.com.au),
- Stéphane Nahmani (sholby@sholby.net),
- Stéphane Raimbault <stephane.raimbault@gmail.com> */
- (function( factory ) {
- if ( typeof define === "function" && define.amd ) {
-
- // AMD. Register as an anonymous module.
- define([ "../jquery.ui.datepicker" ], factory );
- } else {
-
- // Browser globals
- factory( jQuery.datepicker );
- }
- }(function( datepicker ) {
- datepicker.regional['fr'] = {
- closeText: 'Fermer',
- prevText: 'Précédent',
- nextText: 'Suivant',
- currentText: 'Aujourd\'hui',
- monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
- 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
- monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
- 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
- dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
- dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
- dayNamesMin: ['D','L','M','M','J','V','S'],
- weekHeader: 'Sem.',
- dateFormat: 'dd/mm/yy',
- firstDay: 1,
- isRTL: false,
- showMonthAfterYear: false,
- yearSuffix: ''};
- datepicker.setDefaults(datepicker.regional['fr']);
-
- return datepicker.regional['fr'];
-
- }));
-
-
- $(document).ready(function() {
- $('[data-toggle="tooltip"]').tooltip() ;
- chat_systeme_commande() ;
- chat_profil_user() ;
- $('.dropdown-toggle').dropdown() ;
- chat_datepicker() ;
- }) ;
-
- function chat_datepicker() {
- $('input.datepicker').datepicker({dateFormat:'dd/mm/yy'}) ;
- }
-
- function chat_profil_user() {
- if($('#profil-user').size()) {
- if($('#user-no_mail').is(':checked')) {
- $('#mails-jours-prod').hide() ;
- }
- $('#user-no_mail').change(function() {
- if($('#user-no_mail').is(':checked')) {
- $('#mails-jours-prod').hide() ;
- }
- else {
- $('#mails-jours-prod').fadeIn() ;
- }
- }) ;
- }
- }
-
- function chat_event_click_point_vente(id, force) {
-
- if($('.point-sale-'+id).data('code') == 1) {
-
- $('#modal-code #id-point-sale').val(id) ;
- $('#modal-code').modal('show') ;
-
- }
- else {
- $('#order-id_point_sale').val(id) ;
-
- $('#points-sale .point-sale').removeClass('selected') ;
- $('.point-sale-'+id).addClass('selected') ;
- $('.point-sale-'+id).hide().fadeIn('fast') ;
-
- var pain = parseInt($('.point-sale-'+id).data('pain')) ;
- var vrac = parseInt($('.point-sale-'+id).data('vrac')) ;
-
- if(pain) {
- $('#pain .table').show() ;
- $('#pain .indisponible').hide() ;
- }
- else {
- $('#pain .table').hide() ;
- $('#pain .indisponible').show() ;
- }
-
- if(vrac) {
- $('#vrac .table').show() ;
- $('#vrac .indisponible').hide() ;
- }
- else {
- $('#vrac .table').hide() ;
- $('#vrac .indisponible').show() ;
- }
-
- $('#products, #step-infos-point-sale, .confirm-order, .btn-comment, #bar-fixed').fadeIn() ;
-
- // credit pain
- chat_systeme_commande_credit_pain_event(chat_systeme_commande_maj_table_prix()) ;
-
- // scroll
- if(!force) {
- boulange_scroll('step-infos-point-sale') ;
- }
-
- // infos point de vente
- $('.infos-point-sale').hide() ;
- $('.infos-point-sale-'+id).fadeIn() ;
- }
- }
-
- function chat_init_horaire_point_vente(date) {
- $('.infos-point-sale .jour').hide() ;
- var selector_jour = '.infos-point-sale .jour-'+date.getDay() ;
- $(selector_jour).show() ;
-
- $('.select-previous-day').unbind('click').click(function() {
- $('.ui-datepicker-current-day').prev().find('a').click() ;
- }) ;
- }
-
- function chat_base_url(with_slug) {
- var base_url = $('meta[name=base-url]').attr('content')+'/' ;
- if(with_slug) {
- base_url += $('meta[name=slug-producer]').attr('content')+'/' ;
- }
- return base_url ;
- }
-
- function chat_systeme_commande() {
-
- if($('.order-form').size()) {
-
- // scroll initial
- if($('.producer.selected').size())
- {
- boulange_scroll('step-date') ;
- }
-
- // affichage des différentes parties du formulaire
- if(!$('#order-id_distribution').val()) {
- $('#block-points-sale, #step-infos-point-sale, #points-sale, #products, .confirm-order, .btn-comment, #bar-fixed').hide() ;
- }
- else if(!$('#commande-id_point_vente').val()) {
- $('#products, .confirm-order, .btn-comment, #bar-fixed, #has-order-in-progress').hide() ;
- }
-
- // points de vente
- if($('#order-id_point_sale').val()) {
- chat_event_click_point_vente($('#order-id_point_sale').val(), true) ;
- }
-
- $('#modal-code form').submit(function() {
- var id_pv = $('#modal-code #id-point-sale').val() ;
- var code = $('#modal-code #code').val() ;
- $.get(chat_base_url(true)+'order/validate-code-point-sale',{
- idPointSale: id_pv,
- code: code
- }, function(ok) {
- if(ok) {
- $('.point-sale-'+id_pv).data('code',0) ;
- $('.point-sale-'+id_pv+' .glyphicon').remove() ;
- $('input[name="code_point_sale_'+id_pv+'"]').val(code) ;
- $('#modal-code').modal('hide') ;
-
- chat_event_click_point_vente($('#modal-code #id-point-sale').val()) ;
- }
- else {
- $('#modal-code .field-code').addClass('has-error') ;
- $('#modal-code .help-block-error').hide().fadeIn() ;
- }
- }) ;
- return false ;
- }) ;
-
- $('#points-sale .point-sale').click(function() {
- var id = parseInt($(this).find('.id').html()) ;
- chat_event_click_point_vente(id) ;
- }) ;
-
- // datepicker
- var dates_production = [] ;
- $('#dates div').each(function() {
- dates_production.push($(this).find('.date').html()) ;
- }) ;
-
- //var var_datepicker = $.datepicker ;
-
- $('#datepicker-distribution').datepicker({
- beforeShowDay: function(date){
- var string = $.datepicker.formatDate('dd/mm/yy', date);
-
- for(var i=0; i<dates_production.length; i++) {
- //alert(dates_production[i]+' '+string) ;
- if(dates_production[i] == string)
- return [1] ;
- }
-
- return [0] ;
-
- // désactivé car internet explorer plante
- //return [ dates_production.indexOf(string) != -1 ] ;
- },
- onSelect: function(selectedDate) {
-
- $('.infos-points-sale').hide() ;
-
- // on remet tout les prix à zéro
- chat_systeme_commande_reset_table_prix() ;
-
- $('#has-order-in-progress').hide() ;
-
- var tab_date = selectedDate.split('/') ;
- var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]) ;
-
- // set id production
- var id_production = 0 ;
- $('#dates div .date').each(function() {
- if($(this).html() == selectedDate) {
- id_production = $(this).parent().find('.id_distribution').html() ;
- }
- });
- $('#order-id_distribution').val(id_production) ;
-
- // verif si le gars a une commande en cours pour cette production
- var has_commande_en_cours = false ;
- $('#orders-in-progress .order').each(function() {
- if($(this).data('iddistribution') == id_production) {
- //alert('bada') ;
- $('#has-order-in-progress a').attr('href',$(this).data('href')) ;
- $('#has-order-in-progress').show() ;
- has_commande_en_cours = true ;
-
- $('#block-points-sale, #step-infos-point-sale, #points-sale, #products, #bar-fixed').hide() ;
- }
- }) ;
-
- if(!has_commande_en_cours) {
-
- chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
-
- $('#products, .confirm-order, .btn-comment, #bar-fixed').hide() ;
-
- // déselection points de vente
- $('#points-sale .point-sale').removeClass('selected') ;
- $('#order-id_point_sale').val('') ;
-
- // affichage points de vente
- $('#block-points-sale, #points-sale, #order-infos').fadeIn() ;
-
- // scroll
- boulange_scroll('step-point-sale') ;
- }
-
- }
- }) ;
-
- if($('#order-id_distribution').val()) {
- $("#dates .id_distribution").each(function() {
- if($(this).html() == $('#order-id_distribution').val()) {
- var tab_date = $(this).parent().find('.date').html().split('/') ;
- var date = new Date(tab_date[2],tab_date[1]-1,tab_date[0]);
- $('#datepicker-distribution').datepicker('setDate',date) ;
- chat_systeme_commande_produits_dispos(tab_date[2]+'-'+tab_date[1]+'-'+tab_date[0], date) ;
- chat_init_horaire_point_vente(date) ;
- }
- }) ;
- }
-
-
- // tableau produits
- $('.order-form .move-quantity').click(function() {
-
- var vrac = ($(this).parent().parent().parent().parent().parent().parent().parent().attr('id') == 'vrac') ;
-
- if(vrac) {
- var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
-
- if($(this).hasClass('minus') && quantite != 0)
- quantite -= 500 ;
- if($(this).hasClass('plus'))
- quantite += 500 ;
-
- $(this).parent().parent().find('input.quantity').val(quantite) ;
-
- chat_systeme_commande_maj_table_prix();
-
- }
- else {
- var quantite_totale = 0 ;
- $('.quantity').each(function() {
- quantite_totale += parseInt($(this).val()) ;
- }) ;
-
- var quantite = parseInt($(this).parent().parent().find('input.quantity').val()) ;
- var quantite_restante = parseInt($(this).parent().parent().parent().find('.quantity-remaining .nb').html()) ;
- var quantite_max = $(this).parent().parent().parent().parent().data('quantity-max') ;
- var no_limit = $(this).parent().parent().parent().parent().data('no-limit') ;
-
- if($(this).hasClass('minus') && quantite != 0) {
- quantite -- ;
- quantite_restante ++ ;
- }
-
- if($(this).hasClass('plus') ){
- if(quantite_restante > 0 || no_limit) {
- quantite ++ ;
- quantite_restante -- ;
- }
- }
-
- $(this).parent().parent().parent().find('.quantity-remaining .nb').html(quantite_restante) ;
-
- if(quantite_restante <= 5 && quantite_restante > 0) {
- $(this).parent().parent().parent().find('.quantity-remaining').fadeIn() ;
- }
- else {
- $(this).parent().parent().parent().find('.quantity-remaining').hide() ;
- }
- if(quantite_restante == 0 && !no_limit) {
- $(this).parent().parent().parent().find('.unavailable').fadeIn() ;
- }
- else {
- $(this).parent().parent().parent().find('.unavailable').hide() ;
- }
-
- $(this).parent().parent().find('input.quantity').val(quantite) ;
-
- chat_systeme_commande_maj_table_prix();
-
- }
-
- }) ;
- chat_systeme_commande_maj_table_prix() ;
- chat_systeme_commande_credit_pain();
- }
-
- // commentaire commande
- $('.order-form .btn-comment').click(function() {
- if($('.field-order-comment').css('display') == 'none') {
- $('.field-order-comment').slideDown() ;
- }
- else {
- $('.field-order-comment').slideUp() ;
- }
- return false ;
- }) ;
-
- // bar fixed
- if($('#bar-fixed').size()) {
- $(window).scroll(function (event) {
- var scroll = $(window).scrollTop() + $(window).height();
- var pos_bottom_produits = $('#table-products').offset().top + $('#table-products').height() + 100 ;
-
- if($(window).height() < 700) {
- if(!$('#bar-fixed').hasClass('not-fixed')) {
- $('#bar-fixed').addClass('not-fixed') ;
- }
- }
- else {
- if(scroll > pos_bottom_produits) {
- if(!$('#bar-fixed').hasClass('not-fixed')) {
- $('#bar-fixed').addClass('not-fixed') ;
- }
- }
- else {
- $('#bar-fixed').removeClass('not-fixed') ;
- }
- }
- });
- }
- }
-
- function chat_systeme_commande_produits_dispos(str_date, date) {
- // produits dispos à la vente à cette date
- $.get(chat_base_url(true)+'order/infos-distribution',{
- idDistribution: $('#order-id_distribution').val()
- }, function(data) {
-
- if(data.products) {
- $.each(data.products, function( id_produit, produit ) {
-
- if(produit.active) $('.product-'+id_produit).show() ;
- else $('.product-'+id_produit).hide() ;
-
- var quantite_restante = produit.quantity_max - produit.quantity_order ;
- var no_limit = 0 ;
- if(!produit.quantity_max)
- no_limit = 1 ;
-
- $('.product-'+id_produit).attr('data-no-limit',no_limit) ;
- $('.product-'+id_produit).attr('data-quantity-max',produit.quantity_max) ;
- $('.product-'+id_produit+' .quantity-remaining .nb').html(quantite_restante) ;
-
- if(produit.quantity_max && (!quantite_restante || quantite_restante < 0 || produit.unavailable)) {
- $('.product-'+id_produit+' .unavailable').show() ;
-
- if(!$('#id-order').val() && $('.product-'+id_produit+' .quantity').val() == 0)
- {
- $('.product-'+id_produit+' .quantity-remaining').hide() ;
- $('.product-'+id_produit+' .input-group').hide() ;
- }
- }
- else {
- $('.product-'+id_produit+' .unavailable').hide() ;
- $('.product-'+id_produit+' .input-group').show() ;
- $('.product-'+id_produit+' .quantity-remaining .nb').html(quantite_restante) ;
- }
-
- if($('.product-'+id_produit+' .quantity-remaining').size()) {
- if(parseInt($('.product-'+id_produit+' .quantity-remaining .nb').html()) > 5 ||
- parseInt($('.product-'+id_produit+' .quantity-remaining .nb').html()) <= 0) {
- $('.product-'+id_produit+' .quantity-remaining').hide() ;
- }
- else {
- $('.product-'+id_produit+' .quantity-remaining').show() ;
- }
- }
- });
- }
-
-
- $('#points-sale .point-sale').hide() ;
-
- // init affichage points de vente
- $.each(data.points_sale, function(key, livraison) {
- if(livraison) {
- $('.point-sale-'+key).fadeIn() ;
- }
- else {
- $('.point-sale-'+key).hide() ;
- }
- }) ;
-
- chat_init_horaire_point_vente(date) ;
-
- }, 'json') ;
- }
-
- function chat_systeme_commande_reset_table_prix() {
- $('#table-products tr .column-quantity .quantity').each(function() {
- $(this).val(0) ;
- }) ;
- chat_systeme_commande_maj_table_prix() ;
- }
-
- function chat_systeme_commande_maj_table_prix() {
-
- // produits pain
- var prix = 0 ;
- $('.order-form #table-products tbody tr').each(function() {
- var quantite = parseInt($(this).find('.quantity').val()) ;
- var prix_produit = parseFloat($(this).find('.price').html()) ;
- var prix_total_produit = quantite * prix_produit ;
-
- if(prix_total_produit)
- $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
- else
- $(this).find('.total').html('--') ;
-
- if(quantite > 0)
- prix += prix_total_produit ;
- }) ;
-
- $('#total-order strong').html(formate_prix(prix)+' €') ;
- var prix_global = prix ;
-
- // produits vrac
- var prix = 0 ;
- $('.order-form #table-products-vrac tbody tr').each(function() {
- var quantite = parseInt($(this).find('.quantity').val()) ;
- var prix_produit = parseFloat($(this).find('.price').html()) ;
- var prix_total_produit = quantite/1000 * prix_produit ;
-
- if(prix_total_produit)
- $(this).find('.total').html(formate_prix(prix_total_produit)+' €') ;
- else
- $(this).find('.total').html('--') ;
-
- if(quantite > 0)
- prix += prix_total_produit ;
- }) ;
-
- $('#total-order-vrac strong').html(formate_prix(prix)+' €') ;
-
- prix_global += prix ;
-
-
- $('#total-order-bottom span').html(formate_prix(prix_global)) ;
-
- if(prix_global)
- $('#total-order-bottom').fadeIn() ;
- else
- $('#total-order-bottom').hide() ;
-
- // maj credit pain
- chat_systeme_commande_credit_pain_event(prix_global) ;
-
- return prix_global ;
- }
-
- function chat_systeme_commande_credit_pain() {
- $('input[name=credit]').change(function() {
- var prix_global = chat_systeme_commande_maj_table_prix() ;
- chat_systeme_commande_credit_pain_event(prix_global) ;
- }) ;
- }
-
- function chat_systeme_commande_credit_pain_event(prix_global) {
- var html = '' ;
- var use_credit_pain = $('input[name=credit]').prop('checked') ;
-
- var credit_pain = parseFloat($('#montant-credit').val()) ;
- var credit_pain_dispo = credit_pain ;
- var montant_paye = 0
- if($('#amount-paid').size() && $('#amount-paid').val())
- montant_paye = parseFloat($('#amount-paid').val()) ;
-
- if($('#id-order').size() && $('#id-order').val()) {
- credit_pain_dispo = credit_pain + montant_paye ;
- }
-
- var credit_pain_active = $('.point-sale.selected').data('credit') ;
- if(credit_pain_active || montant_paye) {
- $('#checkbox-credit #info-credit-empty').show() ;
- $('#checkbox-credit label').show() ;
- $('#checkbox-credit #credit-disabled').hide() ;
-
- if(prix_global > credit_pain_dispo) {
- var reste_payer = prix_global - credit_pain_dispo ;
- if(use_credit_pain) {
- if(montant_paye) {
- html += '<span class="amount-paid">'+montant_paye+' € déjà payé</span><br />' ;
- }
- html += '<strong>'+credit_pain.toFixed(2)+' €</strong> seront débités<br />' ;
- html += 'Restera <strong>'+reste_payer+' €</strong> à payer à la boulangerie' ;
- $('#checkbox-credit .info').html(html) ;
- }
- else {
- $('#checkbox-credit .info').html('') ;
- }
- }
- else {
-
- $('#checkbox-credit').removeClass('payment-impossible') ;
- $('input[name=credit]').removeAttr('disabled') ;
- if(use_credit_pain) {
- var html = '' ;
- // à payer
- if(prix_global > montant_paye)
- {
- montant = prix_global - montant_paye ;
- if(montant_paye) {
- html += '<span class="amount-paid">'+montant_paye+' € déjà payé</span><br />' ;
- }
- html += '<strong>'+montant.toFixed(2)+' €</strong> seront débités' ;
- $('#checkbox-credit .info').html(html) ;
- }
- // remboursé
- else if(prix_global < montant_paye) {
- montant = montant_paye - prix_global ;
- if(montant_paye) {
- html += '<span class="amount-paid">'+montant_paye+' € déjà payé</span><br />' ;
- }
- html += '<strong>'+montant+' €</strong> seront remboursés' ;
- $('#checkbox-credit .info').html(html) ;
-
- }
- else {
- if(montant_paye > 0)
- $('#checkbox-credit .info').html('<span class="amount-paid">'+montant_paye+' € déjà payé</span>') ;
- else
- $('#checkbox-credit .info').html('') ;
- }
- }
- else {
- $('#checkbox-credit .info').html('')
- }
- }
- }
- else {
- $('#checkbox-credit #info-credit-empty').hide() ;
- $('#checkbox-credit label').hide() ;
- $('#checkbox-credit #credit-disabled').show() ;
- }
- }
-
- function formate_prix(prix) {
- return prix.toFixed(2).replace( ".", "," ) ;
- }
-
- function chat_slideshow() {
- if($('body').hasClass('home')) {
- var base_url = $('#base_url').val() ;
- $.vegas('slideshow', {
- backgrounds:[
- //{ src:'./img/background/back2.jpg' },
- { src:base_url+'/img/background/four.jpg' },
- { src:base_url+'/img/background/gueulard.jpg' }
- ],
- walk: function() {
- $('.vegas-loading').css('display','none') ;
- $('.vegas-background').css('position','absolute') ;
- }
- })('overlay');
- }
- }
-
- function chat_scroll() {
- if($('body').hasClass('home')) {
- $('#header nav ul a[href^="#"]').click(function(){
- var the_id = $(this).attr("href");
- $('html, body').animate({
- scrollTop: $(the_id).offset().top - 100
- }, 'normal');
-
- return false;
- });
-
- $(window).scroll(function() {
- chat_event_scroll() ;
- }) ;
- chat_event_scroll() ;
- }
- }
-
- function chat_event_scroll() {
- var scroll_top = $(window).scrollTop() ;
- //console.log(scroll_top + ' '+ ($('#horaires').offset().top-100)) ;
- $('#header nav ul a').each(function() {
- var top = $($(this).attr('href')).offset().top ;
- var test = top + $($(this).attr('href')).height() - 150 ;
- //console.log($(this).attr('href')+' : '+scroll_top+ ' | '+ test) ;
- if(scroll_top <= top + $($(this).attr('href')).height() - 150) {
- $('#header a').removeClass('selec') ;
- $(this).addClass('selec') ;
- }
- }) ;
- }
|