الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة في احتساب التأمينات الاجتماعية للموظفين

Featured Replies

بتاريخ:

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

ارجو المساعدة ممن وهبه الله علماً في هذا المجال .

شرح مشكلتي :

فحوى نظام التامينات الاجتماعية :
ان الموظف يتم التأمين عليه من بداية السنة الى نهايتها كما يلي
(الراتب الاساسي(في بداية السنة)+بدل السكن(في بداية السنة))= راتب التأمينات الاجتماعية
يخصم من راتب الموظف السعودي 9%(من راتب التأمينات الاجتماعية)
و من الموظف الاجنبي 2% أخطار .

اذا مثلا جات للموظف زيادة في نصف السنة المفروض ان راتب التأمينات الاجتماعية لا يتأثر ب الزيادة و انما يؤمن عليه بنفس الراتب الى ان تبدأ السنة الميلاددية الجديدة فإذا بدأت السنة الجديدة يتم احتساب راتب التأمينات الاجتماعية علة الراتب الجديد .
------------------------
المشكلة :هي انه عندي في الشركة يتأثر راتب التأمينات الاجتماعية بالزيادة حيث انه جات زياداة ارواتب هذه السنة 2006 م متأجرة تقريباً في نصف السنة . فتأثر الراتب بحيث يحسب راتب التأمينات الاجتماعية على الراتب بعد الزيادة و في نصف السنة تقريبا و الصحيح ان يحتسب الزيادة في بداية العام الجديد 2007 .
---------------------------
مكان المشكلة تقنيا في نظام الاوراكل هو في الفورميلا التي تقوم بإجراء الحسبة
-------------------------
نص الفورميلا :
ALIAS PER_EMP_NUMBER AS acEmpNum
ALIAS ASG_SALARY AS amCurrentSalary
ALIAS PAY_PROC_PERIOD_START_DATE AS adPeriodStartDate
ALIAS PAY_PROC_PERIOD_END_DATE AS adPeriodEndDate
DEFAULT FOR ASG_SALARY IS 0
DEFAULT FOR acEmpNum IS '0'
DEFAULT FOR adPeriodStartDate IS '01-JAN-1900' (date)
DEFAULT FOR adPeriodEndDate IS '01-JAN-1900' (date)


Default for SCL_ASG_SA_GOSI_ANNUITIES is ' '
Default for SCL_ASG_SA_GOSI_HAZARDS is ' '
Default for SA_PERSON_TERMINATION_DATE is '4712/12/31 00:00:00' (DATE)
Default for PAY_PROC_PERIOD_END_DATE_DP is '4712/12/31 00:00:00' (DATE)

/*Check for definition of Local Nationality Profile*/
l_exists = SA_LOCAL_NATIONALITY_NOT_DEFINED()
IF l_exists = 'NOTEXISTS' THEN
(

l_msg = SA_GET_MESSAGE('PAY','HR_374812_SA_LOC_NAT_NOT_DEF')
return l_msg)


viCurrentYear = SUBSTR( TO_CHAR( adPeriodStartDate, 'DD-MON-YYYY' ) , 8, 4 )
vdGosiDate = TO_DATE( '01-JAN-' + viCurrentYear, 'DD-MON-YYYY' )
vmGosiSalary = Salary_at( acEmpNum , vdGosiDate )
IF vmGosiSalary = 0 THEN
(
vmGosiSalary = amCurrentSalary
)
vmGosiHousing = LEAST( (GREATEST( ( ASG_SALARY * 3 ), 11000 ) / 12 ) , 9000 )



/*Only do GOSI calculation if employee is subject to at least one type of
GOSI deduction.*/
IF (SCL_ASG_SA_GOSI_ANNUITIES = 'Y') OR (SCL_ASG_SA_GOSI_HAZARDS = 'Y') THEN
(
/* Do not process if the employee has been terminated before 28th of the
month being processed. */
IF SA_PERSON_TERMINATION_DATE >= PAY_PROC_PERIOD_END_DATE_DP /*OR
(TO_NUMBER(TO_CHAR(SA_PERSON_TERMINATION_DATE,'DD')) > 27 AND
MONTHS_BETWEEN(SA_PERSON_TERMINATION_DATE
,PAY_PROC_PERIOD_END_DATE_DP) < 1) Commented By Abhijit on 09/07/05*/
THEN
(

/* Get the GOSI base on which to base the calculation.*/

gosi_base = GOSI_REFERENCE_EARNINGS_ASG_YTD
If gosi_base = 0 Then
(
gosi_base = SA_USER_GOSI_REFERENCE_FORMULA()
ee_gosi_reference_earnings = SA_USER_GOSI_REFERENCE_FORMULA()
)
If gosi_base = 0 Then
(
gosi_base = SUBJECT_TO_GOSI_ASG_RUN
ee_gosi_reference_earnings = SUBJECT_TO_GOSI_ASG_RUN
)

/* Adjust the GOSI base based on the upper and lower GOSI limits.*/
gosi_base =LEAST(GREATEST(gosi_base, SA_GOSI_BASE_LOWER_LIMIT),SA_GOSI_BASE_UPPER_LIMIT)
gosi_base = ( vmGosiSalary + vmGosiHousing )

/* GOSI Annuities calculation.*/
If SCL_ASG_SA_GOSI_ANNUITIES = 'Y' Then
(
er_gosi_annuities = gosi_base * SA_ER_ANNUITIES_PCT/100
ee_gosi_annuities = gosi_base * SA_EE_ANNUITIES_PCT/100
er_rate_annuities = SA_ER_ANNUITIES_PCT
ee_rate_annuities = SA_EE_ANNUITIES_PCT
annuities_gosi_base = gosi_base

/* Employees net pay is too small to meet the GOSI deduction so employer pays
the difference NB. employee will receive zero net pay in this case.*/
IF NET_ASG_RUN < ee_gosi_annuities THEN
(
ee_gosi_arrears = ee_gosi_annuities - NET_ASG_RUN
ee_gosi_annuities = NET_ASG_RUN
)
)

/*GOSI Hazards calculation. */
IF SCL_ASG_SA_GOSI_HAZARDS = 'Y' THEN
(
er_gosi_hazards = gosi_base * SA_ER_HAZARDS_PCT/100
er_rate_hazards = SA_ER_HAZARDS_PCT
hazards_gosi_base = gosi_base
)

RETURN hazards_gosi_base
,annuities_gosi_base
,er_rate_hazards
,er_rate_annuities
,ee_rate_annuities
,er_gosi_hazards
,er_gosi_annuities
,ee_gosi_annuities
,ee_gosi_arrears
,ee_gosi_reference_earnings

)
)

-------------------------
ارجوا مساعدتي بحيث يتم التعديل عليها لتحسب التأثير بعد بداية السنة الجديدة .

و جزاكم الله خير الجزاء

اخوكم م / عوض الحربي

بتاريخ:

أخي حربي ::

من الصعب جدا تتبع هذا ال code الا في حالة تنفيذه ,

ولكن أنا اشك في جملة statement معينة وهي ..

viCurrentYear = SUBSTR( TO_CHAR( adPeriodStartDate, 'DD-MON-YYYY' ) , 8, 4 )
vdGosiDate = TO_DATE( '01-JAN-' + viCurrentYear, 'DD-MON-YYYY' )
vmGosiSalary = Salary_at( acEmpNum , vdGosiDate )
IF vmGosiSalary = 0 THEN
(
vmGosiSalary = amCurrentSalary
)



حيث في الجملة الشرطية لهذه الجملة بالذات يقع الخطا , لان اتوقع هنا انت تحدد ال Total لل Gosi من ال Basic Salary الذي تريد الاعتماد في احتسابه .

ولكن المشكلة عندك انه هنا دائما سيأخذ الراتب الجديد "هذا شئ اكيد" لأنك تاخذ السنة التي بها الراتب من المتغير adPeriodStartDate وهو 1900 وسيعطيك دائما الراتب = 0 لانه ليس عنده راتب للموظف في تلك السنة وبالتالي سيأخذ الراتب الحالي vmGosiSalary = amCurrentSalary
والذي يكون الراتب الجديد والذي تم فيه حصول الزيادة عليه .

..لذلك الخطأ هو من المتغير adPeriodStartDate خذ دائما السنة اللتي انت بها .. مثلا 2006 ثم جمع التاريخ مع الشهر واليوم ليكون ..
2006 - 01jan
بداية السنة ..
انشاء الله هذا يكون السبب.

بتاريخ:

ولكن هناك سؤال للاخ حربي من ناحية ال Business وهو ::

لماذا للموظف المستقيل اذا كانت تاريخ استقالته قبل 28 من الشهر لا انفذ الجملة "اقتطع من راتبه التامين" ?!!

بالنسبة للموظف المتعين جديد هل يجب ان يكون عدد ايام عمله في اول شهر تعين فيه "يجب ان يتجاوز مثلا 15 او 20 يوم عمل في ذلك الشهر" حتى ابدأ باقتطاع مبلغ التامينات منه في ذلك الشهر !??.

الرجاء التوضيح.


(
/* Do not process if the employee has been terminated before 28th of the
month being processed. */
)




وشكراا.

بتاريخ:

الاخ حربي
بصراحة انته الي بتحكي فيه صح 100/100 لانه هاد النظام العامل بالمملكلة العربية السعودية و اوراكل عامله شغل مقرف لا يغني من جوع يعني لو ما كتبوا هاي الفورمولا احسنلهم على كل حال اذا بتلاحظ اول الفورمولا فيه جمله asg_salary و هاد الداتا بيس ايتم برجع آخر راتب تقاضاه الموظف وهون هي مشكلتك الحل: انه إعمل الك فنكشن يجيبلك راتب الموظف بتاريخ بداية السنة و استخدمة بدل الموجود و انشاء الله يحللك المشكله .

بتاريخ:

بالنسبة للاخ baslit اخوي هاد نظاميا صحيح و هاد نظام التأمينات الإجتماعية المعمول فية بالمملكة بتخصم تأمينات بأول شهر تعيين و ما بتخصم بآخر شهر أو العكس

بتاريخ:

.. أنا ما حكيت انو النظام غير صحيح اطلاقا .. ,

واذا لاحظت انو ردي الاول عن المشكلة نفس الرد الذي يخصك تقريبا .. ولكن في ردي الثاني ..
كنت فقط استفسر "سؤال يعني" عن ما هو ال Business الذي تعامل معه الاخ حربي بالنسبة للموظف المستقيل !؟

(
/* Do not process if the employee has been terminated before 28th of the
month being processed. */
)




<< هل تستطيع الاجابة اخ Ora_Consultant بخصوص الموظف المستقيل !!??

بتاريخ:

والله يا اخ baslit
معلوماتي على قدي لا استطيع :)

بتاريخ:

شكرا على الموضوع والتوضيح ..

 

ومنكم نستفيد ......@@@@@

تم تعديل بواسطة يحي القاضي

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.