controllerItem.js 8.97 KB
angular.module('focaAbmVendedorCobrador')
    .controller('focaAbmVendedorCobradorController', [
        '$scope', 'focaAbmVendedorCobradorService', '$routeParams', 'focaBotoneraLateralService',
        '$timeout', '$uibModal', '$location', 'focaModalService',
        function($scope, focaAbmVendedorCobradorService, $routeParams, focaBotoneraLateralService,
            $timeout, $uibModal, $location, focaModalService) {

            $scope.guardado = false;
            $scope.now = new Date();
            $scope.focused = 0;
            $scope.vendedorCobrador = {
                dni: ' ',
                CNET: '0',
                CFIN: '0',
                CCOB: '0',
                comisionVendedor: '0.00',
                comisionCobrador: '0.00',
                provincia: {
                    NOMBRE: ''
                },
                localidad: {
                    NOMBRE: ' '
                }
            };
            $scope.options = [
                {
                    label: 'Vendedor',
                    value: 1
                },
                {
                    label: 'Cobrador',
                    value: 2
                },
                {
                    label: 'Vendedor y cobrador',
                    value: 3
                }
            ];
            //SETEO BOTONERA LATERAL
            $timeout(function() {
                focaBotoneraLateralService.showSalir(false);
                focaBotoneraLateralService.showPausar(true);
                focaBotoneraLateralService.showCancelar(false);
                focaBotoneraLateralService.showGuardar(true, $scope.guardar);
                focaBotoneraLateralService.addCustomButton('Salir', $scope.cancelar);
            });
            focaAbmVendedorCobradorService
                .getCodigoSiguiente()
                .then(function(res) {
                    $scope.vendedorCobrador.NUM = res.data.mayor;
                });

            focaAbmVendedorCobradorService
                .getVendedorCobradorById($routeParams.id)
                .then(function(res) {
                    if (res.data) {
                        $scope.edicion = true;
                        $scope.vendedorCobrador = res.data;
                    }
                });

            $scope.guardar = function() {
                if ($scope.guardado) {
                    $scope.cambiarPassword();
                } else {

                    var vendedorCobrador = angular.copy($scope.vendedorCobrador);
    
                    vendedorCobrador.idProvincia = vendedorCobrador.provincia.ID;
                    vendedorCobrador.idLocalidad = vendedorCobrador.localidad.ID;
    
                    delete vendedorCobrador.provincia;
                    delete vendedorCobrador.localidad;
                    if (vendedorCobrador.rol == 1) {
                        delete vendedorCobrador.comisionCobrador;
                    } else if (vendedorCobrador.rol == 2) {
                        delete vendedorCobrador.comisionVendedor;
                    }
                    vendedorCobrador.metodo = ($routeParams.id === '0') ? 'crear' : 'actualizar';
    
                    focaAbmVendedorCobradorService
                        .guardarVendedorCobrador(vendedorCobrador)
                        .then(function(res) {
                            if ($scope.edicion) {
                                $location.path('/vendedor-cobrador');
                            } else {
                                $scope.vendedorCobrador = res.data;
                                $scope.cambiarPassword();
                                $scope.guardado = true;
                            }
                        })
                        .catch(function(err) {
                            if (err.status === 409) {
                                focaModalService.alert(err.data);
                            }
                        });
                }
            };

            $scope.seleccionarProvincia = function(key) {
                if(key === 13) {
                    var parametrosModal = {
                        query: '/provincia',
                        columnas: [
                            {
                                propiedad: 'ID',
                                nombre: 'Codigo',
                                filtro: {
                                    nombre: 'rellenarDigitos',
                                    parametro: 3}
                                },
                            {
                                propiedad: 'NOMBRE',
                                nombre: 'Nombre'
                            }
                        ],
                        titulo:'Búsqueda de provincias',
                        size: 'md'
                    };
                    focaModalService.modal(parametrosModal).then(function(provincia) {
                        $scope.vendedorCobrador.provincia = provincia;
                        $timeout(function() {
                            $scope.focused = 5;
                        });
                    }, function() {
                        //TODO: función llamada cuando cancela el modal
                    });
                }
            };
            $scope.seleccionarLocalidad = function(key) {
                if(!$scope.vendedorCobrador.provincia.ID) {
                    focaModalService.alert('Seleccione una provincia');
                    return;
                }
                if(key === 13) {
                    var parametrosModal = {
                        query: '/localidad/' + $scope.vendedorCobrador.provincia.ID,
                        columnas: [
                            {
                                propiedad: 'ID',
                                nombre: 'Código',
                                filtro: {
                                    nombre: 'rellenarDigitos',
                                    parametro: 3
                                }
                            },
                            {
                                propiedad: 'NOMBRE',
                                nombre: 'Nombre'
                            }
                        ],
                        titulo:'Búsqueda de localidades',
                        size: 'md'
                    };
                    focaModalService.modal(parametrosModal).then(function(localidad) {
                        $scope.vendedorCobrador.localidad = localidad;
                        $timeout(function() {
                            $scope.focused = 6;
                        });
                    }, function() {
                        //TODO: función llamada cuando cancela el modal
                    });
                }
            };

            $scope.cancelar = function() {
                if(!$scope.formVendedorCobrador.$pristine) {

                    focaModalService.confirm('¿Está seguro de que desea salir?' + 
                        'Se perderán todos los datos cargados.')
                        .then(function(confirmed) {
                            if(confirmed && $scope.guardado && !$scope.edicion) {

                                focaAbmVendedorCobradorService
                                    .destroyVendedorCobrador($scope.vendedorCobrador.id)
                                    .then(function() {
                                        $location.path('/vendedor-cobrador');
                                    });
                                    
                            } else if (confirmed) {
                                $location.path('/vendedor-cobrador');
                            }
                        });

                } else {
                    $location.path('/vendedor-cobrador');
                }
            };

            $scope.next = function(key) {
                if(key === 13) $scope.focused++;
            };
            
            $scope.cambiarPassword = function() {
                var vendedorCobrador = angular.copy($scope.vendedorCobrador);
                vendedorCobrador.nombre = vendedorCobrador.NOM;
                vendedorCobrador.codigo = vendedorCobrador.NUM;

                var parametros = {
                    cuenta: vendedorCobrador,
                    tipo: ($scope.vendedorCobrador.rol === 2) ? 'Cobradores' : 'Vendedores',
                    btnAceptar: true
                };

                var modalInstance = $uibModal.open(
                    {
                        ariaLabelledBy: 'Configuracion de Logueo',
                        templateUrl: 'modal-login.html',
                        controller: 'focaModalLoginController',
                        size: 'md',
                        resolve: {
                            parametros: function() {
                                return parametros;
                            }
                        }
                    }
                );

                modalInstance.result.then(function() {
                    if (!$scope.edicion) $location.path('/vendedor-cobrador');
                });

            };
        }
    ]);