Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

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