angular.module('focaAgendarVisita') .controller('focaAgendarVisitaController', [ '$scope', 'focaAgendarVisitaService', '$location','$localStorage', '$timeout', '$uibModal', 'focaBotoneraLateralService', '$filter', 'focaModalService', 'focaSeguimientoService', function($scope, focaAgendarVisitaService, $location, $localStorage, $timeout, $uibModal, focaBotoneraLateralService, $filter, focaModalService, focaSeguimientoService ) { config(); init(); function config(){ $scope.focused = 0; $scope.rol = 1; $scope.visita = {}; $scope.now = new Date(); } function init(){ $scope.botonera = focaAgendarVisitaService.getBotonera(); $timeout(function() { focaBotoneraLateralService.showSalir(false); focaBotoneraLateralService.showPausar(true); focaBotoneraLateralService.showGuardar(true, $scope.guardar); focaBotoneraLateralService.addCustomButton('Salir', salir); }); $timeout(function() {getLSVisita();}); } $scope.seleccionarCliente = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Cliente', templateUrl: 'foca-busqueda-cliente-modal.html', controller: 'focaBusquedaClienteModalController', resolve: { vendedor: function() { return null; } }, size: 'lg' } ); modalInstance.result.then( function(cliente) { $scope.visita.cliente = cliente; $scope.$broadcast('addCabecera', { label: 'Cliente:', valor: $filter('rellenarDigitos')(cliente.cod, 3) + ' - ' + cliente.nom }); } ); }; function setearVisita(visita){ $scope.visita = visita; $scope.$broadcast('addCabecera', { label: 'Cliente:', valor: $filter('rellenarDigitos')(visita.cliente.cod, 3) + ' - ' + visita.cliente.nom }); } function getLSVisita(){ var visita = JSON.parse($localStorage.visita || null); if (visita) { setearVisita(visita); delete $localStorage.visita; } } $scope.seleccionarVisitante = function() { var parametrosModal = { query: '/vendedor-cobrador', columnas: [ { propiedad: 'NUM', nombre: 'Codigo', filtro: { nombre: 'rellenarDigitos', parametro: 3 } }, { propiedad: 'NOM', nombre: 'Nombre' } ], titulo:'Búsqueda de vendedores y cobradores', size: 'md' }; focaModalService.modal(parametrosModal).then(function(vendedorCobrador) { if (vendedorCobrador.rol === 3) { $uibModal.open( { ariaLabelledBy: 'Seleccionar tipo de visita', templateUrl: 'modal-tipo-visita.html', controller: 'focaModalTipoVisita', resolve: {}, size: 'md' } ) .result .then(function(res) { $scope.rol = res; $scope.visita.visitante = vendedorCobrador; $scope.$broadcast('addCabecera', { label: 'Vendedor:', valor: $filter('rellenarDigitos')(vendedorCobrador.NUM, 3) + ' - ' + vendedorCobrador.NOM }); }); } else { $scope.visita.visitante = vendedorCobrador; $scope.$broadcast('addCabecera', { label: 'Vendedor:', valor: $filter('rellenarDigitos')(vendedorCobrador.NUM, 3) + ' - ' + vendedorCobrador.NOM }); } }); }; $scope.seleccionarObservaciones = function() { focaModalService .prompt('Ingrese observaciones', $scope.visita.observacion, true) .then(function(observacion) { $scope.visita.observacion = observacion; }); }; $scope.next = function(key) { if (key === 13) $scope.focused ++; }; $scope.$watch('visita', function(newValue, oldValue){ focaBotoneraLateralService.setPausarData({ label: 'visita', val: newValue }); }); $scope.guardar = function() { var rol; if ($scope.visita.visitante.rol === 1) { rol = 'Nota de pedido'; } else if ($scope.visita.visitante.rol === 2) { rol = 'Cobranza'; } else { rol = ($scope.rol === 1) ? 'Nota de pedido' : 'Cobranza'; } focaAgendarVisitaService .guardarVisita({ idVisitante: $scope.visita.visitante.NUM, idCliente: $scope.visita.cliente.cod }) .then(function(data) { focaSeguimientoService.guardarPosicion( rol, data.data.id, $scope.visita.observacion, data.data.id ); }) .then(function() { $location.path('/'); }); }; function salir() { var confirmar = angular.equals($scope.visita, {}); if (!confirmar) { focaModalService.confirm( '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' ).then(function(data) { if (data) $location.path('/'); }); } else { $location.path('/'); } } } ]) .controller('focaModalTipoVisita', ['$uibModalInstance', '$scope', function($uibModalInstance, $scope) { $scope.cancel = function() { $uibModalInstance.dismiss(); }; $scope.select = function(val) { $uibModalInstance.close(val); }; } ]);