<script> function i100() { document.getElementById('mistake').style.display='none'; procent=punk(document.getElementById('ndss').value); iish=document.getElementById('i100').value; ish=punk(iish) // убрали пробелы в сумме, заменили зпт на тчк nds=ish*procent/100 sum=ish+nds document.getElementById('i18').value=okrug(nds) document.getElementById('i118').value=okrug(sum) getnum2str(ish,nds,sum) nds2=punk(document.getElementById('i18').value) ish2=nds2/procent*100 sum2=ish2+nds2 sum3=punk(document.getElementById('i118').value) nds3=sum3/(100+procent)*procent ish3=sum3-nds3 ttitle(ish,ish2,ish3,nds,nds2,nds3,sum,sum2,sum3) if (iish.indexOf('+')!=-1 || iish.indexOf('-')!=-1 || iish.indexOf('/')!=-1 || iish.indexOf('*')!=-1) document.getElementById('i100').title="= "+ish; else document.getElementById('i100').title="" document.getElementById('i18').title="" document.getElementById('i118').title="" } function i18() { document.getElementById('mistake').style.display='none'; procent=punk(document.getElementById('ndss').value); nnds=document.getElementById('i18').value; nds=punk(nnds) ish=nds/procent*100 sum=ish+nds document.getElementById('i100').value=okrug(ish) document.getElementById('i118').value=okrug(sum) getnum2str(ish,nds,sum) ish2=punk(document.getElementById('i100').value) nds2=ish2*procent/100 sum2=ish2+nds2 sum3=punk(document.getElementById('i118').value) nds3=sum3/(100+procent)*procent ish3=sum3-nds3 ttitle(ish,ish2,ish3,nds,nds2,nds3,sum,sum2,sum3) if (nnds.indexOf('+')!=-1 || nnds.indexOf('-')!=-1 || nnds.indexOf('/')!=-1 || nnds.indexOf('*')!=-1) document.getElementById('i18').title="= "+nds; else document.getElementById('i18').title="" document.getElementById('i100').title="" document.getElementById('i118').title="" } function i118() { document.getElementById('mistake').style.display='none'; procent=punk(document.getElementById('ndss').value); ssum=document.getElementById('i118').value; sum=punk(ssum) nds=sum/(100+procent)*procent ish=sum-nds document.getElementById('i100').value=okrug(ish) document.getElementById('i18').value=okrug(nds) getnum2str(ish,nds,sum) nds2=punk(document.getElementById('i18').value) ish2=nds2/procent*100 sum2=ish2+nds2 ish3=punk(document.getElementById('i100').value) nds3=ish3*procent/100 sum3=ish3+nds3 ttitle(ish,ish2,ish3,nds,nds2,nds3,sum,sum2,sum3) if (ssum.indexOf('+')!=-1 || ssum.indexOf('-')!=-1 || ssum.indexOf('/')!=-1 || ssum.indexOf('*')!=-1) document.getElementById('i118').title="= "+sum; else document.getElementById('i118').title="" document.getElementById('i100').title="" document.getElementById('i18').title="" } function punk (dosum) { um=""; lastletter=dosum.charAt(dosum.length-1); skoba1=skoba2=0; for (i=0; i<=dosum.length; i++) { // удаляем пробелы в сумме, заменяем зпт на тчк a=dosum.charAt(i); if (a==" ") um+=""; else if (a==",") um+="."; else if (calcul!=0) um+=a if (a=="(") skoba1++; // определяем, сколько открытых и закрытых скоб else if (a==")") skoba2++ } if (dosum.charAt(dosum.length)=="+") um+=0; if (um=="") um=0 if (calcul==0) um=" " // ставим пробел, чтобы не обрезал последнее число if (/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]/.test(um) ) { var reg=/\D*(\d+)\D+(\d*)\D*/ // игнорируем руб., коп. и т.п. var abc=reg.exec(um) if (abc[2]!="") um=abc[1]+"."+abc[2]; else um=abc[1] } if (lastletter=="+" || lastletter=="-") um+="0"; else if (lastletter=="*" || lastletter=="/") um+="1"; if (skoba1>skoba2) { for (i=0;i<(skoba1-skoba2);i++) {um+=")"} } if (skoba1<skoba2) { for (i=0;i<(skoba2-skoba1);i++) {um="("+um} } for (i=0; i<=dosum.length; i++) { a=dosum.charAt(i); if (a=="(") skoba1++; // определяем, сколько открытых и закрытых скоб еще раз else if (a==")") skoba2++ } if (um.length==(skoba1+skoba2)) um=0 if (um=="()") um=0 check=false; return eval(um); } function ttitle(ish,ish2,ish3,nds,nds2,nds3,sum,sum2,sum3) { if (okrug(ish)!=okrug(ish2) || okrug(ish)!=okrug(ish3) || okrug(ish2)!=okrug(ish3)) document.getElementById('mistake').style.display='block'; if (okrug(nds)!=okrug(nds2) || okrug(nds)!=okrug(nds3) || okrug(nds2)!=okrug(nds3)) document.getElementById('mistake').style.display='block'; if (okrug(sum)!=okrug(sum2) || okrug(sum)!=okrug(sum3) || okrug(sum2)!=okrug(sum3)) document.getElementById('mistake').style.display='block'; } function okrug(dosum) { mult=Math.pow(10,2); dosum=''+Math.round(dosum*mult)/mult // dosum=Math.round(dosum*mult)/mult - теперь еще из заменяем тчк на зпт return dosum.replace(/\./g,',') // return dosum } function getnum2str(ish,nds,sum) { document.getElementById('p100').value=num2str(""+ish) // num2str(""+okrug(ish)) document.getElementById('p18').value=num2str(""+nds) document.getElementById('p118').value=num2str(""+sum) } function cclean() { document.getElementById('i100').value=document.getElementById('i18').value=document.getElementById('i118').value=''; document.getElementById('ndss').value=18; document.getElementById('mistake').style.display='none'; document.getElementById('p100').value='<-- для начисления НДС'; document.getElementById('p18').value=''; document.getElementById('p118').value='<-- для выделения НДС'; document.getElementById('i100').focus(); } //------- сумма прописью var money; var price; var rub, kop; var litera = sotny = desatky = edinicy = minus = ""; var k = 0, i, j; N = ["", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", "", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать", "", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто", "", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот", "тысяч", "тысяча", "тысячи", "тысячи", "тысячи", "тысяч", "тысяч", "тысяч", "тысяч", "тысяч", "миллионов","миллион","миллиона","миллиона", "миллиона", "миллионов", "миллионов", "миллионов", "миллионов", "миллионов", "миллиардов", "миллиард", "миллиарда", "миллиарда", "миллиарда", "миллиардов", "миллиардов", "миллиардов", "миллиардов", "миллиардов"]; var M = new Array(10); for (j = 0; j < 10; ++j) M[j] = new Array(N.length); for (i = 0; i < N.length; i++) for (j = 0; j < 10; j++) M[j][i] = N[k++] var R = new Array("рублей", "рубль", "рубля", "рубля", "рубля", "рублей", "рублей", "рублей", "рублей", "рублей"); var K = new Array("копеек", "копейка", "копейки", "копейки", "копейки", "копеек", "копеек", "копеек", "копеек", "копеек"); //var K = new Array("коп.","коп.","коп.","коп.","коп.","коп.","коп.","коп.","коп.","коп."); function num2str(money) { rub = "", kop = ""; // money = money.replace(",", "."); if(isNaN(money)) {return "Не числовое значение"; return} if(money.substr(0, 1) == "-") {money = money.substr(1); minus = "минус "} else minus = ""; money = Math.round(money * 100) / 100 + ""; if(money.indexOf(".") != -1) { rub = money.substr(0, money.indexOf(".")); kop = money.substr(money.indexOf(".") + 1); if(kop.length == 1) kop += "0"; } else rub = money; if(rub.length > 12) {return "Слишком большое число"; return} ru = propis(price = rub, R); ko = propis(price = kop, K); //ko=kop ko != "" ? res = ru + " " + ko: res = ru; ru == "Ноль " + R[0] && ko != ""? res = ko: 0; kop == 0? res += " ноль " + K[0]: 0; //kop == 0? res += " 00": 0; return((minus + res).substr(0,1).toUpperCase() + (minus + res).substr(1)); //+" коп." } function propis(price, D) { litera = ""; for(i = 0; i < price.length; i += 3) { sotny = desatky = edinicy = ""; if(n(i + 2, 2) > 10 && n(i + 2, 2) < 20) { edinicy = " " + M[n(i + 1, 1)][1] + " " + M[0][i / 3 + 3]; i == 0? edinicy += D[0]: 0; } else { edinicy = M[n(i + 1, 1)][0]; (edinicy == "один" && (i == 3 || D == K))? edinicy = "одна": 0; (edinicy == "два" && (i == 3 || D == K))? edinicy = "две" : 0; i == 0 && edinicy != ""? 0: edinicy += " " + M[n(i + 1, 1)][i / 3 + 3]; edinicy == " "? edinicy = "": (edinicy == " " + M[n(i + 1, 1)][i / 3 + 3])? 0: edinicy = " " + edinicy; i == 0? edinicy += " " + D[n(i + 1, 1)]: 0; (desatky = M[n(i + 2, 1)][2]) != ""? desatky = " " + desatky: 0; } (sotny = M[n(i + 3, 1)][3]) != ""? sotny = " " + sotny: 0; if(price.substr(price.length - i - 3, 3) == "000" && edinicy == " " + M[0][i / 3 + 3]) edinicy = ""; litera = sotny + desatky + edinicy + litera; } if(litera == " " + R[0]) return "ноль" + litera; else return litera.substr(1); } function n(start,len) { if(start > price.length) return 0; else return Number(price.substr(price.length - start, len)); } </script>
|