diff --git a/src/js/controller.js b/src/js/controller.js index c3d7d0d..1c4bba1 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -5,35 +5,33 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', '$location', '$filter', '$timeout', - 'crearHojaRutaService', + 'focaCrearHojaRutaService', 'focaModalService', 'focaBotoneraLateralService', function($scope, $uibModal, $location, $filter, $timeout, - crearHojaRutaService, focaModalService, focaBotoneraLateralService) { + focaCrearHojaRutaService, focaModalService, focaBotoneraLateralService) { - $scope.botonera = crearHojaRutaService.getBotonera(); + $scope.botonera = focaCrearHojaRutaService.getBotonera(); $scope.datepickerAbierto = false; $scope.show = false; $scope.cargando = true; - $scope.dateOptions = { - maxDate: new Date(), - minDate: new Date(2010, 0, 1) - }; - - $scope.hojaRuta = { - fecha: new Date(), - litros: 0, - chofer: {}, - vehiculo: { - capacidad: 0 - }, - transportista: {}, - tarifario: { - costo: null - } - }; + 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(); @@ -41,8 +39,6 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', $scope.comprobante = '00000000'; $scope.remitosTabla = []; $scope.idLista = undefined; - //La pantalla solo se usa para cargar pedidos - //var hojaRutaTemp = crearHojaRutaService.getHojaRuta(); //SETEO BOTONERA LATERAL $timeout(function() { @@ -51,7 +47,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', focaBotoneraLateralService.showGuardar(true, $scope.crearHojaRuta); }); - crearHojaRutaService.getNumeroHojaRuta().then( + focaCrearHojaRutaService.getNumeroHojaRuta().then( function(res) { $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4); $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8); @@ -61,95 +57,44 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', console.info(err); } ); - //La pantalla solo se usa para cargar pedidos - // if (hojaRutaTemp !== undefined) { - // hojaRutaTemp.fechaCarga = new Date(hojaRutaTemp.fechaCarga); - // $scope.hojaRuta = hojaRutaTemp; - // $scope.hojaRuta.flete = ($scope.hojaRuta.flete).toString(); - // $scope.hojaRuta.bomba = ($scope.hojaRuta.bomba).toString(); - // $scope.idLista = $scope.hojaRuta.precioCondicion; - // crearHojaRutaService - // .getArticulosByIdHojaRuta($scope.hojaRuta.id).then( - // function(res) { - // $scope.remitosTabla = res.data; - // } - // ); - //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO - //(NO REQUERIDO EN ESTA VERSION) - // crearHojaRutaService.getDomiciliosByIdHojaRuta($scope.hojaRuta.id).then( - // function(res) { - // $scope.hojaRuta.domicilio = res.data; - // } - // ); - // } else { - // $scope.hojaRuta.fechaCarga = new Date(); - // $scope.hojaRuta.bomba = '0'; - // $scope.hojaRuta.flete = '0'; - // $scope.idLista = undefined; - // } - //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO - // $scope.addNewDom = function() { - // $scope.hojaRuta.domicilio.push({ 'id': 0 }); - // }; - // $scope.removeNewChoice = function(choice) { - // if ($scope.hojaRuta.domicilio.length > 1) { - // $scope.hojaRuta.domicilio.splice($scope.hojaRuta.domicilio.findIndex( - // function(c) { - // return c.$$hashKey === choice.$$hashKey; - // } - // ), 1); - // } - // }; - $scope.crearHojaRuta = function() { - if($scope.hojaRuta.litros <= 0) { + 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.codigo) { + } + if(!$scope.hojaRuta.transportista.COD) { focaModalService.alert('Ingrese Transportista'); return; - } - - if($scope.hojaRuta.vehiculo.capacidad < $scope.hojaRuta.litros) { - focaModalService.alert( - 'La capacidad del Vehiculo es menor a lo ingresado en Remitos' - ); - 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() - (date.getTimezoneOffset() * 60000)) - .toISOString().slice(0, 19) .replace('T', ' '), - idTransportista: $scope.hojaRuta.transportista.codigo, + 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 + tarifaFlete: $scope.hojaRuta.tarifario.costo, + fechaReparto: $scope.fechaReparto.toISOString().substring(0, 10), + estado: 0 }, remitos: $scope.remitosTabla }; - crearHojaRutaService.crearHojaRuta(save).then( + focaCrearHojaRutaService.crearHojaRuta(save).then( function(data) { focaModalService.alert( 'Hoja ruta creada Nº: ' + @@ -157,34 +102,23 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', '-' + $scope.rellenar(data.data.numeroHojaRuta, 8) ); - $scope.hojaRuta = { - fecha: new Date(), - litros: 0, - chofer: {}, - vehiculo: { - capacidad: 0 - }, - transportista: {}, - tarifario: { - costo: null - } - }; - + nuevaHojaRuta(); $scope.remitosTabla = []; $scope.$broadcast('cleanCabecera'); - crearHojaRutaService.getNumeroHojaRuta().then(function(res) { + focaCrearHojaRutaService.getNumeroHojaRuta().then(function(res) { $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8); }); }, function(error) { - focaModalService.alert('Hubo un error al crear la nota de pedido'); + 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', @@ -200,8 +134,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', ); modalInstance.result.then( function(proveedor) { - console.info($scope.hojaRuta); - $scope.hojaRuta.transportista.codigo = proveedor.COD; + $scope.hojaRuta.transportista = proveedor; $scope.$broadcast('addCabecera', { label: 'Transportista:', valor: proveedor.NOM @@ -236,37 +169,8 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', }; $scope.seleccionarVehiculo = function() { - var modalInstance = $uibModal.open( - { - ariaLabelledBy: 'Busqueda de Vehiculo', - templateUrl: 'modal-vehiculo.html', - controller: 'focaModalVehiculoController', - size: 'lg', - resolve: { - idTransportista: $scope.hojaRuta.transportista.codigo - } - } - ); - - modalInstance.result.then( - function(vehiculo) { - $scope.hojaRuta.vehiculo = vehiculo; - $scope.$broadcast('addCabecera', { - label: 'Tractor:', - valor: vehiculo.tractor - }); - $scope.$broadcast('addCabecera', { - label: 'Semi:', - valor: vehiculo.semi - }); - $scope.$broadcast('addCabecera', { - label: 'Capacidad:', - valor: vehiculo.capacidad - }); - }, function() { - // funcion ejecutada cuando se cancela el modal - } - ); + if(eligioPreConfirmado()) return; + modalVehiculos(); }; $scope.seleccionarTarifario = function() { @@ -298,6 +202,7 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', }; $scope.seleccionarRemitos = function() { + if(eligioPreConfirmado() || !eligioFecha() || !eligioVehiculo()) return; var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Remito', @@ -309,152 +214,173 @@ angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', ); modalInstance.result.then( function(remito) { - for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) { - if ($scope.remitosTabla[i].id === remito.id) { - focaModalService.alert('Remito ya incluido'); - return; - } - } + // 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); - } + // 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 >= $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' - ); - } + //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.remitosTabla.push(remito); + // 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.getTotal = function() { - var total = 0; - var arrayTempArticulos = $scope.remitosTabla; - for (var i = 0; i < arrayTempArticulos.length; i++) { - total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; - } - return parseFloat(total.toFixed(2)); + $scope.seleccionarVehiculosPrecargados = function() { + if(!eligioFecha()) return; + modalVehiculos(true); }; - $scope.getSubTotal = function() { - if($scope.articuloACargar) { - return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; - } - }; - - $scope.limpiarPantalla = function() { - $scope.limpiarFlete(); - $scope.hojaRuta.flete = '0'; - $scope.hojaRuta.bomba = '0'; - $scope.hojaRuta.precioCondicion = ''; - $scope.remitosTabla = []; - $scope.hojaRuta.vendedor.nombre = ''; - $scope.hojaRuta.cliente = {nombre: ''}; - $scope.hojaRuta.domicilio = {dom: ''}; - $scope.hojaRuta.litros = 0; - $scope.domiciliosCliente = []; - }; - //Recibe aviso si el teclado está en uso - // $rootScope.$on('usarTeclado', function(event, data) { - // if(data) { - // $scope.mostrarTeclado = true; - // return; - // } - // $scope.mostrarTeclado = false; - // }) - $scope.selectFocus = function($event) { - //Si el teclado esta en uso no selecciona el valor - // if($scope.mostrarTeclado) { - // return; - // } - $event.target.select(); + $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.salir = function() { - $location.path('/'); + $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 ; + }); }; - $scope.parsearATexto = function(articulo) { - articulo.cantidad = parseFloat(articulo.cantidad); - articulo.precio = parseFloat(articulo.precio); - }; + 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; }; - $scope.quitarArticulo = function(key) { - $scope.remitosTabla.splice(key, 1); - var litros = 0; - - for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) { - litros += parseFloat($scope.remitosTabla[i].litros); + function eligioPreConfirmado() { + if($scope.eligioPreConfirmado) { + focaModalService.alert('No puede elegir si eligió un vehiculo pre cargado'); + return true; } + return false; + } - $scope.hojaRuta.litros = litros; + 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 + }); + }); + } } - ] -) -.controller('hojaRutaListaCtrl', [ - '$scope', - 'crearHojaRutaService', - '$location', - function($scope, crearHojaRutaService, $location) { - crearHojaRutaService.obtenerHojaRuta().then(function(datos) { - $scope.hojaRutas = datos.data; - }); - $scope.editar = function(hojaRuta) { - crearHojaRutaService.setHojaRuta(hojaRuta); - $location.path('/venta-nota-pedido/abm/'); - }; - $scope.crearPedido = function() { - crearHojaRutaService.clearHojaRuta(); - $location.path('/venta-nota-pedido/abm/'); - }; - } -]) -.controller('focaCrearHojaRutaFichaClienteController', [ - '$scope', - 'crearHojaRutaService', - '$location', - function($scope, crearHojaRutaService, $location) { - crearHojaRutaService.obtenerHojaRuta().then(function(datos) { - $scope.hojaRutas = datos.data; - }); - $scope.editar = function(hojaRuta) { - crearHojaRutaService.setHojaRuta(hojaRuta); - $location.path('/venta-nota-pedido/abm/'); - }; - $scope.crearPedido = function() { - crearHojaRutaService.clearHojaRuta(); - $location.path('/venta-nota-pedido/abm/'); - }; - } -]); + ]); diff --git a/src/js/service.js b/src/js/service.js index cf33066..b76e2d4 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -1,5 +1,5 @@ angular.module('focaCrearHojaRuta') - .service('crearHojaRutaService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { + .service('focaCrearHojaRutaService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { var route = API_ENDPOINT.URL; return { crearHojaRuta: function(hojaRuta) { @@ -55,9 +55,17 @@ angular.module('focaCrearHojaRuta') getNumeroHojaRuta: function() { return $http.get(route + '/hoja-ruta/numero-siguiente'); }, + getRemitosByIdVehiculo: function(idVehiculo, fechaReparto) { + return $http.get(route + '/vehiculo/obtener/remitos/' + + idVehiculo + '/' + fechaReparto.toISOString().substring(0, 10)); + }, getBotonera: function() { return [ { + label: 'Fecha Entrega', + image: 'fechaDeReparto.png' + }, + { label: 'Transportista', image: 'transportista.png' }, @@ -76,6 +84,10 @@ angular.module('focaCrearHojaRuta') { label: 'Remitos', image: 'remito.png' + }, + { + label: 'Vehiculos precargados', + image: 'vehiculos.png' } ]; } diff --git a/src/views/hoja-ruta.html b/src/views/hoja-ruta.html index eb62b5f..663572d 100644 --- a/src/views/hoja-ruta.html +++ b/src/views/hoja-ruta.html @@ -10,7 +10,7 @@
- +
@@ -22,7 +22,6 @@ Remito Cliente Dirección - Cantidad