Projekt

Allgemein

Profil

Barcode-Zentraldokument » Historie » Revision 2

Revision 1 ([X] Marcus F, 22.09.2016 10:39) → Revision 2/9 ([X] Marcus F, 22.09.2016 10:43)

h1. Barcode-Zentraldokument 

 h2. Pro Kunde / Lieferant individuell Informationen in Barcodes mitgeben 

 * 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 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  
  adkdbrid:=''; 
  SQL_PREPARE('SELECT dbrid FROM adk WHERE ad_krz=:adkrz '); 
  SQL_PARA_S('adkrz',<WorkSql."dokument_adresse_adressant">); 
  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!