erstmal Dank für die schnelle Antwort und die ersten Hinweise.
ich poste hier den anonymisierten Teil eines Lieferscheindrucks bei dem dieser beschriebene Fehler auftritt - allerdings auf dem Drucker für mich nicht reproduzierbar.
Dein Hinweis auf die Variable "cExemplar" ist wahrscheinlich bei der Fehlersuche entscheidend. Sie ist 1stellig Character und kann die Werte 1-5 annehmen. Dadurch, dass immer die 5te und die 13te Stelle des Barcode überdruckt wird ist meine Vermutung, dass der Barcode 2 mal gedruckt wird mit jeweil einer anderen(nächsten) Exemplarnummer.
Denn dieses Phänomen lässt sich bei der Druck-Vorschau (Preview) beim Druck von allen 5 Exemplaren reproduzieren- und es tritt nicht auf, wenn nur ein einzelnes Exemplar gedruckt(angezeigt) wird.
Was bei der Druck-Vorschau auch komisch ist, dass auch bei einseitigem Lieferschein (und nur ein Exemplar) eine 2te Seite angezeigt wird, auf der nur der Barcode angezeigt wird - sonst garnix.
Ich stehe vor einem ziemlichen Rätsel, da ich keine Stelle bei mir im Code finde, in dem der Barcode 2 mal gedruckt werden soll.
Code: Alles auswählen
/* erstellt 24.1.2015 hje
Drucken des Lieferscheins -> HBPrint im GUI/Grafikmodus
Spezialitaet: "Komplett" = 5 Kopien (identischer Inhalt) mit 4 Exemplaren mit
bunten Streifen am rechten Rand und alle mit einer "Empf„ngerzeile" unter dem Logo
Parameter: Lieferschein-Nummer / Formular(nummer) (0=alle5,1=Kunde,2=Spedi,3=Kommi,4=Lager,5=Dispo, 7=1+2+4)
Verwendung von HB_Print Class Spezialit„t - eigene Methode PrintInhalt definiert um denselben Liefer-
schein 5 mal mit Formularfarbe und Exemplar-Name zu drucken.
----------------------------------------------------------------------
Last change: HJE 04.08.2021 22:23:17
*/
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "xbpdev.ch"
procedure LiefWDru(cLiefersNr,nFormular)
local oHBPrinter
private n1TextZeile := 740 && Zeile 11
private n2TextZeile := 740 && Zeile 11
private cAusgabeTxt := "" && Zusammenbau von Textzeilen
oHBPrinter := LiefPrinter():New():create()
if oHBPrinter:IsPrinterError() // Fehler verhindern, avoid errors
cls
*N_meldung(2,"Standarddrucker ist nicht verfgbar !")
ErrBox("Standarddrucker ist nicht verfgbar !","Druckerfehler")
?
? "Status: ",oHBPrinter:printerStatus(),"=",cPrinterStatus(oHBPrinter:printerStatus())
?
wait
else
*---------------- Fonts nur einmal erzeugen - create fonts only once ------
#define HB_FONT_7Arial 1
#define HB_FONT_8Arial 2
#define HB_FONT_14Arial 3
#define HB_FONT_10Arial 4
#define HB_FONT_12Arial 5
#define HB_FONT_12Arialfett 6
#define HB_FONT_20Arial 7
oHBPrinter:addFont("7.Arial")
oHBPrinter:addFont("8.Arial")
oHBPrinter:addFont("14.Arial")
oHBPrinter:addFont("10.Arial")
oHBPrinter:addFont("12.Arial")
oHBPrinter:addFont({"Arial",12,.t.,.f.})
oHBPrinter:addFont({"Arial",20,.f.,.f.})
oHBPrinter:nDokument := nFormular && kommt als šbergabeparameter 0-5
oHBPrinter:acFormularTitel := { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition" }
oHBPrinter:nSeiteImDokument := 1 && muss extra verwaltet werden da 5 Dokumente geduckt werden
oHBPrinter:PrintingDialog( .t. ,; // ESC -> close
.t. ,; // ALT+Enter and Enter will Print
xbeK_ALT_P) // ALT+P will print
endif
if select("KuStamm") > 0
close KuStamm
endif
if select("Lieftext") > 0
close Lieftext
endif
if select("RechPos") > 0
close RechPos
endif
if select("ArtStamm") > 0
close ArtStamm
endif
if select("Baustell") > 0
close Baustell
endif
return
* Lieferscheindruckprogramm beendet
*-----------------------------------------------------------------------------------------------------
CLASS LiefPrinter from HBPrinter
EXPORTED:
METHOD Print // Alle variablen Druckausgaben werden hier definiert, wenn n”tig wird ein
// Seitenwechsel durchgefhrt, der Seitenz„hler erh”ht und ::PrintForm() aufgerufen.
METHOD PrintForm // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der k”nnte unn”tig sein (1.Seite).
// Never call ::NewPage() inside.
METHOD PrintInhalt // konstanten Inhalt der 5 Kopien der variablen Anteile von Print
VAR nDokument // wenn mehre (in unserem Fall maximal 5) in einem Druckjob sind, muss man sie sich merken
VAR nFormularArt // hier wird in Print() "0=alle5",1="Kunde",2=Spedi,3=Kommi,4=Lager,5=Dispo" eingetragen
// und PrintForm() reagiert mit Titel und Farbe
VAR cFormularFarbe // als Farbwert vor dem Aufruf von PrintKopf() oder als Array wenn FormularArt als Index dient.1=weiss,2=grau,3=rot,4=gelb,5=blau
VAR acFormularTitel // { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition"]
// => ::FormularTitel[::FormularArt] => "Exemplar fr Kunde" bei ArrayPlatz[1]
VAR nSeiteImDokument // bei mehreren gleichen Exemplaren in einem Druckjob, passt der eingebaute Seitenz„hler nicht mehr, selbst verwalten !
ENDCLASS
*-------------------------------------------------------------
* die folgenden Methoden anpassen - folowing methods has to be modified
*-------------------------------------------------------------
METHOD LiefPrinter:PrintForm() // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der k”nnte unn”tig sein (1.Seite).
// Never call ::NewPage() inside.
local altFont, cText,cAusgabeTxt ,at_pseudo
local nSelectMerk := 0 // um zum Kundenstamm wechseln zu k”nnen wegen Verarbeiter-Suche
local aAttribAlt // Array um Farbattribute zu merken
MEMVAR n1TextZeile, n2TextZeile, cBauOrt, cBauStrasse, cBauPLZ, cBauBemerk, cAvisMobil, cBauName
MemVar cGewichtDruck , cSpedName
altFont := ::SetFont(HB_FONT_10Arial)
// Kopf mit Logo drucken kopf.jpg muss im Verzeichnis stehen
::PrintBmp(180,400,1800,320,"kopf.jpg")
::SetFont(HB_FONT_10Arial) && ca 52 Zeilen/Seite
do case
case ::nSeiteImDokument = 1
::PrintText( 200,495, rtrim(Kustamm->Kuname)+rtrim(" "+kustamm->KuNamZu)) // Kundenname in Zeile 6
cAusgabeTxt := dtoc(lieftext->liefdatum) // Lieferschein-Belegdatum
::PrintText( 1992,544, cAusgabeTxt,"R") // Datum auf Zeile 7 Drucken
::PrintText( 200,593, Kustamm->KUSTRASSE) // in Zeile 8
cAusgabeTxt := "Unser Zeichen: "+ Name_lang(LiefText->PName_Kurz) // Unser zeichen
::PrintText( 1992,593, cAusgabeTxt,"R") // Unser zeichen auf Zeile 8 Drucken
cAusgabeTxt := "eMail: "+eMail_Adr(LiefText->PName_Kurz)
::PrintText( 1992,642, cAusgabeTxt,"R") // Mailadresse auf Zeile 9 Drucken
*mehrerer Printtext-Ausgaben
if len(trim(LiefText->KuBestNr)) > 0
::PrintText( 200,n1TextZeile, "Kundenbestellnummer: "+LiefText->KuBestNr) // maximal in Zeile 16
n1TextZeile := n1TextZeile +::LineFeed()
endif
n1TextZeile := n1TextZeile +::LineFeed()
n2TextZeile := n1TextZeile
*Barcode
::PrintBarCodeEan13(1640,n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1)),1.0) && barcode drucken
otherwise
n2TextZeile := 544 && zeile 7
endcase
* Formularexemplar(fr wen) direkt unter Logo HB_FONT_12Arialfett
* 1892 als rechten Rand gew„hlt um bndig mit Aussenrand Logo zu sein
cAusgabeTxt := ::acFormularTitel[::nFormularArt] // Welches der 5 Exemplare wird gerade gedruckt = oHBPrinter:nFormularArt
::SetFont(HB_FONT_12Arialfett) && groáe Schrift
::PrintText( 1992,446, cAusgabeTxt,"R") // Exemplarempf„nger auf Zeile 5 Drucken (20.4.2020 von 6 auf 5)
::SetFont(HB_FONT_20Arial) && groáe Schrift
::PrintText(200,n2TextZeile, "LIEFERSCHEIN Nr. "+ltrim(lieftext->liefersnr) ) // Text fr alle Seiten - text for all pages
::SetFont(HB_FONT_10Arial) && zurck auf Normalschrift
::PrintTextAlltrim := .f. // fhrende Blanks mit drucken !
cAusgabeTxt := "Kundennummer "+LiefText->KUNUMMER
cText ="Hinweis: Aus versicherungstechnischen Grnden "+;
"Verladung der Ware selbst verantwortlich!"
::SetFont(HB_FONT_7Arial)
if cSpedName = "Selbstabholer"
*rot drucken und nur wenn selbstabholer
::PrintMemo( 200, 2679 , cText, "L",,,GRA_CLR_RED,,2725) // Fusszeile ab Zeile ?
endif
cText := "4 zeiliger text"
::PrintMemo( 200, 2747 , cText, "L",,,,,2936) // Fusszeile ab Zeile 51
//::PrintMemo( nPosX, nPosY, cTxt, cAusrichtung, nMaxLen, cArt, nFarbe, cHochQuer, nMaxBis,nLineFeed )
::SetFont(altFont)
*GRA_CLR_BLUE Blau
*GRA_CLR_RED Rot
*GRA_CLR_YELLOW Gelb
*GRA_CLR_PALEGRAY Hellgrau
*GRA_CLR_WHITE Weiá
aAttribAlt := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_WHITE }} ) // Farblos als Grundeinstellung
do case
case ::nFormularArt = 1 && Kunde /weiss
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_WHITE }} )
case ::nFormularArt = 2 && Spedition /grau
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_PALEGRAY }} )
case ::nFormularArt = 3 && Kommission / rot
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_RED }} )
case ::nFormularArt = 4 && Lager / gelb
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_YELLOW }} )
case ::nFormularArt = 5 && Disposition / blau
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_BLUE }} )
endcase
::PrintBox(2030,472,50,2710,"R", GRA_FILL ) // Parameter nFill => GraBox()
::ReSetAttrArea( aAttribAlt )
return self
*-------------------------------------------------------------
METHOD LiefPrinter:Print() // Alle variablen Druckausgaben werden hier definiert, wenn n”tig wird ein
// Seitenwechsel durchgefhrt, der Seitenz„hler erh”ht und ::PrintForm() aufgerufen.
local i ,nPosY
* Versuch Seitennummer 1 nicht setzen (auf default vertrauen) (dann wird nur Seite 2 ohne 1 in Vorschau angezeigt)
::nPageNo := 1
::lFirstPageForm := .t. // Formular 1. Seite noch nicht gedruckt - form 1. page not printed
::SetFont(HB_FONT_10Arial)
if str(::nDokument,1,0) $ "12345" && Einzelformuladruck nur 1-5 zul„ssig (nicht bei 0 und 7und 8)
::nFormularArt := ::nDokument && kommt als šbergabeparameter 1-5
::nSeiteImDokument := ::nPageNo
::PrintForm() // nur gewnschte Kopie-Nr (1-5) drucken
::PrintInhalt()
endif
if ::nDokument = 0 && alle 5 Kopien nacheinader ausgeben
for i = 1 to 5
* ab 8.9.2016 Formular Druckreihenfolge 3 1 2 4 5
* ::nFormularArt := i && 1-5 in derselben Reihenfolge(bis 8.9.16)
do case
case i = 1
::nFormularArt := 3
nPosY := ::nFirstLine
::nSeiteImDokument := ::nPageNo
*::NewPage()
::PrintForm()
::PrintInhalt()
case i = 2
::nFormularArt := 1
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
case i = 3
::nFormularArt := 2
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
case i = 4
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
case i = 5
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
endcase
next
endif
return self
*-------------------------------------------------------------
* die folgenden Methoden anpassen - folowing methods has to be modified
*-------------------------------------------------------------
METHOD LiefPrinter:PrintInhalt() // Alle variablen Inhalte pro Lieferschein - die aber konstant pro Kopie bleiben,
local PosX, PosY
local nAnzVollPal := 0 && Bei Umrechnungsm”glichkeit Anzahl volle Paletten
local nAnzRestStueck := 0 && Bei Umrechnungsm”glichkeit Anzahl Rest in Stck
local nAnzLagen := 0 && Bei Umrechnungsm”glichkeit Anzahl komplette Lagen
local cAusgabeTxt := ""
MEMVAR n1TextZeile, n2TextZeile
MemVar cSpedName , cArbeitsort,cGewichtDruck
private sum_qm := 0.00 && QM pro Lieferschein summieren
private PosXMenge := (387+60) && spalten merken frs drucken rechtsbndig (alle +60 nach rechts-29.1.15)
private PosXMeh := (407+60) && spalten merken frs drucken
private PosXArtNummer := (494+60) && spalten merken frs drucken
private PosXArttext := (790+50) && Abstand zu rechtem Rand ?
private cLogDatei := ConfDat("LiefLogW.TXT") && um bei Bedarf Zwischenwerte zu speicher mit set alternate
PosX := 200 && linker Rand erste Printposition
do case
case ::nSeiteImDokument = 1
::nFirstLine := n1TextZeile
otherwise
::nFirstLine := n2TextZeile
endcase
PosY := ::nFirstLine && erst jetzt ist PosY richtig besetzt (HB)
select RechPos
set relation to RechPos->artnummer into artstamm
seek LIEFTEXT->LIEFERSNR && Positionsendatei steht auf erster Position
do while RechPos->LIEFERSNR = LIEFTEXT->LIEFERSNR .and. .not. eof()
if (PosY+::LineFeed(5)) >= 2748 .or. PosY < 0 // Passen 5 Zeilen(=1 Position noch hin oder ist voll (Zeile 51=2700 =Unterkante Zeile 51)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(1992, 2700 ,"Fortsetzung ->","R") // Zeile 51
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
PosX := 200
*PosY := ::nFirstLine
PosY := n2TextZeile
endif
::PrintText( PosX+60, PosY ,RechPos->LIEFPOSNR,"R",60)
::PrintText( PosXMenge, PosY ,Transform(RechPos->LIEFMENGE,"@E 99,999.99"),"R",210)
do case
case RechPos->MERECH = "QM "
::PrintText( PosXMeh, PosY ,"mý ")
if val(Artstamm->EloesKonto) = 10 // QM Summen ermitteln
sum_qm := sum_qm+RechPos->liefmenge
endif
case RechPos->MERECH = "M "
::PrintText( PosXMeh, PosY ,"m ")
case RechPos->MERECH = "CBM"
::PrintText( PosXMeh, PosY ,"CBM") // noch fr hoch 3 suchen
case RechPos->MERECH = "ST "
::PrintText( PosXMeh, PosY ,"St.")
case RechPos->MERECH = "L "
::PrintText( PosXMeh, PosY ,"l ")
otherwise
::PrintText( PosXMeh, PosY ,RechPos->merech)
endcase
* PosXArtNummer := PosX && beginn der Stelle fr die Artikelnummer merken wg ™norm
::PrintText( PosXArtNummer, PosY ,RechPos->ARTNUMMER)
::PrintText( PosXArttext, PosY,ArtTextZeile(1,65),"L") && ohne L„ngenbegrenzung
PosY += ::LineFeed()
if rechpos->liefstueck <> 0 .and. .not. rtrim(ARTSTAMM->MERECH) $ 'ST,SET'
::PrintText( PosXMenge, PosY ,Transform(RechPos->liefstueck,"@E 999,999"),"R",210)
::PrintText( PosXMeh, PosY ,"St.")
endif
if len(trim(ArtTextZeile(2,65))) > 0
::PrintText( PosXArttext, PosY ,ArtTextZeile(2,65))
if len(trim(ArtTextZeile(3,65))) > 0
PosY += ::LineFeed()
::PrintText( PosXArttext, PosY ,ArtTextZeile(3,65))
endif
if len(trim(ArtTextZeile(4,65))) > 0
PosY += ::LineFeed()
::PrintText( PosXArttext, PosY ,ArtTextZeile(4,65))
endif
endif
if rechpos->Liefstueck <> 0
cAusgabeTxt := "" && Text leeren, denn falls Umrechnung nicht m”glich wird sonst der letzte Text ausgegeben
if artstamm->STPROPAL > 0
nAnzVollPal := int(rechpos->Liefstueck / Artstamm->StProPal)
nAnzRestStueck := rechpos->Liefstueck % artstamm->StProPal
cAusgabeTxt := "kompl ="+ltrim(str(nAnzVollPal,3,0))
if artstamm->STPROLAGE > 0
if nAnzRestStueck <> 0
nAnzLagen := int(nAnzRestStueck / artstamm->StProLage)
nAnzRestStueck := nAnzRestStueck % artstamm->StProLage
if nAnzLagen <> 0
cAusgabeTxt := cAusgabeTxt + " Lagen ="+ltrim(str(nAnzLagen,3,0))
endif
endif
if nAnzRestStueck <> 0
cAusgabeTxt := cAusgabeTxt + " lose Stck ="+ltrim(str(nAnzRestStueck,3,0))
endif
endif
endif
if len(trim(ArtTextZeile(2,65))) > 0 && Neu Zeile nur wenn 2te Artikeltextzeile vorhanden
PosY += ::LineFeed() && sonst in dieselbe Zeile drucken wie "Stckzahl"
endif
::PrintText( PosXArttext, PosY ,cAusgabeTxt)
endif
if len(trim(Artstamm->OeNorm)) > 0
PosY += ::LineFeed()
::PrintText(PosXArtNummer, PosY ,"™Norm/DIN")
::PrintText(PosXArttext, PosY ,ARTSTAMM->oenorm)
endif
skip+1
PosY += ::LineFeed() && Zeilenvorschub
PosX := 200 && Startwert linker Rand
enddo
if sum_qm > 0 // Summe QM pro LiefText speichern
select LiefText
reclock(30)
LiefText->LIEFSUQM := sum_qm
dbcommit()
dbunlock()
endif
if (PosY+::LineFeed(10)) >= 2728 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll (Zeile 59=2727 =Unterkante Zeile 59)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F O R T S E T Z U N G -->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosX := 200
PosY := n2TextZeile
endif
PosX := 200 && linken Rand wieder auf 200 setzen
PosY += ::LineFeed(2) && Zeilenvorschub 2 zeilen(damit 1 Leerzeile ensteht)
// --- Einmalige Lieferschein Fusstexte
if cSpedName = "Selbstabholer"
if (PosY+::LineFeed(12)) >= 2749 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll Zeile 51 endet bei 2748
PosX := 230
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F o r t s e t z u n g-->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosY := n2TextZeile
endif
::PrintText(PosX, PosY , "Transport .")
if kustamm->KULAND <> "DE"
PosY += ::LineFeed(1) && Zeilenvorschub
::PrintText(PosX, PosY ,"Auslieferung ")
endif
else
::PrintText(PosX, PosY , "Gefahren durch: "+trim(substr(cSpedName,1,30))+" Rckgabe.")
endif
if cGewichtDruck = "J"
PosY += ::LineFeed(1) && Zeilenvorschub
::PrintText(PosX, PosY , "Objekt Nr:" + str(LiefText->LiefGewi,8,0))
::PrintText(PosXArttext, PosY ,"Abgeladen")
endif // if cGewichtDruck = "J"
PosY += ::LineFeed(2) && Zeilenvorschub
::PrintText(PosX, PosY , "_____________________________")
if cArbeitsort = "DS"
if (PosY+::LineFeed(9)) >= 2749 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll Zeile 51 endet bei 2748
PosX := 230
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F o r t s e t z u n g-->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosY := n2TextZeile
endif
PosY += ::LineFeed(2) && Zeilenvorschub
::SetFont(HB_FONT_12Arialfett)
::PrintText(PosX, PosY ,">> Qualit„t ")
::SetFont(HB_FONT_10Arial)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," KG")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," Lager")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," An ")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," 7")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," T")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," F")
endif
return self
*---------------------------------------------------------------------------------------
/*
Name : Make_LS_EAN13(Lieftext->Liefersnr,cExemplar)
Does : generiert aus der Lieferscheinnummer und dem Exemplar einen 13stelligen EANCode
Parameters : Lieferscheinnummer(mit fhrenden 0) und Exemplar beide caracter
Returns : EAN-Code fr das jeweilie Lieferscheinexemplar
Notes : Konzeptionell setzt sich der EAN fr Lieferscheine folgendermassen zusammen:
- Stelle 1 = "2" ->Festlegung fr "private" EAN13-Numern
- Stelle 2-4 = "230" ->Dokumentenschlssel
- Stelle 5 = "1"-"5" ->fr die Subkategorie der Lieferscheine
- Stelle 6 = "0" ->aktuell nicht benutzt
- Stelle 7-12 = 6-stellige Lieferscheinnummer mit fhrender 0
- Stelle 13 ="?" ->Werte 0-9 ist die Prfziffer fr EAN13
Author : hje
Date Created : 17.04.2021
Time Created : 19:17
*/
FUNCTION Make_LS_EAN13(cLiefSNr,cExemplar)
local cEan13Nr := ""
local cEan12 := "2230"+cExemplar+"0"+strZero(val(cLiefSNr),6,0)
* Zusammensetzen
cEan13Nr := cEan12+GraBarcodeEAN13_CalcCheckDigit(cEan12)
RETURN (cEan13Nr)
*---------------------------------------------------------------------------------------
* eof LiefWDru