delphi4arab منتديات دلفي للعرب
تحليل قاعدة بيانات موظفين ورواتب - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4)
+--- قسم : مشاريع دلفي الجماعية (https://delphi4arab.net/forum/forumdisplay.php?fid=24)
+--- الموضوع : تحليل قاعدة بيانات موظفين ورواتب (/showthread.php?tid=9476)

الصفحات: 1 2 3 4 5 6


RE: تحليل قاعدة بيانات موظفين ورواتب - mobile - 08-06-2018

السلام عليكم
اين مشكلتك اخ فريد


RE: تحليل قاعدة بيانات موظفين ورواتب - h-farid - 08-06-2018

أحد المشاكل :

C'est quoi une rubrique de paye ?


RE: تحليل قاعدة بيانات موظفين ورواتب - محمد عبد العزيز - 08-06-2018

(08-06-2018, 05:35 PM)h-farid كتب : C'est quoi une rubrique de paye ?
سطر في كشف الراتب
مبلغ يتم اضافته أو إنقاصه



RE: تحليل قاعدة بيانات موظفين ورواتب - h-farid - 09-06-2018

رأيت في PC Paye من DLG
999 rubriques
كيف تبرمج؟ هل لها صفات مشتركة ؟ أم أنها كل واحدة على حدى ؟


RE: تحليل قاعدة بيانات موظفين ورواتب - Delphi4Us - 09-06-2018

بعد تجربتي مع المنظومة وجدتها أبسط مما كنت اتخيل .
تتمحور كل المنظومة في ثلاث عمليات رئيسية .
[صورة: 97d311c887fce36.jpg]
حفظ بيانات الموظف من راتب وعلاوات وخصميات ومعالجتها في الزيادة والنقصان تم كل شهر يتم تمرير هذه البيانات الى جدول لحفظها بتواريخها وتمر على المتغيرات المثمتلة في مقدار الخصميات والعلاوات حسب القوانين المعمول بها في البلد تم تحويلها الى تقارير من هذا الجدول النهائي .
تبقى الجزئيات في كيفية معالجة هذه البيانات بحسب كل بلد وحسب قوانينها شئ يعود للمستخدم .


RE: تحليل قاعدة بيانات موظفين ورواتب - Delphi4Us - 09-06-2018

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

هناك موظفين منقطعين عن العمل يتم ايقاف مرتباتهم ، وتستمر المنظومة في ادراج مرتبات المستمرين في العمل ولكن قد يحدث ان يعود الموظف للعمل مع عذر شرعي .
وهذا يلزم ان يتم انزال مرتباته في الشهر القادم .
مثلا نحن الان في شهر 6 شهر 7 القادم المفترض ان يتم انزال مرتباته لشهر 6 وشهر 5 وشهر 4 مع شهر 7 .
في المنظومة القديمة التي تخربط الحسابات كان هناك نافذة باسم مرتبات مستحقة تدخل لها وتضيف منها رقم الشهر والسنة .
ويتم اضافتها عند اجراء مرتبات الشهر القادم .
طبعا يبدوا انها تضيفهم في جدول منفصل يتم حذف محتوياته بمجرد انشاء المرتبات في نهاية الشهر
انا فكرت ان اقوم بانزال مرتبات حتى المنقطعين عن العمل ولكن لا يتم احتسابها في التقارير التي يتم احالتها الى المحاسب او المصرف .
وبحال الرغبة في ادراج هذه المرتبات يدخل المستخدم على الجدول ويحدد الشهر والسنة لهذه المرتب اداة CheckBox لتفهم جملة الاستعلام ان هذه الشهور مطلوبة مثلا .
وبذلك لا داعي الى جدول فرعي ولا الى اعادة تحديث بيانات تنزيل المرتبات


RE: تحليل قاعدة بيانات موظفين ورواتب - Delphi4Us - 11-06-2018

بالنسبة الى هذا النوع من المنظومات افضل طريقة وجدتها لها هي تجزئة العمل
فما هو ناحية قواعد البيانات يترك لقواعد البيانات اضافة وتعديل وحسابات وخصوصا الحسابات وعمليات التحقق واستعلامات التقارير وما شابه
ويترك الدلفي للواجهات فقط والتنسيق بين الواجهة وبين قاعدة البيانات
في المنظومات الغير حسابية والتي لا تحتاج الى عمليات كثير ربما الدمج بمكان واحد يكون امر عادي
ولكن هنا سيكون خربطة وكارثة كبيرة


RE: تحليل قاعدة بيانات موظفين ورواتب - Delphi4Us - 13-06-2018

يبدوا انني بصدد الحصول على ابن جديد ، ارجوا ان يكون ولدا صالحا ومباركا .
[صورة: 14307f91052d23d.jpg]
ولكنه اكثر ولد تعقيدا قمت بانجابه سيكون .
من الصعب جدا ان تعمل على كل الاتجاهات تفكر في الكود وكذلك في كيفية جعل البرنامج سهلا والشاشة بسيطة .
ويجب ان يكون حساب المرتب هنا وليس هنا ، ولماذا يجب علي ان اضع الغياب هنا وليس هنا .
وهل يجب ان يكون مجموع الاساسي بخط اكبر من الخطوط الاخرى .
وهل سيعمل Producer  الاضافة دائما بشكل طبيعي .
وهل استخدم View هنا ام الافضل ان يكون Producer  
سيتعبني هذا الولد


RE: تحليل قاعدة بيانات موظفين ورواتب - Delphi4Us - 19-06-2018

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

كما قلت لكم انني بنهاية المنظومة سوف احتاج الى سؤالين او ثلاث في استعلامات معقدة
الاستعلامات المعقدة لا مشكلة فيها مرت بسلام و ضبطتها بدون اي مشاكل
المشكلة الان انني صممت اجراء مخزن بقاعدة البيانات لاضافة مرتبات الموظفين وعندما اشغله من قاعدة البيانات يعمل ويظيف كل الموظفين بجدول المرتبات ولكن عندما قمت يتنفيذه من البرنامج EXEProc يقوم فقط باظافة موظف واحد فقط بالاحرى الموظف الاول ويتوقف
ما الذي فاتني في هذا
بالنسبة الى الاجراء هاهو هنا .

PHP كود :
begin
 
   
      
  for select
  morateb
.id,  morateb.alawanaw, morateb.degernaw, morateb.tameez,
 
 morateb.fmkafa2, morateb.absent,  morateb.mcase, morateb.kanon,
 
 coalesce(morateb.ohter_alawa,0),  coalesce(morateb.other_kasm,0)
 
 from morateb
   into
    
:ID, :ALAWANAW, :DEGERNAW, :TAMEEZ, :FMKAFA2, :absent, :MCASE,
 
   :kanon, :ohter_alawa,  :other_kasm 
   
     
do
 
   begin
    EXECUTE PROCEDURE PROC_GETASASY
(DEGERNAW,kanon,ALAWANAW) returning_values (:ASASY);
 
   EXECUTE PROCEDURE PROC_MKAFA (ID) returning_values (:Getmkafa);
 
   EXECUTE PROCEDURE PROC_GETDAMAN (ASASY) returning_values (:DAMAN,:TADAMN,:JHAD);
 
   insert into fcheck
      
(
 
   fcheck.chahr, fcheck.darga, fcheck.alawa,  fcheck.asasy,
 
   fcheck.tameez, fcheck.fmkafa, fcheck.fmkafa2,  fcheck.absent,
 
   fcheck.daman, fcheck.tadamn, fcheck.jhad, fcheck.ohter_alawa,
 
   fcheck.other_kasm,  fcheck.mcase,  fcheck.TARHEL, fcheck.mindex
      
)
 
     values 
      
(
 
      cast(:SENDDATE as date), :DEGERNAW,coalesce(:ALAWANAW,0),
 
      :ASASY , coalesce(:TAMEEZ,0), coalesce(:Getmkafa,0),
 
      coalesce(:FMKAFA2,0), coalesce(:absent,0), :DAMAN, :TADAMN,
 
      :JHAD, coalesce(:OHTER_ALAWA,0), coalesce(:other_kasm,0), :MCASE,
 
      0, :ID
      
) ;

 
   
      suspend
;

 
   end

  
  
end 


كما قلت من قاعدة البيانات يعمل بشكل طبيعي ولكن لزيادة الشرح لعل فيه Bugs او ملاحظة
هنا اقوم بقراءة بعض الحقول المطلوبة ووضعها بمتغيرات Out
PHP كود :
 
  for select
  morateb
.id,  morateb.alawanaw, morateb.degernaw, morateb.tameez,
 
 morateb.fmkafa2, morateb.absent,  morateb.mcase, morateb.kanon,
 
 coalesce(morateb.ohter_alawa,0),  coalesce(morateb.other_kasm,0)
 
 from morateb
   into
    
:ID, :ALAWANAW, :DEGERNAW, :TAMEEZ, :FMKAFA2, :absent, :MCASE,
 
   :kanon, :ohter_alawa,  :other_kasm 


هنا احسب قيمة المرتب والخصميات والعلاوات والمكافأت في اجراءات فرعية واستقبالها بمتغيرات طبعا تعتمد على الاستعلام Select السابق
حتى الان مرحلة اعداد البيانات فقط

PHP كود :
EXECUTE PROCEDURE PROC_GETASASY(DEGERNAW,kanon,ALAWANAW) returning_values (:ASASY);
 
   EXECUTE PROCEDURE PROC_MKAFA (ID) returning_values (:Getmkafa);
 
   EXECUTE PROCEDURE PROC_GETDAMAN (ASASY) returning_values (:DAMAN,:TADAMN,:JHAD); 

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

PHP كود :
insert into fcheck
      
(
 
   fcheck.chahr, fcheck.darga, fcheck.alawa,  fcheck.asasy,
 
   fcheck.tameez, fcheck.fmkafa, fcheck.fmkafa2,  fcheck.absent,
 
   fcheck.daman, fcheck.tadamn, fcheck.jhad, fcheck.ohter_alawa,
 
   fcheck.other_kasm,  fcheck.mcase,  fcheck.TARHEL, fcheck.mindex
      
)
 
     values 
      
(
 
      cast(:SENDDATE as date), :DEGERNAW,coalesce(:ALAWANAW,0),
 
      :ASASY , coalesce(:TAMEEZ,0), coalesce(:Getmkafa,0),
 
      coalesce(:FMKAFA2,0), coalesce(:absent,0), :DAMAN, :TADAMN,
 
      :JHAD, coalesce(:OHTER_ALAWA,0), coalesce(:other_kasm,0), :MCASE,
 
      0, :ID
      
) ; 



RE: تحليل قاعدة بيانات موظفين ورواتب - S.FATEH - 19-06-2018

السلام عليكم
ممكن اجراء دلفي ...