angular.module('focaModalPuntoDescarga') .controller('focaModalPuntoDescargaController', [ '$timeout', '$filter', '$scope', '$uibModalInstance', 'focaModalPuntoDescargaService', 'filters', function($timeout, $filter, $scope, $uibModalInstance, focaModalPuntoDescargaService, filters) { $scope.cantidadArticulo = 0; $scope.articuloSeleccionado = 0; $scope.ivas = []; $scope.puntosSeleccionados = []; $scope.puntoDescarga = { id: 0, id_cliente: filters.idCliente, id_da_config_0: filters.idDomicilio }; $scope.articulos = angular.copy(filters.articulos); actualizarTabla(); $scope.cancel = function() { if($scope.ingreso){ $scope.ingreso = false; }else { $uibModalInstance.dismiss('cancel'); } }; $scope.aceptar = function() { if($scope.cargaArticulos) { cargarArticulos(); }else { verCargaArticulos(); } }; $scope.guardar = function() { focaModalPuntoDescargaService .guardarPuntoDescarga($scope.puntoDescarga) .then(function() { actualizarTabla(); $scope.ingreso = false; }); }; $scope.editar = function(id) { focaModalPuntoDescargaService.getPuntoDescargaById(id).then(function(res) { $scope.puntoDescarga = res.data; $scope.ingreso = true; }); }; $scope.eliminar = function(idx, id) { focaModalPuntoDescargaService.eliminarPuntoDescarga(id).then(function() { $scope.puntosDescarga.splice(idx, 1); }); }; $scope.seleccionarPunto = function(idx) { $scope.puntosSeleccionados.push(idx); }; $scope.agregarArticulo = function(punto) { var articulo = $scope.articulos[$scope.articuloSeleccionado], cantidadRestante = articulo.cantidad - $scope.cantidadArticulo; if(cantidadRestante < 0) { alert('La cantidad a cargar debe ser menor o igual al restante'); }else if($scope.cantidadArticulo <= 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; } }; $scope.quitarArticulo = function(articulo, idx, punto) { var restante = parseInt($scope.articulos[articulo.index].cantidad); restante += parseInt(articulo.cantidad); $scope.articulos[articulo.index].cantidad = restante; punto.articulosAgregados.splice(idx, 1); }; function actualizarTabla() { focaModalPuntoDescargaService .getPuntosDescargaByClienDom(filters.idDomicilio, filters.idCliente) .then(function(res) { $scope.puntosDescarga = res.data; }); } function verCargaArticulos() { $scope.puntosACargar = []; $scope.cargaArticulos = true; $scope.puntosSeleccionados.forEach(function(idx) { $scope.puntosACargar.push($scope.puntosDescarga[idx]); }); $scope.puntosACargar.map(function(punto) { punto.articulosAgregados = []; }); } function cargarArticulos() { $uibModalInstance.close($scope.puntosACargar); } }] );