<p>Cette application est née en 2018 d'une volontée d'auto-héberger une solution de gestion de notes de frais.</p>
<p> </p>
<p>Nous ne souhaitons pas utiliser des logiciels ou applications dont le code source ne peut-être audité.</p>
<p>Nous ne souhaitons pas qu'un hébergeur utilise nos données à notre insu (volontairement ou involontairement), nous souhaitons donc pouvoir regarder également le code source de l'application côté serveur.</p>
<p>Nous souhaitons pouvoir héberger nous-même nos notes de frais (mais ça n'est peut-être pas possible pour tout le monde car pour celà il faut un serveur ou un hébergement et des compétences techniques).</p>
<p>Pour plus de détails, consultez le site internet <ahref="https://doliscan.fr">https://doliscan.fr</a></p>
!function(e,i){if("function"==typeofdefine&&define.amd)define(["exports","jquery"],function(e,r){returni(e,r)});elseif("undefined"!=typeofexports){varr=require("jquery");i(exports,r)}elsei(e,e.jQuery||e.Zepto||e.ender||e.$)}(this,function(e,i){functionr(e,r){functionn(e,i,r){returne[i]=r,e}functiona(e,i){for(varr,a=e.match(t.key);void0!==(r=a.pop());)if(t.push.test(r)){varu=s(e.replace(/\[\]$/,""));i=n([],u,i)}elset.fixed.test(r)?i=n([],r,i):t.named.test(r)&&(i=n({},r,i));returni}functions(e){returnvoid0===h[e]&&(h[e]=0),h[e]++}functionu(e){switch(i('[name="'+e.name+'"]',r).attr("type")){case"checkbox":return"on"===e.value?!0:e.value;default:returne.value}}functionf(i){if(!t.validate.test(i.name))returnthis;varr=a(i.name,u(i));returnl=e.extend(!0,l,r),this}functiond(i){if(!e.isArray(i))thrownewError("formSerializer.addPairs expects an Array");for(varr=0,t=i.length;t>r;r++)this.addPair(i[r]);returnthis}functiono(){returnl}functionc(){returnJSON.stringify(o())}varl={},h={};this.addPair=f,this.addPairs=d,this.serialize=o,this.serializeJSON=c}vart={validate:/^[a-z_][a-z0-9_]*(?:\[(?:\d*|[a-z0-9_]+)\])*$/i,key:/[a-z0-9_]+|(?=\[\])/gi,push:/^$/,fixed:/^\d+$/,named:/^[a-z0-9_]+$/i};returnr.patterns=t,r.serializeObject=function(){returnnewr(i,this).addPairs(this.serializeArray()).serialize()},r.serializeJSON=function(){returnnewr(i,this).addPairs(this.serializeArray()).serializeJSON()},"undefined"!=typeofi.fn&&(i.fn.serializeObject=r.serializeObject,i.fn.serializeJSON=r.serializeJSON),e.FormSerializer=r,r});
@@ -438,7 +438,7 @@ function endSendForm(formdata, filename) {
//On sauvegarde dans la base pour pouvoir faire une synchro plus tard si jamais ca a foiré
//Bien entendu on ne fait pas ça si on est en cours de synchronisation :)
if(globalDB!=null&&globalSyncInProgress==false){
globalDB.executeSql('INSERT INTO ldfsToSync(url,jsonData,localFileName) VALUES (?,?,?);',[localGetData("api_server")+"/api/ldfs",formDataInJSON,filename],
globalDB.executeSql('INSERT INTO ldfsToSync(url,jsonData,localFileName) VALUES (?,?,?);',[localGetData("api_server")+"/api/LdeFrais",formDataInJSON,filename],
function(results){
myDebug(' localStoreData SQL INSERT OK for '+filename);
globalLastInsertId=results.insertId;
...
...
@@ -454,7 +454,7 @@ function endSendForm(formdata, filename) {