angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', [ '$scope', '$uibModal', '$location', '$filter', '$timeout', 'focaCrearHojaRutaService', 'focaModalService', 'focaBotoneraLateralService', function($scope, $uibModal, $location, $filter, $timeout, focaCrearHojaRutaService, focaModalService, focaBotoneraLateralService) { $scope.botonera = focaCrearHojaRutaService.getBotonera(); $scope.datepickerAbierto = false; $scope.show = false; $scope.cargando = true; function nuevaHojaRuta() { $scope.hojaRuta = { fecha: new Date(), litros: 0, chofer: {}, vehiculo: { capacidad: 0 }, transportista: {}, tarifario: { costo: null } }; } nuevaHojaRuta(); $scope.showCabecera = true; $scope.now = new Date(); $scope.puntoVenta = '0000'; $scope.comprobante = '00000000'; $scope.remitosTabla = []; $scope.idLista = undefined; //SETEO BOTONERA LATERAL $timeout(function() { focaBotoneraLateralService.showSalir(true); focaBotoneraLateralService.showPausar(true); focaBotoneraLateralService.showGuardar(true, $scope.crearHojaRuta); }); focaCrearHojaRutaService.getNumeroHojaRuta().then( function(res) { $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4); $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8); }, function(err) { focaModalService.alert('La terminal no esta configurada correctamente'); console.info(err); } ); $scope.crearHojaRuta = function() { if(!$scope.remitosTabla.length) { focaModalService.alert('Ingrese Remitos'); return; } if(!$scope.hojaRuta.chofer.id) { focaModalService.alert('Ingrese Chofer'); return; } if(!$scope.hojaRuta.vehiculo.id) { focaModalService.alert('Ingrese Vehiculo'); return; } if(!$scope.hojaRuta.transportista.COD) { focaModalService.alert('Ingrese Transportista'); return; } if(!$scope.hojaRuta.tarifario.costo) { focaModalService.alert('Ingrese Tarifario'); return; } var date = new Date(); var save = { hojaRuta: { id: 0, fechaCreacion: new Date(date.getTime()).toISOString().slice(0, 19) .replace('T', ' '), idTransportista: $scope.hojaRuta.transportista.COD, idChofer: $scope.hojaRuta.chofer.id, idVehiculo: $scope.hojaRuta.vehiculo.id, tarifaFlete: $scope.hojaRuta.tarifario.costo, fechaReparto: $scope.fechaReparto.toISOString().substring(0, 10), estado: 0 }, remitos: $scope.remitosTabla }; focaCrearHojaRutaService.crearHojaRuta(save).then( function(data) { focaModalService.alert( 'Hoja ruta creada Nº: ' + $scope.rellenar(data.data.sucursal, 4) + '-' + $scope.rellenar(data.data.numeroHojaRuta, 8) ); nuevaHojaRuta(); $scope.remitosTabla = []; $scope.$broadcast('cleanCabecera'); focaCrearHojaRutaService.getNumeroHojaRuta().then(function(res) { $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8); }); }, function(error) { focaModalService.alert('Hubo un error al crear la hoja de ruta'); console.info(error); } ); }; $scope.seleccionarTransportista = function() { if(eligioPreConfirmado()) return; var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Transportista', templateUrl: 'modal-proveedor.html', controller: 'focaModalProveedorCtrl', size: 'lg', resolve: { transportista: function() { return true; } } } ); modalInstance.result.then( function(proveedor) { $scope.hojaRuta.transportista = proveedor; $scope.$broadcast('addCabecera', { label: 'Transportista:', valor: proveedor.NOM }); }, function() { } ); }; $scope.seleccionarChofer = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Chofer', templateUrl: 'modal-chofer.html', controller: 'focaModalChoferController', size: 'lg' } ); modalInstance.result.then( function(chofer) { $scope.hojaRuta.chofer = chofer; $scope.$broadcast('addCabecera', { label: 'Chofer:', valor: chofer.nombre }); }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $scope.seleccionarVehiculo = function() { if(eligioPreConfirmado()) return; modalVehiculos(); }; $scope.seleccionarTarifario = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Tarifario', templateUrl: 'modal-tarifa-flete.html', controller: 'focaModalTarifaFleteController', size: 'lg', resolve: { parametrosTarifaFlete: function() { return $scope.hojaRuta.tarifario.costo; } } } ); modalInstance.result.then( function(tarifario) { $scope.hojaRuta.tarifario = tarifario; $scope.$broadcast('addCabecera', { label: 'Tarifario:', valor: tarifario.costo }); }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $scope.seleccionarRemitos = function() { if(eligioPreConfirmado() || !eligioFecha() || !eligioVehiculo()) return; var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Remito', templateUrl: 'foca-modal-remito.html', controller: 'focaModalRemitoController', size: 'lg', resolve: {usadoPor: function() {return 'hojaRuta';}} } ); modalInstance.result.then( function(remito) { // TODO: borrar cuando no se use definitivamente // for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) { // if ($scope.remitosTabla[i].id === remito.id) { // focaModalService.alert('Remito ya incluido'); // return; // } // } // var litros = 0; // for (var j = remito.articulosRemito.length - 1; j >= 0; j--) { // litros = litros + parseFloat(remito.articulosRemito[j].cantidad); // } // if ($scope.hojaRuta.litros >= $scope.hojaRuta.vehiculo.capacidad) { // focaModalService.alert( // 'Debe ingresar toda la información para el transporte' // ); // return; // } //if($scope.hojaRuta.litros + litros >= $scope.hojaRuta.vehiculo.capacidad) // { // var litrostotales = litros; // litros = $scope.hojaRuta.vehiculo.capacidad - $scope.hojaRuta.litros; // focaModalService.alert( // 'La carga excede la capacidad disponible del vehiculo. ' + // 'Excedente no cargado: ' + (litrostotales - litros) + ' litros' // ); // } // remito.litros = litros; // $scope.hojaRuta.litros = $scope.hojaRuta.litros + litros; $scope.cargarCisterna(remito.id).then(function() { $scope.remitosTabla.push(remito); }, function() { // funcion ejecutada cuando se cancela el modal }); }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $scope.seleccionarVehiculosPrecargados = function() { if(!eligioFecha()) return; modalVehiculos(true); }; $scope.cargarCisterna = function(idRemito) { if(!eligioFecha() || !$scope.hojaRuta.vehiculo.id) return; var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Vehiculo', templateUrl: 'foca-detalle-vehiculo.html', controller: 'focaDetalleVehiculo', size: 'lg', resolve: { idVehiculo: function() {return $scope.hojaRuta.vehiculo.id;}, idRemito: function() {return idRemito;}, fechaReparto: function() {return $scope.fechaReparto;} } } ); return modalInstance.result; }; $scope.seleccionarFechaEntrega = function() { if(!$scope.fechaReparto) { elegirFecha(); return; } focaModalService .confirm('Si cambia la fecha se perderán los datos actuales') .then(function() { elegirFecha(); }, function() { return ; }); }; function elegirFecha() { focaModalService.modalFecha('Fecha de entrega').then(function(fecha) { $scope.$broadcast('addCabecera', { label: 'Fecha de entrega:', valor: fecha.toLocaleDateString() }); $scope.fechaReparto = fecha; nuevaHojaRuta(); }); } $scope.rellenar = function(relleno, longitud) { relleno = '' + relleno; while (relleno.length < longitud) { relleno = '0' + relleno; } return relleno; }; function eligioPreConfirmado() { if($scope.eligioPreConfirmado) { focaModalService.alert('No puede elegir si eligió un vehiculo pre cargado'); return true; } return false; } function eligioFecha() { if(!$scope.fechaReparto) { focaModalService.alert('Primero seleccione fecha de reparto'); return false; } return true; } function eligioVehiculo() { if(!$scope.hojaRuta.vehiculo.id) { focaModalService.alert('Primero seleccione vehiculo'); return false; } return true; } function modalVehiculos(preCargados) { var query = ''; var titulo = ''; if(preCargados) { query = '/vehiculo/obtener/pre-confirmados/' + $scope.fechaReparto .toISOString().substring(0, 10); titulo = 'Búsqueda de vehiculos pre confirmados'; }else { query = '/vehiculo'; titulo = 'Búsqueda de vehículos'; } var columnas = { nombre: ['Código', 'tractor', 'Semi'], propiedad: ['codigo', 'tractor', 'semi'] }; focaModalService.modal(columnas, query, titulo).then(function(vehiculo) { $scope.hojaRuta.vehiculo = vehiculo; $scope.hojaRuta.transportista = vehiculo.transportista; if(preCargados) { $scope.eligioPreConfirmado = true; $scope.hojaRuta.vehiculo = vehiculo; $scope.$broadcast('addCabecera', { label: 'Transportista:', valor: vehiculo.transportista.NOM }); focaCrearHojaRutaService .getRemitosByIdVehiculo(vehiculo.id, $scope.fechaReparto) .then(function(res) { $scope.remitosTabla = res.data; }); } $scope.$broadcast('addCabecera', { label: 'Tractor:', valor: vehiculo.tractor }); $scope.$broadcast('addCabecera', { label: 'Semi:', valor: vehiculo.semi }); $scope.$broadcast('addCabecera', { label: 'Capacidad:', valor: vehiculo.capacidad }); }); } } ]);