› פורומים › אפיון ופיתוח פריוריטי › עזרתכם הדחופה!
- This topic has 8 תגובות, 2 משתתפים, and was last updated לפני 11 שנים, 4 חודשים by
אלמוני.
- Post
-
- פברואר 13, 2014 בשעה 6:29 pm
שלום,הבא מחשב את סכום ההכנסות ממוצרים שנמכרו בדולרים. הבעיה היא שחלק מהמוצרים נמכרו ביורו ואני מקבלת תוצאה ביורו ולא בדולרים- אני זקוקה לבצע המרה של הסכום הכולל לדולר( במידה והמטבע של המוצר הוא יורו).
שאילתת SQL
LINK STACK4 TO :$.STK;
GOTO 100 WHERE :RETVAL <= 0; LINK ALN_SERIAL TO :$.PAR; GOTO 100 WHERE :RETVAL <= 0; INSERT INTO STACK4(KEY,INTDATA,REALDATA,REALDATA2,CHARDATA) SELECT SQL.LINE,ALN_SERIAL.ALN_SERIAL, SUM(REALQUANT(ORDERITEMS.TQUANT - TBALANCE) * ORDERITEMS.PRICE) ,SUM(REALQUANT(TQUANT - TBALANCE) * ATOR(SPEC19) / CURRENCIES.EXCHANGE),'A' FROM ALN_SERIAL,ALN_SERORD,ORDERITEMS,PARTSPEC,FAMILY,PART, CURRENCIES,CURREGITEMS ?,ORDERS WHERE ALN_SERIAL.ALN_SERIAL = ALN_SERORD.ALN_SERIAL AND ALN_SERORD.ORD = ORDERITEMS.ORD AND CURRENCIES.CURRENCY = -2 AND CURREGITEMS.CURRENCY = -2 AND CURREGITEMS.CURDATE = ORDERS.CURDATE AND ORDERITEMS.ORD = ORDERS.ORD AND ORDERITEMS.PART = PARTSPEC.PART AND ORDERITEMS.PART = PART.PART AND PART.FAMILY = FAMILY.FAMILY AND FAMILYNAME NOT IN ('190','199') GROUP BY 2,5; אשמח לעזרתכם הדחופה!! תודה, שירן
- Replies
-
- פברואר 16, 2014 בשעה 10:03 am
- פברואר 16, 2014 בשעה 3:54 pm
את יכולה להכפיל ב ORDERITEMS.IEXCHANGE ולקבל את המחיר של השורה בש"ח. ואת זה להמיר כמו שאת עושה כרגע- פברואר 17, 2014 בשעה 1:09 am
היי ליאור,
תודה על התשובה אבל אני דיי חדשה כך שדי מסובך לי…
אני עושה משהו כנראה לא בסדר
שיניתי בהתאם למה שאמרת-SUM(REALQUANT(ORDERITEMS.TQUANT – TBALANCE)
* ORDERITEMS.PRICE/CURRENCIES.EXCHANGE*ORDERITEMS.IEXCHANGE)אבל אני לא מקבלת ערכים מדויקיים, יש סטייה מסוימת. ממה זה נובע? האם צריך להוסיף חיתוך נוסף? יש לי הרגשה שזה נובע מתאריך שער החליפין
תודה תודה תודה
שירן.- פברואר 17, 2014 בשעה 1:33 pm
הי שירן
ORDERITEMS.IEXCHANGE = שער המרה לשקל לפי תאריך ההזמנה (אלא אם כן שינו אותו ידנית). המערכת שומרת אותו אוטומטית בכל רמות פירוט התעודות והחשבוניות השונות. זה מאוד שימושיח ונוח לעבוד איתו בשאילתות
CURRENCIES.EXCHANGE = שער המרה לפי תאריך נוכחי לדולר.ראשית כל תעשי תנאי שאם השורה בדולר לא לבצע שום המרה, כלומר תכפילי ב 1.
שנית
קודם תחליטי לפי איזה תאריכים את רוצה לבצע את ההמרות.אם את רוצה שער המרה של תאריך מסוים, זה נמצא בטבלת CURREGITEMS שהמפתח שלה בנוי משתי עמודות CURRENCY, CURDATE (מטבע, תאריך)
כשניגשים אליה, ניגשים ב OUTER כדי להמנע מנפילת רשומות אם אנו פונים עם תאריך שעדיין לא עדכנו עבורו את השער מבנק ישראל וגם עליה עושים תנאי שאם השער הוא 0 (כלומר לא עדכנו אותו) לקחת את השער הרשום ב CURRENCIES שהוא השער האחרון הידוע למערכת כפי שהסברתי לעילבהצלחה
- פברואר 17, 2014 בשעה 6:51 pm
- פברואר 18, 2014 בשעה 2:21 pm
היי ליאור,
ראשית תודה רבה.
ניסיתי לעשות את מה שאמרת אבל אני מקבלת שגיאה של
group by
אין לי מושג למה!מה אני עושה לא בסדר????
תודה!
הנה :
LINK STACK4 TO :$.STK;
GOTO 100 WHERE :RETVAL <= 0;
LINK ALN_SERIAL TO :$.PAR;
GOTO 100 WHERE :RETVAL <= 0;
INSERT INTO STACK4(KEY,INTDATA,REALDATA,REALDATA2,CHARDATA)
SELECT SQL.LINE,ALN_SERIAL.ALN_SERIAL,
SUM(REALQUANT(ORDERITEMS.TQUANT – TBALANCE)
* ORDERITEMS.PRICE) * (ORDERITEMS.ICURRENCY= -2 ? 1.0 :
(CURREGITEMS.EXCHANGE 0 ? CURREGITEMS.EXCHANGE :
CURRENCIES.EXCHANGE))
,SUM(REALQUANT(TQUANT – TBALANCE) * ATOR(SPEC19) /
CURRENCIES.EXCHANGE),'A'
FROM ALN_SERIAL,ALN_SERORD,ORDERITEMS,PARTSPEC,FAMILY,PART,
CURRENCIES,CURREGITEMS ?,ORDERS
WHERE ALN_SERIAL.ALN_SERIAL = ALN_SERORD.ALN_SERIAL
AND ALN_SERORD.ORD = ORDERITEMS.ORD
AND CURREGITEMS.CURDATE = ORDERS.CURDATE
AND ORDERITEMS.ORD = ORDERS.ORD
AND ORDERITEMS.PART = PARTSPEC.PART
AND ORDERITEMS.PART = PART.PART
AND PART.FAMILY = FAMILY.FAMILY
AND CURRENCIES.CURRENCY = -2
AND CURREGITEMS.CURRENCY = -2
AND FAMILYNAME NOT IN ('190','199')
GROUP BY 2,5;- פברואר 18, 2014 בשעה 4:55 pm
שלום שירן
במערכת קיים דוח מכירות חודשיות לפי מוצר ב-$,שם הדוח INV_SALESPARTB.
תוכלי לבצע DUMP לדוח ומשם תוכלי להבין איך לחשב הכנסות ב-$ לפי מטבעות שונים.יאיר
- פברואר 24, 2014 בשעה 6:33 pm
- יש להתחבר למערכת על מנת להגיב.