מה באמת יש בקובץ הממשק החודשי מנוכחות לשכר, למה מבנה הקובץ שונה אצל כל ספק, אילו תאריכים שולטים בו ואילו שגיאות חוזרות שוב ושוב בכל סגירת חודש.
עיקרי הדברים
- הקובץ עונה על שאלה אחת בכל שורה: איזה עובד, איזה רכיב, כמה. תעריפים, מס וחישוב נשארים בצד השכר.
- המבנים הם לפי תוכנת השכר. ספקית שעוני נוכחות מפרסמת שהקובץ שלה נקרא QDIV למיכפל, TAMAL.DAT לשקלולית-טמל ו-SALxxxxx.MM לטריו-עוקץ - שמות שונים כי אלה פורמטים שונים.
- כמעט אף אחד מהמבנים האלה אינו מפורסם. היכן שקובץ נכנס כן מתועד, הוא מתועד על ידי המוצר המקבל: מאגר הידע של ריווחית מתאר קליטת קובץ שעון בשם KLT.TXT הבנוי לפי מבנה אסקי, דרך נתיב תפריט מסוים.
- הממשק נשלט על ידי לוח שנה לא פחות מאשר על ידי פורמט. גבולות תקופה, חלון התיקונים ומועד האישור מפילים יותר הרצות מאשר טיפוסי שדות.
- לשם ההשוואה, לקובץ דיווח המעסיקים לחיסכון הפנסיוני יש מבנה XML שרשות שוק ההון מפרסמת. ממשק שרגולטור מגדיר מתועד; ממשק שספק מגדיר בדרך כלל לא.
קובץ ממשק מנוכחות לשכר הוא רשימה לתקופה שאומרת, לכל עובד, כמה לשלם מכל רכיב שכר. הוא נושא כמויות וקודים, לא כסף ולא חישוב. המבנה שלו מוגדר על ידי תוכנת השכר המקבלת, שונה בין ספקים, וכמעט לעולם אינו מפורסם - ובדיוק לכן אותה חופן שגיאות חוזר כל חודש.
מה יש בקובץ ממשק נוכחות-שכר?
שורה אחת לכל עובד לכל רכיב לכל תקופה, בתכנון הפשוט והנפוץ ביותר. שום דבר בו לא אמור לדרוש מהשולח לדעת משהו על כסף.
האילוץ הזה הוא הכלל השימושי ביותר כשמתכננים או בודקים קובץ כזה. אם הקובץ מכיל סכום בשקלים, מישהו חישב שכר מחוץ למערכת השכר, ויש עכשיו שתי מערכות שיכולות להפיק תשובה שונה לאותו אדם. כמויות וקודים בלבד, ושתוכנת השכר תחיל את התעריף שהיא מחזיקה.
השורה מורכבת לכן מחמש משפחות שדות, וכל מבנה אמיתי הוא סידור כלשהו שלהן.
חמש משפחות השדות
- זהות. מספר העובד כפי שהוא קיים בתוכנת השכר, וישות מעסיקה או מספר חברה. מספר שעון או תג שייך לצד השולח בלבד, ות"ז צריכה לנסוע רק אם התהליך המקבל באמת דורש אותה - הקובץ הזה הוא מידע אישי ורשימת השדות היא חלק ממה שהופך אותו לרגיש יותר או פחות.
- תקופה. החודש והשנה שאליהם שייכות הכמויות, ולעיתים תאריך בתוכם. קובץ בלי תקופה מפורשת הוא קובץ שאפשר לטעון לחודש הלא נכון.
- רכיב. קוד רכיב השכר, שהוא אוצר המילים המוסכם בין שתי המערכות: שעות בסיס, מדרגות שעות נוספות, חופשה, מחלה, מילואים, חוסר, נסיעות וכל מה שהארגון משלם.
- כמות. שעות, ימים או יחידות. היחידה היא תכונה של הרכיב, וצריך להסכים עליה לכל רכיב ולא להניח אותה על פני כל הקובץ.
- בקרה. מספר רשומות, סיכום לכל רכיב, ומזהה הרצה או גרסה. שדות הבקרה הם מה שמאפשר לצד המקבל להוכיח שלא אבד כלום, והם המשפחה שהכי הרבה פעמים נשמטת.
שתי תוספות מופיעות כשהארגון צריך אותן: קוד מרכז עלות או פרויקט כשהשעות משויכות מעבר לשכר, ודגל תיקון שמבדיל בין כמות חדשה ובין החלפה של כמות קודמת.
למה הקובץ של כל ספק שונה?
כי הפורמט שייך לתוכנת השכר המקבלת ולא לתקן. אין תקן ישראלי חוצה-ספקים לקליטת נוכחות בשכר, והראיה גלויה בשמות הקבצים עצמם.
| תוכנת שכר מקבלת | שם קובץ הממשק שמפרסמת ספקית שעונים |
|---|---|
| מיכפל | QDIV |
| שקלולית - טמל | TAMAL.DAT |
| טריו - עוקץ | SALxxxxx.MM |
| חילן | מופיעה, בלי שם קובץ מפורסם |
אותו עמוד של אותה ספקית מציין גם מה חייב להיות מוגדר פעם אחת לפני שאחד מהם יעבוד: מספר החברה בתוכנת השכר, רכיבי השכר (100%, 125%, 150%, 200% יחד עם חופש, מחלה, מילואים, חוסר, נסיעות ועוד), ולכל עובד את מספר העובד כפי שהוא קיים בשכר. שלושת הפריטים האלה משותפים לכל הפורמטים אף שהפורמטים שונים, וזה מלמד איפה העבודה האמיתית.
תיעוד כן קיים במקומות מסוימים, בדרך כלל מטעם המוצר המקבל ולא מטעם השולח. מאגר הידע של ריווחית, למשל, מתאר קליטת נתוני נוכחות ממערכת חיצונית דרך קובץ בשם KLT.TXT הבנוי לפי מבנה אסקי שהוא מפרט, שמגיעים אליו דרך נתיב תפריט מסוים במוצר. משטח ה-API שלה מכוסה בנפרד במדריך האינטגרציה ל-API של ריווחית. לצד של מיכפל באותה שיחה ראו את ממשק הנוכחות והחשבונאות של מיכפל.
המחזור החודשי בתאריכים, לא בשלבים
| נקודה במחזור | מה חייב להיות נכון | מה משתבש אם לא |
|---|---|---|
| גבול התקופה | כל משמרת משויכת לתקופה אחת בדיוק | משמרות לילה ביום האחרון נוחתות בחודש הלא נכון, לתמיד |
| סגירת חלון התיקונים | עובדים כבר לא יכולים לערוך את הרשומות שלהם | עריכות מאוחרות משנות נתונים אחרי שמנהל אישר |
| אישור | מנהל בשם אישר כל מחלקה | מיוצאות שעות שאף אחד לא עומד מאחוריהן |
| בדיקות שלפני ייצוא | רשימות העובדים מתאימות, הסיכומים בטווח | הקובץ נטען חלק והוא שגוי |
| הפקת הקובץ | קובץ אחד בדיוק לתקופה ולישות | מופק קובץ שני "ליתר ביטחון" ונטען פעמיים |
| טעינה בשכר | הצד המקבל מאשר את מספר הרשומות | אף אחד לא יודע אם כל השורות הגיעו |
השורה שמפתיעה אנשים היא האחרונה. קובץ שנטען בלי הודעת שגיאה לא בהכרח נטען במלואו, ורק סיכום בקרה יראה את ההבדל.
השגיאות שחוזרות כל חודש
| שגיאה | שורש הבעיה | הבדיקה שתופסת אותה |
|---|---|---|
| עובד חסר בהרצה | אין מספר עובד בשכר על רשומת הנוכחות | התאמת שתי רשימות העובדים לפני ההפקה |
| שעות בחודש הלא נכון | משמרת שחוצה חצות בגבול התקופה | שיוך משמרות לפי שעת התחלה, ובדיקת הגבול כל חודש |
| שעות נוספות בתעריף בסיס | מיפוי רכיבים בלי מדרגה | השוואת סיכומי רכיב חודש מול חודש |
| נסיעות או תוספת משולמות פעמיים | שתי המערכות חושבות שהן הבעלים של הרכיב | בעלים כתוב אחד לכל רכיב |
| נטען פעמיים | הפקה חוזרת אחרי טעינה חלקית | מזהה הרצה ייחודי, וסירוב לכפילות |
| קובץ שנקטע בשקט | כשל קידוד או העברה | מספר רשומות ברשומת הבקרה, שנבדק בטעינה |
| היעדרות שנזקפת ליתרה שגויה | שני קודי היעדרות בשמות דומים | סקירת רשימת הקודים בכל פעם שנוסף קוד |
| מספרים משתבשים אחרי שדרוג אצל הספק | נוספה עמודה באמצע המבנה | חותמת גרסה, וכלל שעמודות חדשות נוספות בסוף |
שמונה פריטים, ואף אחד מהם אינו אקזוטי. הם חוזרים כי מתייחסים לממשק כאל תוצר טכני בעוד שרובם למעשה כשלים בהסכמה בין שני צוותים. הסקירה התפעולית שתופסת את רובם עוד לפני שהקובץ קיים מתוארת באוטומציה של סקירת הנוכחות החודשית.
איך הופכים את הקובץ לניתן להוכחה
ניתן להוכחה פירושו שכעבור שנה אפשר לענות על "מאיפה הגיע המספר הזה" בלי לבקש ממישהו לזכור. ארבע פרקטיקות מביאות לשם:
- שמרו כל קובץ ששלחתם, בדיוק כפי שנשלח, עם התקופה ומזהה ההרצה שלו. אחסון זול משחזור.
- תעדו את תוצאת הטעינה בצד המקבל, כולל מספר הרשומות שהתקבלו, כדי שאי-התאמה תהיה ניתנת לגילוי ולא תיאורטית.
- נהלו גרסאות למבנה, והטביעו את הגרסה בשם הקובץ או ברשומת כותרת. מבנים משתנים; על מבנה בלי תאריך אי אפשר לנהל דיון.
- התאימו סכום אחד אוטומטית בכל תקופה בין מערכת הנוכחות לשכר, ודווחו את התוצאה בין אם התאימה ובין אם לא. התאמה שמדברת רק כשמשהו לא בסדר אינה נבדלת מהתאמה שהפסיקה לרוץ.
כדאי לסיים בניגוד: דיווח מעסיקים על הפקדות לחיסכון הפנסיוני בישראל רץ על המבנה האחיד של רשות שוק ההון, פורמט מבוסס XML שמוגדר בחוזרים מפורסמים, וכל אחד יכול לקרוא את ההגדרה לפני שהוא בונה. קובץ הנוכחות לשכר הוא המקרה ההפוך - מוגדר לכל ספק, כמעט לא מפורסם, ומסוכם בשיחה. זו לא סיבה להימנע ממנו. זו סיבה לכתוב את ההסכמה.
מקורות
שאלות נפוצות
האם יש פורמט תקני לקובצי נוכחות-שכר בישראל?
לא אותר תקן חוצה-ספקים. תוכנת השכר המקבלת מגדירה את המבנה, ולכן ספקית שעונים מפרסמת שם קובץ שונה לכל מערכת שכר. קבלו את המבנה מספק השכר או מספק הנוכחות שכבר מפיק אותו.
האם הקובץ צריך להכיל סכומים בשקלים?
ככלל, לא. שליחת כמויות וקודי רכיב משאירה את החישוב במקום אחד. סכום בקובץ פירושו שהשכר חושב מחוץ למערכת השכר, וזה יוצר שתי מערכות שיכולות להפיק תשובות שונות לאותו עובד.
איך מונעים טעינה כפולה של קובץ?
תנו לכל קובץ מופק מזהה הרצה ייחודי, תעדו בצד המקבל אילו מזהים כבר נטענו, וסרבו לחזרה. הפקה מחדש אחרי טעינה חלקית היא הטריגר הנפוץ, ולכן טעינה חלקית חייבת להיות מצב מפורש ולא שקט.
מה גורם לשעות לנחות בחודש הלא נכון?
משמרות שחוצות חצות בגבול התקופה. החליטו פעם אחת אם משמרת שייכת לתאריך ההתחלה או לתאריך הסיום, כתבו את הכלל, החילו אותו בייצוא, ובדקו את הגבול בכל תקופה במקום להניח שההתנהגות של החודש הקודם נשמרת.
להמשך קריאה
שירות רלוונטי
אינטגרציות
לגרום למערכות שאתם כבר משלמים עליהן לדבר זו עם זו.
על הכותב
יהונתן סעדיה
מפתח פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מפתח בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה רוצה לבנות או איזה תהליך להפוך לאוטומטי. אני חוזר תוך 24 שעות עסקים עם כמה שאלות ממוקדות, ואז עוברים על זה יחד בשיחת היכרות חינמית של 30 דקות, בלי התחייבות. בסוף יש לך היקף עבודה, לוח זמנים ומחיר קבוע - או תשובה כנה שלא שווה לבנות את זה.
