Barcode-Zentraldokument » Historie » Revision 5
Revision 4 ([S] Philipp K, 05.10.2017 09:56) → Revision 5/9 ([S] Philipp K, 13.09.2018 09:39)
h1. Barcode-Zentraldokument
h2. Pro Kunde / Lieferant individuell Informationen in Barcodes mitgeben
* in Adressstamm unter Reiter Kontaktpflege im Fenster Eigenschaften die entsprechenden Parameter auswählen anwählen.
* verfügbar ab Version 12.06.00
* Parameter adk Stand 22.09.16
* Barcodes (Beispiel unten) werden nur gezeigt, wenn Information verfügbar (wenn es keine Bestellnr Kunde gibt, dann wird der Barcode nicht gedruckt)
<pre><code class="sql">
('Barcode Artikel-Nr.', 'Zentraldokument', 'ptBOOLEAN', 'adk', 'Zentraldokument.BC.ArtNr', 1),
('Barcode Beleg-Nr.', 'Zentraldokument', 'ptBOOLEAN', 'adk', 'Zentraldokument.BC.BelegNr', 2),
('Barcode Referenz Position', 'Zentraldokument', 'ptBOOLEAN', 'adk', 'Zentraldokument.BC.PosRef', 3),
('Barcode Artikel-Nr. Kunde', 'Zentraldokument', 'ptBOOLEAN', 'adk', 'Zentraldokument.BC.ArtRef', 4),
('Barcode Menge Position', 'Zentraldokument', 'ptBOOLEAN', 'adk', 'Zentraldokument.BC.PosMenge', 5)
('Barcode Beleg-Nr. Kunde', 'Zentraldokument', 'ptBOOLEAN', 'adk', 'Zentraldokument.BC.BelegKunde', 6);
</code></pre>
!http://redmine.prodat-sql.de/attachments/download/6217/barcodes-params.png!
h2. Zuweisung der Barcodes in Init und PosTxt Scripten (beispielhaft)
* Im Init.Script werden die Beleg Header Barcodes gefüllt, adkdbrid wird geholt
{{collapse(Init)
<pre><code class="sql">
var belegnr, belegkunde : Boolean;
begin
//dbrid der Kopfadresse für Auslesen von Eigenschaften zur Adresse (dokument_adresse_ident vefügbar ab 12.06.02 sonst muss die dbrid über ein Alternatives select geholt werden, zB über adk1 bzw adk2)
adkdbrid:='';
SQL_PREPARE('SELECT dbrid FROM adk WHERE ad_krz=:adkrz ');
SQL_PARA_S('adkrz',<WorkSql."dokument_adresse_ident">);
SQL_OPEN;
adkdbrid:=SQL_GETRESULTS('dbrid');
{BARCODE ANFANG}
If ( ((IsAfterReport=0)OR(IsAfterReport=2)) AND (<WorkSql."doktype_force">='lfs') ) then begin
// Barcode Paramter Header holen
SQL_PREPARE('SELECT TRecnoParam.GetBool(''Zentraldokument.BC.BelegNr'', :adkdbrid) AS belegnr, '+
#13#10+'TRecnoParam.GetBool(''Zentraldokument.BC.BelegKunde'', :adkdbrid) AS belegkunde');
SQL_PARA_S('adkdbrid',adkdbrid);
SQL_OPEN;
belegnr:=SQL_GETRESULTB('belegnr'); // vorerst nicht aktiv, da Standard aus ReportSettings überschrieben wir, DMS benötigt für automatisiertes Scannen den Dokumenttyp (LFS)
belegkunde:=SQL_GETRESULTB('belegkunde');
// Header Barcode aktivieren
ChildBarCode.Visible:=belegnr OR belegkunde OR (GetReportSettings_S('Header.BarcodeExprLifsch', '')<>'');
If belegnr Then Begin
// wir könnten die Nummer überschreiben, dann funktionieren allerdings keine PRODAT-Automatismen zB Datum setzen
//BarCode.Expression:='<WorkSql."dokument_nummer">';
//MemoBCText.Visible:=True;
//MemoBCText.Text:='Lfs.-Nr.';
End
Else Begin
BarCode.Expression:=GetReportSettings_S('Header.BarcodeExprLifsch', '');
End;
// Sekundärer Barcode Header links
If belegkunde Then Begin
BarCodeSek.Visible:=True;
BarCodeSek.Expression:='<WorkSql."dokument_nummer">';
MemoBCTextSek.Visible:=True;
MemoBCTextSek.Text:='Lfs.-Nr.';
End;
End; {BARCODE ENDE}
end.
</code></pre>
}}
* Im PosTxt.Script werden die Positionen-Barcodes gefüllt
{{collapse(PosTxt)
<pre><code class="sql">
var posref, artref, posmenge : Boolean;
begin
//Hauptausdruck und Lieferschein
If ( ((IsAfterReport=0)OR(IsAfterReport=2)) AND (<WorkSql."doktype_force">='lfs') ) then begin
// Barcode Positionen Paramter holen
SQL_PREPARE('SELECT TRecnoParam.GetBool(''Zentraldokument.BC.PosRef'', :adkdbrid) AS posref, '+
#13#10+'TRecnoParam.GetBool(''Zentraldokument.BC.ArtRef'', :adkdbrid) AS artref, '+
#13#10+'TRecnoParam.GetBool(''Zentraldokument.BC.PosMenge'', :adkdbrid) AS posmenge');
SQL_PARA_S('adkdbrid',adkdbrid);
SQL_OPEN;
posref:=SQL_GETRESULTB('posref');
artref:=SQL_GETRESULTB('artref');
posmenge:=SQL_GETRESULTB('posmenge');
// Pos Barcode aktivieren
ChildPosBarcode.Visible:=posref OR artref OR posmenge OR (GetReportSettings_S('Position.'+<r_dokutype>+'.BarcodeExpr1', '')<>'');
If posref AND NOT EMPTY(<position."referenz">) Then Begin
BarCodePosition1.Expression:='<position."referenz">';
MemoBCTextPos.Visible:=True;
MemoBCTextPos.Text:='Ihre'+<slinebreak>+'Bestell-Nr.';
End
Else If (GetReportSettings_S('Position.'+<r_dokutype>+'.BarcodeExpr1', '')<>'') Then Begin
BarCodePosition1.Expression:=GetReportSettings_S('Position.'+<r_dokutype>+'.BarcodeExpr1', '');
End
Else Begin
BarCodePosition1.Visible:=False; // Deaktivieren, da im Standard sichtbar
MemoBCTextPos.Visible:=False;
End;
If artref AND NOT EMPTY(<position."artikelnummer_adressant">) Then Begin
BarCodePosition2.Visible:=True;
BarCodePosition2.Expression:='<position."artikelnummer_adressant">';
MemoBCTextPos2.Visible:=True;
MemoBCTextPos2.Text:='Ihre'+<slinebreak>+'Artikel-Nr';
MemoBCTextAbstPos2.Visible:=True;
End;
If posmenge Then Begin
BarCodePosition3.Visible:=True;
BarCodePosition3.Expression:='<position."menge">';
MemoBCTextPos3.Visible:=True;
MemoBCTextPos3.Text:='Menge';
MemoBCTextAbstPos3.Visible:=True;
End;
End;
end.
</code></pre>
}}
* Label-Texte sind in diesem Beispiel noch nicht auf Trans-Variablen umgestellt ~ Auslandskunden
!http://redmine.prodat-sql.de/attachments/download/6214/barcodes-lfs.png!