Neues Thema starten

checksum/Prüfziffer für Barcodes mit anderer Länge erstellen ?

Hallo,


hat jemand schon mal ein Snippet erstellt um nach dem gleichen Muster, wie die Prüfziffer der EAN berechnet wird, dies für eine Zahl mit einer anderen Stellenlänge zu tun  ?

Im aktuellen Fall geht es um interne Barcodes einer Wawi, die 10 Stellen haben (9 + Prüfziffer) 

Ich  kann die Zahl natürlich jetzt zerlegen und abweschselnd mit 1 + 3 mutliplizieren, addieren, auf volle 10er runden und dann die Differenz berechnen, aber das geht doch bestimmt auch mit einer Formel. 

Hat jemand eine Idee ? 

Oder kann Synesty mal den Quelltext für des ean Snippet verraten, dann schreib ich das um.



Gruß


Heinke



Ungefähr so: Quick'n dirty aus Java in Freemarker übertragen.  


<#assign mystring = "1234567" />
<#assign checkSum = 0 />

<#list 0..mystring?length-1 as i>

  <#if i != 0 && i % 2 != 0>
    <#assign checkSum += mystring[i]?number * 3  />
  <#else>
    <#assign checkSum += mystring[i]?number   />
  </#if>


</#list>

<#assign checkChar = 10 - checkSum % 10 />

<#if checkChar == 10>
  result: 0
<#else>
  result: ${checkChar}
</#if>


Beispiel zum live ausprobieren.

Hallo,


vielen Dank !!! Ist zwar im Original ein Dreher drin, aber nachdem ich das wie folgt  abgeändert habe passt es.

 

<#assign mystring = result['Basescode']! />
<#assign checkSum = 0 />
<#list 0..mystring?length-1 as i>
	<#if i != 0 && i % 2 = 0>
		<#assign checkSum += mystring[i]?number * 3  />
	<#else>
		<#assign checkSum += mystring[i]?number   />
	</#if>
</#list>
<#assign checkChar = 10 - checkSum % 10 />
<#if checkChar == 10>
0
<#else>
${checkChar}
</#if>

 Als Snippet habe ich es zwar noch nicht hinbekommen, aber immerhin klappt es jetzt. 

Vielen Dank !!!


Gruß


Heinke

<#if i != 0 && i % 2 = 0> ist aber eigentlich falsch. Das müssen 2 Gleichheitszeichen am Ende sein, weil es ein Vergleich ist (<#if i != 0 && i % 2 == 0> ). So wie es jetzt ist, ist es eine Zuweisung. Aber wie gesagt unser Beispiel war nur schnell ungetestet zusammengebaut. Möglich, dass das noch nicht nicht final ist. Aber es sollte alles notwendige enthalten, um es anzupassen.


Um es als Snippet zu nutzen müsste man eine Variable z.B. basecode anlegen und im Skript statt mystring verwenden. 

Am Ende müssten <#return> statements rein z.B.


<#if checkChar == 10>
<#return 0 />
<#else>
<#return checkChar />
</#if>


Anmelden um einen Kommentar zu veröffentlichen