Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Prüfziffer für Steuernummern berechnen


  • Please log in to reply
3 replies to this topic
HerrStrudel
  • Members
  • 2 posts
  • Last active: Aug 07 2013 05:24 AM
  • Joined: 29 Jul 2013

Hallo erstmal, seit langem habe ich mal wieder eine Frage zu Autohotkey und will gleich mal vornweg dazusagen, dass bei mir noch AHK in Version 1.0.48.05 läuft.
 
Das eigentliche Problem ist wohl eher ein mathematisches - und ich habe so überhaupt keinen Plan zu einer möglichen Herangehensweise.
 
Problem: Deutsche Steuernummern werden in einigen Bundesländern - zumindest in den "neuen" Bundesländern nach einem bestimmten Verfahren vergeben. Dabei ist die letzte Ziffer eine Prüfziffer. Und genau diese will/muss ich berechnen.
 
Die Berechnung wird hier erläutert: http://www.pruefziff...DE-Berlin.shtml
nämlich in meinem Falle so:

 

 

 

Bei Steuernummern aus den Bereichen
FA 18 und 31 - 37 (alle SB) oder
FA 13, 14, 15, 16, 17, 20, 21, 23, 24 und 25 (nur SB 201-693) oder
FA 19 (nur SB 201-639, 680, 684)

wird die Prüfziffer unter Einbeziehung der FA-Nr. wie folgt berechnet:
Die Ziffernfolge wird von links nach rechts mit 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 1 gewichtet.
Die Produkte werden summiert.
Von der Summe wird der volle Rest zur nächst niedrigeren durch 11 teilbaren Zahl (modulo 11) bestimmt.

 

Beispiel einer echten Steuernummer: 162/107/03482 von hier: (http://www.codematix.de/impressum/)

demnach ist hier die Prüfziffer 2.

 

lt. der obigen Anleitung sollte man dann jetzt berechnen:

 

1x3=3

6x2=12

2x9=18

1x8=8

0x7=0

7x6=42

0x5=0

3x4=12

4x3=12

8x2=16

2x1=2

 

= 125

 

und wie nun weiter? Ich habe gesehen, dass AHL auch eine Modulo-Funktion besitzt - da bin ich aber noch nicht dahinter gestiegen...

 



SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Damit hast du meinen Ehrgeiz geweckt und ja, ich kann dir tatsächlich was anbieten, was sogar in AHK Basic funktionieren sollte:

#NoEnv
#SingleInstance force

Gui, Add, Text,, Steuernummer (ohne Prüfziffer):
Gui, Add, Edit, vInput
Gui, Add, Text, vRightDigit w150, Prüfziffer:
Gui, Add, Text,, Korrekte Steuernummer:
Gui, Add, Edit, vTaxID ReadOnly
Gui, Add, Button, gCalc Default, Berechnen
Gui, Show,, Steuernummer: Prüfziffer berechnen
return

Calc:
Gui, Submit, Nohide
Input := RegExReplace(Input, "\D") ;hier bleiben nur noch Zahlen übrig
if(StrLen(Input) != 10){
	MsgBox, 48, Ungültige Steuernummer, Prüfe die Steuernummer`, sie hat nicht 10 Zeichen...
	return
}
mult := "32987654321" ;Die Multiplikatoren in einer Liste
Number := 0 ;In diese Variable wird der gesamte Wert gespeichert
loop, 10
{
	digit := SubStr(Input, A_Index, 1) ;eine Zahl aus der Steuernummer wird genommen...
	this_mult := SubStr(mult, A_Index, 1) ;... dazu der entsprechende Multiplikator
	Number += digit * this_mult ;und dann wird das ganze multipliziert
}
result := Number / 11 ;Das Ergebnis wird durch 11 geteilt
result -= Floor(result) ;und die Stellen vor dem Nullpunkt weggekürzt
result *= 11 ;... damit wir jetzt endlich das Ergebnis haben (hoffentlich)
result := Round(result) ;und nun werden die restlichen Nullstellen "abgehängt"
Input .= result ;und an die eigentliche Steuernummer angehängt wird
Input := RegExReplace(Input, "(\d{3})", "$1/", "", 2)
GuiControl,, RightDigit, Prüfziffer: %result%
GuiControl,, TaxID, %Input%
return



GuiClose:
ExitApp
return

Mit deiner Steuernummer geht das sogar ;)



hd0202
  • Members
  • 709 posts
  • Last active: Feb 14 2016 08:05 PM
  • Joined: 13 Aug 2006

Um deine Frage nach der modulo Funktion zu beantworten:

result := mod(Number, 11)

Kannst du im obigen Beispiel einsetzen.

 

Hubert



HerrStrudel
  • Members
  • 2 posts
  • Last active: Aug 07 2013 05:24 AM
  • Joined: 29 Jul 2013

ich danke euch beiden schonmal. jetzt muss ich das nur noch so hinbasteln, dass er mir eine fortlaufende Liste gültiger Steuernummern erzeugt.

 

Aber trotzdem schonmal Danke fürs Aufzeigen des Weges ;-)