› פורומים › אפיון ופיתוח פריוריטי › שליחת חשבונית במייל אחרי הסגירה שולח פעמיים
- This topic has 7 תגובות, 2 משתתפים, and was last updated לפני 2 שנים, 7 חודשים by yitzchok.
- Post
-
- אפריל 27, 2022 בשעה 3:16 pm
הי חברים ,אני סוגר את החשבונית באופן אוטומטי באמצעות טריגר post-form ומייד אחרי הסגירה שולח אותה במייל , היא כן נשלחת אבל פעמיים אחת בסטטוס טיוטא והשניה בסופית ואני רוצה רק את הסופית .
זה הקוד שלי , אני קודם סוגר ואז מדפיס אבל כנראה שהוא לא מחכה עד שסוגר ומדפיס את זה ואז בטיוטא ואחרי שהיא סופית :
SELECT SQL.TMPFILE INTO :REPO_TEMPFILE FROM DUMMY ;
LINK INVOICES I TO :REPO_TEMPFILE ;
GOTO 888 WHERE :RETVAL <= 0 ; /* if link fails just skip this
process */
DELETE FROM INVOICES I ; /* just in case */
INSERT INTO INVOICES I
SELECT * FROM INVOICES WHERE IV = :$.IV ;
UNLINK INVOICES I ;
EXECUTE ACTIVATE '-P', 'CLOSEANINVOICE', 'INVOICES',
:REPO_TEMPFILE ;
EXECUTE WINHTML '-d', 'WWWSHOWEIV', ", ", '-v', :$.IV, '-g',
'-signpdf', '-pdf' , '-format',-6 , '-AMAIL', '-s';
LABEL 888 ;
- Replies
-
- מאי 2, 2022 בשעה 1:33 am
ראשית כל כמה מחשבות:א. אם תחפש בגוגל programming pitfalls in priority תגיע לאתר של נעם ותראה שם תחת הערך NFILE מה שהוא כתב וגם תגובה שלי, המסקנה שמאד לא מומלץ לעשות פקודת DELETE כמו שעשית. ותשים גם UNLINK בסוף; אם תשים UNLINK AND REMOVE (וגם אם תשתמש באליאס יותר ייחודי מ-I) לדעתי תוכל לוותר על ה-DELETE בראש שקט.
ב. לא ברור לי למה הפעולה שלך לאחר POST-FORM, הקוד שלך סוגר חשבונית אחת יכולה להיות יותר מחשבונית אחת במסך. הייתי חושב שנכון לשים את הפעולה הזאת ב-POST-UPDATE.
ג. אני לא רואה מיד למה זה שולח פעמיים (אולי אתה איכשהו יוצא פעמיים מהמסך?) אבל קודם כל שים תנאי ואל תריץ את הפקודה ששולחת את התעודה במייל אם החשבונית לא סופית. כמתכנת מנוסה לפעמים אני לא מבין למה דברים כאלה קורים עד שאני מריץ את התהליך עם פלט דיבוג, יכול להיות שזה מה שתצטרך לעשות.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 5, 2022 בשעה 4:39 pm
מה שאני רוצה : אני היום מכניס את החשבונית מ ה api ואוטומטית אחרי זה רוצה לסגור אותה ולשלוח אותה במייל. הכל עובד בסדר חוץ משליחה למייל זה שולח פעמיים כמו שציינתי למעלה- מאי 5, 2022 בשעה 8:40 pm
באמת קשה לדעת מכאן. אולי ה-API מפעיל משום מה את ה-postform פעמיים.מה קורה אם אתנ עושה את אותה פעולה (לכאורה) ישירות בקליינט? כם ככה נשלח פעמיים? הייתי מתחיל משם. מהקליינט (כולל ממשק וובי) יותר פשוט לבדוק מה קורה. אם תקין שם נסה להבין מה שונה בשימוש ב-API.
אבל אני עדיין חושש מהשימוש ב-post-form – רגע הכוונה לpost-form של החשבונית או של הפירוט? (הרי אולי post-update של החשבונית לא פועלת)
יכול להיות שאתה צריך לעשות פניה מייוחדת ל-api לצורך סגירת החשבונית וזה לא מה שאתה עושה עכשיו
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 9, 2022 בשעה 12:44 pm
אז שווה לעבוד שם לאט מאד ולראות אם הם נשלחים לאחר פעולות שונותאפשרות אחרת (יותר טובה) להריץ את המסך עם פלט דיבוג/טרייס ולנסות להבין מה קורה מתי ומה יכול לגרום לזה.
יש לשים לב להפעלת ממשקים מסכיים; יכול להיות שיש לכם פעולה שמבצעת עדכון לחשבונית בעודה בטיוטא והפעלת המסך בעזרת הממשק אחראית לשליחת המייל המיותר.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 9, 2022 בשעה 12:51 pm
האם השליחה בקוד שלי מחכה לסגירה או שניהם עובדים במקביל ? או בצורה אחרת אם מפעילים שתי פרוצודרות האם רצים במקביל או בתור ?- מאי 10, 2022 בשעה 12:58 am
נותנים לנו לראות כאילו הפעלת פרוצדורה כנ"ל תסתיים לפני שתרוץ הפקודה הבאה (הרצה בתור), ובגדול המערכת עובדת ככה.אבל ראיתי שיש פעולות להן עושים fork ויש חלק שממשיך לרוץ וכבר החלק העיקרי של התוכנית ממשיכה. ספציפית ראיתי את זה בטעינת תנועת יומן, התוכנית המשיכה לאחר שהתנועה נוצרה אבל במקביל לרישום התנועה בספרים.
כך שלא ניתן לשלול שבקוד שלך שליחת המייל מבוצעת בזמן שפרוצדורת הסגירה עדיין רצה. אבל אני לא משוכנע שזאת הבעיה כאן. הרי זה היה מסביר מייל אחד עם תעודה בטיוטא. כאן יש שני מיילים. סביר יותר להניח (עד שתוכיח אחרת) שהמייל עם החשבונית הסגורה נשלחה לאחר הסגירה, ויש רגע אחר בו ה-POST-FORM מופעל והתעודה לא סופית (אולי כי הפרוצדורה לא הצליחה לסגור את החשבונית).
עשית בדיקה ידנית. כמו שאני אמרתי, הכי טוב לבצע דיבוג מסודר. אבל יכול לעזור גם לבדוק במסך "משימות בביצוע" ולראות כמה פעמים הופעלה תוכנית הסגירה.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
- יש להתחבר למערכת על מנת להגיב.