diff --git a/src/js/controller.js b/src/js/controller.js index ce308f2..7d9d88f 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -19,10 +19,14 @@ angular.module('focaModalPuntoDescarga') id_da_config_0: filters.idDomicilio }; $scope.articulos = angular.copy(filters.articulos); + $scope.articulos.map(function(articulo) { + articulo.restante = articulo.cantidad; + }); actualizarTabla(); + cargarPuntos(filters.puntosDescarga); $scope.cancel = function() { - if($scope.ingreso){ + if($scope.ingreso) { $scope.ingreso = false; }else { $uibModalInstance.dismiss('cancel'); @@ -60,33 +64,56 @@ angular.module('focaModalPuntoDescarga') }; $scope.seleccionarPunto = function(idx) { - $scope.puntosSeleccionados.push(idx); + var indexPunto = $scope.puntosSeleccionados.indexOf(idx); + if(indexPunto !== -1) { + $scope.puntosSeleccionados.splice(indexPunto, 1); + }else { + $scope.puntosSeleccionados.push(idx); + } }; $scope.agregarArticulo = function(punto) { var articulo = $scope.articulos[$scope.articuloSeleccionado], - cantidadRestante = articulo.cantidad - $scope.cantidadArticulo; + cantidadRestante = articulo.restante - punto.cantidadACargar; if(cantidadRestante < 0) { alert('La cantidad a cargar debe ser menor o igual al restante'); - }else if($scope.cantidadArticulo <= 0) { + }else if(punto.cantidadACargar <= 0) { alert('La cantidad a cargar debe ser mayor que cero'); }else { - articulo.cantidad = cantidadRestante; - punto.articulosAgregados.push({ - id: articulo.id, - descripcion: articulo.descripcion, - cantidad: $scope.cantidadArticulo, - index: $scope.articuloSeleccionado - }); - $scope.cantidadArticulo = 0; + punto.cargado += parseInt(punto.cantidadACargar); + articulo.restante = cantidadRestante; + var existeArticulo = punto.articulosAgregados.filter( + function (articuloAAgregar) { + return articuloAAgregar.id === articulo.id; + }); + //Si el articulo ya fue agregado + if(existeArticulo.length) { + //Solo sumo cantidad + var total = parseInt(existeArticulo[0].cantidad) + parseInt(punto.cantidadACargar); + existeArticulo[0].cantidad = total; + }else { + //Agrego el articulo con la cantidad + punto.articulosAgregados.push({ + id: articulo.id, + descripcion: articulo.descripcion, + cantidad: punto.cantidadACargar, + index: $scope.articuloSeleccionado + }); + } + punto.cantidadACargar = 0; } }; $scope.quitarArticulo = function(articulo, idx, punto) { - var restante = parseInt($scope.articulos[articulo.index].cantidad); + var articuloAEliminar = $scope.articulos.filter(function(art) { + return art.id == articulo.id; + }); + var restante = parseInt(articuloAEliminar[0].restante); restante += parseInt(articulo.cantidad); - $scope.articulos[articulo.index].cantidad = restante; + articuloAEliminar[0].restante = restante; + + punto.cargado -= parseInt(punto.articulosAgregados[idx].cantidad); punto.articulosAgregados.splice(idx, 1); }; @@ -106,10 +133,44 @@ angular.module('focaModalPuntoDescarga') $scope.puntosACargar.map(function(punto) { punto.articulosAgregados = []; + punto.cantidadACargar = 0; + punto.cargado = 0; }); } function cargarArticulos() { $uibModalInstance.close($scope.puntosACargar); } + function cargarPuntos(puntosDescarga) { + //Si existen puntos ya cargados + if(puntosDescarga) { + if(!puntosDescarga[0].cargado) { + agregarTotalCargado(puntosDescarga); + } + $scope.puntosACargar = puntosDescarga; + $scope.cargaArticulos = true; + //Recorro los puntos + puntosDescarga.forEach(function(punto) { + //Recorro los articulos cargados en cada punto + punto.articulosAgregados.forEach(function(articulo) { + var articuloARestar = $scope.articulos.filter(function(art) { + return art.id == articulo.id; + }); + articuloARestar[0].restante -= articulo.cantidad; + }); + }); + } + } + function agregarTotalCargado(puntosDescarga){ + puntosDescarga.map(function(punto) { + punto.cantidadACargar = 0; + punto.cargado = 0; + }); + //Agrego cantidad de combustible cargada en los puntos de descarga + puntosDescarga.forEach(function(punto) { + punto.articulosAgregados.forEach(function(articulo) { + punto.cargado += articulo.cantidad; + }); + }); + } }] ); diff --git a/src/views/modal-punto-descarga.html b/src/views/modal-punto-descarga.html index f81bfaf..8b17333 100644 --- a/src/views/modal-punto-descarga.html +++ b/src/views/modal-punto-descarga.html @@ -50,13 +50,15 @@ @@ -88,10 +90,11 @@
+ ng-model="puntoDescarga.descripcion"> +
@@ -101,61 +104,90 @@
-
- - -
-
-
-
- - +
+ + + + + + + + + + + + + + + + + +
ArticuloTotalRestante
+ +
-
-
-
{{punto.descripcion}}
- -
+
+
Puntos de descarga
- + + + + + + + + + +
ArticuloLugarTotal cargado Cantidad
+ + + +
+ + + + + + + + + + +
LugarArticuloCantidad