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

            $scope.now = new Date();
            $scope.focused = 0;
            $scope.vendedorCobrador = {
                ES_COBRADOR: false,
                DNI: ' ',
                ClaVen: '',
                ComVen: '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.CodVen = res.data.mayor;
                });
            focaAbmVendedorCobradorService
                .getVendedorCobradorById($routeParams.id)
                .then(function(res) {
                    if(res.data){
                        $scope.edicion = true;
                        $scope.vendedorCobrador = res.data;
                        delete $scope.vendedorCobrador.FCVEN;
                        delete $scope.vendedorCobrador.FEC;
                    }
                });

            $scope.guardar = function() {
                validarCodigo()
                    .then(function() {
                        if ($scope.vendedorCobrador.ClaVen !== $scope.vendedorCobrador.ClaVen2) {
                            focaModalService.alert('Las contraseñas deben coincidir');
                                return;
                        }
                        $scope.vendedorCobrador.PciVen = $scope.vendedorCobrador.provincia.ID;
                        $scope.vendedorCobrador.LocVen = $scope.vendedorCobrador.localidad.ID;
        
                        delete $scope.vendedorCobrador.provincia;
                        delete $scope.vendedorCobrador.localidad;
                        delete $scope.vendedorCobrador.ClaVen2;
                        if ($scope.vendedorCobrador.rol == 1) {
                            delete $scope.vendedorCobrador.comisionCobrador;
                        } else if ($scope.vendedorCobrador.rol == 2) {
                            delete $scope.vendedorCobrador.ComVen;
                        }
        
                        return focaAbmVendedorCobradorService
                            .guardarVendedorCobrador($scope.vendedorCobrador)
                            .then(function() {
                                $location.path('/vendedor-cobrador');
                            });
                            
                    })
                    .catch(function() {
                        focaModalService.alert('El codigo del vendedor/cobrador ya existe');
                    });
                    
            };

            $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() {
                $location.path('/vendedor-cobrador');
            };

            $scope.next = function(key) {
                if(key === 13) $scope.focused++;
            };

            function validarCodigo() {
                return new Promise(function(resolve, reject) {
                    if (parseInt($routeParams.id) === 0) {
                        focaAbmVendedorCobradorService
                            .getVendedorCobradorById($scope.vendedorCobrador.CodVen)
                            .then(function(res) {
                                if (res.data) {
                                    reject(res.data);
                                } else {
                                    resolve();
                                }
                            });
                    } else {
                        resolve();
                    }
                });
            };
        }
    ]);