קריאת יתרות ומסגרת אשראי מתוך תסריט
Function Fman.Request('Get Credit Data', ReqData: ThJsonNode): Boolean;
הבקשה 'Get Credit Data' מחזירה לתסריט את תמונת היתרות וניהול הסיכון שמחזיק מנוע CLE של המסמך הפתוח.
היא זמינה בתסריט של חשבונית מס, חשבונית זיכוי, קבלה, משיכה, תעודת משלוח, תעודת החזרה ובמודולים מקצועיים אחרים (פיקודות, עסקאות, הלוואות).
התסריט קורא למנוע של אותו הטופס !
המנוע מציג את היתרה לכל מטבע, את השינוי המתוכנן במסמך - אם נמצא בעריכה, את מסגרת האשראי ואת הסכומים שמובאים בחשבון בבדיקת הסיכון. התוצאה נכתבת לאובייקט
ReqData
שהתסריט יוצר.
שני מצבים של המסמך
| מצב המסמך | מה מחזירה הבקשה |
|---|---|
| מסמך בזמן עריכה |
המנוע מחזיק את יתרות הלקוח ואת השפעת הפעולה שעומדים לבצע.
השדות PlaygroundBalance , PlaygroundSum ו־PlaygroundSumLc מאפשרים לבחון את היתרה החזויה לאחר המסמך.
הקריאה עצמה מחזירה את המצב שכבר חושב בטופס; היא אינה מחשבת מחדש את שינויי המסמך. |
| מסמך לקריאה בלבד, לאחר הפקה |
זהו מצב החשבון בעת שליפת הנתונים, ולא צילום היסטורי של היתרה ברגע הפקת המסמך.
אם המנוע עדיין לא טען חשבון, הקריאה הראשונה מאתחלת אותו לחשבון המסמך ושולפת את היתרות ואת נתוני המסגרת והסיכון. מאחר שהמסמך כבר הופק, אין מוסיפים אותו שוב ל־Playground. בדרך כלל PlaygroundBalance = 0 , והיתרה החשבונאית כוללת את רישומי המסמך שכבר נקלטו.
קריאות נוספות מחזירות את מצב המנוע הקיים, אלא אם התסריט מבקש רענון באמצעות Refresh .
|
קוד לדוגמה
פרמטר הקלט האופציונלי היחיד הואRefresh
, יש להוסיפו ל־ReqData
לפני הקריאה, אך הוא איננו חובה.
כאשר הבקשה מחזירה
True
, תוכן הקלט נמחק והפלט נכתב לאותו אובייקט (ReqData).
המתכנת אחראי ליצור ולשחרר את ReqData, בלי קשר לתוצאת הריצה של הפונקציה.
הנה קוד לדוגמה:
Procedure Read_Credit_Data;
VAR ReqData: ThJsonNode;
JsonText: AnsiString;
BalanceLC, RiskLC, CustomVaR: Double;
CanUseCreditLine: Boolean;
Begin
ReqData:= ThJsonNode.Create;
TRY
// Read-only document: fetch current balances before calling an API.
ReqData.Add_String('Refresh', 'Now');
// Alternative: ReqData.Add_Value('Refresh', 'When Needed', False);
// Omit Refresh to use the CLE data already held by the form.
IF NOT Fman.Request('Get Credit Data', ReqData) Then EXIT;
IF NOT ReqData.Value_Boolean(['Data_Query_OK']) Then EXIT;
BalanceLC:= ReqData.Value_Real(['Balance_LC'], False);
RiskLC:= ReqData.Value_Real(['Risk_LC'], False);
CanUseCreditLine:= ReqData.Value_Boolean(['Can_Credit_Line_Contain_The_Risk']);
// Optional field: present only when the loaded VaR meets the threshold.
IF ReqData.Find_Node_ML(['Custom_Value_at_Risk']) <> NIL Then
CustomVaR:= ReqData.Value_Real(['Custom_Value_at_Risk'], False);
// if you like to save this object to app log (for examine it) - you can run this line:
ReqData.Debug_Write_To_Log;
FINALLY
ReqData.Free;
End;
End;
כפיית רענון נתונים
המכנת רשאי להוסיף שדה טקסט בכדי לבקש או לכפות רענון נתונים בתוך המודול CLE בטרם הוא מחזיר את התשובה:| ערך Refresh | התנהגות |
|---|---|
| לא הועבר | מוחזר המצב הקיים במנוע, ללא בקשת רענון. מתאים לקריאת תמונת היתרות שכבר חושבה בטופס. |
| 'When Needed' |
היתרות החשבונאיות נשלפות מחדש אם טרם נטענו או אם חלפו יותר משלוש דקות מהשליפה המוצלחת האחרונה.
נתוני האשראי והסיכון נשלפים מחדש לפי הצורך כאשר בדיקתם פעילה בהגדרות, וגם הם בני יותר משלוש דקות או טרם נטענו. |
| 'Now' |
מתבצעת שליפה מחדש של היתרות החשבונאיות ושל נתוני מסגרת האשראי והסיכון בכל קריאה, ללא תלות בגיל הנתונים.
זו הבחירה כאשר צריך תמונת יתרות עדכנית רגע לפני ביצוע פעולה או הפעלת API - בעלי חשיפה כספית. |
מבנה התוצאה
השדות הראשיים הם סיכומים ומדדי מצב.Data
הוא מערך פירוט; כל איבר בו הוא שורה של מטבע אחד מתוך טבלת היתרות של המנוע.
הסכומים עם הסיומת
LC
נקובים במטבע ניהול הספרים, לפי שער ההמרה שבו השתמש המנוע.
סכום חיובי בשדות היתרה מציין יתרה לטובת הלקוח; סכום שלילי מציין חוב או חשיפה. סכום חיובי בשדה הסיכון מציין כיסוי מהיתרות ומהביטחונות, ושלילי מציין חשיפה.
| שדה ראשי | סוג | משמעות |
|---|---|---|
| Account_Number | מספר שלם | מספר החשבון או הישות שהמנוע מחזיק עבור המסמך. לא ממש שימושי, יוצר ייצוגי. |
| Data_Query_OK | Boolean |
מציין שמנוע CLE השלים בהצלחה את שליפת נתוני היתרה הנדרשת, וגם את שליפת נתוני הסיכון הנוספים כאשר היא נדרשת בהגדרות המערכת.
False מחייב להימנע מהסתמכות על הסכומים לצורך החלטה.
True אינו חותמת זמן ואינו מבטיח שהנתונים רועננו ממש לפני הקריאה לתסריט.
|
| Balance_LC | מספר ממשי |
סכום היתרות בכל המטבעות במטבע ניהול הספרים. לאחר שהמנוע קיבל שינוי מתוכנן של המסמך, זהו סכום PlaygroundSumLc מכל השורות;
לפני כן זהו סכום FloatingBalanceLc . אינו כולל מסגרת אשראי או ביטחונות.
|
| Risk_LC | מספר ממשי |
הסיכון המחושב: Balance_LC ועוד סכום SecuritiesLc מכל המטבעות.
ערך שלילי הוא החשיפה שנותרה אחרי השפעת הביטחונות וההתחייבויות. מסגרת האשראי אינה מתווספת לסכום הזה; היא נבדקת בנפרד. |
| Can_Credit_Line_Contain_The_Risk | Boolean |
מציין אם בדיקת המסגרת הבסיסית של CLE מכסה את הסיכון הנוכחי.
מתקבל True כאשר Risk_LC אינו שלילי מעבר לסף זניח, או כאשר גודל החשיפה קטן
מסך CreditLineLc בתוספת חריגה המותרת למשתמש.
|
| Data | מערך אובייקטים (רשומות) |
העתק של טבלת BalanceTb במצב שבו היא נמצאת בזמן הקריאה.
כל איבר מתאר מטבע אחד; ייתכנו שורות שנוצרו בעקבות מסגרת אשראי או ביטחונות גם כאשר היתרה החשבונאית בהן אפס. בהיעדר שורות יוחזר מערך ריק [] .
|
| Custom_Value_at_Risk | מספר; שדה אופציונלי |
סכום ה־VaR המותאם אישית שמוגדר ללקוח, במטבע ניהול הספרים; הוא אינו מחושב מתוך המסמך.
השדה נכלל בפלט רק אם הסכום שנטען למנוע הוא לפחות 0.1 ; היעדר השדה אינו שקול בהכרח ל־Data_Query_OK = false .
כאשר קיים, המנוע כבר מכניס אותו כחשיפה שלילית ל־ Securities במטבע ניהול הספרים, ולכן הוא כבר משפיע על Risk_LC .
אין להפחית אותו מהסיכון פעם נוספת. |
השדות בכל שורה של Data
שמות המפתחות להלן הם השמות המדויקים ב־JSON. השדות ללאLc
מתייחסים למטבע שבשדה Currency
;
שדות Lc
מוצגים במטבע ניהול הספרים.
| שדה ב Data | משמעות |
|---|---|
| Currency |
סימול המטבע של השורה, למשל USD .
|
| Balance |
היתרה הבסיסית בחשבון במטבע השורה, כפי שהמנוע קיבל ממנוע דוח היומן JRE.
במסמך בעריכה היא אינה כוללת את שינויי ה־Playground של המסמך הנוכחי; במסמך שכבר הופק היא יכולה לכלול את תנועותיו שכבר נרשמו. |
| ExchangeRate | שער ההמרה שבו משתמש CLE להצגת סכומי השורה במטבע ניהול הספרים. השער עשוי להיות שער הדיווח שקיבל מ־JRE או שער חי, בהתאם להגדרות ולמצב הטעינה. |
| FloatingBalanceLc | היתרה הבסיסית לאחר שערוך למטבע ניהול הספרים, כפי שהתקבלה מ־JRE. זו נקודת המוצא לסיכום היתרה לפני שינויי המסמך. |
| PlaygroundBalance |
השינוי המתוכנן שהמסמך הנערך מוסיף ליתרה במטבע השורה.
ערך חיובי מגדיל את היתרה, וערך שלילי מקטין אותה. זהו חישוב לצורך בדיקה לפני רישום הפעולה. במסמך לקריאה בלבד הוא בדרך כלל אפס, כי אין להוסיף שנית תנועה שכבר נרשמה. |
| PlaygroundSum PlaygroundSumLc |
היתרה לאחר השינוי המתוכנן במטבע השורה: Balance + PlaygroundBalance .
במסמך לקריאה בלבד, כש־ PlaygroundBalance = 0 , היא שווה ל־Balance .
|
| CreditLine CreditLineLc |
סכום מסגרות האשראי התקפות במטבע השורה, אם נתוני המסגרות נטענו למנוע. הוא אינו חלק מהיתרה או מן Risk_LC .
|
| Securities SecuritiesLc |
הסכום נטו של ביטחונות וחשיפות נוספות במטבע השורה, אם נתונים אלה נטענו למנוע. ערך חיובי יכול לשקף כיסוי וערך שלילי צורך בכיסוי.
המקורות עשויים לכלול התחייבויות, פיקדונות, עסקאות עתידיות או פתוחות, לפי המודולים הפעילים. כלומר השדה מערבב נכסים עם התחייבויות של הלקוח - שאינם נובעים מפקודות היומן ! Custom_Value_at_Risk , כאשר הוא קיים, נכלל כאן כחשיפה שלילית במטבע ניהול הספרים;
בהגדרות מסוימות המנוע מאפס כיסוי חיובי לצורך בדיקה שמרנית. |
דוגמה מפלט אמיתי
הדוגמה הבאה התקבלה ממסמך לקריאה בלבד, לאחר הפקתו. הפלט כולל 19 שורות מטבע; כאן מוצגות שלוש מהן בלבד, והסיכומים הראשיים מחושבים מכל השורות יחד.{
"Account_Number":500000,
"Data_Query_OK":true,
"Balance_LC":-8564370.19,
"Risk_LC":-8576715.19,
"Can_Credit_Line_Contain_The_Risk":true,
"Data":[
{
"Balance":-8494799.36,
"Currency":"ILS",
"ExchangeRate":1,
"FloatingBalanceLc":-8494799.36,
"PlaygroundBalance":0,
"PlaygroundSum":-8494799.36,
"PlaygroundSumLc":-8494799.36,
"CreditLine":15000000.00,
"CreditLineLc":15000000.00,
"Securities":-12345,
"SecuritiesLc":-12345.00
},
{
"Balance":-3847.47,
"Currency":"USD",
"ExchangeRate":3.10662,
"FloatingBalanceLc":-11952.63,
"PlaygroundBalance":0,
"PlaygroundSum":-3847.47,
"PlaygroundSumLc":-11952.63,
"CreditLine":0.00,
"CreditLineLc":0.00,
"Securities":0,
"SecuritiesLc":0.00
},
{
"Balance":-40832.34,
"Currency":"EUR",
"ExchangeRate":3.48037745,
"FloatingBalanceLc":-142111.96,
"PlaygroundBalance":0,
"PlaygroundSum":-40832.34,
"PlaygroundSumLc":-142111.96,
"CreditLine":0.00,
"CreditLineLc":0.00,
"Securities":0,
"SecuritiesLc":0.00
},
{
"Balance":17827.43,
"Currency":"GBP",
"ExchangeRate":4.15578771,
"FloatingBalanceLc":74087.01,
"PlaygroundBalance":0,
"PlaygroundSum":17827.43,
"PlaygroundSumLc":74087.01,
"CreditLine":0.00,
"CreditLineLc":0.00,
"Securities":0,
"SecuritiesLc":0.00
}
],
"Custom_Value_at_Risk":12345
}
| שדה ראשי | ערך | פירוש |
|---|---|---|
| Data_Query_OK | true | הנתונים הדרושים לבדיקה נטענו בהצלחה במנוע. |
| Balance_LC | -8,564,370.19 | סכום יתרות כל המטבעות לאחר המרה למטבע ניהול הספרים. |
| Risk_LC | -8,576,715.19 |
היתרה לאחר תוספת החשיפה של 12,345 ממודול VaR.
|
| Custom_Value_at_Risk | 12,345 |
ה־VaR המותאם שהמנוע הכניס ל־ Securities כערך שלילי.
|
| Can_Credit_Line_Contain_The_Risk | true | גם לאחר ה־VaR, החשיפה של כ־8.58 מיליון במטבע ניהול הספרים נמוכה ממסגרת האשראי של 15 מיליון. |
| Currency | Balance | ExchangeRate | FloatingBalanceLc | PlaygroundBalance | CreditLineLc | SecuritiesLc |
|---|---|---|---|---|---|---|
| ILS | -8,494,799.36 | 1 | -8,494,799.36 | 0 | 15,000,000.00 | -12,345.00 |
| USD | -3,847.47 | 3.10662 | -11,952.63 | 0 | 0.00 | 0.00 |
| GBP | 17,827.43 | 4.15578771 | 74,087.01 | 0 | 0.00 | 0.00 |
בדולרים היתרה היא שלילית, אך גם היתרה החיובית בלירות שטרלינג משתתפת בסיכום לאחר המרה. יתר השורות, שאינן מוצגות כאן, משלימות את
Balance_LC
.
בפלט הזה
PlaygroundBalance = 0
בכל המטבעות, ולכן אין בו שינוי חזוי נוסף של המסמך: PlaygroundSum
שווה ל־Balance
בכל שורה.
שורת ILS מציגה
SecuritiesLc = -12,345
בגלל ה־VaR, ולכן Risk_LC
נמוך מ־Balance_LC
בדיוק בסכום הזה.