الخميس، 7 مايو 2009

تصميم برنامج حسابات - شجرة الحسابات


فكرة برمجة نظام حسابات متكامل ليست بالجديدة فالمحاسبين عرفو أول برنامج حسابات سنة 1981 "وهذه بالمناسبة هي سنة ميلادي!!" VisiCalc وصممه Bob Frankston وهو كان عبارة عن جدول بيانات SpreadSheet وكانت النواة لظهور برامج وأنظمة الحسابات المختلفةالتي نعرفها الآن .

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


طريقة برمجة شجرة الحسابات :
يسمى أيضا بدليل الحسابات وهو دليل يحتوي على كل الحسابات التي في ميزان المراجعة ،يوجد أكثر من طريقة لترتيب دليل الحسابات ولكن هناك مواصفات قياسية لدليل الحسابات .حيث يتكون دليل الحسابات الى أربعة حسابات رئيسية :


  1. الأصول .

  2. الخصوم .

  3. المصاريف .

  4. الإيرادات .

ومن هذه الحسابات الرئيسية يتفرع دليل الحسابات الى أكثر من مستوى ( الأصول " مستوى أول" تنقسم الى أصول ثابتة "مستوى ثاني" وأصول متداولة "مستوى ثاني" وهكذا .. ) .يظهر الإختلاف في ترتيب دليل الحسابات في طريقة الترقيم ، سأوضح هنا الطريقة التي اتبعتها في ترقيم الحسابات .مع العلم أن شجرة الحسابات التي قمت ببرمجتها كانت تتكون من 4 مستويات والمستوى الرابع هو المستوى الفعال الذي استخدمه في تسجيل العمليات اليومية .


طريقة ترقيم شجرة الحسابات :


المستوى الرئيسي يأخذ رقم يتكون من خانة عشرية واحدة ،والمستوى الثاني يأخذ ثلاث خانات عشرية ،والمستوى الثالث يأخذ ستة خانات عشرية ،والمستوى الرابع والأخير يأخذ عشرة خانات عشرية .سيكون هناك شرح أكثر تفصيل لهذه الجزئية مع شرح تصميم قاعدة البيانات .


تصميم جداول شجرة الحسابات في قاعدة البيانات : سأوضح هنا فقط الطريقة التي اتبعتها لهذا الغرض .


سنعتمد تصميم الجداول على أساس مستوى الحساب .على حسب عدد المستويات ( First Level - Second Level - Third Level ....... ect) بمعنى أنه اذا كان الدليل من 4 مستويات كان عدد الجداول 4 .كل جدول سيحتوي على أربعة أعمدة ( Acc_No - Acc_Name - Parent_Acc - Notes ) ،سيكون Acc_No هو المفتاح الرئيسي Primary Key . وهكذا في باقي الجداول في المستوى الأول والثاني والثالث والرابع بالإضافة الى جدول الحسابات الفعالة .


جدول المستوى الأول سيكون على النحو التالي :


Acc_No


Acc_Name


Parent_Acc


Notes


1


الأصول


-


-


2


الخصوم


-


-


3


المصاريف


-


-



جدول المستوى الثاني : على سبيل المثال :


Acc_No


Acc_Name


Parent_Acc


Notes


101


أصول ثابتة


1


-


201


خصوم متداولة


1


-


301


مصاريف عمومية


3


-



جدول المستوى الثالث : على سبيل المثال :


Acc_No


Acc_Name


Parent_Acc


Notes


101001


السيارات


101


-


201001


الموردين


201


-


301001


رواتب وأجور وإكراميات


301


-



جدول المستوى الرابع : ويحتوي على الحسابات الفعالة التي تستخدم في العمليات اليومية :


Acc_No


Acc_Name


Parent_Acc


Notes


1010010001


سيارة نيسان


101001


-


2010010001


مورد قطع الغيار


201001


-


3010010001


رواتب شهرية


301001


-

* أسماء الحسابات في الجداول على سبيل المثال وليس الحصر

ومن هذه الجداول يتم تكوين دليل الحسابات حتى يكون ترنيبه على النحو التالي : سنأخذ مثال على الأصول :


1


الأصول




101



الأصول الثابتة



101001




السيارات


1010010001





سيارة نيسان " الحساب الفعال "


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

هناك 31 تعليقًا:

  1. موضوع جدا قيم...بارك الله فيك اخي معتز...
    كوني متخصص في مجال البرمجيات فأن نواة البرنامج مبنية بدقة متناهية وبمهنية...سالت نفسي هل انا امام محاسب ام مبرمج؟
    كل احترام الى الامام...
    اخوك بالله انس من فلسطين

    ردحذف
  2. شكراً أخي أنس على مرورك الغالي ،فيما يخص أمر المبرمج والمحاسب فأنا محاسب أعشق البرمجة ،وذلك كوني أعمل محاسب ،ولكن لو حدث يوم وإحترفت البرمجة سأكون مبرمجةأهوى وأعشق المحاسبة ..

    ردحذف
  3. اعتقد ان الشجر المحسابيه لا تقتصر علي ثلاث مستويات فقط
    يمكن ان يكون لها اي عدد من المستويات
    بمعني اني يمكنني ان افرع حساب ما في المستوي الرابع الي عده افرع

    ايضا من وجه نظر تصميم قواعد البيانات لا يوجد منطق ما في وضع 4 جداول بقاعده البيانات (وربما اكثر) يحتون علي نفس الحقول

    يوجد عده طرق لتصميم مثل هذا الجزء الشجره

    طريقه منهم عمل الشجره كلها في جدول واحد.

    ردحذف
  4. بارك الله فيك على هذا الشرح الوافي
    واستمر في تكملة ما بدأت جزاك الله خير

    ملاحظة :
    أنا مع الأخ Elkersh في أن المفروض جدول دليل الحسابات يجب أن يكون في جدول واحد وان تكون المستويات مفتوحة غير مقيدة بعدد معين

    بارك الله فيك وإلى الأمام

    ردحذف
  5. جزاك الله خيرا يامعتز
    وتأكد ان الله لايضيع أجر من أحسن عملا

    خصوصا ان كان فى مثل مجالك لايريد سوي المنفعة
    دون أجر

    تقبل الله منك
    وشكرا جزيلا علي تشريفك لى فى مدونتي

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

    وكل عام وانت بخير

    ردحذف
  6. شاكر لكم إخواني على حسن متابعتكم ،وشكراً أستاذ محمد وأستاذ مختار على تعليقكم ،وفيما يخص ملاحظة الأستاذ Elkersh هما ملاحظتين :
    1- أمر عمل شجرة الحسابات فقط على ثلاث مستويات أو أكثر أو حتى تكون مفتوحة هي ملاحظة جيدة ،حسناً أنا في الأساس محاسب وأعتقد أنه عمل شجرة حسابات من ثلاث مستويات هو أمر كافي الى حد كبير جداً فلا داعي لعمل شجرة حسابات مفتوحة وإضاعة الوقت فيها بلا طائل إلا إذا كنا بصدد الدخول في تحدي ليس إلا ،مثلاً ما الداعي أن أقوم بشراء مشغل اسطوانات للسيارات وأنا أصلاً لا أمتلك سيارة !! هذا بالإضافة أنه قد ذكرت أني لا أقوم بشرح تصميم برنامج حسابات من الألف للياء بل أنا أقوم بشرح الأجزاء المهمة والتي تكون أساس جيد لتطوير برنامج محاسبي متكامل وأنا تقريباً أقدم للقارئ العزيز مصدر مفتوح لبرنامج حسابات في نهاية هذه السلسلة إن شاء الله ، ثم أعتقد أنه قد شرحت ما هو أهم من عمل المستويات مفتوحة أو مغلقة.
    أما النقطة الثانية وهي أمر عمل شجرة الحسابات كلها في جدول واحد فهو أمر مردود عليه ،ولكني أسأل هنا سؤال عكسي ،ما هو المنطق الذي يمنعني من عمل قاعدة البيانات على أكثر من جدول ثلاثة أو أربعة مثلاً ؟؟
    بل أنا أرى أنه في تصميم قواعد البيانات من القوة لقاعدة البيانات أن تكون منظمة ويكون هناك جداول مرتبطة ببعضها البعض .
    أعتقد أنه أمر غريب من يصمم قواعد البيانات أو يرى تصاميم قواعد بيانات محترفة كلها تحتوي على جداول مرتبطة ببعضها البعض ،وإن قلنا أنه لا داعي لعمل جداول اذا كان هناك حقول مشتركة فمعنى هذا أن كل قاعدة بيانات ممكن أن نصممها كلها في جدول واحد وكانت وفرت شركات مثل Microsoft في Access مثلاً عناء عمل الإرتباطات بين الجداول بتصنيفاتها الكثيرة والمعقدة .. أمر غريب طبعاً !!
    أما فيما يخص سبب تصميم لأكثر من جدول هذه أسبابي المتواضعة :
    1- تسهيل عملية الوصول لكل مستوى بشكل أسهل وأسرع وبالتالي يتم التعديل والأضافة بسهولة .
    2- إذا قمت بالتصميم في جدول واحد سأحتاج الى حقول أكثر في هذا الجدول وأنا في غنى عن هذا الأمر.
    3- نوع من أنواع التبسيط لماذا أعقد الأمور ،نعم أستطيع التصميم في جدول واحد ولكن سأحتاج لحقول أكثر كي أستطيع تنظيم الشجرة في مرحلة التكويد ورأيت لي أنه من الأسهل عملها على أكثر من جدول .
    4- تخيل أنه لديك سيارة 7 راكب ويجد لدينا 3 راكب يعني يوجد 4 كرسي فارغ ما هو الأفضل يركب الـ 3 : 1- في نفس الكرسي 2- كل واحد في كرسي منفصل ؟!!
    لماذا لا يجلس كل راكب في كرسي لوحده علماً.
    5- وهذا الأهم عمل شجرة الحسابات على أكثر من جدول يتيح بشكل أفضل في المستقبل إمكانية التطوير والتحديث .
    وفي النهاية لماذا أضيق ما وسعه الله لي ؟؟!!
    وشكراً .

    ردحذف
  7. الصراحة هذا الشرح اكثر من رائع !
    من فضلك هل يمكن ان تقوم بشرح
    ميزان المراجعة و قائمة الدخل ؟
    و كيفية استخلاص ميزان المراجعة و قائمة الدخل من خلال شجرة المحاسبة ؟

    بعد بحث طويل و مكثف في الانترنت حول شجرة المحاسبة و غيرها من هذه الامور لم استطع ايجاد موضوع واحد يتكلم بوضوح و "بساطة" اكثر من مدونتك ..

    جزاك الله كل خير ..
    و شكرا لك و الى الامام

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

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

    وجود الشجرة كلها في جدول واحد يتيح له عمل تصنيفات متشعبة غير نهائية بدون الحاجة الي انشاء جداول اخري

    يمكنك الرجوع لهذه الصفحة لفهم المبدأ وراء اقتراحي

    http://www.tomjewett.com/dbdesign/dbdesign.php?page=recursive.php

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


    نظرية الجدول الواحد نظرية مشهورة جدا في قواعد البيانات وانا رأيت اقتراحها حيث اني وجدت ان شجرة البيانات في برامج MS Dynamics ERP و أوراكل e-business suite يطبقون شجرة المحاسبة بطريقة مشابهه ولكنها اكثر تعقديا قليلا

    وبالمناسبة انا اعجبني شرحك كثير ولكني اقع دائما في جدال مثل هذا مع اخواني المحاسبين

    وبالمناسبة اود ان اعرف ما الذي منعك من اكمال السلسلة

    شكرا

    ردحذف
  9. شكراً أخي محمد على إهتمامك ورأيك أحترمه كثيراً ولكن أنا لي رغبة أن أرسم سيناريو محدد للمستخدم وهو أنه لا يستطيع عمل أكثر من أربع مستويات وهذا حتى يكون هناك سيطرة أكبر على البرنامج في النهاية هوبرنامج حسابات وقد صممته لإحدى الشركات التي لا يحتاج قسم حساباتها لأكثر من أربع مستويات .وفيما يخص تكملة باقي السلسلة تعليم تصميم برنامج حسابات فأنا أقوم بإعداد بعد الدروس الآن فعلياً وتأخرت لظروف سفري لمصر وظروف خطبتي عقبالك اذا كنت لم تأخذ هذه الخطوة الخطييييرة بعد !!

    ردحذف
  10. شكرا على هذا المجهود الرائع الذي تحسد عليه ، انا عندي شجرة الحسابات هذه لكن لااعرف كيف اعمل لها كود التعديل update لقد حاولت كثيراً اتمنى المساعدة

    ردحذف
  11. عذراً على التأخير راسلني على ايميلي حتى ارسل لك كود التعديل

    ردحذف
  12. ممكن تعمل لى برنامج محاسبي لشركه العاب ترفيهيه يشمل على
    الايرادات المصروفات معلومات العميل اجور العمال السيارات يعنى برنامج كامل مع امكانيه البيع وصرف التذاكر
    alwadd@hotmail.com

    ردحذف
    الردود
    1. انا ممكن اصممه

      حذف
  13. الأخ الحبيب

    أولا شكرا على المعلومات

    ثانيا : انا رأى مع الأخوة اللى بيقولوا ان يكون جدول واحد

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

    طبعا هيكون الجدول بالشكل التالى

    كود الحساب
    اسم الحساب عربى
    اسم الحساب انجليزى
    كود الحساب الرئيسى
    نوع الحساب
    طبيعة الحساب
    دائن (رصيد افتتاحى)
    مدين (رصيد افتتاحى )

    وطبعاهنعمل علاقة( relationship) بين كود الحساب وكود الحساب الرئيسى

    دا بالنسبة للداتبيز

    بالنسبة للإنترفيس هنعمل ريكيرسف فنكشن ( دالة تستدعى نفسها بتكرار) تقوم بقراءة الحسابات ووضعها فى tree control

    اسف على الإطالة بس لقيت من واجبى اوضح الأمور

    ومرة تانية الف شكر على المعلومات

    أخوكم سعد أبو الجود
    saad_aboelgood@yahoo.com

    ردحذف
  14. يا اخ سعد مشكور على المعلومة وفكرة اكثر من رائعة بس يا ريت الكود الي يعبئ التريفيو

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

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

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

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

    ردحذف
  19. احب اعرف في حالة القيود المزدوجة كيف يتم حفظها في الجداول
    (اي تصميم حقول الجداول للعمليات اليومية )

    ردحذف
  20. السلام عليكم
    اخوكم يدرس نظم معلومات واعمل محاسب وانا احاول عمل برنامج حسابات لذا ارجو منكم مدي بتصميم برنامج محاسبي حتي اتمكن من عمل البرنامج المحاسبي .

    ردحذف
    الردود
    1. السلام عليكم
      جزاك الله خيرا

      حذف
  21. تابع و نظم أعمالك لحظة بلحظة وفر جهدك ووقتك تقدر تتطمن على شغلك وتحمى إستثماراتك الان مع
    برنامج بزنس كنترول
    افضل برنامج حسابات فى العالم العربى
    يلبى كافة الأنشطة التجارية ويشمل انظمة المخازن وتعريف
    الاصناف واذونات المخازن وطباعة الباركود وفواتير البيع والشراء ومرتجع البيع
    والشراء وتعريف العملاء والموردين وتقارير شاملة لعمليات البيع والمخزون
    والاصناف الراكدة والاصناف الاكثر مبيعا والاكثر ربحا وكذلك يشمل نظام للموارد
    البشرية وشئون العاملين والحضور والانصراف والمكافئات والحوافز البرنامج متوافق
    مع اغلب الانشطة التجارية للمحلات والشركات الصغيرة والمتوسطة والكبيرة
    برنامــج بـزنــس كنتــرول مقدم من شــركــة إنـطـلاقة لحلول الأعمال المتكامـلة
    من مميزات البرنامج :
    -البرنامج يعمل من خلال الانترنت فهو نظام ويب ابليكيشن
    -البرنامج يعمل على أى نظام تشغيل ويندوز- ليونكس – أندرويد
    -البرنامج يعمل على أى جهاز كمبيوتر – تابلت – آى باد – موبايل
    -البرنامج يدعم كل الإمكانيات المطلوبة فى مجال المبيعات والمشتريات
    -البرنامج يدعم كل الإمكانيات المطلوبة فى تنظيم المخازن
    -البرنامج يدعم كل الإمكانيات المطلوبة فى مجال تنظيم الموارد البشرية
    -البرنامج يدعم كل الإمكانيات المطلوبة فى مجال الأصول الثابتة والمتداولة
    -البرنامج يدعم كل الإمكانيات المطلوبة فى مجال المصروفات والمرتبات
    -البرنامج يدعم كل الإمكانيات فى مجال تعدد الصلاحيات والمهام
    -البرنامج يدعم إمكانية تصدير التقارير لتطبيقات Microsoft Office
    -البرنامج يدعم كل الإمكانيات المطلوبه فى مجال العملاء والموردين
    -البرنامج يدعم كل الإمكانيات المطلوبة فى مجال مراكز التكلفة
    لزيارة موقعنا : http://www.برنامج-الحسابات.com/

    ردحذف
  22. http://dexef.com برامج محاسبة هى افضل البرامج الموجودة لتميزها بالسهولة والدقة

    ردحذف
  23. يمكنك تحميل برامجنا المحاسبية http://dexef.com/download

    ردحذف
  24. برنامج حسابات


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


    برنامج محاسبة



    برنامج حسابات للمحلات


    برنامج محاسبة

    برنامج محاسبى


    برنامج شؤون الموظفين

    ردحذف
  25. افضل برنامج حسابات فى مصر والسعودية


    برنامج حسابات :

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

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

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



    ادارة حسابات البنوك ومعرفة ارصدتها ومعرفة مواعيد تحصيل الشيكات ومعرفة الشيكات المرفوضه والتى تم تحصيلها .
    ادراة حسابات العملاء والموردين ومعرفة اجالى الدخل او الخسائر الخاصة بالشركة . يعد بي كريتف
    افضل برنامج حسابات
    فى مصر والسعودية


    يمكنك التعرف على مميزات البرنامج من الرابط التالى

    https://becreativesystem.com

    ردحذف