بتاريخ: 21 مارس 200619 سنة comment_63817 آنا اعمل مندوب بيع في شركة تعمل فى مجال بيع الملابس والنسيج أردت ان اعمل برنامج يساعدني في عملي ووقف معي بعد المشاكل آلتي لم أجد حل لها حتى أقول هده المشاكل يحب أولا شرح فكرة المشروع آو الأساسيات آلتي اعتمدت عليها في بناءه أولا فكرة عملي تنحصر في آلاتي(بضاعة أمانة) : أقوم بإرسال بضاعة آو أصناف آلي 28 فرع (معارض الشركة) بفاتورة وبعد ذلك يتم بيع هذه البضاعة على مدار الشهر آو السنة, أقوم آنا بمرور على الفروع واخذ من كل فرع بيان بمبيعات كل فرع من البضاعة المرسلة و أقوم بخصم كمية المبيعات كل فرع من البضاعة او الأصناف المرسلة حتى اعرف مبيعات كل فرع والأصناف المتبقية من كل فرع و أرسل أصناف جديد آو نفسها على حسب المبيعات اى(صادر وارد ) حيث اننى قمت بعملى 6 جدول:أ- جدول الأصناف (item) به كود الصنف و اسمه ب- جدول الفروع به كود الفرع و اسمهت- جدول البضاعة المرسلة(header) السنة و الشهر والتاريخ إرسال البضاعة ورقم الفاتورةث- جدول للبضاعة المرسلة(detail) السنة و الشهر والتاريخ إرسال البضاعة ورقم الفاتورة ورقم الصنف ورقم الفرع والكمية المرسلة سعر البيع وسعر التكلفة واجمالى البيع واجمالى التكلفة ج- حدول المبيعات( header) السنة و الشهر والتاريخ إرسال البضاعة وتاريخ البيع ورقم الفاتورة ح- جدول المبيعات( detail) السنة و الشهر والتاريخ إرسال البضاعة ورقم الفاتورة ورقم الصنف ورقم الفرع والكمية المرسلة سعر البيع وسعر التكلفة واجمالى البيع واجمالى التكلفة والاتى وصف للجدول لتوضيح اكترجدول الفروعcreate table HANO_COMP( HANO_NO NUMBER(2) not null, HANO_NAME VARCHAR2(100) not nullalter table HANO_COMP add primary key (HANO_NO)create table HANO_ITEM( جدول الاصناف ITEM_NO NUMBER(16) not null, ITEM_NAME VARCHAR2(100) not null)alter table HANO_ITEM add primary key (ITEM_NO)create table HANO_ITEM_H( جدول البضاعة المرسلة هيدر YEAR NUMBER(4) not null, MONTH NUMBER(2) not null, DATE_ITEM DATE not null, SAL_INV VARCHAR2(6) not null, TR_TYPE NUMBER(4) not null)alter table HANO_ITEM_H add constraint HANO1_PK primary key (YEAR,TR_TYPE,MONTH,DATE_ITEM,SAL_INV)create table HANO_ITEM_D( جدول البضاعة المرسلة دتيل LINE_NO NUMBER(4) not null, YEAR NUMBER(4) not null, MONTH NUMBER(2) not null, DATE_ITEM DATE not null, ITEM_NO NUMBER(16) not null, HANO_NO NUMBER(2) not null, QTY NUMBER(30,3) not null, OUT_QTY NUMBER(30,3) not null, HANO_PRICE NUMBER(30,3), SAL_PRICE NUMBER(30,3) not null, COST_PRICE NUMBER(30,3), TOT_COST_PRICE NUMBER(30,3), TOT_SAL_PRICE NUMBER(30,3) not null, PROF NUMBER(30,3), USER_1 VARCHAR2(50), USER_2 VARCHAR2(50), USER_3 NUMBER(30,3), USER_4 NUMBER(30,3), SAL_INV VARCHAR2(6) not null, TR_TYPE NUMBER(4) not null)alter table HANO_ITEM_D add constraint HANO2_PK primary key (YEAR,MONTH,DATE_ITEM,SAL_INV,LINE_NO)alter table HANO_ITEM_D add constraint HANO1_FK foreign key (HANO_NO) references HANO_COMP (HANO_NO);alter table HANO_ITEM_D add constraint HANO2_FK foreign key (ITEM_NO) references HANO_ITEM (ITEM_NO);create table HANO_SAL_H جدول المبيعات هدير( YEAR NUMBER(4) not null, MONTH NUMBER(2) not null, DATE_SAL DATE not null, DATE_ITEM1 DATE not null, SAL_INV VARCHAR2(6) not null)alter table HANO_SAL_H add constraint HANO_PK primary key (YEAR,MONTH,DATE_ITEM1,SAL_INV,DATE_SAL)create table HANO_SAL_D جدول المبيعات ديتل ( LINE_NO NUMBER(4) not null, YEAR NUMBER(4) not null, SAL_INV VARCHAR2(6) not null, MONTH NUMBER(2) not null, DATE_SAL DATE not null, DATE_ITEM1 DATE not null, ITEM_NO NUMBER(16) not null, HANO_NO NUMBER(2) not null, QTY NUMBER(30,3) not null, HANO_PRICE NUMBER(30,3), SAL_PRICE NUMBER(30,3) not null, COST_PRICE NUMBER(30,3), TOT_COST_PRICE NUMBER(30,3), TOT_SAL_PRICE NUMBER(30,3) not null, PROF NUMBER(30,3), USER_1 VARCHAR2(50), USER_2 VARCHAR2(50), USER_3 NUMBER(30,3), USER_4 NUMBER(30,3))alter table HANO_SAL_D add constraint HANO3_PK primary key (DATE_SAL,DATE_ITEM1,SAL_INV,LINE_NO)alter table HANO_SAL_D add constraint HANO3_FK foreign key (HANO_NO) references HANO_COMP (HANO_NO);alter table HANO_SAL_D add constraint HANO5_FK foreign key (ITEM_NO) references HANO_ITEM (ITEM_NO);حيث الفكرة تعتمدعلى ان عندما يتم ارسال بضاعة فعلية الى الفروع يتم تسجيل البضاعة المرسلة فى جدول البضاعة المرسلة هيدر وديتل اى يتم تسجيل السنة و الشهر والتاريخ إرسال البضاعة ورقم الفاتورة(هيدر)و يتم تسجيل فى جدول البضاعة المرسلة(ديتل) رقم الصنف ورقم الفرع والكمية المرسلة سعر البيع وسعر التكلفة واجمالى البيع واجمالى التكلفة وعندما يتم ارسال التقارير ببيع اصناف من البضاعة يتم تشجيل المبيعات فى جدول المبيعاتهيدر وديتل اى يتم تسجيل السنة و الشهر وتاريخ إرسال البضاعة وتاريخ البيع ورقم الفاتورة فى الهيدر وفى الديتل رقم الصنف ورقم الفرع والكمية المرسلة وعامل جملة سليكت فى الهون فليديت ايتم تاتى سعر البيع وسعر التكلفة من جدول البضاعة المرسلة لمل يكون الحاجات البريمرى كى هنا تساوى الحاجات البريمرى كى هناكولكن المشكلة انة مابينفذ ذلك لوتكرر رقم الفاتورة اورقم الصنف او رقم الفرع مع العلم انة من الطبيعىالتكرار وهذة جملة الت فى تريحر when validate itemselect cost_price, hano_price, sal_price into :HANO_item_d.cost_price, :HANO_item_d.hano_price, :HANO_item_d.sal_price d_from hano_item where hano_item_d.item_no = :HANO_item_D.item_no and hano_item_d.hano_no = :hano_sal_d.hano_no and hano_item_d.sal_inv = :hano_sal_d.sal_inv and hano_item_d.date_item = :hano_sal_d.date_item1 ;وعامل ايضا تريجير على مستوى بلوك الدتيل وبقول فية آلاتي:pre_insert update hano_item_d set qty = qty - :hano_sal_d.qty , tot_cost_price = tot_cost_price - :hano_sal_d.tot_cost_price , tot_sal_price = tot_sal_price - :hano_sal_d.tot_sal_price , prof = prof - :hano_sal_d.prof where :hano_sal_d.qty > 0 and hano_item_d.item_no = :hano_sal_d.item_no and hano_item_d.hano_no = :hano_sal_d.hano_no and hano_item_d.sal_inv = :hano_sal_d.sal_inv and hano_item_d.date_item = :hano_sal_d.date_item1 ;ولكن المشكلة انة مابينفذ ذلك لوتكرر رقم الفاتورة اورقم الصنف او رقم الفرع مع العلم انة من الطبيعى ان يكون فى تكرار وانا اريد ان يتم خصم البصاعة المباعة من المرسلة دون النظر الى الفاتورة او التاريخ ( ارجو ان تكون المشكلة واضحة )واى سوال ان مستعد لاجابة علية فى سبيل الايضاح اكتر وحل المشكلة وان امكن اضافة اى فكرة جديد فى المشروع لوصول لغرض او الهدف منه اكون عاجز عن الشكر للاعضاء هذا المنتدى المتميز[email protected] تقديم بلاغ
بتاريخ: 21 مارس 200619 سنة comment_63828 السلام عليكم اولا من الطبيعي ان يتم تكرار الصنف او الفرع ولكن ليس من الطبيعي تكرار رقم الفاتورة واذا كنت تقصد بتكرار الفاتورة بمعني مثلا فرع رقم واحد قد ارسل له بضاعة واردت ان تضيف بضاعة جديدة لنفس الفرع وعلى نفس الفاتورة فهنا فقط تقوم بعمل تحديث للفاتورة .ولحل عملية الفاتورة حتى تكون كل فاتورة برقم مستقل استخدم امر unique مثال create table mm)xx number(50) uniqueوفى هذه الحالة فان رقم الفاتورة xx لن يتكرر مطلقا ولن يقبل التكرار ثم تقوم فى pl/sql بكتابة امر التحديث بمعنى لو حدث كذا قم بتحديث محتويات الفاتورة الى كذا .وشكرا ميجا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.