David 9 роки тому
батько
коміт
c887c6e1ae
6 змінених файлів з 67 додано та 151 видалено
  1. 36 2
      app.js
  2. 2 0
      back/db.py
  3. 0 107
      controllers/createPedidoCtrl.js
  4. 24 36
      controllers/editPedidoCtrl.js
  5. 0 1
      index.html
  6. 5 5
      views/createOrEditPedido.html

+ 36 - 2
app.js

@@ -13,13 +13,47 @@ app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $lo
 	})
 	.when('/create/:hash', {
 		templateUrl: 'views/createOrEditPedido.html',
-		controller: 'createPedidoCtrl'
+		controller: 'editPedidoCtrl',
+		resolve: {
+			editing: function() { return false },
+		}
 	})
 	.when('/edit/:hash/:id', {
 		templateUrl: 'views/createOrEditPedido.html',
-		controller: 'editPedidoCtrl'
+		controller: 'editPedidoCtrl',
+		resolve: {
+			editing: function() { return true },
+		}
+
 	})
 	.otherwise({
 		redirectTo: '/'
 	});
 }]);
+
+
+app.factory('pedidosService', function(notify) {
+	return {
+		pedidoValido: function(filtrados) {
+			if (filtrados.length==0){
+				notify({message:"No hay productos",classes:"alert alert-danger"});
+				return false;
+			}
+			/*
+			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 false;
+				} else if (prod.cantidad > prod.stock && prod.cantidad > 0) {
+					notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock  + ")",classes:"alert alert-danger"});
+					return false;
+				}
+			}
+			*/
+
+			return true;
+		},
+
+	};
+});

+ 2 - 0
back/db.py

@@ -29,6 +29,7 @@ class db():
 		cur.execute("SELECT id,nombre,apellido,hash FROM clientes where hash=%s", (_hash,))
 		res = cur.fetchall()
 		cur.close()
+		self.conn.close()
 		if len(res) == 0:
 			return None
 		return res[0]
@@ -63,6 +64,7 @@ class db():
 			ret.append(row)
 
 		cur.close()
+		self.conn.close() #!!!!
 		return ret
 
 	def products(self, _id=None):

+ 0 - 107
controllers/createPedidoCtrl.js

@@ -1,107 +0,0 @@
-app.controller('createPedidoCtrl', function ($scope, $http, $routeParams, notify, $location, $timeout) {
-	$scope.cero=true;
-	$scope.total=0;
-	$scope.observaciones = "-";
-	$scope.fecha = new Date();
-
-	$scope.modificar = function() {
-		$scope.cero=true;
-	}
-	$scope.confirmar = function() {
-		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;
-			} else if (prod.cantidad > prod.stock) {
-				notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock  + ")",classes:"alert alert-danger"});
-				return;
-			}
-		}
-
-		$scope.cero=false;
-	};
-	$scope.update = function() {
-		$http.get('back/cliente/' + $routeParams.hash).then(function(data) {
-	   		$scope.userdata = data.data; 
-		});
-
-		$http.get('back/productos/' + $routeParams.hash).success(function(data) {
-	   		$scope.listaproductos = data; 
-		}).error(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();
-        }
-		if ( this.p.cantidad >= 10 )
-            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;
-			} else if (prod.cantidad > prod.stock) {
-				notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock  + ")",classes:"alert alert-danger"});
-				return;
-			}
-		}
-
-		pedido.productos = filtrados;
-		pedido.cliente = $routeParams.hash;
-		pedido.observaciones = $scope.observaciones;
-
-		$http.post('back/pedido', { pedido: pedido } )
-	        .success(function(data, status, headers, config) {
-				notify("Enviado correctamente. En unos minutos recibiras un e-mail de confirmacion");
-				$timeout(function() { $location.url("/"+$routeParams.hash) }, 2000);
-	        })
-	        .error(function(data, status, headers, config) {
-				notify({classes:"alert alert-danger", message:"Error: "+ data.err});
-	        });
-	};
-
-	$scope.reset();
-
-});
-

+ 24 - 36
controllers/editPedidoCtrl.js

@@ -1,4 +1,4 @@
-app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify, $location, $timeout) {
+app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify, $location, $timeout, editing) {
 	$scope.cero=true;
 	$scope.total=0;
 	$scope.observaciones="";
@@ -10,21 +10,8 @@ app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify,
 
 	$scope.confirmar = function() {
 		var filtrados = $scope.listaproductos.filter(function(el) { return el.cantidad > 0; });
-
-		if (filtrados.length==0){
-			notify({message:"No hay productos",classes:"alert alert-danger"});
+		if (!pedidosService.pedidoValido(filtrados))
 			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;
-			} else if (prod.cantidad > prod.stock) {
-				notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock  + ")",classes:"alert alert-danger"});
-				return;
-			}
-		}
 		$scope.cero=false;
 	};
 
@@ -33,14 +20,26 @@ app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify,
 	   		$scope.userdata = data.data; 
 		});
 
-		$http.get('back/pedido/'+$routeParams.hash+'/'+$routeParams.id).then(
-		function(data) {
-	   		$scope.listaproductos = data.data.productos; 
-			$scope.observaciones = data.data.observaciones || "";
-			$scope.updateTotal();
-		},
-		function(data) {
-		});
+		if (editing) {
+
+			$http.get('back/pedido/'+$routeParams.hash+'/'+$routeParams.id).then(
+			function(data) {
+	   			$scope.listaproductos = data.data.productos; 
+				$scope.observaciones = data.data.observaciones || "";
+				$scope.updateTotal();
+			},
+			function(data) {
+			});
+
+		} else {
+
+			$http.get('back/productos/' + $routeParams.hash).success(function(data) {
+		   		$scope.listaproductos = data; 
+			}).error(function(data) {
+
+			});
+	
+		}
 	};
 
 	$scope.filterCero = function(criteria) {
@@ -74,24 +73,13 @@ app.controller('editPedidoCtrl', function ($scope, $http, $routeParams, notify,
 	$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"});
+		if (!pedidosService.pedidoValido(filtrados))
 			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;
-			} else if (prod.cantidad > prod.stock) {
-				notify({message:"La cantidad pedida de " + prod.nombre+" es mayor al stock actual (" + prod.stock  + ")",classes:"alert alert-danger"});
-				return;
-			}
-		}
 
 		pedido.productos = filtrados;
 		pedido.cliente = $routeParams.hash;

+ 0 - 1
index.html

@@ -16,7 +16,6 @@
 	<script type="text/javascript" src="/app.js"></script>
 	<script type="text/javascript" src="/controllers/errorCtrl.js"></script>
 	<script type="text/javascript" src="/controllers/facturaCtrl.js"></script>
-	<script type="text/javascript" src="/controllers/createPedidoCtrl.js"></script>
 	<script type="text/javascript" src="/controllers/editPedidoCtrl.js"></script>
     <base href="/" />
 </head>

+ 5 - 5
views/createOrEditPedido.html

@@ -23,17 +23,17 @@
 			<th>Precio</th>
 			<th>Total</th>
 		</tr>
-		<tr ng-repeat="p in listaproductos | filter: filtro | filter:filterCero(criteria) track by p.id" ng-class="{'no-disponible': p.disponible==0}">
+		<tr ng-repeat="p in listaproductos | filter: filtro | filter:filterCero(criteria) track by p.id" ng-class="{'no-disponible': false&&p.disponible==0}">
 			<td>
 				<input ng-keydown="validateKeypress($event)" ng-change="updateTotal(this)" type="number" onclick="this.select();" class="form-control" ng-model="p.cantidad" value="0" min="0" max="100" max-length="2" step="1"
-					ng-disabled="!cero || p.disponible==0"
+					ng-disabled="!cero || (p.disponible==0 && false)"
 					style='width:70px;text-align:center;'>
 			</td>
 			<td>{{p.id}}</td>
 			<td>
 				{{p.nombre}}
-				<div class="low" ng-if="p.disponible==0">Este producto no est&aacute; en stock</div>
-				<div class="low" ng-if="p.low==1 && p.disponible==1">Este producto tiene bajo stock, confirmar el pedido</div>
+				<div class="low" ng-if="false && p.disponible==0">Este producto no est&aacute; en stock</div>
+				<div class="low" ng-if="false && p.low==1 && p.disponible==1">Este producto tiene bajo stock, confirmar el pedido</div>
 			</td>
 			<td>${{p.precio}}</td>
 			<td>${{p.cantidad*p.precio}}</td>
@@ -50,7 +50,7 @@
 	<div class="row">
 		<div class="col-md-12">
 			<label>Observaciones:</label>
-			<textarea class="form-control" ng-model="observaciones" multiline="true" style="max-width:100%;max-height:200px;"> </textarea>
+			<textarea class="form-control" ng-model="observaciones" multiline="true" maxlength="80" style="max-width:100%;max-height:200px;"> </textarea>
 		</div>
 	</div>
 	<div class="row">