|
12- تبدیل عدد به حروف در Process Maker
منتشر شده توسط , ویرایش شده توسط: در تاریخ 1398/11/5 شنبه 12:08
|
|
|
نحوه استفاده از یک تابع که عدد را به حرف تبدیل میکند. 1-بعد از ایجاد فرآیند جدید و فرم جدید و قراردادن یک گرید در فرم به کدنویسی در فرم مورد نظر در قسمت جاوا اسکریپت مربوط به فرم ادامه میدهیم. 2-کدهای مورد نظر در مورد اعداد در گرید که معمولا به آنها احتیاج هست عبارتند از :جداسازی عدد بصورت 3 تا 3 تا و همچنین حذف جداسازی که احتیاج هست آن عدد جمع شود و به عدد تبدیل شود و بعد از اینکه به عدد تبدیل شد مجددا به کاراکتر تبدیل شود و عملیات جداسازی آن روی عدد انجام شود.که به ترتیب کدهایی را برای انجام این عملیات به شرح ذیل بررسی میشود. کد مربوط به جداسازی اعداد:
function number_3_3 (num, sep){ var number = typeof num === "number"? num.toString() : num, separator = typeof sep === "undefined"? ',' : sep; return number.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1"+separator);}
این تابع عدد را از ورودی گرفته تبدیل به استرینگ میکند و سپس حرف و را بصورت 3تا3تا برای جداسازی اعدا جایگذاری میکند. تابع جمع کردن در گرید که
function sumGridColumn(gridId, gridFieldId, gridFieldColNo) { var oGrid = $("#"+gridId);
var rowCount = oGrid.getNumberRows();
var sum = 0.00;
var sep=',';
for (var i = 1; i <= rowCount; i++) {
var val = oGrid.getValue(i, gridFieldColNo);
var amt = val.replace(".", ""); //strip out periods
amt = amt.replace(",", ""); //convert comma to period
amt = val.trim() == '' ? 0 : parseFloat(stripNonNumeric(val));
if (isNaN(amt)) {
alert("Bad Number '"+val+"' in row "+i+".");
}
else {
sum += parseFloat(amt);
}
}
sum = roundToFixed(sum, 0);
//set the column's sum at the bottom of the grid:
$('#pc').setValue(wordifyRials(sum));
$("#sum-"+gridId+"-"+gridFieldId).val(number_3_3 (sum, sep));
}
در این قسمت تابع مربوط به تبدیل عدد به حروف را داریم
var NumberToWord = function (num, level) {
'use strict';
function isCorrectNumber(num) {
return /^-?(\d{1,3},?)+(\.?\d+)?$/.test(num);
}
if (num === null) {
return "";
}
level = level || 0;
// remove all non digits from string
if (level===0 && typeof num === "string" && isCorrectNumber(num)) {
num = parseInt(num.replace(/,/g,""));
}
// convert negative number to positive and get wordify value
if (num<0) {
num = num * -1;
return "منفی " + NumberToWord(num, level);
}
if (num === 0) {
if (level === 0) {
return "صفر";
} else {
return "";
}
}
var result = "",
yekan = [" یک ", " دو ", " سه ", " چهار ", " پنج ", " شش ", " هفت ", " هشت ", " نه "],
dahgan = [" بیست ", " سی ", " چهل ", " پنجاه ", " شصت ", " هفتاد ", " هشتاد ", " نود "],
sadgan = [" یکصد ", " دویست ", " سیصد ", " چهارصد ", " پانصد ", " ششصد ", " هفتصد ", " هشتصد ", " نهصد "],
dah = [" ده ", " یازده ", " دوازده ", " سیزده ", " چهارده ", " پانزده ", " شانزده ", " هفده ", " هیجده ", " نوزده "];
if (level > 0) {
result += " و ";
level -= 1;
}
if (num < 10) {
result += yekan[num - 1];
} else if (num < 20) {
result += dah[num - 10];
} else if (num < 100) {
result += dahgan[parseInt(num / 10, 10) - 2] + NumberToWord(num % 10, level + 1);
} else if (num < 1000) {
result += sadgan[parseInt(num / 100, 10) - 1] + NumberToWord(num % 100, level + 1);
} else if (num < 1000000) {
result += NumberToWord(parseInt(num / 1000, 10), level) + " هزار " + NumberToWord(num % 1000, level + 1);
} else if (num < 1000000000) {
result += NumberToWord(parseInt(num / 1000000, 10), level) + " میلیون " + NumberToWord(num % 1000000, level + 1);
} else if (num < 1000000000000) {
result += NumberToWord(parseInt(num / 1000000000, 10), level) + " میلیارد " + NumberToWord(num % 1000000000, level + 1);
} else if (num < 1000000000000000) {
result += NumberToWord(parseInt(num / 1000000000000, 10), level) + " تریلیارد " + NumberToWord(num % 1000000000000, level + 1);
}
return result;
};
var wordifyRials = function (num) {
'use strict';
return NumberToWord(num, 0) + " ریال";
};
var wordifyRialsInTomans = function (num) {
'use strict';
if (num >= 10) {
num = parseInt(num / 10, 10);
} else if (num<=-10) {
num = parseInt(num/10,10);
} else {
num=0;
}
return NumberToWord(num, 0) + " تومان";
};
if (typeof module !== 'undefined' && module.exports) {
module.exports.NumberToWord = NumberToWord;
module.exports.wordifyRials = wordifyRials;
module.exports.wordifyRialsInTomans = wordifyRialsInTomans;
}
| |
|
|
