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

الآن نفس الأمر يتكرر ..

أخي cmt-1-

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

لقد قمت بالاطلاع على ملف اكسيس الذي أشرت إليه، و فيه دمجت الجدولين في جدول واحد
تحت اسم Trans أي الحركة (أكثر من 600 ألف تسجيلة) ، وقمت بوضع كمية الداخل في خانة InQ
والخارج في حانة OutQ ، ثم جرّبت الاستعلام الوارد أدناه، لحساب مجموع الخارج ومجموع الداخل
والفرق بينهما:

PHP كود :
SELECT Sum(OutQ) AS OutTotal, Sum(InQ) AS InTotal, (Sum(OutQ) - Sum(InQ)) AS Balance
FROM Trans
WHERE sanf
=5; 

النتيجة تظهر لحظيا تقريبا.
[-] كل من 1 user says قال شكرا ل shagrouni على المشاركة المفيدة
  • belkhir2
الرد
#12
السلام عليكم

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

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

لقد بينت فكرتي في مداخلاتي في هذا الموضوع وفي موضوعات أخرى مثل: "فكرة تجزئة البيانات بعدة جداول"

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

ملاحظة: من المهم وجود ملف تاريخي للسنوات السابقة، خاصة في حالة كثرة حركات الداخل والخارج، لزيادة كفاءة استرجاع البيانات.
الرد
#14
السلام عليكم

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

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

زيادة على ذلك، تصوّر أن هناك مجموعة مستخدمين لعدة نسخ من برنامجك و يتشاركون في نفس قاعدة البيانات،
لو طبقت فكرتك؛ سيكون ذلك ارهاقا لقاعدة البيانات و للشبكة.
الرد
#16
السلام عليكم


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


وجزاك الله كل خير


الملفات المرفقة
.rar   NewData.rar (الحجم : 12.24 ك ب / التحميلات : 128)
بين الانسان والكفر ترك الصلاة فمن تركها فقد كفر .
الرد
#17
ايضا هذا تصميم أخر أسميه العنكبوت
انا حاسس ان المشاكل لا يحلها الا العنكبوت
فشباك العنكبوت تسد الفراغات بين الاشجار ويمكن لقطرة الماء ان تجد لها العشرات من المسالك لتصل الى هذفها
التصميم بالمرفقات


الملفات المرفقة
.rar   NewDesing.rar (الحجم : 15.67 ك ب / التحميلات : 92)
بين الانسان والكفر ترك الصلاة فمن تركها فقد كفر .
الرد
#18
PHP كود :
Group  // جدول المجموعات
    
Group_No  // رقم المجموعة
    
DEscription  //  اسم المجموعة

Item   //جدول الأصناف 
    
Item_No   // رقم الصنف
    
Group_No  // رقم المجموعة
    
Description // الوصف
    
Min_Quantity // الحد الأدنى
    
Max_Quantity // الحد الأعلى
    
Order_Level  // حدّ الطلب
   
    
Open_Quantity // الرصيد الافتتاحي

Party // جدول الجهات والاشخاص
  
Party_No
  Party_Name
  Address
  Phone
  Email
  Mostly_Type 
// نوعه في الأغلب مورد أو زبون

Order  // جدول أوامر الشراء أو الصرف
  
Order_No
  Order_Date
  Party_No

Order_Line 
// جدول تفاصيل أمر الشراء أو الصرف
  
Order_No // رقم الأمر
  
Item_No  // رقم الصنف
  
Quantity // الكمية
  
  
Document  // جدول مستند الاستلام أو الصرف مثل: فاتورة بيع، اذن استلام
    
Document_No  // رقم المستند
    
Document_Type  // نوع المستند: فاتورة بيع، اذن استلام، قاتورة شراء، تصحيح كمية مخزون
    
Document_Date  // تاريخ الوثيقة
    
Order_No // رقم أمر الشراء أو الصرف 
    
Party_No  // رقم الجهة أو الشخص : موردأو زبون، ..

Transaction جدول الحركة  
    Transaction_No 
// رقم الحركة
    
Transaction_Type  // نوع الحركة 
    
Document_No  //رقم المستند
    
Item_No // رقم الصنف
    
Quantity_In  // الكمية الداخلة
    
Quantity_Out  // الكمية الخارجة
    
Price   // سعر البيع أو سعر الشراء أو التكلفة المقدرة


========
Item_Hist  // جدول تاريخي للأصناف
  
Item_No  // رقم الصنف
  
Open_Quantity  // الرصيد في أول المدة
  
Year //  السنة

Document_Hist  // جدول مستند الاستلام أو الصرف مثل: فاتورة بيع، اذن استلام
    
Document_No  // رقم المستند
    
Document_Type  // نوع المستند: فاتورة بيع، اذن استلام، قاتورة شراء، تصحيح كمية مخزون
    
Document_Date  // تاريخ الوثيقة
    
Party_No  // رقم الجهة أو الشخص : موردأو زبون، ..

Trans_Hist  // جدول تاريخي للحركة
    
Transaction_No // رقم الحركة
    
Transaction_Type  // نوع الحركة 
    
Document_No  //رقم المستند
    
Item_No // رقم الصنف
    
Quantity_In  // الكمية الداخلة
    
Quantity_Out  // الكمية الخارجة
    
Price   // سعر البيع أو سعر الشراء أو التكلفة المقدرة 
الرد
#19
السلام عليكم

اخي shagrouni طالما لدينا حقل Transaction_Type لماذا نضع حقلي Quantity_In و Quantity_out
نستطيع جعلهم حقل واحد Quantity ومن خلال Transaction_Type نطلب استعلام جلب المواد الداخله والمواد الخارجه
هذا افضل من ناحية تصميم قاعدة البيانات فنحن بالطريقة الحقلين نقوم بهدر بعض المساحات
مارأيك
الرد
#20
مرحبا syscall

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

أنظر لبساطة هذه الجملة، وقارنها بجملة أخرى تؤدي نفس المطلوب لو كانت الكميات في خانة واحدة.

PHP كود :
SELECT (Sum(OutQ) - Sum(InQ)) AS Balance 
FROM Trans 
WHERE item_no 
= 5; 
[-] كل من 1 user says قال شكرا ل shagrouni على المشاركة المفيدة
  • annabil23
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم