السلام عليكم ورحمة الله وبركاته
الأمر ليس بالسهل وكما تفضل الأخ الفاضل : عبد الله الدوسري ..
فهو يتعلق بأكثر من أمر :
1- من يريد أن يصنع برنامج حسابات عليه أن يكون لديه القدرة على التحليل المنطقي لسير الأكواد وكيف تنفذ (يعني عليه معرفة الأساسيات التي يبنى عليها برنامج الحسابات) .
2- أن يكون لديه إلمام بالمحاسبة نفسها (يجب أن يعرف كيف تسجل القيود ويكون لديه إدراك لبعض الفاهيم المحاسبية والبرمجية وبالذات :
-- ما معنى أن يكون الحساب مدين أو دائن.
-- لماذا يكون الحساب هنا مدين وهناك دائن.
-- ومتى يكون مدين ومتى يكون دائن (ولماذا نعامل هذا الحساب كأنه مدين في هذه المعاملة بينما بالعادة نعلمله كـ دائن (كمشكلة مقاصة الديون بين الدائنين أو مقاصة الديون بين المدينين أو كـ حسابات العملاء في البنوك).
-- لماذا هذا الحساب مستحيل أن يكون دائناً أو بالعكس (كـ حساب الصندوق).
-- لماذا يمكن أن يكون حساب كميات المواد دائن(برمجياً) -- (بالرغم من أنه محاسبياً لا يمكن أن يكون كذلك)..
و هذه النقطة الأخيرة تخالف المنطق الذي تسعى لاثباته في طلبك هنا.
المنطق في طلبك هنا أن تصنع استعلام يقوم بحساب رصيد الداخل والخارج من المادة(موضوع الطلب) - ثم - تعطي تنبيه للمستخدم.
مثلا :
الكمية المطلوبة غير متاحة، هل تريد الاستمرار بتنفيذ طلبك ؟؟
والمستخدم هو من يقرر وليس البرنامج ..
فإن كان المستخدم يريد تسجيل فاتورة بالرغم من معرفته الكمية في المخازن أقل من المطلوب فهذه مشكلته وليست مشكلتك وليست مشكلة في البرنامج ...
ستقول كيف سيبيع مواد غير موجودة عنده ؟
الأمر بسيط : وله أكثر من احتمال :
- البائع لديه علم بأن المواد موجودة لأنها الان وصلت للمخازن أو في طريقها للمخازن ولكنها لم تسجل حتى الان بحركة المواد.
- البضاعة فعلاً غير موجودة عنده ولكنه يستطيع توفيرها من السوق ثم يبيعها للزبون (ولكنه هنا يبيعها قبل أن يشتريها وهذا عرف متداول في السوق).
فهو سوف يسجل الفاتورة ويحاسب الزبون ويعطيه الفاتورة
(ثم) يرسل له البضاعة إلى عنوانه في وقت محدد اتفق عليه مع الزبون.
(ثم) = يعني راح يوفرها بطريقة ما (ربما من تجار السوق، أو بأي طريقة أخرى .. ) وسيجلها في البرنامج في وقت لاحق.
-----------------------------------------------------------------------------------------
تبقى لديك المشكلة التي تسأل عنها كيف تحسب الكمية المتاحة لمادة ما :
- بالأساس أن تكون مهدت لذلك من خلال برنامجك وقاعدة البيانات. كيف ذلك ؟؟
- الاجابة بسيطة : هناك أكثر من طريقة ،، أبسط طريقة :
-- تنشئ جدول خاص بحركة المواد تسجل فيه :
1 - كمية اول مدة (وهذه تحتاج قيد محاسبي كما في المبيعات والمشتريات ومردوداتهما) يعني من خلال البرنامج(لأنك مبرمج ومحاسب وتستطيع عمل ذلك).
2 - الداخل من المواد مهما اختلفت طريقتها (مشتريات، مردودات مبيعات، عرض على كمية مشتراة، هدية .. مواد مصنعة داخل المؤسسة نتيجة تحويل مواد إلى مواد أخرى (إن كان البرنامج يستوعب ذلك) .. وأي داخل آخر)
3 - الخارج من المواد مهما اختلف طريقتها (مبيعات، مردودات المشتريات، تالف، مسروق، هبات .. مواد تخرج من المخازن ليتم انتاج مواد أخرى من خلالها (إن كان البرنامج يستوعب ذلك) .. وأي خارج آخر).
4 -
الشيء الذي سيجعل ما سبق وما لحق بسيط : هو أن تسجل كميات المواد الناتجة عن الحركات السابقة بحقل واحد(الداخل موجب والخارج سالب).
5 - الآن جدول حركة المواد يكون تحت تصرفك وسيعطيك مجموعة نتيجة كمية مادة بإستعلام بسيط ومن خلال البرنامج نفسه ولن تحتاج لإجراء مخزن في قاعدة البيانات وهو الاستعلام (
مجموع حقل ما من جدول حركة المواد للمادة المعينة ).
كود :
"SELECT Sum(f_ProductCount) As [sProductCount] FROM tbl_ProductMovement WHERE ProductName = 'XXXX'"
وهذا الأمر ببساطة ..
وهذه البساطة تحتاج أن تكون قد مهدت لها في برنامجك من الأساس(مع كل حركة مبيعات أو مشتريات أو مردودات أو أو أو... تدخل سطر جديد على جدول حركة المواد بالحركة التي تمت على مادة (ما) ).
مختصر لما سبق : يعني جدول حركة المواد يقول لك (لا تعمل شي بدون ما تخبرني - حتى أستطيع أن أعطيك نتيجة سريعة أو تقرير مفصل عن كل مادة والحركات التي تمت عليها وبحسب طلبك)..