bedrag = v_BPGSAL# //Vervang BPGSAL door je eigen rubriek met getal of bedrag //function bedrag_naar_woorden(bedrag){ b = parseFloat(bedrag.toString().replace(',','.')); //bedrag //Controle of het een getal is if (isNaN(b)) { return(''); } //Initialisatie s = '-'; //separator eg = s + 'euro'; //eenheid gehele getal eh = s + 'cent'; //eenheid hondersten wg = ['','een','twee','drie','vier','vijf','zes','zeven','acht','negen','tien','elf','twaalf','dertien','veertien']; //getal in woorden wt = ['','tien','twintig','dertig','veertig','vijftig','zestig','zeventig','tachtig','negentig']; //tiental in woorden //Is het nul? if (b === 0) { return('nul' + eg); } //Is het getal negatief? //Variabele t is voor het opbouwen van het getal in woorden if (b < 0) { //Negatieve bedragen t = 'min' + s; //tekst b *= -1; } else { t = ''; } function onw(n) { //omzetten naar woorden //onw(n) alleen aanroepen met positieve gehele getallen (0 of groter) //Als getal tussen 0-14 direct het juiste woord teruggeven if (n < 15) { return(wg[n]); } if (n < 100) { //Als getal tussen 15-99 dan bestaat het uit twee delen: de eenheden en tientallen. Deze apart van elkaar omzetten in woorden. //Tussenvoegsel tussen eenheid en tiental: bij 15-19 en eenheid = 0 geen, 21-99 *en* waarbij de e een trema krijgt bij eenheid twee en drie. r = n % 10; q = wg[r]; if ((n > 20) && (r !== 0)) { q = q + (((r === 2) || (r === 3)) ? 'ën' : 'en'); } return(q + wt[(n - r) / 10]); } if (n < 1e3) { //Maak hier 1e4 van, dan schrijfwijze getallen onder de 10000 als veelvoud van 100 (2700 -> zeventwintighonderd) //Als getal tussen 100-999 dan bestaat het uit twee delen: het honderdtal en de rest. Deze apart van elkaar omzetten in woorden. //Als het honderdtal een(1) is, dan dat niet weergeven. r = parseInt(n / 1e2, 10); //EENhonderd te onderdrukken return(((r === 1) ? '' : onw(r)) + 'honderd' + onw(n % 1e2)); } if (n < 1e6) { //Als getal tussen 1000-999999 dan bestaat het uit twee delen: het duizendtal en de rest. Deze apart van elkaar omzetten in woorden. //Als het duizendtal een(1) is, dan dat niet weergeven. Als de rest nul is, dan geen separator weergeven. r = parseInt(n / 1e3, 10); //EENduizend onderdrukken + duizend + restant maar leeg (ook geen spatie) als restant 0 is. return(((r === 1) ? '' : onw(r)) + 'duizend' + (((n % 1e3) !== 0) ? s + onw(n % 1e3) : '')); } //Als getal tussen 1 miljoen-1 miljard dan bestaat het uit twee delen: het miljoental en de rest. Deze apart van elkaar omzetten in woorden. //Als de rest nul is, dan geen separator weergeven. if (n < 1e9) { return(onw(parseInt(n / 1e6, 10)) + s + 'miljoen' + (((n % 1e6) !== 0) ? s + onw(n % 1e6) : '')); } //Als getal tussen 1 miljard-1 biljard dan bestaat het uit twee delen: het miljardtal en de rest. Deze apart van elkaar omzetten in woorden. //Als de rest nul is, dan geen separator weergeven. if (n < 1e12) { return(onw(parseInt(n / 1e9, 10)) + s + 'miljard' + (((n % 1e9) !== 0) ? s + onw(n % 1e9) : '')); } //Als getal 1 biljoen of hogers is, dan bestaat het uit twee delen: het biljardtal en de rest. Deze apart van elkaar omzetten in woorden. //Als de rest nul is, dan geen separator weergeven. return(onw(parseInt(n / 1e12, 10)) + s + 'biljoen' + (((n % 1e12) !== 0) ? s + onw(n % 1e12) : '')); } g = parseInt(b, 10); //gehele getal (zonder decimalen) h = parseInt(Math.round((parseFloat(b) - parseFloat(g)) * 100), 10); //honderdsten if (g !== 0) { t = t + onw(g) + eg; } if (h !== 0) { t = t + ((g !== 0) ? s + 'en' + s : '') + onw(h) + eh; } return(t);
... Meer weergeven