העלאת נתון בדו"ח

פורומים אפיון ופיתוח פריוריטי העלאת נתון בדו"ח

  • Post
    דן בר
    משתתף
    שלום רב !
    אני מנסה להביא שער המרה של המטבע המקומי לתאריך מסוים לדו"ח.
    הדו"ח הינו במטבע מקומי N לצורך העינין ובדו"ח שתי שורות :
    INVOICEITEMS.CURRENCY = CURRENCIES.CURRENCY
    CURRENCIES.CURRENCY = CURREGITEMS.CURRENCY
    (ישנו גם שדה נוסף המגדיר את התאריך המדוייק אבל הוא לא רלוונטי לצורך הבעיה)
    הבעיה הינה שהחיבור נעשה דרך המטבע המקומי N ולכן שער ההמרה שאני מקבל הוא תמיד 1 , אבל אני מבקש את שער ההמרה של הדולר ל N ולא של N ל N שהוא תמיד אחד.
    איך אפשר לפתור את הבעיה הזו ?
    תודה
מוצגות 13 תגובות – 1 עד 13 (מתוך 13 סה״כ)
  • Replies
    PriorityDev
    משתתף
    IL
    כל החשבוניות הן במטבע הבסיס ואתה רוצה להמיר את כולם לדולר?
    דן בר
    משתתף
    כן , מה מוזר בזה ?
    היות וזו חברה הפועלת באפריקה והבעלים בארה"ב , זו דרישה סבירה.
    PriorityDev
    משתתף
    IL
    כתבתי שזה מוזר?
    רק רוצה להבין מה אתה צריך בדיוק.
    PriorityDev
    משתתף
    IL
    אתה צריך להביא לדו"ח עוד CURRENCIES ועוד CURREGITEMS, כאשר אתה מתנה בשניהם CURRENCY = -2.
    זהו בעצם מפתח של מטבע דולר.
    ואז צריך להכפיל את המחיר ב-EXCHANGE של טבלאות אלה (אם לפי תאריך היום – CURRENCY ואם לפי תאריך אחר – CURREGITEMS)
    דן בר
    משתתף
    תודה רבה , אבל זה לא עובד היות ויוצא דו"ח ריק , אני מניח שזה מפני שאין אף רשומה העונה על התנאי CURRENCY=-2
    מכיוון שבכל הרשומות CURRENCY=-1
    שזהו המטבע המקומי.
    PriorityDev
    משתתף
    IL
    צריך לתת לשתי הטבלאות מזהה אחר, לא 0 – גם בחיתוך וגם בשדה המוצג.
    כלומר, אתה צריך לחתוך לאותן טבלאות פעמיים, עם מזהים שונים.
    אלמוני
    אורח
    צריך להוסיף חיתוך INVOICES.IVDATE = CURREGITEMS.CURDATE
    כמו כן כל התיחסות אל CURREGITEMS צריך להיות עם סימן שאלה, כי לא בטוח שיש רשומה ב-CURREGITEMS לתאריך החשבונית.
    PriorityDev
    משתתף
    IL
    עקרונית, יש ב-CURREGITEMS את כל התאריכים. אם ביום מסוים לא התעדכן שער, הוא מתעדכן ע"י שער של יום שלפניו.
    ובאמת, בהרבה דו"חות סטנדרטיים החיתוך לא מותנה. למשל, WWWPURDEMANDS_DET.

    תריץ למשל, את השאילתא הבאה:
    SELECT DISTINCT CURDATE, EXCHANGE
    FROM CURREGITEMS
    WHERE CURDATE >= 01/07/18
    AND CURRENCY = -2
    FORMAT;

    אתה תראה שיש רשומות ל-14/07/18 ול-15/07/18, למרות שזה שבת-ראשון שבהם השער לא התעדכן, ומופיע שם שער של 13/07/18.

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

    yitzchok
    משתתף
    IL
    לתאריכים מאז עדכון השער האחרון לא תהיה רשומה מתאימה. לדעתי סימן השאלה בחיתוך חשוב.
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    דן בר
    משתתף
    אני מודה לכל העונים , אבל הבעיה לא נפתרה משום שהמכשלה העירית הינה שבדו"ח המקורי אין בכלל ייצוג ל $ , יש CURRENCY=-1 שזה המטבע המקומי ולכן כל חיתוך עם הטבלה CURREGITEMS הינו עם המטבע המקומי ושער ההמרה שלו לעצמו הינו 1 .

    ולכן אם אציג בצורה כללית יותר , אז הבעיה היא :
    איך אתה חותך בין טבלה A לטבלה B כאשר ערך המפתח המשותף הוא A.currency=B.currency
    ב A
    currency=-1 בכל הרשומות.

    ב B יש ערכי currency רבים בינהם 1- ו 2- , אבל החיתוך מבוצע על 1- ואני רוצה את הערך (שער ההמרה) כאשר ב B
    currency=-2

    אני מקווה שהסברתי עצמי טוב ומודה לכל המשיבים.

    yitzchok
    משתתף
    IL
    אתה צריך להביא שני מופעים של כל טבלה.

    בשביל זה יש את העמודה מזהה טבלה (יש כזה גם לעמודה של טבלת חיתוך). לא רק רושמים של ? כפי שתיארנו אלא אפשר גם מספר שמבדיל בין מופעים של הטבלה, וכך אפשר להצביע על שורות שונות מאותה טבלה באותו זמן.

    בהנחה שאתה מתחיל מ-INVOICEITEMS.CURRENCY ז"א המחיר בשורת תעודה כספית הוא בכל מטבע אפשרי:
    אתה צריך קודם כל להמיר למטבע הראשי (1-) (כל שערי המרה הם מולו) ואז עוד המרה למטבע יעד (אם למטבע משני מה שיהיה אז 2-, אחרת צריכים לאתר לאחד המזהים הגלוים כמו קוד מטבע)

    אז ככה, וכאן אכתוב לא בסינטקס תקין אלא אני אשלב סימן שאלה איפה שצריך בכינוי הטבלה, וגם נניח שמדובר בדולר כמטבע משני (2-)

    INVOICEITEMS.CURRENCY = CURRENCIES.CURRENCY
    CURRENCIES.CURRENCY = CURREGITEMS?.CURRENCY
    CURREGITEMS?.CURDATE = INVOICES.IVDATE

    CURRENCIES2.CURRENCY = -2
    CURRENCIES2.CURRENCY = CURREGITEMS2?.CURRENCY
    CURREGITEMS2?.CURDATE = INVOICES.IVDATE

    ואז אתה צריך להמיר לדולר דרך ש"ח (אם INVOICEITEMS.CURRENCY הוא כבר 1- אז לא תקבל שורה מ-CURREGITEMS ותקבל שורה של ש"ח מ-CURRENCIES ושם השער הוא בדיוק 1.0 והכל בסדר, המרת מש"ח לש"ח)

    INVOICEITEMS.QPRICE * (CURREGITEMS.EXCHANGE 0 ? CURREGITEMS.EXCHANGE ‎: CURRENCIES.EXCHANGE) / (CURREGITEMS2.EXCHANGE 0 ? CURREGITEMS2.EXCHANGE ‎: CURRENCIES2.EXCHANGE)

    תבדוק את הנ"ל – אתה צריך להכפיל בשער אחד ולחלק בשער השני. איזה זה איזה זה פשוט פרט שאני לא מצליח לזכור בשלוף ולא הלכתי לבדוק

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

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    דווקא מיכאל כבר הזכיר את הקטע של המופעים/מזהים ואם זה היה הקושי, כנראה לא הבנת למה הוא התכוון

    אתה צריך להביא לדו"ח עוד CURRENCIES ועוד CURREGITEMS, כאשר אתה מתנה בשניהם CURRENCY = -2.

    צריך לתת לשתי הטבלאות מזהה אחר, לא 0 – גם בחיתוך וגם בשדה המוצג.
    כלומר, אתה צריך לחתוך לאותן טבלאות פעמיים, עם מזהים שונים.

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