Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

614 lines
22KB

  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+']').attr('data-commande',data.json_commande);
  150. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').html(data.json_commande.str_montant) ;
  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. var commande = link.attr('data-commande') ;
  267. if(!$.isPlainObject(link.attr('data-commande'))) {
  268. commande = JSON.parse(link.attr('data-commande')) ;
  269. }
  270. // maj ligne commande
  271. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').removeClass('paye') ;
  272. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant .glyphicon').remove() ;
  273. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').html() ;
  274. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').html(commande.str_montant) ;
  275. if(commande.montant_paye >= commande.montant) {
  276. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').addClass('paye') ;
  277. if(commande.montant_paye > commande.montant) {
  278. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+'] .montant').append(' <span class="glyphicon glyphicon-warning-sign"></span>') ;
  279. }
  280. }
  281. // set id_commande
  282. $('#point-vente-'+id_pv+' .btn-cancel').data('id-commande',id_commande) ;
  283. $('#point-vente-'+id_pv+' .btn-save').data('id-commande',id_commande) ;
  284. $('#point-vente-'+id_pv+' .btn-remove').data('id-commande',id_commande) ;
  285. $('#point-vente-'+id_pv+' .btn-create').removeClass('is-create') ;
  286. $('#point-vente-'+id_pv+' .buttons-edit-remove').show() ;
  287. $('#point-vente-'+id_pv+' .buttons-save-cancel').hide() ;
  288. $('#point-vente-'+id_pv+' .choix-user').hide() ;
  289. $('#point-vente-'+id_pv+' .the-title').show() ;
  290. $('#point-vente-'+id_pv+' .td-commande').html('') ;
  291. $('#point-vente-'+id_pv+' .td-total').html('') ;
  292. $('#point-vente-'+id_pv+' tr').removeClass('active') ;
  293. $.each(commande.produits, function(i, item) {
  294. $('#point-vente-'+id_pv+' .produit-'+i+' .td-commande').html(item) ;
  295. $('#point-vente-'+id_pv+' .produit-'+i).addClass('active') ;
  296. }) ;
  297. $('#point-vente-'+id_pv+' .td-total').html('<span>'+commande.str_montant+'</span>') ;
  298. $('#point-vente-'+id_pv+' .tr-total').show() ;
  299. var commentaire = link.data('commentaire') ;
  300. if(commentaire) {
  301. $('#point-vente-'+id_pv+' .commentaire').html(commentaire).show() ;
  302. }
  303. else {
  304. $('#point-vente-'+id_pv+' .commentaire').hide() ;
  305. }
  306. $('#point-vente-'+id_pv+' .title-user span.the-title').html(link.find('.user').html()+" <small>"+link.data('date')+"</small>") ;
  307. $('#point-vente-'+id_pv+' .bloc-commande').fadeIn() ;
  308. $('#point-vente-'+id_pv+' .title-user').show() ;
  309. $('#point-vente-'+id_pv+' .tr-total').show() ;
  310. // paiement
  311. $.get('index.php',{
  312. r: 'commande/statut-paiement',
  313. id_commande: id_commande
  314. }, function(data) {
  315. $('#point-vente-'+id_pv+' .bloc-commande .td-paiement').html(data.html_statut_paiement) ;
  316. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+']').attr('data-commande',data.json_commande) ;
  317. chat_index_commandes_boutons_paiement(id_pv, id_commande) ;
  318. },'json') ;
  319. }
  320. function chat_index_commandes_boutons_paiement(id_pv, id_commande) {
  321. // boutons paiement/remboursement
  322. $('#point-vente-'+id_pv+' .payer, #point-vente-'+id_pv+' .rembourser').click(function() {
  323. $.get('index.php',{
  324. r: 'commande/paiement',
  325. id_commande: id_commande,
  326. type: $(this).data('type'),
  327. montant: $(this).data('montant')
  328. }, function(data) {
  329. $('#point-vente-'+id_pv+' .bloc-commande .td-paiement').html(data.html_statut_paiement) ;
  330. $('#point-vente-'+id_pv+' a[data-id-commande='+id_commande+']').attr('data-commande',data.json_commande) ;
  331. chat_index_commandes_affiche_commande(id_commande) ;
  332. chat_index_commandes_boutons_paiement(id_pv, id_commande) ;
  333. }, 'json') ;
  334. }) ;
  335. }
  336. function chat_index_commandes_liste_produits() {
  337. $('#produits-production .td-max input').click(function() {
  338. $(this).select() ;
  339. }) ;
  340. $('#produits-production .td-actif input').change(function() {
  341. if($(this).prop('checked')) {
  342. $(this).parent().parent().addClass('active') ;
  343. }
  344. else {
  345. $(this).parent().parent().removeClass('active') ;
  346. }
  347. }) ;
  348. }
  349. function chat_alert(type, message) {
  350. var id = 'alert-'+$('#alerts-fixed .alert').size() + 1 ;
  351. $('#alerts-fixed').append('<div id="'+id+'" class="alert alert-'+type+'">'+message+'</div>') ;
  352. setTimeout('$("#'+id+'").fadeOut();',3000) ;
  353. }
  354. function chat_ordre_produits() {
  355. var fixHelper = function(e, ui) {
  356. ui.children().each(function() {
  357. $(this).width($(this).width());
  358. });
  359. return ui;
  360. };
  361. $(".produit-index table tbody").sortable({
  362. items: "> tr",
  363. appendTo: "parent",
  364. cursor: "move",
  365. placeholder: "ui-state-highlight",
  366. handle: '.btn-order',
  367. //helper: "clone"
  368. helper: fixHelper,
  369. stop: function(event, ui) {
  370. var tab_ordre = {} ;
  371. var ordre = 1 ;
  372. $(".produit-index table tbody tr").each(function() {
  373. tab_ordre[$(this).attr('data-key')] = ordre ;
  374. ordre++ ;
  375. }) ;
  376. console.log(tab_ordre) ;
  377. $.get('index.php',{
  378. r: 'produit/ordre',
  379. tab: JSON.stringify(tab_ordre)
  380. }) ;
  381. }
  382. }).disableSelection();
  383. }
  384. function chat_email_masse() {
  385. $('#ids-users .label').click(function() {
  386. if($(this).hasClass('label-default')) {
  387. $(this).removeClass('label\-default') ;
  388. $(this).addClass('label-danger') ;
  389. }
  390. else if($(this).hasClass('label-danger'))
  391. $(this).removeClass('label-danger').addClass('label-default') ;
  392. }) ;
  393. $('#email-masse-form button[type=submit]').click(function() {
  394. $(this).attr('disabled','disabled').html('Envoyer ...') ;
  395. chat_email_masse_send() ;
  396. return false ;
  397. }) ;
  398. }
  399. function chat_email_masse_send() {
  400. var user = $('#ids-users .label-default:first') ;
  401. if(user.size()) {
  402. $('input[name=id_user]').val(user.data('id')) ;
  403. $.post('index.php?r=user/mail',$('#email-masse-form').serialize(), function(retour) {
  404. user.removeClass('label-default').addClass('label-success') ;
  405. setTimeout("chat_email_masse_send()",30000) ;
  406. }) ;
  407. }
  408. else {
  409. alert('Fini !') ;
  410. }
  411. }
  412. function chat_vrac() {
  413. $('.edit-vrac').click(function() {
  414. if($('.vrac').css('display') == 'none')
  415. $('.vrac').show() ;
  416. else
  417. $('.vrac').hide() ;
  418. }) ;
  419. }
  420. function chat_datepicker() {
  421. $('.datepicker').datepicker({dateFormat:'dd/mm/yy'}) ;
  422. }
  423. function chat_calendar() {
  424. if($('#page-commande').size()) {
  425. var events = new Array ;
  426. $('ul#jours-production li').each(function() {
  427. var date = $(this).html() ;
  428. events.push({
  429. title: 'Production',
  430. start: date,
  431. allDay: true
  432. }) ;
  433. }) ;
  434. jQuery('#calendar').fullCalendar({
  435. header: {
  436. left:"prev,next",
  437. center: "title",
  438. //right:"month,agendaWeek,agendaDay"
  439. right:""
  440. },
  441. lang:"fr-fr",
  442. loading:function loading(bool) {
  443. if (bool) $('#loading').show();
  444. else $('#loading').hide();
  445. },
  446. dayClick: function(date, jsEvent, view) {
  447. var url = $(location).attr('href') ;
  448. var tab_url = url.split('?') ;
  449. $(location).attr('href',tab_url[0]+'?r=commande/index&date='+date.format());
  450. },
  451. eventRender: function (event, element) {
  452. var dataToFind = moment(event.start).format('YYYY-MM-DD');
  453. $("td[data-date='"+dataToFind+"']").addClass('dayWithEvent');
  454. },
  455. //eventBackgroundColor: '#000000',
  456. events: events,
  457. id:"calendar"
  458. });
  459. if($('#current-date').val())
  460. $('td[data-date='+$('#current-date').val()+']').addClass('current-date') ;
  461. }
  462. }
  463. /* French initialisation for the jQuery UI date picker plugin. */
  464. /* Written by Keith Wood (kbwood{at}iinet.com.au),
  465. Stéphane Nahmani (sholby@sholby.net),
  466. Stéphane Raimbault <stephane.raimbault@gmail.com> */
  467. (function( factory ) {
  468. if ( typeof define === "function" && define.amd ) {
  469. // AMD. Register as an anonymous module.
  470. define([ "../jquery.ui.datepicker" ], factory );
  471. } else {
  472. // Browser globals
  473. factory( jQuery.datepicker );
  474. }
  475. }(function( datepicker ) {
  476. datepicker.regional['fr'] = {
  477. closeText: 'Fermer',
  478. prevText: 'Précédent',
  479. nextText: 'Suivant',
  480. currentText: 'Aujourd\'hui',
  481. monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
  482. 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
  483. monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
  484. 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
  485. dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
  486. dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
  487. dayNamesMin: ['D','L','M','M','J','V','S'],
  488. weekHeader: 'Sem.',
  489. dateFormat: 'dd/mm/yy',
  490. firstDay: 1,
  491. isRTL: false,
  492. showMonthAfterYear: false,
  493. yearSuffix: ''};
  494. datepicker.setDefaults(datepicker.regional['fr']);
  495. return datepicker.regional['fr'];
  496. }));