ממשק עדכון הזמנות רכש

פורומים אפיון ופיתוח פריוריטי ממשק עדכון הזמנות רכש

  • Post
    sayo
    משתתף
    היי,
    אני מנסה לעשות שאילתא שבודקת שאם יש יותר מפעם אחת מק"ט מסויים בפירוט הזמנות רכש אז ייבדק מה השורה עם הכמות הנמוכה ביותר ואז יבוצע עליה שינוי כלשהו ואז ימשיך לשורה הבאה הנמוכה ביותר במידה והכמות מהקובץ גדולה מהכמות בשורה עם הכמות הנמוכה ביותר.
    מקווה שמספיק מובן, אשמח להצעות איך לרשום את זה.
    בגדול זהו חלק ממשק שבניתי, אשר לוקחת קובץ וטוענת אותו במערכת ומבצעת שינויים בהזמנות הרכש ומפצלת שורות אם צריך.
מוצגות 14 תגובות – 1 עד 14 (מתוך 14 סה״כ)
  • Replies
    אלמוני
    אורח
    על פניו, את צריכה להגדיר שליפה בסגנון הזה
    DECLARE C1 CURSOR FOR
    SELECT PORDERITEMS.PART, PORDERITEMS.QUANT, PORDERITEMS.LINE
    FROM PORDERITEMS
    WHERE PORDERITEMS.ORD = :ORD
    ORDER BY PORDERITEMS.QUANT, PORDERITEMS.PART

    הקורסור יביא את השורות לפי כמות עולה (דהיינו הכמות הקטנה ביותר תהיה ראשונה)

    sayo
    משתתף
    מעולה תודה
    אבל מה שקורה זה, שאני מקבלת שגיאה שעדכון הקובץ נכשל וזה רק לשורות שהשתמשו בקרסור…
    השגיאה היא מטעינת הטבלה הזמנית למסך כי הטבלה הזמנית התמלאה כמו שצריך
    יש לך מושג למה זה קורה?
    sayo
    משתתף
    אז גיליתי שזה קורה כי אני מנסה לעדכן/להוסיף KLINE אז שיניתי לLINE ואני לא מקבלת את השגיאה יותר אך עכשיו הפרוצדורה לא עובדת כמו שצריך 🙁
    אלמוני
    אורח
    תלוי מה מופיע בממשק: הקורסור צריך להחזיר שדות בהתאם לממשק.
    אם בממשק KLINE, אז בקורסור KLINE
    אם בממשק LINE, אז בקורסור LINE
    כיון ש-ORDI המפתח הראשי של PORDERITEMS, עדכון אמור להתבצע רק עם הערך הזה, בלי K/LINE. אפשר להשתמש בצמד ORD/KLINE.

    בתשובה הראשונה שלי, כתבתי "בסגנון הזה" – לא ידעתי בדיוק מה היו הצרכים.

    sayo
    משתתף
    הממשק לא רק מעדכן שורות אלא גם מוסיף שורות חדשות.
    האם אני צריכה לציין מה ה-K\LINE כשאני רוצה שהממשק יוסיף שורה חדשה? או שאני יכולה לעדכן שיפתח שורת 0?
    תודה
    אלמוני
    אורח
    את לא יכולה לדעת מראש מה יהיה ערכו של KLINE עבור שורה חדשה לכן מוטב להשתמש בשילוב ORD/LINE.

    אף פעם לא התניסיתי בממשק שגם מעדכן וגם מוסיף לכן אינני יודע אלו בעיות ממתינות לך.

    sayo
    משתתף
    אבל כשאני מקשרת את עמודת LINE לטבלת הטעינה אני מקבלת הודעה :
    עמודה LINE אינה ניתנת לעדכון במסך PORDERITEMS
    יש דרך לעקוף את זה?
    אלמוני
    אורח
    תתעלמי מההודעה. הממשק אמור לעבוד על אף האזהרה הזו.
    באופן כללי, לא מעבירים את LINE מפני שהוא נקבע בעת הקליטה. במסך הוא במצב קריאה בלבד וזו הסיבה להודעה.

    נעם

    sayo
    משתתף
    נכון, עדכון השורה עבד אבל לא הוספת השורה.
    לכן, הוספתי עוד ממשק להוספת שורה והוספתי אותו לשאילתא בעזרת EXECUTE אבל עכשיו הממשק רק מוסיף לי שורה בלי לעדכן את שאר השורות…
    ז"א, הממשק רק מבצע את החלק השני של השאילתא (הוספת השורה) ומתעלם מהשלב הראשון (עדכון שורות) למרות שהוא כן ממלא את הטבלה הזמנית בנתונים הרלוונטיים…
    אלמוני
    אורח
    כאשר אני קורא את המכתב המקורי שלך, לא ברור לי למה את צריכה להוסיף שורות. כתבת על עדכון שורה כאשר לשורה יש הכמות הכי קטנה של פריט שמופיע פעמיים (או יותר) בהזמנה.

    היה עוזר לו היית נותנת דוגמא.

    אגב, צריך לשפר את השאילתא המקורית שכתבתי – צריך להוסיף בסוף את השורה
    HAVING COUNT (*) > 1
    המשפט הזה אמור להביא רק פריטים שמופיעים פעמיים או יותר בהזמנה. אינני בטוח אם צריך להחליף את הכוכבית ב-PORDERITEMS.PART – כדאי לבדוק ב-WINDBI. שורת HAVING חייבת להיות אחרונה בשאילתא מפני שהיא פועלת/מסננת את כל השורות שנאספו בשאילתא הרגילה.

    sayo
    משתתף
    מטרת הממשק:
    משיכת קובץ של packingList שמעדכן את הכמות בהזמנת הרכש. (ומוסיף פרטים כמו תאריך אספקה ומספר מכולה)
    יש כמה מקרים שיש להתייחס אליהם:
    1. אם הכמות בהזמנה קטנה מהכמות בקובץ אז מתבצע רק עדכון כמות באותה השורה
    2. אם הכמות בהזמנה גדולה מהכמות בקובץ אז מתבצע פיצול שורה: בקובץ הכמות היא 10 ובהזמנה הכמות היא 50. השורה בהזמנה תשתנה מ-50 ל-10 ואז תיפתח שורה חדשה עם כמות 40.
    3. אם יש כמה פעמים את אותו מק"ט באותו הזמנה אז הממשק ממיין את הכמות מהקטן לגדול (על מנת לסגור כמה שיותר שורות) ומבצע את הבדיקות לכל שורה (מבצע את 1 ו/או 2)

    לשם העדכון, טבלת GENERALLOAD מתמלאת ולשם הוספת השורות GENERALLOAD2 מתמלאת.
    שתי הטבלאות מתמלאות כמו שצריך אך הבעיה היא שרק העדכון עבד ולכן הוספתי EXECUTE בתוך השאילתא של הגדרת הטעינה ועכשיו רק הוספת השורות עובדת.

    מה אני מפספסת?

    *מקווה שמובן ולא חופר כל כך 🙂

    sayo
    משתתף
    עדין צריכה עזרה עם זה…
    sayo
    משתתף
    היי, יש לי עדין בעיה עם הממשק שבניתי, אני כל הזמן מקבלת שגיאה:
    "אין לשנות או להכניס מוצר אם יש ערך בשדה הכמות"

    בבקשה עזרה אני משתגעת!!!!!

    אלמוני
    אורח
    האם פתרת את הבעיה?
    אם עדיין רלונטי, אז זה הסדר :
    לפני כל שינוי שורה קיימת חייבים ראשית – לאפס את הכמות,
    לרדת שורה,
    לחזור אל השורה -לעדכן את השינויים (כמו מחיר תאריך,מנה וכו)
    ורק אז להחזיר את הכמות שהיתה או כמות אחרת לפי הצורך
    בהצלחה
מוצגות 14 תגובות – 1 עד 14 (מתוך 14 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.