نظام إدارة المصروفات والإيرادات

دليل شامل لإنشاء نظام محاسبي متكامل باستخدام Microsoft Access

جدول المحتويات

مقدمة عن النظام

الهدف من النظام

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

متابعة الإيرادات

تتبع جميع مصادر الدخل من المشاريع والاستشارات والصيانة

إدارة المصروفات

تسجيل وتصنيف جميع المصروفات التشغيلية والإدارية

إدارة المشاريع

متابعة حالة المشاريع والمبالغ المستحقة

متطلبات النظام

  • Microsoft Access 2016 أو أحدث
  • Windows 10 أو أحدث
  • مساحة تخزين لا تقل عن 100 ميجابايت
  • معرفة أساسية بـ Access و VBA (اختياري)

هيكل قاعدة البيانات

مكونات النظام الأساسية

الجداول الأساسية

  • الحسابات الرئيسية
  • العملاء والشركاء
  • حركة الإيرادات والمصروفات
  • المشاريع والفواتير

المكونات التفاعلية

  • نماذج الإدخال
  • التقارير المالية
  • الاستعلامات المتقدمة
  • أكواد VBA المساعدة

الجداول والعلاقات

1 جدول الحسابات الرئيسية

يحتوي على تصنيفات الإيرادات والمصروفات الأساسية

كود الحساب اسم الحساب نوع الحساب الحساب الرئيسي الحالة
REV001 إيرادات المشاريع إيراد الإيرادات نشط
REV002 إيرادات الاستشارات إيراد الإيرادات نشط
EXP001 مصروفات المكتب مصروف المصروفات التشغيلية نشط
EXP002 مصروفات البرمجيات مصروف المصروفات التشغيلية نشط
-- كود SQL لإنشاء جدول الحسابات الرئيسية
CREATE TABLE الحسابات_الرئيسية (
    كود_الحساب VARCHAR(10) PRIMARY KEY,
    اسم_الحساب VARCHAR(100) NOT NULL,
    نوع_الحساب VARCHAR(20) NOT NULL,
    الحساب_الرئيسي VARCHAR(50),
    وصف_الحساب TEXT,
    حالة_الحساب VARCHAR(20) DEFAULT 'نشط'
);

2 جدول العملاء

يحتوي على بيانات العملاء والشركات المتعاملة

رقم العميل اسم العميل نوع العميل الهاتف البريد الإلكتروني الحالة
C001 شركة النور للتجارة شركة 01234567890 info@alnoor.com نشط
C002 مؤسسة العمران الطبية مؤسسة 01123456789 contact@alomran.med نشط
C003 أحمد محمد علي فرد 01098765432 ahmed.ali@gmail.com نشط
-- كود SQL لإنشاء جدول العملاء
CREATE TABLE العملاء (
    رقم_العميل VARCHAR(10) PRIMARY KEY,
    اسم_العميل VARCHAR(100) NOT NULL,
    نوع_العميل VARCHAR(30),
    الهاتف VARCHAR(20),
    البريد_الإلكتروني VARCHAR(100),
    العنوان TEXT,
    المدينة VARCHAR(50),
    حالة_العميل VARCHAR(20) DEFAULT 'نشط',
    تاريخ_التسجيل DATE,
    ملاحظات TEXT
);

3 جدول حركة الإيرادات والمصروفات

الجدول الأساسي لتسجيل جميع المعاملات المالية

رقم العملية التاريخ النوع الحساب المبلغ العميل الحالة
TXN001 2024-01-15 إيراد إيرادات المشاريع 15,000 ج.م شركة النور للتجارة مكتمل
TXN002 2024-01-16 مصروف مصروفات البرمجيات 2,500 ج.م مايكروسوفت مكتمل
TXN003 2024-01-20 إيراد إيرادات الاستشارات 3,000 ج.م مؤسسة العمران الطبية مكتمل

4 جدول المشاريع والفواتير المتوقعة

لمتابعة المشاريع الجارية والمبالغ المستحقة

رقم المشروع اسم المشروع العميل القيمة الكلية المستلم المتبقي الحالة نسبة الإنجاز
PRJ001 نظام إدارة مخزن شركة النور للتجارة 25,000 ج.م 15,000 ج.م 10,000 ج.م جاري
60%
PRJ002 نظام إدارة عيادة مؤسسة العمران الطبية 18,000 ج.م 3,000 ج.م 15,000 ج.م جاري
25%
PRJ003 نظام محاسبة شخصي أحمد محمد علي 8,000 ج.م 8,000 ج.م 0 ج.م مكتمل
100%

5 العلاقات بين الجداول

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

العلاقات الأساسية

حركة الإيرادات والمصروفات الحسابات الرئيسية (كود الحساب)
حركة الإيرادات والمصروفات العملاء (رقم العميل)
المشاريع والفواتير العملاء (رقم العميل)

النماذج

1 نموذج إدخال المعاملات المالية

النموذج الأساسي لتسجيل الإيرادات والمصروفات

مواصفات النموذج

الحقول الأساسية:
  • • رقم العملية (تسلسل تلقائي)
  • • تاريخ العملية
  • • نوع العملية (إيراد/مصروف)
  • • الحساب المحاسبي
  • • المبلغ
  • • العميل/المورد
  • • وصف العملية
  • • طريقة الدفع
  • • رقم المرجع
الميزات المتقدمة:
  • • تحديد تلقائي للحسابات
  • • تقترح بيانات العملاء
  • • تحديد طريقة الدفع
  • • إنشاء رقم مرجع تلقائي
  • • التحقق من صحة البيانات
  • • رسائل تأكيد الحفظ
  • • إمكانية التعديل والحذف
  • • ربط بتقارير فورية
-- كود VBA لتوليد رقم العملية التلقائي
Private Sub Form_Load()
    Dim NextTxnNumber As String
    Dim LastNumber As Long
    
    ' الحصول على آخر رقم معاملة
    LastNumber = DMax("Val(Right(رقم_العملية, 3))", "حركة_الإيرادات_والمصروفات")
    
    ' إنشاء رقم المعاملة الجديد
    NextTxnNumber = "TXN" & Format(LastNumber + 1, "000")
    
    ' تعيين الرقم للحقل
    Me.رقم_العملية.Value = NextTxnNumber
    Me.تاريخ_العملية.Value = Date
End Sub

2 نموذج إدارة العملاء

نموذج لإضافة وتحديث بيانات العملاء

مكونات النموذج

بيانات العميل الأساسية:
  • • رقم العميل
  • • اسم العميل
  • • نوع العميل
  • • بيانات الاتصال
  • • العنوان والموقع
معلومات إضافية:
  • • تاريخ بدء التعامل
  • • حالة العميل
  • • ملاحظات خاصة
  • • تقييم العميل
  • • المشاريع المنجزة

3 نموذج إدارة المشاريع

نموذج لمتابعة المشاريع الجارية والمكتملة

ميزات النموذج

تفاصيل المشروع:
  • • معرف المشروع
  • • اسم المشروع
  • • العميل المرتبط
  • • قيمة المشروع الكلية
  • • المواعيد المتوقعة
حالة المشروع:
  • • نسبة الإنجاز
  • • المبالغ المستلمة
  • • المبالغ المتبقية
  • • حالة المشروع
  • • ملاحظات التقدم
-- كود VBA لحساب المبلغ المتبقي تلقائياً
Private Sub المبلغ_المستلم_AfterUpdate()
    If Not IsNull(Me.قيمة_المشروع) And Not IsNull(Me.المبلغ_المستلم) Then
        Me.المبلغ_المتبقي = Me.قيمة_المشروع - Me.المبلغ_المستلم
    End If
End Sub

التقارير

1 تقرير الإيرادات والمصروفات الشهري

تقرير شامل يعرض الوضع المالي للشهر

-- استعلام تقرير الإيرادات والمصروفات الشهري
SELECT
    Format(تاريخ_العملية, "yyyy-mm") AS الشهر,
    SUM(IIF(نوع_العملية = "إيراد", المبلغ, 0)) AS إجمالي_الإيرادات,
    SUM(IIF(نوع_العملية = "مصروف", المبلغ, 0)) AS إجمالي_المصروفات,
    SUM(IIF(نوع_العملية = "إيراد", المبلغ, -المبلغ)) AS صافي_الربح
FROM حركة_الإيرادات_والمصروفات
WHERE الحالة = "مكتمل"
GROUP BY Format(تاريخ_العملية, "yyyy-mm")
ORDER BY الشهر DESC;

2 تقرير المشاريع الجارية

نظرة عامة على المشاريع قيد التنفيذ

المشاريع الجارية

المشروع العميل القيمة المستلم المتبقي الإنجاز الموعد المتوقع
نظام إدارة مخزن شركة النور للتجارة 25,000 ج.م 15,000 ج.م 10,000 ج.م 60% 2024-03-15
نظام إدارة عيادة مؤسسة العمران الطبية 18,000 ج.م 3,000 ج.م 15,000 ج.م 25% 2024-04-20

3 تقرير التحليل المالي

تحليل شامل للأداء المالي

توزيع الإيرادات

توزيع المصروفات

الاستعلامات المهمة

1 استعلام الرصيد الجاري

حساب الرصيد الإجمالي للحسابات

-- استعلام حساب الرصيد الجاري
SELECT
    ح.اسم_الحساب,
    ح.نوع_الحساب,
    SUM(IIF(م.نوع_العملية = "إيراد", م.المبلغ, -م.المبلغ)) AS الرصيد
FROM
    الحسابات_الرئيسية ح
    LEFT JOIN حركة_الإيرادات_والمصروفات م
    ON ح.كود_الحساب = م.كود_الحساب
WHERE
    م.الحالة = "مكتمل"
    AND م.تاريخ_العملية BETWEEN #01/01/2024# AND #31/12/2024#
GROUP BY
    ح.اسم_الحساب, ح.نوع_الحساب
ORDER BY
    ح.نوع_الحساب, الرصيد DESC;

2 استعلام المبالغ المستحقة

المبالغ المستحقة من العملاء

-- استعلام المبالغ المستحقة من العملاء
SELECT
    ع.اسم_العميل,
    م.اسم_المشروع,
    م.قيمة_المشروع,
    م.المبلغ_المستلم,
    م.المبلغ_المتبقي,
    م.تاريخ_الانتهاء_المتوقع,
    DateDiff("d", Date(), م.تاريخ_الانتهاء_المتوقع) AS الأيام_المتبقية
FROM
    المشاريع_والفواتير_المتوقعة م
    INNER JOIN العملاء ع
    ON م.رقم_العميل = ع.رقم_العميل
WHERE
    م.المبلغ_المتبقي > 0
    AND م.حالة_المشروع IN ("جاري", "مكتمل")
ORDER BY
    م.المبلغ_المتبقي DESC;

3 استعلام أفضل العملاء

ترتيب العملاء حسب القيمة

-- استعلام أفضل العملاء حسب القيمة
SELECT
    ع.اسم_العميل,
    ع.نوع_العميل,
    COUNT(م.رقم_المشروع) AS عدد_المشاريع,
    SUM(م.قيمة_المشروع) AS إجمالي_القيمة,
    SUM(م.المبلغ_المستلم) AS إجمالي_المستلم,
    AVG(م.قيمة_المشروع) AS متوسط_قيمة_المشروع
FROM
    العملاء ع
    INNER JOIN المشاريع_والفواتير_المتوقعة م
    ON ع.رقم_العميل = م.رقم_العميل
GROUP BY
    ع.اسم_العميل, ع.نوع_العميل
ORDER BY
    إجمالي_القيمة DESC;

أكواد VBA المساعدة

1 كود النسخ الاحتياطي التلقائي

كود لإنشاء نسخة احتياطية من قاعدة البيانات

' كود VBA للنسخ الاحتياطي التلقائي
Sub CreateBackup()
    Dim SourcePath As String
    Dim BackupPath As String
    Dim BackupFolder As String
    Dim BackupName As String
    
    ' مسار قاعدة البيانات الحالية
    SourcePath = CurrentProject.Path & "\" & CurrentProject.Name
    
    ' مجلد النسخ الاحتياطي
    BackupFolder = CurrentProject.Path & "\Backup\"
    
    ' إنشاء مجلد النسخ الاحتياطي إذا لم يكن موجوداً
    If Dir(BackupFolder, vbDirectory) = "" Then
        MkDir BackupFolder
    End If
    
    ' اسم النسخة الاحتياطية
    BackupName = "Backup_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hhmm") & ".accdb"
    BackupPath = BackupFolder & BackupName
    
    ' نسخ الملف
    On Error GoTo ErrorHandler
    FileCopy SourcePath, BackupPath
    
    MsgBox "تم إنشاء النسخة الاحتياطية بنجاح في: " & BackupPath, vbInformation
    Exit Sub
    
ErrorHandler:
    MsgBox "خطأ في إنشاء النسخة الاحتياطية: " & Err.Description, vbCritical
End Sub

2 كود تصدير التقارير إلى Excel

تصدير التقارير المالية إلى Excel

' كود VBA لتصدير التقارير إلى Excel
Sub ExportToExcel(QueryName As String, ExportPath As String)
    Dim xlApp As Object
    Dim xlWorkbook As Object
    Dim xlWorksheet As Object
    Dim rs As DAO.Recordset
    
    ' إنشاء كائن Excel
    Set xlApp = CreateObject("Excel.Application")
    Set xlWorkbook = xlApp.Workbooks.Add
    Set xlWorksheet = xlWorkbook.Worksheets(1)
    
    ' فتح الاستعلام
    Set rs = CurrentDb.OpenRecordset(QueryName)
    
    ' نسخ البيانات
    xlWorksheet.Range("A1").CopyFromRecordset rs
    
    ' إضافة تنسيق
    xlWorksheet.Range("A1").CurrentRegion.AutoFormat
    
    ' حفظ الملف
    xlWorkbook.SaveAs ExportPath
    
    ' إغلاق Excel
    xlWorkbook.Close
    xlApp.Quit
    
    ' تنظيف الذاكرة
    rs.Close
    Set rs = Nothing
    Set xlWorksheet = Nothing
    Set xlWorkbook = Nothing
    Set xlApp = Nothing
End Sub

3 كود التحقق من صحة البيانات

التحقق من صحة البيانات المدخلة

' كود VBA للتحقق من صحة البيانات
Function ValidateTransaction(TransactionType As String, Amount As Currency) As Boolean
    Dim IsValid As Boolean
    IsValid = True
    
    ' التحقق من نوع المعاملة
    If TransactionType <> "إيراد" And TransactionType <> "مصروف" Then
        MsgBox "نوع المعاملة غير صحيح", vbCritical
        IsValid = False
    End If
    
    ' التحقق من المبلغ
    If Amount <= 0 Then
        MsgBox "المبلغ يجب أن يكون أكبر من صفر", vbCritical
        IsValid = False
    End If
    
    ValidateTransaction = IsValid
End Function

الأمان والنسخ الاحتياطي

1 إعدادات الأمان

تأمين قاعدة البيانات من الوصول غير المصرح به

حماية كلمة المرور

  • • استخدام كلمة مرور قوية
  • • تشفير قاعدة البيانات
  • • تحديد أذونات المستخدمين
  • • إخفاء النوافذ الحساسة
  • • تقييد الوصول للجداول

مستويات الوصول

  • • مدير النظام (وصول كامل)
  • • محاسب (إدخال وتعديل)
  • • مستخدم (عرض فقط)
  • • عميل (تقارير محددة)
  • • مراجع (تقارير فقط)

2 استراتيجية النسخ الاحتياطي

خطة شاملة للنسخ الاحتياطي واستعادة البيانات

خطة النسخ الاحتياطي

نسخ يومي

نسخة احتياطية يومية تلقائية في نهاية كل يوم عمل

نسخ أسبوعي

نسخة احتياطية أسبوعية شاملة مع ضغط البيانات

نسخ شهري

نسخة احتياطية شهرية مخزنة خارجياً

اختبار الاستعادة

اختبار شهري لعملية استعادة البيانات

تحذيرات أمنية مهمة

  • عدم مشاركة كلمات المرور مع الآخرين
  • تحديث كلمة المرور بانتظام
  • عدم تشغيل قاعدة البيانات من مصادر غير موثوقة
  • فحص الفيروسات بانتظام
  • تشفير النسخ الاحتياطية

تحسين الأداء

1 تحسين الاستعلامات

تحسين سرعة تنفيذ الاستعلامات

الممارسات الجيدة

  • • استخدام الفهارس (Indexes)
  • • تحديد الحقول المطلوبة فقط
  • • استخدام WHERE بدلاً من HAVING
  • • تجنب SELECT *
  • • استخدام EXISTS بدلاً من IN

تجنب هذه الممارسات

  • • الاستعلامات المعقدة جداً
  • • استخدام الدوال في WHERE
  • • عدم استخدام الفهارس
  • • استخدام OR بكثرة
  • • عدم تحديد شروط التصفية

2 تحسين الجداول

تحسين هيكل الجداول لأداء أفضل

-- إنشاء فهرس لتسريع البحث
CREATE INDEX idx_تاريخ_العملية ON حركة_الإيرادات_والمصروفات (تاريخ_العملية);
CREATE INDEX idx_كود_الحساب ON حركة_الإيرادات_والمصروفات (كود_الحساب);
CREATE INDEX idx_رقم_العميل ON حركة_الإيرادات_والمصروفات (رقم_العميل);
CREATE INDEX idx_نوع_العملية ON حركة_الإيرادات_والمصروفات (نوع_العملية);

3 تحسين النماذج والتقارير

تحسين أداء النماذج والتقارير

نصائح التحسين

  • • استخدام Record Source محددة
  • • تحديد حجم الصفحة في النماذج
  • • استخدام الفلاتر بدلاً من الاستعلامات
  • • تحسين أحجام الصور
  • • استخدام النماذج المنبثقة بحذر
  • • تحسين كود VBA
  • • استخدام المتغيرات بدلاً من الحقول
  • • تنظيف الذاكرة بعد الاستخدام

نصائح وحلول

1 نصائح للاستخدام الفعال

التسجيل اليومي

احرص على تسجيل جميع المعاملات المالية يومياً لتجنب النسيان والحصول على تقارير دقيقة

التصنيف الدقيق

استخدم تصنيفات دقيقة للمصروفات والإيرادات لتسهيل التحليل المالي

حفظ الوثائق

احتفظ بنسخ من الفواتير والإيصالات مرتبطة بكل معاملة

المراجعة الدورية

راجع التقارير المالية بانتظام لمتابعة الأداء المالي

2 حلول للمشاكل الشائعة

مشكلة: بطء في تحميل التقارير

الحل:

  • إنشاء فهارس للحقول المستخدمة في البحث
  • تحديد نطاق تاريخي محدد للتقارير
  • استخدام استعلامات محسنة
  • تنظيف وضغط قاعدة البيانات

مشكلة: خطأ في حفظ البيانات

الحل:

  • التحقق من صحة أنواع البيانات
  • التأكد من عدم وجود حقول فارغة مطلوبة
  • فحص أذونات الملف
  • إعادة تشغيل Access

مشكلة: عدم ظهور البيانات في التقارير

الحل:

  • مراجعة شروط التصفية
  • التحقق من العلاقات بين الجداول
  • فحص أسماء الحقول
  • إعادة بناء الاستعلام

نصائح للنجاح

  • ابدأ بتسجيل بسيط ثم تطور تدريجياً
  • استخدم النسخ الاحتياطي بانتظام
  • تعلم أساسيات VBA لتخصيص النظام
  • احتفظ بسجل للتغييرات المهمة
  • استخدم التقارير لاتخاذ القرارات

الخاتمة

تهانينا! لقد أكملت إنشاء نظام إدارة مالي متكامل

نظام محاسبي شامل

قاعدة بيانات متكاملة لإدارة جميع العمليات المالية

تقارير تفصيلية

تقارير مالية شاملة لمتابعة الأداء

قابل للتخصيص

يمكن تعديله وتطويره حسب احتياجاتك

ما تعلمته من هذا الدليل

  • • تصميم قواعد البيانات المحاسبية
  • • إنشاء الجداول والعلاقات
  • • تطوير النماذج التفاعلية
  • • إنشاء التقارير المالية
  • • كتابة الاستعلامات المتقدمة
  • • برمجة VBA للأتمتة
  • • تطبيق معايير الأمان
  • • تحسين أداء قاعدة البيانات
  • • إدارة النسخ الاحتياطي
  • • حل المشاكل الشائعة

الخطوات التالية

الآن يمكنك البدء في استخدام النظام وتطويره ليناسب احتياجاتك الخاصة. تذكر أن النجاح يأتي من الاستخدام المنتظم والتطوير المستمر.

بالتوفيق في رحلة الفري لانسينغ!