بتاريخ: 5 أكتوبر 201114 سنة comment_216215 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته يا جماعة عندي مشكلة في حفظ المشتريات التي اريد ادخالها للمخزن عندما يكون رقم الصنف موجود بالمخزن يقوم بعمل تحديث للكمية الموجودة في جدول المخزن وذلك باضافة الكمية الجديدة التي يتم ادخالهاالان المشكلة هي انه عندما يكون رقم الصنف غير موجود بالمخزن لايقوم بحفظه كصنف جديد في جدول المخزنوقد حاولت كثيرا ولم انجح ارجو منكم المساعدة العاجلة وجزاكم الله خيرا واكرمكم..اخوكم .. محمد تقديم بلاغ
بتاريخ: 5 أكتوبر 201114 سنة comment_216223 السلام عليكم ورحمة الله وبركاتهCreate or replace trigger t_inventory2 before insert or delete or update on inventory2 for each row declare aa number ; beginselect count(p_id) into aa from purch ;if aa = 0 thenif inserting theninsert into inventory ( invt_no, inv_date, invt_nam, qty, pric_pur, sup_com, rat, pric_sal, tax_rat ) values ( :new.invt_no , :new.inv_date , :new.invt_nam , :new.qty , :new.pric_pur , :new.sup_com , :new.rat , :new.pric_sal , :new.tax_rat ) ;elsif deleting then update inventory set qty = inventory.qty - :old.qty where inventory.invt_no = :old.invt_no ;else update inventory set qty = :new.qty , invt_nam =:new.invt_nam , pric_pur = :new.pric_pur , sup_com = :new.sup_com , rat = :new.rat , pric_sal = nvl(( :new.pric_pur + ( :new.pric_pur * :new.rat/100)),0 ) , tax_rat = :new.tax_ratwhere inventory.invt_no = :new.invt_no ;end if ; end if ; end ;حيث الكود السابق1_يقوم بعملية الادخال إذا كان الصنف غير موجود2_يقوم بتعديل الكمية عند حذف عملية الادخال3_يقوم بتعديل الكمية عند التعديلجزاك الله كل خير تقديم بلاغ
بتاريخ: 5 أكتوبر 201114 سنة comment_216242 وعليكم السلام ورحمة الله الأخ / جمال لى بعض الإستفسارات عن الكود الذى كتبته - ما الهدف من الامرselect count(p_id) into aa from purch ; اي ان الصنف جديد ولم يسبق شراؤة من قبل ... وبالتالى لم يسجل بالمستودع من قبل ؟ فى حالة الإضافةnew.invt_namيتم كتابة اسم الصنف فى جدول المستودع ... لماذا لا يكتب فى جدول رموز الأصناف ؟ ما الهدف من عمود سعر بيع الصنف :new.pric_salمع وجود عمود سعر الشراء :new.pric_pur ولماذا تم كتابة معادلة حساب سعر البيع مع حالة التعديل ولم تكتب فى حالة الإضافةpric_sal = nvl(( :new.pric_pur + ( :new.pric_pur * :new.rat/100)),0 ) قيمة new.rat هل هي فى فاتورة الشراء ؟ وهل المقصود تعديل سعر بيع الصنف مع كل عملية شراء ؟ سؤال اخير عن الكمية من الصنف بالمستودعمع حالة التعديلqty = :new.qtyلماذا لم يتم التعامل مع الكميات السابقة من الصنف old.qtyوطرح الكمية المعدله من الكمية القديمة الموجودة بالمستودع من هذا الصنف ؟ هل هذا لإفتراض ان الصنف لم يسبق شراؤة من قبل ؟؟ شكرا لك لسعة صدرك والرد على الأسئلة تم تعديل 5 أكتوبر 201114 سنة بواسطة Ahmed_oracle تقديم بلاغ
بتاريخ: 6 أكتوبر 201114 سنة كاتب الموضوع comment_216252 مشكور الأخ جمال أكرمك الله يا غالي انا جربت طريقة اخرى ونجحت الحمد لله وجربت طريقتك ونجحت برضووالبحر لا يأبى الزيادة بالتوفيف لك كمان اخ احمد تقديم بلاغ
بتاريخ: 9 أكتوبر 201114 سنة comment_216336 السلام عليكم ورحمة الله وبركاته اخي الكريم Ahmed_oracle راجع أخر نسخة من برنامج محاسبي بسيط الموجود في منتدى مشريع الاعضاءحيث سوف تجد كامل الداتا والشاشات مرفقة مع الشرح في البرنامج المرفق إنشاء جدول أصناف البضائع المتوفرة في المستودعات : Create table inventory ( invt_no number(10) , /*رقم الصنف*/ inv_date date , /*تاريخ تعريف الصنف*/ invt_nam varchar(50) , /*اسم الصنف*/ qty number(7), /*الكميه*/ pric_pur number(12,3) , /*سعر الشراء*/ sup_com varchar(50) , /*اسم المورد*/ rat number(5,3) , /*نسبة الربح للصنف*/ pric_sal number(12,3) , /*سعر البيع*/ tax_rat number(5,3) , /*نسبة ضريبة المبيعات المفروضة علي الصنف*/ constraint inventory_pk primary key ( invt_no) , constraint invt_uk unique ( invt_nam) ) ; حيث هذا الجدول مرتبط مع فاتورة المبيعات في الفورم حسب الكود التالي DECLARE aa number ; begin select count(invt_no) into aa from inventory where inventory.invt_no = :inv_sal.invt_no ; IF aa = 0 THEN MESSAGE('يوجد خطأ في إدخال رقم الصنف') ; MESSAGE('يوجد خطأ في إدخال رقم الصنف') ; RAISE Form_Trigger_Failure; ELSIF aa = 1 THEN select inventory.qty ,inventory.invt_nam ,inventory.pric_sal ,inventory.tax_rat into :inv_sal.qty , :inv_sal.invt_nam , :inv_sal.pric_sal,:inv_sal.tax_rat from inventory where inventory.invt_no = :inv_sal.invt_no ; IF :inv_sal.qty > 0 THEN execute_query ; ELSE MESSAGE('لا يوجد كمية متوفرة من هذا الصنف') ; MESSAGE('لا يوجد كمية متوفرة من هذا الصنف') ; RAISE FORM_TRIGGER_FAILURE ; END IF ; END IF ; END ; إنشاء جدول يحتوي علي تفصيل مخزون أول المدة Create table inventory2 ( invt_seq number(20) , /*التسلسل العام*/ invt_no number(10) , /*رقم الصنف*/ inv_date date , /*تاريخ إدخال مخزون أول المدة*/ invt_nam varchar(50) , /*اسم الصنف*/ qty number(7) not null , /*الكميه*/ pric_pur number(12,3) , /*سعر الشراء*/ sup_com varchar(50) , /*اسم المورد*/ rat number(5,3) , /*نسبة الربح للصنف*/ pric_sal number(12,3) , /*سعر البيع*/ tax_rat number(5,3) , /*نسبة ضريبة المبيعات المفروضة علي الصنف*/ constraint inventory2_pk primary key ( invt_no , inv_date ) ) ; ما الهدف من الامرselect count(p_id) into aa from purch ;اي ان الصنف جديد ولم يسبق شراؤة من قبل ... وبالتالى لم يسجل بالمستودع من قبل ؟نعم هذا صحيح وتم استخدامه بالكود لترحيل عملية إدخال رصيد أول المدة في جدول أصناف البضائع المتوفرة في المستودعات فى حالة الإضافةnew.invt_namيتم كتابة اسم الصنف فى جدول المستودع ... لماذا لا يكتب فى جدول رموز الأصناف ؟لم يكن يوجد جدول للأصناف وهذا كان خلل في تصميم الداتا قيمة new.rat هل هي فى فاتورة الشراء ؟وهل المقصود تعديل سعر بيع الصنف مع كل عملية شراء ؟لا حيث هنا يتم التعديل إذا تم تعديل الأسعار في مخزون أول المدة عند إدخاله للأول مرة مع حالة التعديلqty = :new.qtyلماذا لم يتم التعامل مع الكميات السابقة من الصنف old.qtyوطرح الكمية المعدله من الكمية القديمة الموجودة بالمستودع من هذا الصنف ؟ هل هذا لإفتراض ان الصنف لم يسبق شراؤة من قبل ؟؟ تم استخدام old.qty لتعديل رصيد الصنف ليصبح صفر في حال تم الغاء تعريف كمية الصنف عند إدخال مخزون أول المدةوذلك للإحتفاظ بتسلسل أرقام الاصنافحيث من خلال الشاشة يمكن تعديل اسم الصنف جزاك الله كل خير تقديم بلاغ
بتاريخ: 9 أكتوبر 201114 سنة comment_216366 شكرا لك اخي الفاضل / جمال على سرعة الرد وهذا الإيضاح سيتم الرجوع الى المشاركة التى ذكرتها ... واسمح لى ان كانت هناك استفسارات اخرى ... ان يتسع صدرك لها سؤال اخير : ما هى افضل طريقة لتكويد الأصناف وترميزها فى تصميم جدول الأصناف استخدمتinvt_no number(10 هل يتم تقسيم العمود داخليا ليكون له معنى وبالتالى يكون نوع العمود فى الجدول حرفي xx-xx-xxx-x او مجرد تسلسل عادى وبالتالي يكون من نوع رقمي 1,2,3,4,5,6,,,, تقديم بلاغ
بتاريخ: 10 أكتوبر 201114 سنة comment_216393 السلام عليكم ورحمة الله وبركاته اخي الكريم Ahmed_oracle التسلسل في البرنامج كان تسلسل رقمي عادي حيث أفضل التعامل مع الارقام لسهولة التعامل معها أما ما هى افضل طريقة لتكويد الأصناف وترميزها لااستطيع أن أحدد ما هي أفضل طريقةولاكن يمكنك الرجوع لهذه الروابط حيث تصميمها الدتا والشاشات فيها كان جميل جدا http://www.araboug.o...showtopic=40100 http://www.araboug.o...showtopic=29067 جزاك الله كل خير prog.txt تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.