OBS/Makros und Scripting/Allgemeines/Klassen/Vorgänge: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
 
(26 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 12: Zeile 12:
*[[OBS/Makros und Scripting/Allgemeines/Klassen/Vorgänge/Einkaufslieferschein|Einkaufslieferschein]]
*[[OBS/Makros und Scripting/Allgemeines/Klassen/Vorgänge/Einkaufslieferschein|Einkaufslieferschein]]
*[[OBS/Makros und Scripting/Allgemeines/Klassen/Vorgänge/Einkauf|Einkauf]]
*[[OBS/Makros und Scripting/Allgemeines/Klassen/Vorgänge/Einkauf|Einkauf]]
=Basis TVorgang=
==Variablen==
<syntaxhighlight lang="Delphi">
        oMyDB            : TxDB;
        cMainTable        : string;
        cPosTable        : string;
        oProtokoll        : TStringList;
        lMeldung          : Boolean;                        //Meldungen Anzeigen
        lSetPSBemAuto    : Boolean;


        cVorgNr          : String;                        // Vorgangsnummer
= Datentypen =
        cProjNr          : String;                        // Projektnummer
        lBrutto          : Boolean;                        // Brutto positionen
        cLanguage        : String;                        // Sprache
        cTyp              : String;                        // Auftragstyp
        cStatus          : String;                        // Auftrags-Status (0-22)
        cStatM            : String;                        // 1-stellig
        cStatS            : String;                        // 1-stellig
        cStatL            : String;                        // 2-stellig
        cStatR            : String;                        // 2-stellig
        dVorgDat          : TDateTime;                      // Vorgangsdatum
        dFaelligDat      : TDateTime;                      // Fälligkeitsdatum
        dBuchDat          : TDateTime;                      // Buchungsdatum
        dAufDat          : TDateTime;                      // Auftragsdatum
        cKdNr            : String;                        // Kundennummer
        cAnrede          : String;                        // Kunde Anrede
        cName            : String;                        // Kunde Nachname
        cVorname          : String;                        // Kunde Vorname
        cZusatz1          : String;                        // Kunde Zusatz1
        cZusatz2          : String;                        // Kunde Zusatz2
        cStrasse          : String;                        // Kunde Straße
        cPostfach        : String;                        // Kunde Postfach
        cLK              : String;                        // Kunde Land
        cPLZ              : String;                        // Kunde PLZ
        cOrt              : String;                        // Kunde Ort
        cAngebNr          : String;                        // Auftragsnummer
        cLSNr            : String;                        // Lieferscheinnummer
        cRechNr          : String;                        //
        cAuftNr          : String;                        // Auftragsnummer
        cRepaNr          : String;                        // Reparaturauftragsnummer
        cEinkaufsNr      : String;                        // Einkaufsnummer
        cBestellNr        : String;                        // Bestellnummer
        cPosText          : String;                        // Positionstext
        cLProjNr          : String;                        // Lieferantenprojektnr
        cKopfNr          : String;                        // Kopftext-Nummer (00-999)
        cKopftext        : String;                        // Freier Kopftext
        cFusstext        : String;                        // Freier Fusstext
        cFussNr          : String;                        // Fusstext-Nummer (00-999)
        nNBetrag          : Double;                        // Nettobetrag der Auftrag
        nBBetrag          : Double;                        // Bruttobetrag der Auftrag
        nEKBetrag        : Double;                        // Einkaufsbetrag der Auftrag
        nRabattBetrag    : Double;                        // Rabatt Betrag
        nRabattProz      : Double;                        // Rabatt Prozentual
        nPorto            : Double;                        // Portobetrag
        nVerpackung      : Double;                        // Verpackungskosten
        cVersand          : String;                        // Versand über (0-99)
        cZahlBed          : String;                        // Zahlungsbedingung (0-99)
        cWaehr            : String;                        // Währung (0-99)
        cFormul          : String;                        //
        cVAnr            : String;                        // Kostenstelle
        cVKdNr            : String;                        // Versand Kundennummer
        cVName1          : String;                        // Versand Name
        cVName2          : String;                        // Versand Name
        cVZusatz          : String;                        // Versand Zusatz
        cVStrasse        : String;                        // Versand Straße
        cVLK              : String;                        // Versand Land
        cVPLZ            : String;                        // Versand PLZ
        cVOrt            : String;                        // Versand Ort
        cVUID            : String;                        // Versand UID
        cAuftNrKd        : String;                        // Auftragsnummer des Kunden
        cBesteller        : String;                        //
        cSachb            : String;                        // Sachbearbeiter (0-99)
        cRabPosJN        : String;                        // J oder N
        cMWSTJN          : String;                        // J oder N
        cSText1          : String;                        //
        cSText2          : String;                        //
        cSText3          : String;                        //
        cSText4          : String;                        //
        cSText5          : String;                        //
        cSText6          : String;                        //
        cSText7          : String;                        //
        cPreisJN          : String;                        // J oder N
        nNet1            : Double;                        //
        nNet2            : Double;                        //
        nNet3            : Double;                        //
        nBrutto1          : Double;                        //
        nBrutto2          : Double;                        //
        nBrutto3          : Double;                        //
        nMwSt1            : Double;                        //
        nMwSt2            : Double;                        //
        nMwSt3            : Double;                        //
        cMwStSchl1        : String;                        //
        cMwStSchl2        : String;                        //
        cMwStSchl3        : String;                        //
        cMwStAbs          : String;                        //
        dLiefDat          : TDateTime;                      // Lieferdatum
        cDeleted          : String;                        //
        dLDat2            : TDateTime;                      // Lieferdatum
        cSprache          : String;                        //
        cReEmpf          : String;                        // Kundennummer des Rg-Empfängers
        cVertreter        : String;                        // Vertreter (000-9999)
        cVerbucht        : String;                        //
        cLager            : String;                        //
        //cRgArt            : String;                        //
        cBonusJN          : String;                        // J oder N
        cWLiefNr          : String;                        //
        cRechFrei        : String;                        //
        cBonNr            : String;                        //
        cMandant          : String;                        // Mandant (001-999)
        nMwStDM          : Double;                        //
        nKursDM          : Double;                        //
        nAbschlag        : Double;                        //
        nZBetrag          : Double;                        //
        nZSkonto          : Double;                        //
        dZDatum          : TDateTime;                      //
        cMemo            : String;                        // Memofeld
        nValuta          : Integer;                        // Valuta in Tagen (max. 4 Stellen)
        cKostenst        : String;                        // Kostenstelle
        cKostentraeger    : String;                        // Kostenträger
        cKalkGr          : String;                        //
        cKalkRet          : String;                        //
        nOFBetrag        : Double;                        //
        cWKNr            : String;                        //
        cFrachtV          : String;                        //
        nFrachtK          : Double;                        //
        nFrachtG          : Integer;                        //
        cGruppe          : String;                        //
        cPosFormat        : String;                        // Format der Positionsnummerierung
        cFiliale          : String;                        //
        cRabText          : String;
        cErfasser        : String;
        nSKFBetrag        : Double;
        nMBWert          : Double;
        cLiefStrecke      : String;
        cMindbest        : String;
        cBetreff          : String;                        //Betreff
        cGeraet          : String;
        cVersandkostenMBW : String;
        cKeineVersPausch  : String;
        cMemoDruck        : String;                        //Positionslangtext drucken? Ja, Nein oder Voreinstellung
        cLieferLiefNr    : String;                        //Lieferscheinnummer des Lieferanten
        cRabattText      : String;                        // Rabatttext (Rabatt, Lagerrabatt, Auftragsrabatt, Objektrabatt)
        cArt              : String;
        cSysUid          : String;
        cDMS_TYP          : String;
</syntaxhighlight>
==Methoden==
<syntaxhighlight lang="Delphi">
        function  IstAngebot(): boolean;
        function  IstAuftrag(): boolean;
        function  IstReparaturAuftrag(): boolean;
        function  IstLieferschein(): boolean;
        function  IstRechnung(): boolean;


        function  NeuNumLock(): boolean;
== Enumerationen ==
        procedure NeuNumLockRelease();
        function  VorgNeuNum(cFilter: string=''; lAbweichend: boolean = false): string;
        function  VorgNeuNumBool(cFilter: string=''; lAbweichend: boolean = false): boolean;
        function  IstVorgNrGueltig(cUID: string=''): boolean;


        function  NeuePositionBase(): TVorgangPos;
=== TVB_PosType ===
        procedure NeuePositionBaseMS(oOrgPos: TVorgangPos);
Positionstyp einer [[#TVorgangPos|TVorgangPos]]. Wird &uuml;ber die Property <code>[[#TVorgangPos_Prop_Typ|Typ]]</code> gelesen/gesetzt.
        procedure LoeschePositionBase(nDel: integer);
Die zugeh&ouml;rigen String-Konstanten sind unter [[#Konstanten|Konstanten]] beschrieben.
        procedure VerschiebePositionBase(nPos: integer; nZiel: integer);
        function  CheckIfNotNull(): Boolean;
        function  IsPosBerechnung(cPosArt: string): boolean;
        procedure CopyFrom(oSrc: TVorgang);
        procedure KalkAll();
        procedure Check_Multisteuer(oOrgPos: TVorgangPos; const cTable: string; const cMUID: string; const cRefNr: string);
        function  CopyPosmenge(cFromUID : string): string;
        function  CopyPosverp(cFromUID : string): string;
        procedure FillPersonBase(qPers: TxFQuery);
        function  SaveRecord(cUID : String = ''; lAlleSpeichern : Boolean = true): Boolean; virtual; abstract;
        function  ReadVorgangBase(qQuery: TxFQuery; lPos: boolean=false): boolean; overload;
        function  ReadVorgangBase(const cNr: string; lPos: boolean=false): boolean; overload;
        function  JahrNr(): string;
</syntaxhighlight>
==Properties==
<syntaxhighlight lang="Delphi">
        property  PnPosCnt                    : integer      read nPosCnt    write nPosCnt;
        property  PaPositionen[Index: integer] : TVorgangPos  read GetPosition write SetPosition; // Vorgangspositionen
        property  PcRabGrPers                  : string        read cRabGrPers;
</syntaxhighlight>
=Basis TVorgangPos=
==Variablen==
<syntaxhighlight lang="Delphi">
        oMyDB            : TxDB;
        nPosIndex        : Integer;  //Index des Positionsarrays aus TVorgang
        cNr              : String;    //Vorgangsnummer
        cKundNr          : String;    //Kundennummer
        cAuftragsNr      : String;    //Auftragsnummer
        cBestellNr        : String;    //Bestellnummer
        cPosText          : String;    //Positionstext
        cLProjNr          : String;    //Liefernatenprojektnr
        cLieferNr        : String;    //Versandnummer
        cVersandNr        : String;    //Versandnummer
        cPosNr            : String;    //Positionsnummer
        cPosNr2          : String;    //Positionsnummer Erweiterung
        cPosKas          : String;    //Positionsnummer
        cTyp              : String;    //Typ
        cArtikelNr        : String;    //Artikel-Nummer
        cLeistungsNr      : String;    //Leistungs-Nummer
        cBezeichnung1    : String;    //Bezeichnung 1
        cBezeichnung2    : String;    //Bezeichnung 2
        nMenge            : Double;    //Menge
        nUrMenge          : Double;    //nicht fakturierte Menge (MDS -> Leistungs-Einheitsfaktor)
        nLeistFaktor      : Double;    //Leistungs Mengen Faktor (MDS -> Leistungs-Einheitsfaktor)
        cEinheit          : String;    //Einheit
        nMengeG          : Integer;  //MengeG
        nKolli            : Integer;  //Kolli
        cVerpackung      : String;    //Verpackung
        nInhalt          : Double;    //Inhalt
        nEPreis          : Double;    //Einzelpreis VK in Netto
        nBEPreis          : Double;    //Einzelpreis VK in Brutto
        nOBPreis          : Double;    //Open Book Preis
        nUrPreis          : Double;    //UrPreis
        nUrPreisEK        : Double;    //UrPreisEK
        nGPreis          : Double;    //Gesamt Preis VK Netto
        nBGPreis          : Double;    //Gesamt Preis VK Brutto
        nEKPreis          : Double;    //EKPreis
        nEKSPreis        : Double;    //EKPreis
        cManPreis        : String;    //Manueller Preis Varianten
        nRabatt          : Double;    //Rabatt
        nRabatt1          : Double;    //Rabatt
        cRabArt1          : String;    //RabattArt
        nRabatt2          : Double;    //Rabatt
        cRabArt2          : String;    //RabattArt
        nRabatt3          : Double;    //Rabatt
        cRabArt3          : String;    //RabattArt
        nRabatt4          : Double;    //Rabatt
        cRabArt4          : String;    //RabattArt
        nRabatt5          : Double;    //Rabatt
        cRabArt5          : String;    //RabattArt
        nAddSub          : Double;    //AddSub
        cKonto            : String;    //Konto
        cLagNr            : String;   //LagerNr
        cLagONr          : String;    //Lagerort
        cVerkaufer        : String;    //Sachbearbeiter
        cStatus          : String;    //Positionskennzeichen
        cAngebotsNr      : String;    //AuftragsNr
        cUID              : String;    //UID
        cMUID            : String;    //Multi-Steuer UID
        cSpNr            : String;    //SpNr
        cBestellUID      : String;    //BestellUID
        cMaterialUID      : String;    //MaterialUID
        cEiliUID          : String;    //EiliUID
        cXUID1            : String;    //XUID1
        cXUID2            : String;    //XUID2
        cXUID3            : String;    //XUID3
        cXUID4            : String;    //XUID4
        cKommentar        : String;    //Kommentar
        nProvision        : Double;    //Provision
        cLiefKz          : String;    //LiefKz
        cProdGr          : String;    //ProdGr
        nFrachtV          : Double;    //FrachtV
        cLSNr            : String;    //Lieferschein-Nummer
        dLSDatum          : TDateTime; //Lieferschein-Datum
        cPosArt          : String;    //Positionsart
        cSKFJN            : String;    //Skonto fähig J/N
        cEKHerkunft      : String;
        cLiefNr          : String;    //Liefer Nr.
        cLagStreck        : String;    //Streckenlieferung
        cAufschlag        : String;    //Aufschlag
        nStaffelPreis    : integer;
        nStaffelmenge    : Double;
        lAktionspreis    : Boolean;
        lVerbrauchsMater  : Boolean;
        cAusdruckJN      : String;    //Ausdruck Ja/Nein
        cMemoDruck        : String;    //Positionslangtext drucken? Ja, Nein oder Voreinstellung


        cCMPUID      : String;    //Zum merken von referenzen
{| class="wikitable"
        cZeit_CMPUID  : String;    //Zum merken von referenzen
! Wert !! Bezeichner !! Beschreibung
        cZeit_Text    : String;    //Zum merken von referenzen
|- style="vertical-align:top"
        cZeit_Mitarb  : String;    //Zum merken von referenzen
| 0 || <code>ptPosition</code> || Normale Artikelposition
        dZeit_Date    : TDateTime; //Zum merken von referenzen
|- style="vertical-align:top"
        cZeit_NurLei  : String;    //Zum merken von referenzen
| 1 || <code>ptText</code> || Textzeile / Memorundzeile
|- style="vertical-align:top"
| 2 || <code>ptLeerzeile</code> || Leere Trennzeile
|- style="vertical-align:top"
| 3 || <code>ptZwischensumme</code> || Zwischensummen-Position
|- style="vertical-align:top"
| 4 || <code>ptTitelsumme</code> || Titelsummen-Position
|- style="vertical-align:top"
| 5 || <code>ptTitel</code> || Titelzeile
|- style="vertical-align:top"
| 6 || <code>ptGewerk</code> || Gewerk-Kopfzeile
|- style="vertical-align:top"
| 7 || <code>ptSeitenumbruch</code> || Manueller Seitenumbruch
|- style="vertical-align:top"
| 8 || <code>ptBild</code> || Bildposition
|}


        //Rechnung
=== TVB_MaterMode ===
        cKostst          : String;
Steuert den Materialmodus beim Lesen von Positionsdaten.
        lNeuNum          : Boolean;
        cSysUID          : String;    //SYS_UID
</syntaxhighlight>
==Methoden==
<syntaxhighlight lang="Delphi">
        procedure PositionsVorbelegung();
        procedure GenNewUid();
        function  CopyPosmenge(cFromUID : string): string;
        function  CopyPosverp(cFromUID : string): string;
        procedure CopyFrom(oSrc: TVorgangPos; lFull: boolean=False);
        procedure QueryToPos(      qTmp      : TxFQuery); overload;
        procedure QueryToPos(      qTmp      : TxFQuery;
                            const cFromTable : string;
                                  lVerpack  : Boolean=False;
                                  lUmkehr    : boolean=False); overload;
        procedure DBPosToPos(const cFromTable : string;
                            const cSysUid    : string;
                                  lVerpack  : Boolean=False;
                                  lUmkehr    : boolean=False);
        function  GetLan_Artikel(cArtNr: String; cFeld: string; cDefault: string): string;
        procedure FillArtikel(cArtNr:String);
        function  SetzeLieferant(const cLiefNr: string; lEKNeu: boolean=True; lDefaultEK1: boolean=False): boolean;
        function  GetLan_Leist(cLeistNr: String; cFeld: string; cDefault: string): string;
        procedure FillLeistung(cLeistNr:String);
        procedure KalkPos();
        procedure SetPosNr(cP: string; cT: string=''; cG: string=''; cFormat: string=''); overload;
        procedure SetPosNr(nP: integer; nT: integer=-1; nG: integer=-1; cFormat: string=''); overload;
        function  PosLaufend(iPos: integer=0): string;
        procedure Preisfindung(cShopNr: string=CONST_NO_SHOP);
</syntaxhighlight>
==Properties==
<syntaxhighlight lang="Delphi">
        property PcMWSTSch        : string  read cMWSTSch        write SetMWSTSch;
        property PcMengeIn        : string  read cMengeIn        write SetcMengeIn;
        property PnMengeIn        : double  read nMengeIn        write SetnMengeIn;
        property PnMengeInFak    : double  read nMengeInFak    write SetnMengeInFak;
        property PcMemofeld      : string  read cMemofeld      write SetcMemofeld;
        property PcMemofeldAnsi  : string  read cMemofeldAnsi  write SetcMemofeldAnsi;
        property cPosLaufend      : string  read ReadPosLfd      write cPosLfd;
</syntaxhighlight>
=Allgemeine Datentypen=
==TVB_MaterMode==
<syntaxhighlight lang="Delphi">
    TVB_MaterMode = (
        mmMD5=1,
        mmReadUID=2
    );
</syntaxhighlight>


=Allgemeine Konstanten=
{| class="wikitable"
<syntaxhighlight lang="Delphi">
! Wert !! Bezeichner !! Beschreibung
    POSTYP_POS =  '0'; //Artikel/Leistung Position
|- style="vertical-align:top"
    POSTYP_TXT = '1'; //Text
| 0 || <code>mmNone</code> || Kein spezieller Materialmodus
    POSTYP_ELN =  '2'; //Leerzeile (empty line)
|- style="vertical-align:top"
    POSTYP_ZWS = '3'; //Zwischensumme
| 1 || <code>mmMD5</code> || Materialpr&uuml;fung per MD5-Hash
    POSTYP_TIS =  '4'; //Titelsumme
|- style="vertical-align:top"
    POSTYP_TIT =  '7'; //Titel
| 2 || <code>mmReadUID</code> || Material-UID direkt lesen
    POSTYP_GEW =  '8'; //Gewerk
|}
    POSTYP_PBR = '17'; //Seitenumbruch (Pagebreak)
    POSTYP_PIC = '19'; //Bildposition
</syntaxhighlight>


=Allgemeine Funktionen=
=== TVorgangFehlerTyp ===
<syntaxhighlight lang="Delphi">
Klassifiziert einen Eintrag in der internen Fehlerliste eines [[#TVorgang|TVorgang]].
function IstVKVorgang(cMainTable: string): boolean;
Wird im Record [[#TVorgangFehler|TVorgangFehler]] verwendet.
function IstVKVorgangPos(cPosTable: string): boolean;
function CopyPosmengeDB(oMyDB: TxDB; cFromUID : string): string;
function CopyPosverpDB(oMyDB: TxDB; cFromUID : string): string;
function CopyRTFLan(oMyDB: TxDB; cVonTable: String; cVonRef: String; cNachTable: String; cNachRef: String): String;
function PosNrFormatCheck(const cFormat: string): boolean;
function PosNrFormatCounts(const cFormat: string; out nG: integer; out nT: integer; out nP: integer): boolean;
function GetVorgangMandant(oMyDB: TxDB; const cTable: string; const cNr: string): string;
</syntaxhighlight>


==IstVKVorgang==
{| class="wikitable"
==IstVKVorgangPos==
! Wert !! Bezeichner !! Beschreibung
==CopyPosmengeDB==
|- style="vertical-align:top"
==CopyPosverpDB==
| 0 || <code>vftOther</code> || Sonstiger Hinweis
==CopyRTFLan==
|- style="vertical-align:top"
==PosNrFormatCheck==
| 1 || <code>vftCritical</code> || Kritischer Fehler (blockiert Speichern)
==PosNrFormatCounts==
|- style="vertical-align:top"
==GetVorgangMandant==
| 2 || <code>vftSaveCheck</code> || Pr&uuml;fung beim Speichern
|- style="vertical-align:top"
| 3 || <code>vftPosInfo</code> || Positionsbezogene Information
|}
 
=== TVorgangFehlerLoeschenLesen ===
Steuert, welche Fehler nach dem Lesen via <code>[[#TVorgang_Meth_leseFehler|leseFehler]]</code> aus der Liste gel&ouml;scht werden.
 
{| class="wikitable"
! Wert !! Bezeichner !! Beschreibung
|- style="vertical-align:top"
| 0 || <code>vfllNone</code> || Kein Fehler nach dem Lesen l&ouml;schen
|- style="vertical-align:top"
| 1 || <code>vfllAll</code> || Alle Fehler nach dem Lesen l&ouml;schen
|- style="vertical-align:top"
| 2 || <code>vfllSkipCritical</code> || Nur nicht-kritische Fehler l&ouml;schen (Standard)
|}
 
== Records ==
 
=== TVorgangPosOriginal ===
Enth&auml;lt Referenzinformationen der Ursprungsposition (z.&nbsp;B. bei der Vorgangs&uuml;bernahme).
Wird &uuml;ber die Property <code>[[#TVorgangPos_Prop_OriginalPos|OriginalPos]]</code> einer [[#TVorgangPos|TVorgangPos]] geliefert.
 
{| class="wikitable sortable"
! Feld !! Typ !! Beschreibung
|- style="vertical-align:top"
| <code>rDMS</code> || TDMSType || DMS-Typ des Ursprungsvorgangs
|- style="vertical-align:top"
| <code>cNr</code> || String || Vorgangsnummer des Ursprungs
|- style="vertical-align:top"
| <code>cUid</code> || String || UID der Ursprungsposition
|- style="vertical-align:top"
| <code>cSysUid</code> || String || System-UID der Ursprungsposition
|}
 
'''Methoden:'''
{{Achtung|Funktioniert nur im Scriptrunner "Pax"! Aktiver Scriptrunner ist definiert in Programmparameter 444.}}
{| class="wikitable"
! Signatur !! Beschreibung
|- style="vertical-align:top"
| <code>procedure Clear</code> || Leert alle Felder des Records
|- style="vertical-align:top"
| <code>procedure SetData(const ADMS: TDMSType; qPos: TxFQuery)</code> || Bef&uuml;llt den Record aus einem Positions-Query
|}
 
=== TVorgangPosParams_AktualisiereDaten ===
Steuert, welche Datenbereiche bei <code>[[#TVorgangPos_Meth_AktualisiereDaten|AktualisiereDaten]]</code> aktualisiert werden sollen.
Wird &uuml;ber die Property <code>[[#TVorgang_Prop_ParameterPositionsdatenAktualisieren|ParameterPositionsdatenAktualisieren]]</code> von [[#TVorgang|TVorgang]] gesetzt.
 
{| class="wikitable sortable"
! Feld !! Typ !! Beschreibung
|- style="vertical-align:top"
| <code>lTexte</code> || Boolean || Bezeichnungen/Texte aktualisieren
|- style="vertical-align:top"
| <code>lEK</code> || Boolean || Einkaufspreise aktualisieren
|- style="vertical-align:top"
| <code>lVK</code> || Boolean || Verkaufspreise aktualisieren
|}
 
'''Methoden:'''
{{Achtung|Funktioniert nur im Scriptrunner "Pax"! Aktiver Scriptrunner ist definiert in Programmparameter 444.}}
{| class="wikitable"
! Signatur !! Beschreibung
|- style="vertical-align:top"
| <code>procedure Init(const cVorb: string = <nowiki>''</nowiki>)</code> || Initialisiert die Parameter mit Standardwerten; optionaler Vorbelegungsschl&uuml;ssel
|- style="vertical-align:top"
| <code>function Aktualisieren(): boolean</code> || Gibt <code>True</code> zur&uuml;ck, wenn mindestens ein Aktualisierungsschalter gesetzt ist
|}
 
=== TVorgangPosSummen ===
Speichert Zwischen- und Titelsummen-Betr&auml;ge je Ebene (1 bis <code>VB_MAX_SummenEbenen</code>).
 
{| class="wikitable sortable"
! Feld !! Typ !! Beschreibung
|- style="vertical-align:top"
| <code>aZw[1..9]</code> || Double || Zwischensummen-Betr&auml;ge je Ebene
|- style="vertical-align:top"
| <code>aTit[1..9]</code> || Double || Titelsummen-Betr&auml;ge je Ebene
|}
 
'''Methoden:'''
{{Achtung|Funktioniert nur im Scriptrunner "Pax"! Aktiver Scriptrunner ist definiert in Programmparameter 444.}}
{| class="wikitable"
! Signatur !! Beschreibung
|- style="vertical-align:top"
| <code>procedure Clear</code> || Setzt alle Summen auf 0
|- style="vertical-align:top"
| <code>procedure ClearZw(const nEbene: integer)</code> || Setzt Zwischensumme der Ebene nEbene auf 0
|- style="vertical-align:top"
| <code>procedure ClearTit(const nEbene: integer)</code> || Setzt Titelsumme der Ebene nEbene auf 0
|- style="vertical-align:top"
| <code>procedure AddZw(const nBetrag: double)</code> || Addiert Betrag zur aktiven Zwischensummen-Ebene
|- style="vertical-align:top"
| <code>procedure AddTit(const nBetrag: double)</code> || Addiert Betrag zur aktiven Titelsummen-Ebene
|- style="vertical-align:top"
| <code>function ReadZw(const nEbene: integer): double</code> || Liefert den Zwischensummen-Betrag der Ebene
|- style="vertical-align:top"
| <code>function ReadTit(const nEbene: integer): double</code> || Liefert den Titelsummen-Betrag der Ebene
|}
 
=== TVorgangEigenschaft ===
Repr&auml;sentiert ein Vorgangsmerkmal (Eigenschaft), das per <code>[[#TVorgang_Meth_EigenschaftSetzen|EigenschaftSetzen]]</code> gesetzt wird.
 
{| class="wikitable sortable"
! Feld !! Typ !! Beschreibung
|- style="vertical-align:top"
| <code>cNr</code> || String || Merkmalsnummer
|- style="vertical-align:top"
| <code>lMode</code> || Boolean || True = setzen, False = l&ouml;schen
|}
 
=== TVorgangFehler ===
Ein Eintrag in der internen Fehlerliste von [[#TVorgang|TVorgang]].
Wird per <code>[[#TVorgang_Meth_leseFehler|leseFehler]]</code> ausgelesen.
 
{| class="wikitable sortable"
! Feld !! Typ !! Beschreibung
|- style="vertical-align:top"
| <code>cTitel</code> || String || Fehlertitel (Kurzbeschreibung)
|- style="vertical-align:top"
| <code>cText</code> || String || Fehlertext (Detailbeschreibung)
|- style="vertical-align:top"
| <code>eTyp</code> || [[#TVorgangFehlerTyp|TVorgangFehlerTyp]] || Fehlerklassifikation
|}
 
== Konstanten ==
 
{| class="wikitable sortable"
! Konstante !! Wert !! Beschreibung
|- style="vertical-align:top"
| <code>POSTYP_POS</code> || <code>'0'</code> || Positionstyp normale Artikelposition (entspricht [[#TVB_PosType|ptPosition]])
|- style="vertical-align:top"
| <code>POSTYP_TXT</code> || <code>'1'</code> || Positionstyp Textzeile (entspricht [[#TVB_PosType|ptText]])
|- style="vertical-align:top"
| <code>POSTYP_ELN</code> || <code>'2'</code> || Positionstyp Leerzeile (entspricht [[#TVB_PosType|ptLeerzeile]])
|- style="vertical-align:top"
| <code>POSTYP_ZWS</code> || <code>'3'</code> || Positionstyp Zwischensumme (entspricht [[#TVB_PosType|ptZwischensumme]])
|- style="vertical-align:top"
| <code>POSTYP_TIS</code> || <code>'4'</code> || Positionstyp Titelsumme (entspricht [[#TVB_PosType|ptTitelsumme]])
|- style="vertical-align:top"
| <code>POSTYP_TIT</code> || <code>'7'</code> || Positionstyp Titel (entspricht [[#TVB_PosType|ptTitel]])
|- style="vertical-align:top"
| <code>POSTYP_GEW</code> || <code>'8'</code> || Positionstyp Gewerk (entspricht [[#TVB_PosType|ptGewerk]])
|- style="vertical-align:top"
| <code>POSTYP_PBR</code> || <code>'17'</code> || Positionstyp Seitenumbruch (entspricht [[#TVB_PosType|ptSeitenumbruch]])
|- style="vertical-align:top"
| <code>POSTYP_PIC</code> || <code>'19'</code> || Positionstyp Bild (entspricht [[#TVB_PosType|ptBild]])
|- style="vertical-align:top"
| <code>VB_DEFAULT_BezZwischensumme</code> || <code>'ZWISCHENSUMME    :'</code> || Standard-Bezeichnung f&uuml;r Zwischensummen-Positionen
|- style="vertical-align:top"
| <code>VB_DEFAULT_BezTitelsumme</code> || <code>'TITELSUMME      :'</code> || Standard-Bezeichnung f&uuml;r Titelsummen-Positionen
|- style="vertical-align:top"
| <code>VB_MAX_SummenEbenen</code> || <code>9</code> || Maximale Anzahl von Summenebenen (Zwischen- und Titelsummen)
|}
 
=Basisklassen Vorgangsgenerierung=
 
== TVorgang ==
 
=== Variablen ===
{| class="wikitable sortable"
! Name !! Typ !! Zugriff !! Beschreibung
|- style="vertical-align:top"
| <code>oMyDB</code> || TxDB || Lesen/Schreiben || Datenbankverbindung des Vorgangs
|- style="vertical-align:top"
| <code>oProtokoll</code> || TStringList || Lesen/Schreiben || Protokoll-Liste (Meldungen/Log)
|- style="vertical-align:top"
| <code>lMeldung</code> || Boolean || Lesen/Schreiben || Steuert Anzeige von Benutzer-Meldungen
|- style="vertical-align:top"
| <code>lSetPSBemAuto</code> || Boolean || Lesen/Schreiben || Automatische Positionsbemerkung setzen
|- style="vertical-align:top"
| <code>cVorgNr</code> || String || Lesen/Schreiben || Vorgangsnummer
|- style="vertical-align:top"
| <code>cProjNr</code> || String || Lesen/Schreiben || Projektnummer
|- style="vertical-align:top"
| <code>lBrutto</code> || Boolean || Lesen/Schreiben || Brutto-Modus aktiv
|- style="vertical-align:top"
| <code>cLanguage</code> || String || Lesen/Schreiben || Sprach-Code (intern, z.&nbsp;B. f&uuml;r Formulare)
|- style="vertical-align:top"
| <code>cLagNr</code> || String || Lesen/Schreiben || Lagernummer
|- style="vertical-align:top"
| <code>cTyp</code> || String || Lesen/Schreiben || Vorgangstyp-K&uuml;rzel
|- style="vertical-align:top"
| <code>dVorgDat</code> || TDateTime || Lesen/Schreiben || Vorgangsdatum
|- style="vertical-align:top"
| <code>dFaelligDat</code> || TDateTime || Lesen/Schreiben || F&auml;lligkeitsdatum
|- style="vertical-align:top"
| <code>dBuchDat</code> || TDateTime || Lesen/Schreiben || Buchungsdatum
|- style="vertical-align:top"
| <code>dAufDat</code> || TDateTime || Lesen/Schreiben || Auftragsdatum
|- style="vertical-align:top"
| <code>cKdNr</code> || String || Lesen/Schreiben || Kundennummer
|- style="vertical-align:top"
| <code>cAnrede</code> || String || Lesen/Schreiben || Anrede des Kunden
|- style="vertical-align:top"
| <code>cName</code> || String || Lesen/Schreiben || Name des Kunden
|- style="vertical-align:top"
| <code>cVorname</code> || String || Lesen/Schreiben || Vorname des Kunden
|- style="vertical-align:top"
| <code>cZusatz1</code> || String || Lesen/Schreiben || Adresszusatz 1
|- style="vertical-align:top"
| <code>cZusatz2</code> || String || Lesen/Schreiben || Adresszusatz 2
|- style="vertical-align:top"
| <code>cStrasse</code> || String || Lesen/Schreiben || Stra&szlig;e der Lieferadresse
|- style="vertical-align:top"
| <code>cPostfach</code> || String || Lesen/Schreiben || Postfach
|- style="vertical-align:top"
| <code>cLK</code> || String || Lesen/Schreiben || L&auml;nderkennzeichen
|- style="vertical-align:top"
| <code>cPLZ</code> || String || Lesen/Schreiben || Postleitzahl
|- style="vertical-align:top"
| <code>cOrt</code> || String || Lesen/Schreiben || Ort
|- style="vertical-align:top"
| <code>cAngebNr</code> || String || Lesen/Schreiben || Angebotsnummer
|- style="vertical-align:top"
| <code>cLSNr</code> || String || Lesen/Schreiben || Lieferscheinnummer
|- style="vertical-align:top"
| <code>cRechNr</code> || String || Lesen/Schreiben || Rechnungsnummer
|- style="vertical-align:top"
| <code>cAuftNr</code> || String || Lesen/Schreiben || Auftragsnummer
|- style="vertical-align:top"
| <code>cRepaNr</code> || String || Lesen/Schreiben || Reparaturauftragsnummer
|- style="vertical-align:top"
| <code>cEinkaufsNr</code> || String || Lesen/Schreiben || Einkaufsnummer
|- style="vertical-align:top"
| <code>cBestellNr</code> || String || Lesen/Schreiben || Bestellnummer
|- style="vertical-align:top"
| <code>cPosText</code> || String || Lesen/Schreiben || Positionstext (globaler Standardtext)
|- style="vertical-align:top"
| <code>cLProjNr</code> || String || Lesen/Schreiben || Leistungsprojektnummer
|- style="vertical-align:top"
| <code>cKopftext</code> || String || Lesen/Schreiben || Kopftext des Vorgangs
|- style="vertical-align:top"
| <code>cFusstext</code> || String || Lesen/Schreiben || Fu&szlig;text des Vorgangs
|- style="vertical-align:top"
| <code>nNBetrag</code> || Double || Lesen/Schreiben || Nettobetrag gesamt
|- style="vertical-align:top"
| <code>nBBetrag</code> || Double || Lesen/Schreiben || Bruttobetrag gesamt
|- style="vertical-align:top"
| <code>nEKBetrag</code> || Double || Lesen/Schreiben || Einkaufsbetrag gesamt
|- style="vertical-align:top"
| <code>nRabattBetrag</code> || Double || Lesen/Schreiben || Rabattbetrag gesamt
|- style="vertical-align:top"
| <code>nRabattProz</code> || Double || Lesen/Schreiben || Rabattprozentsatz gesamt
|- style="vertical-align:top"
| <code>nAnzahlung</code> || Double || Lesen/Schreiben || Anzahlungsbetrag
|- style="vertical-align:top"
| <code>nPorto</code> || Double || Lesen/Schreiben || Portokosten
|- style="vertical-align:top"
| <code>nVerpackung</code> || Double || Lesen/Schreiben || Verpackungskosten
|- style="vertical-align:top"
| <code>lSplitPoVe</code> || Boolean || Lesen/Schreiben || Porto und Verpackung getrennt ausweisen
|- style="vertical-align:top"
| <code>cVersand</code> || String || Lesen/Schreiben || Versandart
|- style="vertical-align:top"
| <code>cWaehr</code> || String || Lesen/Schreiben || W&auml;hrungsk&uuml;rzel
|- style="vertical-align:top"
| <code>cFormul</code> || String || Lesen/Schreiben || Formularnummer/-k&uuml;rzel
|- style="vertical-align:top"
| <code>cVAnr</code> || String || Lesen/Schreiben || Versandanrede
|- style="vertical-align:top"
| <code>cVName1</code> || String || Lesen/Schreiben || Versandname 1
|- style="vertical-align:top"
| <code>cVName2</code> || String || Lesen/Schreiben || Versandname 2
|- style="vertical-align:top"
| <code>cVZusatz</code> || String || Lesen/Schreiben || Versandadresse Zusatz
|- style="vertical-align:top"
| <code>cVStrasse</code> || String || Lesen/Schreiben || Versandstra&szlig;e
|- style="vertical-align:top"
| <code>cVLK</code> || String || Lesen/Schreiben || Versand-L&auml;nderkennzeichen
|- style="vertical-align:top"
| <code>cVPLZ</code> || String || Lesen/Schreiben || Versand-PLZ
|- style="vertical-align:top"
| <code>cVOrt</code> || String || Lesen/Schreiben || Versandort
|- style="vertical-align:top"
| <code>cVUID</code> || String || Lesen/Schreiben || Versandadresse UID
|- style="vertical-align:top"
| <code>cPrio</code> || String || Lesen/Schreiben || Priorit&auml;t des Vorgangs
|- style="vertical-align:top"
| <code>cAuftNrKd</code> || String || Lesen/Schreiben || Auftrags-/Bestellnummer des Kunden
|- style="vertical-align:top"
| <code>cBesteller</code> || String || Lesen/Schreiben || Besteller (Person)
|- style="vertical-align:top"
| <code>cSachb</code> || String || Lesen/Schreiben || Sachbearbeiter
|- style="vertical-align:top"
| <code>cRabPosJN</code> || String || Lesen/Schreiben || Positionsrabatt anzeigen J/N
|- style="vertical-align:top"
| <code>cMWSTJN</code> || String || Lesen/Schreiben || Mehrwertsteuer ausweisen J/N
|- style="vertical-align:top"
| <code>cSText1</code> || String || Lesen/Schreiben || Sondertext 1
|- style="vertical-align:top"
| <code>cSText2</code> || String || Lesen/Schreiben || Sondertext 2
|- style="vertical-align:top"
| <code>cSText3</code> || String || Lesen/Schreiben || Sondertext 3
|- style="vertical-align:top"
| <code>cSText4</code> || String || Lesen/Schreiben || Sondertext 4
|- style="vertical-align:top"
| <code>cSText5</code> || String || Lesen/Schreiben || Sondertext 5
|- style="vertical-align:top"
| <code>cSText6</code> || String || Lesen/Schreiben || Sondertext 6
|- style="vertical-align:top"
| <code>cSText7</code> || String || Lesen/Schreiben || Sondertext 7
|- style="vertical-align:top"
| <code>cPreisJN</code> || String || Lesen/Schreiben || Preis auf Dokument drucken J/N
|- style="vertical-align:top"
| <code>cMwStAbs</code> || String || Lesen/Schreiben || MwSt-Absetzungstext/-K&uuml;rzel
|- style="vertical-align:top"
| <code>dLiefDat</code> || TDateTime || Lesen/Schreiben || Lieferdatum
|- style="vertical-align:top"
| <code>cDeleted</code> || String || Lesen/Schreiben || Gel&ouml;scht-Kennzeichen
|- style="vertical-align:top"
| <code>dLDat2</code> || TDateTime || Lesen/Schreiben || Zweites Lieferdatum
|- style="vertical-align:top"
| <code>cSprache</code> || String || Lesen/Schreiben || Sprache des Vorgangs
|- style="vertical-align:top"
| <code>cReEmpf</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Nummer
|- style="vertical-align:top"
| <code>cReAnrede</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Anrede
|- style="vertical-align:top"
| <code>cReName</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Name
|- style="vertical-align:top"
| <code>cReVorname</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Vorname
|- style="vertical-align:top"
| <code>cReZusatz1</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Adresszusatz 1
|- style="vertical-align:top"
| <code>cReZusatz2</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Adresszusatz 2
|- style="vertical-align:top"
| <code>cReStrasse</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Stra&szlig;e
|- style="vertical-align:top"
| <code>cRePostfach</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Postfach
|- style="vertical-align:top"
| <code>cReLK</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-L&auml;nderkennzeichen
|- style="vertical-align:top"
| <code>cRePLZ</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-PLZ
|- style="vertical-align:top"
| <code>cReOrt</code> || String || Lesen/Schreiben || Rechnungsempf&auml;nger-Ort
|- style="vertical-align:top"
| <code>cVertreter</code> || String || Lesen/Schreiben || Vertreter-K&uuml;rzel
|- style="vertical-align:top"
| <code>cVerbucht</code> || String || Lesen/Schreiben || Verbucht-Kennzeichen
|- style="vertical-align:top"
| <code>cLager</code> || String || Lesen/Schreiben || Lager-K&uuml;rzel
|- style="vertical-align:top"
| <code>cRechFrei</code> || String || Lesen/Schreiben || Rechnungsfreigabe-Kennzeichen
|- style="vertical-align:top"
| <code>cBonNr</code> || String || Lesen/Schreiben || Bonnummer (Kasse)
|- style="vertical-align:top"
| <code>cMandant</code> || String || Lesen/Schreiben || Mandantenk&uuml;rzel
|- style="vertical-align:top"
| <code>nMwStDM</code> || Double || Lesen/Schreiben || MwSt-Betrag in DM (Altw&auml;hrung)
|- style="vertical-align:top"
| <code>nKursDM</code> || Double || Lesen/Schreiben || Wechselkurs DM
|- style="vertical-align:top"
| <code>nAbschlag</code> || Double || Lesen/Schreiben || Abschlagsbetrag
|- style="vertical-align:top"
| <code>nZBetrag</code> || Double || Lesen/Schreiben || Zahlungsbetrag
|- style="vertical-align:top"
| <code>nZSkonto</code> || Double || Lesen/Schreiben || Skonto-Betrag
|- style="vertical-align:top"
| <code>dZDatum</code> || TDateTime || Lesen/Schreiben || Zahlungsdatum
|- style="vertical-align:top"
| <code>cMemo</code> || String || Lesen/Schreiben || Memofeld des Vorgangs
|- style="vertical-align:top"
| <code>nValuta</code> || Integer || Lesen/Schreiben || Valutatage
|- style="vertical-align:top"
| <code>cKostenst</code> || String || Lesen/Schreiben || Kostenstelle
|- style="vertical-align:top"
| <code>cKostentraeger</code> || String || Lesen/Schreiben || Kostentr&auml;ger
|- style="vertical-align:top"
| <code>cKalkGr</code> || String || Lesen/Schreiben || Kalkulationsgruppe
|- style="vertical-align:top"
| <code>cFrachtV</code> || String || Lesen/Schreiben || Frachtart/-vorschrift
|- style="vertical-align:top"
| <code>nFrachtK</code> || Double || Lesen/Schreiben || Frachtkosten
|- style="vertical-align:top"
| <code>nFrachtG</code> || Integer || Lesen/Schreiben || Frachtgewicht
|- style="vertical-align:top"
| <code>cGruppe</code> || String || Lesen/Schreiben || Vorgangsgruppe
|- style="vertical-align:top"
| <code>nPosInc</code> || Integer || Lesen/Schreiben || Positionsnummer-Inkrement
|- style="vertical-align:top"
| <code>cFiliale</code> || String || Lesen/Schreiben || Filialk&uuml;rzel
|- style="vertical-align:top"
| <code>cRabText</code> || String || Lesen/Schreiben || Rabatttextfeld (kurz)
|- style="vertical-align:top"
| <code>cErfasser</code> || String || Lesen/Schreiben || Erfasser des Vorgangs
|- style="vertical-align:top"
| <code>nSKFBetrag</code> || Double || Lesen/Schreiben || Skontof&auml;higer Betrag
|- style="vertical-align:top"
| <code>lLiefStrecke</code> || Boolean || Lesen/Schreiben || Lieferstreckengesch&auml;ft aktiv
|- style="vertical-align:top"
| <code>cBetreff</code> || String || Lesen/Schreiben || Betreffzeile
|- style="vertical-align:top"
| <code>cMemoDruck</code> || String || Lesen/Schreiben || Druckmemo (erscheint auf Dokument)
|- style="vertical-align:top"
| <code>cLieferLiefNr</code> || String || Lesen/Schreiben || Lieferanten-Lieferscheinnummer
|- style="vertical-align:top"
| <code>cRabattText</code> || String || Lesen/Schreiben || Rabatttext (lang)
|- style="vertical-align:top"
| <code>cSysUid</code> || String || Lesen/Schreiben || System-UID des Vorgangs
|- style="vertical-align:top"
| <code>lLeistPreis2</code> || Boolean || Lesen/Schreiben || Leistungspreis 2 verwenden
|- style="vertical-align:top"
| <code>cFunction</code> || String || Lesen/Schreiben || Funktionsk&uuml;rzel (Scripting-Hook)
|- style="vertical-align:top"
| <code>lSaveAllowed</code> || Boolean || Lesen/Schreiben || Speichern erlaubt
|- style="vertical-align:top"
| <code>lVorgangsSperre</code> || Boolean || Lesen/Schreiben || Vorgang gesperrt
|}
 
=== Properties ===
{| class="wikitable sortable"
! Name !! Typ !! Zugriff !! Beschreibung
|- style="vertical-align:top"
| <code>DmsTyp</code> || String || Lesen/Schreiben || DMS-Typ des Vorgangs (z.&nbsp;B. AN, AU, LS, RE)
|- style="vertical-align:top"
| <code>MainTable</code> || String || Lesen/Schreiben || Haupttabelle des Vorgangs (Datenbankname)
|- style="vertical-align:top"
| <code>PosTable</code> || String || Lesen/Schreiben || Positionstabelle des Vorgangs
|- style="vertical-align:top"
| <code>cPosFormat</code> || String || Lesen/Schreiben || Positionsnummern-Format
|- style="vertical-align:top"
| <span id="TVorgang_Prop_ParameterPositionsdatenAktualisieren"></span><code>ParameterPositionsdatenAktualisieren</code> || [[#TVorgangPosParams_AktualisiereDaten|TVorgangPosParams_AktualisiereDaten]] || Lesen/Schreiben || Parameter f&uuml;r Massenaktualisierung von Positionsdaten
|- style="vertical-align:top"
| <code>PnPosCnt</code> || Integer || Lesen/Schreiben || Anzahl der Positionen im Vorgang
|- style="vertical-align:top"
| <code>PaPositionen[Index]</code> || [[#TVorgangPos|TVorgangPos]] || Lesen/Schreiben || Array der Positionsobjekte (0-basiert)
|- style="vertical-align:top"
| <code>PcRabGrPers</code> || String || Nur Lesen || Rabattgruppe der Person (aus Stammdaten ermittelt)
|- style="vertical-align:top"
| <code>PcVKdNr</code> || String || Lesen/Schreiben || VK-Kundennummer (alternativ zur cKdNr f&uuml;r Preisfindung)
|- style="vertical-align:top"
| <code>nNet1</code> || Double || Lesen/Schreiben || Nettobetrag MwSt-Schl&uuml;ssel 1
|- style="vertical-align:top"
| <code>nNet2</code> || Double || Lesen/Schreiben || Nettobetrag MwSt-Schl&uuml;ssel 2
|- style="vertical-align:top"
| <code>nNet3</code> || Double || Lesen/Schreiben || Nettobetrag MwSt-Schl&uuml;ssel 3
|- style="vertical-align:top"
| <code>nBrutto1</code> || Double || Lesen/Schreiben || Bruttobetrag MwSt-Schl&uuml;ssel 1
|- style="vertical-align:top"
| <code>nBrutto2</code> || Double || Lesen/Schreiben || Bruttobetrag MwSt-Schl&uuml;ssel 2
|- style="vertical-align:top"
| <code>nBrutto3</code> || Double || Lesen/Schreiben || Bruttobetrag MwSt-Schl&uuml;ssel 3
|- style="vertical-align:top"
| <code>nMwSt1</code> || Double || Lesen/Schreiben || MwSt-Betrag Schl&uuml;ssel 1
|- style="vertical-align:top"
| <code>nMwSt2</code> || Double || Lesen/Schreiben || MwSt-Betrag Schl&uuml;ssel 2
|- style="vertical-align:top"
| <code>nMwSt3</code> || Double || Lesen/Schreiben || MwSt-Betrag Schl&uuml;ssel 3
|- style="vertical-align:top"
| <code>cMwStSchl1</code> || String || Lesen/Schreiben || MwSt-Schl&uuml;ssel 1
|- style="vertical-align:top"
| <code>cMwStSchl2</code> || String || Lesen/Schreiben || MwSt-Schl&uuml;ssel 2
|- style="vertical-align:top"
| <code>cMwStSchl3</code> || String || Lesen/Schreiben || MwSt-Schl&uuml;ssel 3
|- style="vertical-align:top"
| <code>cKeineVersPausch</code> || String || Lesen/Schreiben || Keine Versandpauschale berechnen J/N
|- style="vertical-align:top"
| <code>cZahlBed</code> || String || Lesen/Schreiben || Zahlungsbedingung
|- style="vertical-align:top"
| <code>lNewVorgang</code> || Boolean || Nur Lesen || Neuer (noch nicht gespeicherter) Vorgang
|- style="vertical-align:top"
| <code>cKopfNr</code> || String || Lesen/Schreiben || Kopftextbaustein-Nummer
|- style="vertical-align:top"
| <code>cFussNr</code> || String || Lesen/Schreiben || Fu&szlig;textbaustein-Nummer
|- style="vertical-align:top"
| <code>cLiefStrecke</code> || String || Lesen/Schreiben || Lieferstrecken-K&uuml;rzel
|- style="vertical-align:top"
| <code>cStatus</code> || String || Lesen/Schreiben || Status des Vorgangs
|- style="vertical-align:top"
| <code>cStatM</code> || String || Lesen/Schreiben || Material-Status
|- style="vertical-align:top"
| <code>cStatS</code> || String || Lesen/Schreiben || Service-Status
|- style="vertical-align:top"
| <code>cStatL</code> || String || Lesen/Schreiben || Lieferstatus
|- style="vertical-align:top"
| <code>cStatR</code> || String || Lesen/Schreiben || Rechnungsstatus
|- style="vertical-align:top"
| <code>cColStatus</code> || String || Lesen/Schreiben || Farb-/Anzeigestatus (f&uuml;r UI)
|- style="vertical-align:top"
| <code>cZustand</code> || String || Lesen/Schreiben || Zustandskenner des Vorgangs
|- style="vertical-align:top"
| <code>cArt</code> || String || Lesen/Schreiben || Vorgangsart-K&uuml;rzel
|- style="vertical-align:top"
| <code>cBonusJN</code> || String || Lesen/Schreiben || Bonus berechnen J/N
|- style="vertical-align:top"
| <code>cVersandkostenMBW</code> || String || Lesen/Schreiben || Versandkosten-Mindestbestellwert-Kennzeichen
|- style="vertical-align:top"
| <code>cWKNr</code> || String || Lesen/Schreiben || Werbungskosten-Nummer
|}
 
=== Methoden ===
{| class="wikitable"
! Signatur !! Beschreibung
|- style="vertical-align:top"
| <code>constructor Create(const cUid: string; oxDB: TxDB; cDmsType: string)</code> || Erstellt einen neuen Vorgang mit UID, Datenbankverbindung und DMS-Typ
|- style="vertical-align:top"
| <code>destructor Destroy</code> || Gibt den Vorgang und alle Ressourcen frei
|- style="vertical-align:top"
| <code>function SemaphoreCreate(cFName: string; lMeldung: boolean = False; cWait: string = <nowiki>''</nowiki>): boolean</code> || Erstellt eine Datei-Semaphore (Sperrdatei); gibt True zur&uuml;ck wenn erfolgreich
|- style="vertical-align:top"
| <code>function SemaphoreInUse(cFName: string): boolean</code> || Pr&uuml;ft ob die Semaphore-Datei bereits in Verwendung ist
|- style="vertical-align:top"
| <code>procedure SemaphoreReleaseAll</code> || Gibt alle Semaphoren dieses Vorgangs frei
|- style="vertical-align:top"
| <code>procedure SemaphoreRelease(cFName: string)</code> || Gibt eine bestimmte Semaphore frei
|- style="vertical-align:top"
| <code>function IstAngebot(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang ein Angebot ist
|- style="vertical-align:top"
| <code>function IstAuftrag(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang ein Auftrag ist
|- style="vertical-align:top"
| <code>function IstReparaturAuftrag(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang ein Reparaturauftrag ist
|- style="vertical-align:top"
| <code>function IstLieferschein(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang ein Lieferschein ist
|- style="vertical-align:top"
| <code>function IstRechnung(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang eine Rechnung ist
|- style="vertical-align:top"
| <code>function IstBestellung(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang eine Bestellung ist
|- style="vertical-align:top"
| <code>function IstAnfrage(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang eine Anfrage ist
|- style="vertical-align:top"
| <code>function IstEKLieferschein(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang ein EK-Lieferschein ist
|- style="vertical-align:top"
| <code>function IstEinkauf(): boolean</code> || Gibt True zur&uuml;ck wenn der Vorgang ein Einkaufsvorgang ist
|- style="vertical-align:top"
| <code>function IstVG_VK(): boolean</code> || Gibt True zur&uuml;ck wenn es sich um einen Verkaufsvorgang handelt
|- style="vertical-align:top"
| <code>function IstVG_EK(): boolean</code> || Gibt True zur&uuml;ck wenn es sich um einen Einkaufsvorgang handelt
|- style="vertical-align:top"
| <code>function NeuNumLock(): boolean</code> || Sperrt die Neunummerierung (verhindert parallele Vergabe)
|- style="vertical-align:top"
| <code>procedure NeuNumLockRelease</code> || Gibt die Neunummerierungssperre wieder frei
|- style="vertical-align:top"
| <code>function VorgNeuNum(cFilter: string = <nowiki>''</nowiki>; lAbweichend: boolean = false): string</code> || Ermittelt und setzt eine neue Vorgangsnummer; gibt die Nummer als String zur&uuml;ck
|- style="vertical-align:top"
| <code>function VorgNeuNumBool(cFilter: string = <nowiki>''</nowiki>; lAbweichend: boolean = false): boolean</code> || Wie VorgNeuNum, gibt True/False zur&uuml;ck (f&uuml;r Fehlerbehandlung)
|- style="vertical-align:top"
| <code>function IstVorgNrGueltig(cUID: string = <nowiki>''</nowiki>): boolean</code> || Pr&uuml;ft ob die aktuelle Vorgangsnummer g&uuml;ltig (eindeutig) ist
|- style="vertical-align:top"
| <code>function NeuePositionBase(const cUID: string): [[#TVorgangPos|TVorgangPos]]</code> || Legt eine neue Positionsinstanz an und f&uuml;gt sie dem Vorgang hinzu
|- style="vertical-align:top"
| <code>procedure NeuePositionBaseMS(const cUID: string; oOrgPos: [[#TVorgangPos|TVorgangPos]])</code> || Legt eine neue Position als Multi-Steuer-Folgeposition an
|- style="vertical-align:top"
| <code>function LoeschePositionBase(nDel: integer): Boolean</code> || L&ouml;scht die Position mit dem angegebenen Index
|- style="vertical-align:top"
| <code>procedure VerschiebePositionBase(nPos: integer; nZiel: integer)</code> || Verschiebt Position von Index nPos zu Index nZiel
|- style="vertical-align:top"
| <code>function CheckIfNotNull(): Boolean</code> || Pr&uuml;ft ob Pflichtfelder des Vorgangs bef&uuml;llt sind
|- style="vertical-align:top"
| <code>function CheckIfFirstPosOption(): Boolean</code> || Pr&uuml;ft ob die erste Position eine Optionsposition ist
|- style="vertical-align:top"
| <code>function IsPosBerechnung(cPosArt: string): boolean</code> || Pr&uuml;ft ob eine Positionsart als Berechnungsposition gilt
|- style="vertical-align:top"
| <code>procedure CopyFrom(oSrc: [[#TVorgang|TVorgang]])</code> || Kopiert alle Felder aus einem anderen Vorgang
|- style="vertical-align:top"
| <code>procedure KalkAll(lZusatz: boolean = true)</code> || Kalkuliert alle Positionen und Gesamtsummen neu
|- style="vertical-align:top"
| <code>procedure Check_Multisteuer(oOrgPos: [[#TVorgangPos|TVorgangPos]]; const cTable, cMUID, cRefNr: string)</code> || Pr&uuml;ft und setzt Multi-Steuer-Verkn&uuml;pfung f&uuml;r eine Position
|- style="vertical-align:top"
| <code>function CopyPosmenge(cFromUID: string): string</code> || Kopiert Positionsmengen aus einem anderen Vorgang (per UID)
|- style="vertical-align:top"
| <code>function CopyPosverp(cFromUID: string): string</code> || Kopiert Positionsverpackungen aus einem anderen Vorgang (per UID)
|- style="vertical-align:top"
| <code>procedure fillVersandkostenMBW(const cPsNr: string; const cPsVersand: string = <nowiki>''</nowiki>; const PsZusatz: string = <nowiki>''</nowiki>)</code> || Berechnet und setzt Versandkosten auf Basis Mindestbestellwert
|- style="vertical-align:top"
| <code>procedure FillPersonBase(qPers: TxFQuery)</code> || Bef&uuml;llt Adressfelder des Vorgangs aus einem Personen-Query
|- style="vertical-align:top"
| <code>function FillReEmpf(const AReEmpf: string; const AZahlBed: string = <nowiki>''</nowiki>): boolean</code> || Setzt Rechnungsempf&auml;nger und optionale Zahlungsbedingung
|- style="vertical-align:top"
| <code>function SaveRecord(cUID: string = <nowiki>''</nowiki>; lAlleSpeichern: boolean = false): Boolean</code> || Speichert den Vorgang (abstrakt &ndash; muss in abgeleiteter Klasse implementiert werden)
|- style="vertical-align:top"
| <code>function ReadVorgangTypBase(cDmsTyp: string; const cNr: string; lPos: boolean = false; lNeg: boolean = false): boolean</code> || Liest einen Vorgang anhand DMS-Typ und Nummer in das Objekt
|- style="vertical-align:top"
| <code>function JahrNr(): string</code> || Gibt das Jahr der Vorgangsnummer zur&uuml;ck
|- style="vertical-align:top"
| <code>procedure NeuNumPos(const lNurPos: boolean = True)</code> || Nummeriert alle Positionen neu
|- style="vertical-align:top"
| <code>function EigenschaftSetzen(const ANr: string; const AMode: boolean): boolean</code> || Setzt oder l&ouml;scht eine Vorgangseigenschaft (Merkmal) per Nummer
|- style="vertical-align:top"
| <code>procedure AdresseLeeren</code> || Leert alle Adressfelder des Vorgangs
|- style="vertical-align:top"
| <code>procedure VersandLeeren(lRef: boolean = True)</code> || Leert alle Versandadressfelder
|- style="vertical-align:top"
| <code>procedure ReEmpfLeeren(const lNurAdr: boolean = False)</code> || Leert Rechnungsempf&auml;nger-Felder (optional nur Adresse)
|- style="vertical-align:top"
| <code>procedure DoServiceTouch(cStatus: string = <nowiki>''</nowiki>)</code> || Aktualisiert Service-Zeitstempel und optionalen Status
|- style="vertical-align:top"
| <code>function AuswahlParameterPositionsdatenAktualisieren(const cXDataTable: string): boolean</code> || Zeigt Dialog zur Auswahl der Aktualisierungsparameter f&uuml;r Positionsdaten
|- style="vertical-align:top"
| <code>function ZusatzkostenAktiv(): boolean</code> || Gibt True zur&uuml;ck wenn Zusatzkostenmodul f&uuml;r diesen Vorgang aktiv ist
|- style="vertical-align:top"
| <span id="TVorgang_Meth_leseFehler"></span><code>function leseFehler(out rFehler: [[#TVorgangFehler|TVorgangFehler]]; var nIdx: integer; const eLoeschenNachLesen: [[#TVorgangFehlerLoeschenLesen|TVorgangFehlerLoeschenLesen]] = vfllSkipCritical): boolean</code> || Liest den n&auml;chsten Fehler aus der internen Fehlerliste
|}
 
 
== TVorgangPos ==
 
=== Variablen ===
{| class="wikitable sortable"
! Name !! Typ !! Zugriff !! Beschreibung
|- style="vertical-align:top"
| <code>nPosIndex</code> || Integer || Lesen/Schreiben || Laufender Index der Position im Positions-Array
|- style="vertical-align:top"
| <code>cNr</code> || String || Lesen/Schreiben || Interne Positionsnummer (Datenbankfeld)
|- style="vertical-align:top"
| <code>cKundNr</code> || String || Lesen/Schreiben || Kundennummer an der Position
|- style="vertical-align:top"
| <code>cAuftragsNr</code> || String || Lesen/Schreiben || Referenz-Auftragsnummer
|- style="vertical-align:top"
| <code>cBestellNr</code> || String || Lesen/Schreiben || Referenz-Bestellnummer
|- style="vertical-align:top"
| <code>cPosText</code> || String || Lesen/Schreiben || Positionstext (Langtextfeld)
|- style="vertical-align:top"
| <code>cLProjNr</code> || String || Lesen/Schreiben || Leistungsprojektnummer
|- style="vertical-align:top"
| <code>cLS_azUid</code> || String || Lesen/Schreiben || Lieferschein-Abrechnungszeilen-UID
|- style="vertical-align:top"
| <code>cVersandNr</code> || String || Lesen/Schreiben || Versandnummer
|- style="vertical-align:top"
| <code>cPosNr</code> || String || Lesen/Schreiben || Positionsnummer (formatiert)
|- style="vertical-align:top"
| <code>cPosNr2</code> || String || Lesen/Schreiben || Zweite Positionsnummer (alternativ)
|- style="vertical-align:top"
| <code>cPosKas</code> || String || Lesen/Schreiben || Kassier-Positionsnummer
|- style="vertical-align:top"
| <code>cLeistungsNr</code> || String || Lesen/Schreiben || Leistungsnummer
|- style="vertical-align:top"
| <code>cBezeichnung1</code> || String || Lesen/Schreiben || Bezeichnung Zeile 1
|- style="vertical-align:top"
| <code>cBezeichnung2</code> || String || Lesen/Schreiben || Bezeichnung Zeile 2
|- style="vertical-align:top"
| <code>nUrMenge</code> || Double || Lesen/Schreiben || Ursprungsmenge (vor &Auml;nderungen)
|- style="vertical-align:top"
| <code>nLeistFaktor</code> || Double || Lesen/Schreiben || Leistungsfaktor (Multiplikator f&uuml;r Mengenberechnung)
|- style="vertical-align:top"
| <code>cEinheit</code> || String || Lesen/Schreiben || Mengeneinheit
|- style="vertical-align:top"
| <code>nMengeG</code> || Integer || Lesen/Schreiben || Mengenganz (ganzzahliger Mengenanteil)
|- style="vertical-align:top"
| <code>nKolli</code> || Integer || Lesen/Schreiben || Kollianzahl
|- style="vertical-align:top"
| <code>cVerpackung</code> || String || Lesen/Schreiben || Verpackungsart/-k&uuml;rzel
|- style="vertical-align:top"
| <code>nInhalt</code> || Double || Lesen/Schreiben || Inhalt pro Verpackungseinheit
|- style="vertical-align:top"
| <code>nEPreis</code> || Double || Lesen/Schreiben || Einzelpreis (Netto)
|- style="vertical-align:top"
| <code>nBEPreis</code> || Double || Lesen/Schreiben || Brutto-Einzelpreis
|- style="vertical-align:top"
| <code>nOBPreis</code> || Double || Lesen/Schreiben || Original-Brutto-Einzelpreis (vor Rabatt)
|- style="vertical-align:top"
| <code>nUrPreis</code> || Double || Lesen/Schreiben || Ursprungspreis (Listenpreis VK)
|- style="vertical-align:top"
| <code>nUrPreisEK</code> || Double || Lesen/Schreiben || Ursprungspreis Einkauf
|- style="vertical-align:top"
| <code>nGPreis</code> || Double || Lesen/Schreiben || Gesamtpreis (Netto)
|- style="vertical-align:top"
| <code>nBGPreis</code> || Double || Lesen/Schreiben || Brutto-Gesamtpreis
|- style="vertical-align:top"
| <code>nEKPreis</code> || Double || Lesen/Schreiben || Einkaufspreis
|- style="vertical-align:top"
| <code>nEKSPreis</code> || Double || Lesen/Schreiben || Einkaufssonderpreis
|- style="vertical-align:top"
| <code>cManPreis</code> || String || Lesen/Schreiben || Manueller Preis J/N-Kennzeichen
|- style="vertical-align:top"
| <code>nRabatt</code> || Double || Lesen/Schreiben || Gesamtrabatt in Prozent
|- style="vertical-align:top"
| <code>nRabatt1</code> || Double || Lesen/Schreiben || Rabatt 1 in Prozent
|- style="vertical-align:top"
| <code>cRabArt1</code> || String || Lesen/Schreiben || Rabattart 1 (Herkunftskennzeichen)
|- style="vertical-align:top"
| <code>nRabatt2</code> || Double || Lesen/Schreiben || Rabatt 2 in Prozent
|- style="vertical-align:top"
| <code>cRabArt2</code> || String || Lesen/Schreiben || Rabattart 2
|- style="vertical-align:top"
| <code>nRabatt3</code> || Double || Lesen/Schreiben || Rabatt 3 in Prozent
|- style="vertical-align:top"
| <code>cRabArt3</code> || String || Lesen/Schreiben || Rabattart 3
|- style="vertical-align:top"
| <code>nRabatt4</code> || Double || Lesen/Schreiben || Rabatt 4 in Prozent
|- style="vertical-align:top"
| <code>cRabArt4</code> || String || Lesen/Schreiben || Rabattart 4
|- style="vertical-align:top"
| <code>nRabatt5</code> || Double || Lesen/Schreiben || Rabatt 5 in Prozent
|- style="vertical-align:top"
| <code>cRabArt5</code> || String || Lesen/Schreiben || Rabattart 5
|- style="vertical-align:top"
| <code>nAddSub</code> || Double || Lesen/Schreiben || Additions-/Subtraktionsbetrag (Zuschlag/Abzug absolut)
|- style="vertical-align:top"
| <code>cKonto</code> || String || Lesen/Schreiben || Buchungskonto
|- style="vertical-align:top"
| <code>cLagNr</code> || String || Lesen/Schreiben || Lagernummer der Position
|- style="vertical-align:top"
| <code>cLagONr</code> || String || Lesen/Schreiben || Lager-Ortsnummer
|- style="vertical-align:top"
| <code>cVerkaufer</code> || String || Lesen/Schreiben || Verk&auml;uferk&uuml;rzel
|- style="vertical-align:top"
| <code>cStatus</code> || String || Lesen/Schreiben || Positionsstatus
|- style="vertical-align:top"
| <code>cAngebotsNr</code> || String || Lesen/Schreiben || Referenz-Angebotsnummer
|- style="vertical-align:top"
| <code>cUID</code> || String || Lesen/Schreiben || Eindeutige ID der Position (GUID)
|- style="vertical-align:top"
| <code>cMUID</code> || String || Lesen/Schreiben || Multi-Steuer-UID (Verkn&uuml;pfung bei Multisteuer)
|- style="vertical-align:top"
| <code>cRTVon</code> || String || Lesen/Schreiben || R&uuml;cktragungs-Referenz (von welcher Position)
|- style="vertical-align:top"
| <code>cSpNr</code> || String || Lesen/Schreiben || Speditionsnummer
|- style="vertical-align:top"
| <code>cBestellUID</code> || String || Lesen/Schreiben || UID der verkn&uuml;pften Bestellposition
|- style="vertical-align:top"
| <code>cMaterialUID</code> || String || Lesen/Schreiben || UID des verkn&uuml;pften Materialeintrags
|- style="vertical-align:top"
| <code>cEiliUID</code> || String || Lesen/Schreiben || UID der Eillieferungsposition
|- style="vertical-align:top"
| <code>cXUID1</code> || String || Lesen/Schreiben || Erweiterungs-UID 1 (freie Verkn&uuml;pfung)
|- style="vertical-align:top"
| <code>cXUID2</code> || String || Lesen/Schreiben || Erweiterungs-UID 2
|- style="vertical-align:top"
| <code>cXUID3</code> || String || Lesen/Schreiben || Erweiterungs-UID 3
|- style="vertical-align:top"
| <code>cXUID4</code> || String || Lesen/Schreiben || Erweiterungs-UID 4
|- style="vertical-align:top"
| <code>cKommentar</code> || String || Lesen/Schreiben || Kommentarfeld der Position
|- style="vertical-align:top"
| <code>nProvision</code> || Double || Lesen/Schreiben || Provisionsanteil in Prozent
|- style="vertical-align:top"
| <code>cLiefKz</code> || String || Lesen/Schreiben || Lieferkennzeichen
|- style="vertical-align:top"
| <code>cProdGr</code> || String || Lesen/Schreiben || Produktgruppe
|- style="vertical-align:top"
| <code>nFrachtV</code> || Double || Lesen/Schreiben || Frachtvolumen der Position
|- style="vertical-align:top"
| <code>cLSNr</code> || String || Lesen/Schreiben || Lieferscheinnummer der Position
|- style="vertical-align:top"
| <code>dLSDatum</code> || TDateTime || Lesen/Schreiben || Lieferscheindatum der Position
|- style="vertical-align:top"
| <code>cPosArt</code> || String || Lesen/Schreiben || Positionsart (z.&nbsp;B. N=Normal, O=Optional)
|- style="vertical-align:top"
| <code>cSKFJN</code> || String || Lesen/Schreiben || Skontof&auml;hig J/N
|- style="vertical-align:top"
| <code>cEKHerkunft</code> || String || Lesen/Schreiben || EK-Preisherkunft-K&uuml;rzel
|- style="vertical-align:top"
| <code>cLiefNr</code> || String || Lesen/Schreiben || Lieferantennummer
|- style="vertical-align:top"
| <code>cLagStreck</code> || String || Lesen/Schreiben || Lager-Streckenkennzeichen
|- style="vertical-align:top"
| <code>cAufschlag</code> || String || Lesen/Schreiben || Aufschlagsk&uuml;rzel
|- style="vertical-align:top"
| <code>nStaffelPreis</code> || Integer || Lesen/Schreiben || Staffelpreisstufe (Index)
|- style="vertical-align:top"
| <code>nStaffelmenge</code> || Double || Lesen/Schreiben || Staffelmenge f&uuml;r Preisfindung
|- style="vertical-align:top"
| <code>lAktionspreis</code> || Boolean || Lesen/Schreiben || Aktionspreis aktiv
|- style="vertical-align:top"
| <code>cAusdruckJN</code> || String || Lesen/Schreiben || Position drucken J/N
|- style="vertical-align:top"
| <code>cMemoDruck</code> || String || Lesen/Schreiben || Druckmemo der Position
|- style="vertical-align:top"
| <code>cBildUID</code> || String || Lesen/Schreiben || UID des verkn&uuml;pften Bildes
|- style="vertical-align:top"
| <code>cCMPUID</code> || String || Lesen/Schreiben || CMP-Objekt-UID
|- style="vertical-align:top"
| <code>cZeit_CMPUID</code> || String || Lesen/Schreiben || Zeiterfassungs-CMP-UID
|- style="vertical-align:top"
| <code>cZeit_Text</code> || String || Lesen/Schreiben || Zeiterfassungstext
|- style="vertical-align:top"
| <code>cZeit_Mitarb</code> || String || Lesen/Schreiben || Mitarbeiter der Zeiterfassung
|- style="vertical-align:top"
| <code>dZeit_Date</code> || TDateTime || Lesen/Schreiben || Datum der Zeiterfassung
|- style="vertical-align:top"
| <code>cZeit_NurLei</code> || String || Lesen/Schreiben || Zeiterfassung: nur Leistung J/N
|- style="vertical-align:top"
| <code>cKostst</code> || String || Lesen/Schreiben || Kostenstelle der Position
|- style="vertical-align:top"
| <code>dAbrechVon</code> || TDateTime || Lesen/Schreiben || Abrechnungszeitraum von
|- style="vertical-align:top"
| <code>dAbrechBis</code> || TDateTime || Lesen/Schreiben || Abrechnungszeitraum bis
|- style="vertical-align:top"
| <code>lNeuNum</code> || Boolean || Lesen/Schreiben || Neunummerierung f&uuml;r diese Position ausf&uuml;hren
|- style="vertical-align:top"
| <code>cSysUID</code> || String || Lesen/Schreiben || System-UID der Position
|- style="vertical-align:top"
| <code>cGeraetNr</code> || String || Lesen/Schreiben || Ger&auml;tenummer (f&uuml;r Servicepositionen)
|}
 
=== Properties ===
{| class="wikitable sortable"
! Name !! Typ !! Zugriff !! Beschreibung
|- style="vertical-align:top"
| <code>oMyDB</code> || TxDB || Nur Lesen || Datenbankverbindung (vom Vorgang geerbt)
|- style="vertical-align:top"
| <code>ShopNr</code> || String || Nur Lesen || Shop-Nummer (f&uuml;r Mehrshop-Preisfindung)
|- style="vertical-align:top"
| <code>cArtikelNr</code> || String || Lesen/Schreiben || Artikelnummer (Zugriff &uuml;ber Property wegen Seiteneffekten)
|- style="vertical-align:top"
| <code>PcMWSTSch</code> || String || Lesen/Schreiben || MwSt-Schl&uuml;ssel (Parameter-Feld)
|- style="vertical-align:top"
| <code>PcMengeIn</code> || String || Lesen/Schreiben || Mengeneingabe als String (Parameter)
|- style="vertical-align:top"
| <code>PnMengeIn</code> || Double || Lesen/Schreiben || Mengeneingabe als Zahl (Parameter)
|- style="vertical-align:top"
| <code>PnMengeInFak</code> || Double || Lesen/Schreiben || Mengeneingabe-Faktor (Parameter)
|- style="vertical-align:top"
| <code>PcMemofeld</code> || String || Lesen/Schreiben || Memofeld der Position (Parameter-Feld, Unicode)
|- style="vertical-align:top"
| <code>PcMemofeldAnsi</code> || String || Lesen/Schreiben || Memofeld ANSI-Version (Parameter-Feld)
|- style="vertical-align:top"
| <code>cPosLaufend</code> || String || Lesen/Schreiben || Laufende Positionsnummer als String
|- style="vertical-align:top"
| <code>lVerbrauchsMater</code> || Boolean || Lesen/Schreiben || Verbrauchsmaterial-Kennzeichen
|- style="vertical-align:top"
| <code>nMenge</code> || Double || Lesen/Schreiben || Menge der Position (mit Seiteneffekten bei Schreiben)
|- style="vertical-align:top"
| <code>cTyp</code> || String || Lesen/Schreiben || Positionstyp als String &ndash; siehe [[#Konstanten|Konstanten]] (POSTYP_*)<br />Wandelt den übergebenen String in die passende Enummeration für Property (siehe Hinweise in [[#TVorgangPos_Prop_Typ|Typ]]). {{Achtung|Wird ein ungültiger Wert gesetzt, so wird der Typ automatisch auf Position ("0" bzw. ptPosition) gesetzt.}}
|- style="vertical-align:top"
| <span id="TVorgangPos_Prop_Typ"></span><code>Typ</code> || [[#TVB_PosType|TVB_PosType]] || Lesen/Schreiben || Positionstyp als Enum (ptPosition, ptText, ptLeerzeile&nbsp;&hellip;){{Hinweis|Wird der Typ geändert, so werden die Daten des Positionsobjekts auf die Vorbelegung zurückgesetzt. Zuvor gesetzte Daten werden dabei überschrieben. Nach der Verwendung von <code>NeuePosition</code> sollte der Typ daher als erstes geändert werden, bevor Sie weitere Daten in das Objekt schreiben. Alternativ kann der Positionstyp mit einer Klassenmethode angepasst werden. Diese verfügen über entsprechende Parameter, um relevante Felder für die Position direkt zu setzen. Siehe dazu:<br />[[#TVorgangPos_Meth_Typ_Pos|Typ_Pos]]<br />[[#TVorgangPos_Meth_Typ_Text|Typ_Text]]<br />[[#TVorgangPos_Meth_Typ_Leerzeile|Typ_Leerzeile]]<br />[[#TVorgangPos_Meth_Typ_Zwischensumme|Typ_Zwischensumme]]<br />[[#TVorgangPos_Meth_Typ_ZwischensummeEbene|Typ_ZwischensummeEbene]]<br />[[#TVorgangPos_Meth_Typ_Titelsumme|Typ_Titelsumme]]<br />[[#TVorgangPos_Meth_Typ_TitelsummeEbene|Typ_TitelsummeEbene]]<br />[[#TVorgangPos_Meth_Typ_Titel|Typ_Titel]]<br />[[#TVorgangPos_Meth_Typ_Gewerk|Typ_Gewerk]]<br />[[#TVorgangPos_Meth_Typ_NeueSeite|Typ_NeueSeite]]<br />[[#TVorgangPos_Meth_Typ_Bild|Typ_Bild]]}}
|- style="vertical-align:top"
| <span id="TVorgangPos_Prop_OriginalPos"></span><code>OriginalPos</code> || [[#TVorgangPosOriginal|TVorgangPosOriginal]] || Nur Lesen || Ursprungspositionsdaten (DMS-Referenz, Nr, UID, SysUID)
|}
 
=== Methoden ===
{| class="wikitable"
! Signatur !! Beschreibung
|- style="vertical-align:top"
| <code>constructor Create(oxVorgang: [[#TVorgang|TVorgang]]; cPosTbl: string)</code> || Erstellt eine neue Position f&uuml;r den angegebenen Vorgang (veraltet, UID-Variante bevorzugen)
|- style="vertical-align:top"
| <code>constructor Create(cUid: string; oxVorgang: [[#TVorgang|TVorgang]]; cPosTbl: string)</code> || Erstellt eine neue Position mit vorgegebener UID
|- style="vertical-align:top"
| <code>destructor Destroy</code> || Gibt die Position frei
|- style="vertical-align:top"
| <code>procedure PositionsVorbelegung</code> || Bef&uuml;llt die Position mit Standardwerten aus den Vorgangsdaten
|- style="vertical-align:top"
| <code>procedure GenNewUid</code> || Generiert eine neue UID f&uuml;r diese Position
|- style="vertical-align:top"
| <code>function CopyPosmenge(cFromUID: string): string</code> || Kopiert Mengen aus einer anderen Position (per UID)
|- style="vertical-align:top"
| <code>function CopyPosverp(cFromUID: string): string</code> || Kopiert Verpackungsdaten aus einer anderen Position (per UID)
|- style="vertical-align:top"
| <code>procedure CopyFrom(oSrc: [[#TVorgangPos|TVorgangPos]]; lFull: boolean = False)</code> || Kopiert alle Felder aus einer anderen Position; lFull=True kopiert auch interne Felder
|- style="vertical-align:top"
| <code>procedure QueryToPos(qTmp: TxFQuery; lReadAsNew: boolean = false)</code> || Bef&uuml;llt die Position aus einem Datenbankquery (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>procedure QueryToPos(qTmp: TxFQuery; const cFromTable: string; lVerpack: Boolean = False; lUmkehr: boolean = False)</code> || Bef&uuml;llt die Position aus einem Query mit expliziter Quelltabelle (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>procedure DBPosToPos(const cFromTable: string; const cSysUid: string; lVerpack: Boolean = False; lUmkehr: boolean = False)</code> || Liest eine Position direkt aus der Datenbank per SysUID
|- style="vertical-align:top"
| <code>function FillArtikel(cArtNr: string): boolean</code> || Bef&uuml;llt die Position mit Artikelstammdaten; gibt True bei Erfolg zur&uuml;ck
|- style="vertical-align:top"
| <code>function SetzeLieferant(const cLiefNr: string; lEKNeu: boolean = True; lDefaultEK1: boolean = False): boolean</code> || Setzt den Lieferanten und aktualisiert EK-Preise
|- style="vertical-align:top"
| <code>procedure FillLeistung(cLeistNr: string)</code> || Bef&uuml;llt die Position mit Leistungsstammdaten
|- style="vertical-align:top"
| <code>function SumPosBez(const eZielTyp: [[#TVB_PosType|TVB_PosType]]; const cBezVorb: string): string</code> || Gibt die Bezeichnung f&uuml;r eine Summenposition zur&uuml;ck
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Pos"></span><code>procedure Typ_Pos</code> || Setzt den Positionstyp auf &bdquo;normale Position&ldquo;
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Text"></span><code>procedure Typ_Text(const cText: string)</code> || Setzt den Positionstyp auf &bdquo;Textzeile&ldquo; mit dem angegebenen Text
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Leerzeile"></span><code>procedure Typ_Leerzeile</code> || Setzt den Positionstyp auf &bdquo;Leerzeile&ldquo;
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Zwischensumme"></span><code>procedure Typ_Zwischensumme(const cBez: string = <nowiki>''</nowiki>)</code> || Setzt den Positionstyp auf &bdquo;Zwischensumme&ldquo; (Ebene&nbsp;1)
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_ZwischensummeEbene"></span><code>procedure Typ_ZwischensummeEbene(const nEbene: integer; const cBez: string = <nowiki>''</nowiki>)</code> || Setzt den Positionstyp auf &bdquo;Zwischensumme&ldquo; der angegebenen Ebene
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Titelsumme"></span><code>procedure Typ_Titelsumme(const cBez: string = <nowiki>''</nowiki>)</code> || Setzt den Positionstyp auf &bdquo;Titelsumme&ldquo; (Ebene&nbsp;1)
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_TitelsummeEbene"></span><code>procedure Typ_TitelsummeEbene(const nEbene: integer; const cBez: string = <nowiki>''</nowiki>)</code> || Setzt den Positionstyp auf &bdquo;Titelsumme&ldquo; der angegebenen Ebene
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Titel"></span><code>procedure Typ_Titel(const cBez: string)</code> || Setzt den Positionstyp auf &bdquo;Titel&ldquo;
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Gewerk"></span><code>procedure Typ_Gewerk(const cBez: string)</code> || Setzt den Positionstyp auf &bdquo;Gewerk&ldquo;
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_NeueSeite"></span><code>procedure Typ_NeueSeite</code> || Setzt den Positionstyp auf &bdquo;Seitenumbruch&ldquo;
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_Typ_Bild"></span><code>procedure Typ_Bild(const cBild: string)</code> || Setzt den Positionstyp auf &bdquo;Bild&ldquo; mit dem angegebenen Bildpfad/-UID
|- style="vertical-align:top"
| <code>procedure UStKorrektur(const dCheckDate: TDateTime)</code> || Korrigiert den Umsatzsteuerschl&uuml;ssel gem&auml;&szlig; Datum (Steuersatz&auml;nderungen)
|- style="vertical-align:top"
| <code>procedure KalkPos</code> || Kalkuliert Gesamtpreis und abgeleitete Felder dieser Position neu
|- style="vertical-align:top"
| <code>function PosNrAllowed(): boolean</code> || Gibt True zur&uuml;ck wenn dieser Positionstyp eine Positionsnummer erh&auml;lt
|- style="vertical-align:top"
| <code>procedure SetPosNr(cP: string; cT: string = <nowiki>''</nowiki>; cG: string = <nowiki>''</nowiki>; cFormat: string = <nowiki>''</nowiki>)</code> || Setzt die Positionsnummer aus String-Komponenten (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>procedure SetPosNr(nP: integer; nT: integer = -1; nG: integer = -1; cFormat: string = <nowiki>''</nowiki>)</code> || Setzt die Positionsnummer aus numerischen Komponenten (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function PosLaufend(iPos: integer = 0): string</code> || Gibt die laufende Positionsnummer als formatierten String zur&uuml;ck
|- style="vertical-align:top"
| <code>procedure Preisfindung(cShopNr: string = CONST_NO_SHOP)</code> || F&uuml;hrt die Preisfindung f&uuml;r diese Position aus
|- style="vertical-align:top"
| <code>function SetOpenBookLieferant(): boolean</code> || Setzt den Open-Book-Lieferanten f&uuml;r diese Position
|- style="vertical-align:top"
| <code>procedure AddToMemo(const cText: string; const lNewLine: boolean = False)</code> || F&uuml;gt Text zum Memofeld hinzu
|- style="vertical-align:top"
| <span id="TVorgangPos_Meth_AktualisiereDaten"></span><code>procedure AktualisiereDaten</code> || Aktualisiert Texte, EK- und VK-Preise gem&auml;&szlig; [[#TVorgang_Prop_ParameterPositionsdatenAktualisieren|ParameterPositionsdatenAktualisieren]]
|- style="vertical-align:top"
| <code>procedure EKCalcMengeIn(var nEkFak: double)</code> || Berechnet den EK-Mengeneingabe-Faktor (R&uuml;ckgabe per var-Parameter)
|- style="vertical-align:top"
| <code>function CanSave(): boolean</code> || Pr&uuml;ft ob diese Position gespeichert werden kann/darf
|- style="vertical-align:top"
| <code>procedure qSqlSet(AqSql: TqSql)</code> || Setzt das SQL-Objekt f&uuml;r erweiterte DB-Operationen dieser Position
|}
 
= Globale Methoden =
 
{| class="wikitable sortable"
! Signatur !! Beschreibung
|- style="vertical-align:top"
| <code>function IstVKVorgang(cMainTable: string): boolean</code> || Gibt True zur&uuml;ck, wenn die Haupttabelle ein VK-Vorgang ist
|- style="vertical-align:top"
| <code>function IstVKVorgangPos(cPosTable: string): boolean</code> || Gibt True zur&uuml;ck, wenn die Positionstabelle zu einem VK-Vorgang geh&ouml;rt
|- style="vertical-align:top"
| <code>function CopyPosmengeDB(oMyDB: TxDB; cFromUID: string): string</code> || Kopiert Positionsmengen aus einem anderen Vorgang (direkt per Datenbankzugriff)
|- style="vertical-align:top"
| <code>function CopyPosverpDB(oMyDB: TxDB; cFromUID: string): string</code> || Kopiert Positionsverpackungen aus einem anderen Vorgang (direkt per Datenbankzugriff)
|- style="vertical-align:top"
| <code>function CopyRTFLan(oMyDB: TxDB; cVonTable, cVonRef, cNachTable, cNachRef: String): String</code> || Kopiert RTF-Langtexte zwischen Vorgangs-Positionen
|- style="vertical-align:top"
| <code>procedure CopyKalkulationAN2AU(oMyDB: TxDB; cANRef1, cANRef2, cAURef1, cAURef2: String; fPosmenge: Double)</code> || Kopiert Kalkulation von Angebot nach Auftrag (mit Mengenfaktor)
|- style="vertical-align:top"
| <code>procedure CopyKalkulationAU(oMyDB: TxDB; cANRef1, cANRef2, cAURef1, cAURef2: String)</code> || Kopiert Auftragskalkulation zwischen zwei Positionen
|- style="vertical-align:top"
| <code>procedure CopyKalkulationAN(oMyDB: TxDB; cANRef1, cANRef2, cAURef1, cAURef2: String)</code> || Kopiert Angebotskalkulation zwischen zwei Positionen
|- style="vertical-align:top"
| <code>function PosNrFormatCheck(const cFormat: string): boolean</code> || Pr&uuml;ft, ob ein Positionsnummern-Format g&uuml;ltig ist (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function PosNrFormatCheck(oMyDB: TxDB; const cFormat: string): boolean</code> || Pr&uuml;ft Format gegen Datenbankeinstellungen (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function PosNrFormatCounts(const cFormat: string; out nG, nT, nP: integer): boolean</code> || Liefert die Stellenzahlen f&uuml;r Gewerk, Titel und Position aus dem Format (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function PosNrFormatCounts(oMyDB: TxDB; const cFormat: string; out nG, nT, nP: integer): boolean</code> || Wie oben, mit Datenbankzugriff (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function PosNrSplit(oMyDB: TxDB; const cFormat, cPosTyp: string; cPosNr: string; out nG, nT, nP: integer): boolean</code> || Zerlegt eine formatierte Positionsnummer in ihre Bestandteile
|- style="vertical-align:top"
| <code>function GetVorgangMandant(oMyDB: TxDB; const cTable, cNr: string): string</code> || Gibt den Mandanten-Schl&uuml;ssel f&uuml;r einen Vorgang zur&uuml;ck
|- style="vertical-align:top"
| <code>function GetVorgangTextTB(const nPMode: integer; out cTB_Nr: string; cFiliale: string = <nowiki>''</nowiki>): boolean</code> || Ermittelt die Textbaustein-Nummer f&uuml;r den angegebenen Positionsmodus
|- style="vertical-align:top"
| <code>function GetVorgangTextTBPers(oMyDB: TxDB; const cPsNr: string; const nPMode: integer; out cTB_Nr: string; cFiliale: string = <nowiki>''</nowiki>): boolean</code> || Wie GetVorgangTextTB, zus&auml;tzlich personenbezogen
|- style="vertical-align:top"
| <code>function KopfTextPlatzhalter(var cKopfText: string; const cBrief1, cBrief2: string): boolean</code> || Ersetzt Platzhalter im Kopftext durch Briefanredefelder
|- style="vertical-align:top"
| <code>function VorgangArt(oMyDB: TxDB; const cDMS, cNr: string): integer</code> || Gibt die Vorgangsart als Integer-Kennziffer zur&uuml;ck
|- style="vertical-align:top"
| <code>function VorgangStatus(oMyDB: TxDB; const cDMS, cNr: string): string</code> || Gibt den aktuellen Status eines Vorgangs aus der Datenbank zur&uuml;ck
|- style="vertical-align:top"
| <code>function VorgangVerbucht(oMyDB: TxDB; const cDMS, cNr: string): boolean</code> || Gibt True zur&uuml;ck, wenn der Vorgang verbucht ist
|- style="vertical-align:top"
| <code>function VorgangUstEnthalten(oMyDB: TxDB; const cDMS, cNr, cUstSchl: string; cFeld: string = <nowiki>''</nowiki>): boolean</code> || Pr&uuml;ft, ob ein bestimmter USt-Schl&uuml;ssel im Vorgang verwendet wird
|- style="vertical-align:top"
| <code>function PortoVerpackKannSkonto(): boolean</code> || Gibt True zur&uuml;ck, wenn Porto/Verpackung skontof&auml;hig ist (laut Systemeinstellung)
|- style="vertical-align:top"
| <code>function GetPosBild(oMyDB: TxDB; cArtNr: string; var cBildUID: string): boolean</code> || Ermittelt die Bild-UID eines Artikels f&uuml;r eine Positions-Bildposition
|- style="vertical-align:top"
| <code>function VorgangVertreterVorb(oMyDB: TxDB; const cVertreter: string): string</code> || Gibt den vorgebelegten Vertreter-Schl&uuml;ssel zur&uuml;ck
|- style="vertical-align:top"
| <code>function VorgangVertreterPrio(oMyDB: TxDB; const cAktVertreter: string): string</code> || Gibt den Vertreter mit h&ouml;chster Priorit&auml;t zur&uuml;ck
|- style="vertical-align:top"
| <code>function GenerierePositionskommentar(cUrsprung, cKommentar: String): String</code> || Kombiniert Ursprungs- und Kommentartext zu einem Positions-Kommentar
|- style="vertical-align:top"
| <code>function ReplacePlatzhalterReparaturAuftrag(cRAufNr: String; cText: String = <nowiki>''</nowiki>): String</code> || Ersetzt Platzhalter im Text durch Reparaturauftragsdaten
|- style="vertical-align:top"
| <code>function ReplacePlatzhalterPosErfassung(oMyDB: TxDB; const cBuffer, cTable, cNr: string; const lDef: Boolean = False; const lRepa: Boolean = False): String</code> || Ersetzt Platzhalter im Text bei der Positionserfassung
|- style="vertical-align:top"
| <code>function LoadPlatzhalterVorgang(oMyDB: TxDB; const cTable, cNr: string; var oPlatzhalter: TPlatzhalterVorgang): Boolean</code> || L&auml;dt Platzhalter-Daten eines Vorgangs aus der Datenbank
|- style="vertical-align:top"
| <code>function PlatzhalterVorgang(const cText, cNr: string; const oPlatzhalter: TPlatzhalterVorgang; const lDef: Boolean = false; const lRepa: Boolean = false): string</code> || Ersetzt Platzhalter im Text mit den geladenen Vorgang-Platzhaltern
|- style="vertical-align:top"
| <code>function GetPosVorb_ErlKto(oMyDB: TxDB; const cErlJahr, cManNr, cFiliale: string): string</code> || Gibt das Erl&ouml;skonto f&uuml;r eine Positionsvorbelegung zur&uuml;ck
|- style="vertical-align:top"
| <code>procedure ChangePosPreisFromLeistPreis2(oVorgang: TVorgang)</code> || Wechselt f&uuml;r alle Positionen auf den alternativen Leistungspreis 2
|- style="vertical-align:top"
| <code>function Vorgang_ToXMLStr(oMyDB: TxDB; const cTable, cPosTable, cVorgNr: String): string</code> || Exportiert einen Vorgang als XML-String
|- style="vertical-align:top"
| <code>function Vorgang_ToDelArchiv(oMyDB: TxDB; const cTable, cPosTable, cVorgNr: String): Boolean</code> || Verschiebt einen Vorgang ins L&ouml;scharchiv
|- style="vertical-align:top"
| <code>function Vorgang_ToXMLFile(oMyDB: TxDB; const cFile, cTable, cPosTable, cVorgNr: String): Boolean</code> || Exportiert einen Vorgang in eine XML-Datei
|- style="vertical-align:top"
| <code>function XMLFile_ToVorgang(oMyDB: TxDB; const cData: String; var cNewNr, cOldNr: String): Boolean</code> || Importiert einen Vorgang aus einem XML-String/-Datei
|- style="vertical-align:top"
| <code>function DelArchivTo_Vorgang(oMyDB: TxDB; const cTabelle, cVorgang: String): String</code> || Stellt einen archivierten Vorgang wieder her
|- style="vertical-align:top"
| <code>function Vorgang_Runden_MengeInFak(oMyDB: TxDB; const cTabMain, cTabPos: string; nValue: double): double</code> || Rundet den Mengeneingabe-Faktor gem&auml;&szlig; Tabelleneinstellung
|- style="vertical-align:top"
| <code>function Vorgang_Rohertrag(oMyDB: TxDB; const cDMSTyp, cVorgNr: String; nNettoBetrag: Double): String</code> || Berechnet den Rohertrag eines Vorgangs
|- style="vertical-align:top"
| <code>function Vorgang_Rohertrag_Ext(oMyDB: TxDB; const cDMSTyp, cVorgNr: String; nNettoBetrag: Double; lSollStunden: Boolean): string</code> || Berechnet den Rohertrag erweitert (mit Sollstunden)
|- style="vertical-align:top"
| <code>function VorgangFelder(cTyp: String; lPosition, lArtikel, lMaterial, lAuswertung, lMessen: Boolean; lSchiff: Boolean = False): String</code> || Gibt die aktiven Feldgruppen eines Vorgangstyps als String zur&uuml;ck (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function VorgangFelder(oMyDB: TxDB; cTyp: String; lPosition, lArtikel, lMaterial, lAuswertung, lMessen: Boolean; lSchiff: Boolean = False): String</code> || Wie oben, mit Datenbankzugriff (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function Vorgang_IstGesperrt(oMyDB: TxDB; const cTyp, cRef: string; const cFeld: string = 'a_nr'): boolean</code> || Pr&uuml;ft, ob ein Vorgang gesperrt ist (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function Vorgang_IstGesperrt(oMyDB: TxDB; const rDMS: TDMSType; const cRef: string; const cFeld: string = 'a_nr'): boolean</code> || Pr&uuml;ft Sperrung per DMS-Typ (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function Vorgang_FilterSperrung(oMyDB: TxDB; const cTyp, cRef: string; out cOffen, cGesperrt: string; const cFeld: string = 'a_nr'): boolean</code> || Gibt SQL-Filter-Strings f&uuml;r offene/gesperrte Vorg&auml;nge zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_FilterSperrung_Offen(oMyDB: TxDB; const cTyp, cRef: string; out cOffen: string; const cFeld: string = 'a_nr'): boolean</code> || Gibt nur den Filter f&uuml;r offene (nicht gesperrte) Vorg&auml;nge zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_UbernahmeMassen(oMyDB: TxDB; const cVonUid, cNachDmsTyp, cNachVorgNr, cNachUid: string): boolean</code> || Massenweise Positions&uuml;bernahme zwischen Vorg&auml;ngen
|- style="vertical-align:top"
| <code>function Vorgang_GetMenge(oMyDB: TxDB; const cPosTable, cKeyField, cUID: String; out nUrmenge: Double; const cEigUID: String = <nowiki>''</nowiki>): Double</code> || Liest die aktuelle und Ursprungsmenge einer Position aus der Datenbank
|- style="vertical-align:top"
| <code>function Vorgang_CheckPosTyp(const cTyp: string): boolean</code> || Pr&uuml;ft, ob ein Positionstyp-Schl&uuml;ssel g&uuml;ltig ist
|- style="vertical-align:top"
| <code>function Vorgang_HatReEmpfAdr(qVorgangData: TxFQuery): boolean</code> || Gibt True zur&uuml;ck, wenn der Vorgang eine Rechnungsempf&auml;nger-Adresse hat (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function Vorgang_HatReEmpfAdr(qVorgangData: TxQuery): boolean</code> || Wie oben, f&uuml;r TxQuery (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function Vorgang_AnzeigeReEmpf(oMyDB: TxDB; qMain: TxFQuery; const cMainTable: string; cAdressBez: string = <nowiki>''</nowiki>; lUseReportLang: boolean = True): string</code> || Gibt die anzuzeigende Rechnungsempf&auml;nger-Adresse als formatierten Text zur&uuml;ck (&Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function Vorgang_AnzeigeReEmpf(oMyDB: TxDB; qMain: TxQuery; const cMainTable: string; cAdressBez: string = <nowiki>''</nowiki>; lUseReportLang: boolean = True): string</code> || Wie oben, f&uuml;r TxQuery (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function Vorgang_PortoVerpackBerechnet(oMyDB: TxDB; const cDmsVon, cDmsSetzen, cNrSetzen: string): boolean</code> || Pr&uuml;ft, ob Porto/Verpackung bereits berechnet wurde und setzt Kennzeichen
|- style="vertical-align:top"
| <code>function VorgangVorb_Waehrung(oMyDB: TxDB; const cValue: string = '01'): string</code> || Gibt den Standardw&auml;hrungsschl&uuml;ssel f&uuml;r Vorgangsvorbelegung zur&uuml;ck
|- style="vertical-align:top"
| <code>function VorgangVorb_RechKreis(oMyDB: TxDB; const cValue: string = '01'): string</code> || Gibt den Standardrechnungskreis-Schl&uuml;ssel zur&uuml;ck
|- style="vertical-align:top"
| <code>function VorgangVorbPos_VomLager(const nTokenPos: integer; const cLagStreck: string): string</code> || Gibt das Lager/die Strecke f&uuml;r eine Positionsvorbelegung zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_VersandkostenMBW(oMyDB: TxDB; const cDmsTyp: string; const lGen: boolean; const cPsNr: string; const cPsVersand: string = <nowiki>''</nowiki>; const cPsZusatz: string = <nowiki>''</nowiki>): string</code> || Berechnet Versandkosten auf Basis des Mindestbestellwerts
|- style="vertical-align:top"
| <code>function Vorgang_PdfFile(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; out cPdfFile: string): boolean</code> || Ermittelt den Pfad zur archivierten PDF-Datei eines Vorgangs
|- style="vertical-align:top"
| <code>function Vorgang_PdfAsBase64File(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; out cBase64File: string): boolean</code> || Liefert die PDF-Datei als Base64-kodierten Pfad
|- style="vertical-align:top"
| <code>function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; const nPart: integer; out cBase64: string; out nParts: integer; nPartSize: integer = 0): boolean</code> || Liefert die PDF in Teilen als Base64 (mit KdNr, &Uuml;berladung 1)
|- style="vertical-align:top"
| <code>function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; const nPart: integer; out cBase64: string; out nParts: integer; cPartSize: string): boolean</code> || Wie oben, Teilgr&ouml;&szlig;e als String (&Uuml;berladung 2)
|- style="vertical-align:top"
| <code>function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr: string; const nPart: integer; out cBase64: string; out nParts: integer; nPartSize: integer = 0): boolean</code> || Wie oben, ohne KdNr (&Uuml;berladung 3)
|- style="vertical-align:top"
| <code>function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr: string; const nPart: integer; out cBase64: string; out nParts: integer; cPartSize: string): boolean</code> || Wie oben, Teilgr&ouml;&szlig;e als String (&Uuml;berladung 4)
|- style="vertical-align:top"
| <code>function Vorgang_PdfAsBase64(oMyDB: TxDB; const cDmsTyp, cNr: string; out cBase64: string): boolean</code> || Liefert die gesamte PDF als Base64-String
|- style="vertical-align:top"
| <code>function Vorgang_PosUebernommen(oMyDB: TxDB; const cVonDmsTyp, cVonNr, cPosUid: string): TVorgangPosOriginalListe</code> || Gibt eine Liste aller Vorg&auml;nge zur&uuml;ck, in die diese Position &uuml;bernommen wurde
|- style="vertical-align:top"
| <code>function Vorgang_GetPosRef(oMyDB: TxDB; const cVonDmsTyp, cVonNr, cPosUid, cRefDmsTypen: string): TVorgangPosOriginalListe</code> || Gibt Referenzen einer Position auf andere DMS-Typen zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_ArtBox(const cDMSTyp: string): string</code> || Gibt die Vorgangsart-Box (Auswahlstring) f&uuml;r einen DMS-Typ zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_SummenEbene(const nEbene: integer): integer</code> || Validiert und normiert eine Summen-Ebene (1..VB_MAX_SummenEbenen)
|- style="vertical-align:top"
| <code>function Vorgang_SummenEbeneAusMenge(const nMenge: double): integer</code> || Berechnet die Summenebene aus einem Mengenwert
|- style="vertical-align:top"
| <code>function Vorgang_KalkAufschlagPos(const nSatz, nZwSumme, nMengeIn, nMengeInFak, nRabatt: double): double</code> || Berechnet den Aufschlagsbetrag f&uuml;r eine Position
|- style="vertical-align:top"
| <code>function Vorgang_SumPosText(const eTyp: [[#TVB_PosType|TVB_PosType]]; const cLanguage: string): string</code> || Gibt den lokalisierten Standardtext f&uuml;r eine Summenposition zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_SumPosTextZw(cLang: string = <nowiki>''</nowiki>): string</code> || Gibt den lokalisierten Text f&uuml;r Zwischensummen-Positionen zur&uuml;ck
|- style="vertical-align:top"
| <code>function Vorgang_SumPosTextTit(cLang: string = <nowiki>''</nowiki>): string</code> || Gibt den lokalisierten Text f&uuml;r Titelsummen-Positionen zur&uuml;ck
|}

Aktuelle Version vom 12. Juni 2026, 14:16 Uhr


Es gibt für die Generierung von Vorgängen eigene Klassen. Da es zwischen den Vorgängen immer irgendwelche Unterschiede gibt, existiert auch für jeden Vorgangs-Typ eine eigene Klasse.

Übersicht Klassen:

Datentypen

Enumerationen

TVB_PosType

Positionstyp einer TVorgangPos. Wird über die Property Typ gelesen/gesetzt. Die zugehörigen String-Konstanten sind unter Konstanten beschrieben.

Wert Bezeichner Beschreibung
0 ptPosition Normale Artikelposition
1 ptText Textzeile / Memorundzeile
2 ptLeerzeile Leere Trennzeile
3 ptZwischensumme Zwischensummen-Position
4 ptTitelsumme Titelsummen-Position
5 ptTitel Titelzeile
6 ptGewerk Gewerk-Kopfzeile
7 ptSeitenumbruch Manueller Seitenumbruch
8 ptBild Bildposition

TVB_MaterMode

Steuert den Materialmodus beim Lesen von Positionsdaten.

Wert Bezeichner Beschreibung
0 mmNone Kein spezieller Materialmodus
1 mmMD5 Materialprüfung per MD5-Hash
2 mmReadUID Material-UID direkt lesen

TVorgangFehlerTyp

Klassifiziert einen Eintrag in der internen Fehlerliste eines TVorgang. Wird im Record TVorgangFehler verwendet.

Wert Bezeichner Beschreibung
0 vftOther Sonstiger Hinweis
1 vftCritical Kritischer Fehler (blockiert Speichern)
2 vftSaveCheck Prüfung beim Speichern
3 vftPosInfo Positionsbezogene Information

TVorgangFehlerLoeschenLesen

Steuert, welche Fehler nach dem Lesen via leseFehler aus der Liste gelöscht werden.

Wert Bezeichner Beschreibung
0 vfllNone Kein Fehler nach dem Lesen löschen
1 vfllAll Alle Fehler nach dem Lesen löschen
2 vfllSkipCritical Nur nicht-kritische Fehler löschen (Standard)

Records

TVorgangPosOriginal

Enthält Referenzinformationen der Ursprungsposition (z. B. bei der Vorgangsübernahme). Wird über die Property OriginalPos einer TVorgangPos geliefert.

Feld Typ Beschreibung
rDMS TDMSType DMS-Typ des Ursprungsvorgangs
cNr String Vorgangsnummer des Ursprungs
cUid String UID der Ursprungsposition
cSysUid String System-UID der Ursprungsposition

Methoden:

ACHTUNG: Funktioniert nur im Scriptrunner "Pax"! Aktiver Scriptrunner ist definiert in Programmparameter 444.
Signatur Beschreibung
procedure Clear Leert alle Felder des Records
procedure SetData(const ADMS: TDMSType; qPos: TxFQuery) Befüllt den Record aus einem Positions-Query

TVorgangPosParams_AktualisiereDaten

Steuert, welche Datenbereiche bei AktualisiereDaten aktualisiert werden sollen. Wird über die Property ParameterPositionsdatenAktualisieren von TVorgang gesetzt.

Feld Typ Beschreibung
lTexte Boolean Bezeichnungen/Texte aktualisieren
lEK Boolean Einkaufspreise aktualisieren
lVK Boolean Verkaufspreise aktualisieren

Methoden:

ACHTUNG: Funktioniert nur im Scriptrunner "Pax"! Aktiver Scriptrunner ist definiert in Programmparameter 444.
Signatur Beschreibung
procedure Init(const cVorb: string = '') Initialisiert die Parameter mit Standardwerten; optionaler Vorbelegungsschlüssel
function Aktualisieren(): boolean Gibt True zurück, wenn mindestens ein Aktualisierungsschalter gesetzt ist

TVorgangPosSummen

Speichert Zwischen- und Titelsummen-Beträge je Ebene (1 bis VB_MAX_SummenEbenen).

Feld Typ Beschreibung
aZw[1..9] Double Zwischensummen-Beträge je Ebene
aTit[1..9] Double Titelsummen-Beträge je Ebene

Methoden:

ACHTUNG: Funktioniert nur im Scriptrunner "Pax"! Aktiver Scriptrunner ist definiert in Programmparameter 444.
Signatur Beschreibung
procedure Clear Setzt alle Summen auf 0
procedure ClearZw(const nEbene: integer) Setzt Zwischensumme der Ebene nEbene auf 0
procedure ClearTit(const nEbene: integer) Setzt Titelsumme der Ebene nEbene auf 0
procedure AddZw(const nBetrag: double) Addiert Betrag zur aktiven Zwischensummen-Ebene
procedure AddTit(const nBetrag: double) Addiert Betrag zur aktiven Titelsummen-Ebene
function ReadZw(const nEbene: integer): double Liefert den Zwischensummen-Betrag der Ebene
function ReadTit(const nEbene: integer): double Liefert den Titelsummen-Betrag der Ebene

TVorgangEigenschaft

Repräsentiert ein Vorgangsmerkmal (Eigenschaft), das per EigenschaftSetzen gesetzt wird.

Feld Typ Beschreibung
cNr String Merkmalsnummer
lMode Boolean True = setzen, False = löschen

TVorgangFehler

Ein Eintrag in der internen Fehlerliste von TVorgang. Wird per leseFehler ausgelesen.

Feld Typ Beschreibung
cTitel String Fehlertitel (Kurzbeschreibung)
cText String Fehlertext (Detailbeschreibung)
eTyp TVorgangFehlerTyp Fehlerklassifikation

Konstanten

Konstante Wert Beschreibung
POSTYP_POS '0' Positionstyp normale Artikelposition (entspricht ptPosition)
POSTYP_TXT '1' Positionstyp Textzeile (entspricht ptText)
POSTYP_ELN '2' Positionstyp Leerzeile (entspricht ptLeerzeile)
POSTYP_ZWS '3' Positionstyp Zwischensumme (entspricht ptZwischensumme)
POSTYP_TIS '4' Positionstyp Titelsumme (entspricht ptTitelsumme)
POSTYP_TIT '7' Positionstyp Titel (entspricht ptTitel)
POSTYP_GEW '8' Positionstyp Gewerk (entspricht ptGewerk)
POSTYP_PBR '17' Positionstyp Seitenumbruch (entspricht ptSeitenumbruch)
POSTYP_PIC '19' Positionstyp Bild (entspricht ptBild)
VB_DEFAULT_BezZwischensumme 'ZWISCHENSUMME  :' Standard-Bezeichnung für Zwischensummen-Positionen
VB_DEFAULT_BezTitelsumme 'TITELSUMME  :' Standard-Bezeichnung für Titelsummen-Positionen
VB_MAX_SummenEbenen 9 Maximale Anzahl von Summenebenen (Zwischen- und Titelsummen)

Basisklassen Vorgangsgenerierung

TVorgang

Variablen

Name Typ Zugriff Beschreibung
oMyDB TxDB Lesen/Schreiben Datenbankverbindung des Vorgangs
oProtokoll TStringList Lesen/Schreiben Protokoll-Liste (Meldungen/Log)
lMeldung Boolean Lesen/Schreiben Steuert Anzeige von Benutzer-Meldungen
lSetPSBemAuto Boolean Lesen/Schreiben Automatische Positionsbemerkung setzen
cVorgNr String Lesen/Schreiben Vorgangsnummer
cProjNr String Lesen/Schreiben Projektnummer
lBrutto Boolean Lesen/Schreiben Brutto-Modus aktiv
cLanguage String Lesen/Schreiben Sprach-Code (intern, z. B. für Formulare)
cLagNr String Lesen/Schreiben Lagernummer
cTyp String Lesen/Schreiben Vorgangstyp-Kürzel
dVorgDat TDateTime Lesen/Schreiben Vorgangsdatum
dFaelligDat TDateTime Lesen/Schreiben Fälligkeitsdatum
dBuchDat TDateTime Lesen/Schreiben Buchungsdatum
dAufDat TDateTime Lesen/Schreiben Auftragsdatum
cKdNr String Lesen/Schreiben Kundennummer
cAnrede String Lesen/Schreiben Anrede des Kunden
cName String Lesen/Schreiben Name des Kunden
cVorname String Lesen/Schreiben Vorname des Kunden
cZusatz1 String Lesen/Schreiben Adresszusatz 1
cZusatz2 String Lesen/Schreiben Adresszusatz 2
cStrasse String Lesen/Schreiben Straße der Lieferadresse
cPostfach String Lesen/Schreiben Postfach
cLK String Lesen/Schreiben Länderkennzeichen
cPLZ String Lesen/Schreiben Postleitzahl
cOrt String Lesen/Schreiben Ort
cAngebNr String Lesen/Schreiben Angebotsnummer
cLSNr String Lesen/Schreiben Lieferscheinnummer
cRechNr String Lesen/Schreiben Rechnungsnummer
cAuftNr String Lesen/Schreiben Auftragsnummer
cRepaNr String Lesen/Schreiben Reparaturauftragsnummer
cEinkaufsNr String Lesen/Schreiben Einkaufsnummer
cBestellNr String Lesen/Schreiben Bestellnummer
cPosText String Lesen/Schreiben Positionstext (globaler Standardtext)
cLProjNr String Lesen/Schreiben Leistungsprojektnummer
cKopftext String Lesen/Schreiben Kopftext des Vorgangs
cFusstext String Lesen/Schreiben Fußtext des Vorgangs
nNBetrag Double Lesen/Schreiben Nettobetrag gesamt
nBBetrag Double Lesen/Schreiben Bruttobetrag gesamt
nEKBetrag Double Lesen/Schreiben Einkaufsbetrag gesamt
nRabattBetrag Double Lesen/Schreiben Rabattbetrag gesamt
nRabattProz Double Lesen/Schreiben Rabattprozentsatz gesamt
nAnzahlung Double Lesen/Schreiben Anzahlungsbetrag
nPorto Double Lesen/Schreiben Portokosten
nVerpackung Double Lesen/Schreiben Verpackungskosten
lSplitPoVe Boolean Lesen/Schreiben Porto und Verpackung getrennt ausweisen
cVersand String Lesen/Schreiben Versandart
cWaehr String Lesen/Schreiben Währungskürzel
cFormul String Lesen/Schreiben Formularnummer/-kürzel
cVAnr String Lesen/Schreiben Versandanrede
cVName1 String Lesen/Schreiben Versandname 1
cVName2 String Lesen/Schreiben Versandname 2
cVZusatz String Lesen/Schreiben Versandadresse Zusatz
cVStrasse String Lesen/Schreiben Versandstraße
cVLK String Lesen/Schreiben Versand-Länderkennzeichen
cVPLZ String Lesen/Schreiben Versand-PLZ
cVOrt String Lesen/Schreiben Versandort
cVUID String Lesen/Schreiben Versandadresse UID
cPrio String Lesen/Schreiben Priorität des Vorgangs
cAuftNrKd String Lesen/Schreiben Auftrags-/Bestellnummer des Kunden
cBesteller String Lesen/Schreiben Besteller (Person)
cSachb String Lesen/Schreiben Sachbearbeiter
cRabPosJN String Lesen/Schreiben Positionsrabatt anzeigen J/N
cMWSTJN String Lesen/Schreiben Mehrwertsteuer ausweisen J/N
cSText1 String Lesen/Schreiben Sondertext 1
cSText2 String Lesen/Schreiben Sondertext 2
cSText3 String Lesen/Schreiben Sondertext 3
cSText4 String Lesen/Schreiben Sondertext 4
cSText5 String Lesen/Schreiben Sondertext 5
cSText6 String Lesen/Schreiben Sondertext 6
cSText7 String Lesen/Schreiben Sondertext 7
cPreisJN String Lesen/Schreiben Preis auf Dokument drucken J/N
cMwStAbs String Lesen/Schreiben MwSt-Absetzungstext/-Kürzel
dLiefDat TDateTime Lesen/Schreiben Lieferdatum
cDeleted String Lesen/Schreiben Gelöscht-Kennzeichen
dLDat2 TDateTime Lesen/Schreiben Zweites Lieferdatum
cSprache String Lesen/Schreiben Sprache des Vorgangs
cReEmpf String Lesen/Schreiben Rechnungsempfänger-Nummer
cReAnrede String Lesen/Schreiben Rechnungsempfänger-Anrede
cReName String Lesen/Schreiben Rechnungsempfänger-Name
cReVorname String Lesen/Schreiben Rechnungsempfänger-Vorname
cReZusatz1 String Lesen/Schreiben Rechnungsempfänger-Adresszusatz 1
cReZusatz2 String Lesen/Schreiben Rechnungsempfänger-Adresszusatz 2
cReStrasse String Lesen/Schreiben Rechnungsempfänger-Straße
cRePostfach String Lesen/Schreiben Rechnungsempfänger-Postfach
cReLK String Lesen/Schreiben Rechnungsempfänger-Länderkennzeichen
cRePLZ String Lesen/Schreiben Rechnungsempfänger-PLZ
cReOrt String Lesen/Schreiben Rechnungsempfänger-Ort
cVertreter String Lesen/Schreiben Vertreter-Kürzel
cVerbucht String Lesen/Schreiben Verbucht-Kennzeichen
cLager String Lesen/Schreiben Lager-Kürzel
cRechFrei String Lesen/Schreiben Rechnungsfreigabe-Kennzeichen
cBonNr String Lesen/Schreiben Bonnummer (Kasse)
cMandant String Lesen/Schreiben Mandantenkürzel
nMwStDM Double Lesen/Schreiben MwSt-Betrag in DM (Altwährung)
nKursDM Double Lesen/Schreiben Wechselkurs DM
nAbschlag Double Lesen/Schreiben Abschlagsbetrag
nZBetrag Double Lesen/Schreiben Zahlungsbetrag
nZSkonto Double Lesen/Schreiben Skonto-Betrag
dZDatum TDateTime Lesen/Schreiben Zahlungsdatum
cMemo String Lesen/Schreiben Memofeld des Vorgangs
nValuta Integer Lesen/Schreiben Valutatage
cKostenst String Lesen/Schreiben Kostenstelle
cKostentraeger String Lesen/Schreiben Kostenträger
cKalkGr String Lesen/Schreiben Kalkulationsgruppe
cFrachtV String Lesen/Schreiben Frachtart/-vorschrift
nFrachtK Double Lesen/Schreiben Frachtkosten
nFrachtG Integer Lesen/Schreiben Frachtgewicht
cGruppe String Lesen/Schreiben Vorgangsgruppe
nPosInc Integer Lesen/Schreiben Positionsnummer-Inkrement
cFiliale String Lesen/Schreiben Filialkürzel
cRabText String Lesen/Schreiben Rabatttextfeld (kurz)
cErfasser String Lesen/Schreiben Erfasser des Vorgangs
nSKFBetrag Double Lesen/Schreiben Skontofähiger Betrag
lLiefStrecke Boolean Lesen/Schreiben Lieferstreckengeschäft aktiv
cBetreff String Lesen/Schreiben Betreffzeile
cMemoDruck String Lesen/Schreiben Druckmemo (erscheint auf Dokument)
cLieferLiefNr String Lesen/Schreiben Lieferanten-Lieferscheinnummer
cRabattText String Lesen/Schreiben Rabatttext (lang)
cSysUid String Lesen/Schreiben System-UID des Vorgangs
lLeistPreis2 Boolean Lesen/Schreiben Leistungspreis 2 verwenden
cFunction String Lesen/Schreiben Funktionskürzel (Scripting-Hook)
lSaveAllowed Boolean Lesen/Schreiben Speichern erlaubt
lVorgangsSperre Boolean Lesen/Schreiben Vorgang gesperrt

Properties

Name Typ Zugriff Beschreibung
DmsTyp String Lesen/Schreiben DMS-Typ des Vorgangs (z. B. AN, AU, LS, RE)
MainTable String Lesen/Schreiben Haupttabelle des Vorgangs (Datenbankname)
PosTable String Lesen/Schreiben Positionstabelle des Vorgangs
cPosFormat String Lesen/Schreiben Positionsnummern-Format
ParameterPositionsdatenAktualisieren TVorgangPosParams_AktualisiereDaten Lesen/Schreiben Parameter für Massenaktualisierung von Positionsdaten
PnPosCnt Integer Lesen/Schreiben Anzahl der Positionen im Vorgang
PaPositionen[Index] TVorgangPos Lesen/Schreiben Array der Positionsobjekte (0-basiert)
PcRabGrPers String Nur Lesen Rabattgruppe der Person (aus Stammdaten ermittelt)
PcVKdNr String Lesen/Schreiben VK-Kundennummer (alternativ zur cKdNr für Preisfindung)
nNet1 Double Lesen/Schreiben Nettobetrag MwSt-Schlüssel 1
nNet2 Double Lesen/Schreiben Nettobetrag MwSt-Schlüssel 2
nNet3 Double Lesen/Schreiben Nettobetrag MwSt-Schlüssel 3
nBrutto1 Double Lesen/Schreiben Bruttobetrag MwSt-Schlüssel 1
nBrutto2 Double Lesen/Schreiben Bruttobetrag MwSt-Schlüssel 2
nBrutto3 Double Lesen/Schreiben Bruttobetrag MwSt-Schlüssel 3
nMwSt1 Double Lesen/Schreiben MwSt-Betrag Schlüssel 1
nMwSt2 Double Lesen/Schreiben MwSt-Betrag Schlüssel 2
nMwSt3 Double Lesen/Schreiben MwSt-Betrag Schlüssel 3
cMwStSchl1 String Lesen/Schreiben MwSt-Schlüssel 1
cMwStSchl2 String Lesen/Schreiben MwSt-Schlüssel 2
cMwStSchl3 String Lesen/Schreiben MwSt-Schlüssel 3
cKeineVersPausch String Lesen/Schreiben Keine Versandpauschale berechnen J/N
cZahlBed String Lesen/Schreiben Zahlungsbedingung
lNewVorgang Boolean Nur Lesen Neuer (noch nicht gespeicherter) Vorgang
cKopfNr String Lesen/Schreiben Kopftextbaustein-Nummer
cFussNr String Lesen/Schreiben Fußtextbaustein-Nummer
cLiefStrecke String Lesen/Schreiben Lieferstrecken-Kürzel
cStatus String Lesen/Schreiben Status des Vorgangs
cStatM String Lesen/Schreiben Material-Status
cStatS String Lesen/Schreiben Service-Status
cStatL String Lesen/Schreiben Lieferstatus
cStatR String Lesen/Schreiben Rechnungsstatus
cColStatus String Lesen/Schreiben Farb-/Anzeigestatus (für UI)
cZustand String Lesen/Schreiben Zustandskenner des Vorgangs
cArt String Lesen/Schreiben Vorgangsart-Kürzel
cBonusJN String Lesen/Schreiben Bonus berechnen J/N
cVersandkostenMBW String Lesen/Schreiben Versandkosten-Mindestbestellwert-Kennzeichen
cWKNr String Lesen/Schreiben Werbungskosten-Nummer

Methoden

Signatur Beschreibung
constructor Create(const cUid: string; oxDB: TxDB; cDmsType: string) Erstellt einen neuen Vorgang mit UID, Datenbankverbindung und DMS-Typ
destructor Destroy Gibt den Vorgang und alle Ressourcen frei
function SemaphoreCreate(cFName: string; lMeldung: boolean = False; cWait: string = ''): boolean Erstellt eine Datei-Semaphore (Sperrdatei); gibt True zurück wenn erfolgreich
function SemaphoreInUse(cFName: string): boolean Prüft ob die Semaphore-Datei bereits in Verwendung ist
procedure SemaphoreReleaseAll Gibt alle Semaphoren dieses Vorgangs frei
procedure SemaphoreRelease(cFName: string) Gibt eine bestimmte Semaphore frei
function IstAngebot(): boolean Gibt True zurück wenn der Vorgang ein Angebot ist
function IstAuftrag(): boolean Gibt True zurück wenn der Vorgang ein Auftrag ist
function IstReparaturAuftrag(): boolean Gibt True zurück wenn der Vorgang ein Reparaturauftrag ist
function IstLieferschein(): boolean Gibt True zurück wenn der Vorgang ein Lieferschein ist
function IstRechnung(): boolean Gibt True zurück wenn der Vorgang eine Rechnung ist
function IstBestellung(): boolean Gibt True zurück wenn der Vorgang eine Bestellung ist
function IstAnfrage(): boolean Gibt True zurück wenn der Vorgang eine Anfrage ist
function IstEKLieferschein(): boolean Gibt True zurück wenn der Vorgang ein EK-Lieferschein ist
function IstEinkauf(): boolean Gibt True zurück wenn der Vorgang ein Einkaufsvorgang ist
function IstVG_VK(): boolean Gibt True zurück wenn es sich um einen Verkaufsvorgang handelt
function IstVG_EK(): boolean Gibt True zurück wenn es sich um einen Einkaufsvorgang handelt
function NeuNumLock(): boolean Sperrt die Neunummerierung (verhindert parallele Vergabe)
procedure NeuNumLockRelease Gibt die Neunummerierungssperre wieder frei
function VorgNeuNum(cFilter: string = ''; lAbweichend: boolean = false): string Ermittelt und setzt eine neue Vorgangsnummer; gibt die Nummer als String zurück
function VorgNeuNumBool(cFilter: string = ''; lAbweichend: boolean = false): boolean Wie VorgNeuNum, gibt True/False zurück (für Fehlerbehandlung)
function IstVorgNrGueltig(cUID: string = ''): boolean Prüft ob die aktuelle Vorgangsnummer gültig (eindeutig) ist
function NeuePositionBase(const cUID: string): TVorgangPos Legt eine neue Positionsinstanz an und fügt sie dem Vorgang hinzu
procedure NeuePositionBaseMS(const cUID: string; oOrgPos: TVorgangPos) Legt eine neue Position als Multi-Steuer-Folgeposition an
function LoeschePositionBase(nDel: integer): Boolean Löscht die Position mit dem angegebenen Index
procedure VerschiebePositionBase(nPos: integer; nZiel: integer) Verschiebt Position von Index nPos zu Index nZiel
function CheckIfNotNull(): Boolean Prüft ob Pflichtfelder des Vorgangs befüllt sind
function CheckIfFirstPosOption(): Boolean Prüft ob die erste Position eine Optionsposition ist
function IsPosBerechnung(cPosArt: string): boolean Prüft ob eine Positionsart als Berechnungsposition gilt
procedure CopyFrom(oSrc: TVorgang) Kopiert alle Felder aus einem anderen Vorgang
procedure KalkAll(lZusatz: boolean = true) Kalkuliert alle Positionen und Gesamtsummen neu
procedure Check_Multisteuer(oOrgPos: TVorgangPos; const cTable, cMUID, cRefNr: string) Prüft und setzt Multi-Steuer-Verknüpfung für eine Position
function CopyPosmenge(cFromUID: string): string Kopiert Positionsmengen aus einem anderen Vorgang (per UID)
function CopyPosverp(cFromUID: string): string Kopiert Positionsverpackungen aus einem anderen Vorgang (per UID)
procedure fillVersandkostenMBW(const cPsNr: string; const cPsVersand: string = ''; const PsZusatz: string = '') Berechnet und setzt Versandkosten auf Basis Mindestbestellwert
procedure FillPersonBase(qPers: TxFQuery) Befüllt Adressfelder des Vorgangs aus einem Personen-Query
function FillReEmpf(const AReEmpf: string; const AZahlBed: string = ''): boolean Setzt Rechnungsempfänger und optionale Zahlungsbedingung
function SaveRecord(cUID: string = ''; lAlleSpeichern: boolean = false): Boolean Speichert den Vorgang (abstrakt – muss in abgeleiteter Klasse implementiert werden)
function ReadVorgangTypBase(cDmsTyp: string; const cNr: string; lPos: boolean = false; lNeg: boolean = false): boolean Liest einen Vorgang anhand DMS-Typ und Nummer in das Objekt
function JahrNr(): string Gibt das Jahr der Vorgangsnummer zurück
procedure NeuNumPos(const lNurPos: boolean = True) Nummeriert alle Positionen neu
function EigenschaftSetzen(const ANr: string; const AMode: boolean): boolean Setzt oder löscht eine Vorgangseigenschaft (Merkmal) per Nummer
procedure AdresseLeeren Leert alle Adressfelder des Vorgangs
procedure VersandLeeren(lRef: boolean = True) Leert alle Versandadressfelder
procedure ReEmpfLeeren(const lNurAdr: boolean = False) Leert Rechnungsempfänger-Felder (optional nur Adresse)
procedure DoServiceTouch(cStatus: string = '') Aktualisiert Service-Zeitstempel und optionalen Status
function AuswahlParameterPositionsdatenAktualisieren(const cXDataTable: string): boolean Zeigt Dialog zur Auswahl der Aktualisierungsparameter für Positionsdaten
function ZusatzkostenAktiv(): boolean Gibt True zurück wenn Zusatzkostenmodul für diesen Vorgang aktiv ist
function leseFehler(out rFehler: TVorgangFehler; var nIdx: integer; const eLoeschenNachLesen: TVorgangFehlerLoeschenLesen = vfllSkipCritical): boolean Liest den nächsten Fehler aus der internen Fehlerliste


TVorgangPos

Variablen

Name Typ Zugriff Beschreibung
nPosIndex Integer Lesen/Schreiben Laufender Index der Position im Positions-Array
cNr String Lesen/Schreiben Interne Positionsnummer (Datenbankfeld)
cKundNr String Lesen/Schreiben Kundennummer an der Position
cAuftragsNr String Lesen/Schreiben Referenz-Auftragsnummer
cBestellNr String Lesen/Schreiben Referenz-Bestellnummer
cPosText String Lesen/Schreiben Positionstext (Langtextfeld)
cLProjNr String Lesen/Schreiben Leistungsprojektnummer
cLS_azUid String Lesen/Schreiben Lieferschein-Abrechnungszeilen-UID
cVersandNr String Lesen/Schreiben Versandnummer
cPosNr String Lesen/Schreiben Positionsnummer (formatiert)
cPosNr2 String Lesen/Schreiben Zweite Positionsnummer (alternativ)
cPosKas String Lesen/Schreiben Kassier-Positionsnummer
cLeistungsNr String Lesen/Schreiben Leistungsnummer
cBezeichnung1 String Lesen/Schreiben Bezeichnung Zeile 1
cBezeichnung2 String Lesen/Schreiben Bezeichnung Zeile 2
nUrMenge Double Lesen/Schreiben Ursprungsmenge (vor Änderungen)
nLeistFaktor Double Lesen/Schreiben Leistungsfaktor (Multiplikator für Mengenberechnung)
cEinheit String Lesen/Schreiben Mengeneinheit
nMengeG Integer Lesen/Schreiben Mengenganz (ganzzahliger Mengenanteil)
nKolli Integer Lesen/Schreiben Kollianzahl
cVerpackung String Lesen/Schreiben Verpackungsart/-kürzel
nInhalt Double Lesen/Schreiben Inhalt pro Verpackungseinheit
nEPreis Double Lesen/Schreiben Einzelpreis (Netto)
nBEPreis Double Lesen/Schreiben Brutto-Einzelpreis
nOBPreis Double Lesen/Schreiben Original-Brutto-Einzelpreis (vor Rabatt)
nUrPreis Double Lesen/Schreiben Ursprungspreis (Listenpreis VK)
nUrPreisEK Double Lesen/Schreiben Ursprungspreis Einkauf
nGPreis Double Lesen/Schreiben Gesamtpreis (Netto)
nBGPreis Double Lesen/Schreiben Brutto-Gesamtpreis
nEKPreis Double Lesen/Schreiben Einkaufspreis
nEKSPreis Double Lesen/Schreiben Einkaufssonderpreis
cManPreis String Lesen/Schreiben Manueller Preis J/N-Kennzeichen
nRabatt Double Lesen/Schreiben Gesamtrabatt in Prozent
nRabatt1 Double Lesen/Schreiben Rabatt 1 in Prozent
cRabArt1 String Lesen/Schreiben Rabattart 1 (Herkunftskennzeichen)
nRabatt2 Double Lesen/Schreiben Rabatt 2 in Prozent
cRabArt2 String Lesen/Schreiben Rabattart 2
nRabatt3 Double Lesen/Schreiben Rabatt 3 in Prozent
cRabArt3 String Lesen/Schreiben Rabattart 3
nRabatt4 Double Lesen/Schreiben Rabatt 4 in Prozent
cRabArt4 String Lesen/Schreiben Rabattart 4
nRabatt5 Double Lesen/Schreiben Rabatt 5 in Prozent
cRabArt5 String Lesen/Schreiben Rabattart 5
nAddSub Double Lesen/Schreiben Additions-/Subtraktionsbetrag (Zuschlag/Abzug absolut)
cKonto String Lesen/Schreiben Buchungskonto
cLagNr String Lesen/Schreiben Lagernummer der Position
cLagONr String Lesen/Schreiben Lager-Ortsnummer
cVerkaufer String Lesen/Schreiben Verkäuferkürzel
cStatus String Lesen/Schreiben Positionsstatus
cAngebotsNr String Lesen/Schreiben Referenz-Angebotsnummer
cUID String Lesen/Schreiben Eindeutige ID der Position (GUID)
cMUID String Lesen/Schreiben Multi-Steuer-UID (Verknüpfung bei Multisteuer)
cRTVon String Lesen/Schreiben Rücktragungs-Referenz (von welcher Position)
cSpNr String Lesen/Schreiben Speditionsnummer
cBestellUID String Lesen/Schreiben UID der verknüpften Bestellposition
cMaterialUID String Lesen/Schreiben UID des verknüpften Materialeintrags
cEiliUID String Lesen/Schreiben UID der Eillieferungsposition
cXUID1 String Lesen/Schreiben Erweiterungs-UID 1 (freie Verknüpfung)
cXUID2 String Lesen/Schreiben Erweiterungs-UID 2
cXUID3 String Lesen/Schreiben Erweiterungs-UID 3
cXUID4 String Lesen/Schreiben Erweiterungs-UID 4
cKommentar String Lesen/Schreiben Kommentarfeld der Position
nProvision Double Lesen/Schreiben Provisionsanteil in Prozent
cLiefKz String Lesen/Schreiben Lieferkennzeichen
cProdGr String Lesen/Schreiben Produktgruppe
nFrachtV Double Lesen/Schreiben Frachtvolumen der Position
cLSNr String Lesen/Schreiben Lieferscheinnummer der Position
dLSDatum TDateTime Lesen/Schreiben Lieferscheindatum der Position
cPosArt String Lesen/Schreiben Positionsart (z. B. N=Normal, O=Optional)
cSKFJN String Lesen/Schreiben Skontofähig J/N
cEKHerkunft String Lesen/Schreiben EK-Preisherkunft-Kürzel
cLiefNr String Lesen/Schreiben Lieferantennummer
cLagStreck String Lesen/Schreiben Lager-Streckenkennzeichen
cAufschlag String Lesen/Schreiben Aufschlagskürzel
nStaffelPreis Integer Lesen/Schreiben Staffelpreisstufe (Index)
nStaffelmenge Double Lesen/Schreiben Staffelmenge für Preisfindung
lAktionspreis Boolean Lesen/Schreiben Aktionspreis aktiv
cAusdruckJN String Lesen/Schreiben Position drucken J/N
cMemoDruck String Lesen/Schreiben Druckmemo der Position
cBildUID String Lesen/Schreiben UID des verknüpften Bildes
cCMPUID String Lesen/Schreiben CMP-Objekt-UID
cZeit_CMPUID String Lesen/Schreiben Zeiterfassungs-CMP-UID
cZeit_Text String Lesen/Schreiben Zeiterfassungstext
cZeit_Mitarb String Lesen/Schreiben Mitarbeiter der Zeiterfassung
dZeit_Date TDateTime Lesen/Schreiben Datum der Zeiterfassung
cZeit_NurLei String Lesen/Schreiben Zeiterfassung: nur Leistung J/N
cKostst String Lesen/Schreiben Kostenstelle der Position
dAbrechVon TDateTime Lesen/Schreiben Abrechnungszeitraum von
dAbrechBis TDateTime Lesen/Schreiben Abrechnungszeitraum bis
lNeuNum Boolean Lesen/Schreiben Neunummerierung für diese Position ausführen
cSysUID String Lesen/Schreiben System-UID der Position
cGeraetNr String Lesen/Schreiben Gerätenummer (für Servicepositionen)

Properties

Name Typ Zugriff Beschreibung
oMyDB TxDB Nur Lesen Datenbankverbindung (vom Vorgang geerbt)
ShopNr String Nur Lesen Shop-Nummer (für Mehrshop-Preisfindung)
cArtikelNr String Lesen/Schreiben Artikelnummer (Zugriff über Property wegen Seiteneffekten)
PcMWSTSch String Lesen/Schreiben MwSt-Schlüssel (Parameter-Feld)
PcMengeIn String Lesen/Schreiben Mengeneingabe als String (Parameter)
PnMengeIn Double Lesen/Schreiben Mengeneingabe als Zahl (Parameter)
PnMengeInFak Double Lesen/Schreiben Mengeneingabe-Faktor (Parameter)
PcMemofeld String Lesen/Schreiben Memofeld der Position (Parameter-Feld, Unicode)
PcMemofeldAnsi String Lesen/Schreiben Memofeld ANSI-Version (Parameter-Feld)
cPosLaufend String Lesen/Schreiben Laufende Positionsnummer als String
lVerbrauchsMater Boolean Lesen/Schreiben Verbrauchsmaterial-Kennzeichen
nMenge Double Lesen/Schreiben Menge der Position (mit Seiteneffekten bei Schreiben)
cTyp String Lesen/Schreiben Positionstyp als String – siehe Konstanten (POSTYP_*)
Wandelt den übergebenen String in die passende Enummeration für Property (siehe Hinweise in Typ).
ACHTUNG: Wird ein ungültiger Wert gesetzt, so wird der Typ automatisch auf Position ("0" bzw. ptPosition) gesetzt.
Typ TVB_PosType Lesen/Schreiben Positionstyp als Enum (ptPosition, ptText, ptLeerzeile …)
HINWEIS: Wird der Typ geändert, so werden die Daten des Positionsobjekts auf die Vorbelegung zurückgesetzt. Zuvor gesetzte Daten werden dabei überschrieben. Nach der Verwendung von NeuePosition sollte der Typ daher als erstes geändert werden, bevor Sie weitere Daten in das Objekt schreiben. Alternativ kann der Positionstyp mit einer Klassenmethode angepasst werden. Diese verfügen über entsprechende Parameter, um relevante Felder für die Position direkt zu setzen. Siehe dazu:
Typ_Pos
Typ_Text
Typ_Leerzeile
Typ_Zwischensumme
Typ_ZwischensummeEbene
Typ_Titelsumme
Typ_TitelsummeEbene
Typ_Titel
Typ_Gewerk
Typ_NeueSeite
Typ_Bild
OriginalPos TVorgangPosOriginal Nur Lesen Ursprungspositionsdaten (DMS-Referenz, Nr, UID, SysUID)

Methoden

Signatur Beschreibung
constructor Create(oxVorgang: TVorgang; cPosTbl: string) Erstellt eine neue Position für den angegebenen Vorgang (veraltet, UID-Variante bevorzugen)
constructor Create(cUid: string; oxVorgang: TVorgang; cPosTbl: string) Erstellt eine neue Position mit vorgegebener UID
destructor Destroy Gibt die Position frei
procedure PositionsVorbelegung Befüllt die Position mit Standardwerten aus den Vorgangsdaten
procedure GenNewUid Generiert eine neue UID für diese Position
function CopyPosmenge(cFromUID: string): string Kopiert Mengen aus einer anderen Position (per UID)
function CopyPosverp(cFromUID: string): string Kopiert Verpackungsdaten aus einer anderen Position (per UID)
procedure CopyFrom(oSrc: TVorgangPos; lFull: boolean = False) Kopiert alle Felder aus einer anderen Position; lFull=True kopiert auch interne Felder
procedure QueryToPos(qTmp: TxFQuery; lReadAsNew: boolean = false) Befüllt die Position aus einem Datenbankquery (Überladung 1)
procedure QueryToPos(qTmp: TxFQuery; const cFromTable: string; lVerpack: Boolean = False; lUmkehr: boolean = False) Befüllt die Position aus einem Query mit expliziter Quelltabelle (Überladung 2)
procedure DBPosToPos(const cFromTable: string; const cSysUid: string; lVerpack: Boolean = False; lUmkehr: boolean = False) Liest eine Position direkt aus der Datenbank per SysUID
function FillArtikel(cArtNr: string): boolean Befüllt die Position mit Artikelstammdaten; gibt True bei Erfolg zurück
function SetzeLieferant(const cLiefNr: string; lEKNeu: boolean = True; lDefaultEK1: boolean = False): boolean Setzt den Lieferanten und aktualisiert EK-Preise
procedure FillLeistung(cLeistNr: string) Befüllt die Position mit Leistungsstammdaten
function SumPosBez(const eZielTyp: TVB_PosType; const cBezVorb: string): string Gibt die Bezeichnung für eine Summenposition zurück
procedure Typ_Pos Setzt den Positionstyp auf „normale Position“
procedure Typ_Text(const cText: string) Setzt den Positionstyp auf „Textzeile“ mit dem angegebenen Text
procedure Typ_Leerzeile Setzt den Positionstyp auf „Leerzeile“
procedure Typ_Zwischensumme(const cBez: string = '') Setzt den Positionstyp auf „Zwischensumme“ (Ebene 1)
procedure Typ_ZwischensummeEbene(const nEbene: integer; const cBez: string = '') Setzt den Positionstyp auf „Zwischensumme“ der angegebenen Ebene
procedure Typ_Titelsumme(const cBez: string = '') Setzt den Positionstyp auf „Titelsumme“ (Ebene 1)
procedure Typ_TitelsummeEbene(const nEbene: integer; const cBez: string = '') Setzt den Positionstyp auf „Titelsumme“ der angegebenen Ebene
procedure Typ_Titel(const cBez: string) Setzt den Positionstyp auf „Titel“
procedure Typ_Gewerk(const cBez: string) Setzt den Positionstyp auf „Gewerk“
procedure Typ_NeueSeite Setzt den Positionstyp auf „Seitenumbruch“
procedure Typ_Bild(const cBild: string) Setzt den Positionstyp auf „Bild“ mit dem angegebenen Bildpfad/-UID
procedure UStKorrektur(const dCheckDate: TDateTime) Korrigiert den Umsatzsteuerschlüssel gemäß Datum (Steuersatzänderungen)
procedure KalkPos Kalkuliert Gesamtpreis und abgeleitete Felder dieser Position neu
function PosNrAllowed(): boolean Gibt True zurück wenn dieser Positionstyp eine Positionsnummer erhält
procedure SetPosNr(cP: string; cT: string = ''; cG: string = ''; cFormat: string = '') Setzt die Positionsnummer aus String-Komponenten (Überladung 1)
procedure SetPosNr(nP: integer; nT: integer = -1; nG: integer = -1; cFormat: string = '') Setzt die Positionsnummer aus numerischen Komponenten (Überladung 2)
function PosLaufend(iPos: integer = 0): string Gibt die laufende Positionsnummer als formatierten String zurück
procedure Preisfindung(cShopNr: string = CONST_NO_SHOP) Führt die Preisfindung für diese Position aus
function SetOpenBookLieferant(): boolean Setzt den Open-Book-Lieferanten für diese Position
procedure AddToMemo(const cText: string; const lNewLine: boolean = False) Fügt Text zum Memofeld hinzu
procedure AktualisiereDaten Aktualisiert Texte, EK- und VK-Preise gemäß ParameterPositionsdatenAktualisieren
procedure EKCalcMengeIn(var nEkFak: double) Berechnet den EK-Mengeneingabe-Faktor (Rückgabe per var-Parameter)
function CanSave(): boolean Prüft ob diese Position gespeichert werden kann/darf
procedure qSqlSet(AqSql: TqSql) Setzt das SQL-Objekt für erweiterte DB-Operationen dieser Position

Globale Methoden

Signatur Beschreibung
function IstVKVorgang(cMainTable: string): boolean Gibt True zurück, wenn die Haupttabelle ein VK-Vorgang ist
function IstVKVorgangPos(cPosTable: string): boolean Gibt True zurück, wenn die Positionstabelle zu einem VK-Vorgang gehört
function CopyPosmengeDB(oMyDB: TxDB; cFromUID: string): string Kopiert Positionsmengen aus einem anderen Vorgang (direkt per Datenbankzugriff)
function CopyPosverpDB(oMyDB: TxDB; cFromUID: string): string Kopiert Positionsverpackungen aus einem anderen Vorgang (direkt per Datenbankzugriff)
function CopyRTFLan(oMyDB: TxDB; cVonTable, cVonRef, cNachTable, cNachRef: String): String Kopiert RTF-Langtexte zwischen Vorgangs-Positionen
procedure CopyKalkulationAN2AU(oMyDB: TxDB; cANRef1, cANRef2, cAURef1, cAURef2: String; fPosmenge: Double) Kopiert Kalkulation von Angebot nach Auftrag (mit Mengenfaktor)
procedure CopyKalkulationAU(oMyDB: TxDB; cANRef1, cANRef2, cAURef1, cAURef2: String) Kopiert Auftragskalkulation zwischen zwei Positionen
procedure CopyKalkulationAN(oMyDB: TxDB; cANRef1, cANRef2, cAURef1, cAURef2: String) Kopiert Angebotskalkulation zwischen zwei Positionen
function PosNrFormatCheck(const cFormat: string): boolean Prüft, ob ein Positionsnummern-Format gültig ist (Überladung 1)
function PosNrFormatCheck(oMyDB: TxDB; const cFormat: string): boolean Prüft Format gegen Datenbankeinstellungen (Überladung 2)
function PosNrFormatCounts(const cFormat: string; out nG, nT, nP: integer): boolean Liefert die Stellenzahlen für Gewerk, Titel und Position aus dem Format (Überladung 1)
function PosNrFormatCounts(oMyDB: TxDB; const cFormat: string; out nG, nT, nP: integer): boolean Wie oben, mit Datenbankzugriff (Überladung 2)
function PosNrSplit(oMyDB: TxDB; const cFormat, cPosTyp: string; cPosNr: string; out nG, nT, nP: integer): boolean Zerlegt eine formatierte Positionsnummer in ihre Bestandteile
function GetVorgangMandant(oMyDB: TxDB; const cTable, cNr: string): string Gibt den Mandanten-Schlüssel für einen Vorgang zurück
function GetVorgangTextTB(const nPMode: integer; out cTB_Nr: string; cFiliale: string = ''): boolean Ermittelt die Textbaustein-Nummer für den angegebenen Positionsmodus
function GetVorgangTextTBPers(oMyDB: TxDB; const cPsNr: string; const nPMode: integer; out cTB_Nr: string; cFiliale: string = ''): boolean Wie GetVorgangTextTB, zusätzlich personenbezogen
function KopfTextPlatzhalter(var cKopfText: string; const cBrief1, cBrief2: string): boolean Ersetzt Platzhalter im Kopftext durch Briefanredefelder
function VorgangArt(oMyDB: TxDB; const cDMS, cNr: string): integer Gibt die Vorgangsart als Integer-Kennziffer zurück
function VorgangStatus(oMyDB: TxDB; const cDMS, cNr: string): string Gibt den aktuellen Status eines Vorgangs aus der Datenbank zurück
function VorgangVerbucht(oMyDB: TxDB; const cDMS, cNr: string): boolean Gibt True zurück, wenn der Vorgang verbucht ist
function VorgangUstEnthalten(oMyDB: TxDB; const cDMS, cNr, cUstSchl: string; cFeld: string = ''): boolean Prüft, ob ein bestimmter USt-Schlüssel im Vorgang verwendet wird
function PortoVerpackKannSkonto(): boolean Gibt True zurück, wenn Porto/Verpackung skontofähig ist (laut Systemeinstellung)
function GetPosBild(oMyDB: TxDB; cArtNr: string; var cBildUID: string): boolean Ermittelt die Bild-UID eines Artikels für eine Positions-Bildposition
function VorgangVertreterVorb(oMyDB: TxDB; const cVertreter: string): string Gibt den vorgebelegten Vertreter-Schlüssel zurück
function VorgangVertreterPrio(oMyDB: TxDB; const cAktVertreter: string): string Gibt den Vertreter mit höchster Priorität zurück
function GenerierePositionskommentar(cUrsprung, cKommentar: String): String Kombiniert Ursprungs- und Kommentartext zu einem Positions-Kommentar
function ReplacePlatzhalterReparaturAuftrag(cRAufNr: String; cText: String = ''): String Ersetzt Platzhalter im Text durch Reparaturauftragsdaten
function ReplacePlatzhalterPosErfassung(oMyDB: TxDB; const cBuffer, cTable, cNr: string; const lDef: Boolean = False; const lRepa: Boolean = False): String Ersetzt Platzhalter im Text bei der Positionserfassung
function LoadPlatzhalterVorgang(oMyDB: TxDB; const cTable, cNr: string; var oPlatzhalter: TPlatzhalterVorgang): Boolean Lädt Platzhalter-Daten eines Vorgangs aus der Datenbank
function PlatzhalterVorgang(const cText, cNr: string; const oPlatzhalter: TPlatzhalterVorgang; const lDef: Boolean = false; const lRepa: Boolean = false): string Ersetzt Platzhalter im Text mit den geladenen Vorgang-Platzhaltern
function GetPosVorb_ErlKto(oMyDB: TxDB; const cErlJahr, cManNr, cFiliale: string): string Gibt das Erlöskonto für eine Positionsvorbelegung zurück
procedure ChangePosPreisFromLeistPreis2(oVorgang: TVorgang) Wechselt für alle Positionen auf den alternativen Leistungspreis 2
function Vorgang_ToXMLStr(oMyDB: TxDB; const cTable, cPosTable, cVorgNr: String): string Exportiert einen Vorgang als XML-String
function Vorgang_ToDelArchiv(oMyDB: TxDB; const cTable, cPosTable, cVorgNr: String): Boolean Verschiebt einen Vorgang ins Löscharchiv
function Vorgang_ToXMLFile(oMyDB: TxDB; const cFile, cTable, cPosTable, cVorgNr: String): Boolean Exportiert einen Vorgang in eine XML-Datei
function XMLFile_ToVorgang(oMyDB: TxDB; const cData: String; var cNewNr, cOldNr: String): Boolean Importiert einen Vorgang aus einem XML-String/-Datei
function DelArchivTo_Vorgang(oMyDB: TxDB; const cTabelle, cVorgang: String): String Stellt einen archivierten Vorgang wieder her
function Vorgang_Runden_MengeInFak(oMyDB: TxDB; const cTabMain, cTabPos: string; nValue: double): double Rundet den Mengeneingabe-Faktor gemäß Tabelleneinstellung
function Vorgang_Rohertrag(oMyDB: TxDB; const cDMSTyp, cVorgNr: String; nNettoBetrag: Double): String Berechnet den Rohertrag eines Vorgangs
function Vorgang_Rohertrag_Ext(oMyDB: TxDB; const cDMSTyp, cVorgNr: String; nNettoBetrag: Double; lSollStunden: Boolean): string Berechnet den Rohertrag erweitert (mit Sollstunden)
function VorgangFelder(cTyp: String; lPosition, lArtikel, lMaterial, lAuswertung, lMessen: Boolean; lSchiff: Boolean = False): String Gibt die aktiven Feldgruppen eines Vorgangstyps als String zurück (Überladung 1)
function VorgangFelder(oMyDB: TxDB; cTyp: String; lPosition, lArtikel, lMaterial, lAuswertung, lMessen: Boolean; lSchiff: Boolean = False): String Wie oben, mit Datenbankzugriff (Überladung 2)
function Vorgang_IstGesperrt(oMyDB: TxDB; const cTyp, cRef: string; const cFeld: string = 'a_nr'): boolean Prüft, ob ein Vorgang gesperrt ist (Überladung 1)
function Vorgang_IstGesperrt(oMyDB: TxDB; const rDMS: TDMSType; const cRef: string; const cFeld: string = 'a_nr'): boolean Prüft Sperrung per DMS-Typ (Überladung 2)
function Vorgang_FilterSperrung(oMyDB: TxDB; const cTyp, cRef: string; out cOffen, cGesperrt: string; const cFeld: string = 'a_nr'): boolean Gibt SQL-Filter-Strings für offene/gesperrte Vorgänge zurück
function Vorgang_FilterSperrung_Offen(oMyDB: TxDB; const cTyp, cRef: string; out cOffen: string; const cFeld: string = 'a_nr'): boolean Gibt nur den Filter für offene (nicht gesperrte) Vorgänge zurück
function Vorgang_UbernahmeMassen(oMyDB: TxDB; const cVonUid, cNachDmsTyp, cNachVorgNr, cNachUid: string): boolean Massenweise Positionsübernahme zwischen Vorgängen
function Vorgang_GetMenge(oMyDB: TxDB; const cPosTable, cKeyField, cUID: String; out nUrmenge: Double; const cEigUID: String = ''): Double Liest die aktuelle und Ursprungsmenge einer Position aus der Datenbank
function Vorgang_CheckPosTyp(const cTyp: string): boolean Prüft, ob ein Positionstyp-Schlüssel gültig ist
function Vorgang_HatReEmpfAdr(qVorgangData: TxFQuery): boolean Gibt True zurück, wenn der Vorgang eine Rechnungsempfänger-Adresse hat (Überladung 1)
function Vorgang_HatReEmpfAdr(qVorgangData: TxQuery): boolean Wie oben, für TxQuery (Überladung 2)
function Vorgang_AnzeigeReEmpf(oMyDB: TxDB; qMain: TxFQuery; const cMainTable: string; cAdressBez: string = ''; lUseReportLang: boolean = True): string Gibt die anzuzeigende Rechnungsempfänger-Adresse als formatierten Text zurück (Überladung 1)
function Vorgang_AnzeigeReEmpf(oMyDB: TxDB; qMain: TxQuery; const cMainTable: string; cAdressBez: string = ''; lUseReportLang: boolean = True): string Wie oben, für TxQuery (Überladung 2)
function Vorgang_PortoVerpackBerechnet(oMyDB: TxDB; const cDmsVon, cDmsSetzen, cNrSetzen: string): boolean Prüft, ob Porto/Verpackung bereits berechnet wurde und setzt Kennzeichen
function VorgangVorb_Waehrung(oMyDB: TxDB; const cValue: string = '01'): string Gibt den Standardwährungsschlüssel für Vorgangsvorbelegung zurück
function VorgangVorb_RechKreis(oMyDB: TxDB; const cValue: string = '01'): string Gibt den Standardrechnungskreis-Schlüssel zurück
function VorgangVorbPos_VomLager(const nTokenPos: integer; const cLagStreck: string): string Gibt das Lager/die Strecke für eine Positionsvorbelegung zurück
function Vorgang_VersandkostenMBW(oMyDB: TxDB; const cDmsTyp: string; const lGen: boolean; const cPsNr: string; const cPsVersand: string = ''; const cPsZusatz: string = ''): string Berechnet Versandkosten auf Basis des Mindestbestellwerts
function Vorgang_PdfFile(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; out cPdfFile: string): boolean Ermittelt den Pfad zur archivierten PDF-Datei eines Vorgangs
function Vorgang_PdfAsBase64File(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; out cBase64File: string): boolean Liefert die PDF-Datei als Base64-kodierten Pfad
function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; const nPart: integer; out cBase64: string; out nParts: integer; nPartSize: integer = 0): boolean Liefert die PDF in Teilen als Base64 (mit KdNr, Überladung 1)
function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr, cKdNr: string; const nPart: integer; out cBase64: string; out nParts: integer; cPartSize: string): boolean Wie oben, Teilgröße als String (Überladung 2)
function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr: string; const nPart: integer; out cBase64: string; out nParts: integer; nPartSize: integer = 0): boolean Wie oben, ohne KdNr (Überladung 3)
function Vorgang_PdfAsBase64Parts(oMyDB: TxDB; const cDmsTyp, cNr: string; const nPart: integer; out cBase64: string; out nParts: integer; cPartSize: string): boolean Wie oben, Teilgröße als String (Überladung 4)
function Vorgang_PdfAsBase64(oMyDB: TxDB; const cDmsTyp, cNr: string; out cBase64: string): boolean Liefert die gesamte PDF als Base64-String
function Vorgang_PosUebernommen(oMyDB: TxDB; const cVonDmsTyp, cVonNr, cPosUid: string): TVorgangPosOriginalListe Gibt eine Liste aller Vorgänge zurück, in die diese Position übernommen wurde
function Vorgang_GetPosRef(oMyDB: TxDB; const cVonDmsTyp, cVonNr, cPosUid, cRefDmsTypen: string): TVorgangPosOriginalListe Gibt Referenzen einer Position auf andere DMS-Typen zurück
function Vorgang_ArtBox(const cDMSTyp: string): string Gibt die Vorgangsart-Box (Auswahlstring) für einen DMS-Typ zurück
function Vorgang_SummenEbene(const nEbene: integer): integer Validiert und normiert eine Summen-Ebene (1..VB_MAX_SummenEbenen)
function Vorgang_SummenEbeneAusMenge(const nMenge: double): integer Berechnet die Summenebene aus einem Mengenwert
function Vorgang_KalkAufschlagPos(const nSatz, nZwSumme, nMengeIn, nMengeInFak, nRabatt: double): double Berechnet den Aufschlagsbetrag für eine Position
function Vorgang_SumPosText(const eTyp: TVB_PosType; const cLanguage: string): string Gibt den lokalisierten Standardtext für eine Summenposition zurück
function Vorgang_SumPosTextZw(cLang: string = ''): string Gibt den lokalisierten Text für Zwischensummen-Positionen zurück
function Vorgang_SumPosTextTit(cLang: string = ''): string Gibt den lokalisierten Text für Titelsummen-Positionen zurück