diff --git a/src/js/controller.js b/src/js/controller.js index feaf234..865d059 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -1,62 +1,103 @@ angular.module('focaCrearCobranza') .controller('cobranzaController', [ - '$scope', - '$rootScope', - '$timeout', - '$uibModal', - '$location', - 'focaCrearCobranzaService', - 'focaModalService', - '$filter', - 'focaSeguimientoService', - 'focaBotoneraLateralService', - 'APP', - 'focaLoginService', + '$scope', '$rootScope', '$timeout', '$uibModal', '$location', + 'focaCrearCobranzaService', 'focaModalService', '$filter', 'focaSeguimientoService', + 'focaBotoneraLateralService', 'APP', 'focaLoginService', function($scope, $rootScope, $timeout, $uibModal, $location, focaCrearCobranzaService, focaModalService, $filter, focaSeguimientoService, focaBotoneraLateralService, APP, loginService) { + config(); - if(APP === 'cobranza') { - var idCobrador = loginService.getLoginData().vendedorCobrador; - $scope.botonera = focaCrearCobranzaService.getBotonera(idCobrador); - focaCrearCobranzaService.getCobradorById(idCobrador).then( + function config() { + $scope.datepickerAbierto = false; + $scope.cobroDeuda = true; + $scope.show = false; + $scope.cargando = true; + $scope.fecha = new Date(); + $scope.puntoVenta = $filter('rellenarDigitos')(0, 4); + $scope.comprobante = $filter('rellenarDigitos')(0, 8); + + $scope.dateOptions = { + maxDate: new Date(), + minDate: new Date(2010, 0, 1) + }; + + var monedaPorDefecto; + //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' + focaCrearCobranzaService.getCotizacionByIdMoneda(1).then(function(res) { + monedaPorDefecto = res.data[0]; + + $scope.cobranza.moneda = monedaPorDefecto; + $scope.inicial.cobranza.moneda = $scope.cobranza.moneda; + + $scope.cobranza.cotizacion = monedaPorDefecto.cotizaciones[0]; + $scope.inicial.cobranza.cotizacion = $scope.cobranza.cotizacion; + }); + + $timeout(function() { + focaBotoneraLateralService.showSalir(false); + focaBotoneraLateralService.showPausar(true); + focaBotoneraLateralService.showGuardar(true, $scope.crearCobranza); + focaBotoneraLateralService.addCustomButton('Salir', salir); + }); + + if (APP === 'cobranza') { + $scope.idCobrador = loginService.getLoginData().vendedorCobrador; + $scope.botonera = focaCrearCobranzaService.getBotonera($scope.idCobrador); + } else { + $scope.botonera = focaCrearCobranzaService.getBotonera(); + } + + init(); + } + + function init() { + $scope.$broadcast('cleanCabecera'); + + $scope.cobranza = {}; + $scope.facturaTabla = []; + $scope.cobrosTabla = []; + + focaCrearCobranzaService.getCobradorById($scope.idCobrador).then( function(res) { var cobrador = res.data; + $scope.$broadcast('addCabecera', { label: 'Cobrador:', valor: $filter('rellenarDigitos')(cobrador.CodVen) + ' - ' + cobrador.NomVen }); + $scope.cobranza.cobrador = cobrador; + $scope.inicial.cobranza.cobrador = $scope.cobranza.cobrador; } ); - }else { - $scope.botonera = focaCrearCobranzaService.getBotonera(); - } - $scope.datepickerAbierto = false; - $scope.cobroDeuda = true; - $scope.show = false; - $scope.cargando = true; - $scope.dateOptions = { - maxDate: new Date(), - minDate: new Date(2010, 0, 1) - }; - $scope.cobranza = {}; - - $scope.fecha = new Date(); - $scope.puntoVenta = '0000'; - $scope.comprobante = '00000000'; - $scope.facturaTabla = []; - $scope.cobrosTabla = []; + $scope.inicial = { + cobranza: angular.copy($scope.cobranza), + facturaTabla: angular.copy($scope.facturaTabla), + cobrosTabla: angular.copy($scope.cobrosTabla) + }; - $timeout(function() { - focaBotoneraLateralService.showSalir(false); - focaBotoneraLateralService.showPausar(true); - focaBotoneraLateralService.showGuardar(true, $scope.crearCobranza); - focaBotoneraLateralService.addCustomButton('Salir', salir); - }); + focaCrearCobranzaService.getNumeroRecibo().then( + function(res) { + $scope.puntoVenta = $filter('rellenarDigitos')( + res.data.sucursal, 4 + ); + + $scope.comprobante = $filter('rellenarDigitos')( + res.data.numeroRecibo, 8 + ); + }, + function(err) { + focaModalService.alert( + 'La terminal no esta configurada correctamente' + ); + console.info(err); + } + ); + } $scope.crearCobranza = function() { if(!$scope.cobranza.cliente) { @@ -76,6 +117,7 @@ angular.module('focaCrearCobranza') .controller('cobranzaController', $scope.cobranza.moneda.SIMBOLO + '0,00'); return; } + var cobranza = {}; var cheques = []; var cuerpos = []; @@ -93,7 +135,7 @@ angular.module('focaCrearCobranza') .controller('cobranzaController', LOP: 'L', TIL: $scope.facturaTabla[i].TCO, COM: $scope.facturaTabla[i].numeroFactura + '-' + - $scope.rellenar($scope.facturaTabla[i].NCU,2), + $filter('rellenarDigitos')($scope.facturaTabla[i].NCU,2), FEC: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '), IMP: Math.abs($scope.facturaTabla[i].IPA), RES: 0,//caja de tesorería @@ -261,17 +303,8 @@ angular.module('focaCrearCobranza') .controller('cobranzaController', result.data, '' ); - //TODO: si esta en mobile no perder el cobrador - $scope.cobranza = { - fecha: new Date() - }; - setearMonedaPorDefecto(); - obtenerNumeroComprobante(); - //TODO: si esta en mobile no perder el cobrador - $scope.$broadcast('cleanCabecera'); - $scope.fecha = new Date(); - $scope.facturaTabla = []; - $scope.cobrosTabla = []; + + init(); }, function(error) { focaModalService.alert('Hubo un problema al cargar la cobranza'); focaBotoneraLateralService.endGuardar(); @@ -604,15 +637,6 @@ angular.module('focaCrearCobranza') .controller('cobranzaController', articulo.precio = parseFloat(articulo.precio); }; - $scope.rellenar = function(relleno, longitud) { - relleno = '' + relleno; - while (relleno.length < longitud) { - relleno = '0' + relleno; - } - - return relleno; - }; - $scope.quitarFactura = function(key) { $scope.facturaTabla.splice(key, 1); }; @@ -621,46 +645,26 @@ angular.module('focaCrearCobranza') .controller('cobranzaController', $scope.cobrosTabla.splice(key, 1); }; - function setearMonedaPorDefecto() { - var monedaPorDefecto; - //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' - focaCrearCobranzaService.getCotizacionByIdMoneda(1).then(function(res) { - monedaPorDefecto = res.data[0]; - $scope.cobranza.moneda = monedaPorDefecto; - $scope.cobranza.cotizacion = monedaPorDefecto.cotizaciones[0]; - }); - } + function salir() { + var confirmacion = false; - function obtenerNumeroComprobante() { - focaCrearCobranzaService.getNumeroRecibo().then( - function(res) { - $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4); - $scope.comprobante = $scope.rellenar(res.data.numeroRecibo, 8); - }, - function(err) { - focaModalService.alert('La terminal no esta configurada correctamente'); - console.info(err); + angular.forEach($scope.inicial, function(valor, key) { + if (!angular.equals($scope[key], $scope.inicial[key])) { + confirmacion = true; } - ); - } + }); - function salir() { - var cobranza = { - moneda: $scope.cobranza.moneda, - cotizacion: $scope.cobranza.cotizacion - }; - if(JSON.stringify($scope.cobranza) !== JSON.stringify(cobranza)) { - focaModalService - .confirm('¿Esta seguro de que desea salir? ' + - 'Se perderán todos los datos cargados.') - .then(function(data) { - if(data) $location.path('/'); - }); - }else { + 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('/'); } } - obtenerNumeroComprobante(); - setearMonedaPorDefecto(); } ]);