اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

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

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

لدي قاعدتين ( Zakat1 و Zakat2 ) تحتوي على نفس الجداول والحقول مع اضافة رقم 2 فقط في اسماء جداول القاعدة Zakat2

ويوجد في القاعده Zakat1 نموذجين FormZakat1 و FormZakat2
المطلوب 
1- عند فتح نموذج FormZakat1 يقوم بالبحث عن الفواتير الموجوده بالقاعده Zakat1 وليست موجوده بالقاعده Zakat2 ومن ثم يقوم بترحيلها كامله سوى الجدول الرئيسي او الفرعي ثم تحذف هذه الفواتير من الجداول بعد فترة زمنيه محدده مثلاً (30) يوم 
2- عند فتح نموذج FormZakat2 يقوم بإسترجاع الفاتورة المحدده في المربع Text1 من القاعده Zakat2 الى القاعده Zakat1 شرط ان تكون بنفس رقم الفاتورة ولا يتم حذفها من القاعده Zakat2

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

 

Zakat.rar

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


1- عند فتح نموذج FormZakat1 يقوم بالبحث عن الفواتير الموجوده بالقاعده Zakat1 وليست موجوده بالقاعده Zakat2 

 

عليكم السلام .. اهلا ابا حاتم

رأيي ان تستغني عن عملية البحث هذه .. لتجنب بعض المحاذير التي قد تحدث

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

اما عملية الحذف فهي ايضا خطيرة لأننا نضع في اعتبارنا جميع الاحتمالات ( قد لا تصل السجلات الى القاعدة الثانية لأسباب عدة يعرفها غالب المبرمجين )

فأرى ان تكون عملية الحذف وهمية لفترة محددة  ( من اجل زيادة الأمان) وتتم لاحقا على فترات

الحذف الوهمي هي اضافة حقل نعم/لا  للتحكم في ظهور السجلات من عدمه

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

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

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

قصدي انها لا يتم حذفها مباشرة .. وهذا الذي ذكرته انت ان يتم حذفها بعد شهر

الحذف الآلي لا انصح به

ما المانع ان يكون هناك زر للحذف وحقل يبين عدد السجلات وتاريخ ترحيلها .. بل حقول .. لنفترض ان الترحيل يتم كل 10 ايام  .. يتم عرض نموذج مستمر  كل سجل امامه زر للحذف وفي السجل حقلين واحد بعدد السجلات والآخر تاريخ الترحيل .

قام بنشر

كلامك جميل اخي ابو خليل 
ولكن السؤال هل يتم الحذف كل سجل على حده
اذا كان هذا القصد فالامر متعب على المستخدم 
اتمنى اجد حل سهل وعملي وفيه امان عالي على البيانات وخاصه انها خاصه بالزكاة والدخل

 

قام بنشر
27 دقائق مضت, سلمان الشهراني said:

كلامك جميل اخي ابو خليل 
ولكن السؤال هل يتم الحذف كل سجل على حده
اذا كان هذا القصد فالامر متعب على المستخدم 

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

30 دقائق مضت, سلمان الشهراني said:


اتمنى اجد حل سهل وعملي وفيه امان عالي على البيانات وخاصه انها خاصه بالزكاة والدخل

 

من اجل هذا  كتبت رؤيتي حول العملية .. حول نقطتين او اجرائين في فكرتك الأصلية :

1- المقارنة بين السجلات في قاعدتين متباعدتين 

1- الحذف الآلي

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

وعليكم السلام ورحمة الله وبركاته أستاذ @سلمان الشهراني ، لي مداخلة بسيطة :-

في مثالك لاحظت ان رقم الفاتورة مكرر في سجلات القاعدة الأولى ، هل هذا منطقي أم هو مجرد مثال ؟؟

في حال كان هو فعلاً كذلك ، فعلى أي أساس نريد استرجاع فاتورة محددة قد يكون لها سجلات مكررة بنفس رقم الفاتورة ؟؟؟؟؟

على العموم إليك اقتراحي :-

في زر الترحيل الى القاعدة الأولى استخدم الكود التالي :-

Private Sub COM1_Click()
    On Error GoTo ErrorHandler
    
    Dim db1 As DAO.Database
    Dim db2 As DAO.Database
    Dim rst1 As DAO.Recordset
    Dim rstCheck As DAO.Recordset
    Dim strSQL As String
    Dim strCheck As String
    Dim strPath2 As String
    Dim intCount As Integer
    
    strPath2 = CurrentProject.Path & "\Zakat2.accdb"
    
    Set db1 = CurrentDb
    Set db2 = DBEngine.OpenDatabase(strPath2)
    
    strCheck = "SELECT COUNT(*) AS NewCount " & _
               "FROM TBInvoiceMain " & _
               "WHERE ID NOT IN " & _
               "(SELECT ID FROM [;DATABASE=" & strPath2 & "].TBInvoiceMain2)"
               
    Set rstCheck = db1.OpenRecordset(strCheck)
    If Not rstCheck.EOF Then
        If rstCheck!NewCount = 0 Then
            MsgBox "لا توجد فواتير جديدة للترحيل", vbInformation + vbMsgBoxRight, ""
            GoTo CleanUp
        End If
        
        If MsgBox("سيتم نقل " & rstCheck!NewCount & " فاتورة . هل تريد المتابعة؟", _
                  vbQuestion + vbMsgBoxRight + vbYesNo, "") = vbNo Then
            GoTo CleanUp
        End If
    End If
    
    strSQL = "SELECT DISTINCT TBInvoiceMain.* " & _
             "FROM TBInvoiceMain " & _
             "WHERE InvoiceNumber NOT IN " & _
             "(SELECT InvoiceNumber FROM [;DATABASE=" & strPath2 & "].TBInvoiceMain2)"
    
    Set rst1 = db1.OpenRecordset(strSQL)
    intCount = 0
    
    If Not rst1.EOF Then
        Do While Not rst1.EOF
            On Error Resume Next
            
            strSQL = "INSERT INTO [;DATABASE=" & strPath2 & "].TBInvoiceMain2 " & _
                    "SELECT ID, ID2, InvoiceNumber, FormNumber, InvoiceType, UUID, " & _
                    "InvoiceSerial, InvoiceDate, InvoiceTime, InvoiceTypeCodeID, " & _
                    "InvoiceTypeCodeName, InvoiceHash, DateSupply, EndDateSupply, " & _
                    "PaymentMethod, InstructionNote, TotalDiscount, DiscountReason, " & _
                    "TaxCode, TaxCodeName, TaxPercentage, InvoiceQR, InvoiceXmlName, " & _
                    "InvoiceXmlFullPath, EncodedInvoice, XMLCreated, SendingStatus, " & _
                    "ZatcaStatusCode, ZatcaXMLSent, ZatcaWarningMessage, ZatcaErrorMessage, " & _
                    "ClearedInvoice, BuyerStreetName, BuyerAdditionalStreetName, " & _
                    "BuyerBuildingNumber, BuyerPlotIdEntification, BuyerCityName, " & _
                    "BuyerPostalCode, BuyerCountrySubEntity, BuyerCitySubDivisionName, " & _
                    "BuyerCompanyName, BuyerTaxNumber, clearedXmlFullPath, BuyerCommercialRegistrationNo " & _
                    "FROM TBInvoiceMain WHERE InvoiceNumber = " & rst1!InvoiceNumber
            db1.Execute strSQL
            
            If Err.Number = 0 Then
                
                strSQL = "INSERT INTO [;DATABASE=" & strPath2 & "].TBInvoiceSub2 " & _
                        "SELECT ID, InvoiceNumber, ItemName, Quantity, ItemPriceBeforeTax, " & _
                        "TaxPercentage, TaxCode, Discount " & _
                        "FROM TBInvoiceSub WHERE InvoiceNumber = " & rst1!InvoiceNumber
                db1.Execute strSQL
                
                If Err.Number = 0 Then
                    intCount = intCount + 1
                End If
            End If
            
            On Error GoTo ErrorHandler
            rst1.MoveNext
        Loop
        
        strSQL = "DELETE TBInvoiceSub.* " & _
                 "FROM TBInvoiceSub INNER JOIN TBInvoiceMain ON TBInvoiceMain.ID = TBInvoiceSub.ID " & _
                 "WHERE DateDiff('d', TBInvoiceMain.InvoiceDate, Date()) > 30"
        db1.Execute strSQL
        
        strSQL = "DELETE TBInvoiceMain.* " & _
                 "FROM TBInvoiceMain " & _
                 "WHERE DateDiff('d', InvoiceDate, Date()) > 30"
        db1.Execute strSQL
        
        If intCount > 0 Then
            MsgBox "تم ترحيل " & intCount & " فاتورة بنجاح" & vbCrLf & _
                   "وتم حذف الفواتير الأقدم من 30 يوم", vbInformation + vbMsgBoxRight, ""
        Else
            MsgBox "لم يتم ترحيل أي فواتير", vbInformation + vbMsgBoxRight, ""
        End If
    End If
    
CleanUp:
    If Not rst1 Is Nothing Then rst1.Close
    If Not rstCheck Is Nothing Then rstCheck.Close
    Set rst1 = Nothing
    Set rstCheck = Nothing
    If Not db2 Is Nothing Then db2.Close
    Set db2 = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox "حدث خطأ أثناء عملية الترحيل", vbCritical + vbMsgBoxRight, ""
    Resume CleanUp
End Sub

 

أما في نموذج استرجاع رقم فاتورة محدد ، استخدم الكود التالي :-

Private Sub COM1_Click()
    On Error GoTo ErrorHandler
    
    If IsNull(Me.Text1) Or Trim(Me.Text1) = "" Then
        MsgBox "الرجاء إدخال رقم الفاتورة المطلوب استرجاعها", vbExclamation + vbMsgBoxRight, ""
        Me.Text1.SetFocus
        Exit Sub
    End If
    
    If Not IsNumeric(Me.Text1) Then
        MsgBox "الرجاء إدخال رقم فاتورة صحيح", vbExclamation + vbMsgBoxRight, ""
        Me.Text1.SetFocus
        Exit Sub
    End If
    
    Dim db1 As DAO.Database
    Dim db2 As DAO.Database
    Dim rst1 As DAO.Recordset
    Dim strSQL As String
    Dim strPath2 As String
    Dim lngInvoiceNumber As Long
    
    strPath2 = CurrentProject.Path & "\Zakat2.accdb"
    lngInvoiceNumber = CLng(Trim(Me.Text1))
    
    Set db1 = CurrentDb
    Set db2 = DBEngine.OpenDatabase(strPath2)
    
    strSQL = "SELECT COUNT(*) AS InvCount " & _
             "FROM [;DATABASE=" & strPath2 & "].TBInvoiceMain2 " & _
             "WHERE InvoiceNumber = " & lngInvoiceNumber
    
    Set rst1 = db1.OpenRecordset(strSQL)
    
    If rst1!InvCount = 0 Then
        MsgBox "الفاتورة رقم " & lngInvoiceNumber & " غير موجودة في قاعدة البيانات الثانية", vbExclamation + vbMsgBoxRight, ""
        GoTo CleanUp
    End If
    
    strSQL = "SELECT COUNT(*) AS InvCount FROM TBInvoiceMain " & _
             "WHERE InvoiceNumber = " & lngInvoiceNumber
    
    Set rst1 = db1.OpenRecordset(strSQL)
    
    If rst1!InvCount > 0 Then
        If MsgBox("الفاتورة موجودة بالفعل في القاعدة الحالية . هل تريد استرجاعها مرة أخرى؟", _
                  vbQuestion + vbYesNo + vbMsgBoxRight, "") = vbNo Then
            GoTo CleanUp
        End If
    End If
    
    strSQL = "INSERT INTO TBInvoiceMain " & _
             "SELECT * FROM [;DATABASE=" & strPath2 & "].TBInvoiceMain2 " & _
             "WHERE InvoiceNumber = " & lngInvoiceNumber
    
    db1.Execute strSQL
    
    strSQL = "INSERT INTO TBInvoiceSub " & _
             "SELECT * FROM [;DATABASE=" & strPath2 & "].TBInvoiceSub2 " & _
             "WHERE InvoiceNumber = " & lngInvoiceNumber
    
    db1.Execute strSQL
    
    MsgBox "تم استرجاع الفاتورة رقم " & lngInvoiceNumber & " بنجاح", vbInformation + vbMsgBoxRight, ""
    
    Me.Text1 = ""
    Me.Text1.SetFocus
    
CleanUp:
    If Not rst1 Is Nothing Then rst1.Close
    Set rst1 = Nothing
    If Not db2 Is Nothing Then db2.Close
    Set db2 = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox "حدث خطأ أثناء عملية الاسترجاع", vbCritical + vbMsgBoxRight, ""
    Resume CleanUp
End Sub

 

تم الإعتماد هنا على رقم الفاتورة من الحقل InvoiceNumber ، وأخبرني بالنتيجة .

 

المرفق بعد التعديل ..

Zakat.zip

 

.

تم تعديل بواسطه Foksh
تعديل خطأ إملائي
  • Like 2
قام بنشر
8 ساعات مضت, kkhalifa1960 said:

استاذ @سلمان الشهراني ممكن استخدام هذه الفكرة كما بالمرفق لكن ماينفع معها علاقات . جرب زياد ادخالات .ووافني بالرد .:fff:

 

عمل جميل وفكرة جميله تسلم وفقك الله والف شكر

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

في مثالك لاحظت ان رقم الفاتورة مكرر في سجلات القاعدة الأولى ، هل هذا منطقي أم هو مجرد مثال ؟؟

في حال كان هو فعلاً كذلك ، فعلى أي أساس نريد استرجاع فاتورة محددة قد يكون لها سجلات مكررة بنفس رقم الفاتورة ؟؟؟؟؟

المرفق والعمل ممتااااز جدا وقمة الابداع ولكن يحتاج بعض الاضافات والتعديل
اولا طال عمرك رقم الفاتورة هو حقل ID وهو الحقل الذي يتم التعامل معه في المقارنه او عمليات الاسترجاع وهو رقم الفاتورة الخاص بالزكاة والدخل
اما بنسبه لحقل ID2 وحقل InvoiceNumber  فهي ارقام خاصه بالنظام غير مهمه في عملية الترحيل او الاسترجاع 
 

المطلوب اضافته  
1- امكانية تحديد مسار القاعده Zakat2 ليتم عملية الترحيل والاسترجاع لها ومنها حسب المسار المحدد
2- اعتماد حقل ID هل حقل الفاتورة ويتم التعامل معه فقط 
3- عند عملية استرجاع الفاتورة برقم الفاتورة (ID)  للقاعده Zakat1 يتم حذفه مره اخرى من القاعده Zakat1 مع اول عملية حذق بناء على المده 30  مع العلم انه لابد ان يبقى في القاعده Zakat2 بعد الاسترجاع 
3- لوحظ حاليا انه في الجدول الفرعي عند الترحيل لايتم نقلها بالشكل الصحيح كماهي في القاعده الاساسيه

وكما ذكرت ان هذه الفواتير خاصه بالزكاة والدخل ولاتحتمل الخطاء 
شاكر لكم جهدكم  وفقكم الله 

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

1- امكانية تحديد مسار القاعده Zakat2 ليتم عملية الترحيل والاسترجاع لها ومنها حسب المسار المحدد

3 ساعات مضت, سلمان الشهراني said:

2- اعتماد حقل ID هل حقل الفاتورة ويتم التعامل معه فقط 

تم التعديل بإذن الله ..

4 ساعات مضت, سلمان الشهراني said:

3- عند عملية استرجاع الفاتورة برقم الفاتورة (ID)  للقاعده Zakat1 يتم حذفه مره اخرى من القاعده Zakat1 مع اول عملية حذق بناء على المده 30  مع العلم انه لابد ان يبقى في القاعده Zakat2 بعد الاسترجاع 

تم التعديل بحيث عند استرجاع فاتورة ( جرب على الفاتورة رقم 4 حيث تم التعديل للتاريخ = 2024-11-16 للتجربة) ، سيتم سؤال المستخدم انه هذه الفاتورة مضى عليها أكثر من 30 يوم ، هل تريد الحذف ( الأمر متروك للمستخدم بالحذف أو لا ..)

4 ساعات مضت, سلمان الشهراني said:

4- لوحظ حاليا انه في الجدول الفرعي عند الترحيل لايتم نقلها بالشكل الصحيح كماهي في القاعده الاساسيه

في اي جزء لاحظت انه لا يتم الترحيل بشكل صحيح ...؟ فبناءً على الملف المرفق تمت التجربة على السجلات بشكل منفصل والتدقيق قبل وبعد الترحيل أو الإستيراد . اذا تمكنت من ارفاق صورة أو توضيح لتلافي المشكلة ، وأكيد في الأمور المالية والحسابية الخطأ يكون قاتلاً :blink:

 

Zakat.zip

 

قام بنشر

ما شاء الله لا قوة الا بالله .. اخي فادي ولا اجمل .. سلمت أناملك

سبحان الذي منحك الصبر والتمكن.. على هذا العمل الرائع والدقيق

الحقيقة هذه الجمل البرمجية الجميلة تدرس وتحفظ كمرجع  مهم للغاية

لذا تم السطو على كم سطر منها .. :wavetowel: فأعتذر .. زادك الله علما

انا كنت اعمل على طلب الأخ سلمان وقت طلب مني ذلك ولكني توقفت لمشكلات ظهرت امامي وقد تمت معالجتها بفضل الله

الفكرة التي يجب ان يكون تصميم الجداول قائم عليه كالتالي :

1- وجود حقل غير قابل للتكرار في جميع الجداول خاصة الجدول الفرعي الخارجي

2- خصائص العلاقة بين الجدول الرئيس والفرعي ( في القاعدة الحالية لاباس من توالي التحديث والحذف وهو جيد لاختصار عملية الحذف .. اما في القاعدة الخارجية فممنوع ويكفي التكامل فقط)

3- اضافة حقل نعم لا  من اجل تأكيد التصدير وايضا الحذف

4- عمل تصفية بين تاريخين لحصر السجلات المراد اجراء العمليات عليها

5- لا يلزم الانتظار لشهر او غيره في عملية الحذف وانما تتم مباشرة بعد الترحيل

تم العمل على النحو التالي وهي وجهة نظر تخصني وتحقيقا لما تفضل السائل بتأكيده : ((( وكما ذكرت ان هذه الفواتير خاصه بالزكاة والدخل ولاتحتمل الخطاء )))

لذا :

لا يسمح باختيار قاعدة الببانات الخارجية من قبل المستخدم وانما توضع بجانب قاعدة البيانات الاساسية

تم الضبط ولا خوف من اي خطأ مقصود او غير مقصود

هذا للترحيل والحذف :

 Dim strPath As String
      strPath = CurrentProject.Path & "\Zakat2.accdb"
        
        DoCmd.SetWarnings False
          DoCmd.RunSQL "INSERT INTO [;DATABASE=" & strPath & "].TBInvoiceMain2 " & _
                       "SELECT TBInvoiceMain.* FROM TBInvoiceMain " & _
            "WHERE TBInvoiceMain.chekForDel=True"

          DoCmd.RunSQL "INSERT INTO [;DATABASE=" & strPath & "].TBInvoiceSub2 " & _
                       "SELECT TBInvoiceSub.* FROM TBInvoiceMain " & _
         "INNER JOIN TBInvoiceSub ON TBInvoiceMain.ID = TBInvoiceSub.ID " & _
         "WHERE TBInvoiceMain.chekForDel=True"
      
      DoCmd.RunSQL "DELETE TBInvoiceMain.*, TBInvoiceMain.chekForDel FROM TBInvoiceMain " & _
"WHERE TBInvoiceMain.chekForDel=True"
          DoCmd.SetWarnings True

وهذا للاسترجاع :

lngInvoiceNumber = CLng(Trim(Me.Text1))
    DoCmd.SetWarnings False
       DoCmd.RunSQL "INSERT INTO TBInvoiceMain " & _
             "SELECT * FROM [;DATABASE=" & strPath & "].TBInvoiceMain2 " & _
             "WHERE InvoiceNumber = " & lngInvoiceNumber
       DoCmd.RunSQL "INSERT INTO TBInvoiceSub " & _
             "SELECT * FROM [;DATABASE=" & strPath & "].TBInvoiceSub2 " & _
             "WHERE InvoiceNumber = " & lngInvoiceNumber
    DoCmd.SetWarnings True
MsgBox "تم الاسترجاع", , ""

 

Zakat.rar

  • Thanks 2
قام بنشر
16 دقائق مضت, ابوخليل said:

لذا تم السطو على كم سطر منها .. :wavetowel: فأعتذر .. زادك الله علما

 

وإياكم أستاذنا الكبير @ابوخليل ، بعض ما عندكم أثابنا وأثابكم الله :wub:

 

استولي على ما شئت :yes: ، فهذا تعليمكم 

 

أما بالنسبة لتعديلاتي الأخيرة ، فقد كانت حسب رغبة أخونا الكريم @سلمان الشهراني ، وطبعاً لا شك فيما تفضلتم به من اقتراحات خاصة ببناء الجداول .

  • Thanks 1
قام بنشر (معدل)
56 دقائق مضت, ابوخليل said:

نا كنت اعمل على طلب الأخ سلمان وقت طلب مني

بيض الله وجهك اخي واستاذي ومعلمي ابو خليل افكارك ابداع وجميله والعمل اجمل وسامحنا على تعبك 
ولكن تم البداء والعمل على فكرة الاستاذ Foksh
عاجز عن الشكر لك استاذي الغالي

واتمنى المواصله على عمل الاخ Foksh   لكونها اقرب للمطلوب
وسوف اقوم بطرح الملاحظات الخاصه بالبرنامج الذي تم عمله الاستاذ Foksh حتى يكتمل باذن الله وفقكم الله جميعا 

 

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

هذا الموضوع اعتبره فريد من نوعه  وخاصة بتفاصيله

لو بحث احد عن مثله لن يجد بغيته الا هنا في هذا المنتدى وهذا الموضوع بالذات

تنوع الأفكار وتنوع الحلول مطلب برمجي

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

  • Like 1
قام بنشر (معدل)
30 دقائق مضت, سلمان الشهراني said:

بيض الله وجهك اخي واستاذي ومعلمي ابو خليل افكارك ابداع وجميله والعمل اجمل وسامحنا على تعبك 
ولكن تم البداء والعمل على فكرة الاستاذ Foksh
عاجز عن الشكر لك استاذي الغالي

واتمنى المواصله على عمل الاخ Foksh   لكونها اقرب للمطلوب
وسوف اقوم بطرح الملاحظات الخاصه بالبرنامج الذي تم عمله الاستاذ Foksh حتى يكتمل باذن الله وفقكم الله جميعا 

 

أعانكم الله على ما بدأتم ،، ونسأل الله التوفيق لنا ولكم ، ومتابع معك إن شاء الله بتكاتف الجهود طبعاً 

تم تعديل بواسطه Foksh

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