› פורומים › אפיון ופיתוח פריוריטי › לוג שינויים בעץ המוצר
- הנושא הזה ריק.
- Post
-
- דצמבר 18, 2015 בשעה 7:45 pm
כולם מכירים את התסריט בו "מישהו" מבצע שינויים בעץ המוצר ולא ניתן לדעת מי באמת ביצע ומתי. לו היה לוג שינויים בעץ המוצר, היה קל לגלות מי שינה מה, אך משום מה, אין בפריוריטי דבר כזה. ברצוני להציג בפניכם את הקוד הנדרש כדי להוסיף שינויים שנעשים בעץ המוצר ללוג השינויים של הפריט.צריך להוסיף לשני מסכים שלוש הפעולות פשוטות. המסך הראשון נקרא 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
תהנו!!
- יש להתחבר למערכת על מנת להגיב.