الانتقال إلى المحتوى

مساعده في البوبيلدر:عمل اسكربيت تفقيط و تحويل الارقام الي كتابه


ahmed zaky

Recommended Posts

مساعده في البوبيلدر كنت عايز حد يساعدني في عمل اسكربيت تفقيط و تحويل الارقام الي كتابه ضروري يا شباب بعد ازنكم بجد الموضوع تعبني جامد و شكرآ جزيلاً

رابط هذا التعليق
شارك

بصراحة مش فاهم اه هوا البوبيلدر لكن لو محتاج ملف التحويل بالجافا  او procedure ف الداتا بيز ؟ 
الصراحة مش عارف ازاي ارفع الملفين لكن هضعهم أكواد

رابط هذا التعليق
شارك


package test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class ArabicLiteralNumberParser {
    private static final String ZERO = "صفر";
    private static final String ONE = "واحد";
    private static final String TWO = "إثنان";
    private static final String THREE = "ثلاثة";
    private static final String FOUR = "أربعة";
    private static final String FIVE = "خمسة";
    private static final String SIX = "ستة";
    private static final String SEVEN = "سبعة";
    private static final String EIGHT = "ثمانية";
    private static final String NINE = "تسعة";
    private static final String TEN = "عشرة";
    private static final String TWENTY = "عشرون";
    private static final String THIRTY = "ثلاثون";
    private static final String FOURTY = "أربعون";
    private static final String FIFTY = "خمسون";
    private static final String SIXTY = "ستون";
    private static final String SEVENTY = "سبعون";
    private static final String EIGHTY = "ثمانون";
    private static final String NINETY = "تسعون";
    private static final String HUNDRED = "مائة";
    private static final String THOUSAND = "الف";
    private static final String MILLION = "مليون";
    private static final String MILLIARD = "مليار";
    private static final String BILLION = "بليون";
    private static final String BILLIARD = "بليار";
    private static final String TRILLION = "تريليون";
    private static final Map<Long, String> namesMap;

    static {
        namesMap = new HashMap<Long, String>();
        namesMap.put(0l, ZERO);
        namesMap.put(1l, ONE);
        namesMap.put(2l, TWO);
        namesMap.put(3l, THREE);
        namesMap.put(4l, FOUR);
        namesMap.put(5l, FIVE);
        namesMap.put(6l, SIX);
        namesMap.put(7l, SEVEN);
        namesMap.put(8l, EIGHT);
        namesMap.put(9l, NINE);
        namesMap.put(10l, TEN);
        namesMap.put(20l, TWENTY);
        namesMap.put(30l, THIRTY);
        namesMap.put(40l, FOURTY);
        namesMap.put(50l, FIFTY);
        namesMap.put(60l, SIXTY);
        namesMap.put(70l, SEVENTY);
        namesMap.put(80l, EIGHTY);
        namesMap.put(90l, NINETY);
        namesMap.put(100l, HUNDRED);
        namesMap.put(1000l, THOUSAND);
        namesMap.put(1000000l, MILLION);
        namesMap.put(1000000000l, MILLIARD);
        namesMap.put(1000000000000l, BILLION);
        namesMap.put(1000000000000000l, BILLIARD);
        namesMap.put(1000000000000000000l, TRILLION);
    }
    private static String parse(long a) {
        StringBuffer buf = new StringBuffer(Long.valueOf(a).toString());
        buf.reverse();
        int index = 0;
        boolean negative;
        int len = (negative = buf.charAt(buf.length() - 1) == '-') ? buf.length() - 1 : buf.length();
        String[] name = new String[len];
        long unitValue = 0;
        while (index < len) {
            Long n = Long.valueOf(String.valueOf(buf.charAt(index)));
            int decimalPos = index % 3;
            if (decimalPos == 0) {
                unitValue = (Double.valueOf(Math.pow(10, index)).longValue());
            }
            int decimalPlace = (Double.valueOf(Math.pow(10, decimalPos)).intValue());
            switch (decimalPlace) {
                case 1:
                    if (unitValue > 1l && index + 1 == len) {
                        switch (n.intValue()) {
                            case 1:
                                name[index] = namesMap.get(unitValue);
                                break;
                            case 2:
                                name[index] = namesMap.get(unitValue).concat("ان");
                                break;
                            default:
                                if (unitValue == 1000l) {
                                    name[index] = namesMap.get(n) + " " + "الاف";
                                } else if (unitValue == 1000000l) {
                                    name[index] = namesMap.get(n) + " " + "ملايين";
                                } else {
                                    name[index] = namesMap.get(n) + " " + namesMap.get(unitValue) + "ات";
                                }
                        }
                    } else {
                        name[index] = namesMap.get(n);
                    }
                    break;
                case 10:
                    String tmp = name[index - 1];
                    if (n == 1l) {
                        if (tmp.equals(ONE)) {
                            tmp = tmp.substring(1, tmp.length());
                        } else if (tmp.equals(TWO)) {
                            tmp = tmp.substring(0, tmp.length() - 1);
                        }
                    }
                    if (unitValue > 1l && index + 1 == len) {
                        if (n == 1 && tmp.equals(ZERO)) {
                            if (unitValue == 1000l) {
                                name[index] = TEN + "الاف ";
                            } else if (unitValue == 1000000l) {
                                name[index] = TEN + "ملايين ";
                            } else {
                                name[index] = TEN + " " + namesMap.get(unitValue) + "ات";
                            }
                        } else {
                            name[index] = namesMap.get(n * 10l) + " " + namesMap.get(unitValue);
                        }
                    } else {
                        name[index] = namesMap.get(n * 10l);
                    }
                    if (n != 0l) {
                        name[index - 1] = name[index];
                        name[index] = tmp;
                    }
                    break;
                case 100:
                    String s;
                    if (n > 2) {
                        s = namesMap.get(n);
                        s = s.substring(0, s.length() - (n == 8 ? 2 : 1)) + HUNDRED;
                    } else {
                        s = n == 2 ? "مائتان" : namesMap.get(n * 100);
                    }
                    if (unitValue > 1l && !name[index - 2].equals(ZERO)) {
                        Iterator i = namesMap.keySet().iterator();
                        while (i.hasNext()) {
                            Long val = (Long) i.next();
                            if (namesMap.get(val).equals(name[index - 2])) {
                                if (val > 2l && val <= 10l) {
                                    if (unitValue == 1000l) {
                                        name[index - 2] = name[index - 2] + " " + "الاف";
                                    } else if (unitValue == 1000000l) {
                                        name[index - 2] = name[index - 2] + " " + "ملايين";
                                    } else {
                                        name[index - 2] = name[index - 2] + " " + namesMap.get(unitValue) + "ات";
                                    }
                                } else {
                                    name[index - 2] = name[index - 2] + " " + namesMap.get(unitValue);
                                }
                                break;
                            }
                        }
                    } else if (unitValue > 1l && n != 0) {
                        s = s + " " + namesMap.get(unitValue);
                    }
                    name[index] = s;
            }
            index++;
        }

        String s = "";
        for (int i = 0; i < len; i++) {
            if (name[i].equals(ZERO)) {
                continue;
            }
            name[i] = name[i].trim();
            s = name[i] + (!s.isEmpty() && !(s.startsWith(TEN) && !name[i - 1].equals(ZERO)) ? " و" : " ") + s;
        }
        return s.isEmpty() ? ZERO : (negative ? "سالب " + s : s).trim();
    }
    public static String literalValueOf(Number a) {
        if (a.doubleValue() > Long.MAX_VALUE) {
            return " اكبر من " + parse(Long.MAX_VALUE);
        }
        a = String.valueOf(a).toLowerCase().contains("e") ? a.longValue() : a;
        String[] array = String.valueOf(a).split("\\.");
        long i = Long.valueOf(array[0]);
        long f = array.length == 2 ? Long.valueOf(array[1]) : 0;
        int fractSize = f > 0 ? array[1].length() : 0;
        String integralPart = (i != 0 || f == 0) ? parse(i) : "";
        String fractionalPart = f > 0 ? parse(f) + " من " + parse(Double.valueOf(Math.pow(10, fractSize)).longValue()) : "";
        return integralPart + (f * i != 0 ? " و " : "") + fractionalPart;
    }
///For testing, please remove!
    public static void main(String[] args) {
        System.out.println(literalValueOf(Long.MAX_VALUE));
    }
}
رابط هذا التعليق
شارك

دي كانت الجافا والتالي هي function في الداتا بيز


FUNCTION AR_SP_OUT (amount number) RETURN VARCHAR2 IS
 amnt_num number := amount;

 amnt_char varchar2(50);
 amnt1_char varchar2(50);

 frac_char varchar2(50);
 amnt varchar2(50);
 amnt1 varchar2(50);

 sub1 varchar2(300) := null;
 sub2 varchar2(300) := null;
 sub3 varchar2(300) := null;
 sub4 varchar2(300) := null;
 sub5 varchar2(300) := null;

 plural VARCHAR2(1);

 ln number;
 ln1 number;  
 ln2 number;

 fc number;
/* ------------------------------------------------------------ */

 halala varchar2(10):='قرشاً';
 halalat varchar2(10):='قروش';

 riyal varchar2(8):='جنيهاً';
 riyalat varchar2(10):= 'جنيهات';

 miyat VARCHAR2(3) := 'مئة';
 miyatain VARCHAR2(5) := 'مئتين';

 alf VARCHAR2(3):= 'الف';
 alfain VARCHAR2(5) := 'الفين';
 alaf VARCHAR2(4) := 'آلاف';

 million VARCHAR2(5) := 'مليون';
 millionain VARCHAR2(7):= 'مليونين';
 malayeen VARCHAR2(6) := 'ملايين';

 miliar VARCHAR2(5) := 'مليار';
 miliarain VARCHAR2(7) := 'مليارين';
 miliarat VARCHAR2(7) := 'مليارات';

 wa VARCHAR2(3) := 'و';
/* ------------------------------------------------------------ */

 function is_zero(amnt VARCHAR2, l number) return boolean is
/* ------------------------------------------------------------ */
  stat boolean := true;
  m number := 1;
 begin
  while m <= l loop
    if substr(amnt,m,1) != 0 then
      stat := false;
      exit;
    end if;
    m := m + 1;
  end loop;
 return(stat);
 end;
/* ------------------------------------------------------------ */

 function ONES(num number) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin
  if num = 0 then
   return(null);
  elsif num = 1 then
    return('واحد');
  elsif num = 2 then
    return('اثنين');
  elsif num = 3 then
    return('ثلاثة');
  elsif num = 4 then
    return('اربعة');
  elsif num = 5 then
    return('خمسة');
  elsif num = 6 then
    return('ستة');
  elsif num = 7 then
    return('سبعة');
  elsif num = 8 then
    return('ثمانية');
  elsif num = 9 then
    return('تسعة');
  end if;
 end;
/* ------------------------------------------------------------ */

 function TENS(num number) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin
  if num = 0 then
   return(null);
  elsif num = 11 then
   return('احدى عشر');
  elsif num = 12 then
   return('اثنى عشر');
  elsif num = 13 then
   return('ثلاثة عشر');
  elsif num = 14 then
   return('اربعة عشر');
  elsif num = 15 then
   return('خمسة عشر');
  elsif num = 16 then
   return('ستة عشر');
  elsif num = 17 then
   return('سبعة عشر');
  elsif num = 18 then
   return('ثمانية عشر');
  elsif num = 19 then
   return('تسعة عشر');
  elsif num = 10 or num = 1 then
   return('عشرة');
  elsif num = 20 then
   return('عشرين');
  elsif num = 30 then
   return('ثلاثين');
  elsif num = 40 then
   return('اربعين');
  elsif num = 50 then
   return('خمسين');
  elsif num = 60 then
   return('ستين');
  elsif num = 70 then
   return('سبعين');
  elsif num = 80 then
   return('ثمانين');
  elsif num = 90 then
   return('تسعين');
  end if;
 end ;
/* ------------------------------------------------------------ */

 function HUNDRED(num number) return VARCHAR2 is
/* ------------------------------------------------------------ */

 begin
 if num = 100 then
  return(miyat);
 elsif num = 200 then
  return(miyatain);
 elsif num = 300 then
  return('ثلاثمائة');
 elsif num = 400 then
  return('اربعمائة');
 elsif num = 500 then
  return('خمسمائة');
 elsif num = 600 then
  return('ستمائة');
 elsif num = 700 then
  return('سبعمائة');
 elsif num = 800 then
  return('ثمانمائة');
 elsif num = 900 then
  return('تسعمائة');
 end if;
 end;
/* ------------------------------------------------------------ */

 function one_digit(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin
 if amnt = 0 then return(null);
 elsif amnt = 1 then return ('جنيهاً واحداً');
 elsif amnt = 2 then return('جنيهين');
 else return(ONES( to_number(amnt))||' '||riyalat);
 end if;
 end;
/* ----------  @ ÿÿÿش    l   -------------------------------------------------- */

 function two_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(30) := null;
  sub2 varchar2(30) := null;
  first_digit VARCHAR2(1);
  second_digit VARCHAR2(1);
 begin
 first_digit := substr(amnt,1,1);
 second_digit := substr(amnt,2,1);

 if first_digit = 0 then
--    return(one_digit(second_digit));
--    sub1  := null;
       sub1 := one_digit(second_digit);
 end if;
if first_digit = 1 or second_digit = 0 then
-- if first_digit not null and second_digit = 0 then

   sub1 := TENS( to_number(amnt));
 else
  sub1 := ONES( to_number(second_digit));
  sub2 := TENS( to_number(first_digit) * 10);
 end if;
 if sub2 is not null then
  sub1 := sub1 || ' ' || wa;
 end if;
 return(sub1 || ' ' || sub2);
 end ;
/* ------------------------------------------------------------ */

function one_digit_h(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin

 if amnt = 0 then return(null);
 elsif amnt = 1 then return ('قرشاً واحداً');
 elsif amnt = 2 then return('قرشين');
 else return(ONES( to_number(amnt))||' '||halalat);
 end if;
 end;
/* ------------------------------------------------------------ */

function two_digits_h(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(30)  := null;
  sub2 varchar2(30) := null;

  first_digit VARCHAR2(1);
  second_digit VARCHAR2(1);
 begin
 first_digit := substr(amnt,1,1);
 second_digit := substr(amnt,2,1);

 if first_digit <> 1  and second_digit <> 0 then
   sub1 := ONES( to_number(second_digit));
   sub2 := TENS( to_number(first_digit) * 10);

if sub2 is not null  then
     sub1 := sub1 || ' ' || wa;
 end if;

 return(sub1||' '|| sub2 || ' ' || halala);

 end if;

 if first_digit = 0 then
--    sub2 := one_digit_h(second_digit);
    return(one_digit_h(second_digit));
 end if;

if first_digit = 1  or second_digit = 0 then
   sub1 := TENS( to_number(amnt));
   sub2 := null;
   return(sub1|| ' ' || halala);
 end if;

 if  first_digit > 1  or  second_digit = 0 then
   sub1 := TENS( to_number(amnt)*10);
   sub2 := null;
   return(sub1|| ' ' || halala);
 end if;

 end ;
/* ------------------------------------------------------------ */

 function three_digits (amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(500) := null;
  sub2 varchar2(500) := null;
  first_digit VARCHAR2(1);
  second_digit VARCHAR2(1);
 begin
 first_digit := substr(amnt,1,1);
 if first_digit = 0 then
  return(two_digits( substr(amnt,2,2)));
 end if;
 sub1 := HUNDRED( to_number(first_digit)*100);
 if is_zero( substr(amnt,2,2), 2) then
  sub2 := null;
 else
  sub1 := sub1 || ' ' || wa;
  sub2 := two_digits( substr(amnt,2,2));
 end if;
 return(sub1||' '||sub2);
 end;
/* ------------------------------------------------------------ */

 function four_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(three_digits(substr(amnt,2,3)));
 end if;
 if substr(amnt,1,1) = 1 then
    sub1 := alf;
    sub2 := null;
 elsif substr(amnt,1,1) = 2 then
    sub1 := alfain;
    sub2 := null;
 else
   sub1 := ONES( to_number(substr(amnt,1,1))) || ' ' || alaf;
    sub2 := null;
 end if;
if  to_number(substr(amnt,2,3)) > 0 then
  sub2 := three_digits(substr(amnt,2,3));
end if;
 if sub2 is not null then
  sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function five_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;

 begin
 if substr(amnt,1,1) = 0 then
  return(four_digits(substr(amnt,2,4)));
 end if;
 sub1 := two_digits( substr(amnt,1,2));
 if substr(amnt,1,2) = 1  
                then     sub1 := sub1 ||' '||alaf;
 else
    sub1 := sub1 ||' '||alf;
 end if;
/*if  to_number(substr(amnt,2,4)) > 0 then
 sub2 := three_digits(substr(amnt,3,3));
end if;*/
if  to_number(substr(amnt,3,3)) > 0 then
 sub2 := three_digits(substr(amnt,3,3));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa|| ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function six_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(five_digits(substr(amnt,2,5)));
 end if;
 if substr(amnt,2,2) = '01' then
   sub1 := three_digits( '100');
   sub1 := sub1 || ' ' || wa || ' ' || alf;
 elsif substr(amnt,2,2) = '02' then
   sub1 := three_digits( '100');
   sub1 := sub1 || ' ' || wa || ' ' || alfain;
 elsif substr(amnt,2,2) = '10' then
   sub1 := three_digits(substr(amnt,1,3))||' '||alaf;
  else
   sub1 := three_digits(substr(amnt,1,3))||' '||alf;
 end if;
/*if  to_number(substr(amnt,2,5)) > 0 then
 sub2 := three_digits(substr(amnt,4,3));
end if;*/
if  to_number(substr(amnt,4,3)) > 0 then
 sub2 := three_digits(substr(amnt,4,3));
end if;


 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function seven_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(six_digits(substr(amnt,2,6)));
 end if;
 if substr(amnt,1,1) = 1 then
    sub1 := million;
 elsif substr(amnt,1,1) = 2 then
   sub1 := millionain;
 else
   sub1 := ONES(substr(amnt,1,1))||' '||malayeen;
 end if;
if  to_number(substr(amnt,2,6)) > 0 then
 sub2 := six_digits( substr(amnt,2,6));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function eight_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(seven_digits(substr(amnt,2,7)));
 end if;
 sub1 := two_digits(substr(amnt,1,2));
 if substr(amnt,1,2) = '10' then sub1 := sub1 ||' '||malayeen;
 else
  sub1 := sub1 ||' '||million;
 end if;
if  to_number(substr(amnt,2,7)) > 0 then
 sub2 := six_digits( substr(amnt,3,6));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function nine_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(eight_digits(substr(amnt,2,8)));
 end if;
 sub1 := HUNDRED(to_number(substr(amnt,1,1))*100);
 if substr(amnt,2,1) = 0 then
  if substr(amnt,3,1) = 1 then
   sub1 := sub1|| ' ' || wa|| ' ' || ONES(1)||' '||million;
  elsif substr(amnt,3,1) = 2 then
   sub1 := sub1|| ' ' || wa||' '||millionain;
  elsif substr(amnt,2,2) = '00' then
   sub1 := sub1 ||' '||million;
  else
   sub1 := sub1|| ' ' || wa||' '||ONES( to_number(substr(amnt,3,1)))||' '||malayeen;
  end if;
 elsif substr(amnt,2,2) = '10' then
  sub1 := sub1 || ' ' || wa||' '||TENS(to_number(substr(amnt,2,2)))|| ' '||malayeen;
 else
  sub1 := sub1|| ' ' || wa ||' '||two_digits(substr(amnt,2,2))|| ' '||million;
 end if;

if  to_number(substr(amnt,4,6)) > 0 then
 sub2 := six_digits( substr(amnt,4,6));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function ten_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------  ` ÿÿÿش  ! l   ------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(nine_digits(substr(amnt,2,9)));
 end if;
 if substr(amnt,1,1) = 1 then
    sub1 := miliar;
 elsif substr(amnt,1,1) = 2 then
   sub1 := miliarain;
 else
   sub1 := ONES(substr(amnt,1,1))||' '||miliarat;
 end if;
if  to_number(substr(amnt,4,7)) > 0 then
 sub2 := nine_digits( substr(amnt,2,9));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa||  ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function eleven_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(ten_digits(substr(amnt,2,10)));
 end if;
 sub1 := two_digits(substr(amnt,1,2));
 if substr(amnt,1,2) = '10' then
   sub1 := sub1 ||' '||miliarat;
 else
   sub1 := sub1||' '||miliar;
 end if;
if  substr(amnt,4,8) > 0 then
 sub2 := nine_digits( substr(amnt,3,9));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa ||  ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function twelve_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(eleven_digits(substr(amnt,2,11)));
 end if;
 sub1 := HUNDRED(to_number(substr(amnt,1,1))*100);
 if substr(amnt,2,1) = 0 then
  if substr(amnt,3,1) = 1 then
   sub1 := sub1|| ' ' || wa ||  ' ' || ONES(1)||' '||miliar;
  elsif substr(amnt,3,1) = 2 then
   sub1 := sub1|| ' ' || wa ||' '||miliarain;
  elsif substr(amnt,2,2) = '00' then
   sub1 := sub1 ||' '||miliar;
  else
   sub1 := sub1|| ' ' || wa||' '||ONES( to_number(substr(amnt,3,1)))||' '||miliarat;
  end if;
 elsif substr(amnt,2,2) = '10' then
  sub1 := sub1 || ' ' ||  wa||' '||TENS(to_number(substr(amnt,2,2)))|| ' '||miliarat;
 else
  sub1 := sub1|| ' ' || wa ||' '||two_digits(substr(amnt,2,2))|| ' '||miliar;
 end if;
if  to_number(substr(amnt,4,9)) > 0 then
 sub2 := nine_digits( substr(amnt,4,9));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa ||  ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 procedure check_riyals(amnt VARCHAR2) is
/* ------------------------------------------------------------ */
 begin
 if amnt = '10'  then
    sub1 := sub1 ||' '||riyalat;
 elsif amnt between '01' and '09' then
    null;
 elsif ln = 1 then
    null;
 else
    sub1 := sub1 ||' '||riyal;
 end if;
 if ln1 > 0  then
     sub1 := sub1  ||  ' ' || wa ||  ' ' || sub5 ;
     end if;
 end;

BEGIN   -- main function starts --
 amnt_char := to_char(amnt_num);
 ln1 := instr(amnt_char,'.');
 if ln1 > 0  then
       frac_char := substr(amnt_char,ln1+1,2);
       amnt_char := substr(amnt_char,1,ln1-1);
 end if;

 ln := NVL(NVL(length(amnt_char), 0), 0);
 ln2 := NVL(NVL(length(frac_char ), 0), 0);
 if ln1 > 0 then
    sub5 := two_digits_h(frac_char);
 end if;
 if ln = 1 then
    sub1 :=  one_digit(amnt_char);
    check_riyals(amnt_char);
 elsif ln= 2 then
    sub1 := two_digits(amnt_char);
    check_riyals(amnt_char);
 elsif ln = 3 then
    sub1 := three_digits(amnt_char);
    check_riyals(substr(amnt_char,2,2));
 elsif ln = 4 then
    sub1 := four_digits(amnt_char);
    check_riyals(substr(amnt_char,3,2));
 elsif ln = 5 then
     sub1 := five_digits(amnt_char);
     check_riyals(substr(amnt_char,4,2));
 elsif ln = 6 then
     sub1 := six_digits(amnt_char);
     check_riyals(substr(amnt_char,5,2));
 elsif ln = 7 then
     sub1 := seven_digits(amnt_char);
     check_riyals(substr(amnt_char,6,2));
 elsif ln = 8 then
     sub1 := eight_digits(amnt_char);
     check_riyals(substr(amnt_char,7,2));
 elsif ln = 9 then
     sub1 := nine_digits(amnt_char);
     check_riyals(substr(amnt_char,8,2));
 elsif ln = 10 then
         sub1 := ten_digits(amnt_char);
     check_riyals(substr(amnt_char,9,2));
 elsif ln = 11 then
     sub1 := eleven_digits(amnt_char);
     check_riyals(substr(amnt_char,10,2));
 elsif ln = 12 then
     sub1 := twelve_digits(amnt_char);
     check_riyals(substr(amnt_char,11,2));
 elsif ln = 0 and ln2 > 0  then
    sub1 := two_digits_h(frac_char);
 else
    return('  لا يمكن استخدام أكثر من 12 رقم ... شكراً '  );
 end if;

 return( sub1);

END AR_SP_OUT;
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية