לנטיב
שַׁבֵּץ-טִיב 2019
עמוד הבית > מדריך למשתמש > אילוצים

 אילוצים

האיכות של מערכת שעות שנבנית באופן אוטומטי נמדדת על-ידי כמה היא נוחה ומתאימה לאנשים המעורבים, ובאיזו מידת יעילות היא מנצלת את המשאבים העומדים לרשותם. הפרמטרים המגדירים את הקריטריונים הללו נקראים אילוצים.

ישנם סוגים רבים של אילוצים אשר התוכנה תומכת בהם, ולמעשה, אנו כבר נתקלנו בחלק מהם בפרקים הקודמים. זאת מאחר וחלק מהאילוצים הם בסיסיים ונלקחים בחשבון גם במצב האינטראקטיבי של בניית המערכת, לעומת אחרים אשר נועדו לייעול המערכת ובהם התוכנה מתחשבת רק בזמן הבנייה האוטומטית.

אך לפני שנכיר את הסוג החדש של האילוצים, הבה נעבור על אלו שכבר למדנו עליהם בפרקים הקודמים על מנת שתהיה לנו רשימה אחת חדה וברורה של כל האילוצים שנלקחים בחשבון בזמן האוטומציה.

אילוצים בסיסיים

התוכנה מתחשבת בכל האילוצים שנזכיר בפרק זה בעת הבנייה האוטומטית, אבל באלה שעליהם נעבור בסעיף זה כבר נתקלנו בעבר, וכפי שראינו הם מוזנים בלשונית "מערכת שעות" (בתחתית סביבת העבודה) ולא בלשונית "אילוצים" הייחודית לסוג השני של האילוצים. הבה נראה.

הערה: כל האילוצים הבסיסיים בסעיף זה נחשבים לאילוצי חובה על-ידי התוכנה בעת הבנייה האוטומטית. התוכנה לעולם לא תציע מערכת שעות שבה אחד האילוצים הללו מופר.

משך של פעילות

כפי שזכור לכם, לכל פעילות ניתן להגדיר את השדה משך ברשימת הפעילויות:

Constraint activity length shabetz8.png

המשך הוא מספר השיעורים העוקבים שאותם הפעילות צריכה "לתפוס" בכל פעם שהיא משובצת. במצב האינטראקטיבי, כאשר אתם גוררים פעילות עם משך של "2", למשל, לתוך מערכת השעות, אתם בעצם גוררים פעילות של שתי משבצות. במצב האוטומטי התוכנה עושה בדיוק את אותו הדבר - היא תמיד משבצת פעילות כזאת על פני שני שיעורים עוקבים.

Constraint length shabetz8.png

מספר משאבים בפעילות

והנה תזכורת חשובה נוספת: כל פעילות יכולה לכלול מספר משאבים מאותו סוג (על-ידי סימון "וי" ליד כל המשאבים הללו כאשר אתם ממלאים את המאפיינים של הפעילות):

File:Constraint activity 2 teachers shabetz8.png

לדוגמה, פעילות אחת יכולה לערב 2 מורים; או 3 כיתות; או 2 מורים וגם 3 כיתות. פעילות כזאת תופיע במערכות של כל המשאבים המעורבים ותשובץ אך ורק בשיעור שבו הם כולם פנויים.

Constraint multiple resources shabetz8.png

פעילויות בו זמניות

מקבצים מאפשרים לצרף יחדיו מספר פעילויות בודדות אשר צריכות להיות משובצות באותו הזמן. את המקבצים ניתן ליצור ברשימת הפעילויות והם נבדלים משאר הפעילויות בצבע שלהם ובדמיון שלהם לתיקייה המכילה מספר שורות:

Constraint set simultaneously shabetz8.png

כל אחת מהפעילויות בתוך מקבץ יכולה לכלול משאבים שונים כגון קבוצות ומורים, אך כאשר הם מאוחדים במקבץ הם בעצם הופכים להיות יחידה אחת בלתי ניתנת להפרדה והם תמיד משובצים בו זמנית על-ידי המנוע האוטומטי.

Constraint simultaneously shabetz8.png

מספר חדרים אפשריים לפעילות

באופן טבעי, כאשר פעילות יכולה להיות משובצת באחד מתוך מספר חדרים אפשריים, הדבר נותן יותר גמישות לתוכנה בזמן הבנייה האוטומטית. כפי שהוסבר קודם לכן, ניתן לבחור את החדרים הפוטנציאליים שבהם פעילות יכולה להיות משובצת בתוך המאפיין "חדר" של הפעילות על-ידי שינוי הכתובת שבתחתית רשימת החדרים מ-"כל המשאבים המסומנים" ל-"מבחר מהמשאבים המסומנים":

Constraint activity room selection shabetz8.png

כאשר לפעילות מוגדרים כמה חדרים אפשריים כמו לעיל, התוכנה תבחר אחד מהם באופן אוטומטי בזמן בניית המערכת. שימו לב שמשבצות שונות של אותה פעילות יכולות להיות משובצות בחדרים שונים.

Constraint room selection shabetz8.png

מרחקים בין חדרים ובניינים

כאשר הזמן הדרוש בשביל להגיע מחדר (או בניין) אחד לאחר הינו משמעותי, התוכנה חייבת להשאיר מרווח של שיעור אחד (או יותר; תלוי במרחק) בין שתי פעילויות עוקבות השייכות לאותו אדם (מורה או תלמיד) או קבוצה, ואשר משובצות בשני החדרים/הבניינים הללו. כפי שמוסבר בפרק "המשאבים", את המרחקים בין חדרים ובניינים ניתן להגדיר בחלון המאפיינים:

Constraint building properties distances shabetz8.png

לאחר שהמרחקים הוגדרו בצורה כזו, התוכנה תמיד תבדוק את זמני ההתחלה והסיום של השיעורים על מנת לוודא שלא שובצו שתי פעילויות אחת אחרי השניה כך שלא נותר מספיק זמן בשביל להגיע מהחדר של הפעילות הראשונה לחדר של הפעילות השניה, בהינתן המרווח שבין זמן הסיום של השיעור שבו משובצת ההפעילות הראשונה לזמן ההתחלה של השיעור שבו משובצת הפעילות השניה.

Constraint rooom distances shabetz8.png

כמות של ציוד במלאי

כפי שזכור לכם, המספר הכולל של פריטים מסוג ציוד מסויים המצויים במלאי מוגדר במאפייני הציוד:

Constraint resource equipment quantity shabetz8.png

כמות זו יוצרת מגבלה על מספר הפעילויות אשר משתמשות בציוד זה היכולות להיות משובצות באותו שיעור. לדוגמה, נתבונן בפעילות הדורשת מקרן אחד:

Constraint activity equipment shabetz8.png

במצב כזה, אם קיימים רק 2 מקרנים במלאי, התוכנה לעולם לא תוכל לשבץ באותו שיעור 3 פעילויות הדורשות מקרן.

Constraint equipment quantity shabetz8.png

שיבוץ כפול

מיותר לציין שאי אפשר לשבץ מורים, תלמידים וקבוצות בשתי פעילויות שונות באותו הזמן (אלא אם כן הפעילויות שייכות לאותו מקבץ). אמנם הדבר הזה יכול להישמע מובן מאליו, אך אנו מזכירים זאת מאחר ואילוץ זה הוא אחד ההיבטים הכי מגבילים של תהליך בניית המערכת.

Constraint double booking shabetz8.png

אי זמינות של משאבים

כפי שהוסבר בפרק העוסק בשיבוץ האינטראקטיבי, הימים והשיעורים שבהם משאבים (או פעילויות) לא זמינים לשיבוץ ניתנים לחסימה על-ידי סימון המשבצות הרלוונטיות ובחירה באפשרות "עריכה", "חסימה" בתפריט הראשי. משבצת חסומה של משאב מונעת מהתוכנה שיבוץ כל פעילות של אותו משאב במשבצת זו.

Constraint unavailability shabetz8.png

משבצות מקובעות

פעילות ששובצה במצב האינטראקטיבי יכולה להיות מקובעת (על-ידי בחירה בתפריט "עריכה", "קיבוע") ואז התוכנה לא "תיגע" בה בעת הבנייה האוטומטית. דבר זה שימושי במיוחד כאשר אתם יודעים שפעילות מסויימת חייבת להתרחש בזמן ושיעור קבועים מראש, או שאתם יודעים שזהו הזמן המיטבי לשיבוץ פעילות זו.

Constraint fixated cells shabetz8.png

אילוצים לייעול המערכת

עתה, משקיבלנו תזכורת אודות האילוצים הבסיסיים של התוכנה, אנו יכולים להתוודע לאילוצים אשר משמשים לייעול (אופטימיזציה) של המערכת. כל סוג של אילוץ כזה אחראי על היבט אחר של המערכת. הבה נעבור על הסוגים השונים ונבין מה המשמעות של כל אחד מהם.

שיעורים ביום

האילוץ שיעורים ביום מסכם את מספר המשבצות המשובצות ביום אחד במערכת השעות של משאב:

Constraint cells per day shabetz8.png

ישנם שני שימושים שכיחים לאילוץ זה. האחד, הוא מאפשר לכם לפזר את הפעילויות של משאב בצורה שווה על הפני השבוע. לשם המחשה, נניח שלמורה יש 10 פעילויות מתוכננות; על-ידי הגבלת כמות השיעורים ביום למורה זה ל-"2", למשל, אפשר להכריח את התוכנה לשבץ את הפעילויות של המורה על פני 5 ימים, מכיוון שבאף יום לא יתאפשר לתוכנה לשבץ יותר מ-2 פעילויות.

השימוש השני קשור למקצועות. הוא מאפשר לכם לוודא שאף מקצוע לא משובץ יותר מדי פעמים באותו יום במערכת של קבוצה. למשל, בהנחה שהמקצוע "חינוך גופני" צריך להיות משובץ 3 פעמים בשבוע, אנו לא רוצים שהוא יהיה משובץ יותר מפעם אחת ביום. לשם כך אנו נגדיר כי מספר השיעורים המקסימלי ביום של המקצוע "חינוך גופני" יהיה 1 בלבד.

חלונות

חלון הוא משבצת ריקה באמצע היום, שלפניה יש פעילות משובצת כלשהי וגם אחריה יש פעילות משובצת כלשהי:

Constraint gaps shabetz8.png

כמות החלונות של משאב ביום בודד מסוכמת על-ידי האילוץ "חלונות ביום" ואילו הכמות הכוללת של חלונות במהלך השבוע מסוכמת על-ידי האילוץ "חלונות בשבוע". קיים אילוץ נוסף הקשור לחלונות אשר נקרא "גודל חלון" אשר מסכם את מספר המשבצות הריקות העוקבות המהוות חלון, כך שאפשר גם להגביל את המספר הזה.

השימוש השכיח ביותר באילוץ החלונות נועד להגביל זמן פנוי בין פעילויות במערכות של מורים, קבוצות ותלמידים. לדוגמה, אם מורה משובץ בשיעור הראשון ואחר כך רק בשיעור השביעי, אזי יש לו 5 חלונות (5 שיעורים ריקים) במערכת. במקרים רבים, הדבר עלול להיות לא נוח עבור המורה. במקרים כאלו, הגבלת הכמות המקסימלית של חלונות ביום ל-2, למשל, תעודד את התוכנה לשבץ את הפעילויות של המורה עם מרווחים של לא יותר מ-2 שיעורים פנויים.

דלתות

דלת היא משבצת ריקה או רצף של כמה משבצות ריקות בתחילת היום. אין פעילויות משובצות לפני דלת, אך יש פעילויות אחריה. למשל, אם מורה לא מלמד שום דבר בשיעור הראשון, אך יש לו פעילות משובצת בשיעור השני, יש לו דלת ביום זה.

Constraint late starts shabetz8.png

בהקשר לדלתות קיימים בתוכנה שני סוגי אילוצים: "דלתות בשבוע" אשר מסכם את מספר הדלתות במערכת של משאב במהלך כל השבוע, ו-"גודל דלת" אשר מסכם את מספר המשבצות העוקבות (המהוות דלת) בתחילת היום. האילוץ הראשון מאפשר להגביל את מספר הפעמים שמשאב מתחיל את יום הלימודים שלו מאוחר (לדוגמה: לא יותר מ-3 דלתות בשבוע) והאילוץ השני מאפשר להגביל את המשך המקסימלי של דלת (כגון לא יותר מ-2 שיעורים ריקים בתחילת יום).

תחום שיעורים

אילוץ זה מאפשר לכם להגדיר את תחום השיעורים שבו משאב או פעילות צריכים להיות משובצים. לדוגמה, כדי להגדיר לתוכנה שהפעילויות של משאב מסויים צריכות להיות משובצות אך ורק בשיעורים 1-4 תוכלו להזין "1" בתור הערך המינימלי של אילוץ זה ו-"4" בתור הערך המקסימלי.

Constraint period range shabetz8.png

הערה: אם השיעורים בבית ספרכם מתחילים מ-"0" או שיש להם שמות שונים מ-"1", "2" וכו', בכל זאת עליכם להזין ערכים מספריים חיוביים בתור ערכי המינימום והמקסימום של אילוץ זה. זאת מכיוון, שכאשר אתם מקלידים מספר, התוכנה ממפה את המספר הזה למספר השיעור היחסי. לדוגמה, "1" ממופה לשיעור הראשון, "2" לשיעור השני וכך הלאה.

רצף משבצות

אילוץ זה מסכם את מספר השיעורים העוקבים במערכת של משאב שבהם משובצת פעילות כלשהי:

Constraint consecutive cells shabetz8.png

השימוש הנפוץ ביותר באילוץ זה הוא לשם הגבלת האורך המקסימלי של רצף של פעילויות במערכת של משאב כלשהו. לדוגמה, על-ידי הגדרת הערך המקסימלי של אילוץ זה בתור "3" עבור מורה מסויים, אתם בעצם מבקשים מהתוכנה שהמורה לא ישובץ ביותר מ-3 שיעורים עוקבים. במצב כזה, התוכנה תהיה חייבת להשאיר שיעור חופשי אחרי המשבצת השלישית ברצף.

הזנת האילוצים

על מנת שתוכלו להזין את האילוצים המשמשים לייעול המערכת, תחילה עליכם לעבור למצב האוטומטי של בניית המערכת, על-ידי לחיצה על הכפתור עם הכותרת "אוטומטי" בפינה השמאלית התחתונה של המסך:

Automatic button shabetz8.png

לאחר המעבר למצב האוטומטי, תראו לשונית בשם "אילוצים" בצד שמאל של סביבת העבודה (ליד הלשונית "חריגות"):

Constraints tab shabetz8.png

לחיצה על לשונית ה-"אילוצים" תציג את חלון הזנת האילוצים:

Constraints pane shabetz8.png

כיצד לבחור את סוג האילוץ?

לחלון האילוצים ישנו גם כן סרגל ניווט המופיע למעלה. השדה הראשון בסרגל זה משמש לבחירת סוג האילוץ ואילו שאר הכפתורים נועדו לבחירת סוג המשאבים שעבורם בכוונתכם להזין את ערכי האילוצים:

Constraints navigation pane shabetz8.png

לאחר בחירת סוג האילוץ תראו רשימה של כל המשאבים מהסוג שבחרתם עם ארבע עמודות נוספות בצד ימין של הרשימה: "מינ.", "מקס.", "רצוי" ו-"חריגה":

Constraints min max desr shabetz8.png

מהן העמודות "מינ.", "מקס." ו-"רצוי"?

כפי שראינו לעיל, אילוץ הוא בעיקרון נוסחה מתמטית אשר מסכמת דבר מה. זו הסיבה שאם נתבונן על המערכת של משאב כלשהו מנקודת המבט של אילוץ מסויים, נוסחה זו תמיד תניב מספר יחיד. למשל, אם אנו מסכמים את כמות החלונות בשבוע במערכת של מישהו, אנו נגיע למספר מסויים. כמובן שהמערכת של כל משאב תניב מספר שונה, ולכן כשנגדיר את האילוצים, נוכל להגדיר אילוצים שונים עבור משאבים שונים.

מאחר והנוסחה של כל אילוץ מניבה מספר, מה שנותר לנו לעשות הוא להציב מגבלה על המספר הזה. ברגע שנעשה כן, התוכנה תשאף לייצר מערכת שבה אין חריגות על המגבלות הללו. ניתן להגדיר 3 סוגים של מגבלות: מינימום, מקסימום, וערך רצוי (או כמה ערכים רצויים). ערכי המינימום והמקסימום הינם אילוצים "קשיחים" (הם בעלי עדיפות גבוהה) ואילו הערכים הרצויים הינם אילוצים "רכים" (בעלי עדיפות נמוכה יותר). אין חובה להזין את כל 3 הערכים אם אין צורך.

כדי להזין ערך, פשוט הקלידו אותו באחד השדות הנ"ל. כל השדות הם אופציונליים כך שניתן להזין רק את המינימום, או רק את המקסימום או מינימום וגם ערך רצוי וכו'.

Constraints enter value shabetz8.png

כיצד להזין מספר ערכים רצויים?

העמודה בעלת הכותרת "רצוי" מאפשרת לכם להזין ערך אילוץ רצוי אחד, או יותר. לערך הרצוי יש עדיפות נמוכה יותר מאשר לערכים המוגדרים על-ידי תחום המינימום/מקסימום. הווה אומר שבמידה והתוכנה מוצאת דרך לשפר את המערכת כדי להגיע לערך רצוי כלשהו, אך זאת על חשבון "שבירת" אילוץ מינימום או מקסימום של אילוץ אחר, התוכנה לא תבחר באופציה הזו. אולם, ערכים רצויים כן מאפשרים לכם לשפר את איכות המערכת במידה מסויימת מאחר ובעזרתם התוכנה יכולה לדעת בצורה מדוייקת יותר את דרישות ה-"אקסטרה" שלכם.

התוכנה תומכת לא רק בערך רצוי אחד, אלא אפילו בטווח שלם של ערכים. ניתן להזין טווח כזה בעזרת שימוש בפסיק או במקף. לדוגמה, נניח שיש לשבץ מקצוע מסויים בשיעורים 2-8 אך השיעורים המועדפים הם 3,4,5 ו-7. כדי להגדיר זאת לתוכנה, יש להשתמש באילוץ "תחום שיעורים" ולהגדיר את המינימום עבור מקצוע זה בתור "2", את המקסימום בתור "8" ובשדה "רצוי" יש להקליד את הערך: "3-5,7".

Constraints multiple desirable values shabetz8.png

כיצד לתעדף אילוצים קריטיים?

ישנם שלושה סוגי קדימויות לאילוצים: "קריטי", "דרוש" ו-"רצוי". כברירת מחדל, אילוץ קריטי הוא אך ורק אילוץ השיבוץ, כלומר התוכנה מחשיבה את מלאכת שיבוץ 100% מהפעילויות כמשימה קריטית. אילוצים דרושים הם אילוצי המינימום/מקסימום אשר אתם מגדירים ברשימת האילוצים ואילו אילוצים רצויים הם מה שמופיע בעמודה "רצוי" ברשימה זו.

אולם, קיימת דרך להפוך כל אילוץ "דרוש" לאילוץ "קריטי". דבר זה גורם לתוכנה להבין שאותו אילוץ הינו בקדימות גבוהה ביותר - כלומר בקדימות שאינה פחותה משיבוץ כל פעילות נותרת. במידה מסויימת, הדבר משפיע על תהליך קבלת ההחלטות של התוכנה בזמן הבנייה האוטומטית, כי מאותו רגע ואילך התוכנה אפילו לא תיקח בחשבון פתרונות מערכת שבהם מופר האילוץ שהוגדר כקריטי. על מנת להפוך אילוץ "דרוש" לאילוץ "קריטי", עליכם להוסיף את סימן הקריאה "!" לערך המופיע בעמודת המינימום או המקסימום.

Constraints critical priority shabetz8.png

מה משמעות העמודה "חריגה"?

אם תעברו ללשונית "אילוצים" כאשר אתם נמצאים במצב האוטומטי של בניית המערכת, תראו עמודה נוספת ליד עמודות המינימום, מקסימום והרצוי. עמודה זו נקראית "חריגה". בעמודה זו יופיע ערך עבור אילוצים אשר מופרים במערכת הנוכחית. במקרים אלו הערך בעמודה זו יהיה או חיובי או שלילי, וערך זה יציין את ההפרש בין הערך של האילוץ במערכת הנוכחית לבין הערך הדרוש (או הרצוי) הקרוב ביותר.

לדוגמה, נניח שהגדרנו את מקסימום החלונות בשבוע כ-"3" עבור מורה מסויים, אך במערכת הנוכחית יש לאותו מורה 5 חלונות. במקרה זה עמודת ה-"חריגה" תציג את הערך "2+", שמשמעותו שיש 2 חלונות מעבר למה שהוגדר כמותר. דוגמה נוספת - אם הכמות המינימלית של שיעורים ביום לקבוצה הוגדרה כ-"5" אך במערכת הנוכחית של אותה קבוצה יש כרגע רק משבצת אחת בכל יום מ-5 ימות השבוע, עמודת החריגה תציג את הערך המסוכם "20-" מאחר ובכל אחד מ-5 הימים חסרות כרגע 4 משבצות.

כאשר החריגה היא של המינימום או המקסימום, היא תוצג בצבע אדום. אם החריגה היא של הערך הרצוי, היא תוצג בצבע כתום:

Constraints violation column shabetz8.png

האם ניתן לשנות את האילוצים בשלב מאוחר יותר?

חשוב להדגיש כי גם אם המערכת כבר בנויה בצורה חלקית או מלאה, תמיד יש לכם את האפשרות לשנות את האילוצים הנוכחיים (או להגדיר אילוצים חדשים) ואז להפעיל את הבנייה האוטומטית מאותה נקודה. התוכנה יודעת לקחת את המערכת הנוכחית כנקודת התחלה ולבצע בה את השינויים הדרושים בצורה אוטומטית כדי שהיא תקיים את האילוצים ששיניתם או שהוספתם.

למעשה, ניתן להשתמש ביכולת זו כטכניקה כללית לבניית המערכת בצורה הדרגתית, כי אתם יכולים להפעיל את הבנייה האוטומטית מספר פעמים. הסיבה לכך שהדבר יכול להיות שימושי היא, שלעיתים קרובות קשה להזין את כל האילוצים ישר מן ההתחלה. במקרים רבים אתם תמצאו את עצמכם מתבוננים במערכת שנבנתה אחרי השלב הראשון ואומרים לעצמכם משהו בסגנון "אבוי, גם זה צריך להיות כך וכך...". במקרים כאלו אתם תמיד יכולים לחזור ללשונית האילוצים ולהגדיר אילוצים נוספים; או שאתם גם יכולים לבצע שינוי ידני במצב האינטראקטיבי, לקבע אותו ואז להפעיל את המנוע האוטומטי שוב. חזרה על השלבים הללו מספר פעמים עד לסיום המערכת היא למעשה הדרך המומלצת להשיג מערכת שעות באיכות הגבוהה ביותר בשבילכם.

כיצד למנוע מצב של "אילוץ-יתר"?

דבר אחד אחרון אשר חשוב להבין לגבי אילוצים הוא כיצד למנוע שימוש יתר. הבינו - אילוצים הם נושא עדין ביותר. דמיינו שהגדרתם הרבה מאוד אילוצים לתוכנה, וחלק מהם אכן חשובים עבורכם אבל חלק אחר זניחים או אף יותר גרוע - לגמרי לא מציאותיים. אילו אתם הייתם בונים את המערכת בצורה ידנית והדרגתית, ללא ספק הייתם מבצעים את ההחלטות הדרושות בתחילת התהליך כדי להשלים את האילוצים הקריטיים בתור עדיפות ראשונה. למנוע האוטומטי, מצד שני, אין את יכולת השיפוט שלכם. תהליך קבלת ההחלטות שלו מבוסס ב-100% על האילוצים שהזנתם. אם המנוע נתקל בצומת מחשבתי שבו עליו להחליט האם לבצע שינוי מסויים במערכת כדי לקיים אילוץ אחד, אך שינוי זה "שובר" אילוץ אחר (ושניהם מוגדרים כערכי מינימום/מקסימום דרושים כך שיש להם אותה קדימות), התוכנה תימנע מלבצע שינוי כזה (משום שהדבר ייחשב כלא מועיל על-ידי התוכנה). אם שני האילוצים אכן דרושים באותה מידה, זו בהחלט מסקנה נכונה. אם, לעומת זאת, אחד מהם לא באמת נחוץ, הרי שלפנינו מקרה של אילוץ יתר אשר פוגם ביכולת של התוכנה לקבל את ההחלטות הנכונות עבורכם. לכן כאשר אתם מגדירים אילוצים, אנא וודאו שאתם מגדירים רק את האילוצים הדרושים והמציאותיים בתור ערכי המינימום/מקסימום והשתמשו בערכי ה-"רצוי" כדי להגדיר את האילוצים בעלי החשיבות הנמוכה יותר.

הפרק הבא: שיבוץ אוטומטי.

  יש לכם שאלה? שלחו לנו דואר אלקטרוני אל SUPPORT@LANTIV.COM