Jump to content

αλγοριθμος που τσεκαρεi το ΑΦΜ


Recommended Posts

Ένας αλγόριθμος για τον έλεγχο του ΑΦΜ πρέπει επίσης να ελέγχει ότι το άθροισμα των ψηφίων του ΑΦΜ που ελέγχεται είναι διαφορετικό του μηδενός.

Σε περίπτωση που το ΑΦΜ αποτελείται από 9 μηδενικά τότε το άθροισμα των επιμέρους γινομένων με τις δυνάμεις του 2 (ανάλογα την θέση των ψηφίων) θα είναι και αυτό μηδέν. Επομένως και το υπόλοιπο της διαίρεσης του με 11 επίσης 0 και όταν ελεγχθεί αν και το τελευταίο ψηφίο είναι 0 (που είναι) τότε αυτός ο καταφανέστατα μη έγκυρος ΑΦΜ θα περάσει ως έγκυρος.

http://www.e-oikonomia.gr/gsis/servlet/gsis/checkAFM :D:P:D

Link to comment
Share on other sites

Guest olspookishmagus

Το θέμα μας εδώ είναι ο αλγόριθμος που ελέγχει για το εάν ένα ΑΦΜ είναι έγκυρο.

Η σελίδα που έδωσες δεν δουλεύει αλλά μάλλον εννοούσες αυτήν:

http://www.gsis.gr/on_line_ypiresies/epixi...s/validate.html

στην οποία επιβεβαιώνω (αν αυτό είχες σκοπό να καταδείξεις) ότι βγάζει τον ΑΦΜ 000000000 έγκυρο!

Link to comment
Share on other sites

Το θέμα μας εδώ είναι ο αλγόριθμος που ελέγχει για το εάν ένα ΑΦΜ είναι έγκυρο.

Η σελίδα που έδωσες δεν δουλεύει αλλά μάλλον εννοούσες αυτήν:

http://www.gsis.gr/on_line_ypiresies/epixi...s/validate.html

στην οποία επιβεβαιώνω (αν αυτό είχες σκοπό να καταδείξεις) ότι βγάζει τον ΑΦΜ 000000000 έγκυρο!

Έχεις δίκοιο το link που έδωσα ήταν ποιό παλιό .... :D

http://www.gsis.gr/on_line_ypiresies/epixi...s/validate.html

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...
Guest Επισκέπτης

Πολύ καλός ο κώδικας, αλλά πάντα παίζει ρόλο και η γλώσσα προγραμματισμού.Στην C μπορεί να γραφεί και απλούστερα.

Βέβαια η VB είναι πιο αγαπητή γλώσσα καθώς χρησιμοποιείται και στο excel.

Η μόνη ένσταση μου είναι για το ΑΦΜ 000000000. Απο που προκύπτει ότι εξαιρείται;

YΓ. Για να πετύχω την επιβεβαίωση του κωδικού ασφαλείας μου βγήκε η ψυχή!!!!

Link to comment
Share on other sites

  • 3 weeks later...
Guest Γιαννάκης

Δεν είμαι λογιστής ή φορορτεχνικός αλλά μου αρέσει να συρρικνώνω κώδικα VBA :D

Οπότε εξετάστε την παρακάτω συνάρτηση για τυχόν λογικά λάθη.

(Με το δικό μου ΑΦΜ δουλεύει σωστά.)

Function IsValidAFM(ByVal strAFM As String) As Boolean

Dim i As Integer

Dim intSum As Integer

If Len(strAFM) = 9 Then

On Error GoTo ExitProc

For i = 1 To 8

intSum = intSum + (Mid(strAFM, 9 - i, 1) * (2 ^ i))

Next

IsValidAFM = ((intSum Mod 11) Mod 10) = Right(strAFM, 1)

End If

ExitProc:

End Function

Υ.Γ. Το "ποτέ μην λες ποτέ" ισχύει πάντα! :wacko:

Link to comment
Share on other sites

Guest Στάθης
Υ.Γ. Το "ποτέ μην λες ποτέ" ισχύει πάντα! :wacko:

Αν βγάλεις τότε και το if then end if το συντομεύεις οπως παρακάτω. Αντε μια μικρή προσπάθεια ακόμα 7 γραμμές κώδικα έμειναν!!

Function IsValidAFM(ByVal strAFM As String) As Boolean

Dim i As Integer

Dim intSum As Integer

On Error GoTo ExitProc

For i = 1 To 8

intSum = intSum + (Mid(strAFM, 9 - i, 1) * (2 ^ i))

Next

IsValidAFM = ((intSum Mod 11) Mod 10) = Right(strAFM, 1)

ExitProc:

End Function

Link to comment
Share on other sites

Guest Γιαννάκης

Στάθη, ο έλεγχος "If Len(strAFM) = 9 Then" στην περίπτωσή μας μοιάζει να είναι απαραίτητος.

Δοκίμασε την συντομευμένη έκδοση της IsValidAFM με τον ΑΦΜ σου στον οποίο έχεις εισάγει

έναν οποιονδήποτε αριθμό ψηφίων ανάμεσα στο τελευταίο και προτελευταίο ψηφίο του.

Θα σου επιστρέψει TRUE!!! :o

Επίσης, ο αριθμός "000000000000" περνάει ως έγκυρος ΑΦΜ! :huh:

Link to comment
Share on other sites

  • 2 years later...
  • 9 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...