controller.js 4.27 KB
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);
            }
        }]
    );