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

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Got nothing to say about me really.<br>Lovely to be a part of this community.<br>I just hope Im useful in some way here.<br><br>my blog - exhibition booth Mosc…“)
 
(Die Seite wurde neu angelegt: „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 Vorga…“)
Zeile 1: Zeile 1:
Got nothing to say about me really.<br>Lovely to be a part of this community.<br>I just hope Im useful in some way here.<br><br>my blog - exhibition booth Moscow ([http://www.libertycollab.com/index.php?title=An_Analysis_Of_Key_Criteria_In_Custom_Exhibition_Stands_Moscow www.libertycollab.com])
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.
=Basis TVorgang=
==Variablen==
<syntaxhighlight lang="Delphi">
        oMyDB            : TxDB;
        cMainTable        : string;
        cPosTable        : string;
        oProtokoll        : TStringList;
        lMeldung          : Boolean;                        //Meldungen Anzeigen
        lSetPSBemAuto    : Boolean;
 
        cVorgNr          : String;                        // Vorgangsnummer
        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;
        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;
        procedure NeuePositionBaseMS(oOrgPos: TVorgangPos);
        procedure LoeschePositionBase(nDel: integer);
        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
        cZeit_CMPUID  : String;    //Zum merken von referenzen
        cZeit_Text    : String;    //Zum merken von referenzen
        cZeit_Mitarb  : String;    //Zum merken von referenzen
        dZeit_Date    : TDateTime; //Zum merken von referenzen
        cZeit_NurLei  : String;    //Zum merken von referenzen
 
        //Rechnung
        cKostst          : String;
        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 Konstanten=
<syntaxhighlight lang="Delphi">
    POSTYP_POS =  '0'; //Artikel/Leistung Position
    POSTYP_TXT =  '1'; //Text
    POSTYP_ELN =  '2'; //Leerzeile (empty line)
    POSTYP_ZWS =  '3'; //Zwischensumme
    POSTYP_TIS =  '4'; //Titelsumme
    POSTYP_TIT =  '7'; //Titel
    POSTYP_GEW =  '8'; //Gewerk
    POSTYP_PBR = '17'; //Seitenumbruch (Pagebreak)
    POSTYP_PIC = '19'; //Bildposition
</syntaxhighlight>
=Allgemeine Funktionen=
<syntaxhighlight lang="Delphi">
function IstVKVorgang(cMainTable: string): boolean;
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>

Version vom 9. April 2019, 15:18 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.

Basis TVorgang

Variablen

        oMyDB             : TxDB;
        cMainTable        : string;
        cPosTable         : string;
        oProtokoll        : TStringList;
        lMeldung          : Boolean;                        //Meldungen Anzeigen
        lSetPSBemAuto     : Boolean;

        cVorgNr           : String;                         // Vorgangsnummer
        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;

Methoden

        function  IstAngebot(): boolean;
        function  IstAuftrag(): boolean;
        function  IstReparaturAuftrag(): boolean;
        function  IstLieferschein(): boolean;
        function  IstRechnung(): boolean;

        function  NeuNumLock(): boolean;
        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;
        procedure NeuePositionBaseMS(oOrgPos: TVorgangPos);
        procedure LoeschePositionBase(nDel: integer);
        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;

Properties

        property  PnPosCnt                     : integer       read nPosCnt     write nPosCnt;
        property  PaPositionen[Index: integer] : TVorgangPos   read GetPosition write SetPosition; // Vorgangspositionen
        property  PcRabGrPers                  : string        read cRabGrPers;

Basis TVorgangPos

Variablen

        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
        cZeit_CMPUID  : String;    //Zum merken von referenzen
        cZeit_Text    : String;    //Zum merken von referenzen
        cZeit_Mitarb  : String;    //Zum merken von referenzen
        dZeit_Date    : TDateTime; //Zum merken von referenzen
        cZeit_NurLei  : String;    //Zum merken von referenzen

        //Rechnung
        cKostst           : String;
        lNeuNum           : Boolean;
        cSysUID           : String;    //SYS_UID

Methoden

        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);

Properties

        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;

Allgemeine Konstanten

    POSTYP_POS =  '0'; //Artikel/Leistung Position
    POSTYP_TXT =  '1'; //Text
    POSTYP_ELN =  '2'; //Leerzeile (empty line)
    POSTYP_ZWS =  '3'; //Zwischensumme
    POSTYP_TIS =  '4'; //Titelsumme
    POSTYP_TIT =  '7'; //Titel
    POSTYP_GEW =  '8'; //Gewerk
    POSTYP_PBR = '17'; //Seitenumbruch (Pagebreak)
    POSTYP_PIC = '19'; //Bildposition

Allgemeine Funktionen

function IstVKVorgang(cMainTable: string): boolean;
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;