پایگاه دانش:
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;
}

 

 

 
 
 

 

(0 رای (ها))
مفید
مفید نیست

سیستم پشتیبانی (تیکتینگ) فراگستر