الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اطبق زيادة الرواتب 15 %...حسب المكرمة الملكية.

مغلق
بدأه الحالم بالجنة في 17 سبتمبر 2005 · 9 رد · 1,060 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اريد المساعدة في هذا الموضوع الذي عقدني جدا

اريد ان اعدل رواتب الموظفين حسب المكرمة الملكية بزيادة الرواتب 15 %

عملت الزيادة ولكن المشكلة ان الاخوة في شؤون الموظفين ذكروا لي بأن راتب الموظف لابد ان

ينتهي برقم صفر او رقم 5 فقط كطريقة نظامية خاصة

مثل :1250 - 4555 - 8510 - 2365

وليس مثل :1256 - 4557 - 8510,5 - 2361

والمعادلة التي استخدمها هي كالتالي:

basic=basic+(basic*.15)

استخدمت كثير من الدوال ولكنها لم تنجح معي...مثل round-int- وكثير تجدونها في

الملف المرفق...

ارجو المساعدة فتطبيق المكرمة الملكية قريب...ماهي الدالة المناسبة...

بارك الله في الجميع...

#2

ممكن إضافة ROUND التي ممكن تقرب الى 40 أو 50

فإذا كانت القيمة أقل من 45 تقرب الى 40 وإذا كانت أكبر من 44 تقرب الى 50

وهكذا

ROUND (47,210,-1)

سوف تقرب الى خمسين

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

#3

يااخي انظر مايلي:

الراتب عند تطبيق الزيادة الراتب الصحيح هو

------------------------ -----------------

5220 5220

5221 5220

5222 5220

5222.25 5220

5222.50 5225

5222.75 5225

5223 5225

5224 5225

5225 5225

5226 5225

5227 5225

5227.25 5225

5227.50 5230

5227.75 5230

5228 5230

5229 5230

5230 5230

القاعدة هي كالتالي:

اذا كان رقم الآحاد يقع بين (1 الى 5) (و)اكبر من 2.5 فانه يجبر الى رقم 5

مثلا : 5223 رقم الآحاد هو 3 ويقع بين (1 الى 5) وهو اكبر من رقم 2.5 اذن يجبر الى رقم 5 فيكون الراتب 5225

اذا كان رقم الآحاد يقع بين (5 الى 10) (و)اكبر من 7.5 فانه يجبر الى اقرب رقم عشري

مثلا : 5228 رقم الآحاد هو 8 ويقع بين (5 الى 10) وهو اكبر من رقم 7.5 اذن يجبر الى اقرب رقم عشري فيكون الراتب 5230

حيث ان الرقم (2.5) طرف ثابت معادلة حسابية

ملاحظة مهمة: خانة الآحاد في الراتب لابد ان تكون إما رقم صفر او رقم 5

وشكرا للجميع...

#4

ليس هناك حل الا أن تعملها يدويا عن طريق بعض function الموجودة في أوراكل

تقوم بأخذ أخر ثلاثة ارقام عن طريق substr

واختباره إذا كان أكبر من 2.5 أو أقل من 7.5

تستبدل مكان آخر رقم 5

ثم تختبر إذا كان الرقم أكبر من 7.5

تقوم بزيادة الرقم +1

ثم تختبر إذا كان الرقم أقل من 2.5

تستبدل مكان آخر 0

وهكذا سوف تكون العملية ناجحة أن شاء الله

substr(to_char(basic) ,length(basic)-3,3)

then you will do if staement

x=substr(to_char((basic),0,length(basic-3)

x=x||0;

#5

موضوع مكرر

/index.php?showtopic=75860

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

شكرا لك يااخي maalsaleh

اخي طارق ابراهيم...

الموضوع مهم جدا جدا بالنسبة لي...ارجو ان تتقبل وجهة نظري...وآسف لمخالفة شروط المنتدى...

وارجو ان تدلي بدلوك في موضوعي هذا...

بارك الله فيك...ولحرصك على تنظيم الامور في المنتدى...

#7
create or replace function makin(p_sal in number)
return number
is
v_sal number;
v_sal_cut number;
begin
v_sal:=round(p_sal,0);
v_sal_cut:=to_number(substr(v_sal,length(v_sal)));
if v_sal_cut>7 then
v_sal:=v_sal+(10-v_sal_cut);
elsif v_sal_cut>5 then
v_sal:=v_sal-v_sal_cut+5;
elsif v_sal_cut>2 then
v_sal:=v_sal+(5-v_sal_cut);
else
v_sal:=v_sal-v_sal_cut;
end if;
return(v_sal);
end makin;
/

Mohamed Makeen

Senior Software Developer

Egypt - Cairo

eng_makin@hotmail.com

0142003269

#8

السلام عليكم اخى الكريم قم بنسخ الكود وتنفيذة ويعمل كلاتى

select makin(sal) from ur table;

[code]

وعلى فكرة خد بالك الداله بترجع رقم

والسلام واسف على الازعاج

Mohamed Makeen

Senior Software Developer

Egypt - Cairo

eng_makin@hotmail.com

0142003269

#9

شكرا يااخي الكريم isdep_makin ...

بارك الله فيك...

الحمد لقد حللت المشكلة بطريقة اخرى...لكن هذ ا لايمنع ان اجرب ماابدعت اناملك...شكرا لك من كل قلبي...

#10

الحمد لله انه تم حل المشكله

هل من الممكن ان تخبرنا بالطريقه الاخرى لنتعلم منك . ان كانت من اسرار العمل فلا تزكرها

والسلام .

Mohamed Makeen

Senior Software Developer

Egypt - Cairo

eng_makin@hotmail.com

0142003269

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…