Software Lab

SageCRM v7.1 – Abrir archivos PDF ubicados en el server de Sage CRM.

Ene
22

Con esta herramienta podremos disponer en una ventana de Sage CRM de todos los archivos PDF que tengamos en nuestra carpeta personalizada del server. Cada usuario accede a su carpeta de archivos PDF sin salir de Sage CRM.

Funciona en pcs y tablets con conexión a internet.

Ningún otro usuario podrá acceder a nuestra carpeta de archivos PDF porque está restringida la apertura solo a la carpeta asignada a cada usuario.

No es un visor PDF. El visor PDF será el que cada usuario tenga instalado en su dispositivo.

Nuestro sistema es un sistema instalado en el server de Sage CRM, seguro y estable que emplea las credenciales de los usuarios para permitir de forma selectiva la visualización de los informes PDF a los que tiene acceso.

..

Lo tenemos desarrollado y testado.

Si estás interesado, puedes ponerte en contacto con nosotros.

 

SageCRM v7.1 – Rellenar Población y Provincia entrando solo el campo Código Postal.

Ene
22

Una aplicación del artículo precedente en el que utilizamos el ‘Google Maps API Geocode web service’ para traer a la ficha de Direcciones Postales de Sage CRM, en tiempo real, los datos de Población y Provincia entrando el Código Postal.

Empleando este procedimiento no necesitaremos mantener una tabla de códigos postales en nuestro propio sistema.

En este vídeo mostramos el resultado. Como verás una vez introducido el código postal la población y la provincia se rellenan dinámicamente. Tanto en la creación de un nuevo registro como en la modificación de un registro existente.

A continuación el lugar de Sage CRM donde incrustamos la función JavaScript para activar la llamada al WS de Google que nos devuelve en tiempo real la Población y Provincia dinámicamente al entrar el Código Postal…

Sin-título-1

 

 

Sin-título2

La función está operativa solo para códigos postales de España (ES), pero con una pequeña modificación del país en la cadena de la url de llamada al Web Service se puede adaptar para cargar datos postales de otras naciones.

La solución invoca al motor de datos de Google que le pide sean devueltos en formato Json. Hay dos formatos disponibles: XML y JSON. Nosotros para este primer ejemplo hemos resuelto hacerlo con Json.

Código JavaScript de nuestra función:

<script type=»text/javascript»>
function cpostal() {
    (function() {
        var Lib = {
            ajax: {
                xhr: function() {
                    var instance = new XMLHttpRequest();
                    return instance;
                },
                getJSON: function(options, callback) {
                    var xhttp = this.xhr();
                    options.url = options.url || location.href;
                    options.data = options.data || null;
                    callback = callback ||
                    function() {};
                    options.type = options.type || ‘json’;
                    var url = options.url;
                    if (options.type == ‘jsonp’) {
                        window.jsonCallback = callback;
                        var $url = url.replace(‘callback=?’, ‘callback=jsonCallback’);
                        var script = document.createElement(‘script’);
                        script.src = $url;
                        document.body.appendChild(script);
                    }
                    xhttp.open(‘GET’, options.url, true);
                    xhttp.send(options.data);
                    xhttp.onreadystatechange = function() {
                        if (xhttp.status == 200 && xhttp.readyState == 4) {
                            callback(xhttp.responseText);
                        }
                    };
                }
            }
        };
        window.Lib = Lib;
    })()
        var valor =  document.getElementById(‘addr_postcode’).value ;
        Lib.ajax.getJSON({
            url: ‘http://maps.google.com/maps/api/geocode/json?address=’+valor+’&components=country:ES&sensor=false’,
            type: ‘jsonp’
        }, function(jsondata) {
            var info = JSON.parse(jsondata);
            var poblacion = info.results[0].address_components[1].long_name;
            var provincia = info.results[0].address_components[2].long_name;
            EntryForm.addr_city.value = poblacion;
            EntryForm.addr_state.value = provincia;
        });
}
</script>

Una vista en el navegador de una consulta en al Google Maps API Geocode solicitada en JSON y devuelta en tiempo real seleccionando el código postal ‘35001’ de España ‘ES’.

http://maps.googleapis.com/maps/api/geocode/json?address=35001&components=country:ES&sensor=true

Sin-título3

 

Como complemento a la solución anterior acompañamos también el código incluyendo la petición que nos sea devuelta en formato de datos XML:

<script type=»text/JavaScript»>
//xml parse
//API google maps service
//IE,chrome,firefox,safari
//@angel_torre 2014 feb
//input cpostal,request google maps api,retrieve city and state.
function cpostal() {
var valor = document.getElementById(‘addr_postcode’).value;
fichXML = ‘http://maps.google.com/maps/api/geocode/xml?address=’+valor+’&components=country:ES&sensor=false’;
var xhr = new XMLHttpRequest();
xhr.open(‘GET’,fichXML,false);
xhr.onreadystatechange = function() {
if (xhr.readyState==4) {
var xmlDoc = xhr.responseText;
var pos0 = xmlDoc.indexOf(«<long_name>»);
if (pos0!=-1) {
var pos1 = xmlDoc.indexOf(«<long_name>»,pos0+1);
var pos2 = xmlDoc.indexOf(«</long_name>»,pos1+1);
var prim = xmlDoc.slice(pos1+11,pos2);
var pos3 = xmlDoc.indexOf(«<long_name>»,pos2+1);
var pos4 = xmlDoc.indexOf(«</long_name>»,pos3+1);
var segu = xmlDoc.slice(pos3+11,pos4);
document.forms[0].addr_city.value = prim;
EntryForm.addr_city.value = prim;
document.forms[0].addr_state.value = segu;
EntryForm.addr_state.value = segu;
}
}
}
xhr.send(null);
}
</script>

 

Ejemplo de formato de los datos recibidos de Google en XML

 

Captura

 

Espero tus sugerencias y comentarios, siempre bienvenidos.
Gracias por tu atención.

 

Recuperar población y provincia dando el código postal usando google maps api geocode

Ene
21

Presentamos una herramienta desarrollada en código javascript para html5 que realiza el siguiente proceso:

Dando un código postal español válido nos devuelve su población y su provincia.

Para ello hemos utilizado el  ‘Google Maps Api Geocode’. Se trata de un webservice de Google que devuelve todos los datos de una dirección postal en formato de datos XML o JSON estructurado.

Para nuestra herramienta hemos preferido trabajar con el modelo de datos JSON por compatibilidad y facilidad de  integración con código JavaScript.

La documentación de Google sobre este Web Service tan útil se encuentra en https://developers.google.com/maps/documentation/geocoding/?hl=es

Y nuestro código html con los scripts incrustados es:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Recuperar población y provincia dando el código postal usando google maps api, by @angel_torre</title>
</head>
<body>
<script type=»text/javascript»>
function locationvars(){
var src = String( window.location.href ).split(‘=’)[1];
//var vrs = src.split(‘&’);
//var arr = [];
//for (var x = 0, c = vrs.length; x < c; x++)
//{
// arr[x] = vrs[x].split(‘=’)[1];
//};
return src;
}
</script>
<script type=»text/javascript»>
(function() {
var Lib = {
ajax: {
xhr: function() {
var instance = new XMLHttpRequest();
return instance;
},
getJSON: function(options, callback) {
var xhttp = this.xhr();
options.url = options.url || location.href;
options.data = options.data || null;
callback = callback ||
function() {};
options.type = options.type || ‘json’;
var url = options.url;
if (options.type == ‘jsonp’) {
window.jsonCallback = callback;
var $url = url.replace(‘callback=?’, ‘callback=jsonCallback’);
var script = document.createElement(‘script’);
script.src = $url;
document.body.appendChild(script);
}
xhttp.open(‘GET’, options.url, true);
xhttp.send(options.data);
xhttp.onreadystatechange = function() {
if (xhttp.status == 200 && xhttp.readyState == 4) {
callback(xhttp.responseText);
}
};
}
}
};
window.Lib = Lib;
})()
var valor = locationvars() ;
Lib.ajax.getJSON({
url: ‘http://maps.google.com/maps/api/geocode/json?address=’+valor+’&components=country:ES&sensor=false’,
type: ‘jsonp’
}, function(jsondata) {
document.querySelector(‘#codigo’).innerHTML=jsondata;
var info = JSON.parse(jsondata);
//document.querySelector(‘#codigos2’).innerHTML=(info.results.address_components[0].long_name);
var poblacion = info.results[0].address_components[1].long_name;
var provincia = info.results[0].address_components[2].long_name;
document.querySelector(‘#codigo2’).innerHTML = poblacion;
document.querySelector(‘#codigo3’).innerHTML = provincia;
});
</script>
Recuperar población y provincia dando el código postal usando google maps api, by @angel_torre<br><br>
<form name=»entrada» onsubmit=»locationvars()»>
<label>Codigo Postal</label><input type=»text» id=»codposid» name=»codigopostal»><input type=»submit» value=»Ok»><br><br>
</form>
<div id=»codigo2″></div><br>
<div id=»codigo3″></div><br>
<div id=»codigo»></div><br>
</body>
</html>

Confío en que esta herramienta sea útil. Hemos utilizado solo una muy pequeña función de este API, no obstante te animo a que lo utilices a fondo, ya que Google ha realizado una importante labor de documentación que  por no tener coste no deja de tener un gran valor.

Para cualquier comentario o sugerencia, no dudes en contactar.