الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

أرجو المساعدة في كود فاتورة مشتريات

Featured Replies

بتاريخ:

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

يا جماعة عندي مشكلة في حفظ المشتريات التي اريد ادخالها للمخزن

عندما يكون رقم الصنف موجود بالمخزن يقوم بعمل تحديث للكمية الموجودة في جدول المخزن وذلك باضافة الكمية الجديدة التي يتم ادخالها
الان المشكلة هي انه عندما يكون رقم الصنف غير موجود بالمخزن لايقوم بحفظه كصنف جديد في جدول المخزن
وقد حاولت كثيرا ولم انجح

ارجو منكم المساعدة العاجلة

وجزاكم الله خيرا واكرمكم
..
اخوكم .. محمد

بتاريخ:

السلام عليكم ورحمة الله وبركاته


Create or replace trigger t_inventory2 before insert or delete or update on inventory2
for each row
declare
aa number ;
begin
select count(p_id) into aa from purch ;
if aa = 0 then
if inserting then
insert 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_rat
where inventory.invt_no = :new.invt_no ;
end if ;
end if ;
end ;

حيث الكود السابق
1_يقوم بعملية الادخال إذا كان الصنف غير موجود
2_يقوم بتعديل الكمية عند حذف عملية الادخال
3_يقوم بتعديل الكمية عند التعديل

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

بتاريخ:

وعليكم السلام ورحمة الله

الأخ / جمال

لى بعض الإستفسارات عن الكود الذى كتبته

- ما الهدف من الامر
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
وطرح الكمية المعدله من الكمية القديمة الموجودة بالمستودع من هذا الصنف ؟ هل هذا لإفتراض ان الصنف لم يسبق شراؤة من قبل ؟؟


شكرا لك لسعة صدرك والرد على الأسئلة

تم تعديل بواسطة Ahmed_oracle

بتاريخ:
  • كاتب الموضوع

مشكور الأخ جمال أكرمك الله يا غالي انا جربت طريقة اخرى ونجحت الحمد لله

وجربت طريقتك ونجحت برضو
والبحر لا يأبى الزيادة

بالتوفيف لك كمان اخ احمد

بتاريخ:

السلام عليكم ورحمة الله وبركاته

اخي الكريم 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 لتعديل رصيد الصنف ليصبح صفر في حال تم الغاء تعريف كمية الصنف عند إدخال مخزون أول المدة
وذلك للإحتفاظ بتسلسل أرقام الاصناف
حيث من خلال الشاشة يمكن تعديل اسم الصنف

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

بتاريخ:

شكرا لك اخي الفاضل / جمال
على سرعة الرد وهذا الإيضاح

سيتم الرجوع الى المشاركة التى ذكرتها ... واسمح لى ان كانت هناك استفسارات اخرى ... ان يتسع صدرك لها

سؤال اخير : ما هى افضل طريقة لتكويد الأصناف وترميزها
فى تصميم جدول الأصناف استخدمت
invt_no number(10

هل يتم تقسيم العمود داخليا ليكون له معنى وبالتالى يكون نوع العمود فى الجدول حرفي xx-xx-xxx-x

او مجرد تسلسل عادى وبالتالي يكون من نوع رقمي 1,2,3,4,5,6,,,,

بتاريخ:

السلام عليكم ورحمة الله وبركاته

اخي الكريم Ahmed_oracle

التسلسل في البرنامج كان تسلسل رقمي عادي

حيث أفضل التعامل مع الارقام لسهولة التعامل معها

أما

ما هى افضل طريقة لتكويد الأصناف وترميزها

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

حيث تصميمها الدتا والشاشات فيها كان جميل جدا

http://www.araboug.o...showtopic=40100

http://www.araboug.o...showtopic=29067

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

prog.txt

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.