01 مايو, 2011

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

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


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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

7 التعليقات:

  1. غير معرفNov 14, 2011 03:54 AM

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

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

    ردحذف
  3. غير معرفNov 16, 2011 06:28 AM

    مثلا... لو ان المشتريات كانت 20 قطعة بسعر 1000 لكن المستخدم قام بادخال السعر بزيادة صفر سهوا فتكون التكلفة الكلية للمادة 20*10000=200000 بدلا من 20000
    ثم قام بادخال فاتورة مبيعات 5 قطع بسعر بيع 1500
    فيكون الربح=سعر البيع - سعر التكلفة
    الصحيح =(5*1500)-(5*1000)=2500
    اما الخطأ الذي يسجل به الفاتورة هو:
    (5*1500)-(5*10000)=-42500 رقم كبير خسارة وهكذا للمبيعات التالية
    و المشكلة الاكبر ان المستخدم لا يقوم بتدقيق الفواتير ... ثم يقوم بادخال عدد كبير من العمليات و بعد شهر او اكثر يكتشف ان المادة خسارنة .. واذا كان فهيم ورجع للفواتير فاتورة فاتورة ليكتشف ان هناك فاتورة مشتريات فيها زيادة صفر فقط و فواتير البيع التاليه لها كلها خاطئة... فيجب علية تعديل كل فواتير البيع و لكن كيف سيعدلها و ما هو السعر الذي ستعتمد عليه في حساب ربحها.. اعتذر للاطاله ولكني وضعت هذا المثال لا ني اظن ان فاتورة مردوات لا يمكنها حل المشكلة فماذا سوف نفعل بكل هذة الفواتير الخاطئة.... ولك جزيل الشكر...صعبتا شوي عليك !!!؟

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

    ردحذف
  5. غير معرفNov 17, 2011 04:39 AM

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

    ردحذف
  6. غير معرفNov 17, 2011 04:47 AM

    أزال أحد مشرفي المدونة هذا التعليق.

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

    ردحذف