You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

575 lines
20KB

  1. $(document).ready(function() {
  2. chat_calendar() ;
  3. chat_datepicker() ;
  4. chat_vrac() ;
  5. chat_email_masse() ;
  6. $('button[data-toggle=popover]').popover() ;
  7. chat_ordre_produits() ;
  8. chat_index_commandes_liste_produits() ;
  9. chat_index_commandes_points_vente() ;
  10. chat_btn_plus_moins() ;
  11. chat_commandeauto() ;
  12. chat_points_vente_acces() ;
  13. chat_tooltip() ;
  14. // admin
  15. chat_select_etablissement() ;
  16. }) ;
  17. function chat_tooltip() {
  18. $('[data-toggle="tooltip"]').tooltip();
  19. }
  20. function chat_points_vente_acces() {
  21. $('#pointvente-acces_restreint').change(function() {
  22. chat_points_vente_acces_event() ;
  23. }) ;
  24. chat_points_vente_acces_event() ;
  25. }
  26. function chat_points_vente_acces_event() {
  27. if($('#pointvente-acces_restreint').prop('checked')) {
  28. $('#pointvente-users').fadeIn() ;
  29. }
  30. else {
  31. $('#pointvente-users').hide() ;
  32. }
  33. }
  34. function chat_select_etablissement() {
  35. $('select[name="select_etablissement"]').change(function() {
  36. window.location.href = 'index.php?r=site/change-etablissement&id='+$(this).val() ;
  37. }) ;
  38. }
  39. function chat_commandeauto() {
  40. // dates
  41. $('#commandeautoform-date_debut, #commandeautoform-date_fin').datepicker() ;
  42. }
  43. function chat_index_commandes_points_vente() {
  44. $('#commandes-points-vente .liste-commandes a').unbind('click').click(function() {
  45. var id_pv = $(this).data('pv-id') ;
  46. // affiche la commande
  47. var id_commande = $(this).data('id-commande') ;
  48. chat_index_commandes_affiche_commande(id_commande) ;
  49. }) ;
  50. $('#commandes-points-vente .bloc-point-vente').each(function() {
  51. var id_pv = $(this).data('id-pv') ;
  52. // edit
  53. $('#point-vente-'+id_pv+' .btn-edit').unbind('click').click(function() {
  54. // boutons
  55. $('#point-vente-'+id_pv+' .buttons-edit-remove').hide() ;
  56. $('#point-vente-'+id_pv+' .buttons-save-cancel').show() ;
  57. $('#point-vente-'+id_pv+' .tr-total').hide() ;
  58. // inputs
  59. chat_index_commandes_inputs_commande(id_pv, true) ;
  60. }) ;
  61. // remove
  62. $('#point-vente-'+id_pv+' .btn-remove').unbind('click').click(function() {
  63. var id_commande = $(this).data('id-commande') ;
  64. $(this).attr('disabled', 'disabled') ;
  65. $.get('index.php',{
  66. r: 'commande/ajax-delete',
  67. date: $('#date-production').val(),
  68. id_commande: id_commande
  69. }, function(data) {
  70. $('#point-vente-'+id_pv+' .btn-remove').removeAttr('disabled') ;
  71. if($('#point-vente-'+id_pv+' .liste-commandes li').size()) {
  72. if($('#point-vente-'+id_pv+' .liste-commandes li:last-child a').is('.active')) {
  73. var commande_next = $('#point-vente-'+id_pv+' .liste-commandes a.active').parent().prev().find('a') ;
  74. }
  75. else {
  76. var commande_next = $('#point-vente-'+id_pv+' .liste-commandes a.active').parent().next().find('a') ;
  77. }
  78. $('#point-vente-'+id_pv+' .liste-commandes a.active').parent().remove() ;
  79. if($('#point-vente-'+id_pv+' .liste-commandes li').size()) {
  80. chat_index_commandes_affiche_commande(commande_next.data('id-commande')) ;
  81. }
  82. else {
  83. $('#point-vente-'+id_pv+' .liste-commandes').hide() ;
  84. $('#point-vente-'+id_pv+' .creer-commande').trigger('click') ;
  85. }
  86. }
  87. chat_index_commandes_maj_recap_pv(id_pv, data.total_pv) ;
  88. chat_index_commandes_maj_total_commandes() ;
  89. chat_alert('success','Commande supprimée') ;
  90. }, 'json') ;
  91. });
  92. // cancel
  93. $('#point-vente-'+id_pv+' .btn-cancel').unbind('click').click(function() {
  94. $('#point-vente-'+id_pv+' .buttons-edit-remove').show() ;
  95. $('#point-vente-'+id_pv+' .buttons-save-cancel').hide() ;
  96. chat_index_commandes_affiche_commande($(this).data('id-commande')) ;
  97. }) ;
  98. // save
  99. $('#point-vente-'+id_pv+' .btn-save').unbind('click').click(function() {
  100. var tab_produits = {} ;
  101. var cpt_produits = 0 ;
  102. $('#point-vente-'+id_pv+' .table-produits tr').each(function() {
  103. tab_produits[$(this).data('id-produit')] = $(this).find('.quantite').val() ;
  104. if($(this).find('.quantite').val())
  105. cpt_produits ++ ;
  106. }) ;
  107. if(cpt_produits) {
  108. // création
  109. if($(this).hasClass('is-create')) {
  110. if($('#point-vente-'+id_pv+' .user-id').val() || $('#point-vente-'+id_pv+' .username').val().length) {
  111. $(this).attr('disabled', 'disabled') ;
  112. $.get('index.php',{
  113. r: 'commande/ajax-create',
  114. date: $('#date-production').val(),
  115. id_pv: id_pv,
  116. id_user: $('#point-vente-'+id_pv+' .user-id').val(),
  117. username: $('#point-vente-'+id_pv+' .username').val(),
  118. produits: JSON.stringify(tab_produits)
  119. }, function(data) {
  120. $('#point-vente-'+id_pv+' .btn-save').removeAttr('disabled') ;
  121. $('#point-vente-'+id_pv+' .btn-save').removeClass('is-create') ;
  122. $('#point-vente-'+id_pv+' .liste-commandes').append(data.commande) ;
  123. chat_index_commandes_points_vente() ;
  124. chat_index_commandes_maj_recap_pv(id_pv, data.total_pv) ;
  125. $('#point-vente-'+id_pv+' .buttons-edit-remove').show() ;
  126. $('#point-vente-'+id_pv+' .buttons-save-cancel').hide() ;
  127. $('#point-vente-'+id_pv+' .btn-create').removeClass('is-create') ;
  128. $('#point-vente-'+id_pv+' .user-id').val(0) ;
  129. $('#point-vente-'+id_pv+' .user-id').val('') ;
  130. chat_index_commandes_affiche_commande(data.id_commande) ;
  131. chat_alert('success', 'Commande créée') ;
  132. }, 'json') ;
  133. }
  134. else {
  135. chat_alert('danger', 'Veuillez choisir ou saisir un nom d\'utilisateur') ;
  136. }
  137. }
  138. // modification
  139. else {
  140. var id_commande = $(this).data('id-commande') ;
  141. $(this).attr('disabled', 'disabled') ;
  142. $.get('index.php',{
  143. r: 'commande/ajax-update',
  144. id_commande: id_commande,
  145. produits: JSON.stringify(tab_produits),
  146. date: $('#date-production').val()
  147. }, function(data) {
  148. $('#point-vente-'+id_pv+' .btn-save').removeAttr('disabled') ;
  149. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+']').data('commande',data.json_commande);
  150. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').html(data.total_commande) ;
  151. chat_index_commandes_affiche_commande(id_commande) ;
  152. chat_index_commandes_maj_recap_pv(id_pv, data.total_pv) ;
  153. $('#point-vente-'+id_pv+' .buttons-edit-remove').show() ;
  154. $('#point-vente-'+id_pv+' .buttons-save-cancel').hide() ;
  155. chat_alert('success','Commande modifiée') ;
  156. }, 'json') ;
  157. }
  158. }
  159. else {
  160. chat_alert('danger', 'Veuillez saisir au moins un produit') ;
  161. }
  162. chat_index_commandes_maj_total_commandes() ;
  163. }) ;
  164. // create
  165. $('.creer-commande').unbind('click').click(function() {
  166. var id_pv = $(this).data('pv-id') ;
  167. $('#point-vente-'+id_pv+' .bloc-commande').fadeIn() ;
  168. $('#point-vente-'+id_pv+' .liste-commandes a.active').removeClass('active') ;
  169. $('#point-vente-'+id_pv+' .tr-total').hide() ;
  170. $('#point-vente-'+id_pv+' .buttons-edit-remove').hide() ;
  171. $('#point-vente-'+id_pv+' .the-title').hide() ;
  172. $('#point-vente-'+id_pv+' .buttons-save-cancel').show() ;
  173. $('#point-vente-'+id_pv+' .choix-user').show() ;
  174. $('#point-vente-'+id_pv+' .choix-user .user-id').val(0) ;
  175. $('#point-vente-'+id_pv+' .choix-user .username').val('') ;
  176. $('#point-vente-'+id_pv+' .commentaire').hide() ;
  177. $('#point-vente-'+id_pv+' .btn-save').addClass('is-create');
  178. if($('#point-vente-'+id_pv+' .liste-commandes li').size() == 0) {
  179. $('#point-vente-'+id_pv+' .btn-cancel').hide() ;
  180. }
  181. else {
  182. $('#point-vente-'+id_pv+' .btn-cancel').show() ;
  183. }
  184. chat_index_commandes_inputs_commande(id_pv, false) ;
  185. $('#point-vente-'+id_pv+' .title-user').show() ;
  186. }) ;
  187. }) ;
  188. $('#commandes-points-vente .liste-commandes').each(function() {
  189. //$(this).find('a:first').trigger('click') ;
  190. }) ;
  191. }
  192. function chat_index_commandes_maj_total_commandes() {
  193. $.get('index.php',{
  194. r: 'commande/ajax-total-commandes',
  195. date: $('#date-production').val()
  196. }, function(data) {
  197. $('#bloc-totaux').html(data.html_totaux) ;
  198. }, 'json') ;
  199. }
  200. function chat_index_commandes_maj_recap_pv(id_pv, total) {
  201. $('#point-vente-'+id_pv+' .recap-pv .recettes').html(total) ;
  202. var nb_commandes = $('#point-vente-'+id_pv+' .liste-commandes li').size() ;
  203. if(nb_commandes == 0) {
  204. $('#point-vente-'+id_pv+' .recap-pv .commandes').html('Aucune commande') ;
  205. $('#point-vente-'+id_pv+' .recap-pv .recettes').hide() ;
  206. }
  207. else if(nb_commandes == 1) {
  208. $('#point-vente-'+id_pv+' .recap-pv .commandes').html('1 commande') ;
  209. $('#point-vente-'+id_pv+' .recap-pv .recettes').show() ;
  210. }
  211. else {
  212. $('#point-vente-'+id_pv+' .recap-pv .commandes').html(nb_commandes+' commandes') ;
  213. $('#point-vente-'+id_pv+' .recap-pv .recettes').show() ;
  214. }
  215. $('#btn-point-vente-'+id_pv+' .badge').html(nb_commandes) ;
  216. }
  217. function chat_index_commandes_inputs_commande(id_pv, use_quantite) {
  218. $('#point-vente-'+id_pv+' .table-produits tr').each(function() {
  219. var quantite = '' ;
  220. if(use_quantite)
  221. quantite = $(this).find('.td-commande').html() ;
  222. var id_produit = $(this).data('id-produit') ;
  223. $(this).find('.td-commande').html('<div class="input-group">'+
  224. '<span class="input-group-btn">'+
  225. '<button class="btn btn-default btn-moins" type="button"><span class="glyphicon glyphicon-minus"></span></button>'+
  226. '</span>'+
  227. '<input type="text" class="form-control quantite" value="'+quantite+'" name="produit_'+id_produit+'">'+
  228. '<span class="input-group-btn">'+
  229. '<button class="btn btn-default btn-plus" type="button"><span class="glyphicon glyphicon-plus"></span></button>'+
  230. '</span>'+
  231. '</div>') ;
  232. }) ;
  233. // plus / moins
  234. chat_btn_plus_moins() ;
  235. }
  236. function chat_btn_plus_moins() {
  237. $('.btn-plus').each(function() {
  238. $(this).click(function() {
  239. var input = $(this).parent().parent().find('input') ;
  240. var value = input.val() ;
  241. if(value)
  242. value ++ ;
  243. else
  244. value = 1 ;
  245. input.val(value) ;
  246. }) ;
  247. }) ;
  248. $('.btn-moins').each(function() {
  249. $(this).click(function() {
  250. var input = $(this).parent().parent().find('input') ;
  251. var value = input.val() ;
  252. if(value && value > 1)
  253. value -- ;
  254. else
  255. value = '' ;
  256. input.val(value) ;
  257. }) ;
  258. }) ;
  259. }
  260. function chat_index_commandes_affiche_commande(id_commande) {
  261. var link = $("a[data-id-commande="+id_commande+"]") ;
  262. var id_pv = link.data('pv-id') ;
  263. $('#point-vente-'+id_pv+' .bloc-commande').hide() ;
  264. $('#point-vente-'+id_pv+' .liste-commandes a').removeClass('active') ;
  265. link.addClass('active') ;
  266. // set id_commande
  267. $('#point-vente-'+id_pv+' .btn-cancel').data('id-commande',id_commande) ;
  268. $('#point-vente-'+id_pv+' .btn-save').data('id-commande',id_commande) ;
  269. $('#point-vente-'+id_pv+' .btn-remove').data('id-commande',id_commande) ;
  270. $('#point-vente-'+id_pv+' .btn-create').removeClass('is-create') ;
  271. $('#point-vente-'+id_pv+' .buttons-edit-remove').show() ;
  272. $('#point-vente-'+id_pv+' .buttons-save-cancel').hide() ;
  273. $('#point-vente-'+id_pv+' .choix-user').hide() ;
  274. $('#point-vente-'+id_pv+' .the-title').show() ;
  275. $('#point-vente-'+id_pv+' .td-commande').html('') ;
  276. $('#point-vente-'+id_pv+' .td-total').html('') ;
  277. $('#point-vente-'+id_pv+' tr').removeClass('active') ;
  278. var commande = link.data('commande') ;
  279. if(!$.isPlainObject(link.data('commande'))) {
  280. commande = JSON.parse(link.data('commande')) ;
  281. }
  282. $.each(commande.produits, function(i, item) {
  283. $('#point-vente-'+id_pv+' .produit-'+i+' .td-commande').html(item) ;
  284. $('#point-vente-'+id_pv+' .produit-'+i).addClass('active') ;
  285. }) ;
  286. $('#point-vente-'+id_pv+' .td-total').html('<span>'+commande.montant+' €</span>') ;
  287. $('#point-vente-'+id_pv+' .tr-total').show() ;
  288. var commentaire = link.data('commentaire') ;
  289. if(commentaire) {
  290. $('#point-vente-'+id_pv+' .commentaire').html(commentaire).show() ;
  291. }
  292. else {
  293. $('#point-vente-'+id_pv+' .commentaire').hide() ;
  294. }
  295. $('#point-vente-'+id_pv+' .title-user span.the-title').html(link.find('.user').html()+" <small>"+link.data('date')+"</small>") ;
  296. $('#point-vente-'+id_pv+' .bloc-commande').fadeIn() ;
  297. $('#point-vente-'+id_pv+' .title-user').show() ;
  298. $('#point-vente-'+id_pv+' .tr-total').show() ;
  299. }
  300. function chat_index_commandes_liste_produits() {
  301. $('#produits-production .td-max input').click(function() {
  302. $(this).select() ;
  303. }) ;
  304. $('#produits-production .td-actif input').change(function() {
  305. if($(this).prop('checked')) {
  306. $(this).parent().parent().addClass('active') ;
  307. }
  308. else {
  309. $(this).parent().parent().removeClass('active') ;
  310. }
  311. }) ;
  312. }
  313. function chat_alert(type, message) {
  314. var id = 'alert-'+$('#alerts-fixed .alert').size() + 1 ;
  315. $('#alerts-fixed').append('<div id="'+id+'" class="alert alert-'+type+'">'+message+'</div>') ;
  316. setTimeout('$("#'+id+'").fadeOut();',3000) ;
  317. }
  318. function chat_ordre_produits() {
  319. var fixHelper = function(e, ui) {
  320. ui.children().each(function() {
  321. $(this).width($(this).width());
  322. });
  323. return ui;
  324. };
  325. $(".produit-index table tbody").sortable({
  326. items: "> tr",
  327. appendTo: "parent",
  328. cursor: "move",
  329. placeholder: "ui-state-highlight",
  330. handle: '.btn-order',
  331. //helper: "clone"
  332. helper: fixHelper,
  333. stop: function(event, ui) {
  334. var tab_ordre = {} ;
  335. var ordre = 1 ;
  336. $(".produit-index table tbody tr").each(function() {
  337. tab_ordre[$(this).attr('data-key')] = ordre ;
  338. ordre++ ;
  339. }) ;
  340. console.log(tab_ordre) ;
  341. $.get('index.php',{
  342. r: 'produit/ordre',
  343. tab: JSON.stringify(tab_ordre)
  344. }) ;
  345. }
  346. }).disableSelection();
  347. }
  348. function chat_email_masse() {
  349. $('#ids-users .label').click(function() {
  350. if($(this).hasClass('label-default')) {
  351. $(this).removeClass('label\-default') ;
  352. $(this).addClass('label-danger') ;
  353. }
  354. else if($(this).hasClass('label-danger'))
  355. $(this).removeClass('label-danger').addClass('label-default') ;
  356. }) ;
  357. $('#email-masse-form button[type=submit]').click(function() {
  358. $(this).attr('disabled','disabled').html('Envoyer ...') ;
  359. chat_email_masse_send() ;
  360. return false ;
  361. }) ;
  362. }
  363. function chat_email_masse_send() {
  364. var user = $('#ids-users .label-default:first') ;
  365. if(user.size()) {
  366. $('input[name=id_user]').val(user.data('id')) ;
  367. $.post('index.php?r=user/mail',$('#email-masse-form').serialize(), function(retour) {
  368. user.removeClass('label-default').addClass('label-success') ;
  369. setTimeout("chat_email_masse_send()",30000) ;
  370. }) ;
  371. }
  372. else {
  373. alert('Fini !') ;
  374. }
  375. }
  376. function chat_vrac() {
  377. $('.edit-vrac').click(function() {
  378. if($('.vrac').css('display') == 'none')
  379. $('.vrac').show() ;
  380. else
  381. $('.vrac').hide() ;
  382. }) ;
  383. }
  384. function chat_datepicker() {
  385. $('.datepicker').datepicker({dateFormat:'dd/mm/yy'}) ;
  386. }
  387. function chat_calendar() {
  388. if($('#page-commande').size()) {
  389. var events = new Array ;
  390. $('ul#jours-production li').each(function() {
  391. var date = $(this).html() ;
  392. events.push({
  393. title: 'Production',
  394. start: date,
  395. allDay: true
  396. }) ;
  397. }) ;
  398. jQuery('#calendar').fullCalendar({
  399. header: {
  400. left:"prev,next",
  401. center: "title",
  402. //right:"month,agendaWeek,agendaDay"
  403. right:""
  404. },
  405. lang:"fr-fr",
  406. loading:function loading(bool) {
  407. if (bool) $('#loading').show();
  408. else $('#loading').hide();
  409. },
  410. dayClick: function(date, jsEvent, view) {
  411. var url = $(location).attr('href') ;
  412. var tab_url = url.split('?') ;
  413. $(location).attr('href',tab_url[0]+'?r=commande/index&date='+date.format());
  414. },
  415. eventRender: function (event, element) {
  416. var dataToFind = moment(event.start).format('YYYY-MM-DD');
  417. $("td[data-date='"+dataToFind+"']").addClass('dayWithEvent');
  418. },
  419. //eventBackgroundColor: '#000000',
  420. events: events,
  421. id:"calendar"
  422. });
  423. if($('#current-date').val())
  424. $('td[data-date='+$('#current-date').val()+']').addClass('current-date') ;
  425. }
  426. }
  427. /* French initialisation for the jQuery UI date picker plugin. */
  428. /* Written by Keith Wood (kbwood{at}iinet.com.au),
  429. Stéphane Nahmani (sholby@sholby.net),
  430. Stéphane Raimbault <stephane.raimbault@gmail.com> */
  431. (function( factory ) {
  432. if ( typeof define === "function" && define.amd ) {
  433. // AMD. Register as an anonymous module.
  434. define([ "../jquery.ui.datepicker" ], factory );
  435. } else {
  436. // Browser globals
  437. factory( jQuery.datepicker );
  438. }
  439. }(function( datepicker ) {
  440. datepicker.regional['fr'] = {
  441. closeText: 'Fermer',
  442. prevText: 'Précédent',
  443. nextText: 'Suivant',
  444. currentText: 'Aujourd\'hui',
  445. monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
  446. 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
  447. monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
  448. 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
  449. dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
  450. dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
  451. dayNamesMin: ['D','L','M','M','J','V','S'],
  452. weekHeader: 'Sem.',
  453. dateFormat: 'dd/mm/yy',
  454. firstDay: 1,
  455. isRTL: false,
  456. showMonthAfterYear: false,
  457. yearSuffix: ''};
  458. datepicker.setDefaults(datepicker.regional['fr']);
  459. return datepicker.regional['fr'];
  460. }));