Controle checksum barcodes

Patrick_Leunissen
Member Posts: 5
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
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
-
Which language is that??0
-
It's posted in the "Navision Dutch speaking only" forum. So take a guess.No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)0
-
Ik heb onderstaande functie EAN13 gemaakt in tabel 27 Item.
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);Keep It Simple and Stupid (KISS), but never oversimplify.0 -
O, onderstaand stukje kan je weglaten.
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);Keep It Simple and Stupid (KISS), but never oversimplify.0 -
Beter laat dan nooit : kijk in de online help : STRCHECKSUMRegards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0 -
Could some one translate this Code in English?
Bolko de pawlikowski0 -
hI,
(CharToInt(EANTxt))
in english WHAT FUNTION IS ChartoInt?
Thanks,
fverkel wrote:Ik heb onderstaande functie EAN13 gemaakt in tabel 27 Item.
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);0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions