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.

547 line
19KB

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