بتاريخ: 17 يوليو 200916 سنة comment_163575 السلام عليكم انا عندي ( جدولين الموظفين واللإجازات ) وهي عبارة عن نوعين من الإجازات اظطرارية وسنوية واريد ان ادخل رصيد الإضطرارية 10 ايام في السنة بحيث تحسب من بداية السنة وعندما يقوم الموظف بطلب إجازة تخصم من الرصيد ويظهرلي display item موضح فية المتبقي من الرصيد هذا النوع الاول النوع الثاني السنوية بحيث تبدا من تاريخ تعيين الموظف بواقع شهر غن كل سنة ودمتم بود,,,,, تقديم بلاغ
بتاريخ: 17 يوليو 200916 سنة comment_163579 السلام عليكماخي ابو فهد...اولا بالنسبة للاجازة الاضرارية وهي مدتها10 ايام فستكون هذا القيمة مخزنة بايتم ألا وهو عدد ايام الاجازة الاضرارية...وعند طلب عدد من الايام لاجازة اضرارية ستقوم بطرح هذا العدد من العدد الكلي لايام الاجازة الاضرارية الا وهو ( 10 )...وعند انتهاء عدد ايام الاجازة الاضرارية يعني = 0 ... يجب ان تظهر للمستخدم رسالة بان عدد ايام الاجازة الاضرارية لهذا الموظف قد انتهت او استنفذت.....ونفس العملية بالنسبة للاجازة السنوية التي ستكون عدد ايامها شهر ( 30 يوم ) او حسب ما يحدده نظام الشركة فبعض الشركات لا تعطي اكثر من ( 28 ) يوم...بالتوفيق تقديم بلاغ
بتاريخ: 17 يوليو 200916 سنة comment_163585 السلام عليكم ممكن طريقة أخرىوهي عند طلب الاجازة وتريد معرفة رصيده من مثلا النوع الاضطراري فيمكن اتباع الاتيمثلا في جدول الاجازات عند تخزين الاجازة هيكون هناك عمود سيكون به نوع الاجازة مثلا اضطراية -اعتيادية-إذن وهكذا فأنت عند عمل أجازة للموظف يمكنك القيام بمعرفة عدد ايام الاجازة مثلا الاضطرارية كدا select count(*) into :no_vaccance from vaccance where empno=:empno and vacc_kind='اضطرارية' and to_char(vacc_day,'yyyy')=to_char(sysdate,'yyyy'); المفروض في الجملى السابقة تقوم بعمل عد لعدد ايام الاجازرات الاضطرارية لهذا الموظف لهذا العام وأيضا بالنسبة :no_vaccance دي تعتبر ال display item الذي يعرض به عدد ايام الاجازات ومن خلالها لاينفع أن تزيد عن 10 أيام فلو زادادت عن 10 يتم عمل رفضكذلك النوع الاخر من الاجازات تستخدم أيضا دالة ال count وبكدا ترتاح من عناء تسجيل أيام الغيابات المستحقة أو الاي استنفذت وهكذا أتمنى أن أكون استطعت توضيح الموضوعموفق تقديم بلاغ
بتاريخ: 20 يوليو 200916 سنة كاتب الموضوع comment_163806 السلام عليكماخي ابو فهد...اولا بالنسبة للاجازة الاضرارية وهي مدتها10 ايام فستكون هذا القيمة مخزنة بايتم ألا وهو عدد ايام الاجازة الاضرارية...وعند طلب عدد من الايام لاجازة اضرارية ستقوم بطرح هذا العدد من العدد الكلي لايام الاجازة الاضرارية الا وهو ( 10 )...وعند انتهاء عدد ايام الاجازة الاضرارية يعني = 0 ... يجب ان تظهر للمستخدم رسالة بان عدد ايام الاجازة الاضرارية لهذا الموظف قد انتهت او استنفذت.....ونفس العملية بالنسبة للاجازة السنوية التي ستكون عدد ايامها شهر ( 30 يوم ) او حسب ما يحدده نظام الشركة فبعض الشركات لا تعطي اكثر من ( 28 ) يوم...بالتوفيق بارك الله فيك ونفع بك تقديم بلاغ
بتاريخ: 20 يوليو 200916 سنة كاتب الموضوع comment_163808 السلام عليكم ممكن طريقة أخرىوهي عند طلب الاجازة وتريد معرفة رصيده من مثلا النوع الاضطراري فيمكن اتباع الاتيمثلا في جدول الاجازات عند تخزين الاجازة هيكون هناك عمود سيكون به نوع الاجازة مثلا اضطراية -اعتيادية-إذن وهكذا فأنت عند عمل أجازة للموظف يمكنك القيام بمعرفة عدد ايام الاجازة مثلا الاضطرارية كداselect count(*) into :no_vaccance from vaccance where empno=:empno and vacc_kind='اضطرارية' and to_char(vacc_day,'yyyy')=to_char(sysdate,'yyyy'); المفروض في الجملى السابقة تقوم بعمل عد لعدد ايام الاجازرات الاضطرارية لهذا الموظف لهذا العام وأيضا بالنسبة :no_vaccance دي تعتبر ال display item الذي يعرض به عدد ايام الاجازات ومن خلالها لاينفع أن تزيد عن 10 أيام فلو زادادت عن 10 يتم عمل رفضكذلك النوع الاخر من الاجازات تستخدم أيضا دالة ال count وبكدا ترتاح من عناء تسجيل أيام الغيابات المستحقة أو الاي استنفذت وهكذا أتمنى أن أكون استطعت توضيح الموضوعموفق بارك الله فيك واشكركم على سرعة الرد وجاري التجربة......... تقديم بلاغ
بتاريخ: 20 يوليو 200916 سنة comment_163827 السلام عليكم بالنسبة لإحتساب الاجازة السنوية فإنه في العادة فإنه يتم خصم نسبة من أيام الإجازة عند التثبيت بالنسبة للتاريخ يعني الذي يثبت في أول السنة سيحصل على رصيد ابتدائي من الاجازات يختلف عن الذي يثبت في شهر 10 مثلا وهذه طريقتها ، فلإعطاء رصيد ابتدائي لموظف ثبت بتاريخ 17/4/2009مثلا وافتراضا ان الاجازات هي 30 يوما كما في حالتك فأنت ستقوم بما يلي سواء في جملة SQLأو من خلال بروسيجر :1 - تقسم ال30 يوم على عدد أيام السنة (365)30/365 = 0.08222- تحسب الأيام من أول السنة الى 17/4 17/4/2009 - 1/1/2009 = 107 أيام (أو 108 اذا كانت كبيسة)3- تضرب نصيب اليوم في 1النقطة بعدد الأيام بحيث يخرج عدد الأيام التي ستخصمها من رصيد الموظف0.0822 * 107 = 8.8 مقربا .4 - تطرح ما خرج معك في النقطة 3 من ال30 يوم. 30 - 8.8 = 21.2 وهذا وهو الرصيد الابتدائي للإجازات السنوية للموظف المثبت في 17 /4 ملاحظة هناك شركات تقسم على الأشهر وليس على أيام السنة كما في النقطة 1يعني 1- 30/12 = 2.52- الأشهر بحسب نظام الشركة اما تأخذ بأقرب عد د صحيح أو أقل عدد (شهر) صحيح ...الخ هنا سنأخذ أقرب عدد صحيح سيكون 5 أشهر 3- 2.5 * 5 = 12.5 4- 30-12.5 = 17.5 الرصيد الابتدائي طبعا سيكون هناك فرق بين الانظمة المستخدمة يعني أولا المهم الفكرة أما القوانين ولوائح الشركة فيمكن التعامل معها بسهولة اذا فهمت الفكرة.ممكن تلخيص كل ما سبق بهذا الكود علما انه لتوضيع الفكرة حيث سيختلف الكود بحسب مشروعك ولكن طبعا بنفس الفكرة وعذرا للإطالة declare v_vac_days number := 30; v_date date := to_date('17/4/2009','dd/mm/rrrr'); v_Begining_balance number; begin select v_vac_days - ((v_date - trunc(v_date,'Y'))* (v_vac_days/365)) into v_Begining_balance from dual; dbms_output.put_line('Begining Balance: '|| v_Begining_balance ); end; تم تعديل 20 يوليو 200916 سنة بواسطة tanbet تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.