editPedidoCtrl.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify, $location, $timeout) {
  2. $scope.cero=true;
  3. $scope.total=0;
  4. $scope.observaciones="";
  5. $scope.fecha = new Date();
  6. $scope.modificar = function() {
  7. $scope.cero=true;
  8. }
  9. $scope.confirmar = function() {
  10. var filtrados = $scope.listaproductos.filter(function(el) { return el.cantidad > 0; });
  11. if (filtrados.length==0){
  12. notify({message:"No hay productos",classes:"alert alert-danger"});
  13. return;
  14. }
  15. for(var f in $scope.listaproductos){
  16. var prod = $scope.listaproductos[f];
  17. if(isNaN(prod.cantidad)){
  18. notify({message:prod.nombre+" tiene cantidad incorrecta",classes:"alert alert-danger"});
  19. return;
  20. } else if (prod.cantidad > prod.stock) {
  21. notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock + ")",classes:"alert alert-danger"});
  22. return;
  23. }
  24. }
  25. $scope.cero=false;
  26. };
  27. $scope.update = function() {
  28. $http.get('back/cliente/' + $routeParams.hash).then(function(data) {
  29. $scope.userdata = data.data;
  30. });
  31. $http.get('back/pedido/'+$routeParams.hash+'/'+$routeParams.id).then(
  32. function(data) {
  33. $scope.listaproductos = data.data.productos;
  34. $scope.observaciones = data.data.observaciones || "";
  35. $scope.updateTotal();
  36. },
  37. function(data) {
  38. });
  39. };
  40. $scope.filterCero = function(criteria) {
  41. return function(item) {
  42. if ($scope.cero)
  43. return true;
  44. return item.cantidad > 0;
  45. };
  46. };
  47. $scope.validateKeypress = function(e) {
  48. if ( [46, 8, 9, 27, 13, 37, 39, 116].indexOf(e.keyCode) > -1 )
  49. return;
  50. if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
  51. e.preventDefault();
  52. }
  53. if ( this.p.cantidad >= 10 )
  54. e.preventDefault();
  55. };
  56. $scope.updateTotal = function() {
  57. var total=0;
  58. total=$scope.listaproductos.reduce(
  59. function(acc,cur) {
  60. return acc+(cur.cantidad*cur.precio)
  61. },0);
  62. $scope.total=total;
  63. };
  64. $scope.reset = function() {
  65. $scope.update();
  66. };
  67. $scope.ok = function () {
  68. var pedido = {};
  69. var filtrados = $scope.listaproductos.filter(function(el) { return el.cantidad > 0; });
  70. if (filtrados.length==0){
  71. notify({message:"No hay productos",classes:"alert alert-danger"});
  72. return;
  73. }
  74. for(var f in $scope.listaproductos){
  75. var prod = $scope.listaproductos[f];
  76. if(isNaN(prod.cantidad)){
  77. notify({message:prod.nombre+" tiene cantidad incorrecta",classes:"alert alert-danger"});
  78. return;
  79. } else if (prod.cantidad > prod.stock) {
  80. notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock + ")",classes:"alert alert-danger"});
  81. return;
  82. }
  83. }
  84. pedido.productos = filtrados;
  85. pedido.cliente = $routeParams.hash;
  86. pedido.id = $routeParams.id;
  87. pedido.observaciones = $scope.observaciones;
  88. $http.post('back/pedido', { pedido: pedido } )
  89. .success(function(data, status, headers, config) {
  90. notify("Actualizado correctamente");
  91. $timeout(function() { $location.url("/"+$routeParams.hash) }, 2000);
  92. })
  93. .error(function(data, status, headers, config) {
  94. notify({classes:"alert alert-danger", message:"Error: "+ data.err});
  95. });
  96. };
  97. $scope.reset();
  98. });