אקסס קובץ אקסס להפקת ובדיקת קבצי מס''ב

שמואל 2

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

fkvatr_26

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

נתוני ההחזרות נשלפים מהקובץ המשודר למס"ב.
כאשר הקובץ ששודר למס"ב נבנה עם עברית לא תקינה ( קישור להורדת מסמך טבלאות עברית https://www.masav.co.il/media/2001/hebrew.pdf) התוצאה היא שיבוש המלל.
משמע, כשהמלל בקובץ משובש פרוט ההחזרות הנשלף מהקובץ יהיה עם מלל משובש


האם יש צורך בהתייחסות מיוחדת בעבודה עם עברית בקוד, בזמן יצירה ושמירה של הקובץ, אולי לשמור בקידוד מסוים?
תודה רבה
 

באתי לחלום

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

נתוני ההחזרות נשלפים מהקובץ המשודר למס"ב.
כאשר הקובץ ששודר למס"ב נבנה עם עברית לא תקינה ( קישור להורדת מסמך טבלאות עברית https://www.masav.co.il/media/2001/hebrew.pdf) התוצאה היא שיבוש המלל.
משמע, כשהמלל בקובץ משובש פרוט ההחזרות הנשלף מהקובץ יהיה עם מלל משובש


האם יש צורך בהתייחסות מיוחדת בעבודה עם עברית בקוד, בזמן יצירה ושמירה של הקובץ, אולי לשמור בקידוד מסוים?
תודה רבה
האם אפשר להעלות את הקוד?
 

y41

משתמש חדש
תשתמש בקוד הזה
קוד:
Option Compare Database
Option Explicit

Public Function fValidateBankAccount(lngBankNumber As Long, _
                                          lngBranch As Long, _
                                          lngAccount As Long) As Boolean

   On Error GoTo fValidateBankAccount_Error

    Dim lngRequiredAccountLength As Long
    Dim lngTotal As Long

    Dim strArrayAccount() As String
    Dim strArrayBranch() As String

    Dim strAccount As String
    Dim strBranch As String

    If lngBankNumber = 0 Or lngBranch = 0 Or lngAccount = 0 Then Exit Function

    Select Case lngBankNumber
        Case 10, 13, 34
            lngRequiredAccountLength = 8
        Case 12, 4
            lngRequiredAccountLength = 6
        Case 11, 17
            lngRequiredAccountLength = 9
        Case 20
            lngRequiredAccountLength = 6
        Case 31, 52
            lngRequiredAccountLength = 9
        Case 9
            lngRequiredAccountLength = 9
        Case 22
            lngRequiredAccountLength = 9
        Case 46
            lngRequiredAccountLength = 9
        Case 14
            lngRequiredAccountLength = 9
        Case 54
            lngRequiredAccountLength = 9
    End Select

    strBranch = lngBranch
    strAccount = String(lngRequiredAccountLength - Len(CStr(lngAccount)), "0") & CStr(lngAccount)
    strAccount = StrConv(strAccount, vbUnicode)
    strArrayAccount = Split(strAccount, vbNullChar)

    If lngBankNumber = 20 And lngBranch > 400 Then     ' אם מספר הסניף בבנק מזרחי-טפחות גדול מ400
        strBranch = CStr(lngBranch - 400)              ' לפני החישובים יש להפחית 400
    Else                                               ' אם מספר הסניף בבנק מזרחי-טפחות לא גדול מ400
        strBranch = CStr(lngBranch)                    ' לפני החישובים אל תבצע כלום
    End If
   
    If lngBankNumber = 12 Or lngBankNumber = 4 Then
        strBranch = lngBranch
    End If

    If Len(strBranch) < 3 Then
        strBranch = String(3 - Len(strBranch), "0") & strBranch    ' מוסיף אפסים להשלים ל3 ספרות
    End If

    strBranch = StrConv(strBranch, vbUnicode)
    strArrayBranch = Split(strBranch, vbNullChar)

    Select Case lngBankNumber
        Case 10, 13, 34
            lngTotal = CLng(strArrayBranch(0)) * 10 + _
                       CLng(strArrayBranch(1)) * 9 + _
                       CLng(strArrayBranch(2)) * 8 + _
                       CLng(strArrayAccount(0)) * 7 + _
                       CLng(strArrayAccount(1)) * 6 + _
                       CLng(strArrayAccount(2)) * 5 + _
                       CLng(strArrayAccount(3)) * 4 + _
                       CLng(strArrayAccount(4)) * 3 + _
                       CLng(strArrayAccount(5)) * 2 + _
                       Right(lngAccount, 2)
            Select Case Right(lngTotal, 2)
                Case 90, 72, 70, 60, 20
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 12
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(2)) * 7 + _
                       CLng(strArrayAccount(0)) * 6 + _
                       CLng(strArrayAccount(1)) * 5 + _
                       CLng(strArrayAccount(2)) * 4 + _
                       CLng(strArrayAccount(3)) * 3 + _
                       CLng(strArrayAccount(4)) * 2 + _
                       CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0, 2, 4, 6
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 4
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(2)) * 7 + _
                       CLng(strArrayAccount(0)) * 6 + _
                       CLng(strArrayAccount(1)) * 5 + _
                       CLng(strArrayAccount(2)) * 4 + _
                       CLng(strArrayAccount(3)) * 3 + _
                       CLng(strArrayAccount(4)) * 2 + _
                       CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0, 2
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 11, 17
            lngTotal = CLng(strArrayAccount(0)) * 9 + _
                       CLng(strArrayAccount(1)) * 8 + _
                       CLng(strArrayAccount(2)) * 7 + _
                       CLng(strArrayAccount(3)) * 6 + _
                       CLng(strArrayAccount(4)) * 5 + _
                       CLng(strArrayAccount(5)) * 4 + _
                       CLng(strArrayAccount(6)) * 3 + _
                       CLng(strArrayAccount(7)) * 2 + _
                       CLng(strArrayAccount(8)) * 1
            Select Case lngTotal Mod 11
                Case 0, 2, 4
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 20
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(2)) * 7 + _
                       CLng(strArrayAccount(0)) * 6 + _
                       CLng(strArrayAccount(1)) * 5 + _
                       CLng(strArrayAccount(2)) * 4 + _
                       CLng(strArrayAccount(3)) * 3 + _
                       CLng(strArrayAccount(4)) * 2 + _
                       CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0, 2, 4
                    fValidateBankAccount = True
            End Select
        Case 31, 52
            lngTotal = CLng(strArrayAccount(0)) * 9 + _
                       CLng(strArrayAccount(1)) * 8 + _
                       CLng(strArrayAccount(2)) * 7 + _
                       CLng(strArrayAccount(3)) * 6 + _
                       CLng(strArrayAccount(4)) * 5 + _
                       CLng(strArrayAccount(5)) * 4 + _
                       CLng(strArrayAccount(6)) * 3 + _
                       CLng(strArrayAccount(7)) * 2 + _
                       CLng(strArrayAccount(8)) * 1
            Select Case lngTotal Mod 11
                Case 0, 6
                    fValidateBankAccount = True
                Case Else
                    lngTotal = CLng(strArrayAccount(3)) * 6 + _
                               CLng(strArrayAccount(4)) * 5 + _
                               CLng(strArrayAccount(5)) * 4 + _
                               CLng(strArrayAccount(6)) * 3 + _
                               CLng(strArrayAccount(7)) * 2 + _
                               CLng(strArrayAccount(8)) * 1
                    Select Case lngTotal Mod 11
                        Case 0, 6
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
            End Select
        Case 9
            lngTotal = CLng(strArrayAccount(0)) * 9 + _
                       CLng(strArrayAccount(1)) * 8 + _
                       CLng(strArrayAccount(2)) * 7 + _
                       CLng(strArrayAccount(3)) * 6 + _
                       CLng(strArrayAccount(4)) * 5 + _
                       CLng(strArrayAccount(5)) * 4 + _
                       CLng(strArrayAccount(6)) * 3 + _
                       CLng(strArrayAccount(7)) * 2 + _
                       CLng(strArrayAccount(8)) * 1
            If lngTotal Mod 10 = 0 Then
                fValidateBankAccount = True
            Else
                fValidateBankAccount = False
            End If
        Case 54
            fValidateBankAccount = True
        Case 22
            lngTotal = CLng(strArrayAccount(0)) * 3 + _
                       CLng(strArrayAccount(1)) * 2 + _
                       CLng(strArrayAccount(2)) * 7 + _
                       CLng(strArrayAccount(3)) * 6 + _
                       CLng(strArrayAccount(4)) * 5 + _
                       CLng(strArrayAccount(5)) * 4 + _
                       CLng(strArrayAccount(6)) * 3 + _
                       CLng(strArrayAccount(7)) * 2
            If 11 - (lngTotal Mod 11) = CLng(strArrayAccount(8)) Then
                fValidateBankAccount = True
            Else
                fValidateBankAccount = False
            End If
        Case 46
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(2)) * 7 + _
                       CLng(strArrayAccount(3)) * 6 + _
                       CLng(strArrayAccount(4)) * 5 + _
                       CLng(strArrayAccount(5)) * 4 + _
                       CLng(strArrayAccount(6)) * 3 + _
                       CLng(strArrayAccount(7)) * 2 + _
                       CLng(strArrayAccount(8)) * 1
            Select Case lngTotal Mod 11
                Case 0
                    fValidateBankAccount = True
                Case 2
                    Select Case strBranch
                        Case 154, 166, 178, 181, 183, 191, 192, 503, 505, 507, 515, 516, 527, 539
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
                Case Else
                    lngTotal = CLng(strArrayAccount(0)) * 9 + _
                               CLng(strArrayAccount(1)) * 8 + _
                               CLng(strArrayAccount(2)) * 7 + _
                               CLng(strArrayAccount(3)) * 6 + _
                               CLng(strArrayAccount(4)) * 5 + _
                               CLng(strArrayAccount(5)) * 4 + _
                               CLng(strArrayAccount(6)) * 3 + _
                               CLng(strArrayAccount(7)) * 2 + _
                               CLng(strArrayAccount(8)) * 1
                    If lngTotal Mod 11 = 0 Then
                        fValidateBankAccount = True
                    Else
                        lngTotal = CLng(strArrayAccount(3)) * 6 + _
                                   CLng(strArrayAccount(4)) * 5 + _
                                   CLng(strArrayAccount(5)) * 4 + _
                                   CLng(strArrayAccount(6)) * 3 + _
                                   CLng(strArrayAccount(7)) * 2 + _
                                   CLng(strArrayAccount(8)) * 1
                        If lngTotal Mod 11 = 0 Then
                            fValidateBankAccount = True
                        Else
                            fValidateBankAccount = False
                        End If
                    End If
            End Select
        Case 14
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(2)) * 7 + _
                       CLng(strArrayAccount(3)) * 6 + _
                       CLng(strArrayAccount(4)) * 5 + _
                       CLng(strArrayAccount(5)) * 4 + _
                       CLng(strArrayAccount(6)) * 3 + _
                       CLng(strArrayAccount(7)) * 2 + _
                       CLng(strArrayAccount(8)) * 1
            Select Case lngTotal Mod 11
                Case 0
                    fValidateBankAccount = True
                Case 2
                    Select Case strBranch
                        Case 347, 361, 362, 363, 365, 385
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
                Case 4
                    Select Case strBranch
                        Case 361, 362, 363
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
                Case Else
                    lngTotal = CLng(strArrayAccount(0)) * 9 + _
                               CLng(strArrayAccount(1)) * 8 + _
                               CLng(strArrayAccount(2)) * 7 + _
                               CLng(strArrayAccount(3)) * 6 + _
                               CLng(strArrayAccount(4)) * 5 + _
                               CLng(strArrayAccount(5)) * 4 + _
                               CLng(strArrayAccount(6)) * 3 + _
                               CLng(strArrayAccount(7)) * 2 + _
                               CLng(strArrayAccount(8)) * 1
                    If lngTotal Mod 11 = 0 Then
                        fValidateBankAccount = True
                    Else
                        lngTotal = CLng(strArrayAccount(3)) * 6 + _
                                   CLng(strArrayAccount(4)) * 5 + _
                                   CLng(strArrayAccount(5)) * 4 + _
                                   CLng(strArrayAccount(6)) * 3 + _
                                   CLng(strArrayAccount(7)) * 2 + _
                                   CLng(strArrayAccount(8)) * 1
                        If lngTotal Mod 11 = 0 Then
                            fValidateBankAccount = True
                        End If
                    End If
            End Select
    End Select


   On Error GoTo 0
   Exit Function

fValidateBankAccount_Error:
    fValidateBankAccount = False
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fValidateBankAccount of Function mdlValidations"

End Function

Public Function fValidateTeudatZehut(ID As Variant) As Boolean


   On Error GoTo fValidateTeudatZehut_Error

    Dim lngCounter As Long
    Dim lngSum As Long
    Dim lngDigit As Long

    If Len(ID) = 0 Then fValidateTeudatZehut = False: Exit Function

    ID = Val(ID)
    While Len(ID) < 9
        ID = "0" & ID
    Wend

    lngSum = 0

    For lngCounter = 1 To 9
        lngDigit = Strings.Mid$(ID, lngCounter, 1)
        If (lngCounter Mod 2) = 0 Then
            If lngDigit >= 5 Then
                lngDigit = 2 * lngDigit - 9
            Else
                lngDigit = lngDigit * 2
            End If
        End If
        lngSum = lngSum + lngDigit
    Next lngCounter

    fValidateTeudatZehut = (lngSum Mod 10) = 0


   On Error GoTo 0
   Exit Function

fValidateTeudatZehut_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fValidateTeudatZehut of Function mdlValidations"

End Function
שלום.
האם שייך לקבל את הקובץ העדכני?
תודה מראש
 

יוסי יוסי

משתמש חדש
יצאתי מבולבל מרוב קבצים.....
יש אפשרות לשלוח את הקובץ הכי מעודכן?
תודה עצומה לאנשים הנפלאים שנותנים מעצמם לכלל!
 

moishy

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

קבצים מצורפים

  • מס''ב.zip
    KB 234.7 · צפיות: 42

ממוו

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

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

אורחת לרגע

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

לחצתי על אישור, ונכנס לי לקובץ

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

אורחת לרגע

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

איך מסדרים את זה (ואני לא מבינה בכתיבת קודים :(
1723013624995.png
 

אורחת לרגע

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


ניסיתי להעלות את הקובץ ב"בדיקת קבצים" באקסס והוא הראה קובץ תקין, אבל אין לי שום דרך להעלות אותו לתוכנת מס"ב
 

moishy

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

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

moishy

משתמש סופר מקצוען
מנוי פרימיום
נערך לאחרונה ב:

אורחת לרגע

משתמש מקצוען
אם אני זוכר נכון, הבעיה היא ששם הקובץ ארוך מידי.
שיניתם את שם הקובץ או שזה השם שנוצר אוטומטית?

ראו באתר של מס"ב:
מספר מוסד שמתחיל ב-0
כאשר מכניסים בפרטי מוסד 0 בהתחלה הוא נותן להקליד, אבל מוחק אותו אח"כ
אבל הקובץ שגוי כי מספר המוסד לא תקין (הוא כביכול מתחיל מהמספר השני, ובסוף יש 0)
 

moishy

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

אורחת לרגע

משתמש מקצוען
צריך לשנות את סוג הנתונים בטבלה לטקסט
תודה על המענה
אני התכוונתי בהדרות קוד מוסד לחיוב
מגדירה את שם החברה, קוד מוסד ארוך
וקוד מוסד קצר
קוד המוסד מתחיל ב-0 (ספרה ראשונה מתוך 5)
המערכת מוחקת את ה-0 כך שקוד המוסד הקצר נהיה בן 4 ספרות, והארוך בן 7
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
תודה על המענה
אני התכוונתי בהדרות קוד מוסד לחיוב
מגדירה את שם החברה, קוד מוסד ארוך
וקוד מוסד קצר
קוד המוסד מתחיל ב-0 (ספרה ראשונה מתוך 5)
המערכת מוחקת את ה-0 כך שקוד המוסד הקצר נהיה בן 4 ספרות, והארוך בן 7
והפתרון הוא מה שכתבתי
צריך לפתוח את הטבלה בתצוגת עיצוב ולשנות את סוג הנתונים לטקסט
 

moishy

משתמש סופר מקצוען
מנוי פרימיום

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק צח

א מִזְמוֹר שִׁירוּ לַיי שִׁיר חָדָשׁ כִּי נִפְלָאוֹת עָשָׂה הוֹשִׁיעָה לּוֹ יְמִינוֹ וּזְרוֹעַ קָדְשׁוֹ:ב הוֹדִיעַ יי יְשׁוּעָתוֹ לְעֵינֵי הַגּוֹיִם גִּלָּה צִדְקָתוֹ:ג זָכַר חַסְדּוֹ וֶאֱמוּנָתוֹ לְבֵית יִשְׂרָאֵל רָאוּ כָל אַפְסֵי אָרֶץ אֵת יְשׁוּעַת אֱלֹהֵינוּ:ד הָרִיעוּ לַיי כָּל הָאָרֶץ פִּצְחוּ וְרַנְּנוּ וְזַמֵּרוּ:ה זַמְּרוּ לַיי בְּכִנּוֹר בְּכִנּוֹר וְקוֹל זִמְרָה:ו בַּחֲצֹצְרוֹת וְקוֹל שׁוֹפָר הָרִיעוּ לִפְנֵי הַמֶּלֶךְ יי:ז יִרְעַם הַיָּם וּמְלֹאוֹ תֵּבֵל וְיֹשְׁבֵי בָהּ:ח נְהָרוֹת יִמְחֲאוּ כָף יַחַד הָרִים יְרַנֵּנוּ:ט לִפְנֵי יי כִּי בָא לִשְׁפֹּט הָאָרֶץ יִשְׁפֹּט תֵּבֵל בְּצֶדֶק וְעַמִּים בְּמֵישָׁרִים:
נקרא  5  פעמים

אתגר AI

ותשובה ותפילה וצדקה • אתגר 111

לוח מודעות

למעלה