بتاريخ: 15 يوليو 201411 سنة comment_252921 كيف يتم تحديث رصيد اصناف المخزن فى جدول تكويد الاصناف عند حذف حركة صرف او حركة شراء من جدول حركات المخزن تقديم بلاغ
بتاريخ: 15 يوليو 201411 سنة comment_252924 السلام عليكم ورحمة الله تحديث رصيد اصناف المخزن فى جدول تكويد الاصناف رصيد الصنف لا يجب أن يكون ضمن بيانات جدول تكويد الأصناف يفضل انشاء جدول مستقل لتكويد الأصناف ( رمز الصنف - وصف الصنف - وحدة القياس - ... ) جدول ارصدة الأصناف رقم المخزن أو المستودع - رمز الصنف - اجمالي حركات الإضافة - اجمالي حركات الصرف + .... لتحديث الرصيد مع كل حركة تتم على الصنف انشيء database trigger مع كل جدول حركة ومعالجة حالات ال insert - update - datele وتوجد مشاركات سابقة بالمنتدى بأمثلة عن طريقة التعامل مع ال database trigger منها أريد طريقة أنه اذا تم بيع أي بضاعة يتم عملية الطرح بشكل تلقائي http://www.araboug.org/ib/index.php?showtopic=45643 مشكلة فاتورة المبيعات و التأثير على رصيد الصنف بالمخزن http://www.araboug.org/ib/index.php?showtopic=27120 تقديم بلاغ
بتاريخ: 16 يوليو 201411 سنة comment_252930 ده database trigger الخاص بجدول Details في فاتورة المبيعات:- CREATE OR REPLACE TRIGGER upd_balance AFTER DELETE OR INSERT OR UPDATE OF ITEM_QTY ON SALE_DTL FOR EACH ROW BEGIN IF DELETING THEN UPDATE ITEMS_STORE SET BALANCE = BALANCE+NVL(:OLD.ITEM_QTY,0) WHERE ITEM_ID=:OLD.ITEM_ID AND STORE_ID=:OLD.STORE_ID; ELSIF INSERTING THEN UPDATE ITEMS_STORE SET BALANCE = BALANCE-NVL(:NEW.ITEM_QTY,0) WHERE ITEM_ID=:NEW.ITEM_ID AND STORE_ID=:NEW.STORE_ID; ELSIF UPDATING THEN UPDATE ITEMS_STORE SET BALANCE = (BALANCE+NVL(:OLD.ITEM_QTY,0))-NVL(:NEW.ITEM_QTY,0) WHERE ITEM_ID=:OLD.ITEM_ID AND STORE_ID=:OLD.STORE_ID; END IF; END; تم تعديل 16 يوليو 201411 سنة بواسطة Ahmad.Hasan تقديم بلاغ
بتاريخ: 16 يوليو 201411 سنة comment_252931 وده الخاص بالمشتريات :- CREATE OR REPLACE TRIGGER upd_balance_pur AFTER DELETE OR INSERT OR UPDATE OF item_qty ON purchasing_dtl FOR EACH ROW BEGIN IF DELETING THEN UPDATE items_store SET balance = balance - NVL (:OLD.item_qty, 0) WHERE item_id = :OLD.item_id AND store_id = :OLD.store_id; ELSIF INSERTING THEN DECLARE cnt NUMBER; BEGIN SELECT COUNT (*) INTO cnt FROM items_store WHERE item_id = :NEW.item_id AND store_id = :NEW.store_id; IF cnt > 0 THEN UPDATE items_store SET balance = balance + NVL (:NEW.item_qty, 0) WHERE item_id = :NEW.item_id AND store_id = :NEW.store_id; ELSE INSERT INTO items_store (store_id, item_id, balance, balance_limit, creation_date, last_update_date, last_updated_by, created_by, seq ) VALUES (:NEW.store_id, :NEW.item_id, :NEW.item_qty, 0, :NEW.creation_date, :NEW.last_update_date, :NEW.last_updated_by, :NEW.created_by, NULL ); END IF; END; ELSIF UPDATING THEN UPDATE items_store SET balance = (balance - NVL (:OLD.item_qty, 0)) + NVL (:NEW.item_qty, 0) WHERE item_id = :OLD.item_id AND store_id = :OLD.store_id; END IF; END; / تم تعديل 16 يوليو 201411 سنة بواسطة Ahmad.Hasan تقديم بلاغ
بتاريخ: 31 يوليو 201411 سنة comment_253273 الحل لهذه المشكلة هو عمل جدول واحد لكل حركات الصنف من وارد ومنصرف ومبيعات وعمل عمود لرمز الصنف وعمود وحدة الصنف وعمود الوارد وعمود الصرف بحيث اذا كنت تريد معرفة رصيد الصنف تقوم بطرح عمود المنصرف من عمود الوارد حسب رمز الصنف واذ حبيت ضيف عمود نوع الحركة مثل 1 امر توريد 2 فاتورة مشتريات 3 امر صرف 4 فاتورة مبيعات تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.