how to convert amount to letters in quotes & invoices

how to convert amount to letters in quotes & invoices

Hello,

it seems impossible to display the total amount of a quote or invoice into letters !

So here you are a script that can do this for FRENCH amount to letters, it supports French /swiss french / belgium french variants.

Hope you can do something to integrate this !

This is a javascript.
********************************************************
/*
'*********** 
' Devise=0   aucune 
'       =1   Euro € 
'       =2   Dollar $ 
' Langue=0   Français 
'       =1   Belgique 
'       =2   Suisse 
'*********** 
' Conversion limitée à 999 999 999 999 999 ou 9 999 999 999 999,99 
' si le nombre contient plus de 2 décimales, il est arrondit à 2 décimales 
*/
function ConvNumberLetter_fr(Nombre, bCheckFloat) {
var strNombre = new String(Nombre) ;
var TabNombre = new Array() ;
var strLetter = new String() ;
if(isNaN(parseFloat(Nombre))) return "";
if(bCheckFloat) {
TabNombre = strNombre.split(".") ;
if(TabNombre.length > 2 || TabNombre.length <= 0) return "" ;
for(var i = 0; i < TabNombre.length; i++) {
if(i == 0) 
strLetter = strLetter + ConvNumberLetter(parseFloat(TabNombre[i]), 1, 0) ;
else
strLetter = strLetter + ConvNumberLetter(parseFloat(TabNombre[i]), 0, 0) ;
}
return strLetter ;
}
else {
strLetter = ConvNumberLetter(Nombre, 1, 0) ;
return strLetter ;
}
}

function ConvNumberLetter(Nombre, Devise, Langue) {
    var dblEnt, byDec ; 
    var bNegatif; 
    var strDev = new String();
var strCentimes = new String();
    
    if( Nombre < 0 ) {
        bNegatif = true;
        Nombre = Math.abs(Nombre);
    }
    dblEnt = parseInt(Nombre) ;
    byDec = parseInt((Nombre - dblEnt) * 100) ;
    if( byDec == 0 ) {
        if (dblEnt > 999999999999999) {
            return "#TropGrand" ;            
        }
}
    else {
        if (dblEnt > 9999999999999.99) {
            return "#TropGrand" ;            
        }    
}
switch(Devise) {
        case 0 :
            if (byDec > 0) strDev = " virgule" ;
break;
        case 1 :
            strDev = " Euro" ;
            if (byDec > 0) strCentimes = strCentimes + " Cents" ;
break;
        case 2 :
            strDev = " Dollar" ;
            if (byDec > 0) strCentimes = strCentimes + " Cent" ;
break;
}
    if (dblEnt > 1 && Devise != 0) strDev = strDev + "s" ;
    
var NumberLetter = ConvNumEnt(parseFloat(dblEnt), Langue) + strDev + " " + ConvNumDizaine(byDec, Langue) + strCentimes ;
return NumberLetter;
}

function ConvNumEnt(Nombre, Langue) {
    var byNum, iTmp, dblReste ;
    var StrTmp = new String();
    var NumEnt ;
    iTmp = Nombre - (parseInt(Nombre / 1000) * 1000) ;
    NumEnt = ConvNumCent(parseInt(iTmp), Langue) ;
    dblReste = parseInt(Nombre / 1000) ;
    iTmp = dblReste - (parseInt(dblReste / 1000) * 1000) ;
    StrTmp = ConvNumCent(parseInt(iTmp), Langue) ;
    switch(iTmp) {
        case 0 :
break;
        case 1 :
            StrTmp = "mille " ; 
break;
        default : 
            StrTmp = StrTmp + " mille " ;
    }
    NumEnt = StrTmp + NumEnt ;
    dblReste = parseInt(dblReste / 1000) ;
    iTmp = dblReste - (parseInt(dblReste / 1000) * 1000) ;
    StrTmp = ConvNumCent(parseInt(iTmp), Langue) ;
    switch(iTmp) {
        case 0 :
break;
        case 1 :
            StrTmp = StrTmp + " million " ;
break;
        default : 
            StrTmp = StrTmp + " millions " ;
    }
    NumEnt = StrTmp + NumEnt ;
    dblReste = parseInt(dblReste / 1000) ;
    iTmp = dblReste - (parseInt(dblReste / 1000) * 1000) ;
    StrTmp = ConvNumCent(parseInt(iTmp), Langue) ;
switch(iTmp) {
        case 0 :
break;
        case 1 :
            StrTmp = StrTmp + " milliard " ;
break;
        default : 
            StrTmp = StrTmp + " milliards " ;
    }
    NumEnt = StrTmp + NumEnt ;
    dblReste = parseInt(dblReste / 1000) ;
    iTmp = dblReste - (parseInt(dblReste / 1000) * 1000) ;
    StrTmp = ConvNumCent(parseInt(iTmp), Langue) ;
    switch(iTmp) {
        case 0 :
break;
        case 1 :
            StrTmp = StrTmp + " billion " ;
break;
        default : 
            StrTmp = StrTmp + " billions " ;
    }
    NumEnt = StrTmp + NumEnt ;
  return NumEnt;    
}

function ConvNumDizaine(Nombre, Langue) {
    var TabUnit, TabDiz ;
    var byUnit, byDiz ;
    var strLiaison = new String() ;
    
    TabUnit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept",
        "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze",
        "seize", "dix-sept", "dix-huit", "dix-neuf") ;
    TabDiz = Array("", "", "vingt", "trente", "quarante", "cinquante",
        "soixante", "soixante", "quatre-vingt", "quatre-vingt") ;
    if (Langue == 1) {
        TabDiz[7] = "septante" ;
        TabDiz[9] = "nonante" ;
}
    else if (Langue == 2) {
        TabDiz[7] = "septante" ;
        TabDiz[8] = "huitante" ;
        TabDiz[9] = "nonante" ;
    }
    byDiz = parseInt(Nombre / 10) ;
    byUnit = Nombre - (byDiz * 10) ;
    strLiaison = "-" ;
    if (byUnit == 1) strLiaison = " et " ;
    switch(byDiz) {
        case 0 :
            strLiaison = "" ;
break;
        case 1 :
            byUnit = byUnit + 10 ;
            strLiaison = "" ;
break;
        case 7 :
            if (Langue == 0) byUnit = byUnit + 10 ;
break;
        case 8 :
            if (Langue != 2) strLiaison = "-" ;
break;
        case 9 :
            if (Langue == 0) {
                byUnit = byUnit + 10 ;
                strLiaison = "-" ;
            }
break;
    }
    var NumDizaine = TabDiz[byDiz] ;
    if (byDiz == 8 && Langue != 2 && byUnit == 0) NumDizaine = NumDizaine + "s" ;
    if (TabUnit[byUnit] != "") {
        NumDizaine = NumDizaine + strLiaison + TabUnit[byUnit] ;
}
    else {
        NumDizaine = NumDizaine ;
    } 
return NumDizaine;
}

function ConvNumCent(Nombre, Langue) {
    var TabUnit ;
    var byCent, byReste ;
    var strReste = new String() ;
    var NumCent;
    TabUnit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept","huit", "neuf", "dix") ;
    
    byCent = parseInt(Nombre / 100) ;
    byReste = Nombre - (byCent * 100) ; 
    strReste = ConvNumDizaine(byReste, Langue) 
    switch(byCent) {
        case 0 :
            NumCent = strReste ;
break;
        case 1 :
            if (byReste == 0)
                NumCent = "cent" ;
            else 
                NumCent = "cent " + strReste ;
            break;
        default :
            if (byReste == 0)
                NumCent = TabUnit[byCent] + " cents" ;
            else 
                NumCent = TabUnit[byCent] + " cent " + strReste ;
}
return NumCent;
}