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; }
| |
|