الانتقال إلى المحتوى

برنامج مشتريات


Primer

Recommended Posts

ان شاء الله تعالى
سوف ابدأ فى شرح خطوات عمل برنامج مشتريات :

اولاً : انشاء الجداول:
عملاء Customers- بضائع items-الفواتير Invoices

جدول العملاء:
Create table Customers(cust_no number(4) primary key,
Cust_name varchar2(20),
E_mail varchar2(20),
Tel_no varchar2(20));

جدول البضائع :
Create table items(item_no number(4) primary key,
Item_desc varchar2(20),
Qty number(4),
P_u number(8,2));

جدول الفاتورة الرئيسية :
Create table inv_m(inv_no number(4),
Inv_type number(1),
Inv_date date,
Cust_no number(4) references customers(cust_no),
Constraint pk_inv_m primary key(inv_noi,inv_type));

جدول تفاصيل الفاتورة :
Create table inv_d(inv_no number(4),
Inv_type number(1),
Item_no number(4) references items(item_no),
Qty number(4),
Vonstraint fk_inv_d_inv_m foreign key(inv_no,inv_type) references inv_m(inv_no,inv_type),
Constraint pk_inv_d primary key(inv_no,inv_type,item_no));

تابع معى بأذن الله ... سوف نكمل معاَ فيما بعد الى ان ننتهى من البرنامج بالكامل.
:rolleyes:

رابط هذا التعليق
شارك

  • الردود 39
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

  • Primer

    8

  • الأوائل

    3

  • John

    2

  • sam94

    2

أكثر المشاركين في هذا الموضوع

السلام عليكم أخوانى أعضاء المنتدى
وشكرا يا Primer على الموضوع
واتمنى أن تشرحلنا مبداء عمل النظام (التحليل) المخرجات العمليات المدخلات
كما أقترح تقسيم العمل فيما بيننا
أتمنى ان نكمل البرنامج حتىالنهاية يــــــــــــــــــــــــا رب حتى يتحقق الهدف الذى من أجله قام أصحاب فكرة أنشاء المنتدى
بانشائه وحتى تعم الفائدة على الجميع

رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

اشكر الزميل Black& white على الملاحظة لكن من الافضل ان يقوم الزملاء بتفيذ الخطوات بأنفسهم وهذا افضل من الملفات الجاهزة وهو من واقع خبرتى افضل ... ولكن ان شاء الله اذا واجه اى من الزملاء مشاكل فى التنفيذ سوف نحلها معاً ..
أعد الزملاء فى النهاية طبعاًَ بطرح ملفات المشروع ... :rolleyes:

رابط هذا التعليق
شارك

2-
نستكمل موضوع المشتريات حيث لم نتحدث عن تحليل على افتراض انه بسيط وسهل وغير معقد ويتضح لك العلاقة بين الجداول العملاء،البضائع،الفواتير من خلال التدقيق فى بناء هذة الجداول ولكن عموماً يمكننا مناقشة ذلك اذا لزم .
قبل ان نبدأ فى تنفيذ الخطوات العملية التالية يفترض ان يكون الزميل قد درس جيداً الـForms Designer وطبعاً pl/sql...سوف اكتب الخطوات كما يلى:

باستخدام FORMS DESIGNER :

تصميم شاشة العملاء:

1- ننشأ (data block (Customers مع (Canvas(Customers ثم تصميم الشاشة...

2- ننشأ Trigger on block level pre-insert :
Select nvl(max(Cust_no),0)+1
Into :Customers.cust_no from customers;

3- من الخصائص نغييرitem type الى display item للـ Cust_no.
4- ندخل اى عدد من السجلات للعملاء.

تصميم شاشة البضائع :

1- ننشأ (data block (items مع(Canvas(items
و data block يكون Tabular...تصميم الشاشة .
2- من الخصائص نغييرitem type الى display item للـ item_no.

3- ننشأ trigger on block level pre-insert :
Select nvl(max(item_no),0)+1
Into :items.item_no from items;

4- Enter some records and press F10 to save .

تصميم شاشة الفاتورة (الجزء الرئيسي):

1- ننشأ (inv_m) كـ data block مع (inv_m) كـcanavs وبدون علاقات.
2- نغيير من الخصائص نوع inv_no الى display item كما سبق .
3- ننشأ trigger on block level pre-insert :
Select nvl(max(inv_no),0)+1
Into :inv_m.inv_no from inv_m
Where inv_type=:inv_m.inv_type;
4- نغيير الخصائص لـinv_type بحيث يصبح النوع list item ونضيف العناصر فى القائمة بحيث تصبح :
Purchase 1
Sales 2
مع ملاحظة ان هذة القيم تعتبر Static...وليست Dynamic.

ونستأنف فيما بعد بأذن الله تعالى ....

رابط هذا التعليق
شارك

الأخوة الأكارم

بعد دراسة تصميم الـ Table لاحظت وجود نقص كبير ...مثال
بطاقة المادة Items_Table يجب إن يحتوي على مايلي :
Item_No رقم المادة ( متسلسل)
Item_Code رمز المادة
Item_ADesc الوصف العربي للماده
Item_EDec الوصف اللاتيني للماده
Item_Sup الجهة المزوده بالماده ( من Table أخر)
Item_Cat تصنيف الماده ( من Table أخر)
Item_Unit الوحدة
Qty_In مجموع الكميات المدخلة ( من عمليات شراء , مناقله ...)
Qty_Out مجموع الكميات المخرجة ( من عمليات بيع , هدايا, نماذج مجانيه ...)
Re_Ord_Lvl حد إعداة الطلب ( الكمية الواجب توفرها في المخزون بشكل دائم )
Item_Cost سعر التكلفة ( يعدل للـ AverageCost بعد كل عملية شراء)
Sale Price سعر المبيع
Stock_Pos موقع التخزين في المستودع

يرجى المناقشة لمتابعة دراسة باقي الـ Tables قبل البدء بالتصميم
تــحــيـــــــــــــــــــــاتي
Sami :rolleyes:

رابط هذا التعليق
شارك

السلام عليكم ..أخي Primer هناك ملاحظة عند إنشاء table inv_m وهي primary key(inv_noi,inv_type ينبغي أن تكون primary key(inv_no,inv_type حتى يتم إنشاء الجدول .
كذلك في table inv_d يعطي SQL الخطأ ERROR at line 5:
ORA-00907: missing right parenthesis

رابط هذا التعليق
شارك

عندك حق يا اخى هناك خطأ فى الكتابة فى جدول inv_m بالنسبة للحقل inv_noi هو inv_no ولكن غير مقصودة وعموماً الملف بالكامل سأقوم بتحميلة لمن يرغب فى اخذة وتنفيذة مباشرة ...
وبالنسبة للاخ sami اقول لك ان احنا بصدد تنفيذ فكرة البرنامج على نطاق بسيط ويمكننا تتطويرة واضافة اى افكار ولكن حتى لا يكون الموضوع صعب على من يبدأ معنا ويحبط للصعوبة او لغيرة من الاسباب ...وان شاء الله سوف ننفذ مشروع مبيعات بعد ذلك سوف نضيف فية افكار اخرى. :rolleyes:

purchase_tables.txt

رابط هذا التعليق
شارك

نستكمل العمل :
- نضع قيمة Mapping of other values :1 ،initial value : 1
-نختار inv_date ونذهب الى الخصائص ونضع فى :
-Format mask :Dd/mm/yyyy،initial value : $$date$$
-الان ننشأ text item فى التصميم الخاص بـ inv_m canvas مع name :name"" ،database item : No .
-وعلى cust_no فى inv_m " datablock " ننشأ :

create trigger post-change
select cust_name into :inv_m.name from customers
where cust_no=:inv_m.cust_no;
- نجعل الشاشة تعمل بالضغط على مفتاحى ctrl+r وندخل القيمة 1 لـcust_no ونضغط على F10 للحفظ .
- الان ننشأ datablock "inv_d" فى نفس الـCanvas الخاص بـ inv_m وننشأ العلاقة بينهما Relationship فقط item_no ، qty نرغب ان نعرضهم فى invoice details.
- الان نقوم بإنشأ display item يسمى item_desc مع الخصائص database : no
- ونضيف price unit بأضافة display item مع الخصائص database : no
- على مستوى inv_d يتم انشاء الـtriggers فى post-change للـitem-no :
Trigger post-change :
Select item_desc into :inv_d.item_desc from items
Where items.item_no=:inv_d.item_no

Trigger post-change :
Select p_u into :unit_price from items
Where items.item_no=:inv_d.item_no

- الان ننشأ display item Total"" حيث الخصائص data type : number ، database item :No ،Calculation mode : formula و Formula تكون هى :inv_d.qty*:price
- الان ننشأ manully data block جديد مع الخصائص single record : yes ، نضيف total بخصائص item type : display item فى inv_d
- تحت هذا العمود فى block ننشأ display item :sum ،calculation mode: summary ، summarized block:inv_d ، summarized item:Total ،summary function : Sum ، Data type:Number .
- على مستوى inv_d" Block " نغيير الخصائص Query all records : yes .
- الان لتقليل الكمية من المخزون نقوم بعمل الـtrigger pre-insert على مستوى inv_d فى data block :
Declare a number ;
Begin if :inv_d.inv_type=2 then
Select qty into a from items
Where item_no=:inv_d.item_no;
If :inv_d.qty>a then
Message ('quantity not enough');
Raise form_trigger_failure;
Else
Update items
Set qty=qty-:inv_d.qty
Where item_no=:inv_d.items_no;
End if;
End if;
End;

- الان على مستوى inv_d نقوم بعمل trigger pre-update :
Declare
A number;
B number;
C number;
Begin
If :inv_d.inv_type=2 then
Select qty into a from items
Where item_no=:inv_d.item_no;
Select qty into b from inv_d
Where inv_no=:inv_d.inv_no and inv_type=:inv_d.inv_type and item_no=:inv_d.item_no;
C:=a+b;
If :inv_d.qty>c then
Raise form_trigger_failure;
Else
Update items
Set qty=c-:inv_d.qty
Where item_no=:inv_d.item_no;
End if;
End if;
End;
- الان ننشأ على مستوى inv_d" " pre-delete trigger

Begin
If :inv_d.inv_type=2 then
Update items
Set qty=qty-:inv_d.qty
Where item_no=:inv_d.item_no;
End if;
End;

- نقوم الان بتشغيل inv_d ونجرى بعض التغييرات فى السجلات ثم نحفظ ذلك ونذهب الى items , ونستعلم عن السجلات لكى نرى اذا كان قد تغيير المخزون ام لا .
يمكنك الان تحميل هذة الشاشات وهى تحتوى على كل ما قمنا بتنفيذة ...
كما يمكن للزملاء الاضافة أو الاقتراح او التعديل بأفكار جديدة ....
مع خالص شكرى وتمنياتي لكم بدوام التوفيق
:)

ITEMS.fmb

تم تعديل بواسطة Primer
رابط هذا التعليق
شارك

تحميل ملف الفاتورة ..

تعقيب على الشرح :

اعتذر الحقيقةفى ان الشرح قد يكون فى اتجاه اليمين... بعد الكتابة وجدت مشكلة فى ان النص يأتى الى جهة اليمين مع انى قد كتبته فى MS word فى الاتجاة الصحيح ونقلته .... :)

INV_M.fmb

رابط هذا التعليق
شارك

  • بعد 4 شهور...

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

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل



×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية