controllerCliente.js 7.57 KB
angular.module('focaModalPrecioCondicion')
    .controller('focaModalListaPreciosController',
        [
            '$timeout',
            '$filter',
            '$scope',
            '$uibModal',
            '$uibModalInstance',
            'focaModalService',
            'focaModalPrecioCondicionService',
            'parametros',
            function (
                $timeout, $filter, $scope, $uibModal, $uibModalInstance,
                focaModalService, focaModalPrecioCondicionService, parametros
            ) {
                $scope.openModalListaDePrecios = false;
                $scope.associatedList = true;
                $scope.listaDePreciosAlternativa = null;

                onInit();

                function onInit() {
                    //Metodo para traer la lista de precio asociada al cliente
                    focaModalPrecioCondicionService.getListaPrecio(parametros.idListaPrecio)
                        .then(function (res) {
                            $scope.listaDePreciosAsociada = res.data[0];
                        })
                        .catch(function (e) { console.error(e) });
                }

                //#region Metodos para la lista de precios
                $scope.openListaDePrecios = function () {
                    var datos = null;
                    focaModalPrecioCondicionService.getAllListaPrecio()
                        .then(function (res) {
                            datos = res.data;
                            focaModalService.modal({
                                titulo: 'Lista de precios',
                                data: datos,
                                size: 'md',
                                columnas: [
                                    {
                                        propiedad: 'ID',
                                        nombre: 'Codigo'
                                    },
                                    {
                                        propiedad: 'DES',
                                        NOMBRE: 'Nombre'
                                    }
                                ],
                            }).then(function (res) {
                                $scope.associatedList = false;
                                $scope.listaDePreciosAlternativa = res;
                            }).catch(function (e) {
                                console.error(e);
                            });
                        });
                };
                $scope.selectListaDePrecios = function () {
                    $scope.associatedList = true;
                };
                $scope.verListaProductos = function (id) {
                    $uibModal.open(
                        {
                            ariaLabelledBy: 'Busqueda de Productos',
                            templateUrl: 'modal-busqueda-productos.html',
                            controller: 'modalBusquedaProductosCtrl',
                            resolve: {
                                parametroProducto: {
                                    idLista: parseInt(id),
                                    cotizacion: 1,
                                    simbolo: '$',
                                    soloMostrar: true
                                }
                            },
                            size: 'md'
                        }
                    );
                };
                //#endregion
                $scope.closeModalPrecioCondicion = function () {
                    $uibModalInstance.dismiss('cancel');
                };
                $scope.guardarPrecioCondicion = function () {
                    var mod = $scope.associatedList ? parseInt($scope.listaDePreciosAsociada.ID) : parseInt($scope.listaDePreciosAlternativa.ID);
                    
                    focaModalPrecioCondicionService.actualizarLista(parametros.idCliente, mod).then(function (){
                        var precioCondicion = {
                            listaPrecio: $scope.associatedList ? $scope.listaDePreciosAsociada : $scope.listaDePreciosAlternativa,
                        };
                        $uibModalInstance.close(precioCondicion);
                    });
                };
            }
        ])

        .controller('focaModalListaPlazosController',
        [
            '$timeout',
            '$filter',
            '$scope',
            '$uibModal',
            '$uibModalInstance',
            'focaModalService',
            'focaModalPrecioCondicionService',
            'parametros',
            function (
                $timeout, $filter, $scope, $uibModal, $uibModalInstance,
                focaModalService, focaModalPrecioCondicionService,parametros
            ) {
                $scope.plazos = [
                    {
                        dias: 0,
                        idCliente: parametros.idCliente,
                        activo: true
                    }
                ];

                onInit();

                function onInit() {
                    focaModalPrecioCondicionService.getPlazosByIdCliente(parametros.idCliente)
                        .then(function (res) {
                            res.data.forEach(function (item) {
                                $scope.plazos.push(item);
                            });
                        })
                        .catch(function (e) { console.error(e) });
                }

                //#region Metodos para los plazos
                $scope.addPlazo = function (key) {
                    if (key != 13) return;
                    if ($scope.plazos.length === 100) return;
                    for (var i = 1; i < $scope.plazos.length; i++) {
                        if ($scope.plazos[0].dias == $scope.plazos[i].dias && $scope.plazos[i].activo == true) {
                            focaModalService.alert("Ya existe un plazo con este valor");
                            return;
                        }
                    }
                    $scope.plazos.unshift({ dias: 0, idCliente: parametros.idCliente, activo: true });
                    $scope.focused = 1;
                };
                $scope.deletePlazo = function (index) {
                    $scope.plazos[index].activo = false;
                };
                $scope.validateMinMax = function (plazo, min, max) {
                    plazo.dias = parseInt(plazo.dias);
                    if (plazo.dias === null || plazo.dias === undefined || isNaN(plazo.dias)) {
                        plazo.dias = '0';
                        return;
                    }
                    if (parseInt(plazo.dias) < min) {
                        plazo.dias = '0';
                        return;
                    }
                    if (parseInt(plazo.dias) > max) {
                        plazo.dias = '365';
                        return;
                    }
                };
                //#endregion

                $scope.closeModalPrecioCondicion = function () {
                    $uibModalInstance.dismiss('cancel');
                };
                $scope.guardarPlazos = function () {
                    $scope.plazos.shift();
                    focaModalPrecioCondicionService.createPlazo($scope.plazos)
                        .then(function () {
                            var precioCondicion = {
                                plazoPago: $filter('filter')($scope.plazos, { activo: true }, true)
                            };
                            $uibModalInstance.close(precioCondicion);
                        })
                        .catch(function (e) { console.error(e) })
                };
            }
        ]);