delphi4arab منتديات دلفي للعرب
تحليل نظام مبيعات عام - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14)
+--- الموضوع : تحليل نظام مبيعات عام (/showthread.php?tid=4069)

الصفحات: 1 2 3


تحليل نظام مبيعات عام - CMT-10 - 04-04-2012

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

تحليل منظومة مبيعات عامة .

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

جداول المنظومة
مخزن بضاعة واصناف – فواتير مشتريات – فواتير مبيعات – موردين – عملاء – مصاريف .

الاصناف التي سنتعامل معها في المنظومة يمكن تجميعها في مجموعات مثل مجموعة بالاسم ( طلاء ) وتحت هذه المجموعة تندرج الاصناف مثل ( طلاء حائطي – طلاء زيتي – طلاء مائي ) وهكذا .
والصنف سنحتاج لان يكون له أسم - وسعر شراء - وسعر بيع - وحد شراء – وكمية .
وبهذا يكون الجدول كما بالشكل التالي :


.jpg   qqqqqqqqqqqqq.jpg (الحجم : 36.12 ك ب / التحميلات : 715)

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


تحليل نظام مبيعات عام - piratewar - 04-04-2012

توكل على الله


تحليل نظام مبيعات عام - kachwahed - 04-04-2012

وعليكما السلام ورحمة الله وبركاته
بداية أشكرك على المبادرة والموضوع Smile
ليس لدي أي اعتراض، إنما هي اختيارات شخصية تخضع غالبا لرغبات المستخدم ومحيط العمل
بعبارة أخرى: لا يكاد يوجد صح وخطأ، أي تحليل يؤدي المطلوب فهو صحيح
يبقى الآن اختيار الحل: الأكثر قابلية للتوسع، سهل للتطبيق، يوفر أكثر بيانات ممكنة... وهذا هو موضوع البحث.
إقتباس :رسم خوارزمي لا يفهمها البعض
لا يفهمها البعض لا يعني أن نتخلى عنها، من المهم جدا أن تتبع منهج معين عند العمل:
http://en.wikipedia.org/wiki/Software_development_methodologies
اختر أحد المناهج UML/RUP, Merise, Agile... أو اصنع لك واحد خاص بك Smile
http://en.wikipedia.org/wiki/Unified_Modeling_Language
http://fr.wikipedia.org/wiki/Merise_%28informatique%29
http://en.wikipedia.org/wiki/Agile_software_development
ملحوظات على التصميم السابق:
- بعض الأدوات توفر عليك عناء التصميم، مباشرة من الجداول يتم رسم تصميم واضح
- ينبغي مراعاة تسمية الأعراض (أسماء الجدوال والحقول) فهي كالمصطلحات التقنية يفضل أن تكون بالإنجليزي (هناك اتفاقيات تسمية Naming Convention)
- يمكن للصنف الواحد أن يكون له عدة موردين دون إجبار المستخدم على شيء

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

لاحظ من مثال مشابه Inventory management من أمثلة MS Access على موقع Microsoft طريقة تصميم الجداول:
كود :
http://office.microsoft.com/en-us/templates/results.aspx?qu=sales&av=zac&mkt=en%2Dus&queryid=b1486975%2Ddfe0%2D46da%2Daf3f%2D74e603d3bec9#ai:TC001018458|

بالتوفيق.



تحليل نظام مبيعات عام - CMT-10 - 06-04-2012

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


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

اخ kachwahed بصراحة الروابط تحتاج الى سرعة جيدة لتصفحها ومطالعتها

إقتباس : ينبغي مراعاة تسمية الأعراض (أسماء الجدوال والحقول) فهي كالمصطلحات التقنية يفضل أن تكون بالإنجليزي (هناك اتفاقيات تسمية Naming Convention)

جميل انا ايضا اتفق معك في هذا

إقتباس :حقل كمية المخزن (برأيي) ينبغي التعامل معه بشكل مختلف، بحيث نوفر للمستخدم الميزتين معا

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

ولو اراد المستخدم تعديل او موازنة المشتريات يمكن يضيف فاتورة وهمية (حل معقول وريحونا منه )

كمية المخزن = المشتريات - المبيعات

بداية انظرو الى هذا التحليل بالصورة


.jpg   AAAAAAA.jpg (الحجم : 26.05 ك ب / التحميلات : 643)


الجدول Group للمجموعات وبه حقل لاسم المجموعة ويرتبط بالجدول Sanf لتخزين الاصناف وبه الحقول على الترتيب الظاهر بالصورة
رقم تلقائي – سعر البيع – سعر الشراء – حد الشراء – حقل ربط
وايضا لدينا جدول المشتريات CheraFatora وبه الحقول على الترتيب الظاهر بالصورة :
رقم تلقائي – رقم الفاتورة – تاريخ الفاتورة – رقم المورد أي من هو المورد للبضاعة – هل الفاتورة مدينة ام لا – تاريخ السداد – المدفوع – الخصم
ويرتبط هذا الجدول بالجدول CheraBody وبه الحقول على الترتيب الظاهر بالصورة :
رقم تلقائي – حقل الربط برقم الفاتورة أي يتبع أي فاتورة – رقم الصنف أي ما هو الصنف المشترى – سعر الشراء – الكمية
وايضا لدينا جدول الموردين MMoared وبه الحقول على الترتيب الظاهر بالصورة :
رقم تلقائي – اسم المورد – العنوان – الهاتف – موقع ويب – نوع النشاط محل ام شركة او مركز – البريد الاليكتروني
وايضا جدول المبيعات Bea3Fatora وبه الحقول على الترتيب الظاهر بالصورة :
رقم تلقائي – رقم الفاتورة – تاريخ الفاتورة – أسم العميل او المشتري – المدفوع – تاريخ السداد – الخصم – هل الفاتورة مدينة ام لا
ويرتبط هذا الجدول بالجدول Bea3Body وبه الحقول على الترتيب الظاهر بالصورة :
رقم تلقائي – حقل الربط برقم الفاتورة أي يتبع أي فاتورة – رقم الصنف أي ما هو الصنف المشترى – سعر البيع – سعرالشراء – الكمية
وايضا لدينا جدول Zopn أي الزبائن او العملاء وبه الحقول على الترتيب الظاهر بالصورة :
رقم تلقائي – اسم المورد – العنوان – الهاتف – موقع ويب – نوع النشاط محل ام شركة او مركز – البريد الاليكتروني
وايضا لدينا جدول المصاريف Masrof وبه الحقول على الترتيب الظاهر بالصورة :
أسم المصروف – المبلغ المدفوع – تاريخه – ملاحظة

تقريبا هذا هو الحد الادنى من الجداول لأي منظومة :
والان ما هي الاعتراضات التي من الممكن ان نتجنبها .
1. يمكن استخدام جدول الموردين كجدول للعملاء مع اضافة حقل يميز بينهما ( الرغبة للمبرمج )
2. الاستغناء عن الحقل ( هل الفاتورة مدينة ام لا ) ويمكن معرفة ذلك من خلال مقارنة مجموع سعر الفاتورة مع المدفوع ( افضل هذا الحقل واريح دماغي من اجراء العمليات )
3. في المبيعات نلاحظ وجود سعر الشراء بالفاتورة مع انه موجود بجدول الاصناف وحقيقة يعني ( ماهو سعر الشراء الذي بعنا به البضاعة بتلك الايام او بتلك الفاتورة لانه السعر يتغير ومن خلال هذا السعر الحقيقي يمكن حساب نسبة الربح الحقيقية للمبيعات )


تحليل نظام مبيعات عام - CMT-10 - 06-04-2012

سانتظر مشاركتكم وتعديلاتكم قبل ان ننتقل الى مناقشة المشاكل والحلول (
شاركونا جميعا نريد ان ننهي مشكلة تحليل منظومة مبيعات عامة هنا )

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

بسبب ولان .

ان عمليات الاستعلام بجدول فيه عشرون الف فاتورة اسرع منه بجدول به اربعون الف فاتورة


تحليل نظام مبيعات عام - CMT-10 - 06-04-2012

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



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

المخزون = المشتريات - المبيعات


واذا اردنا استخدام الكود من الدلفي وبواسطة لووب فمن الممكن ان يكون ذلك بطئ جدا مع كمية فواتير كبيرة او كثيرة اخر السنة او العام

لذلك اردت ان احصل على جملة SQL لذلك ووجدت الحل بالجملة التالية :

كود :
SELECT Sum(Bea3Body.Total) AS Bea3Total, Sum(CheraBody.Total) AS CheraTotal, Sanf.mname FROM (Sanf LEFT JOIN Bea3Body ON Sanf.ID = Bea3Body.Sanf) LEFT JOIN CheraBody ON Sanf.ID = CheraBody.Sanf GROUP BY Sanf.mname, Bea3Body.Sanf, CheraBody.Sanf;

هذه الجملة تستخدم عملية الربط Join بين جدول الاصناف والمشتريات والمبيعات

ولاحظ انني استخدمت الربط من جهة اليسار Left Join والا فلن يظهر الاستعلام أي شئ بحال كان جدول المبيعات ليس به فواتير .

او بحال كانت الفاتورة بجدول المبيعات مختلفة في بضاعتها عن جدول المشتربات

أي بحال استخدمنا Inner Join والتي تستلزم المساواة بين الجداول .

المهم ان هذا الاستعلام اظهر النتيجة التالية :


.jpg   AAAAAAA.JPG (الحجم : 7.7 ك ب / التحميلات : 524)

كما تشاهد أسم الصنف وكمية المشتريات وكمية المبيعات أي مجموعها كاملة والمسؤول عن ذلك هو الدالة SUM والمفتاح Group BY هو لجمع كل الاصناف المتشابهة معا
المشكلة الوحيدة هنا والتي يمكن التغلب عليها من الدلفي هي بحال لم تكن هناك بضاعة باحد الجداول مثل :
ان الصنف طلاء زيتي موجود بفواتير المشتريات بكمية اجمالية 7 سبعة ولا يوجد بفواتير المبيعات .
ما يحدث ان القيمة ستكون Null وليست صفر ولو حاولت انقاص مجموع المشتريات بالمبيعات ستكون النتيجة Null
جرب اضافة تعديل الجملة لتكون كما بالشكل التالي :


كود :
SELECT Sum(Bea3Body.Total) AS Bea3Total, Sum(CheraBody.Total) AS CheraTotal, Sanf.mname, [color=Red]Sum(CheraBody.Total - Bea3Body.Total) as Finish[/color] FROM (Sanf LEFT JOIN Bea3Body ON Sanf.ID = Bea3Body.Sanf) LEFT JOIN CheraBody ON Sanf.ID = CheraBody.Sanf GROUP BY Sanf.mname, Bea3Body.Sanf, CheraBody.Sanf;



النتيجة ستكون كما بالشكل التالي :



.jpg   BBBBBBBBBB.JPG (الحجم : 9.33 ك ب / التحميلات : 562)


كما يمكنك ان تشاهد عملية الطرح جلبت القيمة Null

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

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


تحليل نظام مبيعات عام - CMT-10 - 06-04-2012

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

المبيعات * الكمية - المشتريات * الكمية = الارباح

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

مع مراعاة ان يتم خصم مصاريف المحل منها

الايجار - الكهرباء - وغيرها .

وايضا هل يتم اعتبار البظاعة التي بالمخزن خسائر ومن الخسائر حتى يتم بيعها ام هي شئ وسط ....؟

فالبظاعة التي بالمخزن هي اقرب الى ان تكون بصف الخسائر حتى يتم بيعها فتتحول الى ارباح


تحليل نظام مبيعات عام - hanipino - 06-04-2012

فيما يخص NULL
بالنسبة للاكسس الدالة المسؤولة عن تحويل NULL الى شىء اخر مثلا 0 ... جرب الدالة Nz

كود :
Nz(Field, 0)



تحليل نظام مبيعات عام - hanipino - 06-04-2012

فيما يخص حساب الارباح

-------------------------
القيمة = الكمية * فى سعر الوحدة
-------------------------

قيمة المبيعات + قيمة المخزون - قيمة المشتريات = الارباح

و الله اعلم

بالنسبة لقيمة المخزون ( كيفية حسابها ) يوجد عدة طرق ... احدى الطرق مطروحة على شكل تمرين فى المنتدى (cmup)


تحليل نظام مبيعات عام - CMT-10 - 06-04-2012

السلام عليكم

إقتباس :بالنسبة لقيمة المخزون ( كيفية حسابها ) يوجد عدة طرق ... احدى الطرق مطروحة على شكل تمرين فى المنتدى (cmup)

لقد شاهدت الموضوع ورأيت الرابط لفيديو ما لم اشاهده لان سرعة الانترنت عندي لا تسمح ولكن من الاقتباسات لموضوعك هناك التالي :

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


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

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

الا اذا كان هناك بالطريقة التي ذكرتها شئ اسرع او فكرة اجمل

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