87 lines
4.6 KiB
Plaintext
87 lines
4.6 KiB
Plaintext
if ( P_doctype == "D95") // Eingangslieferschein
|
|
{
|
|
vars DDF3[5000] // LiefNr
|
|
vars DDF16[5000] // Lieferant
|
|
vars DDF33[5000] // externe BelegNr
|
|
vars DDF50[5000] // Datum
|
|
vars DDF60[5000] // Charge
|
|
vars DDF61[5000] // Artikelnummer
|
|
vars DDF62[5000] // interne BelegNr
|
|
vars ergebnis
|
|
vars i // Zähler
|
|
vars anzahl // Anzahl der Treffer
|
|
|
|
// Führende Nullen im Barcode entfernen
|
|
ergebnis = api_function( "string_cut_leading_char", dok_dat_feld[ 41 ], "0" )
|
|
|
|
if ( ergebnis >= 0 )
|
|
{
|
|
// Nullen wurden aus dem Barcode entfernt
|
|
dok_dat_feld[ 41 ] = api_converted_string
|
|
|
|
|
|
// Ermittlung der Eigenschaftswerte aus der Datenbank
|
|
DBMS DECLARE TA_Session CONNECTION FOR USER 'informix' PASSWORD 'informix' DATASOURCE 'Firma1'
|
|
|
|
DBMS WITH CONNECTION TA_Session ALIAS DDF3, DDF16, DDF50, DDF33, DDF62, DDF60, DDF61
|
|
DBMS WITH CONNECTION TA_Session SQL \
|
|
SELECT wei_liefnr, kr1_nam, wei_liefdat, wei_liefsnr, wei_bestnr, wei_charge, wei_artikel \
|
|
FROM v2_flwein \
|
|
WHERE wei_lbarcode = :dok_dat_feld[ 41 ]
|
|
anzahl = @dmrowcount
|
|
DBMS WITH CONNECTION TA_Session ALIAS
|
|
|
|
|
|
DBMS CLOSE CONNECTION TA_Session
|
|
|
|
|
|
if ( anzahl > 0 )
|
|
{
|
|
// Jeder Datensatz muss vollständige Eigenschaftswerte enthalten - die DDF-Zuweisung basiert dann auf dem ersten DB-Treffer
|
|
|
|
// LiefNr
|
|
dok_dat_feld[ 3 ] = DDF3[ 1 ]
|
|
|
|
// Lieferant
|
|
dok_dat_feld[ 16 ] = DDF16[ 1 ]
|
|
|
|
// interne BelegNr
|
|
// fällt weg wg. Umstellung auf Mehrfachindexfeld DDF62
|
|
//dok_dat_feld[ 29 ] = DDF29[ 1 ]
|
|
|
|
// externe BelegNr
|
|
dok_dat_feld[ 33 ] = DDF33[ 1 ]
|
|
|
|
// Datum
|
|
if ( @length( DDF50[ 1 ] ) > 0 )
|
|
{
|
|
dok_dat_feld[ 50 ] = DDF50[ 1 ]( 7, 2 ) ## "." ## DDF50[ 1 ]( 5, 2 ) ## "." ## DDF50[ 1 ]( 1, 4 )
|
|
}
|
|
|
|
// Charge und Artikelnummer
|
|
// CUR_60ER_FIELD_NR = 500
|
|
for i = 1 while i <= 500
|
|
{
|
|
// Artikelnummer und Charge müssen immer beide gefüllt sein; daher darf die folgende Abfrage ausschließlich auf der Charge basieren
|
|
if ( DDF60 != "" )
|
|
{
|
|
dok_dat_feld_60[ i ] = DDF60[ i ]
|
|
dok_dat_feld_61[ i ] = DDF61[ i ]
|
|
dok_dat_feld_62[ i ] = DDF62[ i ]
|
|
}
|
|
else
|
|
{
|
|
dok_dat_feld_60[ i ] = ""
|
|
dok_dat_feld_61[ i ] = ""
|
|
dok_dat_feld_62[ i ] = ""
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
call api_log_error( "Es ist ein Fehler beim Entfernen der führenden Nullen aus dem Barcode aufgetreten. RC:" ## ergebnis )
|
|
}
|
|
} |