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.

568 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. 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+' .liste-commandes a.active').removeClass('active') ;
  168. $('#point-vente-'+id_pv+' .tr-total').hide() ;
  169. $('#point-vente-'+id_pv+' .buttons-edit-remove').hide() ;
  170. $('#point-vente-'+id_pv+' .the-title').hide() ;
  171. $('#point-vente-'+id_pv+' .buttons-save-cancel').show() ;
  172. $('#point-vente-'+id_pv+' .choix-user').show() ;
  173. $('#point-vente-'+id_pv+' .choix-user .user-id').val(0) ;
  174. $('#point-vente-'+id_pv+' .choix-user .username').val('') ;
  175. $('#point-vente-'+id_pv+' .commentaire').hide() ;
  176. $('#point-vente-'+id_pv+' .btn-save').addClass('is-create');
  177. if($('#point-vente-'+id_pv+' .liste-commandes li').size() == 0) {
  178. $('#point-vente-'+id_pv+' .btn-cancel').hide() ;
  179. }
  180. else {
  181. $('#point-vente-'+id_pv+' .btn-cancel').show() ;
  182. }
  183. chat_index_commandes_inputs_commande(id_pv, false) ;
  184. $('#point-vente-'+id_pv+' .title-user').show() ;
  185. }) ;
  186. }) ;
  187. $('#commandes-points-vente .liste-commandes').each(function() {
  188. $(this).find('a:first').trigger('click') ;
  189. }) ;
  190. }
  191. function chat_index_commandes_maj_total_commandes() {
  192. $.get('index.php',{
  193. r: 'commande/ajax-total-commandes',
  194. date: $('#date-production').val()
  195. }, function(data) {
  196. $('#bloc-totaux').html(data.html_totaux) ;
  197. }, 'json') ;
  198. }
  199. function chat_index_commandes_maj_recap_pv(id_pv, total) {
  200. $('#point-vente-'+id_pv+' .recap-pv .recettes').html(total) ;
  201. var nb_commandes = $('#point-vente-'+id_pv+' .liste-commandes li').size() ;
  202. if(nb_commandes == 0) {
  203. $('#point-vente-'+id_pv+' .recap-pv .commandes').html('Aucune commande') ;
  204. $('#point-vente-'+id_pv+' .recap-pv .recettes').hide() ;
  205. }
  206. else if(nb_commandes == 1) {
  207. $('#point-vente-'+id_pv+' .recap-pv .commandes').html('1 commande') ;
  208. $('#point-vente-'+id_pv+' .recap-pv .recettes').show() ;
  209. }
  210. else {
  211. $('#point-vente-'+id_pv+' .recap-pv .commandes').html(nb_commandes+' commandes') ;
  212. $('#point-vente-'+id_pv+' .recap-pv .recettes').show() ;
  213. }
  214. $('#btn-point-vente-'+id_pv+' .badge').html(nb_commandes) ;
  215. }
  216. function chat_index_commandes_inputs_commande(id_pv, use_quantite) {
  217. $('#point-vente-'+id_pv+' .table-produits tr').each(function() {
  218. var quantite = '' ;
  219. if(use_quantite)
  220. quantite = $(this).find('.td-commande').html() ;
  221. var id_produit = $(this).data('id-produit') ;
  222. $(this).find('.td-commande').html('<div class="input-group">'+
  223. '<span class="input-group-btn">'+
  224. '<button class="btn btn-default btn-moins" type="button"><span class="glyphicon glyphicon-minus"></span></button>'+
  225. '</span>'+
  226. '<input type="text" class="form-control quantite" value="'+quantite+'" name="produit_'+id_produit+'">'+
  227. '<span class="input-group-btn">'+
  228. '<button class="btn btn-default btn-plus" type="button"><span class="glyphicon glyphicon-plus"></span></button>'+
  229. '</span>'+
  230. '</div>') ;
  231. }) ;
  232. // plus / moins
  233. chat_btn_plus_moins() ;
  234. }
  235. function chat_btn_plus_moins() {
  236. $('.btn-plus').each(function() {
  237. $(this).click(function() {
  238. var input = $(this).parent().parent().find('input') ;
  239. var value = input.val() ;
  240. if(value)
  241. value ++ ;
  242. else
  243. value = 1 ;
  244. input.val(value) ;
  245. }) ;
  246. }) ;
  247. $('.btn-moins').each(function() {
  248. $(this).click(function() {
  249. var input = $(this).parent().parent().find('input') ;
  250. var value = input.val() ;
  251. if(value && value > 1)
  252. value -- ;
  253. else
  254. value = '' ;
  255. input.val(value) ;
  256. }) ;
  257. }) ;
  258. }
  259. function chat_index_commandes_affiche_commande(id_commande) {
  260. var link = $("a[data-id-commande="+id_commande+"]") ;
  261. var id_pv = link.data('pv-id') ;
  262. $('#point-vente-'+id_pv+' .liste-commandes a').removeClass('active') ;
  263. link.addClass('active') ;
  264. // set id_commande
  265. $('#point-vente-'+id_pv+' .btn-cancel').data('id-commande',id_commande) ;
  266. $('#point-vente-'+id_pv+' .btn-save').data('id-commande',id_commande) ;
  267. $('#point-vente-'+id_pv+' .btn-remove').data('id-commande',id_commande) ;
  268. $('#point-vente-'+id_pv+' .btn-create').removeClass('is-create') ;
  269. $('#point-vente-'+id_pv+' .buttons-edit-remove').show() ;
  270. $('#point-vente-'+id_pv+' .buttons-save-cancel').hide() ;
  271. $('#point-vente-'+id_pv+' .choix-user').hide() ;
  272. $('#point-vente-'+id_pv+' .the-title').show() ;
  273. $('#point-vente-'+id_pv+' .td-commande').html('') ;
  274. $('#point-vente-'+id_pv+' .td-total').html('') ;
  275. $('#point-vente-'+id_pv+' tr').removeClass('active') ;
  276. var commande = link.data('commande') ;
  277. if(!$.isPlainObject(link.data('commande'))) {
  278. commande = JSON.parse(link.data('commande')) ;
  279. }
  280. $.each(commande.produits, function(i, item) {
  281. $('#point-vente-'+id_pv+' .produit-'+i+' .td-commande').html(item) ;
  282. $('#point-vente-'+id_pv+' .produit-'+i).addClass('active') ;
  283. }) ;
  284. $('#point-vente-'+id_pv+' .td-total').html('<span>'+commande.montant+' €</span>') ;
  285. $('#point-vente-'+id_pv+' .tr-total').show() ;
  286. var commentaire = link.data('commentaire') ;
  287. if(commentaire) {
  288. $('#point-vente-'+id_pv+' .commentaire').html(commentaire).show() ;
  289. }
  290. else {
  291. $('#point-vente-'+id_pv+' .commentaire').hide() ;
  292. }
  293. $('#point-vente-'+id_pv+' .title-user span.the-title').html(link.find('.user').html()+" <small>"+link.data('date')+"</small>") ;
  294. $('#point-vente-'+id_pv+' .title-user').show() ;
  295. $('#point-vente-'+id_pv+' .tr-total').show() ;
  296. }
  297. function chat_index_commandes_liste_produits() {
  298. $('#produits-production .td-max input').click(function() {
  299. $(this).select() ;
  300. }) ;
  301. $('#produits-production .td-actif input').change(function() {
  302. if($(this).prop('checked')) {
  303. $(this).parent().parent().addClass('active') ;
  304. }
  305. else {
  306. $(this).parent().parent().removeClass('active') ;
  307. }
  308. }) ;
  309. }
  310. function chat_alert(type, message) {
  311. var id = 'alert-'+$('#alerts-fixed .alert').size() + 1 ;
  312. $('#alerts-fixed').append('<div id="'+id+'" class="alert alert-'+type+'">'+message+'</div>') ;
  313. setTimeout('$("#'+id+'").fadeOut();',3000) ;
  314. }
  315. function chat_ordre_produits() {
  316. var fixHelper = function(e, ui) {
  317. ui.children().each(function() {
  318. $(this).width($(this).width());
  319. });
  320. return ui;
  321. };
  322. $(".produit-index table tbody").sortable({
  323. items: "> tr",
  324. appendTo: "parent",
  325. cursor: "move",
  326. placeholder: "ui-state-highlight",
  327. handle: '.btn-order',
  328. //helper: "clone"
  329. helper: fixHelper,
  330. stop: function(event, ui) {
  331. var tab_ordre = {} ;
  332. var ordre = 1 ;
  333. $(".produit-index table tbody tr").each(function() {
  334. tab_ordre[$(this).attr('data-key')] = ordre ;
  335. ordre++ ;
  336. }) ;
  337. console.log(tab_ordre) ;
  338. $.get('index.php',{
  339. r: 'produit/ordre',
  340. tab: JSON.stringify(tab_ordre)
  341. }) ;
  342. }
  343. }).disableSelection();
  344. }
  345. function chat_email_masse() {
  346. $('#ids-users .label').click(function() {
  347. if($(this).hasClass('label-default')) {
  348. $(this).removeClass('label\-default') ;
  349. $(this).addClass('label-danger') ;
  350. }
  351. else if($(this).hasClass('label-danger'))
  352. $(this).removeClass('label-danger').addClass('label-default') ;
  353. }) ;
  354. $('#email-masse-form button[type=submit]').click(function() {
  355. $(this).attr('disabled','disabled').html('Envoyer ...') ;
  356. chat_email_masse_send() ;
  357. return false ;
  358. }) ;
  359. }
  360. function chat_email_masse_send() {
  361. var user = $('#ids-users .label-default:first') ;
  362. if(user.size()) {
  363. $('input[name=id_user]').val(user.data('id')) ;
  364. $.post('index.php?r=user/mail',$('#email-masse-form').serialize(), function(retour) {
  365. user.removeClass('label-default').addClass('label-success') ;
  366. setTimeout("chat_email_masse_send()",30000) ;
  367. }) ;
  368. }
  369. else {
  370. alert('Fini !') ;
  371. }
  372. }
  373. function chat_vrac() {
  374. $('.edit-vrac').click(function() {
  375. if($('.vrac').css('display') == 'none')
  376. $('.vrac').show() ;
  377. else
  378. $('.vrac').hide() ;
  379. }) ;
  380. }
  381. function chat_datepicker() {
  382. $('.datepicker').datepicker({dateFormat:'dd/mm/yy'}) ;
  383. }
  384. function chat_calendar() {
  385. if($('#page-commande').size()) {
  386. var events = new Array ;
  387. $('ul#jours-production li').each(function() {
  388. var date = $(this).html() ;
  389. events.push({
  390. title: 'Production',
  391. start: date,
  392. allDay: true
  393. }) ;
  394. }) ;
  395. jQuery('#calendar').fullCalendar({
  396. header: {
  397. left:"prev,next",
  398. center: "title",
  399. //right:"month,agendaWeek,agendaDay"
  400. right:""
  401. },
  402. lang:"fr-fr",
  403. loading:function loading(bool) {
  404. if (bool) $('#loading').show();
  405. else $('#loading').hide();
  406. },
  407. dayClick: function(date, jsEvent, view) {
  408. var url = $(location).attr('href') ;
  409. var tab_url = url.split('?') ;
  410. $(location).attr('href',tab_url[0]+'?r=commande/index&date='+date.format());
  411. },
  412. eventRender: function (event, element) {
  413. var dataToFind = moment(event.start).format('YYYY-MM-DD');
  414. $("td[data-date='"+dataToFind+"']").addClass('dayWithEvent');
  415. },
  416. //eventBackgroundColor: '#000000',
  417. events: events,
  418. id:"calendar"
  419. });
  420. if($('#current-date').val())
  421. $('td[data-date='+$('#current-date').val()+']').addClass('current-date') ;
  422. }
  423. }
  424. /* French initialisation for the jQuery UI date picker plugin. */
  425. /* Written by Keith Wood (kbwood{at}iinet.com.au),
  426. Stéphane Nahmani (sholby@sholby.net),
  427. Stéphane Raimbault <stephane.raimbault@gmail.com> */
  428. (function( factory ) {
  429. if ( typeof define === "function" && define.amd ) {
  430. // AMD. Register as an anonymous module.
  431. define([ "../jquery.ui.datepicker" ], factory );
  432. } else {
  433. // Browser globals
  434. factory( jQuery.datepicker );
  435. }
  436. }(function( datepicker ) {
  437. datepicker.regional['fr'] = {
  438. closeText: 'Fermer',
  439. prevText: 'Précédent',
  440. nextText: 'Suivant',
  441. currentText: 'Aujourd\'hui',
  442. monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
  443. 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
  444. monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
  445. 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
  446. dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
  447. dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
  448. dayNamesMin: ['D','L','M','M','J','V','S'],
  449. weekHeader: 'Sem.',
  450. dateFormat: 'dd/mm/yy',
  451. firstDay: 1,
  452. isRTL: false,
  453. showMonthAfterYear: false,
  454. yearSuffix: ''};
  455. datepicker.setDefaults(datepicker.regional['fr']);
  456. return datepicker.regional['fr'];
  457. }));