לוג שינויים בעץ המוצר

פורומים אפיון ופיתוח פריוריטי לוג שינויים בעץ המוצר

  • הנושא הזה ריק.
  • Post
    אלמוני
    אורח
    כולם מכירים את התסריט בו "מישהו" מבצע שינויים בעץ המוצר ולא ניתן לדעת מי באמת ביצע ומתי. לו היה לוג שינויים בעץ המוצר, היה קל לגלות מי שינה מה, אך משום מה, אין בפריוריטי דבר כזה. ברצוני להציג בפניכם את הקוד הנדרש כדי להוסיף שינויים שנעשים בעץ המוצר ללוג השינויים של הפריט.

    צריך להוסיף לשני מסכים שלוש הפעולות פשוטות. המסך הראשון נקרא PARTARC, שהוא מסך בן של כרטיס הפריט. כאמור, צריך להגדיר שלוש הפעלות:
    TEST_POST-UPDATE, TEST_PRE-DELETE, TESTּ_BUF1. כמובן מחליפים את הקידומת TEST בקידומת שלכם (אפשר גם להשאיר כמושהי).
    להלן הקוד:

    /* PARTARC/TEST_POST-UPDATE */
    #INCLUDE PARTARC/TEST_BUF1
    GOTO 1 WHERE :$.SONNAME = :$1.SONNAME;
    :FIELD = :$.SONNAME.TITLE;
    :OLDVALUE = :$1.SONNAME;
    :NEWVALUE = :$.SONNAME;
    GOSUB 900;
    LABEL 1;
    GOTO 1 WHERE :$.SONQUANT = :$1.SONQUANT;
    :FIELD = STRCAT (:$.SONNAME, '/', :$.SONQUANT.TITLE);
    :OLDVALUE = RTOA (:$1.SONQUANT, 3);
    :NEWVALUE = RTOA (:$.SONQUANT, 3);
    GOSUB 900;
    LABEL 1;
    GOTO 1 WHERE :$.SONACTNAME = :$1.SONACTNAME;
    :FIELD = STRCAT (:$.SONNAME, '/', :$.SONACTNAME.TITLE);
    :OLDVALUE = :$1.SONACTNAME;
    :NEWVALUE = :$.SONACTNAME;
    GOSUB 900;
    LABEL 1;
    GOTO 1 WHERE :$.INFOONLY = :$1.INFOONLY;
    :FIELD = STRCAT (:$.SONNAME, '/', :$.INFOONLY.TITLE);
    SELECT (:$1.INFOONLY = 'Y' ? 'Y' : 'N'),
    (:$1.INFOONLY = 'Y' ? 'Y' : 'N')
    INTO :OLDVALUE, :NEWVALUES FROM DUMMY;
    GOSUB 900;
    LABEL 1;
    GOTO 1 WHERE :$.SONREVNAME = :$1.SONREVNAME;
    :FIELD = STRCAT (:$.SONNAME, '/', :$.SONREVNAME.TITLE);
    SELECT (:$1.SONREVNAME = 'Y' ? 'Y' : 'N'),
    (:$1.SONREVNAME = 'Y' ? 'Y' : 'N')
    INTO :OLDVALUE, :NEWVALUES FROM DUMMY;
    GOSUB 900;
    LABEL 1;

    /* PARTARC/TEST_PRE-DELETE */
    #INCLUDE PARTARC/TEST_BUF1
    :FIELD = STRCAT (:$.SONNAME.TITLE, ' מחיקת');
    :OLDVALUE = :$1.SONNAME;
    :NEWVALUE = STRCAT (RTOA (:$1.SONQUANT, 3), ' כמות ');
    GOSUB 900;

    /* PARTARC/TEST_BUF1 */
    SUB 900;
    :LINE = 0;
    SELECT MAX (LINE) INTO :LINE
    FROM GEN_CHANGE_LOG
    WHERE IV = :$$.NSCUST
    AND TYPE = :$$.EXTTYPE
    AND KLINE = -1;
    LABEL 901;
    :LINE = :LINE + 1;
    INSERT INTO GEN_CHANGE_LOG (IV, TYPE, KLINE, LINE, FIELD,
    OLDVALUE, NEWVALUE, USER, UDATE, WEBID)
    VALUES (:$$.NSCUST, :$$.EXTTYPE, -1, :LINE, :FIELD,
    :OLDVALUE, :NEWVALUE, SQL.USER, SQL.DATE, SQL.WEBID);
    LOOP 901 WHERE :RETVAL <= 0; RETURN;

    אפשר לעקוב אחר שדות נוספים ב-POST-UPDATE.

    המסך השני נקרא PARTARCONE - הוא מסך שעומד בפני עצמו (ייצור > מידול > מוצרים > קשתות מוצרים). הקוד לשתי ההפעלות הראשונות זהה, אם כי צריך להחליף את PARTARC/TEST_BUF1 ב-PARTARCONE/TEST-BUF1
    להלן הקוד ל-TEST_BUF1

    SUB 900;
    :LINE = 0;
    SELECT MAX (LINE) INTO :LINE
    FROM GEN_CHANGE_LOG
    WHERE IV = :$.PARTPART
    AND TYPE = 'p'
    AND KLINE = -1;
    LABEL 901;
    :LINE = :LINE + 1;
    INSERT INTO GEN_CHANGE_LOG (IV, TYPE, KLINE, LINE, FIELD,
    OLDVALUE, NEWVALUE, USER, UDATE, WEBID)
    VALUES (:$.PARTPART, 'p', -1, :LINE, :FIELD,
    :OLDVALUE, :NEWVALUE, SQL.USER, SQL.DATE, SQL.WEBID);
    LOOP 901 WHERE :RETVAL <= 0; RETURN;

    :P
    תהנו!!

  • יש להתחבר למערכת על מנת להגיב.