diff --git a/src/js/controller.js b/src/js/controller.js index 49e027b..6c4c44b 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -17,78 +17,101 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService, focaBotoneraLateralService, focaModalService, notaPedidoBusinessService, $rootScope, focaSeguimientoService, APP, focaLoginService) - { - if(APP === 'distribuidor') { - var idVendedor = focaLoginService.getLoginData().vendedorCobrador; - $scope.botonera = crearNotaPedidoService.getBotonera(idVendedor); - crearNotaPedidoService.getVendedorById(idVendedor).then( - function(res) { - var vendedor = res.data; - $scope.$broadcast('addCabecera', { - label: 'Vendedor:', - valor: $filter('rellenarDigitos')(vendedor.CodVen, 3) + ' - ' + - vendedor.NomVen - }); - $scope.notaPedido.vendedor = vendedor; - } - ); - }else { - $scope.botonera = crearNotaPedidoService.getBotonera(); + { + config(); + + function config() { + // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA + $scope.isNumber = angular.isNumber; + $scope.datepickerAbierto = false; + $scope.show = false; + $scope.cargando = true; + $scope.now = new Date(); + $scope.puntoVenta = '0000'; + $scope.comprobante = '00000000'; + $scope.dateOptions = { + maxDate: new Date(), + minDate: new Date(2010, 0, 1) + }; + + //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' + var monedaPorDefecto; + crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { + monedaPorDefecto = res.data[0]; + + $scope.notaPedido.moneda = monedaPorDefecto; + $scope.inicial.notaPedido.moneda = $scope.notaPedido.moneda; + + $scope.notaPedido.cotizacion = monedaPorDefecto.cotizaciones[0]; + $scope.inicial.notaPedido.cotizacion = $scope.notaPedido.cotizacion; + }); + + //SETEO BOTONERA LATERAL + $timeout(function() { + focaBotoneraLateralService.showSalir(false); + focaBotoneraLateralService.showPausar(true); + focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido); + focaBotoneraLateralService.addCustomButton('Salir', salir); + }); + + // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR + if (APP === 'distribuidor') { + $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador; + $scope.botonera = crearNotaPedidoService.getBotonera($scope.idVendedor); + } else { + $scope.botonera = crearNotaPedidoService.getBotonera(); + } + + init(); } - $scope.isNumber = angular.isNumber; - $scope.datepickerAbierto = false; - $scope.show = false; - $scope.cargando = true; - $scope.dateOptions = { - maxDate: new Date(), - minDate: new Date(2010, 0, 1) - }; + function init() { + $scope.$broadcast('cleanCabecera'); - $scope.notaPedido = { - id: 0, - vendedor: {}, - cliente: {}, - proveedor: {}, - domicilio: {dom: ''}, - moneda: {}, - cotizacion: {} - }; - var monedaPorDefecto; - //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' - crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { - monedaPorDefecto = res.data[0]; - $scope.notaPedido.moneda = monedaPorDefecto; - $scope.notaPedido.cotizacion = monedaPorDefecto.cotizaciones[0]; - }); + $scope.notaPedido = { + id: 0, + cliente: {}, + proveedor: {}, + domicilio: {dom: ''}, + vendedor: {} + }; + + $scope.articulosTabla = []; + $scope.idLista = undefined; - $scope.cabecera = []; - $scope.showCabecera = true; - - $scope.now = new Date(); - $scope.puntoVenta = '0000'; - $scope.comprobante = '00000000'; - $scope.articulosTabla = []; - $scope.idLista = undefined; - - //SETEO BOTONERA LATERAL - $timeout(function() { - focaBotoneraLateralService.showSalir(false); - focaBotoneraLateralService.showPausar(true); - focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido); - focaBotoneraLateralService.addCustomButton('Salir', salir); - }); + crearNotaPedidoService.getNumeroNotaPedido().then( + function(res) { + $scope.puntoVenta = rellenar(res.data.sucursal, 4); + $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8); + }, + function(err) { + focaModalService.alert('La terminal no esta configurada correctamente'); + console.info(err); + } + ); + + if (APP === 'distribuidor') { + crearNotaPedidoService.getVendedorById($scope.idVendedor).then( + function(res) { + var vendedor = res.data; + $scope.$broadcast('addCabecera', { + label: 'Vendedor:', + valor: $filter('rellenarDigitos')(vendedor.CodVen, 3) + ' - ' + + vendedor.NomVen + }); - crearNotaPedidoService.getNumeroNotaPedido().then( - function(res) { - $scope.puntoVenta = rellenar(res.data.sucursal, 4); - $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8); - }, - function(err) { - focaModalService.alert('La terminal no esta configurada correctamente'); - console.info(err); + $scope.notaPedido.vendedor = vendedor; + $scope.inicial.notaPedido.vendedor =$scope.notaPedido.vendedor; + } + ); } - ); + + $scope.inicial = { + notaPedido: angular.copy($scope.notaPedido), + articulosTabla: angular.copy($scope.articulosTabla), + idLista: angular.copy($scope.idLista) + }; + } $scope.crearNotaPedido = function() { if(!$scope.notaPedido.vendedor.CodVen) { @@ -169,7 +192,8 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', dias: plazo.dias }); }); - if(plazosACrear.length){ + + if (plazosACrear.length) { crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear); } @@ -178,45 +202,9 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', focaBotoneraLateralService.endGuardar(true); $scope.saveLoading = false; - $scope.$broadcast('cleanCabecera'); - $scope.$broadcast('addCabecera', { - label: 'Moneda:', - valor: $scope.notaPedido.moneda.DETALLE - }); - $scope.$broadcast('addCabecera', { - label: 'Fecha cotizacion:', - valor: $filter('date')($scope.notaPedido.cotizacion.FECHA, 'dd/MM/yyyy') - }); - $scope.$broadcast('addCabecera', { - label: 'Moneda:', - valor: $scope.notaPedido.moneda.DETALLE - }); - $scope.$broadcast('addCabecera', { - label: 'Cotizacion:', - valor: $filter('number')($scope.notaPedido.cotizacion.VENDEDOR, '2') - }); - crearNotaPedidoService.getNumeroNotaPedido().then( - function(res) { - $scope.puntoVenta = rellenar(res.data.sucursal, 4); - $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8); - }, - function(err) { - focaModalService.alert( - 'La terminal no esta configurada correctamente'); - console.info(err); - } - ); - $scope.notaPedido.vendedor = {}; - $scope.notaPedido.cliente = {}; - $scope.notaPedido.proveedor = {}; - $scope.notaPedido.domicilio = {}; - $scope.notaPedido.flete = undefined; - $scope.notaPedido.fob = undefined; - $scope.notaPedido.bomba = undefined; - $scope.notaPedido.kilometros = undefined; - $scope.articulosTabla = []; - }, - function(error) { + + init(); + }, function(error) { focaModalService.alert('Hubo un error al crear la nota de pedido'); focaBotoneraLateralService.endGuardar(); $scope.saveLoading = false; @@ -881,6 +869,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', return false; } } + function formatearPuntosDescarga(puntosDescarga) { var result = []; @@ -917,23 +906,24 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', } function salir() { - var notaPedido = { - id: 0, - vendedor: {}, - cliente: {}, - proveedor: {}, - domicilio: {dom: ''}, - moneda: $scope.notaPedido.moneda, - cotizacion: $scope.notaPedido.cotizacion - }; - if(JSON.stringify($scope.notaPedido) !== JSON.stringify(notaPedido)) { - focaModalService - .confirm('¿Esta seguro de que desea salir? ' + - 'Se perderán todos los datos cargados.') - .then(function(data) { - if(data) $location.path('/'); - }); - }else { + var confirmacion = false; + + angular.forEach($scope.inicial, function(valor, key) { + if (!angular.equals($scope[key], $scope.inicial[key])) { + confirmacion = true; + } + }); + + if (confirmacion) { + focaModalService.confirm( + '¿Esta seguro de que desea salir? ' + + 'Se perderán todos los datos cargados.' + ).then(function(data) { + if (data) { + $location.path('/'); + } + }); + } else { $location.path('/'); } } diff --git a/src/views/nota-pedido.html b/src/views/nota-pedido.html index 41d8eca..72500e1 100644 --- a/src/views/nota-pedido.html +++ b/src/views/nota-pedido.html @@ -1,10 +1,10 @@