app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify, $location, $timeout) { $scope.cero=true; $scope.total=0; $scope.modificar = function() { $scope.cero=true; } $scope.confirmar = function() { $scope.cero=false; }; $scope.update = function() { $http.get('back/pedido/'+$routeParams.hash+'/'+$routeParams.id).then( function(data) { $scope.listaproductos = data.data.productos; $scope.updateTotal(); }, function(data) { }); }; $scope.filterCero = function(criteria) { return function(item) { if ($scope.cero) return true; return item.cantidad > 0; }; }; $scope.validateKeypress = function(e) { if ( [46, 8, 9, 27, 13, 37, 39, 116].indexOf(e.keyCode) > -1 ) return; if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { e.preventDefault(); } }; $scope.updateTotal = function() { var total=0; total=$scope.listaproductos.reduce( function(acc,cur) { return acc+(cur.cantidad*cur.precio) },0); $scope.total=total; }; $scope.reset = function() { $scope.update(); }; $scope.ok = function () { var pedido = {}; var filtrados = $scope.listaproductos.filter(function(el) { return el.cantidad > 0; }); if (filtrados.length==0){ notify({message:"No hay productos",classes:"alert alert-danger"}); return; } for(var f in $scope.listaproductos){ var prod = $scope.listaproductos[f]; if(isNaN(prod.cantidad)){ notify({message:prod.nombre+" tiene cantidad incorrecta",classes:"alert alert-danger"}); return; } } pedido.productos = filtrados; pedido.cliente = $routeParams.hash; pedido.id = $routeParams.id; $http.post('back/pedido', { pedido: pedido } ) .success(function(data, status, headers, config) { notify("Actualizado correctamente"); $timeout(function() { $location.url("/"+$routeParams.hash) }, 2000); }) .error(function(data, status, headers, config) { notify({classes:"alert alert-danger", message:"Error: "+ data.err}); }); }; $scope.reset(); });