angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', [ '$scope', '$uibModal', '$location', '$filter', 'crearHojaRutaService', 'focaModalService', function($scope, $uibModal, $location, $filter, crearHojaRutaService, focaModalService) { $scope.botonera = [ {texto: 'Transportista', accion: function() {$scope.seleccionarProveedor();}}, {texto: 'Chofer', accion: function() {$scope.seleccionarChofer();}}, {texto: 'Vehiculo', accion: function() {$scope.seleccionarVehiculo();}}, {texto: 'Tarifario', accion: function() {$scope.seleccionarTarifario();}}, {texto: 'Remitos', accion: function() {$scope.seleccionarRemito();}}, {texto: '', accion: function() {}}, {texto: '', accion: function() {}}, {texto: '', accion: function() {}} ]; $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 } }; $scope.cabecera = []; $scope.showCabecera = true; $scope.now = new Date(); $scope.puntoVenta = '0000'; $scope.comprobante = '00000000'; $scope.remitosTabla = []; $scope.idLista = undefined; //La pantalla solo se usa para cargar pedidos //var hojaRutaTemp = crearHojaRutaService.getHojaRuta(); crearHojaRutaService.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); } ); //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) { 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) { 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, idChofer: $scope.hojaRuta.chofer.id, idVehiculo: $scope.hojaRuta.vehiculo.id, tarifaFlete: $scope.hojaRuta.tarifario.costo }, remitos: $scope.remitosTabla }; crearHojaRutaService.crearHojaRuta(save).then( function(data) { focaModalService.alert( 'Hoja ruta creada Nº: ' + $scope.rellenar(data.data.sucursal, 4) + '-' + $scope.rellenar(data.data.numeroHojaRuta, 8) ); $scope.hojaRuta = { fecha: new Date(), litros: 0, chofer: {}, vehiculo: { capacidad: 0 }, transportista: {}, tarifario: { costo: null } }; $scope.remitosTabla = []; $scope.cabecera = []; crearHojaRutaService.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'); console.info(error); } ); }; $scope.seleccionarProveedor = function() { 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) { console.info($scope.hojaRuta); $scope.hojaRuta.transportista.codigo = proveedor.COD; addCabecera('Transportista:', 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; addCabecera('Chofer: ', chofer.nombre); }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $scope.seleccionarVehiculo = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Vehiculo', templateUrl: 'modal-vehiculo.html', controller: 'focaModalVehiculoController', size: 'lg' } ); modalInstance.result.then( function(vehiculo) { $scope.hojaRuta.vehiculo = vehiculo; addCabecera('Tractor: ', vehiculo.tractor); addCabecera('Semi: ', vehiculo.semi); addCabecera('Capacidad: ', vehiculo.capacidad); }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $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; addCabecera('Tarifario: ', tarifario.costo); }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $scope.seleccionarRemito = function() { 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) { 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.remitosTabla.push(remito); }, 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.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.salir = function() { $location.path('/'); }; $scope.parsearATexto = function(articulo) { articulo.cantidad = parseFloat(articulo.cantidad); articulo.precio = parseFloat(articulo.precio); }; $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); } $scope.hojaRuta.litros = litros; }; function addCabecera(label, valor) { var propiedad = $filter('filter')($scope.cabecera, {label: label}, true); if(propiedad.length === 1) { propiedad[0].valor = valor; } else { $scope.cabecera.push({label: label, valor: valor}); } } /*function removeCabecera(label) { var propiedad = $filter('filter')($scope.cabecera, {label: label}, true); if(propiedad.length === 1){ $scope.cabecera.splice($scope.cabecera.indexOf(propiedad[0]), 1); } }*/ } ] ) .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/'); }; } ]);