קריאת יתרות ומסגרת אשראי מתוך תסריט

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
בדיוק בסכום הזה.