טריגר לשינוי סטטוס

פורומים אפיון ופיתוח פריוריטי טריגר לשינוי סטטוס

  • Post
    sayo
    משתתף
    היי, הכנסתי טריגר PRE-UPDATE (עם קידומת) למסך INVOICES:

    UPDATE IVSTATS SET STATDES = 'בבדיקה'
    WHERE :$.TOTPRICE > 10000.0
    AND :$.DEBIT = 'C'
    AND TYPE = 2
    AND :$.FINAL <> 'Y'
    AND :$.STORNOFLAG <> 'Y';

    המטרה היא שהסטטוס ישתנה כשיש זיכוי מעל 10000 ש"ח.
    אין שגיאות אבל גם לא עובד…

    אודה לעזרה!!

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

    UPDATE INVOICES
    SET IVSTAT = :STAT
    WHERE …

    sayo
    משתתף
    אבל אין IVSTAT ב-INVOICES…
    sayo
    משתתף
    הצלחתי:

    SELECT :$.IV INTO :IV FROM INVOICES
    WHERE TOTPRICE > 10000.0
    AND DEBIT = 'C'
    AND TYPE = 'C'
    AND FINAL 'Y'
    AND STORNOFLAG 'Y';
    UPDATE INVOICESA SET IVSTAT = 4 WHERE IV = :IV;
    sayo
    משתתף
    אני רוצה להוסיף לקוד שזה יעבוד גם על חשבוניות חיוב במינוס, אז שיניתי את הקוד ועובד לי רק על חשבוניות זיכוי, מישהו יודע למה?!:

    SELECT :$.IV INTO :IV FROM INVOICES
    WHERE ((QPRICE 10000.0 AND DEBIT = 'C'))
    AND TYPE = 'C'
    AND FINAL 'Y'
    AND STORNOFLAG 'Y';
    UPDATE INVOICESA SET IVSTAT = 4 WHERE IV = :IV;

    אלמוני
    אורח
    תורידי את ההתיחסות ל-DEBIT, ותשווה את הערך האבסולוטי של QPRICE
    אגב, הביטוי "SELECT :$.IV INTO :IV FROM INVOICES" נראה לי מוזר. כל השדות נמצאים במסך לכן לא צריך לגעת בכלל בטבלת החשבוניות. יכול להיות שצריך לכתוב משהו כזה:

    GOTO 1 WHERE ABSR (:$.QPRICE) > 10000
    OR :$.FINAL = 'Y'
    OR :$.STORNOFLAG = 'Y';
    UPDATE INVOICESA
    SET IVSTAT = 4
    WHERE IV = :$.IV;
    LABEL 1;

    אם הבנתי אותך נכון, את רוצה לעדכן את הסטטוס אם הסכום פחות מ-10000 (פלוס/מינוס), לא סופי ולא סטורנו.
    אין סיבה לבדוק את סוג החשבונית אם הקוד מתבצע במסך CINVOICES כי בכל מקרה החשבונית חייבת להיות מסוג C.
    יתכן שטעיתי לגבי התחביר של ABSR
    sayo
    משתתף
    אני רוצה שההפעלה תעבוד כאשר יש זיכוי מעל 10000 (DEBIT=C) או כשיש חיוב במינוס קטן ממינוס 10000 (DEBIT=D) אם אני שמה ABSR אז זה יעבוד גם בחיוב רגיל ולא רק איפה שיש חיוב במינוס…
    sayo
    משתתף
    נ.ב. זה לא עובד בכלל..
    אלמוני
    אורח
    תנסי את זה:

    GOTO 1 WHERE :$.FINAL = 'Y' OR :$.STORNOFLAG = 'Y';
    GOTO 1 WHERE :$.DEBIT = 'C' AND :$.QPRICE -10000;
    UPDATE INVOICESA
    SET IVSTAT = 4
    WHERE IV = :$.IV;
    LABEL 1;

    כאשר את כותבת ש"זה לא עובד בכלל", מה לא עובד? תכניסי הודעה בשורה לפני UPDATE ואז יהיה ניתן לראות אם הבעיה בתנאים או בעדכון.

    sayo
    משתתף
    תודה רבה על הניסיון לעזור אבל לא עובד!
    אלמוני
    אורח
    מה לא עובד? תכניסי לטריגר הודעות דיבוג כדי שתוכלי לראות איפה הבעיה.
    למשל: לפני המשפט הראשון, תציגי את ערכו של FINAL ושל STORNOFLAG. אחר כך תציגי את ערכו של DEBIT ואת QPRICE
    אם כל התנאים הללו נכונים, אז יש בעיה עם העדכון. האם את גם מעדכנת את ערכו של משתנה במסך :$.IVSTAT, כך תראי את השינוי מיד? יכול להיות שההפעלה אכן עובדת אך אינך רואה כי את לא מעדכנת את המסך.
    תבדקי שהעדכון באמת מתבצע (תשלפי את השורה מ-INVOICESA באמצעות WINDBI).

    אנחנו יכולים לעזור לך אך רק את יודעת מה באמת קורה, ואת צריכה לבדוק את הדברים בשטח.

    sayo
    משתתף
    אבדוק, אבל אני חושבת שההפעלה בכלל לא עובדת כי הכנסתי טריגר הודעות ולא קופץ כלום…
מוצגות 11 תגובות – 1 עד 11 (מתוך 11 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.