אינטגרציה של מערכות פיננסיות
חיבור נכון בין מערכות פיננסיות אינו רק העברת נתונים אלא יישוב סכומים, כולל שתי דרישות תשתית שאי אפשר להוסיף בדיעבד, וטיפול במקרה אחד נפוץ שרוב החיבורים הפיננסיים מטפלים בו בצורה לא נכונה.
בקצרה
בחיבור אינטגרציה רגיל המטרה היא שהנתון יעבור ממערכת למערכת; בחיבור כספי המטרה היא שהסכומים בפועל יהיו זהים בשתי המערכות בנקודת זמן נתונה.שני הצדדים יסתכמו לאותו מספר, וזו דרישה אחרת לגמרי מהעתקת נתונים. שתי דרישות קריטיות נקבעות כבר באופן החיבור ואי אפשר להוסיף אותן אחר כך: מזהה ייחודי לכל תנועה עם מנגנון התעלמות מניסיון שליחה חוזר, ושמירת ההודעה המקורית כפי שהתקבלה במלואה. והמקרה שנופל בדרך כלל הוא ביטול או זיכוי, משום שהוא מגיע אחרי שתנועת המקור כבר נקלטה ולעתים אחרי שהחודש החשבונאי נסגר.
העברה לעומת יישוב
| השאלה |
אינטגרציה רגילה |
חיבור כספי |
| מה נחשב הצלחה |
ההודעה נקלטה |
שני הצדדים מסתכמים לאותו מספר. עצם הקליטה אינה נחשבת הצלחה |
| מה קורה בכפילות |
לרוב לא חמור. מתקבלת רשומה כפולה שאפשר לתקן ידנית |
תנועה כפולה היא כסף אמיתי. היא מתגלה רק בהתאמת בנק, לרוב בחודש הבא |
| מה קורה באיבוד |
שולחים שוב |
אי אפשר לשלוח שוב בלי לדעת אם הניסיון הראשון נקלט או נפל. מכאן נובע הצורך במזהה |
| מה נדרש בדיעבד |
לדעת שהנתון עבר |
לדעת למה המספר הזה יצא כך, כלומר להיות מסוגלים לשחזר את החישוב ואת כל הנתונים שהוזנו אליו |
השורה האחרונה היא זו שמבדילה בין חיבור שעובד לאורך זמן לבין חיבור שנראה תקין עד לבדיקה הראשונה. השאלה «למה המספר הזה כך» עולה בכל בדיקה, בכל מחלוקת עם ספק, ובכל סגירת חודש שלא נסגרת על האגורה.
שתי דרישות שנקבעות בהתחלה
מזהה ייחודי, והתעלמות מחזרה
כל תנועה נושאת מזהה שנוצר אצל השולח, והמערכת הקולטת מתעלמת ממזהה שכבר ראה. כך נפתר המצב שאין לו פתרון אחר: נשלחה תנועה ולא התקבלה תשובה, ואין דרך לדעת אם היא נקלטה או לא.
בלי מנגנון כזה עומדות רק שתי אפשרויות, ושתיהן שגויות: שליחה חוזרת יוצרת תנועה כפולה, והימנעות משליחה חוזרת גורמת לאיבוד התנועה – ובשני המקרים אף אחד לא יודע עד שההתאמה החשבונאית לא מסתדרת. זו הדרישה הבסיסית ביותר בתחום, והיא גם זו שמושמטת הכי הרבה בחיבורים שנבנים בחופזה.
ההודעה המקורית, כפי שהתקבלה
לא רק הנתונים שנשלפו ממנה, אלא כל ההודעה כפי שנקלטה: המקור השלם, עם המזהה, עם מה שהמערכת ביצעה בעקבותיו ועם זמן הביצוע.
הסיבה המעשית פשוטה: כשמספר לא מסתדר, צריך לברר אם הטעות הייתה בשליחה, בפירוש הנתונים או בחישוב, ואי אפשר להבדיל בין שלושת המצבים בלי גישה למקור. מערכות ששמרו רק את התוצאה מסוגלות לספר מה הן חושבות שקרה, אבל לא מה באמת התקבל, והפער בין השניים הוא בדיוק הבאג שמחפשים.
ומה שנגזר מזה על מטבע חוץ. סכום שהומר ממטבע למטבע הוא תוצאה של חישוב, ולכן יש לשמור יחד כיחידה אחת ארבעה נתונים: סכום, מטבע, שער, ותאריך השער. מערכת ששמרה רק את הסכום בשקלים לא תוכל להסביר הפרשי אגורות שמתגלים ביישוב, ועל ההפרשים האלה אפשר לבזבז ימים של חיפוש.
הביטול: המקרה שנופל
זה המקרה הראשון שכדאי לבדוק בכל חיבור כספי, משום שהוא נכשל לעיתים קרובות ובשקט, בלי התראה גלויה.
תנועה מבוטלת או זוכה אחרי שתנועת המקור נקלטה. יש שלוש שאלות, ולכל אחת מהן חייבת להיות תשובה כתובה ומוסכמת:
- הביטול מבטל את המקור או יוצר תנועה נגדית? בחשבונאות לרוב יוצרים תנועה נגדית, בעוד שמערכות תפעוליות נוטות למחוק את התנועה, וההבדל בין שני המצבים הוא כל ההיסטוריה החשבונאית.
- מה אם החודש נסגר? אז אי אפשר לגעת בתקופה הסגורה, והביטול חייב להיכנס לתקופה הפתוחה עם קישור ברור לתנועת המקור. אם אין מנגנון כזה, מישהו יטפל בזה ידנית.
- ביטול חלקי? זיכוי על חלק מהסכום, או על חלק מהשורות בלבד. זה המקרה שאינטגרציות מטפלות בו הכי פחות טוב, והוא דווקא מקרה שימוש נפוץ.
בדיקה פשוטה על חיבור קיים: לקחת את כל הזיכויים של החודש האחרון ולראות שכולם מקושרים לתנועת המקור. כל זיכוי שאינו מקושר הוא עבודה ידנית שמישהו עשה בשקט, והוא גם רשימת הבאגים בפועל.
הבדיקה שמכריעה
לא ספירת מספר התנועות בשתי המערכות.יישוב סכומים על דוח שהעסק מכיר, בשני הצדדים, על אותה נקודת זמן מוגדרת.
הסיבה שספירת תנועות לא מספיקה היא שהיא עשויה להיראות תקינה גם כשהשדה פורש לא נכון: מטבע, סימן פלוס/מינוס או עיגול. מספר תנועות זהה עם סכום שונה הוא בדיוק הכשל שמבקשים לגלות, וזה גם הכשל שהעלות לתקן אותו נמוכה כשהוא מתגלה מוקדם.
עוד שאלה שחייבת לקבל תשובה כתובה ומוסדרת: מי מודיע למישהו שהיישוב לא מסתדר, ובתוך כמה זמן מרגע שהבעיה מתרחשת. יישוב שנבדק פעם בחודש על ידי מי שמתפנה לכך אינו נחשב בקרה. אותו היגיון של תור שנתקע בשקט מתואר גם בחיבור חנות ל-ERP.
הקשר הישראלי
שני גורמים מעצבים כאן את התכנון, ושניהם פרקטיים מאוד.
הנפקת חשבונית מקבלת מצב מול רשות המס. כלומר תהליך ההנפקה עשוי להיות איטי, להיכשל או להידחות, ולכן אי אפשר לראות בו פעולה מקומית מיידית. הוא צריך להיות מטופל כמו כל תנועה כספית: תור מסודר, מזהה, וניסיון חוזר. בצד הקולט: עיבוד חשבוניות, ניהול רכש.
הנהלת החשבונות היא צד שלישי שמחייב הסכמה. הקבצים עוברים בפורמטים מקובלים בשוק המקומי, והגורם שמאשר את הספרים הוא זה שקובע מהי רשומה תקינה. חיבור שנבנה בלי לשבת איתו מראש יידרש להיבנות מחדש פעם נוספת.
איך אני עובד על זה
עיסוק בתחום מאז 2004, עבודה על מערכות AI מאז 2023, פרויקטים ללקוחות בארבע עשרה מדינות, כולל מערכות שבהן מבקר או רגולטור הוא חלק מהדרישה. אני ארכיטקט עצמאי, ולכן «החיבור הקיים תקין, מה שחסר הוא יישוב אוטומטי והתראה» היא מסקנה אפשרית של סקירה, ולא פעם אחת היא גם המסקנה הנכונה.
מה סקירה מייצרת בפועל: בדיקת קיום המזהה הייחודי ומנגנון ההתעלמות מחזרה, בדיקה מה נשמר מההודעה המקורית, שלוש התשובות לגבי ביטול וזיכוי, דוחות היישוב שישמשו קריטריון לקבלה, ותשובה כתובה לשאלה מי מקבל התרעה כשיישוב לא מסתדר.
SLAtech LTD