controller.js 9.59 KB
angular.module('focaCrearNotaPedido')
    .controller('notaPedidoCtrl',
        ['$scope', '$uibModal', '$location', 'crearNotaPedidoService',
            function($scope, $uibModal, $location, crearNotaPedidoService) {
                $scope.show = false;

                $scope.dateOptions = {
                    maxDate: new Date(),
                    minDate: new Date(2010,0,1)
                };

                $scope.notaPedido = {};
                $scope.articulosTabla = [];
                var idLista;
                var notaPedidoTemp = crearNotaPedidoService.getNotaPedido();
                $scope.domiciliosCliente = crearNotaPedidoService.getDomicilios(1);
                crearNotaPedidoService.getPrecioCondicion().then(
                    function(res) {
                        $scope.precioCondiciones = res.data;
                    }
                );
                if (notaPedidoTemp != undefined) {
                    notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga);
                    $scope.notaPedido = notaPedidoTemp;
                    $scope.notaPedido.flete = ($scope.notaPedido.flete).toString();
                    $scope.notaPedido.bomba = ($scope.notaPedido.bomba).toString();
                    idLista = $scope.notaPedido.precioCondicion;
                    crearNotaPedidoService
                        .getArticulosByIdNotaPedido($scope.notaPedido.id).then(
                            function(res) {
                                $scope.articulosTabla = res.data;
                            }
                        );
                    crearNotaPedidoService.getDomiciliosByIdNotaPedido($scope.notaPedido.id).then(
                        function(res) {
                            $scope.notaPedido.domicilio = res.data;
                        }
                    )
                } else {
                    $scope.notaPedido.fechaCarga = new Date();
                    $scope.notaPedido.domicilio = [{ id: 0 }]
                    $scope.notaPedido.bomba = '1';
                    $scope.notaPedido.flete = '1';
                    idLista = undefined;
                }
                $scope.addNewDom = function() {
                    $scope.notaPedido.domicilio.push({ 'id': 0 });
                }
                $scope.removeNewChoice = function(choice) {
                    if ($scope.notaPedido.domicilio.length > 1) {
                        $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex(c => c.$$hashKey == choice.$$hashKey), 1)
                    }
                }
                $scope.crearNotaPedido = function() {
                    var notaPedido = {
                        id: 0,
                        precioCondicion: $scope.notaPedido.precioCondicion,
                        fechaCarga: $scope.notaPedido.fechaCarga,
                        vendedor: $scope.notaPedido.vendedor,
                        cliente: $scope.notaPedido.cliente,
                        producto: $scope.notaPedido.producto,
                        bomba: $scope.notaPedido.bomba,
                        petrolera: $scope.notaPedido.petrolera,
                        domicilio: $scope.notaPedido.domicilio,
                        kilometros: $scope.notaPedido.kilometros,
                        jurisdiccionIIBB: $scope.notaPedido.jurisdiccionIIBB,
                        costoFinanciacion: $scope.notaPedido.costoFinanciacion,
                        flete: $scope.notaPedido.flete,
                        costoUnitarioKmFlete: $scope.notaPedido.costoUnitarioKmFlete,
                        total : $scope.articulosTabla[0].subTotal
                    }
                    crearNotaPedidoService.crearNotaPedido(notaPedido).then(
                        function(res) {
                            alert('Nota pedido creada');
                            $location.path('/venta-nota-pedido');
                        }
                    )
                    var articulosNotaPedido = $scope.articulosTabla;
                    for(var i = 0; i< articulosNotaPedido.length;i++) {
                        crearNotaPedidoService.crearArticulosParaNotaPedido(articulosNotaPedido[i]).then(
                            function(res) {
                                return;
                            }
                        )
                    }
                    
                }
                $scope.siguienteTab = function() {
                    $scope.active = 1;
                }
                $scope.seleccionarArticulo = function() {
                    if (idLista == undefined) {
                        alert('primero seleccione una lista de precio y condicion');
                        return;
                    }
                    var modalInstance = $uibModal.open(
                        {
                            ariaLabelledBy: 'Busqueda de Productos',
                            templateUrl: 'modal-busqueda-productos.html',
                            controller: 'modalBusquedaProductosCtrl',
                            resolve: { idLista: function() { return idLista } },
                            size: 'lg'
                        }
                    )
                    modalInstance.result.then(
                        function(producto) {
                            var newArt =
                            {
                                id: 0,
                                codigo: producto.FiltroSectorCodigo,
                                item: $scope.articulosTabla.length + 1,
                                nombre: producto.descripcion,
                                precio: producto.precio,
                                costoUnitario: producto.costo,
                                cantidad: 1
                            }
                            $scope.articulosTabla.unshift(newArt);
                        }, function() {
                            // funcion ejecutada cuando se cancela el modal
                        }
                    );
                }
                $scope.seleccionarVendedor = function() {
                    var modalInstance = $uibModal.open(
                        {
                            ariaLabelledBy: 'Busqueda de Vendedores',
                            templateUrl: 'modal-vendedores.html',
                            controller: 'modalVendedoresCtrl',
                            size: 'lg'
                        }
                    )
                    modalInstance.result.then(
                        function(vendedor) {
                            $scope.notaPedido.vendedor = vendedor.NomVen;
                        }, function() {

                        }
                    );
                }
                $scope.seleccionarPetrolera = function() {
                    var modalInstance = $uibModal.open(
                        {
                            ariaLabelledBy: 'Busqueda de Petrolera',
                            templateUrl: 'modal-petroleras.html',
                            controller: 'modalPetrolerasCtrl',
                            size: 'lg'
                        }
                    )
                    modalInstance.result.then(
                        function(petrolera) {
                            $scope.notaPedido.petrolera = petrolera.NOM;
                        }, function() {

                        }
                    );
                }
                $scope.seleccionarCliente = function() {
                    var modalInstance = $uibModal.open(
                        {
                            ariaLabelledBy: 'Busqueda de Cliente',
                            templateUrl: 'foca-busqueda-cliente-modal.html',
                            controller: 'focaBusquedaClienteModalController',
                            size: 'lg'
                        }
                    )
                    modalInstance.result.then(
                        function(cliente) {
                            $scope.notaPedido.cliente = cliente.nom;
                        }, function() {

                        }
                    );
                }
                $scope.obtenerDomicilios = function(id) {
                    crearNotaPedidoService.getDomicilios(id).then(
                        function(res) {
                            $scope.notaPedido.domicilio = res.data;
                        }
                    )
                }
                $scope.getSubTotal = function(item) {
                    var subTotal = 0;
                    var array = $scope.articulosTabla.filter(a => a.item <= item);
                    for (var i = 0; i < array.length; i++) {
                        subTotal += array[i].precio * array[i].cantidad
                    }
                    return subTotal.toFixed(2);
                }
                $scope.cargarArticulos = function() {
                    idLista = $scope.notaPedido.precioCondicion;
                    $scope.articulosTabla = [];
                }
            }
        ]
    )
    .controller('notaPedidoListaCtrl', [
        '$scope',
        'crearNotaPedidoService',
        '$location',
        function($scope, crearNotaPedidoService, $location) {
            crearNotaPedidoService.obtenerNotaPedido().then(function(datos) {
                $scope.notaPedidos = datos.data;
            });
            $scope.editar = function(notaPedido) {
                crearNotaPedidoService.setNotaPedido(notaPedido);
                $location.path('/venta-nota-pedido/abm/');
            }
            $scope.crearPedido = function() {
                crearNotaPedidoService.clearNotaPedido();
                $location.path('/venta-nota-pedido/abm/');
            }
        }
    ])