Hallo,
Ik wil graag de ean codes die bij producten worden ingevoerd in navision 4.0 na invoer laten checken op juistheid door middel van de checksum. Natuurlijk is het beste bij aanmaken van artikelen dit te scannen vanaf het artikel, maar dat is niet altijd op dat moment beschikbaar.
De juistheid is binnen navision weliswaar niet direct van belang, maar wel in ons gekoppelde transactiesysteem.
Kan iemand daarmee helpen?
Patrick Leunissen
0
Comments
De meegegeven barcode wordt aangevuld met de Check Digit,
of als er al een Check Digit inzit, wordt deze gecontroleerd.
{ EAN13(pEANCode : Text[13]) : Text[13] }
// Deze functie berekent de Check Digit voor EAN13-artikelnummers en maakt een string voor lettertype EAN13.
IF pEANCode = '' THEN
EXIT;
EANTxt := COPYSTR(pEANCode, 1, 12); // Laatste positie verwijderen
IF STRLEN(EANTxt) <> 12 THEN
ERROR('Ongeldige lengte EAN-code. EAN-code %1 is %2 lang.', pEANCode, STRLEN(pEANCode));
FOR i := 1 TO STRLEN(EANTxt) DO
IF CharToInt(EANTxt) = -1 THEN
ERROR('Ongeldig teken (%1) in EAN-code %2.', EANTxt, pEANCode);
checksum := 0;
FOR i := 2 TO 12 DO BEGIN
checksum := checksum + (CharToInt(EANTxt));
i := i + 1;
END;
checksum := checksum * 3;
FOR i := 1 TO 11 DO BEGIN
checksum := checksum + (CharToInt(EANTxt));
i := i + 1;
END;
EANTxt := EANTxt + FORMAT((10 - checksum MOD 10) MOD 10);
IF (STRLEN(pEANCode) = 13) AND (EANTxt <> pEANCode) THEN
MESSAGE('Andere Check Digit.\\Meegegeven Check Digit EAN-code: %1.\Berekende Check Digit EAN-code: %2.',
pEANCode[13], EANTxt[13]);
EXIT(EANTxt);
Is een extra controle, dat er alleen cijfers in de EAN-code zitten.
FOR i := 1 TO STRLEN(EANTxt) DO
IF CharToInt(EANTxt) = -1 THEN
ERROR('Ongeldig teken (%1) in EAN-code %2.', EANTxt, pEANCode);
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!
Bolko de pawlikowski
(CharToInt(EANTxt))
in english WHAT FUNTION IS ChartoInt?
Thanks,