לא לאפשר פתיחת הזמנה נוספת ללקוח באותו היום

פורומים אפיון ופיתוח פריוריטי לא לאפשר פתיחת הזמנה נוספת ללקוח באותו היום

  • Post
    asher
    משתתף
    שלום לכולם,

    אני מעוניין לעשות פיתוח קטן .

    לא לתת למשתמש לפתוח הזמנת לקוח חדשה אם ישנה כבר הזמנת לקוח פתוחה במערכת ביום הנוכחי.

    1. האם יש משהו בסטנדרט ?
    2. יש לי פיתוח בסגנון, האם יעזור?


    GOTO 1 WHERE :$.BOOKNUM = '';
    GOTO 1 WHERE :$.SUP = 0;
    SELECT DOCNO INTO :PAR1 FROM DOCUMENTS
    WHERE TYPE = :$.TYPE AND BOOKNUM = :$.BOOKNUM
    AND CUST = :$.SUP AND DOC <> :$.DOC
    AND YEAR(CURDATE) = YEAR(:$.CURDATE)
    AND CANCEL <> 'Y';
    WRNMSG 100 WHERE :RETVAL > 0;
    LABEL 1;

מוצגות 7 תגובות – 1 עד 7 (מתוך 7 סה״כ)
  • Replies
    asher
    משתתף
    שמתי את זה ב chek-field של ordname

    SELECT ORDNAME INTO :PAR1 FROM ORDERS, CUSTOMERS
    WHERE CUSTOMERS.CUST = ORDERS.CUST
    AND CUSTNAME = :$.CUSTNAME
    AND DAY(ORDERS.CURDATE) = DAY(:$.CURDATE);
    WRNMSG 103 WHERE :RETVAL >0;
    LABEL 1004 ;

    כמה אני רחוק ?

    אלמוני
    אורח
    פחות או יותר נכון, אם כי אני לא אוהב את השימוש בפונקציית DAY על CURDATE: האם הכוונה היתה להימנע משעה ודקה? ORDERS.CURDATE מכיל רק את התאריך, ללא שעה, ואף DAY מחזיר את מספר היום בתוך החודש – זה אומר שלקוח לא יכול להזמין באותו יום בחודש אחר.

    אני לא אוהב את השימוש שמות שדה ללא טבלה כאשר יש יותר מטבלה אחת בביטוי: זה חסכון מדומה. כמוכן אפשר לכתוב את הקוד בצורה קצת יותר מתומצתת.


    ERRMSG 104 FROM ORDERS
    WHERE CUST = :$.CUST
    AND CURDATE = :$.CURDATE;

    asher
    משתתף
    נועם תודה וסליחה על ההטרדה, זה לא עושה את העבודה ואני לא מבין מה אני עושה לא נכון ….

    ניסיתי גם את זה

    SELECT 'X' FROM ORDERS
    WHERE ORDERS.CUST = :$.CUST
    AND CURDATE = SQL.DATE8;
    ERRMSG 504 WHERE :RETVAL > 0 ;

    yitzchok
    משתתף
    IL
    על פניו נראה תקין.

    איפה אתה שם את הקוד הזה?

    אתה מתכוון שאתה מצליח לפתוח הזמנה שניה ושלישית וכו' לאותו לקוח כאשר התאריך בהזמנות אלה הוא היום?

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    asher
    משתתף
    כן, צודק.

    אני רוצה למנוע פתיחת הזמנה נוספת לאותו לקוח ביום נתון.

    ואני שם את זה ב check-field על שדה ORDNAME בפירוט בהזמנת לקוח .

    yitzchok
    משתתף
    IL
    בפירוט ההזמנה? אניח שהתכוונת לכותרת.

    בכל מקרה, CHECK-FIELD רץ על שדה שאתה משנה באופן ידני כך שב-ORDNAME שהוא לקריאה בלבד אין טעם. כמובן לשים על CURDATE עצמו בעייתי כי לא חייבים לעדכן את השדה ההוא באופן ידני.

    זו דוגמה קלאסית של מצב בו הבדיקה צריכה לבדוק את סה"כ מה שנעשה במסך ולכן יש לשים אותה ב-PRE-INSERT ו-PRE-UPDATE.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    asher
    משתתף
    טעויות של מתחיל, הבנתי וזה עובד עכשיו בדיוק כמו שכתבת, תודה רבה !
מוצגות 7 תגובות – 1 עד 7 (מתוך 7 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.