Προς το περιεχόμενο

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


επισκέπτη Επισκέπτης-nikos-

Προτεινόμενες αναρτήσεις

επισκέπτη Επισκέπτης-nikos-

hello

Θα ήθενα ανα ρωτησώ που μπορώ να διαβασως για τον τροπο με τον οποίο τσεκάρε το ΑΦΜ. Υπάρχει καποιο website για τετοια θέματα και ποιο ειναι το link. Σκεφτομαι να αρχίσω να προγραμματίζω εφαρμογές σχετικα με λογιστικά.

Thank you

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ΑΝΕΤΡΕΞΕ ΣΤΟ WWW.E-TAXIS.GR KAI SE WWW.BARDAS.GR

ΣΥΓΓΝΩΜΗ ΓΙΑ ΤΟ VARDAS .GR ΕΙΝΑΙ ΚΑΠΟΙΟ ΠΡΟΓΡΑΜΜΑ ΕΝΟΣ ΛΟΓΙΣΤΗ ΙΩΑΝΝΗ ΒΑΡΔΑ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Visual Basic, Visual Basic For Applications

Δημιουργήστε ένα νέο Module και αντιγράψτε τον παρακάτω κώδικα:

Public Function CheckAFM(sAFM As String) As Boolean

' Validate an AFM number

' Pre: sAFM = string containing the AFM

' Post: True if sAFM is a valid AFM, False otherwise

' NOTE: This algorithm does NOT check if the AFM actually exists, only if it is a valid number!

' Usage Example: a=CheckAFM("012345678")->a=False

' Yiannis Papadopoulos <www.yiapap.com> 2004

Dim iSum As Integer

Dim btRem As Byte

Dim i As Byte

If sAFM = "" Or Len(sAFM) <> 9 Then

CheckAFM = False

Exit Function

End If

iSum = 0

CheckAFM = False

For i = 1 To Len(sAFM) - 1

If Asc(mID(sAFM, i, 1)) < 48 Or Asc(mID(sAFM, i, 1)) > 57 Then

CheckAFM = False

Exit Function

End If

iSum = iSum + Val(mID(sAFM, i, 1)) * (2 ^ (Len(sAFM) - i))

Next i

If iSum = 0 Then

CheckAFM = False

Else

btRem = iSum Mod 11

If Val(Right(sAFM, 1)) = btRem Or (btRem = 10 And Val(Right(sAFM, 1)) = 0) Then CheckAFM = True

End If

End Function

--------------------------------------------------------------------------------

ASP Script (VBScript)

Αντιγράψτε τον παρακάτω κώδικα σε οποιοδήποτε σημείο της ASP σελίδας σας (συνίσταται η κορυφή)

<%Function CheckAFM(sAFM)

' Validate an AFM number

' Pre: sAFM = string containing the AFM

' Post: True if sAFM is a valid AFM, False otherwise

' NOTE: This algorithm does NOT check if the AFM actually exists, only if it is a valid number!

' Usage Example: a=CheckAFM("012345678")->a=False

' Yiannis Papadopoulos <yiapap> 2004

Dim iSum

Dim btRem

Dim i

on error resume next

If sAFM = "" Then

CheckAFM = False

Exit Function

End If

iSum = 0

CheckAFM = False

For i = 1 To Len(sAFM) - 1

If Asc(mID(sAFM, i, 1)) < 48 Or Asc(mID(sAFM, i, 1)) > 57 Then

CheckAFM = False

Exit Function

End If

iSum = iSum + mid(sAFM, i, 1) * (2 ^ (Len(sAFM) - i))

Next

if iSum=0 then

Exit Function

else

btRem = iSum Mod 11

If int(Right(sAFM, 1)) = btRem Or (btRem = 10 And int(Right(sAFM, 1)) = 0) Then

CheckAFM = True

else

CheckAFM=False

end if

end if

End Function%>

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

επισκέπτη KAIRATOS=KNOSSOS
Καί σε excel

ΓΕΙΑ ΣΟΥ GUS ΑΘΑΝΑΤΕ. ΕΒΓΑΛΕΣ ΚΑΙ ΑΥΤΟ ΣΕ ΕΞΕΛ; ΕΙΣΑΙ ΚΑΙ Ο ΠΡΩΤΟΣ. ΣΥΓΝΩΜΗ. ΜΕΤΑ ΤΟΝ ΚΑΡΠΟΔΙΝΗ. ΝΑΧΟΜΕ ΚΑΙ ΤΟ ΝΟΥ ΜΑΣ. ΜΗΝ ΦΑΜΕ ΚΑΙ ΚΑΜΙΑ ΚΑΛΠΑΖΙΑ. ΕΝΤΑΞΥ ΚΑΡΠΟΔΙΝΗ; ΕΣΥ ΕΙΣΑΙ Ο ΠΡΩΤΟΣ. ΜΗΝ ΤΣΑΤΙΣΤΗΣ GUS ΓΙΑ ΤΑ ΠΡΩΤΙΑ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συνάδελφοι,

Ίσως ο επισκέπτης μας θέλει να μάθει πως δημιουργήθηκε ο αλγόριθμος με απλές

πράξεις,για να δημιουργήσει και αυτός κάποιο πρόγραμμα.

Αν είναι έτσι τότε:

Ο Αλγόριθμος του ΑΦΜ δημιουργείται από τις παρακάτω πράξεις:

ΕΣΤΩ Α.Φ.Μ: 122635660

ΤΟΤΕ: 1 2 2 6 3 5 6 6 0

Χ Χ Χ Χ Χ Χ Χ Χ

256 128 64 32 16 8 4 2

= = = = = = = =

256 + 256 + 128 + 192 + 48 + 40 + 24 + 12 = 956

956:11= 86,90

ΕΡΜΗΝΕΙΑ:

1.Στον ΑΦΜ απομονώνουμε το τελευταίο ψηφίο του

2.Αρχίζοντες κατόπιν από το πρότελευταίο ψηφίο,πολλαπλασιάζουμε όλα τα άλλα,

πάντοτε με τους αριθμούς 2,4,8,16,32,64,128,& 256.

3.Αθροίζουμε κατόπιν τα σύνολα που προκύπτουν από τους πολλαπλασιασμούς.

4.Το υπόλοιπο που προκύπτει το διαιρούμε με το 11.

5.Το δεκαδικό μέρος που προκύπτει από την διαίρεση πρέπει να είναι το ίδιο με το

τελευταίο ψηφίο του Α.Φ.Μ.

Ελπίζω να σε βοήθησα,εκτός και αν δεν κατάλαβα και 'γω καλά την ερώτηση,οπότε

να θεωρήσετε άκυρη την απάντησή μου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Visual Basic, Visual Basic For Applications

Δημιουργήστε ένα νέο Module και αντιγράψτε τον παρακάτω κώδικα:

ΠΟΥ ΤΟ ΒΡΙΣΚΕΙΣ ???

ΣΤΟ EXCELL ΠΟΥ ΕΨΑΞΑ ΔΕΝ ΒΡΗΚΑ ΚΑΤΙ .....

ΜΠΟΡΕΙ ΚΑΠΟΙΟΣ ΣΑΣ ΠΑΡΑΚΑΛΩ ΝΑ ΜΕ ΒΟΗΘΗΣΕΙ ΛΙΓΟ ????

ΜΗΝ ΤΑ ΘΕΛΟΥΜΕ ΚΑΙ ΟΛΑ ΕΤΟΙΜΑ ΠΡΕΠΕΙ ΝΑ ΔΟΚΙΜΑΖΟΥΜΕ ΚΙΟΛΑΣ.

GUS ΣΕ ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΟΛΟ ΤΟΝ ΚΩΔΙΚΑ ΠΟΥ ΕΓΡΑΨΕΣ.

ΜΕ ΕΒΑΛΕΣ ΣΤΑ ΑΙΜΑΤΑ ΚΑΙ ΘΕΛΩ ΝΑ ΔΟΚΙΜΑΣΩ ΑΛΛΑ ΕΙΜΑΙ ΛΙΓΟ ΑΡΧΑΡΙΟΣ ΚΑΙ ΙΣΩΣ ΒΛΑΚΑΣ !!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Προς Gus:

Τρομερά καλογραμμένη συνάρτηση .

Δεν νομίζω να μπορεί να γραφεί , έστω και με ένα χαρακτήρα λιγότερο.

ΜΠΡΑΒΟ

Προς Fafoutis:

To υπόλοιπο της διαίρεσης 86,90 πρέπει να στρογγυλοποιηθεί σε 86.

Μπορείς να το κάνεις με τη συνάρτηση που χρησιμοποιεί ο DimitrisK την Rounddown και την οποία ομολογώ ότι δεν γνώριζα γι' αυτό και τον ευχαριστώ .

Προς DimitrisK :

Σωστά κάνει τον έλεγχο , εκτός της περίπτωσης που το αποτέλεσμα της διαίρεσης είναι 10 και το τελευταίο νούμερο του ΑΦΜ είναι 0 .

Σ’ αυτή την περίπτωση θα σου δίνει αποτέλεσμα -10 και έτσι όποιο αριθμό και να γράψεις στο τελευταίο νούμερο του ΑΦΜ δεν θα έχεις αποτέλεσμα 0 . (Δηλαδή σωστός ΑΦΜ).

Και για να κάνεις ένα παράδειγμα χρησιμοποίησε τον ΑΦΜ που δίνει ο Fafoutis.

Προς τον επισκέπτη μας:

Εργαλεία

Μακροεντολή

Επεξεργασία visual Basic.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Προς Gus:

Τρομερά καλογραμμένη συνάρτηση .

Δεν νομίζω να μπορεί να γραφεί , έστω και με ένα χαρακτήρα λιγότερο.

ΜΠΡΑΒΟ

...................................................

Προς τον επισκέπτη μας:

Εργαλεία

Μακροεντολή

Επεξεργασία visual Basic.

Μήπως θα σας ηταν εύκολο να μου περιγράψεται βήμα βήμα την όλη διαδικασία δλδ πως να κάνω αυτά που λέει παραπάνω ο gus ???

Θα σας ήμουν υπόχρεη.

ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Visual Basic, Visual Basic For Applications

Δημιουργήστε ένα νέο Module και αντιγράψτε τον παρακάτω κώδικα:

................................................................................

...............

κ. gus μήπως θα σας ηταν εύκολο να μου περιγράψεται βήμα βήμα την όλη διαδικασία δλδ πως να κάνω αυτά που λέτε παραπάνω ???

Θα σας ήμουν υπόχρεη (συγχωρίσται το θράσος μου).

ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οπως καταλαβένεται το να περιγράψουμε σε ένα μήνυμα την διαδικασία δημιουργίας προγράμματος σε VB είναι αρκετά δύσκολο.

Ο παραπάνω κώδικας για να εισαχθεί σε πρόγραμμα VB ή σε excel προυποθέτει απλές γνώσεις προγραμματισμού οι οποίες δεν μπορούν να ανπτυχθούν εδώ

Για όσους δεν γνωρίζουν visual basic μπορούν να χρησιμοποιήσουν το αρχείο του excel.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

5.Το δεκαδικό μέρος που προκύπτει από την διαίρεση πρέπει να είναι το ίδιο με το

  τελευταίο ψηφίο του Α.Φ.Μ.

Εκτός κι αν το μέρος (modulus) είναι 10 οπότε το τελευταίο ψηφίο του ΑΦΜ πρέπει να είναι 0

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σωστά κάνει τον έλεγχο , εκτός της περίπτωσης που το αποτέλεσμα της διαίρεσης είναι 10 και το τελευταίο νούμερο του ΑΦΜ είναι 0 .

Σ’ αυτή την περίπτωση θα σου δίνει αποτέλεσμα -10 και έτσι όποιο αριθμό και να γράψεις στο τελευταίο νούμερο του ΑΦΜ δεν θα έχεις αποτέλεσμα 0 . (Δηλαδή σωστός ΑΦΜ).

Και για να κάνεις ένα παράδειγμα χρησιμοποίησε τον ΑΦΜ που δίνει ο Fafoutis.

To modulus δεν είναι ποτέ αρνητικό. Το modulus = 10 λαμβάνεται υπόψη εδώ:

Or (btRem = 10 And int(Right(sAFM, 1)) = 0)

(συγγνώμη για το 2ο & τελευταίο) Post :rolleyes:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

To modulus δεν είναι ποτέ αρνητικό. Το modulus = 10 λαμβάνεται υπόψη εδώ:

Or (btRem = 10 And int(Right(sAFM, 1)) = 0)

(συγγνώμη για το 2ο & τελευταίο) Post :rolleyes:

Μάλλον διάβασες την απάντησή μου βιαστικά

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μάλλον διάβασες την απάντησή μου βιαστικά

Μάλλον έχεις δίκιο, συγγνώμη.

Ένα τελευταίο σχόλιο προς τον Gus (PM μόνο σε εγγεγραμμένους, οπότε...): Καλό θα ήταν να είχες προσθέσει κι ένα link προς την ιστοσελίδα από την οποία παραθέτεις τον κώδικα στην οποία εκτός του κώδικα υπάρχει και φόρμα επαλήθευσης ΑΦΜ σε περίπτωση που κάποιος θέλει να επιβεβαιώσει τον κώδικα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

O παρακάτω κώδικας είναι αυτός που είχα φτιάξει πρίν χρόνια για το αρχείο checkΑΦΜ το οποίο συμπεριλαμβανόταν στις Λογιστικές Εφαρμογές.

Είναι σε VB6

Για την λειτουργία του πρέπει να δημιουργηθούν

Δύο buttons , Ενα label, και ένα textfield

(Command1,Command2,Text1,Label1)

---Αρχή κώδικα

Dim pinakas(9) As Integer

Dim pinakas2(9) As Integer

Dim meriko As Integer

--------------------------------------------

Private Sub Command1_Click()

On Error Resume Next

Dim t As Integer

Dim number1 As String

Dim digits As String

Dim atrisma As Integer

Dim pinakaitem As Integer

number1 = Text1.Text

For t = 1 To 9

digits = Mid(number1, t, 1)

pinakas(t) = digits

Next t

pol = 256

For t = 1 To 9

pinakas2(t) = pinakas(t) * pol

pol = pol / 2

Next t

For t = 1 To 8

pinakaitem = pinakas2(t)

atrisma = atrisma + pinakaitem

Next t

meriko = atrisma Mod 11

'Label1.Caption = " " & meriko & " " & atrisma

If meriko = 10 Then

check1

Else

check2

End If

End Sub

-------------------------------------------------------

Sub check1()

If pinakas(9) = 0 Then

Label1.ForeColor = 3:

Label1.Caption = "ΤΟ ΑΦΜ ΕΙΝΑΙ ΕΓKΥΡΟ"

Else

Label1.ForeColor = 4:

Label1.Caption = "ΤΟ ΑΦΜ ΔΕΝ ΕΙΝΑΙ ΕΓKΥΡΟ"

End If

End Sub

-----------------------------------------------------------

Sub check2()

If meriko = pinakas(9) Then

Label1.ForeColor = 3:

Label1.Caption = "ΤΟ ΑΦΜ ΕΙΝΑΙ ΕΓKΥΡΟ"

Else

Label1.ForeColor = 4:

Label1.Caption = "ΤΟ ΑΦΜ ΔΕΝ ΕΙΝΑΙ ΕΓKΥΡΟ"

End If

End Sub

----------------------------------------------------------

Private Sub Command2_Click()

Unload checkafm

End Sub

---------------------------------------------------------

Private Sub Text1_GotFocus()

Text1.Text = ""

Label1.Caption = ""

End Sub

----------------------------------------------------------

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii > Asc("9") Then 'Or KeyAscii < Asc("**") Then

MsgBox "ΕΙΣΑΓΕΤΕ ΜΟΝΟ ΑΡΙΘΜΗΤΙΚΟΥΣ ΧΑΡΑΚΤΗΡΕΣ": Text1.Refresh: Text1.Text = ""

End If

End Sub

-----------------------------------------------------------

Sub ERRORSUB()

MsgBox "ΔΕΝ ΕΙΣΗΧΘΕΙ ΑΦΜ"

End Sub

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

κ. gus μήπως θα σας ηταν εύκολο να μου περιγράψεται βήμα βήμα την όλη διαδικασία δλδ πως να κάνω αυτά που λέτε παραπάνω ???

Θα σας ήμουν υπόχρεη (συγχωρίσται το θράσος μου).

ευχαριστώ

ΜΗΠΩΣ Ο κ. yiapap ΣΑΝ ΔΗΜΙΟΥΡΓΟΣ ΘΑ ΜΠΟΡΟΥΣΕ ΝΑ ΒΟΗΘΗΣΕΙ ΑΝΑΦΕΡΟΝΤΑΣ ΤΑ ΒΑΣΙΚΑ ???

ΑΝ ΟΧΙ ΕΔΩ ΤΟΤΕ ΣΤΗΝ ΣΕΛΙΔΑ ΤΟΥ ???

Η ΓΝΩΣΗ (ΘΑ ΠΡΕΠΕΙ ???) ΝΑ ΜΕΤΑΔΙΔΕΤΑΙ ΑΓΑΠΗΤΟΙ ΣΥΝΑΔΕΛΦΟΙ.

ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΟΝ ΧΡΟΝΟ ΣΑΣ & ΕΠΙΣΗΣ ΕΥΧΑΡΙΣΤΩ ΤΟΝ κ. GUS ΓΙΑ ΤΟ ΒΗΜΑ.

:D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 weeks later...
ΓΕΙΑ  ΣΟΥ  GUS  ΑΘΑΝΑΤΕ.  ΕΒΓΑΛΕΣ ΚΑΙ ΑΥΤΟ ΣΕ ΕΞΕΛ;  ΕΙΣΑΙ ΚΑΙ Ο ΠΡΩΤΟΣ.  ΣΥΓΝΩΜΗ.  ΜΕΤΑ ΤΟΝ ΚΑΡΠΟΔΙΝΗ.  ΝΑΧΟΜΕ ΚΑΙ ΤΟ ΝΟΥ ΜΑΣ. ΜΗΝ ΦΑΜΕ ΚΑΙ ΚΑΜΙΑ ΚΑΛΠΑΖΙΑ.  ΕΝΤΑΞΥ ΚΑΡΠΟΔΙΝΗ; ΕΣΥ ΕΙΣΑΙ Ο ΠΡΩΤΟΣ. ΜΗΝ ΤΣΑΤΙΣΤΗΣ GUS ΓΙΑ ΤΑ ΠΡΩΤΙΑ.

Αντώνη καλημέρα !!! Δεν νομίζω πως είμαι πρώτος άλλωστε δεν αρκεί μόνο να είσαι πρώτος αλλά να είσαι και αποτελεσματικός και σε αυτό ο κώστας έχει ξεφύγει μακράν...

Πάντως ξέρεις καλά πως προσπαθούμε και προσπαθούμε ... και προσπαθούμε, έχουμε ακόμα πολλά να μάθουμε...

ΚΑΡΠΟΔΙΝΗΣ ΔΗΜΗΤΡΗΣ - KARPODINIS software

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ΓΕΙΑ  ΣΟΥ  GUS  ΑΘΑΝΑΤΕ.  ΕΒΓΑΛΕΣ ΚΑΙ ΑΥΤΟ ΣΕ ΕΞΕΛ;  ΕΙΣΑΙ ΚΑΙ Ο ΠΡΩΤΟΣ.  ΣΥΓΝΩΜΗ.  ΜΕΤΑ ΤΟΝ ΚΑΡΠΟΔΙΝΗ.  ΝΑΧΟΜΕ ΚΑΙ ΤΟ ΝΟΥ ΜΑΣ. ΜΗΝ ΦΑΜΕ ΚΑΙ ΚΑΜΙΑ ΚΑΛΠΑΖΙΑ.  ΕΝΤΑΞΥ ΚΑΡΠΟΔΙΝΗ; ΕΣΥ ΕΙΣΑΙ Ο ΠΡΩΤΟΣ. ΜΗΝ ΤΣΑΤΙΣΤΗΣ GUS ΓΙΑ ΤΑ ΠΡΩΤΙΑ.

Σχετικά με τις καρπαζιές να προσέχεις, σε έχει βάλει στο μάτι ο Μπαμπινιώτης!!!! :lol::lol::lol:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 3 years later...
επισκέπτη olspookishmagus

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

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε έναν λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργήστε έναν λογαριασμό

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι εύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Σύνδεση τώρα
  • Πλοηγούταν πρόσφατα   0 μέλη

    • Δεν υπάρχουν εγγεγραμμένοι χρήστες που να βλέπουν αυτή τη σελίδα.
×
×
  • Δημιουργία νέου...