ה-API של הלמ"ס למדדי מחירים, למה מספר מדד שנשמר מפסיק להתאים אחרי שנה או שתיים, ואיזו סכימה מאפשרת לחשב הצמדה מחדש בלי לגעת בחיובים שכבר יצאו.
עיקרי הדברים
- קוד מדד המחירים לצרכן הכללי בממשק הוא 120010, והוא מופיע בקטלוג יחד עם מדדי תשומה ומדדי יצרן נוספים.
- תשובת המדד כוללת את הערך, את הבסיס שאליו הוא מתייחס ואת שיעור השינוי - שלושה נתונים, לא אחד.
- הבסיס מתחלף מדי כמה שנים, ולכן ערך שנשמר בלי הבסיס שלו מאבד משמעות. הממשק מחזיר מקדמי קשר שמגשרים בין בסיסים.
- שמירת מדד הבסיס על החוזה, וחיוב בלתי משתנה לכל תקופה, הם מה שמאפשר חישוב מחדש בלי שכתוב היסטוריה.
- הממשק מכיל שתי מלכודות מדידות: חלק מנקודות הקצה מחזירות XML בלבד, ותאריכי המחשבון הם בתבנית חודש-יום-שנה.
הלשכה המרכזית לסטטיסטיקה מפרסמת את מדדי המחירים בממשק ציבורי שמחזיר קטלוג מדדים, ערכי מדד חודשיים לפי קוד ומחשבון הצמדה. בעיית ההנדסה אינה משיכת המספר אלא שמירתו לאורך זמן: חיוב שכבר יצא חייב להישאר כפי שהיה, גם אחרי שהמדד עודכן או שהבסיס הוחלף.
מה הממשק של הלמ"ס מחזיר
| הפעולה | מה מקבלים | הערה |
|---|---|---|
| קטלוג נושאי המדדים | רשימת פרקים עם קוד ראשי לכל אחד | מדד המחירים לצרכן מופיע עם קוד ראשי 120010 |
| נתוני מדד לפי קוד | ערך המדד לכל חודש, שיעור שינוי חודשי ושנתי, תיאור הבסיס | פרמטרי startPeriod ו-endPeriod בתבנית חודש-שנה, ו-last למספר ערכים אחרונים |
| נתוני מדד עם מקדם | אותם נתונים בתוספת מקדם קשר | פרמטר coef |
| מחשבון הצמדה | סכום מוצמד בין שני תאריכים, עם מדד המוצא ומדד היעד | תאריכים בתבנית חודש-יום-שנה |
| מדדים עיקריים לפי בסיסים | ערכי המדד במקביל בכמה בסיסים | מוחזר כ-XML |
הטבלה הזו היא כל מה שצריך כדי להבין למה זה נראה פשוט ומסתבך. שלוש הפעולות הראשונות מספיקות לחישוב, והרביעית מפתה לוותר על חישוב עצמי - עד שמישהו שואל למה החיוב של אפריל יצא כפי שיצא.
למה מספר מדד שנשמר מפסיק להתאים אחרי שנה?
כי הערך הנקוב תלוי בבסיס. הלמ"ס מפרסמת את המדד ביחס לבסיס - למשל "ממוצע 2024" - ומחליפה בסיס מעת לעת. באותו רגע אותה נקודת זמן בהיסטוריה מקבלת מספר אחר, בלי שהמציאות הכלכלית השתנתה.
הממשק פותר את זה בעזרת מקדם קשר. בבדיקה שהרצנו הוחזר עבור יולי 2026 ערך של 105.1 בבסיס "ממוצע 2024", ובמקביל אותו חודש הוצג בבסיסים ישנים יותר עם מקדמי קשר שמגשרים ביניהם. אותו מנגנון מופיע גם בתשובת המחשבון, שמחזיר מקדם לצד מדד המוצא ומדד היעד.
לכן שדה בודד בשם base_index הוא באג עתידי. מה שנשמר חייב להיות שלישייה:
- ערך המדד.
- תיאור הבסיס שאליו הערך מתייחס.
- החודש שאליו הערך שייך.
הסכימה שמאפשרת חישוב מחדש בלי לשכתב
הכלל היחיד שחשוב: החיוב הוא עובדה, ההצמדה היא חישוב. חיוב שיצא נשמר עם כל מה ששימש לחישובו, ולעולם אינו מתעדכן כשמגיע מדד חדש.
- על החוזה שומרים את מדד הבסיס - ערך, בסיס וחודש - כפי שנקבע בתחילת ההתקשרות.
- בטבלת מדדים שומרים כל פרסום כשורה: קוד מדד, חודש, ערך, תיאור בסיס, ותאריך שבו נמשך.
- בכל תקופת חיוב נוצרת שורה שמצלמת את מדד התקופה, את מדד הבסיס, את המקדם שהתקבל ואת התוצאה.
- תיקון אינו עדכון של שורה קיימת, אלא שורת תיקון חדשה שמפנה לשורה המקורית ומסבירה את ההפרש.
- חישוב מחדש מותר רק לתקופות שטרם נסגרו, ותמיד מייצר גרסה חדשה במקום לדרוס.
הבדל הגישה הזה הוא ההבדל בין מערכת שאפשר לבקר לבין מערכת שבה השאלה "כמה חייבנו במרץ ולמה" נענית בניחוש. אותו דפוס של שמירת נתון על השורה במקום חישוב חוזר מופיע גם בבקרת תזכורות לחידוש חוזה.
מה צריך להיות בעקבות הביקורת של חיוב מוצמד?
השאלה שנשאלת בפועל אינה "מה המדד", אלא "למה השורה הזו יצאה בסכום הזה". תשובה מלאה דורשת חמישה נתונים על השורה עצמה, ולא בקובץ לוג נפרד:
- הסכום הבסיסי לפני הצמדה.
- מדד הבסיס עם הבסיס והחודש שלו.
- מדד התקופה עם הבסיס והחודש שלו.
- המקדם או היחס ששימש בפועל.
- מי הריץ את החישוב ומתי.
שווה להיות מפורשים גם לגבי מה שאינו נכנס לשורה. לא שומרים שם של מדד כטקסט חופשי, כי שמות משתנים ואילו קודים יציבים. לא שומרים אחוז שינוי מחושב בלבד, כי ממנו אי אפשר לחזור לערכים ששימשו. ולא שומרים "המדד האחרון" כהפניה חיה לטבלה, כי היא תשתנה בחודש הבא ותשנה איתה גם את ההסבר לחיוב של השנה שעברה.
כשחמשת אלה יושבים על השורה, אפשר לשחזר כל חיוב בלי גישה לממשק החיצוני ובלי תלות בכך שהמדד לא השתנה מאז. תזרים הכסף שנגזר מזה מתחבר לתהליך הגבייה שמתואר באוטומציה של חשבוניות ותזכורות תשלום.
מלכודות מדידות בממשק עצמו
- שדה User-Agent. הלמ"ס מציינת בתיעוד שהשדה הזה הוא שדה חובה בפנייה. בבדיקה שהרצנו, פנייה עם
Mozilla/5.0קיבלה איפוס חיבור, ואילוcurl/8.6.0,python-requests/2.32ובקשה ללא הכותרת החזירו 200. - XML בלבד. בתיעוד מצוין שחלק מנקודות הקצה של המדדים העיקריים תומכות כרגע ב-XML בלבד. בבדיקה שהרצנו, פנייה עם
format=jsonלאחת מהן החזירה בכל זאת XML. - תבנית תאריך במחשבון. התיעוד מציין חודש-יום-שנה או שנה-חודש-יום. בבדיקה שהרצנו
08-15-2020עבד, ואילו15-08-2020החזיר שגיאה. - מדד ארעי. הלמ"ס מציינת שבמדד מחירי הדירות שלושת הערכים האחרונים ארעיים ועשויים להתעדכן, ושאין זה מומלץ להצמיד לתקופה שבה המדד עדיין ארעי.
- עיכוב פרסום. ערך של חודש מסוים אינו קיים באותו חודש. מערכת שמחשבת חיוב בתחילת החודש חייבת לדעת מראש איזה מדד יהיה זמין באותו רגע, ולא לגלות זאת בזמן ריצה.
- התאמה לפי שם מדד. אותו מדד מופיע בניסוחים שונים בין מקורות, ולכן הפנייה נעשית לפי קוד. שם מדד ששמור אצלכם כטקסט הוא מקור קבוע לטעות שקטה.
מה כדאי שיהיה מוכן לפני הפיתוח
- רשימת החוזים שמוצמדים בפועל, עם מדד הבסיס של כל אחד כפי שהוא רשום בהסכם.
- החלטה איזה מדד רלוונטי לכל סוג חוזה, לפי קוד ולא לפי שם.
- מקום לשמור פרסום מדד כשורה היסטורית, ולא כערך יחיד שנדרס.
- הגדרה מה קורה כשהמדד שנדרש עדיין לא פורסם ביום ההרצה.
- מי מאשר חישוב מחדש של תקופה סגורה, ואיפה זה נרשם.
מקורות
שאלות נפוצות
מה קוד מדד המחירים לצרכן בממשק?
בקטלוג הנושאים של הממשק מופיע פרק מדד המחירים לצרכן עם קוד ראשי 120010, וזה הקוד שמשמש בפנייה לנתוני המדד. בקטלוג מופיעים גם קודים ראשיים נוספים - למשל מדד תשומה בבנייה למגורים ומדדי מחירי יצרן - כל אחד עם קוד משלו.
למה שני מקורות מציגים ערך שונה לאותו חודש?
כמעט תמיד בגלל בסיס שונה. ערך מדד מקבל משמעות רק ביחס לבסיס שאליו הוא מתייחס, למשל ממוצע שנה מסוימת. הממשק מחזיר את תיאור הבסיס לצד הערך, וגם מקדמי קשר שמאפשרים לעבור בין בסיסים, ולכן שמירת הערך בלי הבסיס היא מקור קבוע לפערים.
האם כדאי להשתמש במחשבון של הלמ"ס או לחשב לבד?
המחשבון נוח לבדיקה חד-פעמית ומחזיר גם את מדד המוצא, מדד היעד והמקדם. לחיוב חוזר עדיף חישוב מקומי מעל טבלת מדדים שנשמרה אצלכם, כדי שהתוצאה לא תלויה בזמינות שירות חיצוני ברגע ההרצה ותהיה ניתנת לשחזור מדויק בהמשך.
מה עושים כשהמדד של החודש עדיין לא פורסם?
מחליטים מראש ומתעדים את ההחלטה במערכת: לדחות את החיוב, להריץ אותו לפי המדד הזמין האחרון ולסמן את השורה, או להריץ ולתקן בשורת תיקון נפרדת. מה שאסור הוא לשנות בשקט חיוב קיים אחרי שהמדד יתפרסם, כי זה מוחק את העקבות.
להמשך קריאה
שירות רלוונטי
אינטגרציות
לגרום למערכות שאתם כבר משלמים עליהן לדבר זו עם זו.
על הכותב
יהונתן סעדיה
מפתח פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מפתח בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה רוצה לבנות או איזה תהליך להפוך לאוטומטי. אני חוזר תוך 24 שעות עסקים עם כמה שאלות ממוקדות, ואז עוברים על זה יחד בשיחת היכרות חינמית של 30 דקות, בלי התחייבות. בסוף יש לך היקף עבודה, לוח זמנים ומחיר קבוע - או תשובה כנה שלא שווה לבנות את זה.
