angular.module('focaAdminSeguimiento').directive('osm', function() { return { restrict: 'E', link: function(scope, el, attrs) { var contenedor = document.createElement('div'); el.append(contenedor); scope.map = L.map(contenedor).setView([attrs.latitud, attrs.longitud], attrs.zoom); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(scope.map); }, controller: ['$scope', '$filter', function($scope, $filter) { $scope.markers = []; $scope.$watch('marcadores', function() { for(var i in $scope.markers) { $scope.map.removeLayer($scope.markers[i]); } $scope.markers = []; var observacion = ''; angular.forEach($scope.marcadores, function(marcador) { var icon = new L.Icon({ iconUrl: 'img/marker-icon-2x-blue.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); if ($scope.parametros.actividad === 'Nota de pedido') { observacion = generarObservacion(getNotaPedido(marcador)); } if ($scope.parametros.actividad === 'Cobranza') { observacion = getCobranza(marcador); } if ($scope.parametros.actividad === 'Entrega de producto') { observacion = getEntrega(marcador); if (marcador.hojaRutaMovimiento.remito.rechazado) { icon = new L.Icon({ iconUrl: 'img/marker-icon-2x-yellow.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); } else { icon = new L.Icon({ iconUrl: 'img/marker-icon-2x-green.png', shadowUrl: 'img/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); } } if (marcador.visita) icon.options.iconUrl = 'img/marker-icon-2x-yellow.png'; if (observacion) { $scope.markers.push( L.marker( [marcador.latitud, marcador.longitud], {icon: icon}).addTo($scope.map) .bindPopup(observacion) ); $scope.markers[0].openPopup(); } }); function getNotaPedido(marcador) { var observacion = []; if(marcador.visita) { return getVisita(marcador); } else if(!marcador.notaPedido.id) { return false; } var notaPedido = marcador.notaPedido; if (notaPedido.vendedor) { observacion.push([ 'Vendedor', notaPedido.vendedor.NUM + ' - ' + notaPedido.vendedor.NOM ]); } if (!$scope.parametros.individual) { observacion.push(['Ultima Nota de Pedido', '']); } var textFecha = $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' + marcador.fecha.slice(11,19); observacion.push(['Fecha', textFecha]); observacion.push(['Nº', $filter('comprobante')([notaPedido.sucursal, notaPedido.numeroNotaPedido ]) ]); if (notaPedido.cliente) { observacion.push(['Cliente', notaPedido.cliente.NOM]); } if ($scope.parametros.individual) { observacion.push(['Total', $filter('currency')(notaPedido.total, '$')]); observacion.unshift(['Orden', marcador.orden]); if (marcador.distancia) { observacion.push(['Distancia a casa central', marcador.distancia + 'km' ]); } } else { observacion.push(['Cantidad de nota de pedido', marcador.cantidad ]); observacion.push(['Total Vendido', $filter('currency')(marcador.total, '$') ]); } return observacion; } function getCobranza(marcador) { if(marcador.visita) { return generarObservacion(getVisita(marcador)); } observacion = ''; observacion += 'Cobrador: ' + marcador.recibo.cobrador.NUM + ' - ' + marcador.recibo.CFE + '
'; if (!$scope.parametros.individual) { observacion += 'Ultima Cobranza
'; } observacion += 'Fecha: ' + $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' + marcador.fecha.slice(11,19) + '
'; observacion += 'Nº: ' + $filter('comprobante')([ marcador.recibo.PVE, marcador.recibo.NCO]) + '
'; observacion += 'Cliente: ' + marcador.recibo.cliente.NOM + '
'; var totalCobrado = 0; for (var i = 0; i < marcador.recibo.cuerpos.length; i++) { if (marcador.recibo.cuerpos[i].LOP === 'P') { totalCobrado += marcador.recibo.cuerpos[i].IMP; } } if ($scope.parametros.individual) { if (marcador.distancia) { observacion += 'Distancia a casa central: ' + marcador.distancia + 'km' + '
'; observacion += 'Total Cobrado: ' + $filter('currency')(totalCobrado, '$'); } } else { observacion += 'Cantidad de cobranzas: ' + marcador.cantidad + '
'; observacion += 'Total Cobrado: ' + $filter('currency')(totalCobrado, '$'); } return observacion; } function getEntrega(marcador) { var observacion = ''; var remito = marcador.hojaRutaMovimiento.remito; observacion += 'Vehiculo: ' + remito.hojaRuta.vehiculo.codigo + ' - ' + remito.hojaRuta.vehiculo.tractor + '
'; observacion += 'Transportista: ' + remito.hojaRuta.transportista.NOM + '
'; observacion += 'Chofer: ' + remito.hojaRuta.chofer.nombre + '
'; observacion += 'Hoja de ruta: ' + $filter('comprobante')([ remito.hojaRuta.sucursal, remito.hojaRuta.numeroHojaRuta ]) + '
'; if (!$scope.parametros.individual) { observacion += 'Ultimo Remito
'; } observacion += 'Fecha: ' + $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' + marcador.fecha.slice(11,19) + '
'; observacion += 'Nº: ' + $filter('comprobante')([ remito.sucursal, remito.numeroRemito ]) + '
'; observacion += 'Cliente: ' + remito.cliente.NOM + '
'; if ($scope.parametros.individual) { // observacion += 'Producto: ' + // remito.articulosRemito[0].descripcion + '
'; // observacion += 'Cantidad entregada: ' + // remito.carga + '
'; if (marcador.distancia) { observacion += 'Distancia a casa central: ' + marcador.distancia + 'km
'; } observacion = 'Orden: ' + marcador.orden + '
' + observacion; } else { observacion += 'Cantidad de entregas: ' + marcador.cantidad; } observacion += '
'; if (remito.rechazado) { observacion += 'Motivo del rechazo: ' + remito.motivoRechazo; } return observacion; } function getVisita(marcador) { var observacion = []; var textFecha = $filter('date')(marcador.fecha.slice(0,10), 'dd/MM/yyyy') + ' ' + marcador.fecha.slice(11,19); var prospecto = marcador.visita.cliente.ES_PROS; var tipoVisitante = (marcador.visita.tipoVisitante) === 1 ? 'Vendedor' : 'Cobrador'; var visitante = marcador.visita.visitante.NUM + ' - ' + marcador.visita.visitante.NOM; observacion.push([tipoVisitante, visitante]); observacion.push(['Fecha', textFecha]); observacion.push(['Cliente', marcador.visita.cliente.NOM]); observacion.push(['Es prospecto', (prospecto) ? 'Si' : 'No']); return observacion; } function generarObservacion(array) { var resultado = ''; for (var i = 0; i < array.length; i++) { resultado += '' + array[i][0] + ': '; resultado += array[i][1]; if (i < (array.length - 1)) { resultado += '
'; } } return resultado; } }); $scope.$on('moveMap', function(evt, data) { var center = new L.LatLng(data.latitud, data.longitud); $scope.map.flyTo(center, 11, {duration: 0.5}); $scope.markers[data.indice].openPopup(); }); }], scope: { latitud: '=', longitud: '=', zoom: '=', marcadores: '=', parametros: '=' } }; });