‏إظهار الرسائل ذات التسميات برمجة حسابات. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات برمجة حسابات. إظهار كافة الرسائل

الأحد، 30 أكتوبر 2011

Graphs And Charts in Visual Basic

متابعي مدونتي العزيزة على علم بأنها متخصصة في المحاسبة وهذا واضح في إسمها على الأقل كما أني أقوم بين الحين والآخر بالحديث عن البرمجة وعن كيفية بناء العلاقة بين البرمجة والمحاسبة وكيفية الإستفادة من البرمجة في المحاسبة والحصول على افضل النتائج بإستخدام تكنولوجيا المعلومات التي تتطور بشكل سريع .
وسأتحدث اليوم عن كيفية برمجة الرسوم البيانية والخرائط Graphs And Charts عن طريق الـ VB.Net .

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

غالبا سنحتاج الى الـ Framework: .NET Framework 3.5 SP1 بعد ذلك نقوم بتشغيل ملف الإعداد .
بعد الإنتهاء من الإعداد نبدأ الآن في تهيئة الفيجوال بيسك للبرمجة على الأداة .
إضافة الأداة إلى بيئة البرمجة لإستخدامها :
- من شريط الأدوات Toolbox نضغط زر الفأرة اليمين ثم Choose Items ثم تحديد الأداة ستظهر في شريط الأدوات .
- نقوم بسحبها لإستخدامها على الفورم .
تهيئة الأداة للإستخدام قبل البدأ في البرمجة :
  1. تحديد مدى البيانات التي سيتم تحويلها إلى رسوم بيانية أو خرائط من الخصائص Properties وعند الخاصية Series إضغط على Collection لتحديد عدد مجموعات البيانات المطلوبة .
    - فقد تكون مجموعة واحدة من البيانات مثلاً ( مبيعات مكتب سياحة وسفر ويتم فيها مقارنة مبيعات تذاكر الطيران بالنسبة لحجوزات الفنادق )














    - أو قد تكون مجموعتين من البيانات مثلاً ( نفس المثال مبيعات تذاكر الطيران ويكون هناك بيانات لتكلفة المبيعات وبيانات صافي المبيعات كما موضح في الصورة )

    كل ما عليك هو اضافة مجموعات على حسب احتياجك .

















  2. هنا كود برمجة لمجموعة ( Series ) واحدة فقط :

    Private Sub Sales_Graph()
    Dim array(1000, 1000) As Object

    array(0, 0) = "Ticket"
    array(0, 1) = "Hotel"
    array(0, 2) = "XO"

    array(1, 0) = 50
    array(1, 1) = 100
    array(1, 2) = 150

    array(1, 0) = Format(CDec(array(1, 0)), "#,##0.000")
    array(1, 1) = Format(CDec(array(1, 1)), "#,##0.000")
    array(1, 2) = Format(CDec(array(1, 2)), "#,##0.000")


    Chart1.Series(0).Points.AddXY(array(0, 0), array(1, 0))
    Chart1.Series(0).Points.AddXY(array(0, 1), array(1, 1))
    Chart1.Series(0).Points.AddXY(array(0, 2), array(1, 2))

    End Sub

    أما في حال كان هناك أكثر من مجموعة ( Series ) :
    Private Sub Staff_Sales_Graph()
    Dim array(1000, 1000) As Object
    Dim array1(1000, 1000) As Object
    Dim array2(1000, 1000) As Object

    Dim Total_Sales As Double
    Dim Cost_Sales As Double
    Dim Net_Sales As Double

    Total_Sales = 150
    Cost_Sales = 100

    Net_Sales = Total_Sales - Cost_Sales

    array1(1, 0) = Net_Sales
    array2(1, 0) = Cost_Sales

    If array1(1, 0) > 0 Then
    Chart2.Series(0).Points.AddXY(array1(0, 0), array2(1, 0))
    Chart2.Series(1).Points.AddXY(array1(0, 0), array1(1, 0))

    End If


    Next
    End Sub

يمكنك إختيار أنواع الرسم البياني أو الخرائط التي تريدها على حسب إحتياجك وهذا من Chart Type من خصائص الـ ( Series ) .
مع العلم ان أكثر هذه الأنواع إستخدماً هما النوعان الموضحان في الأعلى .
تمتعوا بهذه الإضافات الرائعة التي تعطي لبرامجكم الكثير من التميز والإحترافية .


الأحد، 1 مايو 2011

تصميم برنامج مبيعات ومخازن

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


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

فيما يخص المخازن هناك على الأقل 6 جداول :

ثلاث جداول تخص الأصناف :
  1. جدول الأصناف .
  2. جدول التصنيفات . يخص التصنيف الذي يندرج تحته الصنف مثلاً أسمنت أبيض يندرج تحت تصنيف الأسمنت وهكذا .
  3. جدول المخازن . يخص المخازن التي تملكها الشركة أو المؤسسة .

وثلاث جداول أخرى تخص حركة المخزن :

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

والآن الأمر بسيط جداً حتى نستطيع معرفة رصيد المخزن لصنف ما نتبع المعادلة التالية :

الوارد - الصادر - المحجوز = رصيد المخزن لصنف ما .

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

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


أما فيما يخص تسعير المخزون فانا اتبع طريقة المتوسط المرجح ( Average ) كالتالي :

في حالة الوارد :


سعر المخزون = ( إجمالي تكلفة المخزن + إجمالي تكلفة الوارد ) ÷ ( إجمالي الكمية في المخزن + إجمالي الكمية الواردة )

وفي حالة الصادر :

سعر المخزون = ( إجمالي تكلفة المخزون - إجمالي تكلفة الصادر ) ÷ ( إجمالي الكمية في المخزن - إجمالي الكمية الصادرة )

* إجمالي الكمية الصادرة = الكمية الصادرة × السعر المتوسط المرجح ( لآخر عملية تقييم للمخزون عند آخر عملية شراء أو بيع كما سبق توضيحه )

وهنا كود لأحد برامج المخازن من تصميمي .

الأربعاء، 28 أبريل 2010

قراءة تفاصيل تذكرة الطيران

تصميم نظام محاسبي لشركة سياحة وسفر يختلف بشكل كبير عن تصميم برنامج حسابات في أي مجال آخر مع التأكيد أن أساس العملية المحاسبية واحد ،فنحن في النهاية نجهز ونرتب الأمور حتى نصل الى التقارير الختامية بشكل سليم ودقيق ،ولكن يظل هناك إختلاف .
وأبرز هذه الإختلافات وهو التفاصيل الكثيرة لتذكرة الطيران وأذكر منها :
- رقم التذكرة . Ticket No
- شركة الطيران .Air Line Code
- سعر التذكرة .Ticket Fare
- الضرائب على التذكرة .Ticket Taxes
- خط سير الرحلة .Ticket Rout
- تاريخ السفر مع الـ Classes .
- إسم الموظف الذي صدر التذكرة .

وغيره الكثير من التفاصيل مثل رقم الحجز PNR و..و.و.. ،و تسجيل هذه البيانات تعتبر عملية شاقة ، ناهيك عن خطورة تكرار التذاكر في قاعدة البيانات ،لذلك ظهر هناك طريقة للربط بين برنامج الحسابات وبرامج الحجز المختلفة مثل GALILEO بحثت طويلاً عن كيفية عمل هذا الربط برمجيا في مواقع الإنترنت بلا جدوى الى أن وجدت الملفات التي يصدرها نظام الحجوزات وتخزن في مجلد على الجهاز الرئيسي ولكنها تكون مرتبة بشكل ما وتحتوي على كافة تفاصيل التذكرة التي احتاجها ومرفق هنا هذا الملف وطريقة البرمجة والملف التنفيذي وهو خاص فقط بنظام الحجوزات GALILEO .
ويتم انشاء هذه الملفات مع كل عملية تصدير لأي تذكرة طيران وحفظها في المجلد الخاص بكل نظام حجز وبامتداد مختلف فنظام جاليليو مثلاً يتم انشاء الملف الخاص بالتذكرة بامتداد "MIR." في مجلد يحمل نفس الأسم "MIR" .
وفكرة الكود المرفق هو قراءة الملف بامتداد MIR الخاص بنظام جاليليو .هنا اكون قد انهيت مقالتي يتبقى لقرائي الاعزاء تجربة كود وتطويره والإستفادة منه ،في إنتظار تعليقاتكم .في النهاية تقبلوا خالص تحياتي والى اللقاء في مقالة جديدة ان شاء الله .
طلبي الوحيد من قرائي هو الدعاء لي ولي اسرتي بالستر .


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

الجمعة، 25 سبتمبر 2009

تصميم برنامج حسابات - دفتر اليومية

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

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

تعودنا في دروسنا السابقة على البدء بتصميم قاعدة البيانات :

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

يتكون الجدول في الأساس من :

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

طبعاً ليست هذه فقط هي الأعمدة المكونة لدفتر اليومية ،ولكنها الأساسية وتستطيع حسب الحاجة الإضافة عليها مثلاَ عمود خاص بمركز التكلفة وهكذا .

كتابة الكود وتصميم واجهة المستخدم :
تتكون واجهة المستخدم في الأساس من جدول اضافة القيود اليومية DATAGRIDVIEW كما سترى في الملف المرفق في آخر الدرس ..

لهذه الشاشة وظيفتين :

  1. عرض القيود المسجلة فعلياً .
  2. اضافة القيود الجديدة والتعديل في القيود المسجلة فعلياً .

- عرض القيود المسجلة : يتم بشكل تلقائي بمجرد فتح شاشة القيود اليومية ،ونستطيع الإستعلام عن أي قيد عن طريق رقمه ،وهناك أيضاً فابلية التعديل في القيود وكل هذا سيكون أكثر وضوحاً في الملف المرفق .
- اضافة القيود الجديدة : في هذا البرنامج يقوم مستخدم واحد فقط بهذه العملية ...

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

كود برمجة دفتر اليومية

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

لمتابعة الدروس السابقة ....

التمهيد
شجرة الحسابات
شجرة الحسابات 2

مراكز التكلفة

الاثنين، 1 يونيو 2009

تصميم برنامج حسابات - مراكز التكلفة

أعود من جديد لسلسلة دروس تصميم برنامج حسابات ،بعد مقالتين لم يبتعدوا إطلاقاً عن نطاق المحاسبة والمجال المالي بشكل عام ،فهي مقالات ودروس في النهاية تكمل بعضها البعض ،فعندما نتحدث عن المحاسب الحر وعن تصميم برنامج حسابات يرى القارئ أنه يستطيع بعد تعلم تصميم برنامج حسابات متكامل تسويق هذا البرنامج والحصول على عائد ليس بالقليل ،فمثلاً سعر أقل برنامج حسابات هنا في دولة الكويت لا يقل بشكل من الأشكال عن 500 دينار كويتي .والآن إلى الدرس ....
مراكز التكلفة : " Cost Centers "
درس اليوم يتحدث عن مراكز التكلفة وطريقة برمجتها .......
ما هي مراكز التكلفة ؟ وما هي فائدتها ؟
مراكز التكلفة هي عناصر تنتمي الى تصنيف معين مثل السيارات مثلاً في شركات النقل أو عقود المقاولات في شركات المقاولات ويتم تحميل كل عنصر على حدى بما يخصه من إيرادات ومصاريف .ونستطيع القول أنه وبشكل عام يختلف الأمر بإختلاف طبيعة النشاط والمحاسب هو من يستطيع تحديد التصنيف المناسب لمراكز التكلفة .
تستخدم مراكز التكلفة في القيد المحاسبي لتحميل سواء المصاريف أو الإيرادات على مركز تكلفة محدد ،مثلاً شركة نقل فيها عدد 20 سيارة نقل فيتم عمل لكل سيارة مركز تكلفة مستقل ويتم تحميل مصاريف وايرادات كل سيارة على مركز التكلفة الخاص بها ،وبالتالي نستطيع عمل تقارير على أساس مراكز التكلفة حتى تستطيع الإدارة في آخر الفترة معرفة إنتاجية كل سيارة ومصاريف كل سيارة على حدى ،وهكذا في المجالات الأخرى المختلفة .
تصميم جداول قاعدة البيانات :
فكرة برمجة مراكز التكلفة بسيطة جداً ،وبالتالي تصميم قاعدة البيانات بسيط بطبيعة الحال ،كل ما نحتاجه من بيانات هو الرقم المسلسل - إسم مركز التكلفة - نوع مركز التكلفة .
نوع مركز التكلفة في حالتنا هنا يتكون من حالتين مركز تكلفة رئيسي ومركز تكلفة إضافي فقط لا غير ،مع العلم أنه يمكن زيادة الأنواع والتصنيفات كما تشاء وبالطريقة التي يحتاجها نظام حساباتك كما أوضحت في الأعلى .
TYPE

أساسي

CC_NAME

السيارة 1

ID

1







إضافي

محمد أحمد

2





أساسي

السيارة 3

3

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

- شاشة عرض مراكز التكلفة : سنعتمد على أداة جدول البيانات DataGridView في عرض مراكز التكلفة ،وعدد 2 زر Button واحد للخروج من النموذج أو الشاشة والآخر لإضافة مركز تكلفة جديد بمجرد الضغط عليه ينقلنا لنموذج إضافة مركز تكلفة جديد .
- شاشة إضافة مركز تكلفة جديد : يحتوي على مربع نص TextBox لإضافة إسم مركز التكلفة ومربع نص آخر غير مفعل يحتوي على رقم مركز التكلفة و يتم تكوينه بشكل مسلسل عن طريق الكود هذا بالَافة إلى إختيار نوع مركز التكلفة إذا كان إضافي أو أساسي ،كما يتجدون الشرح أكثر وضوحاً مع الملف المرفق في الكود .


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

الأحد، 10 مايو 2009

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

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

كما أوضحت سابقاً فأن هذا الشرح يخص الـ Visual Basic.Net

فيما يخص شجرة الحسابات نحتاج الى شاشتين مستخدم (FORM) :
  • شاشة عرض شجرة الحسابات .
  • شاشة التعامل مع الحسابات داخل الدليل ،إضافة ،تعديل ،حذف الحسابات .
شاشة عرض شجرة الحسابات :
1 - تصميم واجهة المستخدم :
كل ما نحتاجه في هذه الشاشة هو أداة لعرض الحسابات بالتنسيق وبالطريقة المناسبة التي تكون واضحة وسهلة الإستخدام ،وصراحةً أنا عملت كمحاسب على أكثر من نظام حسابات ووجدت أفضل أداة لهذا الغرض هي الـ TreeView والحقيقة هي أكثر الأدوات إستخداماً لهذا الغرض .

2- الكود :

في حدث تحميل الشاشة أو النموذج " Form_Load " يتم كتابة الكود الذي سيقوم بترتيب الحسابات المسجلة في قاعدة البيانات في الـ TreeView على حسب مستوى الحساب والحساب الأم لكل حساب .بمعنى أن يتم إضافة المستوى الأول من الحسابات في المستوى الأول من الـ TreeView ثم يتم إضافة المستوى التالي من الحسابات في المستوى التالي من الـ TreeView على حسب الحساب الأم كما هو مسجل في قاعدة البيانات التي سبق وقمت بتوضيحها ، كأن يأتي مثلاً حساب الأصول المتداولة "المستوى الثاني" متفرع من حساب الأصول "المستوى الأول" .

شاشة التعامل مع الحسابات :

تتلقى الأوامر من شاشة عرض الحسابات ،فهي تقوم بعمل التعديل على الحسابات بناءاً على الأوامر التي تأتي من شاشة عرض الحسابات ،فعندما نريد مثلاً إضافة حساب إلى العملاء يحدث الآتي :

  1. نختار حساب الأصول "مستوى أول" ثم حساب الأصول المتداولة "مستوى ثاني" ثم العملاء "مستوى ثالث.
  2. ثم نضغط على زر إضافة حساب في الوقت الذي يكون فيه الإختيار على حساب العملاء فيتم تسجيل إسم الحساب ورقمه في متغيرين مختلفين كما ستجد في الكود المرفق حتى نستطيع إستخدامهما في شاشة التعامل مع الحسابات.
  3. تفتح شاشة التعامل مع الحسابات ويظهر فيها مربعان يخصان الحساب الأم "حساب العملاء" الأول يظهر فيه إسمه والثاني رقمه .
  4. ويظهر مربعان آخران يوضحان الحساب المراد إضافته مربع يخص الإسم وهذا فارغ والآخر يخص رقم الحساب وهذا يتم تكوينه بشكل مسلسل طلقائياً وسيتم توضيح ذلك بشكل أكثر تفصيلي في الكود المرفق .

تصميم شجرة حسابات مع الكود


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

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

تابع الجزء الأول

الخميس، 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





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


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

الخميس، 23 أبريل 2009

تصميم برنامج حسابات - تمهيد

أشعر بالرغبة في أن أعرض في هذه المساحة تجربتي مع العمل الحر واوضح مذاق التخلص تدريجياً من عبودية الوظيفة التي طالما أخذت من وقتي أكثر مما تستحق وأخذت الأهم وهو جزء كبير من روح الحماسة وروح الإبداع والإبتكار نعم هذه هي الوظيفة للأسف . سأتحدث في سلسلة من المقالات عن تجربتي في صناعة نظام حسابات متكامل " إني بصدد تجميع البيانات عن هذا الموضوع لعمل مقالة مستقلة عن صناعة البرمجيات " قد يستفيد منه البعض وقد أستفيد أنا أيضاً من خبرات الآخرين فهذا هو الهدف الأسمى للتدوين وهو مشاركة الخبرات وتبادل المعرفة والعلم ،فإن أصبت فمن الله وإن أخطأت فمني ومن الشيطان .
أقوم بعمل زيارات إسبوعية في أحدى شركات النقل في دولة الكويت ،كانت هذه الشركة تعمل بنظام حسابات يعتبر يدوي فكانت تعتمد على الإكسل .في بداية عملي مع هذه الشركة كنت قد بدأت في تصميم نظام حسابات متكامل بإستخدام الـ .نت (Visual Basic.Net ) وقاعدة بيانات أكسس .وبعد فترة من العمل في الشركة كنت قد إنتهيت من تصميم النظام بجميع أجزائه فيما يخص قاعدة البيانات وواجهة الإستخدام في ذلك الوقت كنت قد أقفلت السنة وقدمت التقارير الختامية .
أود أن أوضح هنا شيء مهم وهو أني ليس متخصص في البرمجة .ولكن أعتقد أني أعرف في البرمجة على الأقل ما يؤهلني لتصميم نظام حسابات متكامل .أعني هنا أن الأمر ليس صعب على الإطلاق المهم هو شيء يسمى الإرادة .
وحيث أن إستخدام نظام حسابات متكامل في مجال شركات النقل سيسهل عليا الكثير ،وبما أن عامل الوقت مهم بالنسبة لي كمحاسب حر قررت أن أستخدم نظامي الجديد في الشركة حتى لو كان بدون مقابل مادي فهو سيعطيني حرية أكبر وسيوفر عليا الكثير من العمل الذي كنت أنجزه عندما كنت أستخدم الإكسل .
وفي نفس الوقت هي فرصة كي أقوم بتجربة النظام والبحث عن الأخطاء وتنقيحه ثم تطويره هذا بالإضافة الى أن صاحب العمل كان قد طلب مني البحث عن نظام حسابات في السوق ولكن السعر كان مرتفع بعض الشيء .
إنتظروا مني سلسلة مقالات عن تجربتي في تصميم هذا النظام لعلني أستطيع أن افيد أحدكم أو أن يصل ألى مدونتي المتواضعة من هو خبير في هذا المجال وأستفيد أنا منه .