اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

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

Public Function CheckInkhirat(ByRef ID As Integer) As String
    On Error GoTo err_CheckInkhirat

    Dim yearNow As Integer, totalPaid As Currency, totalPaidLastYear As Currency
    Dim paymentMarch As Boolean, paymentJuly As Boolean
    Dim t As Integer, t1 As Integer
    Dim result_haj As Variant, latestDate As Variant
    Dim todayDate As Date, yearsDifference As Long

    ' تحديد السنة
    If Month(Date) < 3 Then
        yearNow = Year(Date) - 1
        t = 1
    Else
        yearNow = Year(Date)
        t = 2
    End If

    ' الحصول على تاريخ اليوم
    todayDate = Date

    ' إجمالي المبلغ المدفوع
    totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Loan_ID = 0"), 0)

    ' تحقق من نوع الامتياز
    Select Case [Forms]![FrmMenah]![Etar]
        Case "المنح العائلية"
            result_haj = DLookup("[Menha_Date]", "[Mena7]", "[EmployeeID] =" & ID & " And [Menha_ID] =" & [Forms]![FrmMenah]![Frm_sub].[Form]![CmdMenha] & " And [Menha_ID] =11")
        Case "التعويضات الطبية"
        result_haj = Null
            If [Forms]![FrmMenah]![Frm_sub].[Form]![cmdSanitaire] = 2 Then
                latestDate = Nz(DMax("[Sanitaire_Date]", "[Sanitaire]", "[EmployeeID] =" & [Forms]![FrmMenah]![EmployeeID] & " And [Nom_Beneficiaire] ='" & [Forms]![FrmMenah]![Frm_sub].[Form]![Nom_Beneficiaire] & "'"), #10/1/2000#)
                yearsDifference = DateDiff("yyyy", latestDate, todayDate)
                t1 = IIf(yearsDifference < 2, 1, 2)
            End If
    End Select

    ' التحقق من دفع المبلغ في مارس ويوليو
    paymentMarch = Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Month(Auto_Date) = 3"), 0) = 1500
    paymentJuly = Nz(DLookup("Payment_Made", "tbl_Loans", "EmployeeID = " & ID & " AND Year(Auto_Date) = " & yearNow & " AND Month(Auto_Date) = 7"), 0) = 1500

    ' بناء الرسالة بناءً على الشروط
    If totalPaid = 3000 Then
        Dim message As String
        message = "عزيزي المنخرط(ة)، يمكنك الاستفادة من "

        If t = 1 Then
            message = message & "الامتيازات لأنك دفعت مبلغ الانخراط الخاص بالسنة الماضية كاملاً."
        ElseIf t = 2 Then
            message = message & "جميع الامتيازات لأنك دفعت مبلغ الانخراط كاملاً"
            If paymentMarch And paymentJuly Then
                message = message & " على دفعتين."
            Else
                message = message & "."
            End If
        End If

        If Not IsNull(result_haj) Then
            message = message & vbNewLine & "ولكن قد استفت من منحة الحج لعام " & vbNewLine & result_haj
        ElseIf IsNull(result_haj) And t1 = 1 Then
            message = message & vbNewLine & "ولكن قد استفت من منحة النظارات الطبية بتاريخ " & vbNewLine & latestDate
        End If

        CheckInkhirat = message
    Else
        CheckInkhirat = "عزيزي المنخرط(ة)، لا يمكنك الاستفادة من الامتيازات لأنك لم تدفع مبلغ الانخراط."
    End If

    Exit Function

err_CheckInkhirat:
    MsgBox "خطأ رقم " & Err.Number & ": " & Err.Description, vbCritical, "خطأ"
    CheckInkhirat = "حدث خطأ أثناء التحقق من بيانات الانخراط."
End Function

 

قام بنشر

تمام استاذ الكود يعمل بشكل جيد في كلتى الحالتين

منحة الحج - تعويض النظارات الطبية

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

ربي يحفظك

 

قام بنشر

استاذ Barna لنفرض اننا  اشترطنا مستقبلا منحة الزواج [Menha_ID] =5 مرة واحدة فقط

فكيف يكون التعديل على الكود

result_Zawaj = DLookup("[Menha_Date]", "[Mena7]", "[EmployeeID] =" & ID & " And [Menha_ID] =" & [Forms]![FrmMenah]![Frm_sub].[Form]![CmdMenha] & " And [Menha_ID] =5")

 

قام بنشر
في 15‏/12‏/2024 at 23:11, كريمو2 said:

استاذ Barna لنفرض اننا  اشترطنا مستقبلا منحة الزواج [Menha_ID] =5 مرة واحدة فقط

فكيف يكون التعديل على الكود

حياك الله .....

بسبب التصميم لديك كل نوع منحة في جدول ( المفترض تون بيانات استحقاق المنح كلها في جدول واحد بدل تعدد الجداول ) وبسبب ان برنامجك اعتقد مصمم وتعمل عليه حاليا .... اقترح عليك او فكرت بانشاء جدول صغير تحسبا للتعديلات مثل ممكن في يوم من الايام تريد نعديل منحة معينة بحيث تصبح النظارات الطبية كل سنه مثلا او يصبح الحج كل 10 سنوات او حتى تضيف منح اخرى للشرط ....
اقتراحي عمل جدول صغير ونسجل فيه كل المنح المشروطة .... مثلا انظر الصورة ...... 100 تعني مره واحدة في العمر

 

 

1.jpg

  • Like 1
قام بنشر (معدل)

فكرة جيدة استاذ لقد انشأت حقل عدد الاستفادة Beriod في كلى الجدولين    N_Sanitaire وN_Menha وبه ارقام -1مرة واحدة      -100اكثر من مرة.              فكيف يكون التعديل

تم تعديل بواسطه كريمو2
قام بنشر

فكرتي كانت جدول واحد يضاف مثل الصورة ونسجل فيه ما نريد عشان لا نكرر الاكواد لكل جدل ... انظر الصورة

لو كانت المنح كلها في جدول واحد كان افضل ... لان برنامجك في كثرة جداول

  • Like 1
قام بنشر (معدل)
47 دقائق مضت, كريمو2 said:

انظر استاذ مثل هذا كما في الصورة452199281_.png.44242b08803a4f10b84066b801d2ec1b.png

هل انت بصدد تعديل شامل على البرنامج ام ماذا؟؟

لاننا لا نريد تعديل الاكواد لكثرتها

فقط نريد انشاء جدول واحد جديد فقط

اقوم لإنشاء الجدول واعدل في المرفق السابق .... انتظرني

تم تعديل بواسطه Barna
قام بنشر
2 ساعات مضت, كريمو2 said:

منتظرك ان شا ء الله استاذ

طيب لاحظ الشرح التالي :::::::::::::::::::::::::::::

اولا:: الجدول tbl_MenhaRules يجب كتابة اسم المنحة ورقم المنحة ونوع المنحة كما هو موجود بالجداول الموجودة لديك دون تغيير ( اوكد دون تغير لا في الرقم ولا في الاسم ولا في نوع المنحة) كما في الصورة

ثانيا:::: المنح التي يكتب في هذا الجدول فقط التى عليها شروط ( 1 تعني سنه - 2 تعني سنتان وهكذا - اما التي تصرف مرة واحدة فسجلها 100 )

ثالثا::: بقية المنح لا تسجل ابدا في هذا الجدول ( يعني في النهاية سوف يون لديك عدد سجلات بسيطة في هذا الجدول الجديد tbl_MenhaRules )

رابعا :::: طبق على المثال المرفق واعلمنا بالنتيجة

 

1.jpg

2.jpg

BAR_A.mdb

  • Like 1
قام بنشر
18 دقائق مضت, Barna said:

ثالثا::: بقية المنح لا تسجل ابدا في هذا الجدول ( يعني في النهاية سوف يون لديك عدد سجلات بسيطة في هذا الجدول الجديد tbl_MenhaRules )

شكرا استاذ على الاهتمام

اولا قبل التجربة على المرفق لم افهم انك أشرت الى عدم تسجيل منح اخرى في هذا الجدول tbl_MenhaRules

 اين بقية المنح الاخرى وهل يتم ادراجها ام لا  

قام بنشر (معدل)
3 دقائق مضت, كريمو2 said:

اولا قبل التجربة على المرفق لم افهم انك أشرت الى عدم تسجيل منح اخرى في هذا الجدول tbl_MenhaRules

هذا الجدول فقط للمنحة المحددة بفترات

يعني مثلا كل سنة ... كل سنتين ... مرة واحدة

المنح الأخرى وايضا المنح المسجلة هنا كما هي في جداولها الاساسية لا تغيرها 

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

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

تم تعديل بواسطه Barna
قام بنشر

شكرا استاذ على الطرح فكرة ممتازة جدا 

ولكن فما مشكلة في الكود عند انقضاء مدة عامين ومن حقة الاستفادة مجددا

100.jpg.188d1815d77d47288e379305813550ad.jpg

 

 

 

200.rar

قام بنشر
6 دقائق مضت, كريمو2 said:

ولكن فما مشكلة في الكود عند انقضاء مدة عامين ومن حقة الاستفادة مجددا

لم افهم عليك ... لاني اخاطبك بالهاتف

قام بنشر
10 دقائق مضت, Barna said:

لم افهم عليك ... لاني اخاطبك بالهاتف

انظر استاذ

كريمو1 استفاد في سنة  2021 بنظارات طبية 

في سنة 2024 من حقة الاستفادة مجددا ....... صح

ولكن يظهر

اولا يوافقك الاستفادة 

300.jpg.f84ce7b1bc29e69feb054285ef32f31a.jpg

ثانيا يرقض تثبيتها

400.jpg.1a39f494a20241208a29a6fb15e21282.jpg

 

قام بنشر
3 دقائق مضت, كريمو2 said:

ثانيا يرقض تثبيتها

عند توفر جهاز حاسب .. انظر فيها

طيب جرب بقية الاحتمالات ... واعلمنا بها النظر بها جميعا ان شاء الله تعالى

قام بنشر
7 دقائق مضت, Barna said:

طيب جرب بقية الاحتمالات ... واعلمنا بها النظر بها جميعا ان شاء الله تعالى

سأنظر فيها غدا بحول الله بالتجربة المملة لجميع الاحتمالات في مكان العمل ان شاء الله وسأوافيك بالرد  

قام بنشر
2 ساعات مضت, كريمو2 said:

كل شي تمام استاذ بقيت المشكلة التي اشرت لها في الرد السابق

طيب الحمد لله ....

جرب كدة المشكلة السابقة واعلمنا بالنتيجة

 

BAR_A.mdb

قام بنشر (معدل)
2 ساعات مضت, Barna said:

جرب كدة المشكلة السابقة واعلمنا بالنتيجة

 

استاذ هل تم التعديل على الكود  هنا فقط

يعني "*النظارات*" تم استبدالها ب "*لا يمكن*"

' التحقق من استحقاق الامتياز قبل المتابعة
If (result Like "*كاملا*" And Not result Like "*لا يمكن*") Then
    ' طلب تأكيد تثبيت المنحة
    If MsgBox("هل تريد تثبيت تاريخ التعويض الطبي؟", vbYesNo + vbQuestion, "تأكيد") = vbYes Then
تم تعديل بواسطه كريمو2

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   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

×   Your previous content has been restored.   Clear editor

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

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information