# Makro Kunden und Lieferanten Installation

**Makro Stammdatenpflege:**

Bei der Rechnungserkennung werden Detaildaten der Kunden/Lieferanten in die Buchhaltung übermittelt:

- Name, Zusatzname
- Strasse
- Postleitzahl, Ort, Land
- UID Nummer + Stufe 2 Prüfdatum
- IBAN
- Zahlungskonditionen

Diese können makrounterstützt zur einfachen Pflege des Kunden/Lieferantenstammes eingesetzt werden.

# Makro Installation

1. Aktuelles Makro: [feldmakro\_v3.11.txt](https://help.logisth.ai/attachments/2)

<p class="callout warning">**ACHTUNG!** Bitte beachten Sie, dass Sie das Makro zunächst herunterladen müssen. Öffnen Sie es **nicht direkt im Browser** und kopieren Sie den Inhalt nicht aus der Browseransicht.</p>

2. In der Vorerfassung für einen beliebigen Klienten im Eingangs- oder Ausgangsrechnungsbuch auf einen bestehenden Datensatz im Bearbeitungsmodus gehen und mit der rechten Maustaste auf das blaue Kästchen klicken und anschließend Feldeigenschaften auswählen.

<p class="callout warning">**Achtung**: Berechtigung zum Erstellen/Ändern von Makros muss vorhanden sein.</p>

<figure class="center" id="bkmrk-">![](https://help.logisth.ai/media/live/makr01.png)</figure> 2.1 Wenn die Feldeigenschaften nicht sichtbar sind, überprüfen Sie bitte Ihre BMD-Rechte oder führen Sie folgende Schritte aus:

- In der Vorerfassung - rechte Seite der Maske, befinden sich 3 Punkte zur Feldauswahl.
- Wenn Sie diese auswählen, gelangen Sie zum Feldauswahlfenster.

<figure class="center" id="bkmrk--2">![](https://help.logisth.ai/media/live/makro2.png)</figure>- Wählen Sie die Bezeichnung "Lieferanten" aus, im unteren Teil befinden sich die Feldeigenschaften.

<figure class="center" id="bkmrk--4">![](https://help.logisth.ai/media/live/jovq2-h6ej0thzeqmbr34wcugnzy76swrw.jpg)</figure>3. Feldeigenschaften Feldmakro anlegen: **Doppelklick links neben der Checkbox "Makro"**

<figure class="center" id="bkmrk-checkbox-makro">![](https://help.logisth.ai/media/live/gnf8tjd5p8j4rbgy4-tie7iee7zirb4kqw.jpg)<figcaption>*Checkbox Makro* </figcaption></figure>4. Wenn Sie das Makro zum **ersten Mal** erstellen, gehen Sie bitte in den Makro-Editor, schalten Sie in den **Expertenmodus** und fügen Sie den Makrotext per Copy and Paste ein.
5. Optionen richtig einstellen ab ca. Zeile 20

<figure id="bkmrk--5">![](https://help.logisth.ai/media/live/tttt.png)</figure>6. Anschließend **kompilieren und speichern** Sie das Makro und es sollten keine Fehler auftreten.

### Makro Parameter

- **do\_show\_kdlf** steuert die Anzeige des Pop-ups bei der Neuanlage oder Änderung eines Kunden bzw. Lieferanten:
- **1:** anzeigen,
- **0:** nicht anzeigen
- **do\_auth** Aktivierung des Makros oder der kundenspezifischen Steuerung:
- **1:** Steuerung über das Frei Feld - FWF\_FREIFELDA01\_50,
- **0:** makro immer aktiv
- **do\_modify\_buchungstext** Buchungstext vom Kunden/Lieferanten übernehmen:
- **1:** buchungstext ändern auf Name des Lieferanten/Kunden
- **0:** keine buchungstext ändern auf Name des Lieferanten/Kunden

// ============================================== // Erstelldatum : 12.07.2019 01:50:36 // Ersteller : arewa // Eingerichtet von/am : AREWA // Beschreibung : Feldmakro Lieferant // Version 1.0 vom 12.07.2019 // Version 2.0 vom 12.07.2020 // Version 3.0 vom 12.10.2022 mit konditionen // Version 3.1 vom 20.01.2023 ohne FibuMacroObject für bmd.com + matchcode setzen bei kdlf // Version 3.2 vom 13.03.2023 no BMD\_CRLF // Version 3.3 vom 25.04.2023 do\_show\_kdlf geht wieder // Version 3.4 vom 10.05.2023 logging print dump\_logfile // Version 3.5 vom 30.08.2023 no exec\_sql // Version 3.6 vom 02.11.2023 import kdlf file handle + unique file + delete // Version 3.7 vom 23.11.2023 disable VorerfassenModel.SetValue('MCA\_VEB\_UIDNR', per\_uidnr); // Version 3.8 vom 08.12.2023 firmengruppen // Version 3.9 vom 01.02.2024 update person auch wenn iban, zahlsperre // Version 3.10 vom 21.11.2024 take lowest personenkreis // Version 3.11 vom 19.12.2022 kontoinhaber, zahlsperre2 // ============================================== Var FirmenNr :String; FibuNr :String; BS :String; kdlf\_string :String; vorerf\_typ: Integer; VorerfassenModel :MacroObject; do\_show\_kdlf: Integer; do\_modify\_buchungstext: Integer; do\_auth: Integer; created\_list: MacroObject; fh\_bmd\_log: TBMDInt; //------------------------------------------------------------------------------ // Parameter festlegen - Kunde/Lieferant nach Änderung anzeigen JA/NEIN //------------------------------------------------------------------------------ function initParams; begin do\_show\_kdlf := 1; // 1: anzeigen, 0: nicht anzeigen do\_auth := 0; // 1: Steuerung über FWF\_FREIFELDA01\_50, 0: makro immer aktiv do\_modify\_buchungstext := 1; // 1: buchungstext ändern auf Name des Lieferanten/Kunden end; // ================================================================================ // ================================================================================ function get\_auth (FirmenNr: String; FibuNr: String); begin Result := 15; if not do\_auth then begin exit; end; //BMD\_FirmenwerteFibu := FibuMacroObject.CreateFMacroFirmenwerteFibu('eindeutige FirmenwerteFibuObj-ID'); //BMD\_FirmenwerteFibu.Load(FirmenNr, FibuNr); //Result := BMD\_TEXTTONUMDEF (BMD\_FirmenwerteFibu.GetValue('MCA\_FWF\_FREIFELDA01\_50')) sqlText := 'SELECT FWF\_FREIFELDA01\_50 FROM FIBU.FWF\_FIRMENWERTEFIBU WHERE FWF\_FIRMENNR = :firmennr AND FWF\_FIBUNR = :fibunr'; iQuery := MacroObject.CreateMacroQuery('fetch\_fwf\_freifeld'); iQuery.setSQLText (sqlText); iQuery.setParamAsString('firmennr', FirmenNr); iQuery.setParamAsString('fibunr', FibuNr); iQuery.Open(); if (iQuery.RecordCount() &gt; 0) then begin Result := BMD\_TEXTTONUMDEF (iQuery.getAsString ('FWF\_FREIFELDA01\_50')); end; iQuery.close(); end; // ================================================================================ procedure fetch\_json (var json\_string, json\_learned, fibunr, name, zusatzname, addresse, ort, plz, land\_id, uid, uid\_status, iban1, iban2, iban3, uid\_datum, kondition, zahlsperre, account\_holder); begin json := MacroObject.CreateMacroJsonVal(); json.ParseJson(json\_string); if json.KeyExists ('N1') then begin name := json.GetValueAsString('N1'); end; if json.KeyExists ('N2') then begin zusatzname := json.GetValueAsString('N2'); end; if json.KeyExists ('A') then begin addresse := json.GetValueAsString('A'); end; if json.KeyExists ('H') then begin account\_holder := json.GetValueAsString('H'); end; if json.KeyExists ('C') then begin ort := json.GetValueAsString('C'); end; if json.KeyExists ('P') then begin plz := json.GetValueAsString('P'); end; if json.KeyExists ('CC') then begin land\_id := json.GetValueAsString('CC'); end; if json.KeyExists ('U') then begin uid\_status := json.GetValueAsString('U'); end; if json.KeyExists ('TS') then begin uid\_timestamp := json.GetValueAsString('TS'); end; if json.KeyExists ('I1') then begin iban1 := json.GetValueAsString('I1'); end; if json.KeyExists ('I2') then begin iban2 := json.GetValueAsString('I2'); end; if json.KeyExists ('I3') then begin iban3 := json.GetValueAsString('I3'); end; if json.KeyExists ('Z') then begin zahlsperre := json.GetValueAsString('Z'); end; if json.KeyExists ('KD') then begin kondition := json.GetValueAsString('KD'); end; else begin kondition := '0'; end; if (uid\_status = '1') then begin uid\_datum := uid\_timestamp; uid\_status := 'GÜLTIG, geprüft am ' + uid\_timestamp; end; else if (uid\_status = '4') then begin uid\_status := 'UNGÜLTIG'; end else if (BMD\_LEN (uid\_status) &gt; 0) then begin // nur wenn es einen status gibt uid\_status := 'NICHT GEPRÜFT'; end; json.ParseJson(json\_learned); if json.KeyExists ('U') then begin uid := json.GetValueAsString('U'); end; end; // ================================================================================ function show\_kdlf (FirmenNr: String; FibuNr: String; personenid: String); begin if do\_show\_kdlf = 1 then begin lParams := 'STP\_CUS\_COMPANYNO=' + FirmenNr + ',STP\_CUS\_CUSTOMERID=' + personenid; if vorerf\_typ = 3 then begin // ER lParams := lParams + ',KLI\_ISTLIEFERANT=1'; end; BMD\_STARTFUNCTION('MCS\_MDKUNDE\_EDIT\_CREATE',lParams); end; end; // ================================================================================ function get\_next\_free\_kdlf\_nummer (FirmenNr: String; buchsymbol: String; FibuNr: String); begin iQuery := MacroObject.CreateMacroQuery('fetch\_nummernkreis'); sqlText := 'SELECT PNK\_FIRMENKATEGORIELFDNR, PNK\_VONNR, PNK\_BISNR FROM BUERO.PNK\_PERSONNUMMERNKREIS INNER JOIN FIBU.VBV\_VORERFASSBUCH on VBV\_FIRMENNR = PNK\_FIRMENNR and VBV\_FIBUNR=:fibunr and VBV\_BUS\_BUCHSYMSYMBOL=:buchsymbol WHERE PNK\_FIRMENNR = :firmennr AND PNK\_PERSONKZNR = iif (VBV\_VORERFASSTYP = 4, 1, iif (VBV\_VORERFASSTYP = 3, 2, 99999)) ORDER BY PNK\_FIRMENKATEGORIELFDNR'; // WHERE PNK\_FIRMENKATEGORIELFDNR=1 iQuery := MacroObject.CreateMacroQuery('fetch\_kreise'); iQuery.setSQLText (sqlText); iQuery.setParamAsString('firmennr', Firmennr); iQuery.setParamAsString('fibunr', FibuNr); iQuery.setParamAsString('buchsymbol', buchsymbol); iQuery.Open(); if (iQuery.RecordCount() &gt; 0) then begin from\_konto := iQuery.getAsString('PNK\_VONNR'); to\_konto := iQuery.getAsString('PNK\_BISNR'); iQuery.close(); sqlText := 'SELECT min(P.PER\_PERSONENNR)+1 as MIN\_NR FROM BUERO.PER\_PERSON P WHERE P.PER\_PERSONENNR between :from and :to and not exists (select 1 from BUERO.PER\_PERSON C, BUERO.KLI\_KUNDE\_LIEFERANT A WHERE C.PER\_PERSONENNR = P.PER\_PERSONENNR+1 AND C.PER\_FIRMENNR in ( SELECT FIG\_FIRMENNR FROM BUERO.FIG\_FIRMENGRUPPENZU A WHERE A.FIG\_GRUPPE\_FIRMENNR = (select B.FIG\_GRUPPE\_FIRMENNR FROM BUERO.FIG\_FIRMENGRUPPENZU B WHERE B.FIG\_FIRMENNR = :firmennr) union select :firmennr ) AND C.PER\_PERSONENART = ''KL'' AND C.PER\_JAHR &gt;= 0 AND C.PER\_ISTAKTUELLUNTERNR &gt;= 1 AND A.KLI\_FIRMENNR = C.PER\_FIRMENNR AND A.KLI\_KLID = C.PER\_PERSONENID AND A.KLI\_KLUNTERNR = C.PER\_PERSONUNTERNR)'; iQuery := MacroObject.CreateMacroQuery('next\_nummer'); iQuery.setSQLText (sqlText); iQuery.setParamAsString('firmennr', Firmennr); iQuery.setParamAsString('from', from\_konto); iQuery.setParamAsString('to', to\_konto); iQuery.Open(); if (iQuery.RecordCount() &gt; 0) then begin next\_kdlf := iQuery.getAsString('MIN\_NR'); iQuery.close(); Result := next\_kdlf; end; end; end; // ================================================================================ procedure get\_KDLF (var personenid, kontonr, uid, uid\_datum, name, zusatzname, strasse, plz, land\_id, iban1,iban2,iban3, kondition, zahlsperre, account\_holder); begin Result := ''; personenid := ''; sqlText := 'SELECT PER\_NAME as NAME, isnull (PER\_ZUSATZNAME, '''') as ZUSATZNAME, isnull (PER\_UIDNR, '''') as VATREGNO, PER\_PERSONENID as PERSONENID, isnull (BAI\_IBAN, '''') as IBAN, isnull (BAI\_KONTOINHABER, '''') as account\_holder, isnull (ADR\_STRASSE, '''') as ADDRESSE, ADR\_PLZ as PLZ, isnull (KOD\_KONDLFDNR, 0) as KOND, isnull (LAN\_ISO\_CODE, ''AT'') as COUNTRY, isnull (iif (KTO\_KONTENGRUPPE = 2, iif (isnull (KLI\_HATZAHLSPERRE, 0) = 1, 1, PEK\_KUN\_ZAHLSPERRE), iif (isnull (KLI\_HATZAHLSPERRE, 0) = 1, 1, PEK\_LIE\_ZAHLSPERRE)), 0) as ZAHLSPERRE FROM FIBU.PEK\_PERSONENKONTO P1 INNER JOIN BUERO.KLI\_KUNDE\_LIEFERANT KL ON KL.KLI\_FIRMENNR = P1.PEK\_FIRMENNR AND KL.KLI\_KLID = P1.PEK\_KLID INNER JOIN BUERO.PER\_PERSON ON PER\_FIRMENNR = PEK\_FIRMENNR AND PER\_PERSONENID = P1.PEK\_KLID INNER JOIN FIBU.KTO\_KONTO ON KTO\_FIRMENNR = PEK\_FIRMENNR AND KTO\_FIBUNR = PEK\_FIBUNR AND KTO\_KONTONR = PEK\_KONTONR INNER JOIN BUERO.ADR\_ADRESSE ON ADR\_FIRMENNR = PEK\_FIRMENNR AND ADR\_ADRESSLFDNR = PER\_ADRESSLFDNR LEFT JOIN BUERO.BAI\_BANKINSTITUTIONSZU ON BAI\_BANKINSTLFDNR=PER\_SENDER\_BANKINSTLFDNR LEFT JOIN BUERO.KOD\_KONDITIONEN ON KOD\_KONDNR=KLI\_LIEF\_KONDNR LEFT JOIN BUERO.LAN\_LAND ON LAN\_LANDNR = PER\_LANDNR WHERE PEK\_FIRMENNR = :firmennr AND PEK\_FIBUNR = :fibunr AND PEK\_KONTONR = :kontonr'; //BMD\_SHOWMESSAGE ('get\_KDLF firmennr: ' + Firmennr + ' fibunr: ' + FibuNr + ' kontonr: ' + kontonr); iQuery := MacroObject.CreateMacroQuery('get\_person'); iQuery.setSQLText (sqlText); iQuery.setParamAsString('firmennr', Firmennr); iQuery.setParamAsString('kontonr', KontoNr); iQuery.setParamAsString('fibunr', FibuNr); iQuery.Open(); if (iQuery.RecordCount() &gt; 0) then begin uid := iQuery.getAsString('VATREGNO'); name := iQuery.getAsString('NAME'); zusatzname := iQuery.getAsString('ZUSATZNAME'); personenid := iQuery.getAsString('PERSONENID'); strasse := iQuery.getAsString('ADDRESSE'); iban1 := iQuery.getAsString('IBAN'); kondition := iQuery.getAsString('KOND'); zahlsperre := iQuery.getAsString('ZAHLSPERRE'); land\_id := iQuery.getAsString('COUNTRY'); plz := iQuery.getAsString('PLZ'); account\_holder := iQuery.getAsString('account\_holder'); end; iQuery.close(); end; // ================================================================================ //------------------------------------------------------------------------------ function dump\_logfile (logfile: String); begin Result := ''; if (BMD\_FILEEXISTS (logfile)) then begin BMD\_ASSIGNFILE (fh\_bmd\_log, logfile); BMD\_OPENFILE\_RESET (fh\_bmd\_log); while not BMD\_EOF (fh\_bmd\_log) do begin line := BMD\_READLN (fh\_bmd\_log); //BMD\_SHOWMESSAGE (line); Result := Result + line; end; BMD\_CLOSEFILE (fh\_bmd\_log); end; end; // ================================================================================ function import\_KDLF (kontonr: String; uid: String; uid\_datum: String; name: String; zusatzname: String; strasse: String; plz: String; land\_id: String; iban1: String; iban2: String; iban3: String; kondition: String; zahlsperre: String; kontoinhaber: String); begin //gFileName := 'kdlf\_import\_' + kontonr + '.csv'; sequence := BMD\_GETSEQID(); gFileName := 'kdlf\_import\_' + sequence + '.csv'; sql\_exists := 'SELECT count(1) as COUNT FROM FIBU.PEK\_PERSONENKONTO P1 INNER JOIN BUERO.KLI\_KUNDE\_LIEFERANT KL ON KL.KLI\_FIRMENNR = P1.PEK\_FIRMENNR AND KL.KLI\_KLID = P1.PEK\_KLID INNER JOIN BUERO.PER\_PERSON ON PER\_FIRMENNR = PEK\_FIRMENNR AND PER\_PERSONENID = P1.PEK\_KLID INNER JOIN FIBU.KTO\_KONTO ON KTO\_FIRMENNR = PEK\_FIRMENNR AND KTO\_FIBUNR = PEK\_FIBUNR AND KTO\_KONTONR = PEK\_KONTONR WHERE PEK\_FIRMENNR = :firmennr AND PEK\_FIBUNR = :fibunr AND PEK\_KONTONR = :kontonr'; temp:= BMD\_GETENVIRONMENTVAR('temp'); filename := temp +'\\'+ gFileName; //if (BMD\_FILEEXISTS(filename)) then begin // BMD\_DELETEFILE(filename); //DeleteFile //end; //BMD\_CREATEFILE(filename); lFileNr := 1; BMD\_ASSIGNFILE(lFileNr,filename,1,1,1,1200); // unicode //rc := BMD\_OPENFILE\_APPEND(lFileNr); //if (rc = '-1') then begin // BMD\_SHOWMESSAGE('Fehler open file ' + filename); // exit; //end; header\_line1 := 'NTCS\_CONSTID\_INFO%10%MCA\_KTO\_KONTONR%MCA\_PER\_NAME%MCA\_PER\_ZUSATZNAME%MCA\_ADR\_ORTSNAME%MCA\_ADR\_PLZ%MCA\_ADR\_STRASSE%MCA\_PER\_UIDNR%MCA\_PER\_LANDNR%MCA\_BAI\_IBAN%MCA\_PER\_UIDDATUM%MCA\_KLI\_KONDNR%MCA\_KLI\_HATZAHLSPERRE%MCA\_PEK\_LIE\_ZAHLSPERRE%MCA\_PER\_MATCHCODE%MCA\_BAI\_KONTOINHABER'; header\_line2 := 'kto-nr;Name;zusatzname;Ort;PLZ;Strasse;UID;Land;iban-nr;UID-Datum;kondition;zahlsperre1;zahlsperre2;matchcode;kontoinhaber'; //header\_line1 := 'NTCS\_CONSTID\_INFO%10%MCA\_KTO\_KONTONR%MCA\_PER\_NAME%MCA\_PER\_ZUSATZNAME%MCA\_ADR\_ORTSNAME%MCA\_ADR\_PLZ%MCA\_ADR\_STRASSE%MCA\_PER\_UIDNR%MCA\_PER\_LANDNR%MCA\_BAI\_IBAN%MCA\_PER\_UIDDATUM%MCA\_KLI\_KONDNR%MCA\_KLI\_HATZAHLSPERRE%MCA\_PER\_MATCHCODE'; //header\_line2 := 'kto-nr;Name;zusatzname;Ort;PLZ;Strasse;UID;Land;iban-nr;UID-Datum;kondition;zahlsperre;matchcode'; BMD\_WRITELN(lFileNr, header\_line1); BMD\_WRITELN(lFileNr, header\_line2); line:= kontonr + ';' + name + ';' + zusatzname + ';;' + +plz + ';' + strasse + ';' + uid + ';' + land\_id + ';' + iban1 + ';' + uid\_datum + ';' + kondition + ';' + zahlsperre + ';' + zahlsperre + ';' + BMD\_UPPER (name) + ';' + kontoinhaber; BMD\_WRITELN(lFileNr, line); BMD\_CLOSEFILE(lFileNr); if(BMD\_FILEEXISTS(filename))then begin if((FirmenNr&lt;&gt;'') AND (FibuNr&lt;&gt;'') AND (filename&lt;&gt;''))then begin //BMD\_SHOWMESSAGE (dump\_logfile (filename)); logfile := temp +'\\Kontenimport' + FirmenNr + '\_' + kontonr + '.log'; lParam := 'STP\_FIB\_COMPANYNO=' + FirmenNr + ',STP\_FIB\_FIBUNO=' + FibuNr + ',STP\_IMP\_FILENAME=' + filename + ',STP\_LOG\_FILENAME=' + logfile + ','; lParam := lParam + 'SILENT=1,'; lParam := lParam + 'STP\_IMP\_SEPARATOR=;,'; lParam := lParam + 'STP\_IMP\_ENCODING=3,'; lParam := lParam + 'STP\_USEFIXEDLENGTH=0,'; lParam := lParam + 'STP\_IGNORE\_FIRSTLINE=1'; BMD\_STARTFUNCTION('MCS\_FRMFIBUVARCSVPERSONENKONTENIMPEXP\_CREATE',lParam); //Start Var. Personenimport BMD\_DELETEFILE(filename); uid := ''; uid\_status := ''; uid\_timestamp := ''; name := ''; zusatzname := ''; addresse := ''; plz := ''; land\_id := ''; iban1 := ''; iban2 := ''; iban3 := ''; kondition := ''; personenid := ''; zahlsperre := ''; get\_KDLF (personenid, kontonr, uid, uid\_timestamp, name, zusatzname, addresse, plz, land\_id, iban1, iban2, iban3, kondition, zahlsperre, kontoinhaber); if personenid = '' then begin BMD\_SHOWMESSAGE('Fehler: Anlegen/Ändern Konto ' + kontonr + ' failed logfile: ' + dump\_logfile (logfile)); end; Result := personenid; end; end; VorerfassenModel.SetValue('MCA\_VEB\_KONTONR', kontonr); end; // ================================================================================ function store\_created\_kdlf (uid: String; name: String; vorerf\_typ: String; personenid: String); begin if uid = '' then begin // search for name search\_string := FirmenNr + ';' + FibuNr + ';' + vorerf\_typ + ';' + name; end; else begin search\_string := FirmenNr + ';' + FibuNr + ';' + vorerf\_typ + ';' + 'UID' + uid; end; created\_list.SetKeyValue (search\_string, personenid); end; // ================================================================================ // bei überspringen leeres feld --&gt; gibt es den lieferanten schon? // ================================================================================ function KDLF\_exists (search\_uid: String; search\_name: String; vorerf\_typ: String); begin sqlText := 'SELECT PEK\_KONTONR as KONTONR, PER\_NAME as NAME, PER\_ZUSATZNAME as ZUSATZNAME, PER\_UIDNR as VATREGNO, KTO\_KONTENGRUPPE FROM FIBU.PEK\_PERSONENKONTO P1 INNER JOIN BUERO.KLI\_KUNDE\_LIEFERANT KL ON KL.KLI\_FIRMENNR = P1.PEK\_FIRMENNR AND KL.KLI\_KLID = P1.PEK\_KLID INNER JOIN BUERO.PER\_PERSON ON PER\_FIRMENNR = PEK\_FIRMENNR AND PER\_PERSONENID = P1.PEK\_KLID INNER JOIN FIBU.KTO\_KONTO ON KTO\_FIRMENNR = PEK\_FIRMENNR AND KTO\_FIBUNR = PEK\_FIBUNR AND KTO\_KONTONR = PEK\_KONTONR WHERE PEK\_FIRMENNR = :firmennr AND PEK\_FIBUNR = :fibunr AND (LEN (:uid) &gt; 5 AND PER\_UIDNR = :uid or (isnull (:uid,'''') = '''' and PER\_NAME = :name)) AND (KTO\_KONTENGRUPPE = 4 OR (KTO\_KONTENGRUPPE = 3 and :vorerf\_typ = 3) OR (KTO\_KONTENGRUPPE = 2 and :vorerf\_typ = 4)) '; // Kontengruppe KUNDE=2, LIEFERANT=3, both = 4 // vorerf\_typ 4 = AR (Kunden), 3: ER (Lieferanten) Result := '0'; iQuery := MacroObject.CreateMacroQuery('get\_konto'); iQuery.setSQLText (sqlText); iQuery.setParamAsString('firmennr', Firmennr); iQuery.setParamAsString('fibunr', FibuNr); iQuery.setParamAsString('uid', search\_uid); iQuery.setParamAsString('name', search\_name); iQuery.setParamAsString('vorerf\_typ', vorerf\_typ); iQuery.Open(); if (iQuery.RecordCount() &gt; 0) then begin per\_kontonr := iQuery.getAsString('KONTONR'); per\_name := iQuery.getAsString('NAME'); per\_uidnr := iQuery.getAsString('VATREGNO'); per\_zusatzname := iQuery.getAsString('ZUSATZNAME'); kontengruppe := iQuery.getAsString('KTO\_KONTENGRUPPE'); rc := BMD\_ASKVALUEBOOL (kdlf\_string + 'nummer ' + per\_kontonr + bmd\_lineBreak() + bmd\_lineBreak() + 'Name: &lt;' + per\_name + '&gt;' + 'UID : &lt;' + per\_uidnr + '&gt;', kdlf\_string + ' übernehmen ?'); if (rc = 1) then begin VorerfassenModel.SetValue('MCA\_VEB\_KONTONR', per\_kontonr); Result := per\_kontonr; end else begin Result := '0'; end; end; else begin //BMD\_SHOWMESSAGE ('no kdlf firmennr: ' + Firmennr + ' fibunr: ' + FibuNr + ' vorerf\_typ: ' + vorerf\_typ + ' uid: ' + search\_uid + ' name: ' + search\_name + ' sql: ' + sqlText); end; end; // ================================================================================ //BMD\_SHOWMESSAGE ('start'); IF (BMD\_GETAPPLICATIONTYPE() &lt;&gt; 'BMDNTCS') THEN BEGIN exit; END; VorerfassenModel := MacroObject.CreateMacroModel('TBMDMDFibuVorerfassBuchungMgr'); //CreateMacroModel lkontobezeichnung := VorerfassenModel.GetValue('MCU\_VEB\_ADD\_KONTOBEZEICHNUNG'); //GetValue FibuNr := VorerfassenModel.GetValue('MCA\_VEB\_FIBUNR'); FirmenNr := VorerfassenModel.GetValue('MCA\_VEB\_FIRMENNR'); uid := VorerfassenModel.GetValue('MCA\_VEB\_UIDNR'); text := VorerfassenModel.GetValue('MCA\_VEB\_BUCHUNGSTEXT'); id := VorerfassenModel.GetValue('MCA\_VEB\_VORERFASSID'); rg\_file := VorerfassenModel.GetValue('MCA\_VEB\_FREIFELDA01\_20'); json := VorerfassenModel.GetValue('MCA\_VEB\_FREIFELDA03\_300'); json\_learned := VorerfassenModel.GetValue('MCA\_VEB\_FREIFELDA01\_50'); periode := VorerfassenModel.GetValue('MCA\_VEB\_PERIODE'); blind\_flag := VorerfassenModel.GetValue('MCA\_VEB\_FREIFELDN6\_10'); fh\_bmd\_log := 4; if (BMD\_LEN (text) &gt; 100) then begin if (BMD\_POS (text, ' ') &gt; 0) then begin text := BMD\_COPY (text, 1, 101); end else begin text := BMD\_COPY (text, 1, 100); end; end; personenid := VorerfassenModel.GetValue('MCA\_VEB\_PER\_PERSONENID'); // alte personenid BS := VorerfassenModel.GetValue('MCA\_VEB\_BUS\_BUCHSYMSYMBOL'); field\_input\_value := FIELD\_INPUT\_VALUE; field\_old\_value := FIELD\_OLD\_VALUE; KontoNr := field\_input\_value; KontoNr\_numeric := BMD\_TEXTTONUMDEF (field\_input\_value); field\_output\_value := field\_input\_value; per\_uidnr := ''; per\_name := ''; initParams; AUTH\_CRE\_KUNDEN := 1; AUTH\_UPD\_KUNDEN := 2; AUTH\_CRE\_LIEF := 4; AUTH\_UPD\_LIEF := 8; BMD\_VORERF\_TYP\_KUNDEN := '4'; BMD\_VORERF\_TYP\_LIEF := '3'; // Änderung Blindsätze unterbinden if (blind\_flag = '99') and (BMD\_LEN (field\_input\_value) &gt; 0) and (KontoNr\_numeric &gt; 0) then begin BMD\_SHOWMESSAGE ('Änderung bereits verbuchten Blindsatz nicht erlaubt - bitte löschen vor Import'); FIELD\_OUTPUT\_VALUE := ''; exit; end; vorerf\_typ := VorerfassenModel.GetValue('MCA\_VEB\_VBV\_VORERFASSTYP'); kdlf\_string := 'Lieferanten'; if ((vorerf\_typ &lt;&gt; BMD\_VORERF\_TYP\_LIEF) and (vorerf\_typ &lt;&gt; BMD\_VORERF\_TYP\_KUNDEN)) then begin // Kassa exit; end; else if (vorerf\_typ = BMD\_VORERF\_TYP\_KUNDEN) then begin kdlf\_string := 'Kunden'; end; auth := get\_auth (FirmenNr, FibuNr); auth\_create := 0; auth\_modify := 0; if (vorerf\_typ = BMD\_VORERF\_TYP\_KUNDEN) then begin if auth and AUTH\_CRE\_KUNDEN then begin auth\_create := 1; end; if auth and AUTH\_UPD\_KUNDEN then begin auth\_modify := 1; end; end; if (vorerf\_typ = BMD\_VORERF\_TYP\_LIEF) then begin if auth and AUTH\_CRE\_LIEF then begin auth\_create := 1; end; if auth and AUTH\_UPD\_LIEF then begin auth\_modify := 1; end; end; if (not auth\_create) and (not auth\_modify) then begin //BMD\_SHOWMESSAGE ('no auth'); exit; end; addresse := ''; ort := ''; plz := ''; land\_id := ''; uid\_status := ''; iban1 := ''; iban2 := ''; iban3 := ''; per\_adresse := ''; per\_zusatzname := ''; per\_iban1 := ''; per\_iban2 := ''; per\_iban3 := ''; uid\_datum := ''; name := ''; zusatzname := ''; kondition := ''; zahlsperre := ''; per\_zahlsperre := ''; kontoinhaber := ''; per\_kontoinhaber := ''; per\_plz := ''; per\_land\_id := ''; per\_kondition := ''; personenid := ''; uid\_timestamp := ''; done\_list := MacroObject.FindGlobalMacroStringList('Logisthai\_done'); if not done\_list then begin done\_list := MacroObject.CreateGlobalMacroStringList('Logisthai\_done'); end; created\_list := MacroObject.FindGlobalMacroStringList('Logisthai\_created'); if not created\_list then begin created\_list := MacroObject.CreateGlobalMacroStringList('Logisthai\_created'); end; fetch\_json (json, json\_learned, fibunr, name, zusatzname, addresse, ort, plz, land\_id, uid, uid\_status, iban1, iban2, iban3, uid\_datum, kondition, zahlsperre, kontoinhaber); if (BMD\_LEN (field\_input\_value) &gt; 0) and (KontoNr\_numeric &gt; 0) then begin if not auth\_modify then begin //BMD\_SHOWMESSAGE ('no auth'); exit; end; //BMD\_SHOWMESSAGE ('field changed'); // field update &amp;&amp; check update kundenstamm get\_KDLF (personenid, kontonr, per\_uidnr, uid\_timestamp, per\_name, per\_zusatzname, per\_adresse, per\_plz, per\_land\_id, per\_iban1, per\_iban2, per\_iban3, per\_kondition, per\_zahlsperre, per\_kontoinhaber); if (field\_input\_value &lt;&gt; field\_old\_value) then begin if do\_modify\_buchungstext then begin VorerfassenModel.SetValue('MCA\_VEB\_BUCHUNGSTEXT', per\_name); end; //VorerfassenModel.SetValue('MCA\_VEB\_UIDNR', per\_uidnr); VorerfassenModel.SetValue('MCA\_VEB\_FREIFELDNK2', 1); // set change id end if zahlsperre = '' then begin zahlsperre := per\_zahlsperre; end; if kondition = '' then begin kondition := per\_kondition; end; // update\_stamm if (((BMD\_LEN (uid) &gt; 0) or (BMD\_LEN (name) &gt; 0)) and (BMD\_LEN (name) &gt; 0) and ( (per\_uidnr &lt;&gt; uid) or (per\_name &lt;&gt; name) or (addresse &lt;&gt; per\_adresse) or (plz &lt;&gt; per\_plz) or (iban1 &lt;&gt; per\_iban1) or (land\_id &lt;&gt; per\_land\_id) or ((kondition &lt;&gt; per\_kondition) AND (kondition &lt;&gt; '')) or ((zahlsperre &lt;&gt; per\_zahlsperre) AND (zahlsperre &lt;&gt; '')) or ((kontoinhaber &lt;&gt; per\_kontoinhaber) AND (per\_kontoinhaber &lt;&gt; '')) )) then begin current\_date := BMD\_DATE(); // BMD\_SHOWMESSAGE('per\_uidnr: ' + per\_uidnr + ' uid: ' + uid + ' per\_name: ' + per\_name + ' name: ' + name + ' addresse: ' + addresse + ' per\_adresse: ' + per\_adresse + ' kondition: ' + kondition + ' per\_kondition: ' + per\_kondition); // wurde mit aktuellem tagesdatum + firmennr + fibunr + periode + kdlf + neuem updatewert schon einmal nach einem update gefragt? //done\_string := current\_date + ';' + FirmenNr + ';' + FibuNr + ';' + Periode + ';' + field\_input\_value + ';' + name; //done := BMD\_GETINTPARAMVALUE('LOGISTHAI\_KDLF',done\_string,''); //done := ''; // test only //BMD\_SHOWMESSAGE('per\_uidnr: ' + per\_uidnr + ' uid: ' + uid + ' per\_name: ' + per\_name + ' name: ' + name + ' addresse: ' + addresse + ' per\_adresse: ' + per\_adresse + ' kondition: ' + kondition + ' per\_kondition: ' + per\_kondition); done\_string := FirmenNr + ';' + FibuNr + ';' + Periode + ';' + field\_input\_value + ';' + name; done := done\_list.GetKeyValue (done\_string); if (done &lt;&gt; '') then begin //BMD\_SHOWMESSAGE('Schon mal gefragt und du wolltest nicht, Jetzt Pech'); end; else begin question := ''; if (per\_name &lt;&gt; name) then begin question := question + 'Name &lt;' + per\_name + '&gt; auf &lt;' + name + '&gt;' + bmd\_lineBreak(); end; if (per\_uidnr &lt;&gt; uid) then begin question := question + 'UID &lt;' + per\_uidnr + '&gt; auf &lt;' + uid + '&gt;' + bmd\_lineBreak(); end; if (addresse &lt;&gt; per\_adresse) then begin question := question + 'Adresse &lt;' + per\_adresse + '&gt; auf &lt;' + addresse + '&gt;' + bmd\_lineBreak(); end; if (plz &lt;&gt; per\_plz) then begin question := question + 'PLZ &lt;' + per\_plz + '&gt; auf &lt;' + plz + '&gt;' + bmd\_lineBreak(); end; if (iban1 &lt;&gt; per\_iban1) then begin question := question + 'IBAN &lt;' + per\_iban1 + '&gt; auf &lt;' + iban1 + '&gt;' + bmd\_lineBreak(); end; if (land\_id &lt;&gt; per\_land\_id) then begin question := question + 'Land &lt;' + per\_land\_id + '&gt; auf &lt;' + land\_id + '&gt;' + bmd\_lineBreak(); end; if ((kondition &lt;&gt; per\_kondition) AND (kondition &lt;&gt; '')) then begin question := question + 'Kondition &lt;' + per\_kondition + '&gt; auf &lt;' + kondition + '&gt;' + bmd\_lineBreak(); end; if ((zahlsperre &lt;&gt; per\_zahlsperre) AND (zahlsperre &lt;&gt; '')) then begin per\_zahlsperre\_string := 'Nein'; zahlsperre\_string := 'Nein'; if (per\_zahlsperre &lt;&gt; '0') then begin per\_zahlsperre\_string := 'Ja'; end; if (zahlsperre &lt;&gt; '0') then begin zahlsperre\_string := 'Ja'; end; question := question + 'Zahlsperre &lt;' + per\_zahlsperre\_string + '&gt; auf &lt;' + zahlsperre\_string + '&gt;' + bmd\_lineBreak(); end; if ((kontoinhaber &lt;&gt; per\_kontoinhaber) AND (kontoinhaber &lt;&gt; '')) then begin question := question + 'Kontoinhaber &lt;' + per\_kontoinhaber + '&gt; auf &lt;' + kontoinhaber + '&gt;' + bmd\_lineBreak(); end; rc := BMD\_ASKVALUEBOOL (question, 'Stammdatenupdate - ' + KontoNr + ' - ' + per\_name + ' ?'); done\_list.SetKeyValue (done\_string, '1'); if (rc = 1) then begin personenid := import\_KDLF (KontoNr, uid, uid\_datum, name, zusatzname, addresse, plz, land\_id, iban1, iban2, iban3, kondition, zahlsperre, kontoinhaber); if do\_modify\_buchungstext then begin VorerfassenModel.SetValue('MCA\_VEB\_BUCHUNGSTEXT', name); end; show\_kdlf (FirmenNr, FibuNr, personenid); end; FIELD\_KEEP\_FOCUS:=True; end; end; end; else if auth\_create then begin // feld leer --&gt;neuen kunden anlegen if (((BMD\_LEN (uid) &gt; 0) or (BMD\_LEN (plz) &gt; 0)) and (BMD\_LEN (name) &gt; 0)) then begin rc := KDLF\_exists (uid, text, vorerf\_typ); if (rc = '0') then begin next\_nummer := get\_next\_free\_kdlf\_nummer (FirmenNr, BS, FibuNr); if (next\_nummer &gt; 0) then begin text := name; if addresse &lt;&gt; '' then begin text := text + ' ' + addresse; end; if ort &lt;&gt; '' then begin text := text + ' ' + ort; end; if uid &lt;&gt; '' then begin text := text + ' UID ' + uid + ': ' + uid\_status; end; if iban1 &lt;&gt; '' then begin text := text + ' ' + iban1; end; text := text + ' Nummer:'; rc := BMD\_ASKVALUEBOOL (kdlf\_string + 'Nummer ' + next\_nummer + bmd\_lineBreak() + bmd\_lineBreak() + name + bmd\_lineBreak() + 'UID &lt;' + uid + '&gt;: ' + uid\_status + bmd\_lineBreak() + addresse + bmd\_lineBreak() + ort + bmd\_lineBreak() + 'IBAN: ' + iban1, kdlf\_string + ' anlegen ?'); if (rc = 1) then begin personenid := import\_KDLF (next\_nummer, uid, uid\_datum, name, zusatzname, addresse, plz, land\_id, iban1, iban2, iban3, kondition, zahlsperre, kontoinhaber); store\_created\_kdlf (uid, name, vorerf\_typ, personenid); field\_output\_value := next\_nummer; show\_kdlf (FirmenNr, FibuNr, personenid); end; end; else begin BMD\_SHOWMESSAGE ('Keine next free number'); end; end; else begin field\_output\_value := rc; end; FIELD\_KEEP\_FOCUS:=True; end; end; result := field\_output\_value; FIELD\_OUTPUT\_VALUE:=result;

```
TEST MAKRO
Zeile 1
Zeile 2
Zeile 3
```

# Vergabe einer anderen Kunden- und Lieferantennummer

Bei Anlage eines neuen Kunden oder Lieferanten wird von dem Makro immer eine neue Nummer aus dem Kreis 1 genommen. Wenn man sich nachher durch das Makro (do\_show\_kdlf=1) das Personenkonto anzeigen lässt, besteht über den Reiter **“FIBU-Konto”** die Möglichkeit, den Kreis zu ändern:

##### **Aktivierung des Reiters FIBU-Konto in der Kunden-Lieferantenanlage**

Unter dem **Reiter "Fibu-Konto"** und dem **Feld "149 - Lieferantenkreis"** befindet sich die Funktion, diesen Lieferantenkreis zu ändern.

<figure id="bkmrk-">![](https://help.logisth.ai/media/live/fibu.png)</figure>In diesem Beispiel gibt es drei Kreise und nach der getroffenen Auswahl wird der Lieferant/Kunde unabhängig von der schon vergebenen Nummer zugeordnet.

<figure id="bkmrk--1">![](https://help.logisth.ai/media/live/fibu2.png)</figure>### Konfiguration in BMD

Sollten der Reiter **Fibu-Konto** und das **"Feld 149 - Lieferantenkreis"** nicht auswählbar sein und Sie diese nicht über unser Makro erhalten haben, führen Sie die folgenden Schritte aus, um diese zu aktivieren:

**1.** **CRM - Allgemeine CRM Parameter - Kunden - Allgemeine Einstellungen**

<figure id="bkmrk--2">![](https://help.logisth.ai/media/live/1-7.png)</figure>**2.** In den Allgemeinen Einstellungen **"Zentrale Stammdatenerfassung"** öffnen Sie den Reiter **"Seite 4"** und wählen **"Persönliches Konto (BMD NTCS-FIBU)"**. Nach Ihrer Auswahl **speichern** Sie bitte die Änderungen.

<figure id="bkmrk--3">![](https://help.logisth.ai/media/live/22-1.png)</figure>

# Kundenspezifische Steuerung des Makros für Anlegen/Ändern

Bei manchen Klienten ist die Verwendung des Makros unerwünscht (z.b. wenn Kunden/Lieferantennummern nach Vorgabe des Klienten zu vergeben sind)

1. **Firmen-und FIBU Stammdaten** öffnen
2. **FIBU Stammdaten** öffnen
3. **Feldauswahl und Bearbeiten** und in die Feldauswahl einsteigen

[![image.png](https://help.logisth.ai/uploads/images/gallery/2026-07/scaled-1680-/UMi9zsAvb4JxfZi2-image.png)](https://help.logisth.ai/uploads/images/gallery/2026-07/UMi9zsAvb4JxfZi2-image.png)

4\. Wählen und aktivieren Sie **"Freifeld 1"**, so dass sich das Feld in der rechten Tabelle befindet.

<figure id="bkmrk--1">![](https://help.logisth.ai/media/live/freifeld1-3.jpeg)</figure>5\. **„Freifeld 1“** auswählen und markieren.

<figure id="bkmrk--2">![](https://help.logisth.ai/media/live/freifeld1-2.jpeg)</figure>6\. In dem obigen Reiter auf der rechten Seite der Tabelle - wählen Sie **"Anzeigen"** aus. Im Feld **"Bezeichnung"** können Sie den Namen des Feldes ändern (z.B. in Logisth.AI Kunden- und Lieferantenanlage).

<figure id="bkmrk--3">![](https://help.logisth.ai/media/live/freifeld1-4.jpeg)</figure>7\. Im Reiter Extras **„Nur Benutzerwerte erlaubt“** aktivieren.

<figure id="bkmrk--4">![](https://help.logisth.ai/media/live/freifeld1-5.jpeg)</figure>8\. Nachdem "Nur Benutzerwerte erlaubt" aktiviert ist, gehen Sie in die "Verwaltung" mit Klick erneut auf "Nur Benutzerwerte erlaubt". Wählen Sie erneut die Registerkarte **"Extra"** und wählen Sie **"Textdatei importieren – Feldvorgabewerte "** aus.

<figure id="bkmrk--5">![](https://help.logisth.ai/media/live/freifeld1-6.jpeg)</figure>9\. Importieren Sie die in der txt-Datei: [9\_Feldwerte.txt](https://help.logisth.ai/attachments/5)

<div class="dragme" id="bkmrk-l%C3%B6schenerstellen"><div class="relative blox-wrapper mb-1"><div class="sideaction hidden absolute -top-3 left-1/2 -translate-x-1/2 z-1 text-xs"></div></div></div>enthaltenen Feldwerte unter Importdatei und gehen Sie auf **OK**.

<figure class="center" id="bkmrk-feldwerte-f%C3%BCr-das-au">![](https://help.logisth.ai/media/live/picture1.png)<figcaption>*Feldwerte für das Auswahlfeld*</figcaption></figure>10\. Nach dem Import sollte dies wie folgt aussehen:

<figure id="bkmrk--6">![](https://help.logisth.ai/media/live/freifeld1-8.jpeg)</figure>11\. Im Kunden-Lieferanten Makro muss **do\_auth** auf 1 gesetzt werden. Weitere Informationen finden Sie im Kapitel ["Installation"](https://help.logisth.ai/bmd/makro-kunden-lieferanten/installation).

<figure class="center" id="bkmrk--7">![](https://help.logisth.ai/media/live/screenshot-2020-10-16-232451.png)</figure><figure class="center" id="bkmrk-steuerung-des-verhal">![](https://help.logisth.ai/media/live/screenshot-2020-10-16-231211.png)<figcaption>*Steuerung des Verhalten des Kunden/Lieferantenmakros*</figcaption></figure>Die Steuerung erfolgt über die FIBU-Stammdaten.

# Automatische Anlage von Kunden und Lieferanten

Die automatische Anlage von Kunden und Lieferanten erfordert eine zusätzliche Makroeinstellung. Nachdem es in BMD eingerichtet ist, wird es vom Logisth.AI Team aktiviert. Der erste Schritt besteht darin, das Makro zu installieren und anschließend die Felder zu definieren. Bitte befolgen Sie die Schritte wie hier beschrieben.

Hier finden Sie die aktuelle Version des Makros:[import\_makro\_v8.txt](https://help.logisth.ai/attachments/6)

### Makro-Installation

1\. Vorerfassen unter Import Buchungen

<figure id="bkmrk-">![](https://help.logisth.ai/media/live/1-10.png)</figure>2\. Vorerfassungsmodell anlegen (Doppelklick auf das Dreieck neben dem Importmodell).

<figure id="bkmrk--1">![](https://help.logisth.ai/media/live/anlagekl2.png)</figure>3\. Doppelklick auf Makro für die Nachbearbeitung (Symbol links neben dem Dreieck).

<figure id="bkmrk--2">![](https://help.logisth.ai/media/live/anlagekl3.jpeg)</figure>4\. Öffnen Sie den Makro-Editor und wechseln Sie in den Expertenmodus.

<figure id="bkmrk--3">![](https://help.logisth.ai/media/live/anlagekl4.jpeg)</figure>5\. Öffnen Sie das Makro in einem Notepad, markieren Sie alles, und fügen Sie es per Copy-Paste in BMD ein.

<figure id="bkmrk--4">![](https://help.logisth.ai/media/live/anlagekl5png.jpeg)</figure>6\. Anschließend kompilieren und speichern Sie das Makro, und es sollte keine Fehler auftreten.

<figure id="bkmrk--5">![](https://help.logisth.ai/media/live/anlagekl6.jpeg)</figure>7\. Nachdem Sie alle 6 Schritte durchgeführt haben, teilen Sie uns bitte mit, dass wir die automatische Anlage von Kunden und Lieferanten in Logisth.AI unter den allgemeinen Einstellungen aktivieren sollen.

<figure id="bkmrk--6">![](https://help.logisth.ai/media/live/anlagekl7.jpeg)</figure>8\. Importieren Sie die csv-Werte (im Folgenden beschrieben als **Import der Auswahlwerte**) und aktivieren Sie das INS\_FREIFELD9 (falls noch nicht geschehen), nehmen Sie Einstellungen für die jeweiligen Klienten vor.

<figure id="bkmrk--7">![](https://help.logisth.ai/media/live/anlagekl8png.jpeg)</figure>### Import der Auswahlwerte

1. **Firmen-und FIBU Stammdaten** öffnen
2. **Firmen- Stammdaten** öffnen
3. **Feldauswahl und Bearbeiten** und in die Feldauswahl einsteigen

<figure id="bkmrk--8">![](https://help.logisth.ai/media/live/freifeld9-1.jpeg)</figure>4\. Wählen und aktivieren Sie **"Freifeld 9"**, so dass sich das Feld in der rechten Tabelle befindet.

5\. **„Freifeld 9“** auswählen und markieren. (FELD 62)

<figure id="bkmrk--9">![](https://help.logisth.ai/media/live/freifeld9-2.jpeg)</figure>6\. In der obigen Reiter auf der rechten Seite der Tabelle - wählen Sie **"Anzeigen"** aus. Im Feld **"Bezeichnung"** können Sie den Namen des Feldes ändern (z.B. in Automatische Logisth.AI KuLi Anlage).

<figure id="bkmrk--10">![](https://help.logisth.ai/media/live/freifeld9-4.jpeg)</figure>7\. Im Reiter Extras **„Nur Benutzerwerte erlaubt“** aktivieren.

<figure id="bkmrk--11">![](https://help.logisth.ai/media/live/freifeld9-5.jpeg)</figure>8\. Nachdem "Nur Benutzerwerte erlaubt" aktiviert ist, gehen Sie in die "Verwaltung" mit klick erneut auf "Nur Benutzerwerte erlaubt". Wählen Sie erneut die Registerkarte **"Extra"** und wählen Sie **"Textdatei importieren – Feldvorgabewerte"** aus.

<figure id="bkmrk--12">![](https://help.logisth.ai/media/live/freifeld9-6.jpeg)</figure>9\. Importieren Sie die in der txt-Datei [freifeld9.txt](https://help.logisth.ai/attachments/7) enthaltenen Feldwerte unter Importdatei und gehen Sie auf **OK**.

<figure id="bkmrk--13">![](https://help.logisth.ai/media/live/freifeld9-7.jpeg)</figure>10\. Nach dem Import sollte dies wie folgt aussehen:

<figure id="bkmrk--14">![](https://help.logisth.ai/media/live/freifeld9-8.jpeg)</figure><p class="callout warning">**Achtung:** Damit die nächsten freien Personenkonten automatisch vergeben werden können, müssen in BMD die Nummernkreise für Kunden und Lieferanten hinterlegt sein.</p>

<figure class="center" id="bkmrk-bmd-%7C-nummernkreise">![](https://help.logisth.ai/media/live/nummernkreise-wo.png)<figcaption>*BMD | Nummernkreise* </figcaption></figure><figure class="center" id="bkmrk-bmd-%7C-nummernkreise-">![BMD | Nummernkreise hinterlegen für Kunden und Lieferanten](https://help.logisth.ai/media/live/nummernkreise.png)<figcaption>*BMD | Nummernkreise hinterlegen für Kunden und Lieferanten* </figcaption></figure>Zusätzlich muss das Feld **35 'Suchen bei Konto'** bei den Buchungssymbolen korrekt hinterlegt sein (ER → Lieferanten | AR → Kunden).

<figure class="center" id="bkmrk-einstellung-beim-buc">![Einstellung beim Buchungssymbol](https://help.logisth.ai/media/live/unbenanntes-diagrammdrawio-2.png)<figcaption>*Einstellung beim Buchungssymbol*</figcaption></figure>Damit BMD die Neuanlage und das Stammdatenupdate beim Personenimport zulässt, müssen in den Fibu-Parametern folgende Einstellungen getroffen werden:

<figure class="center" id="bkmrk-firmenbezogene-einst">![Firmenbezogene Einstellungen/Kontenanlage/Import](https://help.logisth.ai/media/live/import-parameter.png)<figcaption>*Firmenbezogene Einstellungen/Kontenanlage/Import*</figcaption></figure>