editPedidoCtrl.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /* globals pedidosService: true */
  2. app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify, $location, $timeout, editing, pedidosService) {
  3. $scope.titulo = 'Crear pedido';
  4. $scope.cero=true;
  5. $scope.total=0;
  6. $scope.observaciones="";
  7. $scope.hash = $routeParams.hash;
  8. $scope.fecha = new Date();
  9. $scope.modificar = function() {
  10. $scope.cero=true;
  11. };
  12. $scope.confirmar = function() {
  13. var filtrados = $scope.listaproductos.filter(function(el) { return el.cantidad > 0; });
  14. if (!pedidosService.pedidoValido(filtrados))
  15. return;
  16. $scope.cero=false;
  17. };
  18. $scope.update = function() {
  19. $http.get('back/cliente/' + $routeParams.hash).then(function(data) {
  20. $scope.userdata = data.data;
  21. });
  22. if (editing) {
  23. $scope.titulo = 'Editar pedido';
  24. $http.get('back/pedido/'+$routeParams.hash+'/'+$routeParams.id).then(
  25. function(data) {
  26. $scope.listaproductos = data.data.productos;
  27. $scope.observaciones = data.data.observaciones || "";
  28. $scope.estado = data.data.estado;
  29. if ($scope.estado == 'CONFIRMADO')
  30. $scope.cero = false;
  31. $scope.updateTotal();
  32. },
  33. function(data) {
  34. });
  35. } else {
  36. $http.get('back/productos/' + $routeParams.hash).success(function(data) {
  37. var first = data.filter(function(el) { return el.id < 8000 });
  38. var sec = data.filter(function(el) { return el.id >= 8000 });
  39. $scope.listaproductos = first.sort(function(a,b) {
  40. if (a.id % 1000 === b.id % 1000)
  41. return (a.id > b.id ? 1 : -1);
  42. if (a.id % 1000 > b.id % 1000)
  43. return 1;
  44. return -1;
  45. }).concat(sec);
  46. }).error(function(data) {
  47. });
  48. }
  49. };
  50. $scope.filterCero = function(criteria) {
  51. return function(item) {
  52. if ($scope.cero)
  53. return true;
  54. return item.cantidad > 0;
  55. };
  56. };
  57. $scope.validateKeypress = function(e) {
  58. if ( [46, 8, 9, 27, 13, 37, 39, 116].indexOf(e.keyCode) > -1 )
  59. return;
  60. if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
  61. e.preventDefault();
  62. }
  63. if ( this.p.cantidad >= 10 )
  64. e.preventDefault();
  65. };
  66. $scope.updateTotal = function() {
  67. var total=0;
  68. total=$scope.listaproductos.reduce(
  69. function(acc,cur) {
  70. return acc+(cur.cantidad*cur.precio);
  71. },0);
  72. $scope.total=total;
  73. };
  74. $scope.reset = function() {
  75. $scope.update();
  76. };
  77. $scope.ok = function () {
  78. var pedido = {};
  79. var filtrados = $scope.listaproductos.filter(function(el) { return el.cantidad > 0; });
  80. if (!pedidosService.pedidoValido(filtrados))
  81. return;
  82. pedido.productos = filtrados;
  83. pedido.cliente = $routeParams.hash;
  84. pedido.id = $routeParams.id;
  85. pedido.observaciones = $scope.observaciones;
  86. $http.post('back/pedido', { pedido: pedido } )
  87. .success(function(data, status, headers, config) {
  88. notify({messageTemplate:"<span>Pedido Guardado. <br/> Recuerde <b>confirmarlo</b> una vez que este finalizado.</span>"});
  89. $timeout(function() { $location.url("/"+$routeParams.hash); }, 2000);
  90. })
  91. .error(function(data, status, headers, config) {
  92. notify({classes:"alert alert-danger", message:"Error: "+ data.err});
  93. });
  94. };
  95. $scope.reset();
  96. });