<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25" zv="Cache for Windows (x86-64) 2011.1.2 (Build 701U)" ts="2011-12-06 08:27:39">
<Class name="DBFaktEK.AF.BestellungsKopfAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61695,32758.474298</TimeCreated>

<Query name="ListeByMandantNachDatumLaufend">
<Description>
Query ListeByMandantNachDatumLaufend(MandantOid As %String, vonDatum AS %Date, bisDatum AS %Date) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,bisBestellungsstatus:%Integer,selOid:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0
			AND (:selOid = "" OR Adresse->Adresse->FreieSelektion1->ID = :selOid)
			AND Bestellungsdatum >= :vonDatum AND Bestellungsdatum <= :bisDatum AND
			Bestellungsstatus <= :bisBestellungsstatus
			ORDER BY Bestellungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellByMandantLaufend">
<Description>
Query GetAdrBestellungenLaufend(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse As Kreditor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 ORDER BY Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellnByMandant">
<Description>
Query GetAdrBestellungen(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse As Kreditor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid
			ORDER BY Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellByMandLaufendSpez">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse As Adresse,BestellungsNr, Bestellungsdatum,
	        Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Bestellungsdatum >= current_date
			AND NVL(Verbucht,0) = 0 ORDER BY BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellByKreditorLaufend">
<Description>
Query GetBestellungenLaufend(MandantOid As %String, KreditorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,KreditorOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Adresse = :KreditorOid
			AND NVL(Verbucht,0) = 0 ORDER BY Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellByKreditor">
<Description>
Query GetBestellungen(MandantOid As %String, KreditorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,KreditorOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Adresse = :KreditorOid
			ORDER BY  NVL(Verbucht,0), Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellByAdressNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AdressNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			ORDER BY Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellungenByKurzname">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Kurzname LIKE :Kurzname
			ORDER BY Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeMwstByCodes">
<Type>%SQLQuery</Type>
<FormalSpec>BestellungOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, Bestellungskopf->Mandant, :Lang, Bestellungskopf->Annahmedatum)  AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst->ID, Bestellungskopf->Mandant, :Lang, Bestellungskopf->Annahmedatum)  AS MwstBezFakt,			
			MwstSatz, 
			SUM(Nettobetrag2MwstbetragEW) AS MwstBetrag, 
			SUM(Nettobetrag2ExklMwstEW) AS MwstBetragExkl,
			SUM(Nettobetrag2MwstbetragFW) AS MwstBetragFW, 
			SUM(Nettobetrag2ExklMwstFW) AS MwstBetragExklFW, 
			Mwst->SteuerungInklExkl AS SteuerungInklExkl
	FROM DBFaktEK.Bestellungspos
	WHERE Bestellungskopf = :BestellungOid AND Mwst IS NOT NULL  
	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeMwstByCodesVerbuchung">
<Type>%SQLQuery</Type>
<FormalSpec>ArNr:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, Bestellungskopf->Mandant, :Lang, Bestellungskopf->Annahmedatum) AS MwstBez,
			MwstSatz, 
			SUM(Nettobetrag2MwstbetragEW) AS MwstBetrag, 
			SUM(Nettobetrag2ExklMwstEW) AS MwstBetragExkl,
			SUM(Nettobetrag2MwstbetragFW) AS MwstBetragFW, 
			SUM(Nettobetrag2ExklMwstFW) AS MwstBetragExklFW
	FROM DBFaktEK.Bestellungspos
	WHERE Bestellungskopf->AbrechnungsNr = :ArNr AND
			Bestellungskopf->StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1) AND
			Bestellungskopf->Mandant = :MandantOid AND
			Nettobetrag2MwstbetragEW <> 0 AND
			Mwst IS NOT NULL 
	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeByBestellung">
<Type>%SQLQuery</Type>
<FormalSpec>BestellungsOid:%String,firstVorname:%Boolean,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT
                   ID,
                   Adresse->Adresse                                                                        AS "LAdresse.ID",
                   Adresse->Adresse->Adressnummer                    AS "LAdresse.Adressnummer", 
                   Adresse->Adresse->AdressNrAlt       AS "LAdresse.AdressnummerAlt",
                   Anrede                                               AS "LAdresse.Anrede", 
                   Name                                   AS "LAdresse.Name", 
                   Adresszeile1      AS "LAdresse.Adresszeile1", 
                   Adresszeile2      AS "LAdresse.Adresszeile2", 
                   Adresszeile3      AS "LAdresse.Adresszeile3", 
                   Plz                                                         AS "LAdresse.Plz", 
                   PlzZusatz                            AS "LAdresse.PlzZusatz", 
                   Ort                                        AS "LAdresse.Ort", 
                   BestellungsNr, 
                   Bestellungsdatum,
                   Bestellungsstatus, 
                   BestellNr, 
                   DBFakturierung_SD.Hilfstexte_GetTextClass(Bestellart, Mandant, :Lang) as Bestellart, 
                   Besteller, 
                   BetragEWExklMwst, 
                   BetragEWInklMwst, 
                   BetragFWExklMwst, 
                   BetragFWInklMwst, 
                   BetragMwstFW, 
                   BetragMwst, 
                   BruttoGewinn, 
                   CodeMwst, 
                   Gebietscode, 
                   GewichtBrutto, 
                   GewichtNetto, 
                   GewichtTara, 
                   Fusstext, 
                   Fusstext1, 
                   Fusstext2, 
                   Fusstext3, 
                   Fusstext4, 
                   Kurs, 
                   Kurseinheit, 
                   Lieferart->PositionsNr AS "Lieferart.Nr", 
                   DBFakturierung_SD.Hilfstexte_GetTextClass(Lieferart, Mandant, :Lang) AS "Lieferart.Text", 
                   Annahmedatum, 
                   AnnahmescheinNr, 
                   Lieferzeit, 
                   RabattProzent, 
                   AbrechnungsNr, 
                   Abrechnungsdatum, 
                   Referenz, 
                   Sachbearbeiter->Benutzer->Benutzername AS SachbearbeiterBenutzername, 
                   Sachbearbeiter->Name AS SachbearbeiterName, 
                   Sachbearbeiter->Nummer AS SachbearbeiterNr, 
                   Sachbearbeiter->Vorname AS SachbearbeiterVorname, 
                   Skonto, 
                   StatusAutoVerarbeitung, 
                   BearbeitungsstatusBZ, 
                   BearbeitungsstatusAS, 
                   BearbeitungsstatusOA, 
                   BearbeitungsstatusAR, 
                   BearbeitungsstatusBE, 
                   TotalMitGebinde, 
                   TotalMitGebindeFW,
                   Vertreter, 
                   Waehrung, 
                   Warenaufwand, 
                   
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->Adressnummer ELSE Zahladresse->Adresse->Adressnummer END AS "RAdresse.Adressnummer", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Anrede ELSE Zahladresse->Adresse->Anrede END AS "RAdresse.Anrede", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Name ELSE DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, :firstVorname) END AS "RAdresse.Name", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresszeile1 ELSE DBAdressen.Adresse_GetZusatz1(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->VornameZusatz1) END AS "RAdresse.Adresszeile1", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresszeile2 ELSE Zahladresse->Adresse->Zusatz2 END AS "RAdresse.Adresszeile2", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresszeile3 ELSE Zahladresse->Adresse->Strasse || ' ' || NVL(Zahladresse->Adresse->Hausnummer,'') END AS "RAdresse.Adresszeile3", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Plz ELSE Zahladresse->Adresse->Plz END AS "RAdresse.Plz", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   PlzZusatz ELSE Zahladresse->Adresse->PlzInklZusatz END AS "RAdresse.PlzZusatz", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Ort ELSE Zahladresse->Adresse->Ort END AS "RAdresse.Ort", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   0 ELSE Zahladresse->Adresse->Adresscode END AS "RAdresse.Adresscode",
                                   
                   CASE
                                   WHEN   (Zahladresse->Adresse->Anrede LIKE Anrede AND
                                                                  DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, :firstVorname) LIKE Name AND
                                                                  NVL(DBAdressen.Adresse_GetZusatz1(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->VornameZusatz1),'') LIKE NVL(Adresszeile1,'') AND
                                                                  Zahladresse->Adresse->Zusatz2 LIKE Adresszeile2 AND
                                                                  ((Zahladresse->Adresse->Strasse LIKE Adresszeile3) OR (Zahladresse->Adresse->Strasse ||' '|| NVL(Zahladresse->Adresse->Hausnummer,'') LIKE NVL(Adresszeile3,''))) AND
                                                                  Zahladresse->Adresse->Plz LIKE Plz AND
                                                                  Zahladresse->Adresse->Ort LIKE Ort)
                                                                  OR UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%')
                                                   THEN
                                                                  CONVERT(BIT,1)
                                   ELSE
                                                                  CONVERT(BIT,0)
                   END AS AdressenEqual,
                                                                  
                   Zahlungskondition, 
                   Zahlungskondition->Code AS "ZahlungskonditionCode",
                   DBDebiKredi_SD.DZahlungskond_GetBezeichnungClass(Zahlungskondition, Mandant, :Lang) As "ZahlungskonditionText",
                   Verbucht,
                   (Select MWSTNR FROM DBDebiKredi.Kreditor AS k WHERE k.Adresse = a.Zahladresse->Adresse) AS "RAdresse.MwstNr"
    FROM DBFaktEK.Bestellungskopf AS a
    WHERE %ID=:BestellungsOid]]></SqlQuery>
</Query>

<Query name="ListeVerbuchung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Sum(TotalMitGebinde) As TotalMitGebinde, 
			Sum(Skonto) As Skonto,
			Sum(BetragEWInklMwst) As BetragEWInklMwst,
			Sum(TotalMitGebindeFW) As TotalMitGebindeFW, 
			Sum(SkontoFW) As SkontoFW,
			Sum(BetragFWInklMwst) As BetragFWInklMwst,
			Abrechnungsdatum, 
			AbrechnungsNr, 
			Waehrung,
			Kurs,
			Kurseinheit As Faktor,
			Zahladresse->Adresse->Kundenkategorie As Kundenkategorie,
			Zahladresse->FibuKonto As KrediKonto,
			Zahlungskondition,
			Zahladresse->Adresse->Adressnummer As Adressnummer,
			DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, 0) As Name,
			Zahladresse->Adresse->Plz As Plz,
			Zahladresse->Adresse->Ort As Ort
	FROM DBFaktEK.Bestellungskopf 
	WHERE Mandant = :MandantOid AND
			NVL(Verbucht,0) = 0 AND
			StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
			AbrechnungsNr>=:vonArNr AND
			AbrechnungsNr<=:bisArNr AND
			Abrechnungsdatum>={d :vonArDatum} AND
			Abrechnungsdatum<={d :bisArDatum} AND
			(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid)
	GROUP BY AbrechnungsNr
	ORDER BY AbrechnungsNr]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungArtikelOhneKtoEK">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Artikel,
			Artikel->ArtikelNr As ArtikelNr
	FROM DBFaktEK.Bestellungspos 
	WHERE Bestellungskopf->Mandant = :MandantOid AND
			NVL(Bestellungskopf->Verbucht,0) = 0 AND
			Bestellungskopf->StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1) AND
			Bestellungskopf->AbrechnungsNr>=:vonArNr AND
			Bestellungskopf->AbrechnungsNr<=:bisArNr AND
			Bestellungskopf->Abrechnungsdatum>={d :vonArDatum} AND
			Bestellungskopf->Abrechnungsdatum<={d :bisArDatum} AND
			NVL(Artikelcode, 0) <> 8 AND 
			(NVL(Artikelcode, 0) < 10 OR NVL(Artikelcode, 0) = 21 OR NVL(Artikelcode, 0) = 23) AND 
			(:nurBarzahlungen <> 1 OR Bestellungskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
			Artikel->FibuKontoEK IS NULL]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungOhneKonti">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Zahladresse As Kreditor,
			Zahladresse->Adresse->Adressnummer As Adressnummer
	FROM DBFaktEK.Bestellungskopf 
	WHERE Mandant = :MandantOid AND
			NVL(Verbucht,0) = 0 AND
			StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
			AbrechnungsNr>=:vonArNr AND
			AbrechnungsNr<=:bisArNr AND
			Abrechnungsdatum>={d :vonArDatum} AND
			Abrechnungsdatum<={d :bisArDatum} AND
			(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
			Zahladresse->FibuKonto IS NULL]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskonto:%String,nurBarzahlungen:%Boolean,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,druckAbJnr:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Bestellungskopf->ID As "Bestellungskopf.ID",
			Bestellungskopf->AbrechnungsNr As "Bestellungskopf.AbrechnungsNr", 
			Bestellungskopf->BestellungsNr As "Bestellungskopf.BestellungsNr",
			Bestellungskopf->Abrechnungsdatum As "Bestellungskopf.Abrechnungsdatum",
			Bestellungskopf->Zahladresse->Adresse->Adressnummer As "Bestellungskopf.Zahladresse.Adresse.Adressnummer",
			Bestellungskopf->Zahladresse->Adresse->Name As "Bestellungskopf.Zahladresse.Adresse.Name",
			Bestellungskopf->Zahladresse->Adresse->Plz As "Bestellungskopf.Zahladresse.Adresse.Plz",
			Bestellungskopf->Zahladresse->Adresse->Ort As "Bestellungskopf.Zahladresse.Adresse.Ort",
			Bestellungskopf->Waehrung->FWCode As "Bestellungskopf.Waehrung.Code",
			Bestellungskopf->Waehrung->ISOSWIFTCode As "Bestellungskopf.Waehrung.ISOSWIFTCode",
			Bestellungskopf->Waehrung->Waehrung As "Bestellungskopf.Waehrung.Waehrung",
			Bestellungskopf->Zahladresse->Adresse->Kundenkategorie As Kundenkategorie,
			CASE
				WHEN Bestellungskopf->Zahlungskondition=:barzahlungsZahlungskondOid THEN
					:barzahlungskonto
					
				WHEN ((Bestellungskopf->Zahlungskondition->Code >= 40) AND (Bestellungskopf->Zahlungskondition->Code <= 49)) THEN
					Bestellungskopf->Zahlungskondition->FibuKonto->KontoNr
				ELSE
					Bestellungskopf->Zahladresse->FibuKonto->KontoNr
			END As "Bestellungskopf.Zahladresse.KrediKonto",
			
			Bestellungskopf->CodeMwst As "Bestellungskopf.CodeMwst",
			Bestellungskopf->BetragEWExklMwst As "Bestellungskopf.Warenwert",
			Bestellungskopf->Skonto As "Bestellungskopf.Skonto",
			Bestellungskopf->BetragMwst As "Bestellungskopf.BetragMwst",
			Bestellungskopf->BetragFWInklMwst As "Bestellungskopf.BetragFW",
			Bestellungskopf->TotalMitGebinde As "Bestellungskopf.TotalMitGebinde",
			
			Artikel->ArtikelNr As "Artikel.ArtikelNr",
			
			Artikel->FibuKontoVK->KontoNr AS "Artikel.FibuKonto",
			
			DetailText,
			Menge,
			Mengeneinheit->PositionsNr As "Mengeneinheit.Code",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, :MandantOid, :lang) AS "Mengeneinheit.Text", 
			Nettobetrag2ExklMwstEW As BetragExklMwst,
			Nettobetrag2InklMwstEW As BetragInklMwst,
			Nettobetrag2InklMwstFW As BetragInklMwstFw,
			Mwst->MwstCode As "Mwst.MwstCode",
			MwstSatz
			
	FROM DBFaktEK.Bestellungspos 
	WHERE Bestellungskopf->Mandant = :MandantOid AND
			NVL(Artikelcode, 0) <> 8 AND 
			(NVL(Artikelcode, 0) < 10 OR NVL(Artikelcode, 0) = 21 OR NVL(Artikelcode, 0) = 23) AND
			((:druckAbJnr=1 AND Bestellungskopf->VerbuchungsjournalNr=:jnr) OR
			(:druckAbJnr=0 AND NVL(Bestellungskopf->Verbucht,0) = 0 AND
			Bestellungskopf->AbrechnungsNr>=:vonArNr AND
			Bestellungskopf->AbrechnungsNr<=:bisArNr AND
			Bestellungskopf->Abrechnungsdatum>={d :vonArDatum} AND
			Bestellungskopf->Abrechnungsdatum<={d :bisArDatum} AND
			Bestellungskopf->StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1) AND
			(:nurBarzahlungen <> 1 OR Bestellungskopf->Zahlungskondition = :barzahlungsZahlungskondOid)))
	ORDER BY Bestellungskopf->AbrechnungsNr, PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungMwst">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,nurBarzahlungen:%Boolean,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,druckAbJnr:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[		SELECT Mwst As "Mwst.ID",
				Mwst->MwstCode As "Mwst.MwstCode",
				DBFibu_SD.Mwst_GetBezeichnungClass(Mwst, :MandantOid, :lang, Bestellungskopf->Annahmedatum) AS "Mwst.Bezeichnung", 
				{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFibuClass(Mwst, Bestellungskopf->Annahmedatum), SQL_DOUBLE)} As "Mwst.MwstSatzFibu",
				SUM(Nettobetrag2ExklMwstEW) As BetragExklMwst,
				SUM(Nettobetrag2MwstbetragEW) As MwstBetrag,
				SUM(Nettobetrag2InklMwstEW) As BetragInklMwst
		FROM DBFaktEK.Bestellungspos 
		WHERE Bestellungskopf->Mandant = :MandantOid AND
				NVL(Artikelcode, 0) <> 8 AND 
				(NVL(Artikelcode, 0) < 10 OR NVL(Artikelcode, 0) = 21 OR NVL(Artikelcode, 0) = 23) AND
				((:druckAbJnr=1 AND Bestellungskopf->VerbuchungsjournalNr=:jnr) OR
				(:druckAbJnr=0 AND NVL(Bestellungskopf->Verbucht,0) = 0 AND
				Bestellungskopf->AbrechnungsNr>=:vonArNr AND
				Bestellungskopf->AbrechnungsNr<=:bisArNr AND
				Bestellungskopf->Abrechnungsdatum>={d :vonArDatum} AND
				Bestellungskopf->Abrechnungsdatum<={d :bisArDatum} AND
				Bestellungskopf->StatusAutoVerarbeitung < 3 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1) AND
				(:nurBarzahlungen <> 1 OR Bestellungskopf->Zahlungskondition = :barzahlungsZahlungskondOid)))
				GROUP BY Mwst]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungFibuJ">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MandJahrOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskonto:%String,skontokonto:%String,nurBarzahlungen:%Boolean,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,druckAbJnr:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT "Konto.KontoNr", 
			"Konto.Bezeichnung", 
			"Konto.Soll",
			"Mwst.MwstCode",
			"Mwst.MwstSatzFibu",
			SUM(BetragExklMwst) As BetragExklMwst,
			SUM(MwstBetrag) As MwstBetrag,
			SUM(BetragInklMwst) As BetragInklMwst
	FROM (
			SELECT 
					Artikel->FibuKontoVK->KontoNr As "Konto.KontoNr",
			
					DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Artikel->FibuKontoVK) AS "Konto.Bezeichnung",
			
					DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) As "Konto.Soll",
					
						CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2ExklMwstEW
								ELSE
									Nettobetrag2ExklMwstEW
							END
						As BetragExklMwst,
					
						CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2MwstbetragEW
								ELSE
									Nettobetrag2MwstbetragEW
							END
						As MwstBetrag,
					
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2InklMwstEW
								ELSE
									Nettobetrag2InklMwstEW
							END
						 As BetragInklMwst,
					
					Mwst->MwstCode As "Mwst.MwstCode",
					{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFibuClass(Mwst, Bestellungskopf->Annahmedatum), SQL_DOUBLE)} As "Mwst.MwstSatzFibu"
			
			FROM DBFaktEK.Bestellungspos 
			WHERE Bestellungskopf->Mandant = :MandantOid AND
					NVL(Artikelcode, 0) <> 8 AND 
					(NVL(Artikelcode, 0) < 10 OR NVL(Artikelcode, 0) = 21 OR NVL(Artikelcode, 0) = 23) AND
					((:druckAbJnr=1 AND Bestellungskopf->VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Bestellungskopf->Verbucht,0) = 0 AND
					Bestellungskopf->AbrechnungsNr>=:vonArNr AND
					Bestellungskopf->AbrechnungsNr<=:bisArNr AND
					Bestellungskopf->Abrechnungsdatum>={d :vonArDatum} AND
					Bestellungskopf->Abrechnungsdatum<={d :bisArDatum} AND
					Bestellungskopf->StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Bestellungskopf->Zahlungskondition = :barzahlungsZahlungskondOid)))

					
			UNION ALL SELECT 
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							:barzahlungskonto						
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							Zahlungskondition->FibuKonto->KontoNr
						ELSE
							Zahladresse->FibuKonto->KontoNr
					END As "Konto.KontoNr",
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							(SELECT KontoBezeichnung FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskonto AND MandantJahr=:MandJahrOid)
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Zahlungskondition->FibuKonto)
						ELSE
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Zahladresse->FibuKonto)
					END As "Konto.Bezeichnung",
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							(SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskonto AND MandantJahr=:MandJahrOid)
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto)
						ELSE
							DBFibu.Konto_GetSollClass(:MandJahrOid, Zahladresse->FibuKonto)
					END As "Konto.Soll",
					
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
									CASE 
										WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskonto AND MandantJahr=:MandJahrOid) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
									END
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahladresse->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
					END As "BetragExklMwst",
					
					0,
					
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE 
								WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskonto AND MandantJahr=:MandJahrOid) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
								END	
							
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahladresse->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
					END As "BetragInklMwst",
					
					0 As "Mwst.MwstCode",
					0 As "Mwst.MwstSatzFibu"
			
			FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					AbrechnungsNr>=:vonArNr AND
					AbrechnungsNr<=:bisArNr AND
					Abrechnungsdatum>={d :vonArDatum} AND
					Abrechnungsdatum<={d :bisArDatum} AND
					StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid)))

			UNION ALL SELECT 
					:skontokontoKredi As "Konto.KontoNr",
					
					(SELECT KontoBezeichnung FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) As "Konto.Bezeichnung",
					
					(SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) As "Konto.Soll",
					
					CASE 
						WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) = 1 THEN
							Skonto
						ELSE
							(-1)*Skonto
					END As "BetragExklMwst",
					
					0,
					
					CASE 
						WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) = 1 THEN
							Skonto
						ELSE
							(-1)*Skonto
					END As "BetragInklMwst",
					
					0 As "Mwst.MwstCode",
					0 As "Mwst.MwstSatzFibu"
			
			FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND
					Skonto<>0 AND 
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					AbrechnungsNr>=:vonArNr AND
					AbrechnungsNr<=:bisArNr AND
					Abrechnungsdatum>={d :vonArDatum} AND
					Abrechnungsdatum<={d :bisArDatum} AND
					StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid)))

			)
	GROUP BY "Konto.KontoNr", "Mwst.MwstCode", "Mwst.MwstSatzFibu"
	HAVING BetragExklMwst <> 0 OR MwstBetrag <> 0 OR BetragInklMwst <> 0
	ORDER BY "Konto.KontoNr", "Mwst.MwstCode"]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungsjnr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT VerbuchungsjournalNr, MAX(Abrechnungsdatum) As Datum 
	FROM DBFaktEK.Bestellungskopf 
	WHERE Mandant=:MandantOid AND 
			VerbuchungsjournalNr IS NOT NULL
	GROUP BY VerbuchungsjournalNr
	ORDER BY VerbuchungsjournalNr</SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungFibu">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskonto:%String,skontokonto:%String,nurBarzahlungen:%Boolean,vonArNr:%Integer,bisArNr:%Integer,vonArDatum:%Date,bisArDatum:%Date,druckAbJnr:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Hauptkonto->KontoNr AS "Konto.KontoNr", 
			Hauptkonto->KontoBezeichnung AS "Konto.Bezeichnung", 
			Hauptkonto->Soll AS "Konto.Soll",
			Mwst->MwstCode AS "Mwst.MwstCode",
			MwstSatz AS "Mwst.MwstSatzFibu",
			SUM(BuchungsbetragSH-MwstbetragSHnachHauptkonto) As BetragExklMwst,
			SUM(MwstbetragSHnachHauptkonto) As MwstBetrag,
			SUM(BuchungsbetragSH) As BetragInklMwst
	FROM DBFibu.Teilbuchung
	WHERE Buchung IN
		(
		SELECT OP->FibuBuchung FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					AbrechnungsNr>=:vonArNr AND
					AbrechnungsNr<=:bisArNr AND
					Abrechnungsdatum>={d :vonArDatum} AND
					Abrechnungsdatum<={d :bisArDatum} AND
					StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid)))
		)
	GROUP BY Hauptkonto->KontoNr, Mwst, MwstSatz
	ORDER BY Hauptkonto->KontoNr, Mwst, MwstSatz]]></SqlQuery>
</Query>

<Query name="ListeSammelrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,bisArDatum:%Date,vonBestellungsstatus:%Integer,bisBestellungsstatus:%Integer,zahladrKrediOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID 
	FROM DBFaktEK.Bestellungskopf 
	WHERE Mandant=:MandantOid AND 
			Bestellungsstatus >= :vonBestellungsstatus AND
			Bestellungsstatus <= :bisBestellungsstatus AND
			((Annahmedatum is NULL AND Bestellungsdatum<={d :bisArDatum}) OR
			(Annahmedatum is NOT NULL AND Annahmedatum<={d :bisArDatum})) AND
			Zahladresse=:zahladrKrediOid]]></SqlQuery>
</Query>

<Query name="ListeSammelrechnungWiederholung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID 
	FROM DBFaktEK.Bestellungskopf 
	WHERE Mandant=:MandantOid AND AbrechnungsNr = :ArNr</SqlQuery>
</Query>

<Query name="ListeMwstByCodesSammelrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>ArNr:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, Bestellungskopf->Mandant, :Lang, Bestellungskopf->Annahmedatum) AS MwstBez,
			MwstSatz, 
			SUM(Nettobetrag2MwstbetragEW) AS MwstBetrag, 
			SUM(Nettobetrag2ExklMwstEW) AS MwstBetragExkl,
			SUM(Nettobetrag2MwstbetragFW) AS MwstBetragFW, 
			SUM(Nettobetrag2ExklMwstFW) AS MwstBetragExklFW
	FROM DBFaktEK.Bestellungspos
	WHERE Bestellungskopf->AbrechnungsNr=:ArNr AND 
			Bestellungskopf->Mandant=:MandantOid AND
			Mwst IS NOT NULL 
			GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByOid">
<Type>%SQLQuery</Type>
<FormalSpec>Oid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusBZ, BearbeitungsstatusAS, 
	        BearbeitungsstatusOA, BearbeitungsstatusAR, BearbeitungsstatusBE
	 		FROM DBFaktEK.Bestellungskopf
			WHERE %ID = :Oid
			ORDER BY Bestellungsstatus, Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByAdrNrS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AdressNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusBZ, BearbeitungsstatusAS, 
	        BearbeitungsstatusOA, BearbeitungsstatusAR, BearbeitungsstatusBE
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			AND Verbucht = 0
			ORDER BY Bestellungsstatus, Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByKurznameS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusBZ, BearbeitungsstatusAS, 
	        BearbeitungsstatusOA, BearbeitungsstatusAR, BearbeitungsstatusBE
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND { fn LCASE(Adresse->Adresse->Kurzname)} LIKE { fn LCASE(:Kurzname_'%')}
			AND Verbucht = 0
			ORDER BY Bestellungsstatus, Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByAdrNrL">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AdressNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusBZ, BearbeitungsstatusAS, 
	        BearbeitungsstatusOA, BearbeitungsstatusAR, BearbeitungsstatusBE
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			ORDER BY Bestellungsstatus, Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByKurznameL">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Abrechnungsdatum, Annahmedatum, Bestellungsdatum,
	        Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusBZ, BearbeitungsstatusAS, 
	        BearbeitungsstatusOA, BearbeitungsstatusAR, BearbeitungsstatusBE
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid AND { fn LCASE(Adresse->Adresse->Kurzname)} LIKE { fn LCASE(:Kurzname_'%')}
			ORDER BY Bestellungsstatus, Abrechnungsdatum DESC, BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellungenSeriendruck">
<Type>%SQLQuery</Type>
<FormalSpec>vonNummer:%Integer,bisNummer:%Integer,vonDatum:%Date,bisDatum:%Date,sachbearbeiterNr:%Integer,auftragsstatus:%Integer,statusAutoVerarbeitung:%Integer,mutierte:%Integer,MandantOid:%String,stufengleich:%Integer,auftragsstatusRG:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusBZ) as BZGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusAS) as ASGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusOA) as OAGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusAR) as ARGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusBE) as BEGedruckt
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid 
			AND Bestellungsdatum BETWEEN {d :vonDatum} AND {d :bisDatum}
			AND BestellungsNr BETWEEN :vonNummer AND :bisNummer
			AND ((:stufengleich = 1 AND Bestellungsstatus < :auftragsstatusRG) OR Bestellungsstatus < :auftragsstatus OR (:mutierte = 1 AND Bestellungsstatus = :auftragsstatus))
			AND (:sachbearbeiterNr = 0 OR Sachbearbeiter->Nummer = :sachbearbeiterNr)
			AND (:statusAutoVerarbeitung = 0 OR StatusAutoVerarbeitung = :statusAutoVerarbeitung)
			AND NVL(Verbucht,0) = 0 
			ORDER BY BestellungsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeBestellungenSerienSortName">
<Type>%SQLQuery</Type>
<FormalSpec>vonNummer:%Integer,bisNummer:%Integer,vonDatum:%Date,bisDatum:%Date,sachbearbeiterNr:%Integer,auftragsstatus:%Integer,statusAutoVerarbeitung:%Integer,mutierte:%Integer,MandantOid:%String,stufengleich:%Integer,auftragsstatusRG:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusBZ) as BZGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusAS) as ASGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusOA) as OAGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusAR) as ARGedruckt,  
			DBFaktEK.BestellungsKopf_IsStatusGedruckt(BearbeitungsstatusBE) as BEGedruckt
	 		FROM DBFaktEK.Bestellungskopf
			WHERE Mandant = :MandantOid 
			AND Bestellungsdatum BETWEEN {d :vonDatum} AND {d :bisDatum}
			AND BestellungsNr BETWEEN :vonNummer AND :bisNummer
			AND ((:stufengleich = 1 AND Bestellungsstatus < :auftragsstatusRG) OR Bestellungsstatus < :auftragsstatus OR (:mutierte = 1 AND Bestellungsstatus = :auftragsstatus))
			AND (:sachbearbeiterNr = 0 OR Sachbearbeiter->Nummer = :sachbearbeiterNr)
			AND (:statusAutoVerarbeitung = 0 OR StatusAutoVerarbeitung = :statusAutoVerarbeitung)
			AND NVL(Verbucht,0) = 0 
			ORDER BY ZahlAdresse->Adresse->Name, ZahlAdresse->Adresse->VornameZusatz1]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.BestellungspositionAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61695,32768.938499</TimeCreated>

<Query name="ListeByBestellung">
<Type>%SQLQuery</Type>
<FormalSpec>Bestellung:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Artikelcode,
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS Artikeltext,
		Artikelcode, 
		Artikel->DezFormatMenge As FormatMenge, 
		Artikel->DezFormatPreis As FormatPreis,
		BestellNr, 
		PositionsNr, 
		BestellteMenge, 
		BetragExklMwst, 
		BetragExklMwstFW, 
		BetragInklMwstFW, 
		BetragInklMwst, 
		DetailText,
		DetailText2,
		GewichtBrutto, 
		GewichtNetto,
		GewichtTara,
		Herkunft, 
		Lagerstatus, 
		Annahmedatum, 
		Menge,  
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		MwstBetrag, 
		MwstBetragFW, 
		MwstSatz, 
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW, 
		DetailPreis,
		CASE WHEN Artikelcode = DBFaktEK.Konst_AcSeitenumbruch() THEN 1 ELSE 0 END AS Seitenumbruch,
	    RabattBetrag,	
		RabattProzent, 
		Bestellungskopf,
		MargeProzent
		FROM DBFaktEK.Bestellungspos 
	    WHERE Bestellungskopf = :Bestellung
	    ORDER BY Bestellungspos.PositionsNr, ZusatztextID]]></SqlQuery>
</Query>

<Query name="ListeByBestellungDruck">
<Type>%SQLQuery</Type>
<FormalSpec>Bestellung:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Artikelcode,
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		Artikel->DezFormatMenge As "Artikel.FormatMenge", 
		Artikel->DezFormatPreis As "Artikel.FormatPreis",
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikelcode, 
		BestellNr, 
		PositionsNr, 
		BestellteMenge,  
		BetragExklMwst, 
		BetragExklMwstFW, 
		BetragInklMwstFW, 
		BetragInklMwst, 
		DetailText,
		DetailText2, 
		GewichtBrutto, 
		GewichtNetto,
		GewichtTara, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, Bestellungskopf->Mandant, :Lang) As "Herkunft.Text",
		Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
		Lagerstatus, 
		Annahmedatum, 
		Menge,  
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		MwstBetrag, 
		MwstBetragFW, 
		MwstSatz, 
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		RabattBetrag,	
		RabattProzent, 
		Bestellungskopf,
		MargeProzent,
		CASE WHEN Artikelcode = DBFaktEK.Konst_AcSeitenumbruch() THEN 1 ELSE 0 END AS Seitenumbruch
		FROM DBFaktEK.Bestellungspos 
	    WHERE Bestellungskopf = :Bestellung
	    ORDER BY Bestellungspos.PositionsNr, ZusatztextID]]></SqlQuery>
</Query>

<Query name="ListeLagerNichtNachgefuehrt">
<Type>%SQLQuery</Type>
<FormalSpec>Bestellung:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID AS ID FROM DBFaktEK.Bestellungspos 
	WHERE Bestellungskopf = :Bestellung AND Artikel->LagerAktiv=1 AND NVL(Lagerstatus,0)<>2
	ORDER BY Bestellungspos.PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeVerbFibu">
<Type>%SQLQuery</Type>
<FormalSpec>ArNr:%Integer,MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
			FibuKonto,
			Mwst,
			MwstSatz,
			SUM(BetragExklMwst) As BetragExklMwst,
			SUM(MwstBetrag) As MwstBetrag,
			SUM(BetragExklMwstFW) As BetragExklMwstFW,
			SUM(MwstBetragFW) As MwstBetragFW
	FROM (			
			SELECT 
					Artikel->FibuKontoVK As FibuKonto,
					Mwst, 
					MwstSatz, 
					Nettobetrag2ExklMwstEW As BetragExklMwst, 
					Nettobetrag2MwstbetragEW As MwstBetrag,
					Nettobetrag2ExklMwstFW As BetragExklMwstFW, 
					Nettobetrag2MwstbetragFW As MwstBetragFW  
			FROM DBFaktEK.Bestellungspos 
			WHERE Bestellungskopf->AbrechnungsNr=:ArNr AND 
					Bestellungskopf->Mandant=:MandantOid AND
					NVL(Artikelcode, 0) <> 8 AND 
					(NVL(Artikelcode, 0) < 10 OR NVL(Artikelcode, 0) = 21)
			)
	GROUP BY FibuKonto, 
			Mwst, 
			MwstSatz]]></SqlQuery>
</Query>

<Query name="ListeBySammelrechnungDruck">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Artikelcode,
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		Artikel->DezFormatMenge As "Artikel.FormatMenge", 
		Artikel->DezFormatPreis As "Artikel.FormatPreis",
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikelcode, 
		BestellNr, 
		PositionsNr, 
		BestellteMenge, 
		BetragExklMwst, 
		BetragExklMwstFW, 
		BetragInklMwstFW, 
		BetragInklMwst, 
		DetailText, 
		DetailText2,
		GewichtBrutto, 
		GewichtNetto,
		GewichtTara, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, Bestellungskopf->Mandant, :Lang) As "Herkunft.Text",
		Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
		Lagerstatus, 
		Annahmedatum, 
		Menge,  
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		MwstBetrag, 
		MwstBetragFW, 
		MwstSatz, 
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		RabattBetrag,	
		RabattProzent, 
		Bestellungskopf,
		MargeProzent,
		
		Bestellungskopf->Adresse 			AS "Bestellungskopf.LAdresse.Adresse", 
		Bestellungskopf->Anrede 			AS "Bestellungskopf.LAdresse.Anrede", 
		Bestellungskopf->Name 				AS "Bestellungskopf.LAdresse.Name", 
		Bestellungskopf->Adresszeile1		AS "Bestellungskopf.LAdresse.Adresszeile1", 
		Bestellungskopf->Adresszeile2 		AS "Bestellungskopf.LAdresse.Adresszeile2", 
		Bestellungskopf->Adresszeile3 		AS "Bestellungskopf.LAdresse.Adresszeile3", 
		Bestellungskopf->Plz				AS "Bestellungskopf.LAdresse.Plz", 
		Bestellungskopf->PlzZusatz 		AS "Bestellungskopf.LAdresse.PlzZusatz", 
		Bestellungskopf->Ort 				AS "Bestellungskopf.LAdresse.Ort", 
		Bestellungskopf->BestellungsNr  		AS "Bestellungskopf.BestellungsNr",
		Bestellungskopf->Bestellungsdatum  	AS "Bestellungskopf.Bestellungsdatum",
		Bestellungskopf->Bestellungsstatus  	AS "Bestellungskopf.Bestellungsstatus",
		Bestellungskopf->BestellNr  		AS "Bestellungskopf.BestellNr",
		Bestellungskopf->Bestellart  		AS "Bestellungskopf.Bestellart",
		Bestellungskopf->Besteller  		AS "Bestellungskopf.Besteller",
		Bestellungskopf->BetragEWExklMwst  AS "Bestellungskopf.BetragEWExklMwst", 
		Bestellungskopf->BetragEWInklMwst  AS "Bestellungskopf.BetragEWInklMwst",
		Bestellungskopf->BetragFWExklMwst  AS "Bestellungskopf.BetragFWExklMwst",
		Bestellungskopf->BetragFWInklMwst  AS "Bestellungskopf.BetragFWInklMwst",
		Bestellungskopf->BetragMwstFW  	AS "Bestellungskopf.BetragMwstFW",
		Bestellungskopf->BetragMwst  		AS "Bestellungskopf.BetragMwst",
		Bestellungskopf->BruttoGewinn  	AS "Bestellungskopf.BruttoGewinn",
		Bestellungskopf->CodeMwst  		AS "Bestellungskopf.CodeMwst",
		Bestellungskopf->Fusstext  		AS "Bestellungskopf.Fusstext",
		Bestellungskopf->Fusstext1  		AS "Bestellungskopf.Fusstext1",
		Bestellungskopf->Fusstext2  		AS "Bestellungskopf.Fusstext2",
		Bestellungskopf->Fusstext3  		AS "Bestellungskopf.Fusstext3",
		Bestellungskopf->Fusstext4  		AS "Bestellungskopf.Fusstext4",
		Bestellungskopf->Gebietscode  		AS "Bestellungskopf.Gebietscode",
		Bestellungskopf->GewichtBrutto  	AS "Bestellungskopf.GewichtBrutto",
		Bestellungskopf->GewichtNetto  	AS "Bestellungskopf.GewichtNetto",
		Bestellungskopf->GewichtTara 		AS "Bestellungskopf.GewichtTara",
		Bestellungskopf->Kurs  			AS "Bestellungskopf.Kurs",
		Bestellungskopf->Kurseinheit  		AS "Bestellungskopf.Kurseinheit",
		Bestellungskopf->Lieferart->PositionsNr AS "Bestellungskopf.Lieferart.Nr", 
		DBFakturierung_SD.Hilfstexte_GetTextClass(Bestellungskopf->Lieferart, Bestellungskopf->Mandant, :Lang) AS "Bestellungskopf.Lieferart.Text", 
		Bestellungskopf->Annahmedatum  		AS "Bestellungskopf.Annahmedatum",
		Bestellungskopf->AnnahmescheinNr  	AS "Bestellungskopf.AnnahmescheinNr",
		Bestellungskopf->Lieferzeit  		AS "Bestellungskopf.Lieferzeit",
		Bestellungskopf->RabattProzent  	AS "Bestellungskopf.RabattProzent",
		Bestellungskopf->AbrechnungsNr  		AS "Bestellungskopf.AbrechnungsNr",
		Bestellungskopf->Abrechnungsdatum 	AS "Bestellungskopf.Abrechnungsdatum",
		Bestellungskopf->Referenz  		AS "Bestellungskopf.Referenz",
		Bestellungskopf->Sachbearbeiter->Benutzer->Benutzername AS "Bestellungskopf.SachbearbeiterBenutzername",
		Bestellungskopf->Sachbearbeiter->Name	AS "Bestellungskopf.SachbearbeiterName",
		Bestellungskopf->Sachbearbeiter->Nummer  	AS "Bestellungskopf.SachbearbeiterNr",
		Bestellungskopf->Sachbearbeiter->Vorname	AS "Bestellungskopf.SachbearbeiterVorname",
		Bestellungskopf->Skonto  				AS "Bestellungskopf.Skonto",
		Bestellungskopf->StatusAutoVerarbeitung AS "Bestellungskopf.StatusAutoVerarbeitung",
		Bestellungskopf->BearbeitungsstatusBZ 	AS "Bestellungskopf.BearbeitungsstatusBZ",
		Bestellungskopf->BearbeitungsstatusAS 	AS "Bestellungskopf.BearbeitungsstatusAS",
		Bestellungskopf->BearbeitungsstatusOA 	AS "Bestellungskopf.BearbeitungsstatusOA",
		Bestellungskopf->BearbeitungsstatusAR 	AS "Bestellungskopf.BearbeitungsstatusAR",
		Bestellungskopf->BearbeitungsstatusBE 	AS "Bestellungskopf.BearbeitungsstatusBE",
		Bestellungskopf->TotalMitGebinde 	AS "Bestellungskopf.TotalMitGebinde",
		Bestellungskopf->Vertreter 		AS "Bestellungskopf.Vertreter",
		Bestellungskopf->Waehrung 			AS "Bestellungskopf.Waehrung",
		Bestellungskopf->Warenaufwand 		AS "Bestellungskopf.Warenaufwand",
		Bestellungskopf->Zahladresse->Adresse->Adressnummer 	AS "Bestellungskopf.RAdresse.Adressnummer", 
		Bestellungskopf->Zahladresse->Adresse->Anrede 			AS "Bestellungskopf.RAdresse.Anrede",
		DBAdressen.Adresse_GetName(Bestellungskopf->Zahladresse->Adresse->Adresscode, Bestellungskopf->Zahladresse->Adresse->Name, Bestellungskopf->Zahladresse->Adresse->VornameZusatz1, :firstVorname) 
															AS "Bestellungskopf.RAdresse.Name", 
		DBAdressen.Adresse_GetZusatz1(Bestellungskopf->Zahladresse->Adresse->Adresscode, Bestellungskopf->Zahladresse->Adresse->VornameZusatz1) 
															AS "Bestellungskopf.RAdresse.Adresszeile1", 
		Bestellungskopf->Zahladresse->Adresse->Zusatz2	 		AS "Bestellungskopf.RAdresse.Adresszeile2", 
		Bestellungskopf->Zahladresse->Adresse->Strasse	 		AS "Bestellungskopf.RAdresse.Adresszeile3", 
		Bestellungskopf->Zahladresse->Adresse->Plz 			AS "Bestellungskopf.RAdresse.Plz", 
		Bestellungskopf->Zahladresse->Adresse->PlzInklZusatz	AS "Bestellungskopf.RAdresse.PlzZusatz", 
		Bestellungskopf->Zahladresse->Adresse->Ort 			AS "Bestellungskopf.RAdresse.Ort", 
		Bestellungskopf->Zahladresse->Adresse->Adresscode		AS "Bestellungskopf.RAdresse.Adresscode",
		CASE
			WHEN 	Bestellungskopf->Zahladresse->Adresse->Anrede LIKE Bestellungskopf->Anrede AND
					DBAdressen.Adresse_GetName(Bestellungskopf->Zahladresse->Adresse->Adresscode, Bestellungskopf->Zahladresse->Adresse->Name, Bestellungskopf->Zahladresse->Adresse->VornameZusatz1, :firstVorname) LIKE Bestellungskopf->Name AND
					NVL(DBAdressen.Adresse_GetZusatz1(Bestellungskopf->Zahladresse->Adresse->Adresscode, Bestellungskopf->Zahladresse->Adresse->VornameZusatz1),'') LIKE Bestellungskopf->Adresszeile1 AND
					Bestellungskopf->Zahladresse->Adresse->Zusatz2 LIKE Bestellungskopf->Adresszeile2 AND
					Bestellungskopf->Zahladresse->Adresse->Strasse LIKE Bestellungskopf->Adresszeile3 AND
					Bestellungskopf->Zahladresse->Adresse->Plz LIKE Bestellungskopf->Plz AND
					Bestellungskopf->Zahladresse->Adresse->Ort LIKE Bestellungskopf->Ort 
				THEN
					CONVERT(BIT,1)
			ELSE
					CONVERT(BIT,0)
		END AS "Bestellungskopf.AdressenEqual",
					
		Bestellungskopf->Zahlungskondition 		AS "Bestellungskopf.Zahlungskondition",
		Bestellungskopf->Verbucht 					AS "Bestellungskopf.Verbucht"
		
	    FROM DBFaktEK.Bestellungspos 
	    WHERE Bestellungskopf->AbrechnungsNr = :RgNr AND Bestellungskopf->Mandant=:MandantOid  
	    ORDER BY Bestellungskopf->BestellungsNr, Bestellungspos.PositionsNr, ZusatztextID]]></SqlQuery>
</Query>

<Query name="ListeKundeArtikelUmsatz">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,AdresseVon:%Integer,AdresseBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(Betrag) AS Betrag, SUM(Menge) AS Menge, SUM(BetragVorjahr) AS BetragVorjahr, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort"
	FROM (
	SELECT 
		SUM(Nettobetrag2ExklMwstEW) As Betrag,
		SUM(Menge) As Menge,  
		0 As BetragVorjahr,
		0 As MengeVorjahr,
		DBFakturierung_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		
		Bestellungskopf->Adresse->Adresse->Adressnummer 	AS "Adresse.Adressnummer", 
		DBAdressen.Adresse_GetName(Bestellungskopf->Adresse->Adresse->Adresscode, Bestellungskopf->Adresse->Adresse->Name, Bestellungskopf->Adresse->Adresse->VornameZusatz1, 0) 
														AS "Adresse.Name", 
		Bestellungskopf->Adresse->Adresse->Strasse	 		AS "Adresse.Strasse", 
		Bestellungskopf->Adresse->Adresse->Plz 			AS "Adresse.Plz", 
		Bestellungskopf->Adresse->Adresse->Ort 			AS "Adresse.Ort"
		
		
	FROM DBFaktEK.Bestellungspos 
	   	 WHERE Bestellungskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Bestellungskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	    	AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR :ArtikelVon = '')
	    	AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR :ArtGrpVon = 0)
	    	AND ((Bestellungskopf->Annahmedatum between {d :DatumVon} AND {d :DatumBis} AND :OnlyLiefer = 1) or 
	    	(Bestellungskopf->Abrechnungsdatum between {d :DatumVon} AND {d :DatumBis} AND :OnlyLiefer = 0))
	   		AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR    
			DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAR) = 1 OR 
			DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR    
			DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR :OnlyLiefer = 1)
	    	AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAS) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAS) = 1 OR :OnlyLiefer = 0)
	    	AND Artikelcode <> DBFaktEK.Konst_AcArtikelNurText()
	    	AND Bestellungskopf->Mandant=:MandantOid 
	    GROUP BY Bestellungskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	    0 As Betrag,
		0 As Menge,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahr,
		SUM(Menge) As MengeVorjahr,  
		DBFakturierung_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		
		Bestellungskopf->Adresse->Adresse->Adressnummer 	AS "Adresse.Adressnummer", 
		DBAdressen.Adresse_GetName(Bestellungskopf->Adresse->Adresse->Adresscode, Bestellungskopf->Adresse->Adresse->Name, Bestellungskopf->Adresse->Adresse->VornameZusatz1, 0) 
														AS "Adresse.Name", 
		Bestellungskopf->Adresse->Adresse->Strasse	 		AS "Adresse.Strasse", 
		Bestellungskopf->Adresse->Adresse->Plz 			AS "Adresse.Plz", 
		Bestellungskopf->Adresse->Adresse->Ort 			AS "Adresse.Ort"
		
		
	FROM DBFaktEK.Bestellungspos 
	   WHERE Bestellungskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Bestellungskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR :ArtikelVon = '')
	    	AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR :ArtGrpVon = 0)
			AND ((Bestellungskopf->Annahmedatum between {d :DatumVJVon} AND {d :DatumVJBis} AND :OnlyLiefer = 1) or 
	    	(Bestellungskopf->Abrechnungsdatum between {d :DatumVJVon} AND {d :DatumVJBis} AND :OnlyLiefer = 0))
	   		AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAR) = 1 OR 
	    	DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR    
			DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR :OnlyLiefer = 1)
	    	AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAS) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAS) = 1 OR :OnlyLiefer = 0)
	    	AND Artikelcode <> DBFaktEK.Konst_AcArtikelNurText()
	    	AND Bestellungskopf->Mandant=:MandantOid 
	    GROUP BY Bestellungskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr
	)
	GROUP BY "Adresse.Adressnummer", "Artikel.ArtikelNr"
	ORDER BY "Adresse.Adressnummer", "Artikel.ArtikelNr"]]></SqlQuery>
</Query>

<Query name="ListeArtikelUmsatz">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(Betrag) AS Betrag, SUM(Menge) AS Menge, SUM(BetragVorjahr) AS BetragVorjahr, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText"
	FROM (
	SELECT 
		SUM(Nettobetrag2ExklMwstEW) As Betrag,
		SUM(Menge) As Menge,  
		0 As BetragVorjahr,
		0 As MengeVorjahr,
		DBFakturierung_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"		
		
	FROM DBFaktEK.Bestellungspos 
	   	 WHERE  (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR :ArtikelVon = '')
	    	AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR :ArtGrpVon = 0)
	    	AND ((Bestellungskopf->Annahmedatum between {d :DatumVon} AND {d :DatumBis} AND :OnlyLiefer = 1) or 
	    	(Bestellungskopf->Abrechnungsdatum between {d :DatumVon} AND {d :DatumBis} AND :OnlyLiefer = 0))
	   		AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR    
			DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAR) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR    
			DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR :OnlyLiefer = 1)
	    	AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAS) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAS) = 1 OR :OnlyLiefer = 0)
	    	AND Artikelcode <> DBFaktEK.Konst_AcArtikelNurText()
	    	AND Bestellungskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	    0 As Betrag,
		0 As Menge,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahr,
		SUM(Menge) As MengeVorjahr,  
		DBFakturierung_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Bestellungskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Bestellungskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"		
		
	FROM DBFaktEK.Bestellungspos 
	   WHERE (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR :ArtikelVon = '')
	    	AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR :ArtGrpVon = 0)
			AND ((Bestellungskopf->Annahmedatum between {d :DatumVJVon} AND {d :DatumVJBis} AND :OnlyLiefer = 1) or 
	    	(Bestellungskopf->Abrechnungsdatum between {d :DatumVJVon} AND {d :DatumVJBis} AND :OnlyLiefer = 0))
	   		AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAR) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAR) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR    
			DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusBZ) = 1 OR :OnlyLiefer = 1)
	    	AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(Bestellungskopf->BearbeitungsstatusAS) = 1 OR
	    	DBFaktEK.Bestellungskopf_IsStatusMutiert(Bestellungskopf->BearbeitungsstatusAS) = 1 OR :OnlyLiefer = 0)
	    	AND Artikelcode <> DBFaktEK.Konst_AcArtikelNurText()
	    	AND Bestellungskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr
	)
	GROUP BY "Artikel.ArtikelNr"
	ORDER BY "Artikel.ArtikelGrpNr", "Artikel.ArtikelNr"]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.ArtikelcodeDetailAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>62046,37265.069845</TimeCreated>

<Query name="ListeArtikelcodeDetail">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Mandant, Artikelcode
	FROM DBFaktEK_SD.ArtikelcodeDetail
	WHERE Mandant = :MandantOid ORDER BY Artikelcode</SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.DrucktypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61695,32396.461309</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 	%ID, PositionsNr, DBFaktEK_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
			Mandant, 
			DBFaktEK_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFaktEK.Konst_FormularTypOA()) AS FormularOA, 
			DBFaktEK_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFaktEK.Konst_FormularTypBE()) AS FormularBE, 
			DBFaktEK_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFaktEK.Konst_FormularTypAS()) AS FormularAS, 
			DBFaktEK_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFaktEK.Konst_FormularTypAR()) AS FormularAR, 
			DBFaktEK_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFaktEK.Konst_FormularTypBZ()) AS FormularBZ
	FROM DBFaktEK_SD.Drucktyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr AS Nummer, DBFaktEK_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBFaktEK_SD.Drucktyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.FormularAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61695,32555.943372</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Nummer, DBFaktEK_SD.Formular_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant
	FROM DBFaktEK_SD.Formular 
	WHERE Mandant = :MandantOid ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.FusstextAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61695,32573.467255</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[ 
	SELECT %ID, PositionsNr, 
	DBFaktEK_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang) As Text1,
	DBFaktEK_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang) As Text2,
	DBFaktEK_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang) As Text3,
	DBFaktEK_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang) As Text4,
	DBFaktEK_SD.Fusstext_GetText5Class(%ID, :MandantOid, :Lang) As Text5,
	DBFaktEK_SD.Fusstext_GetText6Class(%ID, :MandantOid, :Lang) As Text6,
	DBFaktEK_SD.Fusstext_GetText7Class(%ID, :MandantOid, :Lang) As Text7,
	DBFaktEK_SD.Fusstext_GetText8Class(%ID, :MandantOid, :Lang) As Text8,
	DBFaktEK_SD.Fusstext_GetText9Class(%ID, :MandantOid, :Lang) As Text9,
	DBFaktEK_SD.Fusstext_GetText10Class(%ID, :MandantOid, :Lang) As Text10,
	Mandant
	FROM DBFaktEK_SD.Fusstext
	WHERE Mandant = :MandantOid 
	AND (LENGTH(DBFaktEK_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang)) > 0  
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText5Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText6Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText7Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText8Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText9Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText10Class(%ID, :MandantOid, :Lang)) > 0)
	ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr As Nummer,
	DBFaktEK_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang) As Zeile1,
	DBFaktEK_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang) As Zeile2,
	DBFaktEK_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang) As Zeile3,
	DBFaktEK_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang) As Zeile4,
	Mandant
	FROM DBFaktEK_SD.Fusstext
	WHERE Mandant = :MandantOid 
	AND (LENGTH(DBFaktEK_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang)) > 0  
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang)) > 0
	OR
	LENGTH(DBFaktEK_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang)) > 0)
	ORDER BY PositionsNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.SteuerungBestellungsbearbAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61695,32707.808501</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr, DBFaktEK_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFaktEK_SD.StrgBestellung 
	WHERE Mandant = :MandantOid AND LENGTH(DBFaktEK_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang)) > 0 ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr AS Nummer, DBFaktEK_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBFaktEK_SD.StrgBestellung 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblDataEAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,43042.500327</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>TblKopfOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
			Font_Name, Font_Size, Font_Bold, Font_Italic, Font_Strikeout, Font_Underline, Font_Color,
			Rahmen_AktivLinks, Rahmen_AktivRechts, Rahmen_AktivOben, Rahmen_AktivUnten,
			Rahmen_AbstandLinks, Rahmen_AbstandRechts, Rahmen_AbstandOben, Rahmen_AbstandUnten,
			Rahmen_BreiteLinks, Rahmen_BreiteRechts, Rahmen_BreiteOben, Rahmen_BreiteUnten,
			Format_AnzDezStellen, Format_Einheit, Format_KeineAusgabe, Format_Datum, Format_Totalisieren,
			DBFaktEK_SD.TblDataE_GetFormatTextFallsLeerClass(%ID, :MandantOid, :Lang) As Format_TextFallsLeer
	FROM DBFaktEK_SD.TblDataE 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblFussAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,55232.879992</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Nummer, DBFaktEK_SD.TblFuss_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant
	FROM DBFaktEK_SD.TblFuss 
	WHERE Mandant = :MandantOid ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblFussEAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,55276.375744</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>TblFussOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
			Font_Name, Font_Size, Font_Bold, Font_Italic, Font_Strikeout, Font_Underline, Font_Color,
			DBFaktEK_SD.TblFussE_GetTextClass(%ID, :MandantOid, :Lang) As Text,
			Rahmen_AktivLinks, Rahmen_AktivRechts, Rahmen_AktivOben, Rahmen_AktivUnten,
			Rahmen_AbstandLinks, Rahmen_AbstandRechts, Rahmen_AbstandOben, Rahmen_AbstandUnten,
			Rahmen_BreiteLinks, Rahmen_BreiteRechts, Rahmen_BreiteOben, Rahmen_BreiteUnten, 
			DetailFont_Name, DetailFont_Size, DetailFont_Bold, DetailFont_Italic, DetailFont_Strikeout, DetailFont_Underline, DetailFont_Color,
			DetailRahmen_AktivLinks, DetailRahmen_AktivRechts, DetailRahmen_AktivOben, DetailRahmen_AktivUnten,
			DetailRahmen_AbstandLinks, DetailRahmen_AbstandRechts, DetailRahmen_AbstandOben, DetailRahmen_AbstandUnten,
			DetailRahmen_BreiteLinks, DetailRahmen_BreiteRechts, DetailRahmen_BreiteOben, DetailRahmen_BreiteUnten, 
			TotalFont_Name, TotalFont_Size, TotalFont_Bold, TotalFont_Italic, TotalFont_Strikeout, TotalFont_Underline, TotalFont_Color,
			TotalRahmen_AktivLinks, TotalRahmen_AktivRechts, TotalRahmen_AktivOben, TotalRahmen_AktivUnten,
			TotalRahmen_AbstandLinks, TotalRahmen_AbstandRechts, TotalRahmen_AbstandOben, TotalRahmen_AbstandUnten,
			TotalRahmen_BreiteLinks, TotalRahmen_BreiteRechts, TotalRahmen_BreiteOben, TotalRahmen_BreiteUnten,
			DBFaktEK_SD.TblFussE_GetTotalTextClass(%ID, :MandantOid, :Lang) As TotalText
	FROM DBFaktEK_SD.TblFussE 
	WHERE Tabellenfuss->ID=:TblFussOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblFussSkontoEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,55771.171104</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>TblFussOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
			Font_Name, Font_Size, Font_Bold, Font_Italic, Font_Strikeout, Font_Underline, Font_Color,
			DBFaktEK_SD.TblFussSktE_GetTextClass(%ID, :MandantOid, :Lang) As Text,
			Rahmen_AktivLinks, Rahmen_AktivRechts, Rahmen_AktivOben, Rahmen_AktivUnten,
			Rahmen_AbstandLinks, Rahmen_AbstandRechts, Rahmen_AbstandOben, Rahmen_AbstandUnten,
			Rahmen_BreiteLinks, Rahmen_BreiteRechts, Rahmen_BreiteOben, Rahmen_BreiteUnten
	FROM DBFaktEK_SD.TblFussSktE 
	WHERE Tabellenfuss->ID=:TblFussOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblKopfAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,31272.067577</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Nummer, DBFaktEK_SD.TblKopf_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant
	FROM DBFaktEK_SD.TblKopf 
	WHERE Mandant = :MandantOid ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblKopfEAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,37764.194886</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>TblKopfOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
			Font_Name, Font_Size, Font_Bold, Font_Italic, Font_Strikeout, Font_Underline, Font_Color,
			DBFaktEK_SD.TblKopfE_GetTextClass(%ID, :MandantOid, :Lang) As Text,
			Rahmen_AktivLinks, Rahmen_AktivRechts, Rahmen_AktivOben, Rahmen_AktivUnten,
			Rahmen_AbstandLinks, Rahmen_AbstandRechts, Rahmen_AbstandOben, Rahmen_AbstandUnten,
			Rahmen_BreiteLinks, Rahmen_BreiteRechts, Rahmen_BreiteOben, Rahmen_BreiteUnten
	FROM DBFaktEK_SD.TblKopfE
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblSREntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61719,33119.972009</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>TblKopfOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
			Font_Name, Font_Size, Font_Bold, Font_Italic, Font_Strikeout, Font_Underline, Font_Color,
			DBFaktEK_SD.TblSREntry_GetTextClass(%ID, :MandantOid, :Lang) As Text,
			Rahmen_AktivLinks, Rahmen_AktivRechts, Rahmen_AktivOben, Rahmen_AktivUnten,
			Rahmen_AbstandLinks, Rahmen_AbstandRechts, Rahmen_AbstandOben, Rahmen_AbstandUnten,
			Rahmen_BreiteLinks, Rahmen_BreiteRechts, Rahmen_BreiteOben, Rahmen_BreiteUnten,
			DetailFont_Name, DetailFont_Size, DetailFont_Bold, DetailFont_Italic, DetailFont_Strikeout, DetailFont_Underline, DetailFont_Color,
			DetailRahmen_AktivLinks, DetailRahmen_AktivRechts, DetailRahmen_AktivOben, DetailRahmen_AktivUnten,
			DetailRahmen_AbstandLinks, DetailRahmen_AbstandRechts, DetailRahmen_AbstandOben, DetailRahmen_AbstandUnten,
			DetailRahmen_BreiteLinks, DetailRahmen_BreiteRechts, DetailRahmen_BreiteOben, DetailRahmen_BreiteUnten
	FROM DBFaktEK_SD.TblSREntry 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.SD.TblSRgkEAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32794</TimeChanged>
<TimeCreated>61718,43385.436589</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>TblKopfOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
			Font_Name, Font_Size, Font_Bold, Font_Italic, Font_Strikeout, Font_Underline, Font_Color,
			DBFaktEK_SD.TblSRgkE_GetTextClass(%ID, :MandantOid, :Lang) As Text,
			Rahmen_AktivLinks, Rahmen_AktivRechts, Rahmen_AktivOben, Rahmen_AktivUnten,
			Rahmen_AbstandLinks, Rahmen_AbstandRechts, Rahmen_AbstandOben, Rahmen_AbstandUnten,
			Rahmen_BreiteLinks, Rahmen_BreiteRechts, Rahmen_BreiteOben, Rahmen_BreiteUnten
	FROM DBFaktEK_SD.TblSRgkE 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.AF.WerkzeugPruefungAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62423,61774.598109</TimeChanged>
<TimeCreated>62411,54620.24872</TimeCreated>

<Query name="ListeLsv">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Pruefdatum, Pruefintervall, Freigabe, Freigabedatum,
			Mitarbeiter->Name As "MitarbeiterName", Mitarbeiter->Vorname As "MitarbeiterVorname"
	FROM DBFaktEK.WerkzeugPruefung
	WHERE FaktArtikel = :ArtikelOid
	ORDER BY Freigabedatum DESC, Pruefdatum DESC]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>Mandant:%String,Lang:%String,VonArtikel:%String,BisArtikel:%String,VonPruefdatum:%Date,BisPruefdatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, 
			Pruefdatum, 
			Pruefintervall, 
			Freigabe, 
			Freigabedatum, 
			Mitarbeiter->Name As "Mitarbeiter.Name",
			Mitarbeiter->Vorname As "Mitarbeiter.Vorname",
			FaktArtikel->ArtikelNr As "Artikel.Nr",
			DBFakturierung.Artikel_GetArtikeltextClass(FaktArtikel->ID, :Mandant, :Lang) AS "Artikel.Artikeltext"
	FROM DBFaktEK.Werkzeugpruefung
	WHERE FaktArtikel->Mandant = :Mandant AND FaktArtikel->ArtikelNr BETWEEN :VonArtikel AND :BisArtikel
	AND Pruefdatum BETWEEN :VonPruefdatum AND :BisPruefdatum
	ORDER BY FaktArtikel->ArtikelNr, Freigabedatum DESC, Pruefdatum DESC]]></SqlQuery>
</Query>
</Class>


<Class name="DBFaktEK.BestStrg">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57267.145025</TimeChanged>
<TimeCreated>61689,47541.047455</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="OffertanAnzKopien">
<Description>
Offertan_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="BestellungAnzKopien">
<Description>
Bestellung_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnnahmeAnzKopien">
<Description>
Annahme_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="AbrechnungAnzKopien">
<Description>
Abrechnung_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="Herkunft">
<Description>
Herkunft</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug1">
<Description>
Abzug1</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug1Prozent">
<Description>
Abzung_in_%</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug2">
<Description>
Abzug2</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug2Prozent">
<Description>
Abzung2_in_%</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug3">
<Description>
Abzug3</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug3Prozent">
<Description>
Abzung3_in_%</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug1Text">
<Description>
Abzug1_Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Abzug2Text">
<Description>
Abzug2_Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Abzug3Text">
<Description>
Abzug3_Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GenerierungOPText">
<Description>
Generierung OP-Buchungstext</Description>
<Type>%Integer</Type>
</Property>

<Property name="LieferZeit">
<Description>
LieferZeit</Description>
<Type>%Boolean</Type>
</Property>

<Property name="BarzahlungAnzKopien">
<Description>
Barzahlung_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="BarzahlungSpezEinst">
<Description>
Barzahlung_SpezEinst</Description>
<Type>%Integer</Type>
</Property>

<Property name="EinstellungenMutieren">
<Description>
Einstellungen mutieren</Description>
<Type>%Integer</Type>
</Property>

<Property name="TextOP">
<Description>
Einstellungen mutieren</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug1FibuKonto">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktBestellungsSteuerungAbzug1</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Abzug1FibuKonto"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Abzug2FibuKonto">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktBestellungsSteuerungAbzug2</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Abzug2FibuKonto"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Abzug3FibuKonto">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktBestellungsSteuerungAbzug3</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Abzug3FibuKonto"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="OffertanDrucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ASOffertanDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="OffertanDrucktyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="OffertanFusstext">
<Type>DBFaktEK.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungOffertanFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="BestellungDrucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ASBestellungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="BestellungDrucktyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="BestellungFusstext">
<Type>DBFaktEK.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungBestellungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AnnahmeDrucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ASAnnahmeDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="AnnahmeDrucktyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="AnnahmeFusstext">
<Type>DBFaktEK.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungAnnahmeFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AbrechnungDrucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ASAbrechnungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="AbrechnungDrucktyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="AbrechnungFusstext">
<Type>DBFaktEK.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungAbrechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="BarzahlungDrucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ASBarzahlungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="BarzahlungDrucktyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="BarzahlungFusstext">
<Type>DBFaktEK.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungBarzahlungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="IsAuftragDatumInaktiv">
<Description>
Auftragdatum Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsLieferDatumInaktiv">
<Description>
Auftragdatum Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsRabattInaktiv">
<Description>
Rabatt Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsMwstInaktiv">
<Description>
Mwst Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsVertreterInaktiv">
<Description>
Vertreter Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsBearbeiterInaktiv">
<Description>
Bearbeiter Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsKonditionenInaktiv">
<Description>
Konditionen Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsLieferartInaktiv">
<Description>
Lieferart Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsLieferzeitInaktiv">
<Description>
Skonto Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsGebietInaktiv">
<Description>
Lieferart Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsBestellartInaktiv">
<Description>
Bestellart Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsBestellNrInaktiv">
<Description>
BestellNr Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsBestellerInaktiv">
<Description>
Besteller Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsReferenzInaktiv">
<Description>
Referenz Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="IsSkontoInaktiv">
<Description>
Skonto Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="VorschlagLieferart">
<Type>DBFakturierung.SD.Lieferart</Type>
<Cardinality>one</Cardinality>
<Inverse>BestStrgLieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="VorschlagLieferart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="VorschlagLieferartIndex">
<Properties>VorschlagLieferart</Properties>
</Index>

<Property name="VorschlagGebiet">
<Type>DBAdressen.SD.Gebiet</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKBestStrgVorschlag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="VorschlagGebiet"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="VorschlagGebietIndex">
<Properties>VorschlagGebiet</Properties>
</Index>

<Property name="VorschlagBestellart">
<Type>DBFakturierung.SD.Bestellart</Type>
<Cardinality>one</Cardinality>
<Inverse>BestStrgVorschlag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="VorschlagBestellart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="VorschlagBestellartIndex">
<Properties>VorschlagBestellart</Properties>
</Index>

<Property name="VorschlagBestellNr">
<Description>
Bestell-Nr.</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="VorschlagBesteller">
<Description>
Besteller</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="VorschlagLieferzeit">
<Description>
Lieferzeit</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="VorschlagReferenz">
<Description>
Referenz</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="SaveBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>steuerung:DBFaktEK.BestStrg,typOid:%String,KundeOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set spez = steuerung
	if (KundeOid = "") && (typOid '= "") {
	//	set spez = ##Class(DBFaktEK.TypStrg).DeleteBestellungsSteuerung(typOid)
		if ('##Class(DBFaktEK.TypStrg).ExistsBestellungsSteuerung(typOid)) {
			set spez = ##Class(DBFaktEK.TypStrg).GetBestellungsSteuerung(typOid)
			set spez = steuerung.%ConstructClone()
			set typ = ##class(DBFaktEK.SD.Hilfstexte).%OpenId(typOid)
			set spez.Typ = typ
		}
		
	} elseif (typOid = "") && (KundeOid '= "") {
	//	set spez = ##Class(DBFaktEK.LieferantenStrg).DeleteBestellungsSteuerung(KundeOid)
		if ('##Class(DBFaktEK.LieferantenStrg).ExistsBestellungsSteuerung(KundeOid)) {
			set spez = ##Class(DBFaktEK.LieferantenStrg).GetBestellungsSteuerung(KundeOid)
			set spez = steuerung.%ConstructClone()
			set adr = ##class(DBAdressen.Adresse).%OpenId(KundeOid)
			set spez.Kunde = adr
		}
		
	}
	set status = spez.%Save()
	quit status
]]></Implementation>
</Method>

<Method name="ExistsBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>Mand:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.BestStrg 
	     WHERE Mandant=:Mand)
	quit (id '= "")
]]></Implementation>
</Method>

<Method name="GetBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>Mand:%String</FormalSpec>
<ReturnType>DBFaktEK.BestStrg</ReturnType>
<Implementation><![CDATA[
	set steuerung = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.TypStrg 
	     WHERE Mandant=:Mand Order by Typ->PositionsNr)
	
	if (id '= "") {
		set steuerung = ##Class(DBFaktEK.TypStrg).%OpenId(id)
	} else {
		set steuerung = ##Class(DBFaktEK.BestStrg).%New()
		set mand = Mand
		set steuerung.Mandant = mand
		k mand
		d steuerung.%Save()
	}
	quit steuerung
]]></Implementation>
</Method>

<Method name="DeleteBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>Mand:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.BestStrg 
	     WHERE Mandant=:Mand)
	if (id '= "") {
		set status = ##Class(DBFaktEK.BestStrg).%DeleteId(id)
	}
	quit status
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.BestStrgD</DataLocation>
<DefaultData>BestStrgDefaultData</DefaultData>
<IdLocation>^DBFaktEK.BestStrgD</IdLocation>
<IndexLocation>^DBFaktEK.BestStrgI</IndexLocation>
<StreamLocation>^DBFaktEK.BestStrgS</StreamLocation>
<Data name="BestStrgDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>OffertanAnzKopien</Value>
</Value>
<Value name="3">
<Value>BestellungAnzKopien</Value>
</Value>
<Value name="4">
<Value>AnnahmeAnzKopien</Value>
</Value>
<Value name="5">
<Value>AbrechnungAnzKopien</Value>
</Value>
<Value name="6">
<Value>Herkunft</Value>
</Value>
<Value name="7">
<Value>Abzug1</Value>
</Value>
<Value name="8">
<Value>Abzug1Prozent</Value>
</Value>
<Value name="9">
<Value>Abzug2</Value>
</Value>
<Value name="10">
<Value>Abzug2Prozent</Value>
</Value>
<Value name="11">
<Value>Abzug3</Value>
</Value>
<Value name="12">
<Value>Abzug3Prozent</Value>
</Value>
<Value name="13">
<Value>Abzug1Text</Value>
</Value>
<Value name="14">
<Value>Abzug2Text</Value>
</Value>
<Value name="15">
<Value>Abzug3Text</Value>
</Value>
<Value name="16">
<Value>GenerierungOPText</Value>
</Value>
<Value name="17">
<Value>LieferZeit</Value>
</Value>
<Value name="18">
<Value>BarzahlungAnzKopien</Value>
</Value>
<Value name="19">
<Value>BarzahlungSpezEinst</Value>
</Value>
<Value name="20">
<Value>EinstellungenMutieren</Value>
</Value>
<Value name="21">
<Value>TextOP</Value>
</Value>
<Value name="22">
<Value>Abzug1FibuKonto</Value>
</Value>
<Value name="23">
<Value>Abzug2FibuKonto</Value>
</Value>
<Value name="24">
<Value>Abzug3FibuKonto</Value>
</Value>
<Value name="25">
<Value>OffertanDrucktyp</Value>
</Value>
<Value name="26">
<Value>OffertanFusstext</Value>
</Value>
<Value name="27">
<Value>BestellungDrucktyp</Value>
</Value>
<Value name="28">
<Value>BestellungFusstext</Value>
</Value>
<Value name="29">
<Value>AnnahmeDrucktyp</Value>
</Value>
<Value name="30">
<Value>AnnahmeFusstext</Value>
</Value>
<Value name="31">
<Value>AbrechnungDrucktyp</Value>
</Value>
<Value name="32">
<Value>AbrechnungFusstext</Value>
</Value>
<Value name="33">
<Value>BarzahlungDrucktyp</Value>
</Value>
<Value name="34">
<Value>BarzahlungFusstext</Value>
</Value>
<Value name="35">
<Value>Mandant</Value>
</Value>
<Value name="36">
<Value>IsAuftragDatumInaktiv</Value>
</Value>
<Value name="37">
<Value>IsLieferDatumInaktiv</Value>
</Value>
<Value name="38">
<Value>IsRabattInaktiv</Value>
</Value>
<Value name="39">
<Value>IsMwstInaktiv</Value>
</Value>
<Value name="40">
<Value>IsVertreterInaktiv</Value>
</Value>
<Value name="41">
<Value>IsBearbeiterInaktiv</Value>
</Value>
<Value name="42">
<Value>IsKonditionenInaktiv</Value>
</Value>
<Value name="43">
<Value>IsLieferartInaktiv</Value>
</Value>
<Value name="44">
<Value>IsLieferzeitInaktiv</Value>
</Value>
<Value name="45">
<Value>IsGebietInaktiv</Value>
</Value>
<Value name="46">
<Value>IsBestellartInaktiv</Value>
</Value>
<Value name="47">
<Value>IsBestellNrInaktiv</Value>
</Value>
<Value name="48">
<Value>IsBestellerInaktiv</Value>
</Value>
<Value name="49">
<Value>IsReferenzInaktiv</Value>
</Value>
<Value name="50">
<Value>IsSkontoInaktiv</Value>
</Value>
<Value name="51">
<Value>VorschlagLieferart</Value>
</Value>
<Value name="52">
<Value>VorschlagGebiet</Value>
</Value>
<Value name="53">
<Value>VorschlagBestellart</Value>
</Value>
<Value name="54">
<Value>VorschlagBestellNr</Value>
</Value>
<Value name="55">
<Value>VorschlagBesteller</Value>
</Value>
<Value name="56">
<Value>VorschlagLieferzeit</Value>
</Value>
<Value name="57">
<Value>VorschlagReferenz</Value>
</Value>
</Data>
<Property name="AbrechnungAnzKopien"/>
<Property name="AbrechnungDrucktyp"/>
<Property name="AbrechnungFusstext"/>
<Property name="Abzug1"/>
<Property name="Abzug1FibuKonto"/>
<Property name="Abzug1Prozent"/>
<Property name="Abzug1Text"/>
<Property name="Abzug2"/>
<Property name="Abzug2FibuKonto"/>
<Property name="Abzug2Prozent"/>
<Property name="Abzug2Text"/>
<Property name="Abzug3"/>
<Property name="Abzug3FibuKonto"/>
<Property name="Abzug3Prozent"/>
<Property name="Abzug3Text"/>
<Property name="AnnahmeAnzKopien"/>
<Property name="AnnahmeDrucktyp"/>
<Property name="AnnahmeFusstext"/>
<Property name="BarzahlungAnzKopien"/>
<Property name="BarzahlungDrucktyp"/>
<Property name="BarzahlungFusstext"/>
<Property name="BarzahlungSpezEinst"/>
<Property name="BestellungAnzKopien"/>
<Property name="BestellungDrucktyp"/>
<Property name="BestellungFusstext"/>
<Property name="EinstellungenMutieren"/>
<Property name="GenerierungOPText"/>
<Property name="Herkunft"/>
<Property name="IsAuftragDatumInaktiv"/>
<Property name="IsBearbeiterInaktiv"/>
<Property name="IsBestellNrInaktiv"/>
<Property name="IsBestellartInaktiv"/>
<Property name="IsBestellerInaktiv"/>
<Property name="IsGebietInaktiv"/>
<Property name="IsKonditionenInaktiv"/>
<Property name="IsLieferDatumInaktiv"/>
<Property name="IsLieferartInaktiv"/>
<Property name="IsLieferzeitInaktiv"/>
<Property name="IsMwstInaktiv"/>
<Property name="IsRabattInaktiv"/>
<Property name="IsReferenzInaktiv"/>
<Property name="IsSkontoInaktiv"/>
<Property name="IsVertreterInaktiv"/>
<Property name="LieferZeit"/>
<Property name="Mandant"/>
<Property name="OffertanAnzKopien"/>
<Property name="OffertanDrucktyp"/>
<Property name="OffertanFusstext"/>
<Property name="TextOP"/>
<Property name="VorschlagBestellNr"/>
<Property name="VorschlagBestellart"/>
<Property name="VorschlagBesteller"/>
<Property name="VorschlagGebiet"/>
<Property name="VorschlagLieferart"/>
<Property name="VorschlagLieferzeit"/>
<Property name="VorschlagReferenz"/>
</Storage>
</Class>


<Class name="DBFaktEK.Bestellungskopf">
<Description>
</Description>
<Super>%Persistent,%Populate,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62430,52541.0619</TimeChanged>
<TimeCreated>61689,47479.956484</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="BestellungsNr">
<Description>
Auftags-Nummer</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnnahmescheinNr">
<Description>
Annahmeschein-Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="AbrechnungsNr">
<Description>
Abrechnungs-Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="Bestellungsdatum">
<Description>
Bestellungsdatum</Description>
<Type>%Date</Type>
</Property>

<Property name="Annahmedatum">
<Description>
Annahmedatum</Description>
<Type>%Date</Type>
</Property>

<Property name="Abrechnungsdatum">
<Description>
Abrechnungsdatum</Description>
<Type>%Date</Type>
</Property>

<Property name="Bestellungsstatus">
<Description>
Bestellungsstatus</Description>
<Type>%Integer</Type>
</Property>

<Property name="StatusAutoVerarbeitung">
<Description>
Status für automatische Verarbeitung</Description>
<Type>%Integer</Type>
</Property>

<Property name="CodeMwst">
<Description>
Code Mwst O/I/E/A</Description>
<Type>%Integer</Type>
</Property>

<Property name="Besteller">
<Description>
Besteller</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Referenz">
<Description>
Referenz</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BestellNr">
<Description>
Bestell-Nr.</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Fusstext1">
<Description>
Fusstext 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="4096"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Fusstext2">
<Description>
Fusstext 2</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Fusstext3">
<Description>
Fusstext 3</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Fusstext4">
<Description>
Fusstext 4</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Anrede">
<Description>
Anrede/Bezeichnung</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Name">
<Description>
Name</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Adresszeile1">
<Description>
Adresszeile 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Adresszeile2">
<Description>
Adresszeile 2</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Adresszeile3">
<Description>
Adresszeile 3</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Plz">
<Description>
PLZ</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="15"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="PlzZusatz">
<Description>
PLZ Zusatz</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="15"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Ort">
<Description>
Ort</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="RabattProzent">
<Description>
Rabatt in %</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Kurs">
<Description>
Kurs</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Kurseinheit">
<Description>
Kurseinheit</Description>
<Type>%Integer</Type>
</Property>

<Property name="Lieferzeit">
<Description>
Lieferzeit</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Skonto">
<Description>
Skonto</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Bestellungspos">
<Type>DBFaktEK.Bestellungspos</Type>
<Cardinality>children</Cardinality>
<Inverse>Bestellungskopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Zahlungskondition">
<Type>DBDebiKredi.SD.KZahlungskond</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKAKZahlungsKond</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Zahlungskondition"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Lieferart">
<Type>DBFakturierung.SD.Lieferart</Type>
<Cardinality>one</Cardinality>
<Inverse>BKLieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lieferart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Bestellart">
<Type>DBFakturierung.SD.Bestellart</Type>
<Cardinality>one</Cardinality>
<Inverse>BKBestellart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Bestellart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="SachbearbeiterNr">
<Type>%Library.Integer</Type>
<Parameter name="MAXVAL" value="999"/>
<Parameter name="MINVAL" value="1"/>
</Property>

<Property name="Fusstext">
<Type>DBFaktEK.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>AKFusstext</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Fusstext"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="FusstextIndex">
<Properties>Fusstext</Properties>
</Index>

<Property name="Adresse">
<Type>DBDebiKredi.Kreditor</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKAdresse</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Adresse"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AdresseIndex">
<Properties>Adresse</Properties>
</Index>

<Property name="ZahlAdresse">
<Type>DBDebiKredi.Kreditor</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKZahlAdresse</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="ZahlAdresse"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ZahlAdresseIndex">
<Properties>ZahlAdresse</Properties>
</Index>

<Property name="Waehrung">
<Type>DBFibu.SD.Fremdwaehrung</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKBWaehrung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Waehrung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="TotalMitGebinde">
<Description>
GebindeSaldo + Nettobetrag2InklMwstEW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalMitGebinde}= {BetragEWInklMwst}-{Skonto} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BruttoGewinn">
<Description>
BruttoGewinn = Nettobetrag2ExklMwstEW - Warenaufwand</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BruttoGewinn}= {BetragEWExklMwst} - {Warenaufwand} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Vertreter">
<Type>DBAdressen.SD.Vertreter</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKBestellung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Vertreter"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="BetragFWInklMwst">
<Description>
Betrag inkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragFWInklMwst}=##class(DBFaktEK.Bestellungskopf).GetBetragInklMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragEWInklMwst">
<Description>
Betrag EW Inklusiv Mwst</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragEWInklMwst}=##class(DBFaktEK.Bestellungskopf).GetBetragEWInklMwstByAuftrClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragMwst">
<Description>
Betrag Mwst</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragMwst}=##class(DBFaktEK.Bestellungskopf).GetBetragMwstByAuftrClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragEWExklMwst">
<Description>
Betrag EW Exklusiv Mwst</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragEWExklMwst}=##class(DBFaktEK.Bestellungskopf).GetBetragEWExklMwstByAuftrClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Warenaufwand">
<Description>
Warenaufwand</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Warenaufwand}=##class(DBFaktEK.Bestellungskopf).GetWarenaufwandByAuftrClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Gebietscode">
<Type>DBAdressen.SD.Gebiet</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKBestellung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebietscode"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="BearbeitungsstatusOA">
<Description>
BearbeitungsstatusOA - Offertenanfrage</Description>
<Type>%Integer</Type>
</Property>

<Property name="BearbeitungsstatusBE">
<Description>
BearbeitungsstatusBE - Bestellung</Description>
<Type>%Integer</Type>
</Property>

<Property name="BearbeitungsstatusAS">
<Description>
BearbeitungsstatusAS - Annahmeschein</Description>
<Type>%Integer</Type>
</Property>

<Property name="BearbeitungsstatusAR">
<Description>
BearbeitungsstatusAR - Abrechnung</Description>
<Type>%Integer</Type>
</Property>

<Property name="BearbeitungsstatusBZ">
<Description>
BearbeitungsstatusBZ - barzahlung</Description>
<Type>%Integer</Type>
</Property>

<Property name="Verbucht">
<Description>
Verbucht</Description>
<Type>%Boolean</Type>
</Property>

<Property name="VerbuchungsjournalNr">
<Description>
Verbuchungsjournal-Nummer</Description>
<Type>%Integer</Type>
</Property>

<Property name="OP">
<Type>DBDebiKredi.OP</Type>
<Cardinality>one</Cardinality>
<Inverse>BestellungFakturierung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="OP"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="OPIndex">
<Properties>OP</Properties>
</Index>

<Property name="SkontoFW">
<Description>
SkontoFW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GewichtNetto">
<Description>
GewichtNetto</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GewichtNetto}=##class(DBFaktEK.Bestellungskopf).GetGewichtNettoClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GewichtTara">
<Description>
GewichtTara</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GewichtTara}=##class(DBFaktEK.Bestellungskopf).GetGewichtTaraClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GewichtBrutto">
<Description>
GewichtBrutto</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GewichtBrutto}=##class(DBFaktEK.Bestellungskopf).GetGewichtBruttoClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragFWExklMwst">
<Description>
Betrag exkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragFWExklMwst}=##class(DBFaktEK.Bestellungskopf).GetBetragExklMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragMwstFW">
<Description>
Betrag Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragMwstFW}=##class(DBFaktEK.Bestellungskopf).GetBetragMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="TotalMitGebindeFW">
<Description>
 BetragEWInklMwstFW - SkontoFW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalMitGebindeFW}={BetragFWInklMwst}-{SkontoFW} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="Sachbearbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKBestSachbearbeiter</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Sachbearbeiter"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Method name="GetGewichtNettoClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(GewichtNetto) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGewichtTaraClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(GewichtTara) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGewichtBruttoClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(GewichtBrutto) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetLastIDByAdrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.Bestellungskopf
	     WHERE Adresse->Adresse = :AdrOid ORDER BY BestellungsNr DESC)
	Quit id
]]></Implementation>
</Method>

<Method name="GetBetragEWInklMwstByAuftrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Nettobetrag2InklMwstEW) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragEWExklMwstByAuftrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Nettobetrag2ExklMwstEW) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragInklMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Nettobetrag2InklMwstFW) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragExklMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Nettobetrag2ExklMwstFW) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Nettobetrag2MwstBetragFW) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragMwstByAuftrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Nettobetrag2MwstBetragEW) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetWarenaufwandByAuftrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(Warenaufwand) INTO :betrag FROM DBFaktEK.Bestellungspos
	     WHERE Bestellungskopf = :Oid AND 
	     		Artikelcode<>DBFaktEK.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBFaktEK.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBFaktEK.Konst_AcGesamttotal())
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetAdressNrByBestellungsOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set adr = ""
	&sql(SELECT Adresse->Adresse->Adressnummer INTO :adr FROM DBFaktEK.Bestellungskopf
	     WHERE ID = :Oid)
	Quit adr
]]></Implementation>
</Method>

<Method name="GetIdByBestellungNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BestellungNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid
		 AND BestellungsNr = :BestellungNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByAnnahmescheinNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AnnahmescheinNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid
		 AND AnnahmescheinNr = :AnnahmescheinNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByAbrechnungsNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AbrechnungsNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid
		 AND AbrechnungsNr = :AbrechnungsNr)
	Quit id
]]></Implementation>
</Method>

<Method name="%OnDelete">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Delete</METHOD> method to 
provide notification that the object specified by <VAR>oid</VAR> is being deleted.

<P>If this method returns an error then the object will not be deleted.
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set myId = $lg(oid,1)
	set ^FaktBestellungskopfIsDeleting(myId) = 1
	w "Bevor Deleting Pos",!
	Set strSQL="SELECT ID FROM DBFaktEK.Bestellungspos WHERE Bestellungskopf='"_myId_"'"
	w "SQL:"_strSQL,!
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    w sc,!
    // Wenn statement erfolgreich ausgeführt
    IF ($$$ISOK(sc)) {
	    // für jede gefunde verküpfung
		While (rs.Next(.sc)) {
           	Set relID=rs.Data("ID")
           	w !," ID: "_relID,!
			w ##class(DBFaktEK.Bestellungspos).%DeleteId(relID)
		}					
    }
	w "Afer Deleting Pos",!
	d ##class(DBUtils.ClassHelper).DeleteManyRelations("DBFaktEK.Bestellungskopf", myId)
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="GetAdressNrByAllAuftraege">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set adr = ""
	&sql(SELECT TOP 1 Adresse->Adresse->Adressnummer INTO :adr FROM DBFaktEK.Bestellungskopf
	     WHERE Mandant = :Mandant)
	Quit adr
]]></Implementation>
</Method>

<Method name="DeleteAllFromMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	//TSTART
	set okAuftr = 0
	set okBest = 0
	set sc = ""
	
		set okAuftr = 1
		/*
		Set strSQL="DELETE FROM DBFaktEK.Bestellungskopf WHERE Mandant="_MandantOid
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		If ($$$ISOK(sc)) {
			set okAuftr = 1
		} else {
			set okAuftr = 0
		}
		*/
		
		Set strSQL="SELECT ID FROM DBFaktEK.Bestellungskopf WHERE Mandant="_MandantOid
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		while (rs.Next()) {
		   set status = ##class(DBFaktEK.Bestellungskopf).%DeleteId(rs.Data("ID"))
		}
		set okAuftr = 1
		
	
	//Bestellungen löschen
	Set strSQL="DELETE FROM DBFaktEK.GebDetail WHERE GebKontr->Mandant="_MandantOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	If ($$$ISOK(sc)) {
		set okBest = 1
		Set strSQL="DELETE FROM DBFaktEK.BestellungsKopf WHERE Mandant="_MandantOid
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		
		If ($$$ISOK(sc)) {
			set okBest = 1
		} else {
			set okBest = 0
		}
	} else {
		set okBest = 0	
	}
	
	set res = okAuftr & okBest
	/*
	if (res = 1) {
		TCOMMIT	
	} else {
		TROLLBACK	
	}
	*/
	Quit sc
]]></Implementation>
</Method>

<Method name="DeleteVonBisDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<Implementation><![CDATA[
		Set strSQL="SELECT ID FROM DBFaktEK.Bestellungskopf WHERE Mandant="_MandantOid_" AND Bestellungsdatum BETWEEN '"_$ZDate(VonDatum,3)_"' AND '"_$ZDate(BisDatum,3)_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		while (rs.Next()) {
		   set status = ##class(DBFaktEK.Bestellungskopf).%DeleteId(rs.Data("ID"))
		}
]]></Implementation>
</Method>

<Method name="GetFirstBestellungsOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set myId = ""
	&sql(SELECT TOP 1 %ID Into :myId FROM DBFaktEK.Bestellungskopf WHERE Mandant=:MandantOid)
	Quit myId
]]></Implementation>
</Method>

<Trigger name="trgDelete">
<Code>	w !,"in Delete Trigger Bestellungskopf",!
	new myId
	set myId = {ID*O}
	do ##class(DBFaktEK.Bestellungskopf).SetFlagAutoMutiert(myId, 1)
	w "Bevor Deleting Pos",!
	Set strSQL="SELECT ID FROM DBFaktEK.Bestellungspos WHERE Bestellungskopf='"_myId_"'"
	w "SQL:"_strSQL,!
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    w sc,!
    // Wenn statement erfolgreich ausgeführt
    IF ($$$ISOK(sc)) {
	    // für jede gefunde verküpfung
		While (rs.Next(.sc)) {
           	Set relID=rs.Data("ID")
           	w !," ID: "_relID,!
			w ##class(DBFaktEK.Bestellungspos).%DeleteId(relID)
		}					
    }
	w "Afer Deleting Pos",!
	Quit ##class(DBUtils.ClassHelper).DeleteManyRelations("DBFaktEK.Bestellungskopf", myId)</Code>
<Event>DELETE</Event>
</Trigger>

<Method name="IsStatusGedruckt">
<ClassMethod>1</ClassMethod>
<FormalSpec>status:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set res = 0
	if (status'="") {
		set res = (status = ##class(DBFaktEK.Konst).BearbeitungsstatusGedruckt())
	}
	Quit res
]]></Implementation>
</Method>

<Method name="IsStatusMutiert">
<ClassMethod>1</ClassMethod>
<FormalSpec>status:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set res = 0
	if (status'="") {
		set res = (status = ##class(DBFaktEK.Konst).BearbeitungsstatusMutiert())
	}
	Quit res
]]></Implementation>
</Method>

<Method name="SetBStatusMutiertClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>id:%String</FormalSpec>
<Implementation><![CDATA[
	if (id '= "") {
		set exists = $GET(^FaktEKKopfNotSetStatusMutiert(id))
		set existsDeleting = $GET(^FaktBestellungskopfIsDeleting(id))
		if ((('exists) || ('^FaktEKKopfNotSetStatusMutiert(id))) && (('existsDeleting) || ('^FaktBestellungskopfIsDeleting(id)))) {
			set kopf = ##class(DBFaktEK.Bestellungskopf).%OpenId(id)
			do kopf.SetBStatusMutiert()
		}
	}
]]></Implementation>
</Method>

<Method name="SetBStatusMutiert">
<Implementation><![CDATA[
	set exists = $GET(^FaktEKKopfNotSetStatusMutiert(..%Id()))
	set existsDeleting = $GET(^FaktBestellungskopfIsDeleting(..%Id()))
	if ((('exists) || ('^FaktEKKopfNotSetStatusMutiert(..%Id())))) {
		if ((('existsDeleting) || ('^FaktBestellungskopfIsDeleting(..%Id())))) {
			set check = 0
			if (##class(DBFaktEK.Bestellungskopf).IsStatusGedruckt(..BearbeitungsstatusOA)) {
				set ..BearbeitungsstatusOA = ##class(DBFaktEK.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFaktEK.Bestellungskopf).IsStatusGedruckt(..BearbeitungsstatusBE)) {
				set ..BearbeitungsstatusBE = ##class(DBFaktEK.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFaktEK.Bestellungskopf).IsStatusGedruckt(..BearbeitungsstatusAS)) {
				set ..BearbeitungsstatusAS = ##class(DBFaktEK.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFaktEK.Bestellungskopf).IsStatusGedruckt(..BearbeitungsstatusAR)) {
				set ..BearbeitungsstatusAR = ##class(DBFaktEK.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFaktEK.Bestellungskopf).IsStatusGedruckt(..BearbeitungsstatusBZ)) {
				set ..BearbeitungsstatusBZ = ##class(DBFaktEK.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			
			if (check) {
				do ..%Save()
			}
		}
	}
]]></Implementation>
</Method>

<Method name="%OnAfterSave">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Save</METHOD> method to 
provide notification that the object is being saved. It is called after 
the object's data has been successfully written to disk.

<P><VAR>insert</VAR> will be set to 1 if this object is being saved for the first time.

<P>If this method returns an error then the call to <METHOD>%Save</METHOD> will fail.]]></Description>
<FormalSpec>insert:%Boolean</FormalSpec>
<Private>1</Private>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	if ('insert) {
		do ..SetBStatusMutiert()	
	}
	
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="Update">
<Code>	do ##class(DBFaktEK.Bestellungskopf).SetBStatusMutiertClass({ID*N})</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Method name="SetFlagAutoMutiert">
<ClassMethod>1</ClassMethod>
<FormalSpec>kopfId:%String,notAutoMutiert:%Boolean</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	if (notAutoMutiert) {
		set ^FaktEKKopfNotSetStatusMutiert(kopfId) = notAutoMutiert
	} else {
		kill ^FaktEKKopfNotSetStatusMutiert(kopfId)
	}
	Quit 1
]]></Implementation>
</Method>

<Method name="GetLastBestellungOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	set maxauftr = ""
	&sql(SELECT MAX(BestellungsNr) INTO :maxauftr FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid)
	if (maxauftr'="") {
		set id = ##class(DBFaktEK.Bestellungskopf).GetIdByBestellungNr(MandantOid, maxauftr)
	}
	Quit id
]]></Implementation>
</Method>

<Method name="GetNextVerbuchungJnr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set maxJnr = 0
	&sql(SELECT MAX(VerbuchungsjournalNr) INTO :maxJnr FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid)
	Set maxJnr = maxJnr + 1
	Quit maxJnr
]]></Implementation>
</Method>

<Method name="CopyBestellung">
<ClassMethod>1</ClassMethod>
<FormalSpec>FibuMandOid:%String,BestellungOid:%String,nextBestellungsNr:%Integer,MitarbeiterOid:%String,chargenAusgang:%Boolean,storno:%Boolean,kunde:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set faktor = 1
	if (storno) {
		set faktor = -1
	}
	
	set user = ##class(DBCore.Mitarbeiter).%OpenId(MitarbeiterOid)
	w "user: ", user, !
	
	set sAuf = ##class(DBFaktEK.Bestellungskopf).%OpenId(BestellungOid)
	w "sAuf ", sAuf, !
	set dAuf = ##class(DBFaktEK.Bestellungskopf).%New()
	w "dAuf ", dAuf, !
	
	if ((kunde = "") || (kunde = sAuf.Adresse)) {
		set dAuf.Adresse = sAuf.Adresse
		set dAuf.Adresszeile1 = sAuf.Adresszeile1
		set dAuf.Adresszeile2 = sAuf.Adresszeile2
		set dAuf.Adresszeile3 = sAuf.Adresszeile3
		set dAuf.Anrede = sAuf.Anrede
		set dAuf.Name = sAuf.Name
		set dAuf.Ort = sAuf.Ort
		set dAuf.Plz = sAuf.Plz
		set dAuf.PlzZusatz = sAuf.PlzZusatz
		set dAuf.ZahlAdresse = sAuf.ZahlAdresse
	} else {
		set adresse = ##class(DBAdressen.Adresse).%OpenId(kunde)
		set dAuf.Adresszeile1 = adresse.GetZusatz1(adresse.Adresscode, adresse.VornameZusatz1)
		set dAuf.Adresszeile2 = adresse.Zusatz2
		if ((adresse.Hausnummer '= "") && (adresse.Hausnummer '= $c(0)) && (adresse.Hausnummer '= $$$NULLOREF)) {
			w "HabeHausNr:"_adresse.Hausnummer,!
			set dAuf.Adresszeile3 = adresse.Strasse_" "_adresse.Hausnummer
		} else {
			set dAuf.Adresszeile3 = adresse.Strasse
		}
		set dAuf.Anrede = adresse.Anrede
		set dAuf.Name = adresse.GetName(adresse.Adresscode, adresse.Name, adresse.VornameZusatz1, 0)
		set dAuf.Ort = adresse.Ort
		set dAuf.Plz = adresse.Plz
		set dAuf.PlzZusatz = adresse.PlzInklZusatz
		
		w "adr ", kunde, !
		set kredi = ##class(DBDebiKredi.Kreditor).GetIdByAdrOid(FibuMandOid, kunde)
		w "kredi ", kredi, !
	
		if (kredi '= "") {
			set kreditor = ##class(DBDebiKredi.Kreditor).%OpenId(kredi)
			set dAuf.Adresse = kreditor
			set dAuf.ZahlAdresse = kreditor.Zahladresse
		} else {
			quit ""
		}
	}
	
	set dAuf.Bestellungsdatum = +$H
	set dAuf.BestellungsNr = nextBestellungsNr
	set dAuf.Bestellungsstatus = 0
	set dAuf.Barkonto = sAuf.Barkonto
	set dAuf.BearbeitungsstatusBZ = ##class(DBFaktEK.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusAS = ##class(DBFaktEK.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusOA = ##class(DBFaktEK.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusAR = ##class(DBFaktEK.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusBE = ##class(DBFaktEK.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.Bestellart = sAuf.Bestellart
	set dAuf.Besteller = sAuf.Besteller
	set dAuf.BestellNr = sAuf.BestellNr
	set dAuf.CodeMwst = sAuf.CodeMwst
	set dAuf.Fusstext = sAuf.Fusstext
	set dAuf.Fusstext1 = sAuf.Fusstext1
	set dAuf.Fusstext2 = sAuf.Fusstext2
	set dAuf.Fusstext3 = sAuf.Fusstext3
	set dAuf.Fusstext4 = sAuf.Fusstext4
	set dAuf.Gebietscode = sAuf.Gebietscode
	set dAuf.Projekt = sAuf.Projekt
	set dAuf.Kurs = sAuf.Kurs
	set dAuf.Kurseinheit = sAuf.Kurseinheit
	set dAuf.Lieferart = sAuf.Lieferart
	set dAuf.Annahmedatum = sAuf.Annahmedatum
	set dAuf.AnnahmescheinNr = 0
	set dAuf.Lieferzeit = sAuf.Lieferzeit
	set dAuf.RabattProzent = sAuf.RabattProzent
	set dAuf.Abrechnungsdatum = 0
	set dAuf.AbrechnungsNr = 0
	set dAuf.Referenz = sAuf.Referenz
	set dAuf.RetourenErfasst = sAuf.RetourenErfasst
	set dAuf.Sachbearbeiter = user
	set dAuf.Skonto = (faktor * sAuf.Skonto)
	set dAuf.SkontoFW = (faktor * sAuf.SkontoFW)
	set dAuf.StatusAutoVerarbeitung = 0
	set dAuf.Verbucht = 0
	set dAuf.VerbuchungsjournalNr = 0
	set dAuf.VerteillisteNr = 0
	set dAuf.Vertreter = sAuf.Vertreter
	set dAuf.Waehrung = sAuf.Waehrung
	set dAuf.Zahlungskondition = sAuf.Zahlungskondition
	set dAuf.Mandant = sAuf.Mandant
	set dAuf.BCGesperrt = sAuf.BCGesperrt
	set dAuf.Buchungscode = sAuf.Buchungscode
	
	set scAuf = dAuf.%Save()
	
	//Multilager Aktiv?
	set multilager = ##class(DBCore.MandantEinstellung).GetBoolEinst(sAuf.Mandant, 1150040)
	
	if ($$$ISOK(scAuf)) {
		Set strSQL="SELECT ID FROM DBFaktEK.Bestellungspos WHERE Bestellungskopf="_BestellungOid
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set sPos = ##class(DBFaktEK.Bestellungspos).%OpenId(rs.Data("ID"))
			w "sPos ", sPos, !
			set dPos = ##class(DBFaktEK.Bestellungspos).%New()
			w "dPos ", dPos, !
			
			set dPos.Abzugstyp = sPos.Abzugstyp
			set dPos.Artikel = sPos.Artikel
			set dPos.Artikelcode = sPos.Artikelcode
			set dPos.Bestellungskopf = dAuf
			set dPos.BestellNr = sPos.BestellNr
			set dPos.BestellteMenge = (faktor * sPos.BestellteMenge)
			set dPos.BetragExklMwst = (faktor * sPos.BetragExklMwst)
			set dPos.BetragExklMwstFW = (faktor * sPos.BetragExklMwstFW)
			set dPos.BetragInklMwstFW = (faktor * sPos.BetragInklMwstFW)
			set dPos.BetragInklMwst = (faktor * sPos.BetragInklMwst)
			
			w "dPos ", dPos, !
			set dPos.DetailText = sPos.DetailText
			set dPos.GewichtBrutto = sPos.GewichtBrutto
			set dPos.GewichtNetto = sPos.GewichtNetto
			set dPos.GewichtTara = sPos.GewichtTara
			set dPos.GrammJeEinheit = sPos.GrammJeEinheit
			set dPos.GrammJeLaufmeter = sPos.GrammJeLaufmeter
			set dPos.Herkunft = sPos.Herkunft
			set dPos.Lagerort = sPos.Lagerort
			if (dPos.Lagerort = "") {
				set lagerOid = ""
				if (multilager = 1) {
					//Gesamtlager
					set lagerOid = ##class(DBFakturierung.SD.Lagerort).GetIdByPosNrOnMandant(sAuf.Mandant, 0)
				} elseif(dPos.Artikel.SingleLagerOrt = "") {
					//Hauptlager
					set lagerOid = ##class(DBFakturierung.SD.Lagerort).GetIdByPosNrOnMandant(sAuf.Mandant, 0)
				} else {
					set lagerOid = 	dPos.Artikel.SingleLagerOrt.%Id()
				}
				
				if (lagerOid '= "") {
					SET dPos.Lagerort = ##class(DBFakturierung.SD.Lagerort).%OpenId(lagerOid)
				}
			}
			set dPos.Lagerstatus = ##class(DBFaktEK.Konst).LagerstatusKeinLager()
			set dPos.Lieferant = sPos.Lieferant
			set dPos.Annahmedatum = sPos.Annahmedatum
			set dPos.Menge = (faktor * sPos.Menge)
			set dPos.Mengeneinheit = sPos.Mengeneinheit
			set dPos.Mwst = sPos.Mwst
			set dPos.MwstBetrag = (faktor * sPos.MwstBetrag)
			set dPos.MwstExport = sPos.MwstExport
			set dPos.MwstSatz = sPos.MwstSatz
			set dPos.MwstSatzExport = sPos.MwstSatzExport
			set dPos.ParzellenNr = sPos.ParzellenNr
			set dPos.PositionsNr = sPos.PositionsNr
			set dPos.Preis = sPos.Preis
			set dPos.PreisFW = sPos.PreisFW
			set dPos.RabattBetrag = (faktor * sPos.RabattBetrag)
			set dPos.RabattProzent = sPos.RabattProzent
			set dPos.SpezPreis = sPos.SpezPreis
			set dPos.Vertreter = sPos.Vertreter
			set dPos.Warenaufwand = (faktor * sPos.Warenaufwand)
			set dPos.ZusatztextID = sPos.ZusatztextID
			set dPos.Buchungscode = sPos.Buchungscode
			
			w "dPos2 ", dPos, !
			set scPos = dPos.%Save()
			
			if ($$$ISERR(scPos)) {
				w "Fehler bei der Detailposition: "_scPos
			}
	    }
	    
    } else {
	    w "Fehler beim Bestellung: "_scAuf
    }
    
	Quit dAuf.%Id()
]]></Implementation>
</Method>

<Method name="GetBetragEWInklMwstByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(BetragEWInklMwst) INTO :betrag FROM DBFaktEK.Bestellungskopf WHERE AbrechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragFWInklMwstByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(BetragFWInklMwst) INTO :betrag FROM DBFaktEK.Bestellungskopf WHERE AbrechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragEWExklMwstByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(BetragEWExklMwst) INTO :betrag FROM DBFaktEK.Bestellungskopf WHERE AbrechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetragFWExklMwstByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	&sql(SELECT SUM(BetragFWExklMwst) INTO :betrag FROM DBFaktEK.Bestellungskopf WHERE AbrechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetTotalMitGebindeByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT SUM(TotalMitGebinde) INTO :betrag FROM DBFaktEK.Bestellungskopf WHERE AbrechnungsNr=:RgNr AND Mandant = :MandantOid)
	if (SQLCODE '= 0) {
		set betrag = 0
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="PositionenSortieren">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,DefPosNrSchrit:%Integer</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	Set strSQL = "SELECT ID, CASE NVL(ZusatztextId,0) WHEN 0 THEN Artikel->ArtikelNr ELSE "
	set strSQL = strSQL_"(SELECT Artikel->ArtikelNr FROM DBFaktEK.Bestellungspos pos WHERE pos.Bestellungskopf='"_BestellungOid_"' AND pos.PositionsNr=t.PositionsNr) END As ArtikelNr, "
	set strSQL = strSQL_"PositionsNr, NVL(ZusatztextId,0) As ZusatztextId FROM DBFaktEK.Bestellungspos t WHERE Bestellungskopf = '"_BestellungOid_"' order by ArtikelNr, PositionsNr, ZusatztextId"
	
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	Set posNr = 0
	Set prevPosNr = 0
	
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			// Init pro Detailposition
			Set posId =rs.Data("ID")
			if (rs.Data("PositionsNr") '= prevPosNr) {
				set prevPosNr = rs.Data("PositionsNr")
				set posNr = posNr + DefPosNrSchrit
			}
			// Objekt öffnen
			set detPos = ##class(DBFaktEK.Bestellungspos).%OpenId(posId)
			if (detPos '= "") {
				set detPos.PositionsNr = posNr
				d detPos.%Save()
				k detPos
			}
		}
	}
	
	Quit sc
]]></Implementation>
</Method>

<Method name="SearchWithFreeSelektion">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,vonDatum:%Date,bisDatum:%Date,nachStatus:%Boolean,auftragStatus:%Integer,nurVerbuchte:%Boolean,nurBarzahlungen:%Boolean,nurNichtAusgelieferte:%Boolean,nurAusgelieferte:%Boolean</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set strSQL = "SELECT ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer, "
	Set strSQL = strSQL_"Abrechnungsdatum, Annahmedatum, Bestellungsdatum, "
	Set strSQL = strSQL_"Bestellungsstatus, StatusAutoVerarbeitung, AbrechnungsNr, AnnahmescheinNr, BestellungsNr, "
	Set strSQL = strSQL_"TotalMitGebinde, Verbucht, "
	Set strSQL = strSQL_"BearbeitungsstatusBZ, BearbeitungsstatusAS, "
	Set strSQL = strSQL_"BearbeitungsstatusOA, BearbeitungsstatusAR, BearbeitungsstatusBE "
	Set strSQL = strSQL_"FROM DBFaktEK.Bestellungskopf "
	Set strSQL = strSQL_"WHERE Mandant = "_MandantOid_" "
	Set strSQL = strSQL_"AND Bestellungsdatum between '"_$ZDate(vonDatum,3)_"' and '"_$ZDate(bisDatum,3)_"' "
	
	if (nachStatus) {
		Set strSQL = strSQL_"AND Bestellungsstatus = "_auftragStatus_" "
	}
	if (nurBarzahlungen) {
		Set strSQL = strSQL_"AND BearbeitungsstatusBZ = DBAgrofresh.Konst_BearbeitungsstatusGedruckt() "
	}
	if (nurNichtAusgelieferte) {
		Set strSQL = strSQL_"AND Bestellungsstatus < 4 "
	}
	if (nurAusgelieferte) {
		Set strSQL = strSQL_"AND Bestellungsstatus >= 4 "
	}
	if (nurVerbuchte) {
		Set strSQL = strSQL_"AND Verbucht = 0 "
	}
	
	Set strSQL = strSQL_"ORDER BY Bestellungsstatus, Abrechnungsdatum DESC, BestellungsNr DESC"
	Quit strSQL
	
	/*Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()	
	IF $$$ISOK(sc) {
		quit rs
	} else {
		quit ""
	}*/
]]></Implementation>
</Method>

<Method name="GetAnzVerbuchung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,vonArNr:%Integer,bisArNr:%Integer,bisArDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set anz=0
	&sql(
		SELECT Count(AbrechnungsNr) Into :anz
		FROM (
			SELECT AbrechnungsNr
			FROM DBFaktEK.Bestellungskopf 
			WHERE Mandant = :MandantOid AND
				NVL(Verbucht,0) = 0 AND
				StatusAutoVerarbeitung < 4 AND (DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusAR) = 1 OR DBFaktEK.Bestellungskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
				AbrechnungsNr>=:vonArNr AND
				AbrechnungsNr<=:bisArNr AND
				Abrechnungsdatum<={d :bisArDatum} AND
				(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid)
			GROUP BY AbrechnungsNr
		)
	)
	quit anz
]]></Implementation>
</Method>

<Method name="ResetVerbuchung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,jnr:%Integer,deleteZahlungen:%Boolean,barzahlungsZahlungskondOid:%String</FormalSpec>
<Implementation><![CDATA[
	Set strSQL = "SELECT ID, OP FROM DBFaktEK.Bestellungskopf WHERE Mandant="_MandantOid_" AND VerbuchungsjournalNr="_jnr
	
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	Set countReseted = 0
	Set countNotReseted = 0
	
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			// Init pro Detailposition
			Set oid =rs.Data("ID")
			Set opOid = rs.Data("OP")
			
			do ##class(DBFaktEK.Bestellungskopf).SetFlagAutoMutiert(oid,1)
			
			TSTART
			
			Set auftrag = ##class(DBFaktEK.Bestellungskopf).%OpenId(oid)
			Set auftrag.OP = ""
			Set auftrag.Verbucht = 0
			Set auftrag.VerbuchungsjournalNr = 0
			w "auftrag.Zahlungskondition.%Id(): "_auftrag.Zahlungskondition.%Id(),!
			w "barzahlungsZahlungskondOid: "_barzahlungsZahlungskondOid,!
			Set bz = (auftrag.Zahlungskondition.%Id() = barzahlungsZahlungskondOid)
			Set check = ((auftrag.Zahlungskondition.Code >= 40) && (auftrag.Zahlungskondition.Code <= 49))
			Set scBestellung = auftrag.%Save()
			
			Set scZahlung = $$$OK
			if (deleteZahlungen || bz || check) {
				Set strSQLZ = "SELECT ID FROM DBDebiKredi.Zahlung WHERE ID IN (SELECT Zahlung FROM DBDebiKredi.OPZahlung WHERE OP="_opOid_")"
	
				Set rsZ = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
				Do rsZ.Prepare(strSQLZ)
				Set scZ=rsZ.Execute()
				IF $$$ISOK(scZ) {
					While rsZ.Next(.scZ) {
						// Init pro Detailposition
						Set oidZ =rsZ.Data("ID")
						Set status = ##class(DBDebiKredi.Zahlung).%DeleteId(oidZ)
						if ($$$ISERR(status)) {
							w "Fehler:"_status,!
						}
					}
				}
			}
			
			Set scOP = ##class(DBDebiKredi.OP).%DeleteId(opOid)
			
			if (($$$ISOK(scBestellung)) && ($$$ISOK(scOP))) {
				TCOMMIT
				Set countReseted = countReseted + 1
			} else {
				TROLLBACK
				w "ROLLBACK: BestellungOid:"_oid_", OpOid:"_opOid,!
				w "ERR-Bestellung: "_scBestellung,!
				w "ERR-OP: "_scOP,!
				
				Set countNotReseted = countNotReseted + 1
			}
			
			do ##class(DBFaktEK.Bestellungskopf).SetFlagAutoMutiert(oid,0)
		}
	}
	
	w "Zurückgesetzt: "_countReseted,!
	w "Abgebrochen  : "_countNotReseted,!
]]></Implementation>
</Method>

<Method name="GetNextBestellungsNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	set typ = ##class(DBCore.FormularNr).FormNrFaktEKBestellung()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(BestellungsNr) into :nr FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid)
		if (SQLCODE = 0) {
			SET ^FormularNr(MandantOid, typ) = nr	
		}
	}
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	// Prüfen ob noch keine RG mit Nummer vorhanden
	while (##class(DBFaktEK.Bestellungskopf).GetIdByBestellungNr(MandantOid, nr) '= "") {
		SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	}
		
	Quit nr
]]></Implementation>
</Method>

<Method name="GetNextAnnahmeNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	set typ = ##class(DBCore.FormularNr).FormNrFaktEKAnnahme()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(AnnahmescheinNr) into :nr FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid)
		if (SQLCODE = 0) {
			SET ^FormularNr(MandantOid, typ) = nr	
		}
	}
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	// Prüfen ob noch keine RG mit Nummer vorhanden
	while (##class(DBFaktEK.Bestellungskopf).GetIdByAnnahmescheinNr(MandantOid, nr) '= "") {
		SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	}
		
	Quit nr
]]></Implementation>
</Method>

<Method name="GetNextAbrechnungsNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	set typ = ##class(DBCore.FormularNr).FormNrFaktEKAbrechnung()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(AbrechnungsNr) into :nr FROM DBFaktEK.Bestellungskopf WHERE Mandant = :MandantOid)
		if (SQLCODE = 0) {
			SET ^FormularNr(MandantOid, typ) = nr	
		}
	}
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	// Prüfen ob noch keine RG mit Nummer vorhanden
	while (##class(DBFaktEK.Bestellungskopf).GetIdByAbrechnungsNr(MandantOid, nr) '= "") {
		SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	}
	Quit nr
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.BestellungskopfD</DataLocation>
<DefaultData>BestellungskopfDefaultData</DefaultData>
<IdLocation>^DBFaktEK.BestellungskopfD</IdLocation>
<IndexLocation>^DBFaktEK.BestellungskopfI</IndexLocation>
<StreamLocation>^DBFaktEK.BestellungskopfS</StreamLocation>
<Data name="BestellungskopfDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>BestellungsNr</Value>
</Value>
<Value name="3">
<Value>AnnahmescheinNr</Value>
</Value>
<Value name="4">
<Value>AbrechnungsNr</Value>
</Value>
<Value name="5">
<Value>Bestellungsdatum</Value>
</Value>
<Value name="6">
<Value>Annahmedatum</Value>
</Value>
<Value name="7">
<Value>Abrechnungsdatum</Value>
</Value>
<Value name="8">
<Value>Bestellungsstatus</Value>
</Value>
<Value name="9">
<Value>StatusAutoVerarbeitung</Value>
</Value>
<Value name="10">
<Value>CodeMwst</Value>
</Value>
<Value name="11">
<Value>Besteller</Value>
</Value>
<Value name="12">
<Value>Referenz</Value>
</Value>
<Value name="13">
<Value>BestellNr</Value>
</Value>
<Value name="14">
<Value>Fusstext1</Value>
</Value>
<Value name="15">
<Value>Fusstext2</Value>
</Value>
<Value name="16">
<Value>Fusstext3</Value>
</Value>
<Value name="17">
<Value>Fusstext4</Value>
</Value>
<Value name="18">
<Value>Anrede</Value>
</Value>
<Value name="19">
<Value>Name</Value>
</Value>
<Value name="20">
<Value>Adresszeile1</Value>
</Value>
<Value name="21">
<Value>Adresszeile2</Value>
</Value>
<Value name="22">
<Value>Adresszeile3</Value>
</Value>
<Value name="23">
<Value>Plz</Value>
</Value>
<Value name="24">
<Value>PlzZusatz</Value>
</Value>
<Value name="25">
<Value>Ort</Value>
</Value>
<Value name="26">
<Value>RabattProzent</Value>
</Value>
<Value name="27">
<Value>Kurs</Value>
</Value>
<Value name="28">
<Value>Kurseinheit</Value>
</Value>
<Value name="29">
<Value>Lieferzeit</Value>
</Value>
<Value name="30">
<Value>Skonto</Value>
</Value>
<Value name="31">
<Value>Zahlungskondition</Value>
</Value>
<Value name="32">
<Value>Lieferart</Value>
</Value>
<Value name="33">
<Value>Bestellart</Value>
</Value>
<Value name="34">
<Value>SachbearbeiterNr</Value>
</Value>
<Value name="35">
<Value>SachbearbeiterBenutzername</Value>
</Value>
<Value name="36">
<Value>SachbearbeiterVorname</Value>
</Value>
<Value name="37">
<Value>SachbearbeiterName</Value>
</Value>
<Value name="38">
<Value>Fusstext</Value>
</Value>
<Value name="39">
<Value>Adresse</Value>
</Value>
<Value name="40">
<Value>ZahlAdresse</Value>
</Value>
<Value name="41">
<Value>Waehrung</Value>
</Value>
<Value name="42">
<Value>Vertreter</Value>
</Value>
<Value name="43">
<Value>Gebietscode</Value>
</Value>
<Value name="44">
<Value>BearbeitungsstatusOA</Value>
</Value>
<Value name="45">
<Value>BearbeitungsstatusBE</Value>
</Value>
<Value name="46">
<Value>BearbeitungsstatusAS</Value>
</Value>
<Value name="47">
<Value>BearbeitungsstatusAR</Value>
</Value>
<Value name="48">
<Value>BearbeitungsstatusBZ</Value>
</Value>
<Value name="49">
<Value>Verbucht</Value>
</Value>
<Value name="50">
<Value>VerbuchungsjournalNr</Value>
</Value>
<Value name="51">
<Value>OP</Value>
</Value>
<Value name="52">
<Value>SkontoFW</Value>
</Value>
<Value name="53">
<Value>Mandant</Value>
</Value>
<Value name="54">
<Value>Sachbearbeiter</Value>
</Value>
</Data>
<Property name="AbrechnungsNr"/>
<Property name="Abrechnungsdatum"/>
<Property name="Adresse"/>
<Property name="Adresszeile1"/>
<Property name="Adresszeile2"/>
<Property name="Adresszeile3"/>
<Property name="Annahmedatum"/>
<Property name="AnnahmescheinNr"/>
<Property name="Anrede"/>
<Property name="BearbeitungsstatusAR"/>
<Property name="BearbeitungsstatusAS"/>
<Property name="BearbeitungsstatusBE"/>
<Property name="BearbeitungsstatusBZ"/>
<Property name="BearbeitungsstatusOA"/>
<Property name="BestellNr"/>
<Property name="Bestellart"/>
<Property name="Besteller"/>
<Property name="BestellungsNr"/>
<Property name="Bestellungsdatum"/>
<Property name="Bestellungsstatus"/>
<Property name="BetragEWExklMwst"/>
<Property name="BetragEWInklMwst"/>
<Property name="BetragFWExklMwst"/>
<Property name="BetragFWInklMwst"/>
<Property name="BetragMwst"/>
<Property name="BetragMwstFW"/>
<Property name="BruttoGewinn"/>
<Property name="CodeMwst"/>
<Property name="Fusstext"/>
<Property name="Fusstext1"/>
<Property name="Fusstext2"/>
<Property name="Fusstext3"/>
<Property name="Fusstext4"/>
<Property name="Gebietscode"/>
<Property name="GewichtBrutto"/>
<Property name="GewichtNetto"/>
<Property name="GewichtTara"/>
<Property name="Kurs"/>
<Property name="Kurseinheit"/>
<Property name="Lieferart"/>
<Property name="Lieferzeit"/>
<Property name="Mandant"/>
<Property name="Name"/>
<Property name="OP"/>
<Property name="Ort"/>
<Property name="Plz"/>
<Property name="PlzZusatz"/>
<Property name="RabattProzent"/>
<Property name="Referenz"/>
<Property name="Sachbearbeiter"/>
<Property name="SachbearbeiterBenutzername"/>
<Property name="SachbearbeiterName"/>
<Property name="SachbearbeiterNr"/>
<Property name="SachbearbeiterVorname"/>
<Property name="Skonto"/>
<Property name="SkontoFW"/>
<Property name="StatusAutoVerarbeitung"/>
<Property name="TotalMitGebinde"/>
<Property name="TotalMitGebindeFW"/>
<Property name="Verbucht"/>
<Property name="VerbuchungsjournalNr"/>
<Property name="Vertreter"/>
<Property name="Waehrung"/>
<Property name="Warenaufwand"/>
<Property name="ZahlAdresse"/>
<Property name="Zahlungskondition"/>
</Storage>
</Class>


<Class name="DBFaktEK.Bestellungspos">
<Super>%Persistent,%Populate,%XML.Adaptor</Super>
<TimeChanged>62416,57315.779033</TimeChanged>
<TimeCreated>61689,47507.285499</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Pos-Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="Annahmedatum">
<Description>
Annahmedatum</Description>
<Type>%Date</Type>
</Property>

<Property name="Lagerstatus">
<Description>
Lagerstatus</Description>
<Type>%Integer</Type>
</Property>

<Property name="BestellNr">
<Description>
Bestell-Nr</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="DetailText">
<Description>
Bestellungsdetail</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Menge">
<Description>
Menge</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BestellteMenge">
<Description>
Bestellte Menge</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Preis">
<Description>
Preis</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="PreisFW">
<Description>
Preis FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="RabattProzent">
<Description>
Rabatt in %</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="RabattBetrag">
<Description>
Rabatt Betrag</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MwstSatz">
<Description>
Mwst-Satz</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MwstSatzExport">
<Description>
Mwst-Satz</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MwstBetrag">
<Description>
Mwst-Betrag</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragExklMwst">
<Description>
Betrag exkl. Mwst</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragInklMwst">
<Description>
Betrag inkl. Mwst</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragInklMwstFW">
<Description>
Betrag inkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Warenaufwand">
<Description>
Warenaufwand</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GewichtNetto">
<Description>
Gewicht</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="ParzellenNr">
<Description>
Parzellen-Nr</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GewichtTara">
<Description>
Gewicht tarra</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GewichtBrutto">
<Description>
Gewicht brutto</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="ZusatztextID">
<Description>
Zusatztext ID</Description>
<Type>%Integer</Type>
</Property>

<Property name="Bestellungskopf">
<Type>DBFaktEK.Bestellungskopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>Bestellungspos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Bestellungskopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>BestellungspositionArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Artikel"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ArtikelIndex">
<Properties>Artikel</Properties>
</Index>

<Property name="Herkunft">
<Type>DBFakturierung.SD.Herkunft</Type>
<Cardinality>one</Cardinality>
<Inverse>BestellungsPosHerkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Herkunft"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Mengeneinheit">
<Type>DBFakturierung.SD.Mengencode</Type>
<Cardinality>one</Cardinality>
<Inverse>BestellungsPosMengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Mengeneinheit"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Mwst">
<Type>DBFibu.SD.Mwst</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKBestPosMwst</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Mwst"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Artikelcode">
<Description>
Artikelcode - Art des Details (Text, pauschal...)</Description>
<Type>%Integer</Type>
</Property>

<Property name="Vertreter">
<Type>DBAdressen.SD.Vertreter</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKDetail</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Vertreter"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Lagerort">
<Type>DBFakturierung.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>Bestellungssposition</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lagerort"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="MwstBetragFW">
<Description>
Mwst-Betrag FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragExklMwstFW">
<Description>
Betrag exkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="RabattBetragFW">
<Description>
Rabatt Betrag FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1ExklMwstEW">
<Description>
Artikelrabatt 1 exkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1InklMwstEW">
<Description>
Artikelrabatt 1 inkkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1MwstbetragEW">
<Description>
Artikelrabatt 1 Mwstbetrag EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Artikelrabatt1MwstbetragEW}=({Artikelrabatt1InklMwstEW}-{Artikelrabatt1ExklMwstEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1InProzent">
<Description>
Artikelrabatt 1 in Prozent</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag1ExklMwstEW">
<Description>
Nettobetrag 1 exkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag1ExklMwstEW}=({BetragExklMwst}-{Artikelrabatt1ExklMwstEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag1InklMwstEW">
<Description>
Nettobetrag 1 inkkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag1InklMwstEW}=({BetragInklMwst}-{Artikelrabatt1InklMwstEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag1MwstbetragEW">
<Description>
Nettobetrag 1 Mwstbetrag EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag1MwstbetragEW}=({MwstBetrag}-{Artikelrabatt1MwstbetragEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2ExklMwstEW">
<Description>
Artikelrabatt 2 exkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2InklMwstEW">
<Description>
Artikelrabatt 2 inkkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2MwstbetragEW">
<Description>
Artikelrabatt 2 Mwstbetrag EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Artikelrabatt2MwstbetragEW}=({Artikelrabatt2InklMwstEW}-{Artikelrabatt2ExklMwstEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2InProzent">
<Description>
Artikelrabatt 2 in Prozent</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag2ExklMwstEW">
<Description>
Nettobetrag 2 exkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag2ExklMwstEW}=({Nettobetrag1ExklMwstEW}-{Artikelrabatt2ExklMwstEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag2InklMwstEW">
<Description>
Nettobetrag 2 inkkl. Mwst EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag2InklMwstEW}=({Nettobetrag1InklMwstEW}-{Artikelrabatt2InklMwstEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag2MwstbetragEW">
<Description>
Nettobetrag 2 Mwstbetrag EW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag2MwstbetragEW}=({Nettobetrag1MwstbetragEW}-{Artikelrabatt2MwstbetragEW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1ExklMwstFW">
<Description>
Artikelrabatt 1 exkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1InklMwstFW">
<Description>
Artikelrabatt 1 inkkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt1MwstbetragFW">
<Description>
Artikelrabatt 1 Mwstbetrag FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Artikelrabatt1MwstbetragFW}=({Artikelrabatt1InklMwstFW}-{Artikelrabatt1ExklMwstFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag1ExklMwstFW">
<Description>
Nettobetrag 1 exkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag1ExklMwstFW}=({BetragExklMwstFW}-{Artikelrabatt1ExklMwstFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag1InklMwstFW">
<Description>
Nettobetrag 1 inkkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag1InklMwstFW}=({BetragInklMwstFW}-{Artikelrabatt1InklMwstFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag1MwstbetragFW">
<Description>
Nettobetrag 1 Mwstbetrag FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag1MwstbetragFW}=({MwstBetragFW}-{Artikelrabatt1MwstbetragFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2ExklMwstFW">
<Description>
Artikelrabatt 2 exkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2InklMwstFW">
<Description>
Artikelrabatt 2 inkkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikelrabatt2MwstbetragFW">
<Description>
Artikelrabatt 2 Mwstbetrag FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Artikelrabatt2MwstbetragFW}=({Artikelrabatt2InklMwstFW}-{Artikelrabatt2ExklMwstFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag2ExklMwstFW">
<Description>
Nettobetrag 2 exkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag2ExklMwstFW}=({Nettobetrag1ExklMwstFW}-{Artikelrabatt2ExklMwstFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag2InklMwstFW">
<Description>
Nettobetrag 2 inkkl. Mwst FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag2InklMwstFW}=({Nettobetrag1InklMwstFW}-{Artikelrabatt2InklMwstFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Nettobetrag2MwstbetragFW">
<Description>
Nettobetrag 2 Mwstbetrag FW</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nettobetrag2MwstbetragFW}=({Nettobetrag1MwstbetragFW}-{Artikelrabatt2MwstbetragFW}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Lagerbewegung">
<Type>DBFakturierung.Lagerbew</Type>
<Cardinality>many</Cardinality>
<Inverse>Bestellungsdet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EPProvisorisch">
<Description>
provisorischer EP</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="DetailPreis">
<Description>
DetailPreis</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MargeProzent">
<Description>
Marge in Prozent</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="KorrekturMwst">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="DetailText2">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="BestellungHasDetails">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	Set strSQL="SELECT TOP 1 ID FROM DBFaktEK.Bestellungspos WHERE  Bestellungskopf ='"_BestellungOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set id=rs.Data("ID")
		}
	}
	Quit id '= ""
]]></Implementation>
</Method>

<Method name="GetAktPosNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set pos = ""
	Set strSQL="SELECT Max(PositionsNr) AS posNr FROM DBFaktEK.Bestellungspos WHERE  Bestellungskopf ='"_BestellungOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set pos=rs.Data("posNr")
		}
	}
	Quit +pos
]]></Implementation>
</Method>

<Method name="GetOidByPosAndBestellung">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,aktPos:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	Set strSQL="SELECT Top 1 ID FROM DBFaktEK.Bestellungspos WHERE  Bestellungskopf ="_BestellungOid_" AND PositionsNr = "_aktPos_" AND ISNULL(ZusatztextID,0) = 0"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set id=rs.Data("ID")
		}
	}
	Quit id
]]></Implementation>
</Method>

<Method name="GetAktZusatztextByPosNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,aktPos:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set pos = ""
	Set strSQL="SELECT Max(ZusatztextID) AS posNr FROM DBFaktEK.Bestellungspos WHERE  Bestellungskopf ="_BestellungOid_" AND PositionsNr = "_aktPos
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set pos=rs.Data("posNr")
		}
	}
	Quit +pos
]]></Implementation>
</Method>

<Method name="DeletePositonsByBestellung">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set strSQL="SELECT ID FROM DBFaktEK.Bestellungspos WHERE  Bestellungskopf ="_BestellungOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			DO ##class(DBFaktEK.Bestellungspos).%DeleteId(rs.Data("ID"))
		}
	}
	Quit $$$ISOK(sc)
]]></Implementation>
</Method>

<Method name="UpdateAnnahmedatumByBestellung">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,NewDatum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set sqlDate = $ZDate(NewDatum,3)
	Set strSQL="UPDATE DBFaktEK.Bestellungspos (Annahmedatum) VALUES ({d '"_sqlDate_"'}) WHERE  Bestellungskopf ='"_BestellungOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	Quit $$$ISOK(sc)
]]></Implementation>
</Method>

<Method name="DeletePositon">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	Set strSQL="SELECT ID FROM DBFaktEK.Bestellungspos WHERE  Bestellungskopf ="_BestellungOid_" AND PositionsNr = "_PosNr
	w strSQL,!
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set oid=rs.Data("ID")
			w ##class(DBFaktEK.Bestellungspos).%DeleteId(oid)
		}
	}
	Quit 1
]]></Implementation>
</Method>

<Method name="%OnDelete">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Delete</METHOD> method to 
provide notification that the object specified by <VAR>oid</VAR> is being deleted.

<P>If this method returns an error then the object will not be deleted.
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set myId = $lg(oid,1)
	w !,"OnDelete Bestellungspos",!
	
	set ^FaktBestellungsDetIsDeleting(myId) = 1
	
	set auftragId = ""
	set mandant = ""
	
	Set strSQL="SELECT Bestellungskopf->ID AS auftragId, Bestellungskopf->Mandant AS mandant FROM DBFaktEK.Bestellungspos WHERE ID='"_myId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set auftragId=rs.Data("auftragId")
			Set mandant=rs.Data("mandant")
		}
	}
	
	do ##class(DBFaktEK.Bestellungskopf).SetBStatusMutiertClass(auftragId)
	
	Set ^FaktAufDetOldValues(myId, 1) = auftragId
	
	d ..CheckLager(myId)
	
	set st = ##class(DBUtils.ClassHelper).DeleteManyRelations("DBFaktEK.Bestellungspos", myId)
	//w st
	Quit st
]]></Implementation>
</Method>

<Method name="%OnAfterDelete">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Delete</METHOD> method to 
provide notification that the object specified by <VAR>oid</VAR> has been deleted.
The callback occurs immediately after %DeleteData has been called. If %DeleteData returns
an error then %OnAfterDelete is not called.

<P>If %OnAfterDelete returns an error (%Status) then the transaction is rolled back.
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	w !,"OnAfterDelete Bestellungspos",!
	set myId = $lg(oid,1)
	
	Set auftragId = ^FaktAufDetOldValues(myId, 1)
	
	If ($GET(^FaktBestellungskopfIsDeleting(auftragId))="") {
		//Sperrfunktion für Save setzen, dass RecalcRabattTotal nicht looped
		Set ^FaktAufDetStopTrg(auftragId) = 1
		Set status = ##class(DBFaktEK.Bestellungspos).RecalcRabattTotal(auftragId)
		if ($$$ISERR(status)) {
			w "DBFaktEK.Bestellungspos.%OnDelete - Fehler bei RabattTotal-Berechnung",!
			w status,!
		}
		Set status = ##class(DBFaktEK.Bestellungspos).RecalcMwst(auftragId)
		if ($$$ISERR(status)) {
			w "DBFaktEK.Bestellungspos.%OnDelete - Fehler bei RecalcMwst-Berechnung",!
			w status,!
		}
		Kill ^FaktAufDetStopTrg(auftragId)
	}
	
	KILL ^FaktBestellungsDetIsDeleting(myId)
	KILL ^FaktAufDetOldValues(myId)
	
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="CheckLager">
<ClassMethod>1</ClassMethod>
<FormalSpec>myId:%Integer</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set detPos = ##class(DBFaktEK.Bestellungspos).%OpenId(myId)
	
	if (+detPos.Lagerstatus = ##class(DBFakturierung.Konst).LagerstatusReserviert()) {
		if (detPos.Artikel '= "") {
			if (detPos.Artikel.LagerAktiv) {
				set lagerOid = ""
				if (detPos.Lagerort '= "") {
					set lagerOid = detPos.Lagerort.%Id()
				}
				d ##class(DBFakturierung.ArtikelLager).AddLager(detPos.Artikel.Mandant, detPos.Artikel.%Id(),lagerOid, (-1) * +detPos.Menge, 0, 1, 0)
			}
		}
	} elseif (+detPos.Lagerstatus = ##class(DBFakturierung.Konst).LagerstatusNachgefuehrt()) {
		if (detPos.Artikel '= "") {
			if (detPos.Artikel.LagerAktiv) {
				set lagerOid = ""
				if (detPos.Lagerort '= "") {
					set lagerOid = detPos.Lagerort.%Id()
				}
					
				Set movement = ##class(DBFakturierung.Lagerbew).%New()
				set movement.Artikel = detPos.Artikel
				Set movement.BelegNr = "FAK-"_detPos.Bestellungskopf.BestellungsNr
				Set movement.Belegtext = "Bestellungs-Nr: "_detPos.Bestellungskopf.BestellungsNr_" - Stornierung"
				Set movement.Buchungscode = ##class(DBFakturierung.Konst).LagerBuchungscodeAbgang()
				Set movement.Buchungsdatum = +$H
				Set movement.Lieferdatum = detPos.Annahmedatum
				Set movement.BetragEW = (-1) * detPos.BetragExklMwst
				Set movement.BetragFW = (-1) * detPos.BetragInklMwstFW
				Set movement.JournalNr = ##class(DBFakturierung.Lagerbew).GetAktPosNummer(detPos.Bestellungskopf.Mandant) + 1
				Set movement.KundeLieferant = detPos.Bestellungskopf.Adresse.Adresse
				Set movement.Kurs = (-1) * detPos.Bestellungskopf.Kurs
				Set movement.Kurseinheit = detPos.Bestellungskopf.Kurseinheit
				if (detPos.Lagerort '= "") {
						Set movement.Lagerort = detPos.Lagerort
				} 
				Set movement.Menge = (-1) * detPos.Menge
				Set movement.PreisEW = detPos.Preis
				Set movement.PreisFW = detPos.PreisFW
				Set movement.Status = 0
				Set movement.Waehrung = detPos.Bestellungskopf.Waehrung
				Set movement.Bewegungstyp = 0
				do movement.%Save()
				k movement
			
				Set detPos.Lagerstatus = ##class(DBFakturierung.Konst).LagerstatusKeinLager()
							
			}
		}
	}
	k detPos
	
	//Lagerbewegungen lösen
	Set strSQL="SELECT ID FROM DBFakturierung.Lagerbew WHERE Bestellungsdet = '"_myId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set id=rs.Data("ID")
			Set bew = ##class(DBFakturierung.Lagerbew).%OpenId(id)
			Set bew.Bestellungsdet = ""
			w bew.%Save()
			k bew
		}
	}
]]></Implementation>
</Method>

<Method name="CopyPositon">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,PosNr:%Integer,NewPosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	set oldPos = ##class(DBFaktEK.Bestellungspos).%OpenId(##class(DBFaktEK.Bestellungspos).GetOidByPosAndBestellung(BestellungOid, PosNr))
	
	if (oldPos '= "") {
		set newPos = oldPos.%ConstructClone(-1)
		set newPos.PositionsNr = NewPosNr
		set newPos.Bestellungskopf = oldPos.Bestellungskopf
		do newPos.%Save()
		set oid = newPos.%Id()
		k oldPos
		k newPos
	}
	Quit oid
]]></Implementation>
</Method>

<Method name="%OnAfterSave">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Save</METHOD> method to 
provide notification that the object is being saved. It is called after 
the object's data has been successfully written to disk.

<P><VAR>insert</VAR> will be set to 1 if this object is being saved for the first time.

<P>If this method returns an error then the call to <METHOD>%Save</METHOD> will fail.]]></Description>
<FormalSpec>Insert:%Boolean</FormalSpec>
<Private>1</Private>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
		w "DBFaktEK.Bestellungspos.%OnAfterSave",!
	If ($GET(^FaktAufDetStopTrg(..Bestellungskopf.%Id()))="") {
		w "DBFaktEK.Bestellungspos.%OnAfterSave2",!
		w "resultat aufdetstop: "_$GET(^FaktAufDetStopTrg(..Bestellungskopf.%Id())),!
	
		Set ^FaktAufDetStopTrg(..Bestellungskopf.%Id()) = 1
	
		set detId = ..%Id()
		
		do ..Bestellungskopf.SetBStatusMutiert()
	
		KILL ^FaktAufDetOldValues(detId)
	
		Set status = ##class(DBFaktEK.Bestellungspos).RecalcRabattTotal(..Bestellungskopf.%Id())
		if ($$$ISERR(status)) {
			w "DBFaktEK.Bestellungspos.%OnAfterSave - Fehler bei RabattTotal-Berechnung",!
			w status,!
		}
		
		Set status = ##class(DBFaktEK.Bestellungspos).RecalcMwst(..Bestellungskopf.%Id())
		if ($$$ISERR(status)) {
			w "DBFaktEK.Bestellungspos.%OnAfterSave - Fehler bei RecalcMwst-Berechnung",!
			w status,!
		}
		
		Kill ^FaktAufDetStopTrg(..Bestellungskopf.%Id())
		
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="RecalcRabattTotal">
<ClassMethod>1</ClassMethod>
<FormalSpec>auftragskopfOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	w "RecalcRabattTotal",!
	
	//Letze Korrektur zurücksetzen
	set posOid = ""
	&sql(DECLARE C1 CURSOR FOR
		 SELECT ID Into :posOid
		 FROM DBFaktEK.Bestellungspos 
		 WHERE Bestellungskopf=:auftragskopfOid AND 
		 	   NVL(KorrekturMwst,0) <> 0)
	
	&sql(OPEN C1)
 	&sql(FETCH C1)
 	
 	While (SQLCODE = 0) {
		set pos = ##class(DBFaktEK.Bestellungspos).%OpenId(posOid)
		if (pos '= "") {
			w "Reset Pos "_posOid,!
			Set pos.MwstBetrag = pos.MwstBetrag - pos.KorrekturMwst
			if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
				Set pos.BetragInklMwst = (pos.BetragInklMwst - pos.KorrekturMwst)
			} elseif ((pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) ||
				(pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGURPROD())) {
				Set pos.BetragExklMwst = (pos.BetragExklMwst + pos.KorrekturMwst)
			}
			Set pos.KorrekturMwst = 0
			DO pos.%Save()
		}
	
		&sql(FETCH C1)
 	}
 	
    &sql(CLOSE C1)
			
	set status = $$$OK
    Set zwischenRabatt = 0
    Set gesamtRabatt = 0
    Set letzteZeileRabatt = 0
    
    Set id = ""
	&sql(DECLARE C2 CURSOR FOR
		 SELECT ID Into :id
		 FROM DBFaktEK.Bestellungspos 
		 WHERE Bestellungskopf=:auftragskopfOid 
		 ORDER BY PositionsNr DESC)
		
	&sql(OPEN C2)
 	&sql(FETCH C2)
 	
 	While (SQLCODE = 0) { 
        //w "ID in While von RecalcRabattTotal: "_id,!
		
		Set pos = ##class(DBFaktEK.Bestellungspos).%OpenId(id)

		if (pos.Artikelcode = ##class(DBFaktEK.Konst).AcRabattZwischentotal()) {
			Set zwischenRabatt = pos.RabattProzent
			Set letzteZeileRabatt = 1
		
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcRabattGesamttotal()) {
			Set gesamtRabatt = pos.RabattProzent
			//Set letzteZeileRabatt = 1
		
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcZwischentotalVorRabatt()) {
		
		
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcZwischentotal()) {
			if (letzteZeileRabatt = 0) {
				Set zwischenRabatt = 0
			} else {
				Set letzteZeileRabatt = 0
			}
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcGesamttotal()) {
			Set gesamtRabatt = 0
		
		} else {
			set mandOid = pos.Bestellungskopf.Mandant
			Set pos.Artikelrabatt1InProzent = zwischenRabatt
			Set pos.Artikelrabatt2InProzent = gesamtRabatt
		
			if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
				
				Set pos.Artikelrabatt1ExklMwstEW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.BetragExklMwst,pos.Artikelrabatt1InProzent)
				Set pos.Artikelrabatt1InklMwstEW = (pos.Artikelrabatt1ExklMwstEW + ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.MwstBetrag,pos.Artikelrabatt1InProzent))
				
				Set pos.Artikelrabatt2ExklMwstEW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1ExklMwstEW,pos.Artikelrabatt2InProzent)
				Set pos.Artikelrabatt2InklMwstEW = (pos.Artikelrabatt2ExklMwstEW + ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1MwstbetragEW,pos.Artikelrabatt2InProzent))
				
				Set pos.Artikelrabatt1ExklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(pos.BetragExklMwstFW,pos.Artikelrabatt1InProzent)
				Set pos.Artikelrabatt1InklMwstFW = (pos.Artikelrabatt1ExklMwstFW + ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.MwstBetragFW,pos.Artikelrabatt1InProzent))
				
				Set pos.Artikelrabatt2ExklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(pos.Nettobetrag1ExklMwstFW,pos.Artikelrabatt2InProzent)
				Set pos.Artikelrabatt2InklMwstFW = (pos.Artikelrabatt2ExklMwstFW + ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1MwstbetragFW,pos.Artikelrabatt2InProzent))
			} else {
				
				Set pos.Artikelrabatt1InklMwstEW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.BetragInklMwst,pos.Artikelrabatt1InProzent)
				Set pos.Artikelrabatt1ExklMwstEW = (pos.Artikelrabatt1InklMwstEW - ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.MwstBetrag,pos.Artikelrabatt1InProzent))
				
				Set pos.Artikelrabatt2InklMwstEW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1InklMwstEW,pos.Artikelrabatt2InProzent)
				Set pos.Artikelrabatt2ExklMwstEW = (pos.Artikelrabatt2InklMwstEW - ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1MwstbetragEW,pos.Artikelrabatt2InProzent))
				
				Set pos.Artikelrabatt1InklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(pos.BetragInklMwstFW,pos.Artikelrabatt1InProzent)
				Set pos.Artikelrabatt1ExklMwstFW = (pos.Artikelrabatt1InklMwstFW - ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.MwstBetragFW,pos.Artikelrabatt1InProzent))
				
				Set pos.Artikelrabatt2InklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(pos.Nettobetrag1InklMwstFW,pos.Artikelrabatt2InProzent)
				Set pos.Artikelrabatt2ExklMwstFW = (pos.Artikelrabatt2InklMwstFW - ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1MwstbetragFW,pos.Artikelrabatt2InProzent))
			}
			Set status = pos.%Save()
			if ($$$ISERR(status)) {
				w "DBFaktEK.Bestellungspos.RecalcRabattTotal - Fehler bei Rabattberechnung",!
				w status,!
			}
			
			KILL pos
		
			Set letzteZeileRabatt = 0
		}
		
		&sql(FETCH C2)
 	}
 	
    &sql(CLOSE C2)			
		
	Set zwischenTotalNAbzugExkl = 0
    Set zwischenTotalNAbzugExklFW = 0
    Set gesamtTotalNAbzugExkl = 0
    Set gesamtTotalNAbzugExklFW = 0
    Set lastKorrOid = ""
    Set lastKorrBetrag = 0

    Set zwischenTotalInkl = 0
    Set zwischenTotalExkl = 0
    Set zwischenTotalMwst = 0
    Set gesamtTotalInkl = 0
    Set gesamtTotalExkl = 0
    Set gesamtTotalMwst = 0
    
    Set zwischenTotalInklFW = 0
    Set zwischenTotalExklFW = 0
    Set zwischenTotalMwstFW = 0
    Set gesamtTotalInklFW = 0
    Set gesamtTotalExklFW = 0
    Set gesamtTotalMwstFW = 0
    
    Set zwischenTotalRInkl = 0
    Set zwischenTotalRExkl = 0
    Set zwischenTotalRMwst = 0
    Set gesamtTotalRInkl = 0
    Set gesamtTotalRExkl = 0
    Set gesamtTotalRMwst = 0
    
    Set zwischenTotalRInklFW = 0
    Set zwischenTotalRExklFW = 0
    Set zwischenTotalRMwstFW = 0
    Set gesamtTotalRInklFW = 0
    Set gesamtTotalRExklFW = 0
    Set gesamtTotalRMwstFW = 0
    
    Set letzteZeileTotal = 0
    
    Set totalTaxpunkte = 0
    Set totalTaxpunkteBetragInkl = 0
    Set totalTaxpunkteBetragExkl = 0
    Set totalTaxpunkteBetragMwst = 0
    
    Set id = ""
	&sql(DECLARE C3 CURSOR FOR
		 SELECT ID Into :id
		 FROM DBFaktEK.Bestellungspos 
		 WHERE Bestellungskopf=:auftragskopfOid
		 ORDER BY PositionsNr)
		 
	&sql(OPEN C3)
 	&sql(FETCH C3)
 	
 	While (SQLCODE = 0) { 
		Set pos = ##class(DBFaktEK.Bestellungspos).%OpenId(id)
	
		if (pos.Artikelcode = ##class(DBFaktEK.Konst).AcZwischentotal()) {
			Set letzteZeileTotal = 1
			
			Set pos.BetragExklMwst = zwischenTotalExkl
			Set pos.BetragInklMwst = zwischenTotalInkl
			Set pos.MwstBetrag = zwischenTotalMwst
			
			Set zwischenTotalRExkl = zwischenTotalExkl
		    Set zwischenTotalRInkl = zwischenTotalInkl
		    Set zwischenTotalRMwst = zwischenTotalMwst
    
    		Set zwischenTotalExkl = 0
			Set zwischenTotalInkl = 0
			Set zwischenTotalMwst = 0
			
			Set pos.BetragExklMwstFW = zwischenTotalExklFW
			Set pos.BetragInklMwstFW = zwischenTotalInklFW
			Set pos.MwstBetragFW = zwischenTotalMwstFW
			
			Set zwischenTotalRExklFW = zwischenTotalExklFW
		    Set zwischenTotalRInklFW = zwischenTotalInklFW
		    Set zwischenTotalRMwstFW = zwischenTotalMwstFW
    
    		Set zwischenTotalExklFW = 0
			Set zwischenTotalInklFW = 0
			Set zwischenTotalMwstFW = 0
			
			Set status = pos.%Save()
			if ($$$ISERR(status)) {
				w "DBFaktEK.Bestellungspos.RecalcRabattTotal - Fehler bei Zwischentotal-Berechnung",!
				w status,!
			}
		
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcZwischentotalVorRabatt()) {
			Set pos.BetragExklMwst = zwischenTotalExkl
			Set pos.BetragInklMwst = zwischenTotalInkl
			Set pos.MwstBetrag = zwischenTotalMwst
			
			Set pos.BetragExklMwstFW = zwischenTotalExklFW
			Set pos.BetragInklMwstFW = zwischenTotalInklFW
			Set pos.MwstBetragFW = zwischenTotalMwstFW
			
			Set status = pos.%Save()
			if ($$$ISERR(status)) {
				w "DBFaktEK.Bestellungspos.RecalcRabattTotal - Fehler bei ZwischentotalVorRabatt-Berechnung",!
				w status,!
			}
			
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcGesamttotal()) {
			Set letzteZeileTotal = 1
			
			Set pos.BetragExklMwst = gesamtTotalExkl
			Set pos.BetragInklMwst = gesamtTotalInkl
			Set pos.MwstBetrag = gesamtTotalMwst
			
			Set gesamtTotalRExkl = gesamtTotalExkl
		    Set gesamtTotalRInkl = gesamtTotalInkl
		    Set gesamtTotalRMwst = gesamtTotalMwst
    
			Set gesamtTotalExkl = 0
			Set gesamtTotalInkl = 0
			Set gesamtTotalMwst = 0
			
			Set pos.BetragExklMwstFW = gesamtTotalExklFW
			Set pos.BetragInklMwstFW = gesamtTotalInklFW
			Set pos.MwstBetragFW = gesamtTotalMwstFW
			
			Set gesamtTotalRExklFW = gesamtTotalExklFW
		    Set gesamtTotalRInklFW = gesamtTotalInklFW
		    Set gesamtTotalRMwstFW = gesamtTotalMwstFW
    
			Set gesamtTotalExklFW = 0
			Set gesamtTotalInklFW = 0
			Set gesamtTotalMwstFW = 0
			
			Set status = pos.%Save()
			if ($$$ISERR(status)) {
				w "DBFaktEK.Bestellungspos.RecalcRabattTotal - Fehler bei Gesamttotal-Berechnung",!
				w status,!
			}
		
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcRabattZwischentotal()) {
			if (pos.Bestellungskopf.CodeMwst = 1) {
				if (letzteZeileTotal = 0) {
					Set pos.Preis = zwischenTotalInkl
					Set pos.PreisFW = zwischenTotalInklFW
				} else {
					Set pos.Preis = zwischenTotalRInkl
					Set pos.PreisFW = zwischenTotalRInklFW
				}
			} else {
				if (letzteZeileTotal = 0) {
					Set pos.Preis = zwischenTotalExkl
					Set pos.PreisFW = zwischenTotalExklFW
				} else {
					Set pos.Preis = zwischenTotalRExkl
					Set pos.PreisFW = zwischenTotalRExklFW
				}
			}
			set mandOid = pos.Bestellungskopf.Mandant
			if (letzteZeileTotal = 0) {
				
				Set pos.MwstBetrag = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalMwst,pos.RabattProzent)
				Set pos.MwstBetragFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW((-1)*zwischenTotalMwstFW,pos.RabattProzent)
				
				if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
					Set pos.BetragExklMwst = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalExkl,pos.RabattProzent)
					Set pos.BetragExklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW((-1)*zwischenTotalExklFW,pos.RabattProzent)
				} else {
					Set pos.BetragInklMwst = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalInkl,pos.RabattProzent)
					Set pos.BetragInklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW((-1)*zwischenTotalInklFW,pos.RabattProzent)
				}
				
				
			} else {
				Set pos.MwstBetrag = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalRMwst,pos.RabattProzent)
				Set pos.MwstBetragFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW((-1)*zwischenTotalRMwstFW,pos.RabattProzent)
				
				if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
					Set pos.BetragExklMwst = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalRExkl,pos.RabattProzent)
					Set pos.BetragExklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW((-1)*zwischenTotalRExklFW,pos.RabattProzent)
				} else {
					Set pos.BetragInklMwst = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalRInkl,pos.RabattProzent)
					Set pos.BetragInklMwstFW = ##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW((-1)*zwischenTotalRInklFW,pos.RabattProzent)
				}
			}
			
			if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
				Set pos.BetragInklMwst = (pos.BetragExklMwst + pos.MwstBetrag)
				Set pos.BetragInklMwstFW = (pos.BetragExklMwstFW + pos.MwstBetragFW)
			} else {
				Set pos.BetragExklMwst = (pos.BetragInklMwst - pos.MwstBetrag)
				Set pos.BetragExklMwstFW = (pos.BetragInklMwstFW - pos.MwstBetragFW)
			}
			
			Set status = pos.%Save()
			if ($$$ISERR(status)) {
				w "DBFaktEK.Bestellungspos.RecalcRabattTotal - Fehler bei Zwischentotal-Berechnung",!
				w status,!
			}
			
			//Korrektur
			set betragNachRabatt = pos.Preis + pos.BetragExklMwst
			if (zwischenTotalNAbzugExkl '= betragNachRabatt) {
				w "-------------------------------------------------",!
				w "Abweichung bei Zwischentotal von Beträgen "_zwischenTotalNAbzugExkl_" zu "_betragNachRabatt,!
				set korrBetrag = betragNachRabatt - zwischenTotalNAbzugExkl
				set korrPos = ##class(DBFaktEK.Bestellungspos).%OpenId(lastKorrOid)
				if (korrPos '= "") {
					Set korrPos.Artikelrabatt1ExklMwstEW = (korrPos.Artikelrabatt1ExklMwstEW - korrBetrag)
					Do korrPos.%Save()
					w "Korrigiere "_lastKorrOid_" um "_korrBetrag_" auf Abzug von "_korrPos.Artikelrabatt1ExklMwstEW,!
				}
				w "-------------------------------------------------",!
			}
			Set zwischenTotalNAbzugExkl = 0
			Set zwischenTotalNAbzugExklFW = 0
			Set lastKorrOid = ""
			Set lastKorrBetrag = 0
			
			Set letzteZeileTotal = 0
			Set zwischenTotalExkl = zwischenTotalExkl + pos.BetragExklMwst
			Set zwischenTotalInkl = zwischenTotalInkl + pos.BetragInklMwst
			Set zwischenTotalMwst = zwischenTotalMwst + pos.MwstBetrag
		
			Set zwischenTotalExklFW = zwischenTotalExklFW + pos.BetragExklMwstFW
			Set zwischenTotalInklFW = zwischenTotalInklFW + pos.BetragInklMwstFW
			Set zwischenTotalMwstFW = zwischenTotalMwstFW + pos.MwstBetragFW
		
			Set gesamtTotalExkl = gesamtTotalExkl + pos.BetragExklMwst
			Set gesamtTotalInkl = gesamtTotalInkl + pos.BetragInklMwst
			Set gesamtTotalMwst = gesamtTotalMwst + pos.MwstBetrag
			
			Set gesamtTotalExklFW = gesamtTotalExklFW + pos.BetragExklMwstFW
			Set gesamtTotalInklFW = gesamtTotalInklFW + pos.BetragInklMwstFW
			Set gesamtTotalMwstFW = gesamtTotalMwstFW + pos.MwstBetragFW
			
		} elseif (pos.Artikelcode = ##class(DBFaktEK.Konst).AcRabattGesamttotal()) {
			if (pos.Bestellungskopf.CodeMwst = 1) {
				if (letzteZeileTotal = 0) {
					Set pos.Preis = gesamtTotalInkl
					Set pos.PreisFW = gesamtTotalInklFW
				} else {
					Set pos.Preis = gesamtTotalRInkl
					Set pos.PreisFW = gesamtTotalRInklFW
				}
			} else {
				if (letzteZeileTotal = 0) {
					Set pos.Preis = gesamtTotalExkl
					Set pos.PreisFW = gesamtTotalExklFW
				} else {
					Set pos.Preis = gesamtTotalRExkl
					Set pos.PreisFW = gesamtTotalRExklFW
				}
			}
			set mandOid = pos.Bestellungskopf.Mandant
			if (letzteZeileTotal = 0) {
				Set pos.MwstBetrag = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, gesamtTotalMwst,pos.RabattProzent)
				Set pos.MwstBetragFW = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(gesamtTotalMwstFW,pos.RabattProzent)
				if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
					Set pos.BetragExklMwst = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, gesamtTotalExkl,pos.RabattProzent)
					Set pos.BetragExklMwstFW = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(gesamtTotalExklFW,pos.RabattProzent)
				} else {
					Set pos.BetragInklMwst = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, gesamtTotalInkl,pos.RabattProzent)
					Set pos.BetragInklMwstFW = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(gesamtTotalInklFW,pos.RabattProzent)
				}
			} else {
				Set pos.MwstBetrag = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, gesamtTotalRMwst,pos.RabattProzent)
				Set pos.MwstBetragFW = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(gesamtTotalRMwstFW,pos.RabattProzent)
				if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
					Set pos.BetragExklMwst = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, gesamtTotalRExkl,pos.RabattProzent)
					Set pos.BetragExklMwstFW = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(gesamtTotalRExklFW,pos.RabattProzent)
				} else {
					Set pos.BetragInklMwst = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabatt(mandOid, gesamtTotalRInkl,pos.RabattProzent)
					Set pos.BetragInklMwstFW = (-1)*##class(DBFaktEK.Bestellungspos).CalcArtikelrabattFW(gesamtTotalRInklFW,pos.RabattProzent)
				}
			}
			
			if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
				Set pos.BetragInklMwst = (pos.BetragExklMwst + pos.MwstBetrag)
				Set pos.BetragInklMwstFW = (pos.BetragExklMwstFW + pos.MwstBetragFW)
			} else {
				Set pos.BetragExklMwst = (pos.BetragInklMwst - pos.MwstBetrag)
				Set pos.BetragExklMwstFW = (pos.BetragInklMwstFW - pos.MwstBetragFW)
			}
			
			Set status = pos.%Save()
			if ($$$ISERR(status)) {
				w "DBFaktEK.Bestellungspos.RecalcRabattTotal - Fehler bei Gesamttotal-Berechnung",!
				w status,!
			}
			
			//Korrektur
			set betragNachRabatt = pos.Preis + pos.BetragExklMwst
			if (gesamtTotalNAbzugExkl '= betragNachRabatt) {
				w "-------------------------------------------------",!
				w "Preis "_pos.Preis_" Betrag "_pos.BetragExklMwst,!
				w "Abweichung von Beträgen Gesamtotal "_gesamtTotalNAbzugExkl_" zu "_betragNachRabatt,!
				set korrBetrag = betragNachRabatt - gesamtTotalNAbzugExkl
				set korrPos = ##class(DBFaktEK.Bestellungspos).%OpenId(lastKorrOid)
				if (korrPos '= "") {
					Set korrPos.Artikelrabatt1ExklMwstEW = (korrPos.Artikelrabatt1ExklMwstEW - korrBetrag)
					Do korrPos.%Save()
					w "Korrigiere "_lastKorrOid_" um "_korrBetrag_" auf Abzug von "_korrPos.Artikelrabatt1ExklMwstEW,!
				}
				w "-------------------------------------------------",!
			}
			Set gesamtTotalNAbzugExkl = 0
			Set gesamtTotalNAbzugExklFW = 0
			Set lastKorrOid = ""
			Set lastKorrBetrag = 0
			
			Set letzteZeileTotal = 0
			
			Set gesamtTotalExkl = gesamtTotalExkl + pos.BetragExklMwst
			Set gesamtTotalInkl = gesamtTotalInkl + pos.BetragInklMwst
			Set gesamtTotalMwst = gesamtTotalMwst + pos.MwstBetrag
			
			Set gesamtTotalExklFW = gesamtTotalExklFW + pos.BetragExklMwstFW
			Set gesamtTotalInklFW = gesamtTotalInklFW + pos.BetragInklMwstFW
			Set gesamtTotalMwstFW = gesamtTotalMwstFW + pos.MwstBetragFW
					
		} else {
			Set letzteZeileTotal = 0
			Set zwischenTotalExkl = zwischenTotalExkl + pos.BetragExklMwst
			Set zwischenTotalInkl = zwischenTotalInkl + pos.BetragInklMwst
			Set zwischenTotalMwst = zwischenTotalMwst + pos.MwstBetrag
		
			Set zwischenTotalExklFW = zwischenTotalExklFW + pos.BetragExklMwstFW
			Set zwischenTotalInklFW = zwischenTotalInklFW + pos.BetragInklMwstFW
			Set zwischenTotalMwstFW = zwischenTotalMwstFW + pos.MwstBetragFW
		
			Set gesamtTotalExkl = gesamtTotalExkl + pos.BetragExklMwst
			Set gesamtTotalInkl = gesamtTotalInkl + pos.BetragInklMwst
			Set gesamtTotalMwst = gesamtTotalMwst + pos.MwstBetrag
			
			Set gesamtTotalExklFW = gesamtTotalExklFW + pos.BetragExklMwstFW
			Set gesamtTotalInklFW = gesamtTotalInklFW + pos.BetragInklMwstFW
			Set gesamtTotalMwstFW = gesamtTotalMwstFW + pos.MwstBetragFW
			
			Set zwischenTotalNAbzugExkl = zwischenTotalNAbzugExkl + pos.Nettobetrag1ExklMwstEW
			Set zwischenTotalNAbzugExklFW = zwischenTotalNAbzugExklFW + pos.Nettobetrag1ExklMwstFW
			Set gesamtTotalNAbzugExkl = gesamtTotalNAbzugExkl + pos.Nettobetrag2ExklMwstEW
			Set gesamtTotalNAbzugExklFW = gesamtTotalNAbzugExklFW + pos.Nettobetrag2ExklMwstFW
			
			if (pos.BetragExklMwst > lastKorrBetrag) {
				Set lastKorrOid = pos.%Id()
				Set lastKorrBetrag = pos.BetragExklMwst
			}
		}
		KILL pos
			
		&sql(FETCH C3)
 	}
 	
    &sql(CLOSE C3)	

	Quit status
]]></Implementation>
</Method>

<Method name="RecalcMwst">
<ClassMethod>1</ClassMethod>
<FormalSpec>auftragskopfOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	Set posOid = ""
	&sql(DECLARE C4 CURSOR FOR
		 SELECT ID Into :posOid
		 FROM DBFaktEK.Bestellungspos 
		 WHERE Bestellungskopf=:auftragskopfOid AND 
		 	   NVL(KorrekturMwst,0) <> 0)
		 
	&sql(OPEN C4)
 	&sql(FETCH C4)
 	
 	While (SQLCODE = 0) { 
 	
		 set pos = ##class(DBFaktEK.Bestellungspos).%OpenId(posOid)
		 if (pos '= "") {
			w "Reset Pos "_posOid,!
			Set pos.MwstBetrag = pos.MwstBetrag - pos.KorrekturMwst
			if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
				Set pos.BetragInklMwst = (pos.BetragInklMwst - pos.KorrekturMwst)
			} elseif ((pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) ||
				(pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGURPROD())) {
				Set pos.BetragExklMwst = (pos.BetragExklMwst + pos.KorrekturMwst)
			}
			Set pos.KorrekturMwst = 0
			Do pos.%Save()
		 }
				
		&sql(FETCH C4)
 	}
    &sql(CLOSE C4)
	
	set status = $$$OK
	
	Set posOid = ""
	&sql(DECLARE C5 CURSOR FOR
		 SELECT ID Into :posOid
		 FROM DBFaktEK.Bestellungspos 
		 WHERE Bestellungskopf=:auftragskopfOid AND 
		 	   BetragExklMwst <> 0)
		 
	&sql(OPEN C5)
 	&sql(FETCH C5)
 	
 	While (SQLCODE = 0) { 
 	
		set pos = ##class(DBFaktEK.Bestellungspos).%OpenId(posOid)
		if (pos '= "" && pos.Mwst '= "") {
			if (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
				if (pos.BetragExklMwst '= (pos.BetragInklMwst-pos.MwstBetrag)) {
					w "Pos "_posOid_" stimmt nicht Exkl = Inkl-Mwst",!
					w "Old MwstBetrag: "_pos.MwstBetrag
					Set pos.MwstBetrag = ##class(DBUtils.NumberUtils).RoundGemEinst(pos.Bestellungskopf.Mandant, pos.BetragExklMwst*pos.MwstSatz/100)
					w " New MwstBetrag: "_pos.MwstBetrag,!
					w "Old InklBetrag: "_pos.BetragInklMwst
					Set pos.BetragInklMwst = pos.BetragExklMwst+pos.MwstBetrag
					w " New InklBetrag: "_pos.BetragInklMwst,!
					DO pos.%Save()
				}
			} elseif ((pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) || (pos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGURPROD())) {
				if (pos.BetragInklMwst '= (pos.BetragExklMwst+pos.MwstBetrag)) {
					w "Pos "_posOid_" stimmt nicht Inkl = Exkl+Mwst",!
					w "Old BetragExklMwst: "_pos.BetragExklMwst
					Set pos.BetragExklMwst = ##class(DBUtils.NumberUtils).RoundGemEinst(pos.Bestellungskopf.Mandant, pos.BetragInklMwst/(1+pos.MwstSatz/100))
					w " New BetragExklMwst: "_pos.BetragExklMwst,!
					w "Old MwstBetrag: "_pos.MwstBetrag
					Set pos.MwstBetrag = pos.BetragInklMwst-pos.BetragExklMwst
					w " New MwstBetrag: "_pos.MwstBetrag,!
					DO pos.%Save()
				}
			}
		}             
		&sql(FETCH C5)
 	}
    &sql(CLOSE C5)

	
	Set rset = ##class(%ResultSet).%New("DBFaktEK.AF.BestellungsKopfAF.ListeMwstByCodes")
	Do rset.Execute(auftragskopfOid, "de")
	While (rset.Next()) {
	   Set mwstOid = rset.Data("Mwst")
	   Set myMwstBetrag = rset.Data("MwstBetrag")
	   w "MwstBetrag "_myMwstBetrag,!
	   Set mwstSatz = rset.Data("MwstSatz")
	   Set calcMwstBetrag = 0
	   Set mwstCode = rset.Data("MwstCode")
	   w "-------------------------------------------------",!
	   w "MwstCode: "_mwstCode_" berechnung OID "_mwstOid,!
	   
	   Set strSQL="SELECT SUM(Nettobetrag2ExklMwstEW) as Betrag, Bestellungskopf->Mandant as Mandant FROM DBFaktEK.Bestellungspos WHERE Bestellungskopf="_auftragskopfOid_" and Mwst->ID="_mwstOid
	   Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	   Do rs.Prepare(strSQL)
	   Set sc=rs.Execute()
	   if ($$$ISERR(sc)) {
		w "DBFaktEK.Bestellungspos.RecalcMwst - Fehler bei SQL-Statement",!
	   }
	   while (rs.Next()) {
		   Set calcMwstBetrag = rs.Data("Betrag")
		   Set mandant = rs.Data("Mandant")
		   Set calcMwstBetrag = ##class(DBUtils.NumberUtils).RoundGemEinst(mandant, calcMwstBetrag / 100 * mwstSatz)
	   }
	   
	   if (calcMwstBetrag '= myMwstBetrag) {
		   w "Abweichung von Beträgen "_calcMwstBetrag_" zu "_myMwstBetrag,!
		   set korrBetrag = calcMwstBetrag - myMwstBetrag
		   
		   Set strSQL="SELECT TOP 1 ID FROM DBFaktEK.Bestellungspos WHERE Bestellungskopf="_auftragskopfOid_" and Mwst->ID="_mwstOid_" ORDER BY ABS(BetragExklMwst) DESC"
		   Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		   Do rs.Prepare(strSQL)
		   Set sc=rs.Execute()
		   if ($$$ISERR(sc)) {
			w "DBFaktEK.Bestellungspos.RecalcMwst - Fehler bei SQL-Statement",!
		   }
		   if (rs.Next()) {
			   Set oidPos = rs.Data("ID")
			   set korrPos = ##class(DBFaktEK.Bestellungspos).%OpenId(oidPos)
				if (korrPos '= "") {
					w "MwstBetrag vor Change "_korrPos.MwstBetrag_" Korrbetrag "_korrPos.KorrekturMwst,!
					Set korrPos.MwstBetrag = (korrPos.MwstBetrag + korrBetrag)
				   	if (korrPos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
						Set korrPos.BetragInklMwst = (korrPos.BetragInklMwst + korrBetrag)
					} elseif ((korrPos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) ||
							(korrPos.Bestellungskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGURPROD())) {
	              		Set korrPos.BetragExklMwst = (korrPos.BetragExklMwst - korrBetrag)
					}
					Set korrPos.KorrekturMwst =  korrBetrag
				   	Set status = korrPos.%Save()
				   	w "Korrigiere "_oidPos_" um "_korrBetrag_" auf MwstBetrag "_korrPos.MwstBetrag,!
			   }
		   }
	   }
	   w "-------------------------------------------------",!
	}
	Quit status
]]></Implementation>
</Method>

<Method name="CalcArtikelrabatt">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandOid:%String,betrag:%Decimal(SCALE=5),prozentsatz:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set r = 0
	Set r = ##class(DBUtils.NumberUtils).RoundGemEinst(mandOid, betrag / 100 * prozentsatz)
	Quit r
]]></Implementation>
</Method>

<Method name="CalcArtikelrabattFW">
<ClassMethod>1</ClassMethod>
<FormalSpec>betrag:%Decimal(SCALE=5),prozentsatz:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set r = 0
	Set r = ##class(DBUtils.NumberUtils).Round(betrag / 100 * prozentsatz,2)
	Quit r
]]></Implementation>
</Method>

<Trigger name="Update">
<Code>	new auftragId
	new status
	
	do ##class(DBFaktEK.Bestellungskopf).SetBStatusMutiertClass({Bestellungskopf*N})
	
	If ($GET(^FaktAufDetStopTrg(auftragId))="") {
		Set status = ##class(DBFaktEK.Bestellungspos).RecalcRabattTotal({Bestellungskopf*N})
		if ($$$ISERR(status)) {
			w "DBFaktEK.Bestellungspos.Update - Fehler bei RabattTotal-Berechnung",!
			w status,!
		}
	}</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="Insert">
<Code>	new auftragId
	new status
	
	set auftragId = {Bestellungskopf*N}
	do ##class(DBFaktEK.Bestellungskopf).SetBStatusMutiertClass(auftragId)
	
	Set status = ##class(DBFaktEK.Bestellungspos).RecalcRabattTotal(auftragId)
	if ($$$ISERR(status)) {
		w "DBFaktEK.Bestellungspos.Insert - Fehler bei RabattTotal-Berechnung",!
		w status,!
	}</Code>
<Event>INSERT</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="trgAfterDelete">
<Code>	w !,"Trigger After Del Bestellungspos",!
	new myId
	new status
	set myId = {ID*O}
	
	new auftragId
	set auftragId = {Bestellungskopf*O}
	
	Set status = ##class(DBFaktEK.Bestellungspos).RecalcRabattTotal(auftragId)
	if ($$$ISERR(status)) {
		w "DBFaktEK.Bestellungspos.trgAfterDelete - Fehler bei RabattTotal-Berechnung",!
		w status,!
	}</Code>
<Event>DELETE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="trgBeforeDelete">
<Code>	w !,"Before delete Bestellungspos",!
	new myId
	new auf
	new res
	
	set myId = {ID*O}
	
	do ##class(DBFaktEK.Bestellungskopf).SetBStatusMutiertClass({Bestellungskopf*N})
	
	d ..CheckLager(myId)
	
	
	set res = ##class(DBUtils.ClassHelper).DeleteManyRelations("DBFaktEK.Bestellungspos", myId)
	
	Quit res</Code>
<Event>DELETE</Event>
<Foreach>row</Foreach>
</Trigger>

<Method name="ChangePosNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>BestellungOid:%String,AltPosNr:%Integer,NewPosNr:%Integer</FormalSpec>
<Implementation><![CDATA[
	Set strSQL = "SELECT ID , PositionsNr, "
	set strSQL = strSQL_"NVL(ZusatztextId,0) As ZusatztextId FROM DBFaktEK.Bestellungspos t WHERE Bestellungskopf = '"_BestellungOid_"' and PositionsNr = "_AltPosNr
	
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			// Init pro Detailposition
			Set posId =rs.Data("ID")
			// Objekt öffnen
			set detPos = ##class(DBFaktEK.Bestellungspos).%OpenId(posId)
			if (detPos '= "") {
				set detPos.PositionsNr = NewPosNr
				d detPos.%Save()
				k detPos
			}
		}
	}
	
	Quit sc
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Bestellungspos")</DataLocation>
<DefaultData>BestellungsposDefaultData</DefaultData>
<IdLocation>^DBFaktEK.BestellungskopfC("Bestellungspos")</IdLocation>
<IndexLocation>^DBFaktEK.BestellungsposI</IndexLocation>
<StreamLocation>^DBFaktEK.BestellungsposS</StreamLocation>
<Data name="BestellungsposDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Annahmedatum</Value>
</Value>
<Value name="4">
<Value>Lagerstatus</Value>
</Value>
<Value name="5">
<Value>BestellNr</Value>
</Value>
<Value name="6">
<Value>DetailText</Value>
</Value>
<Value name="7">
<Value>Menge</Value>
</Value>
<Value name="8">
<Value>BestellteMenge</Value>
</Value>
<Value name="9">
<Value>Preis</Value>
</Value>
<Value name="10">
<Value>PreisFW</Value>
</Value>
<Value name="11">
<Value>RabattProzent</Value>
</Value>
<Value name="12">
<Value>RabattBetrag</Value>
</Value>
<Value name="13">
<Value>MwstSatz</Value>
</Value>
<Value name="14">
<Value>MwstSatzExport</Value>
</Value>
<Value name="15">
<Value>MwstBetrag</Value>
</Value>
<Value name="16">
<Value>BetragExklMwst</Value>
</Value>
<Value name="17">
<Value>BetragInklMwst</Value>
</Value>
<Value name="18">
<Value>BetragInklMwstFW</Value>
</Value>
<Value name="19">
<Value>Warenaufwand</Value>
</Value>
<Value name="20">
<Value>GewichtNetto</Value>
</Value>
<Value name="21">
<Value>ParzellenNr</Value>
</Value>
<Value name="22">
<Value>GewichtTara</Value>
</Value>
<Value name="23">
<Value>GewichtBrutto</Value>
</Value>
<Value name="24">
<Value>ZusatztextID</Value>
</Value>
<Value name="25">
<Value>GrammJeEinheit</Value>
</Value>
<Value name="26">
<Value>GrammJeLaufmeter</Value>
</Value>
<Value name="27">
<Value>Artikel</Value>
</Value>
<Value name="28">
<Value>Herkunft</Value>
</Value>
<Value name="29">
<Value>Mengeneinheit</Value>
</Value>
<Value name="30">
<Value>Mwst</Value>
</Value>
<Value name="31">
<Value>Artikelcode</Value>
</Value>
<Value name="32">
<Value>Vertreter</Value>
</Value>
<Value name="33">
<Value>Lagerort</Value>
</Value>
<Value name="34">
<Value>MwstBetragFW</Value>
</Value>
<Value name="35">
<Value>BetragExklMwstFW</Value>
</Value>
<Value name="36">
<Value>RabattBetragFW</Value>
</Value>
<Value name="37">
<Value>Artikelrabatt1ExklMwstEW</Value>
</Value>
<Value name="38">
<Value>Artikelrabatt1InklMwstEW</Value>
</Value>
<Value name="39">
<Value>Artikelrabatt1InProzent</Value>
</Value>
<Value name="40">
<Value>Artikelrabatt2ExklMwstEW</Value>
</Value>
<Value name="41">
<Value>Artikelrabatt2InklMwstEW</Value>
</Value>
<Value name="42">
<Value>Artikelrabatt2InProzent</Value>
</Value>
<Value name="43">
<Value>Artikelrabatt1ExklMwstFW</Value>
</Value>
<Value name="44">
<Value>Artikelrabatt1InklMwstFW</Value>
</Value>
<Value name="45">
<Value>Artikelrabatt2ExklMwstFW</Value>
</Value>
<Value name="46">
<Value>Artikelrabatt2InklMwstFW</Value>
</Value>
<Value name="47">
<Value>Abteilung</Value>
</Value>
<Value name="48">
<Value>SachbearbeiterNr</Value>
</Value>
<Value name="49">
<Value>SachbearbeiterBenutzername</Value>
</Value>
<Value name="50">
<Value>SachbearbeiterVorname</Value>
</Value>
<Value name="51">
<Value>SachbearbeiterName</Value>
</Value>
<Value name="52">
<Value>EPProvisorisch</Value>
</Value>
<Value name="53">
<Value>DetailPreis</Value>
</Value>
<Value name="54">
<Value>MargeProzent</Value>
</Value>
<Value name="55">
<Value>Buchungscode</Value>
</Value>
<Value name="56">
<Value>KontraktMengeEingetrag</Value>
</Value>
<Value name="57">
<Value>KorrekturMwst</Value>
</Value>
<Value name="58">
<Value>ZaehlerNr</Value>
</Value>
<Value name="59">
<Value>StandAlt</Value>
</Value>
<Value name="60">
<Value>StandNeu</Value>
</Value>
<Value name="61">
<Value>Tage</Value>
</Value>
<Value name="62">
<Value>DetailText2</Value>
</Value>
<Value name="63">
<Value>Lm</Value>
</Value>
</Data>
<Property name="Annahmedatum"/>
<Property name="Artikel"/>
<Property name="Artikelcode"/>
<Property name="Artikelrabatt1ExklMwstEW"/>
<Property name="Artikelrabatt1ExklMwstFW"/>
<Property name="Artikelrabatt1InProzent"/>
<Property name="Artikelrabatt1InklMwstEW"/>
<Property name="Artikelrabatt1InklMwstFW"/>
<Property name="Artikelrabatt1MwstbetragEW"/>
<Property name="Artikelrabatt1MwstbetragFW"/>
<Property name="Artikelrabatt2ExklMwstEW"/>
<Property name="Artikelrabatt2ExklMwstFW"/>
<Property name="Artikelrabatt2InProzent"/>
<Property name="Artikelrabatt2InklMwstEW"/>
<Property name="Artikelrabatt2InklMwstFW"/>
<Property name="Artikelrabatt2MwstbetragEW"/>
<Property name="Artikelrabatt2MwstbetragFW"/>
<Property name="BestellNr"/>
<Property name="BestellteMenge"/>
<Property name="Bestellungskopf"/>
<Property name="BetragExklMwst"/>
<Property name="BetragExklMwstFW"/>
<Property name="BetragInklMwst"/>
<Property name="BetragInklMwstFW"/>
<Property name="DetailPreis"/>
<Property name="DetailText"/>
<Property name="DetailText2"/>
<Property name="EPProvisorisch"/>
<Property name="GewichtBrutto"/>
<Property name="GewichtNetto"/>
<Property name="GewichtTara"/>
<Property name="GrammJeEinheit"/>
<Property name="GrammJeLaufmeter"/>
<Property name="Herkunft"/>
<Property name="KorrekturMwst"/>
<Property name="Lagerort"/>
<Property name="Lagerstatus"/>
<Property name="MargeProzent"/>
<Property name="Menge"/>
<Property name="Mengeneinheit"/>
<Property name="Mwst"/>
<Property name="MwstBetrag"/>
<Property name="MwstBetragFW"/>
<Property name="MwstSatz"/>
<Property name="MwstSatzExport"/>
<Property name="Nettobetrag1ExklMwstEW"/>
<Property name="Nettobetrag1ExklMwstFW"/>
<Property name="Nettobetrag1InklMwstEW"/>
<Property name="Nettobetrag1InklMwstFW"/>
<Property name="Nettobetrag1MwstbetragEW"/>
<Property name="Nettobetrag1MwstbetragFW"/>
<Property name="Nettobetrag2ExklMwstEW"/>
<Property name="Nettobetrag2ExklMwstFW"/>
<Property name="Nettobetrag2InklMwstEW"/>
<Property name="Nettobetrag2InklMwstFW"/>
<Property name="Nettobetrag2MwstbetragEW"/>
<Property name="Nettobetrag2MwstbetragFW"/>
<Property name="ParzellenNr"/>
<Property name="PositionsNr"/>
<Property name="Preis"/>
<Property name="PreisFW"/>
<Property name="RabattBetrag"/>
<Property name="RabattBetragFW"/>
<Property name="RabattProzent"/>
<Property name="SachbearbeiterBenutzername"/>
<Property name="SachbearbeiterName"/>
<Property name="SachbearbeiterNr"/>
<Property name="SachbearbeiterVorname"/>
<Property name="Vertreter"/>
<Property name="Warenaufwand"/>
<Property name="ZaehlerNr"/>
<Property name="ZusatztextID"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFaktEK.Konst">
<Super>%RegisteredObject</Super>
<TimeChanged>62210,38769.402165</TimeChanged>
<TimeCreated>61689,47697.532126</TimeCreated>

<Method name="LagerstatusKeinLager">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="LagerstatusReserviert">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="LagerstatusNachgefuehrt">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Quit 2
]]></Implementation>
</Method>

<Method name="LagerstatusBestellt">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Quit 3
]]></Implementation>
</Method>

<Method name="AcArtikelNurText">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 8
]]></Implementation>
</Method>

<Method name="AcSeitenumbruch">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 40
]]></Implementation>
</Method>

<Method name="AcRabattZwischentotal">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 65
]]></Implementation>
</Method>

<Method name="AcRabattGesamttotal">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 66
]]></Implementation>
</Method>

<Method name="AcZwischentotal">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 67
]]></Implementation>
</Method>

<Method name="AcGesamttotal">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 68
]]></Implementation>
</Method>

<Method name="AcZwischentotalVorRabatt">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 69
]]></Implementation>
</Method>

<Method name="BearbeitungsstatusNichtGedruckt">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="BearbeitungsstatusGedruckt">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="BearbeitungsstatusMutiert">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Quit 2
]]></Implementation>
</Method>

<Method name="FormularTypOA">
<Description>
-----------------
Formulartypen	*
-----------------
Formulartyp Offertenanfrage</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="FormularTypBE">
<Description>
Formulartyp Bestellung</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="FormularTypAS">
<Description>
Formulartyp Annahmeschein</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 2
]]></Implementation>
</Method>

<Method name="FormularTypAR">
<Description>
Formulartyp Abrechnung</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 3
]]></Implementation>
</Method>

<Method name="FormularTypBZ">
<Description>
Formulartyp Barzahlung</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 4
]]></Implementation>
</Method>

<Method name="FormularTypFM">
<Description>
Formulartyp Fax / Mail</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 12
]]></Implementation>
</Method>

<Method name="SeitenTyp1Seite">
<Description>
-------------------------
Seitentypen Formulare	*
-------------------------
1. Seite Original</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="SeitenTypFolgeSeite">
<Description>
Folge Seite Original</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="SeitenTyp1SeiteKopie">
<Description>
1. Seite Kopie</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 2
]]></Implementation>
</Method>

<Method name="SeitenTypFolgeSeiteKopie">
<Description>
Folge Seite Kopie</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 3
]]></Implementation>
</Method>
</Class>


<Class name="DBFaktEK.LieferantenStrg">
<Super>DBFaktEK.BestStrg,%XML.Adaptor</Super>
<TimeChanged>62221,66924.070547</TimeChanged>
<TimeCreated>61689,47879.099204</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Lieferant">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKStrgLieferant</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lieferant"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="LieferantIndex">
<Properties>Lieferant</Properties>
</Index>

<Method name="ExistsBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.LieferantenStrg 
	     WHERE Lieferant=:AdrOid)
	quit (id '= "")
]]></Implementation>
</Method>

<Method name="GetBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>DBFaktEK.BestStrg</ReturnType>
<Implementation><![CDATA[
	set steuerung = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.LieferantenStrg 
	     WHERE Lieferant=:AdrOid)
	if (id '= "") {
		set steuerung = ##Class(DBFaktEK.LieferantenStrg).%OpenId(id)
	} else {
		set steuerung = ##Class(DBFaktEK.LieferantenStrg).%New()
	}
	quit steuerung
]]></Implementation>
</Method>

<Method name="DeleteBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.LieferantenStrg 
	     WHERE Lieferant=:AdrOid)
	if (id '= "") {
		set status = ##Class(DBFaktEK.BestStrg).%DeleteId(id)
	}
	quit status
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>LieferantenStrgDefaultData</DefaultData>
<Data name="LieferantenStrgDefaultData">
<Subscript>"LieferantenStrg"</Subscript>
<Value name="1">
<Value>Lieferant</Value>
</Value>
</Data>
</Storage>
</Class>


<Project name="DBFaktEK" Target="##class(DBFaktEK.Bestellungspos).%OnDelete(&apos;1463||50358&apos;)" TargetType="2">
  <Items>
    <ProjectItem name="DBFaktEK.AF.BestellungsKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.BestellungspositionAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.ArtikelcodeDetailAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.DrucktypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.FormularAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.FusstextAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.SteuerungBestellungsbearbAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblDataEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblFussAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblFussEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblFussSkontoEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblKopfEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblSREntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.SD.TblSRgkEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.AF.WerkzeugPruefungAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.BestStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.Bestellungskopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.Bestellungspos" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.Konst" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.LieferantenStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.ArtikelcodeDetail" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.DTypForm" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.DTypRepHead" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.DTypTblFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.DTypTblKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.Drucktyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.FormDrucker" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.FormDruckerBen" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.Formular" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.Fusstext" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.Hilfstexte" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.StrgBestellung" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblDataE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblFussE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblFussSktE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblKopfE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblSREntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.SD.TblSRgkE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.TypStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFaktEK.WerkzeugPruefung" type="CLS"></ProjectItem>
  </Items>
</Project>


<Class name="DBFaktEK.SD.ArtikelcodeDetail">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57267.80207</TimeChanged>
<TimeCreated>62046,37013.021245</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="Artikelcode">
<Type>%Integer</Type>
</Property>

<Index name="MandantArtikelcodeIdx">
<Properties>Mandant,Artikelcode</Properties>
<Unique>1</Unique>
</Index>

<Method name="DeleteAll">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set myId = ""
	&sql(DECLARE MyCursor CURSOR FOR 
        SELECT ID INTO :myId 
        	FROM DBFaktEK_SD.ArtikelcodeDetail
        	WHERE Mandant=:MandantOid)
        
	&sql(OPEN MyCursor)
	
	&sql(FETCH MyCursor)
   	while (SQLCODE=0) { 
        do ##class(DBFaktEK.SD.ArtikelcodeDetail).%DeleteId(myId)       	

        &sql(FETCH MyCursor)
 	}
 	
   	&sql(CLOSE MyCursor)
   	
   	quit $$$OK
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.ArtikelcodeDetailD</DataLocation>
<DefaultData>ArtikelcodeDetailDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.ArtikelcodeDetailD</IdLocation>
<IndexLocation>^DBFaktEK.SD.ArtikelcodeDetailI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.ArtikelcodeDetailS</StreamLocation>
<Data name="ArtikelcodeDetailDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Artikelcode</Value>
</Value>
</Data>
<Property name="Artikelcode"/>
<Property name="Mandant"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.DTypForm">
<Super>%Persistent</Super>
<TimeChanged>62416,57219.538749</TimeChanged>
<TimeCreated>61719,33935.378324</TimeCreated>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>Formular</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="DrucktypIndex">
<Properties>Drucktyp</Properties>
</Index>

<Property name="Formular">
<Type>DBFaktEK.SD.Formular</Type>
<Cardinality>one</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="FormularIndex">
<Properties>Formular</Properties>
</Index>

<Property name="FormularTyp">
<Type>%Integer</Type>
</Property>

<Index name="PKey">
<Properties>Drucktyp,FormularTyp</Properties>
</Index>

<Method name="GetOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.DTypForm
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetFormularOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT Formular INTO :oid
		 FROM DBFaktEK_SD.DTypForm
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetFormularNrByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	Set nummer = ""
	&sql(SELECT Formular->Nummer INTO :nummer
		 FROM DBFaktEK_SD.DTypForm
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit nummer
]]></Implementation>
</Method>

<Method name="DeleteByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<Implementation><![CDATA[
	&sql(Delete
		 FROM DBFaktEK_SD.DTypForm
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
]]></Implementation>
</Method>

<Method name="OutputStream">
<ClassMethod>1</ClassMethod>
<FormalSpec>DrucktypOid:%String,FormularTyp:%Integer,Sprache:%String</FormalSpec>
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set oid = ##class(DBFaktEK.SD.DTypForm).GetFormularOidByDrucktyp(DrucktypOid, FormularTyp)
	Set Ret=""
	If (oid'="") {
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBCore.ReportStream 
		     WHERE FaktEKFormular=:oid AND Sprache=:Sprache)
		If (Cnt>0) {	
			&sql(SELECT %ID INTO :sID 
				 FROM DBCore.ReportStream 
				 WHERE FaktEKFormular=:oid AND Sprache=:Sprache)
			Set s=##Class(DBCore.ReportStream).%OpenId(sID)
			Set Size=s.DataStream.Size
			Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
		} Else {
			Set StdSprache="de"
			&sql(SELECT count(*) As Cnt INTO :Cnt
			     FROM DBCore.ReportStream 
			     WHERE FaktEKFormular=:oid AND Sprache=:StdSprache)
			If (Cnt>0) {
				&sql(SELECT %ID INTO :sID 
				     FROM DBCore.ReportStream 
				     WHERE FaktEKFormular=:oid AND Sprache=:StdSprache)
				Set s=##Class(DBCore.ReportStream).%OpenId(sID)
				Set Size=s.DataStream.Size
				Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
			}
		}
	}
	Quit tmpStream
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.DTypFormD</DataLocation>
<DefaultData>DTypFormDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.DTypFormD</IdLocation>
<IndexLocation>^DBFaktEK.SD.DTypFormI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.DTypFormS</StreamLocation>
<Data name="DTypFormDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Drucktyp</Value>
</Value>
<Value name="3">
<Value>Formular</Value>
</Value>
<Value name="4">
<Value>FormularTyp</Value>
</Value>
</Data>
<Property name="Drucktyp"/>
<Property name="Formular"/>
<Property name="FormularTyp"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.DTypRepHead">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57219.644714</TimeChanged>
<TimeCreated>61723,33363.334586</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ReportHeader</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="DrucktypIndex">
<Properties>Drucktyp</Properties>
</Index>

<Property name="ReportHeader">
<Type>DBCore.ReportHeader</Type>
<Cardinality>one</Cardinality>
<Inverse>DrucktypFaktEK</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="ReportHeaderIndex">
<Properties>ReportHeader</Properties>
</Index>

<Property name="FormularTyp">
<Type>%Integer</Type>
</Property>

<Property name="SeitenTyp">
<Type>%Integer</Type>
</Property>

<Index name="PKey">
<Properties>Drucktyp,FormularTyp,SeitenTyp</Properties>
</Index>

<Method name="GetOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer,seitenTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.DTypRepHead
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp AND SeitenTyp=:seitenTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetReportHeaderOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer,seitenTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ReportHeader INTO :oid
		 FROM DBFaktEK_SD.DTypRepHead
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp AND SeitenTyp=:seitenTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetReportHeaderNrByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer,seitenTyp:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	Set nummer = ""
	&sql(SELECT ReportHeader->Nummer INTO :nummer
		 FROM DBFaktEK_SD.DTypRepHead
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp AND SeitenTyp=:seitenTyp)
	Quit nummer
]]></Implementation>
</Method>

<Method name="DeleteByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer,seitenTyp:%Integer</FormalSpec>
<Implementation><![CDATA[
	&sql(Delete
		 FROM DBFaktEK_SD.DTypRepHead
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp AND SeitenTyp=:seitenTyp)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.DTypRepHeadD</DataLocation>
<DefaultData>DTypRepHeadDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.DTypRepHeadD</IdLocation>
<IndexLocation>^DBFaktEK.SD.DTypRepHeadI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.DTypRepHeadS</StreamLocation>
<Data name="DTypRepHeadDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Drucktyp</Value>
</Value>
<Value name="3">
<Value>ReportHeader</Value>
</Value>
<Value name="4">
<Value>FormularTyp</Value>
</Value>
<Value name="5">
<Value>SeitenTyp</Value>
</Value>
</Data>
<Property name="Drucktyp"/>
<Property name="FormularTyp"/>
<Property name="ReportHeader"/>
<Property name="SeitenTyp"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.DTypTblFuss">
<Super>%Persistent</Super>
<TimeChanged>62416,57219.751847</TimeChanged>
<TimeCreated>61718,56211.754536</TimeCreated>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>TblFuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="DrucktypIndex">
<Properties>Drucktyp</Properties>
</Index>

<Property name="TblFuss">
<Type>DBFaktEK.SD.TblFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="TblFussIndex">
<Properties>TblFuss</Properties>
</Index>

<Property name="FormularTyp">
<Type>%Integer</Type>
</Property>

<Index name="PKey">
<Properties>Drucktyp,FormularTyp</Properties>
</Index>

<Method name="GetOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.DTypTblFuss
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetFussOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT TblFuss INTO :oid
		 FROM DBFaktEK_SD.DTypTblFuss
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetFussNrByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	Set nummer = ""
	&sql(SELECT TblFuss->Nummer INTO :nummer
		 FROM DBFaktEK_SD.DTypTblFuss
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit nummer
]]></Implementation>
</Method>

<Method name="DeleteByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<Implementation><![CDATA[
	&sql(Delete
		 FROM DBFaktEK_SD.DTypTblFuss
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.DTypTblFussD</DataLocation>
<DefaultData>DTypTblFussDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.DTypTblFussD</IdLocation>
<IndexLocation>^DBFaktEK.SD.DTypTblFussI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.DTypTblFussS</StreamLocation>
<Data name="DTypTblFussDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Drucktyp</Value>
</Value>
<Value name="3">
<Value>TblFuss</Value>
</Value>
<Value name="4">
<Value>FormularTyp</Value>
</Value>
</Data>
<Property name="Drucktyp"/>
<Property name="FormularTyp"/>
<Property name="TblFuss"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.DTypTblKopf">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57219.851373</TimeChanged>
<TimeCreated>61717,60010.848513</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="TblKopf">
<Type>DBFaktEK.SD.TblKopf</Type>
<Cardinality>one</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="TblKopfIndex">
<Properties>TblKopf</Properties>
</Index>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.Drucktyp</Type>
<Cardinality>one</Cardinality>
<Inverse>TblKopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="DrucktypIndex">
<Properties>Drucktyp</Properties>
</Index>

<Property name="FormularTyp">
<Type>%Integer</Type>
</Property>

<Index name="PKey">
<Properties>Drucktyp,FormularTyp</Properties>
</Index>

<Method name="GetOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.DTypTblKopf
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetKopfOidByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT TblKopf INTO :oid
		 FROM DBFaktEK_SD.DTypTblKopf
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetKopfNrByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	Set nummer = ""
	&sql(SELECT TblKopf->Nummer INTO :nummer
		 FROM DBFaktEK_SD.DTypTblKopf
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
	Quit nummer
]]></Implementation>
</Method>

<Method name="DeleteByDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>drucktypOid:%String,formularTyp:%Integer</FormalSpec>
<Implementation><![CDATA[
	&sql(Delete
		 FROM DBFaktEK_SD.DTypTblKopf
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.DTypTblKopfD</DataLocation>
<DefaultData>DTypTblKopfDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.DTypTblKopfD</IdLocation>
<IndexLocation>^DBFaktEK.SD.DTypTblKopfI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.DTypTblKopfS</StreamLocation>
<Data name="DTypTblKopfDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>TblKopf</Value>
</Value>
<Value name="3">
<Value>Drucktyp</Value>
</Value>
<Value name="4">
<Value>FormularTyp</Value>
</Value>
</Data>
<Property name="Drucktyp"/>
<Property name="FormularTyp"/>
<Property name="TblKopf"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.Drucktyp">
<Description>
</Description>
<Super>DBFaktEK.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62227,29196</TimeChanged>
<TimeCreated>61689,38501.714052</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="ASOffertanDrucktyp">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OffertanDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASBestellungDrucktyp">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>BestellungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASAnnahmeDrucktyp">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AnnahmeDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASAbrechnungDrucktyp">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AbrechnungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASBarzahlungDrucktyp">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>BarzahlungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="KopieEindrucken">
<Description>
Kopie eindrucken</Description>
<Type>%Boolean</Type>
</Property>

<Property name="KopieDrehung">
<Description>
Kopie Drehung</Description>
<Type>%Integer</Type>
</Property>

<Property name="KopieNummer">
<Description>
Kopie mit Nummer ergaenzen</Description>
<Type>%Boolean</Type>
</Property>

<Property name="KopieFontName">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="KopieFontSize">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="KopieFontBold">
<Type>%Boolean</Type>
</Property>

<Property name="KopieFontItalic">
<Type>%Boolean</Type>
</Property>

<Property name="KopieFontStrikeout">
<Type>%Boolean</Type>
</Property>

<Property name="KopieFontUnderline">
<Type>%Boolean</Type>
</Property>

<Property name="KopieFontColor">
<Type>%Integer</Type>
</Property>

<Property name="KopieText">
<Description>
Text</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="KopiePosLinks">
<Type>%Integer</Type>
</Property>

<Property name="KopiePosUnten">
<Type>%Integer</Type>
</Property>

<Property name="TextTotalOhneGebinde">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="EzDrucken">
<Type>%Integer</Type>
</Property>

<Property name="TextUebertrag">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GenFontAktiv">
<Type>%Boolean</Type>
</Property>

<Property name="GenFontName">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GenFontSize">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GenFontBold">
<Type>%Boolean</Type>
</Property>

<Property name="GenFontItalic">
<Type>%Boolean</Type>
</Property>

<Property name="GenFontStrikeout">
<Type>%Boolean</Type>
</Property>

<Property name="GenFontUnderline">
<Type>%Boolean</Type>
</Property>

<Property name="GenFontColor">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAktiv">
<Type>%Boolean</Type>
</Property>

<Property name="GenRahmenAktivLinks">
<Type>%Boolean</Type>
</Property>

<Property name="GenRahmenBreiteLinks">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAbstandLinks">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAktivOben">
<Type>%Boolean</Type>
</Property>

<Property name="GenRahmenBreiteOben">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAbstandOben">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAktivRechts">
<Type>%Boolean</Type>
</Property>

<Property name="GenRahmenBreiteRechts">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAbstandRechts">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAktivUnten">
<Type>%Boolean</Type>
</Property>

<Property name="GenRahmenBreiteUnten">
<Type>%Integer</Type>
</Property>

<Property name="GenRahmenAbstandUnten">
<Type>%Integer</Type>
</Property>

<Property name="TblKopf">
<Type>DBFaktEK.SD.DTypTblKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TblFuss">
<Type>DBFaktEK.SD.DTypTblFuss</Type>
<Cardinality>many</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Formular">
<Type>DBFaktEK.SD.DTypForm</Type>
<Cardinality>many</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="ReportHeader">
<Type>DBFaktEK.SD.DTypRepHead</Type>
<Cardinality>many</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="CheckDrucken">
<Type>%Boolean</Type>
</Property>

<Property name="WarenwertTotal">
<Type>%Boolean</Type>
</Property>

<Method name="GetKopieText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..KopieText, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GeKopietTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Drucktyp).%OpenId(myID)
		set text = rs.GetKopieText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetKopieText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..KopieText, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextTotalOhneGebinde">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..TextTotalOhneGebinde, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextTotalOhneGebindeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Drucktyp).%OpenId(myID)
		set text = rs.GetTextTotalOhneGebinde(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetTextTotalOhneGebinde">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..TextTotalOhneGebinde, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK_SD.Drucktyp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetTextUebertrag">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..TextUebertrag, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextUebertragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Drucktyp).%OpenId(myID)
		set text = rs.GetTextUebertrag(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetTextUebertrag">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..TextUebertrag, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="CopyDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// folgende Parameter werden benötigt falls Mandantübergereifend
	///, dstMandOid As %String, overwriteOldEinst As %Boolean
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBFaktEK.SD.Drucktyp).%OpenId(SrcOid)
	set dstMandant = srcAs.Mandant
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(1)
	set dstAs.PositionsNr = newNr
	set dstAs.Mandant = dstMandant
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	
	
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Method name="GetFirstIdOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK_SD.Drucktyp
		 WHERE Mandant = :MandantOid ORDER BY PositionsNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>DrucktypDefaultData</DefaultData>
<Data name="DrucktypDefaultData">
<Structure>listnode</Structure>
<Subscript>"Drucktyp"</Subscript>
<Value name="1">
<Value>KopieEindrucken</Value>
</Value>
<Value name="2">
<Value>KopieDrehung</Value>
</Value>
<Value name="3">
<Value>KopieNummer</Value>
</Value>
<Value name="4">
<Value>KopieFontName</Value>
</Value>
<Value name="5">
<Value>KopieFontSize</Value>
</Value>
<Value name="6">
<Value>KopieFontBold</Value>
</Value>
<Value name="7">
<Value>KopieFontItalic</Value>
</Value>
<Value name="8">
<Value>KopieFontStrikeout</Value>
</Value>
<Value name="9">
<Value>KopieFontUnderline</Value>
</Value>
<Value name="10">
<Value>KopieFontColor</Value>
</Value>
<Value name="11">
<Value>KopiePosLinks</Value>
</Value>
<Value name="12">
<Value>KopiePosUnten</Value>
</Value>
<Value name="13">
<Value>EzDrucken</Value>
</Value>
<Value name="14">
<Value>GenFontAktiv</Value>
</Value>
<Value name="15">
<Value>GenFontName</Value>
</Value>
<Value name="16">
<Value>GenFontSize</Value>
</Value>
<Value name="17">
<Value>GenFontBold</Value>
</Value>
<Value name="18">
<Value>GenFontItalic</Value>
</Value>
<Value name="19">
<Value>GenFontStrikeout</Value>
</Value>
<Value name="20">
<Value>GenFontUnderline</Value>
</Value>
<Value name="21">
<Value>GenFontColor</Value>
</Value>
<Value name="22">
<Value>GenRahmenAktiv</Value>
</Value>
<Value name="23">
<Value>GenRahmenAktivLinks</Value>
</Value>
<Value name="24">
<Value>GenRahmenBreiteLinks</Value>
</Value>
<Value name="25">
<Value>GenRahmenAbstandLinks</Value>
</Value>
<Value name="26">
<Value>GenRahmenAktivOben</Value>
</Value>
<Value name="27">
<Value>GenRahmenBreiteOben</Value>
</Value>
<Value name="28">
<Value>GenRahmenAbstandOben</Value>
</Value>
<Value name="29">
<Value>GenRahmenAktivRechts</Value>
</Value>
<Value name="30">
<Value>GenRahmenBreiteRechts</Value>
</Value>
<Value name="31">
<Value>GenRahmenAbstandRechts</Value>
</Value>
<Value name="32">
<Value>GenRahmenAktivUnten</Value>
</Value>
<Value name="33">
<Value>GenRahmenBreiteUnten</Value>
</Value>
<Value name="34">
<Value>GenRahmenAbstandUnten</Value>
</Value>
<Value name="35">
<Value>CheckDrucken</Value>
</Value>
<Value name="36">
<Value>WarenwertTotal</Value>
</Value>
</Data>
<Data name="KopieText">
<Attribute>KopieText</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBFaktEK.SD.Drucktyp.KopieText"</Subscript>
</Data>
<Data name="TextTotalOhneGebinde">
<Attribute>TextTotalOhneGebinde</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBFaktEK.SD.Drucktyp.TextTotalOhneGebinde"</Subscript>
</Data>
<Data name="TextUebertrag">
<Attribute>TextUebertrag</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBFaktEK.SD.Drucktyp.TextUebertrag"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBFaktEK.SD.FormDrucker">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57267.967407</TimeChanged>
<TimeCreated>61689,38564.391396</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="OfODruckerSeite1">
<Description>
Offerte Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfOSchachtSeite1">
<Description>
Offerte Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfODruckerFolge">
<Description>
Offerte Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfOSchachtFolge">
<Description>
Offerte Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfKDruckerSeite1">
<Description>
Offerte Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfKSchachtSeite1">
<Description>
Offerte Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfKDruckerFolge">
<Description>
Offerte Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OfKSchachtFolge">
<Description>
Offerte Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeODruckerSeite1">
<Description>
Bestellungsbest Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeOSchachtSeite1">
<Description>
Bestellungsbest Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeODruckerFolge">
<Description>
Bestellungsbest Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeOSchachtFolge">
<Description>
Bestellungsbest Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeKDruckerSeite1">
<Description>
Bestellungsbest Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeKSchachtSeite1">
<Description>
Bestellungsbest Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeKDruckerFolge">
<Description>
Bestellungsbest Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BeKSchachtFolge">
<Description>
Bestellungsbest Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsODruckerSeite1">
<Description>
Ruestzettel Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsOSchachtSeite1">
<Description>
Ruestzettel Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsODruckerFolge">
<Description>
Ruestzettel Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsOSchachtFolge">
<Description>
Ruestzettel Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsKDruckerSeite1">
<Description>
Ruestzettel Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsKSchachtSeite1">
<Description>
Ruestzettel Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsKDruckerFolge">
<Description>
Ruestzettel Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AsKSchachtFolge">
<Description>
Ruestzettel Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArODruckerSeite1">
<Description>
Lieferschein Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArOSchachtSeite1">
<Description>
Lieferschein Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArODruckerFolge">
<Description>
Lieferschein Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArOSchachtFolge">
<Description>
Lieferschein Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArKDruckerSeite1">
<Description>
Lieferschein Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArKSchachtSeite1">
<Description>
Lieferschein Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArKDruckerFolge">
<Description>
Lieferschein Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArKSchachtFolge">
<Description>
Lieferschein Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzODruckerSeite1">
<Description>
Barzahlungsquittung Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzOSchachtSeite1">
<Description>
Barzahlungsquittung Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzODruckerFolge">
<Description>
Barzahlungsquittung Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzOSchachtFolge">
<Description>
Barzahlungsquittung Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzKDruckerSeite1">
<Description>
Barzahlungsquittung Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzKSchachtSeite1">
<Description>
Barzahlungsquittung Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzKDruckerFolge">
<Description>
Barzahlungsquittung Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="BzKSchachtFolge">
<Description>
Barzahlungsquittung Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="FaxDrucker">
<Description>
Fax Drucker</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetFormDrucker">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BenutzerOid:%String</FormalSpec>
<ReturnType>DBFaktEK.SD.FormDrucker</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.FormDruckerBen
		 WHERE Mandant=:MandantOid AND Benutzer=:BenutzerOid)
	
	if (oid="") {
		&sql(SELECT ID INTO :oid
			 FROM DBFaktEK_SD.FormDrucker
			 WHERE Mandant=:MandantOid AND ID NOT IN(SELECT ID FROM DBFaktEK_SD.FormDruckerBen WHERE Mandant=:MandantOid))
	}
	
	set res = ""
	if (oid'="") {
		set res = ##class(DBFaktEK.SD.FormDrucker).%OpenId(oid)
	} else {
		set res = ##class(DBFaktEK.SD.FormDrucker).%New()
		do res.%Save()		
	}

	Quit res
]]></Implementation>
</Method>

<Method name="GetFormDruckerOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.FormDrucker
		 WHERE Mandant=:MandantOid
		  AND ID NOT IN(SELECT ID FROM DBFaktEK_SD.FormDruckerBen WHERE Mandant=:MandantOid))
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.FormDruckerD</DataLocation>
<DefaultData>FormDruckerDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.FormDruckerD</IdLocation>
<IndexLocation>^DBFaktEK.SD.FormDruckerI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.FormDruckerS</StreamLocation>
<Data name="FormDruckerDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>OfODruckerSeite1</Value>
</Value>
<Value name="4">
<Value>OfOSchachtSeite1</Value>
</Value>
<Value name="5">
<Value>OfODruckerFolge</Value>
</Value>
<Value name="6">
<Value>OfOSchachtFolge</Value>
</Value>
<Value name="7">
<Value>OfKDruckerSeite1</Value>
</Value>
<Value name="8">
<Value>OfKSchachtSeite1</Value>
</Value>
<Value name="9">
<Value>OfKDruckerFolge</Value>
</Value>
<Value name="10">
<Value>OfKSchachtFolge</Value>
</Value>
<Value name="11">
<Value>BeODruckerSeite1</Value>
</Value>
<Value name="12">
<Value>BeOSchachtSeite1</Value>
</Value>
<Value name="13">
<Value>BeODruckerFolge</Value>
</Value>
<Value name="14">
<Value>BeOSchachtFolge</Value>
</Value>
<Value name="15">
<Value>BeKDruckerSeite1</Value>
</Value>
<Value name="16">
<Value>BeKSchachtSeite1</Value>
</Value>
<Value name="17">
<Value>BeKDruckerFolge</Value>
</Value>
<Value name="18">
<Value>BeKSchachtFolge</Value>
</Value>
<Value name="19">
<Value>AsODruckerSeite1</Value>
</Value>
<Value name="20">
<Value>AsOSchachtSeite1</Value>
</Value>
<Value name="21">
<Value>AsODruckerFolge</Value>
</Value>
<Value name="22">
<Value>AsOSchachtFolge</Value>
</Value>
<Value name="23">
<Value>AsKDruckerSeite1</Value>
</Value>
<Value name="24">
<Value>AsKSchachtSeite1</Value>
</Value>
<Value name="25">
<Value>AsKDruckerFolge</Value>
</Value>
<Value name="26">
<Value>AsKSchachtFolge</Value>
</Value>
<Value name="27">
<Value>ArODruckerSeite1</Value>
</Value>
<Value name="28">
<Value>ArOSchachtSeite1</Value>
</Value>
<Value name="29">
<Value>ArODruckerFolge</Value>
</Value>
<Value name="30">
<Value>ArOSchachtFolge</Value>
</Value>
<Value name="31">
<Value>ArKDruckerSeite1</Value>
</Value>
<Value name="32">
<Value>ArKSchachtSeite1</Value>
</Value>
<Value name="33">
<Value>ArKDruckerFolge</Value>
</Value>
<Value name="34">
<Value>ArKSchachtFolge</Value>
</Value>
<Value name="35">
<Value>BzODruckerSeite1</Value>
</Value>
<Value name="36">
<Value>BzOSchachtSeite1</Value>
</Value>
<Value name="37">
<Value>BzODruckerFolge</Value>
</Value>
<Value name="38">
<Value>BzOSchachtFolge</Value>
</Value>
<Value name="39">
<Value>BzKDruckerSeite1</Value>
</Value>
<Value name="40">
<Value>BzKSchachtSeite1</Value>
</Value>
<Value name="41">
<Value>BzKDruckerFolge</Value>
</Value>
<Value name="42">
<Value>BzKSchachtFolge</Value>
</Value>
<Value name="43">
<Value>FaxDrucker</Value>
</Value>
</Data>
<Property name="ArKDruckerFolge"/>
<Property name="ArKDruckerSeite1"/>
<Property name="ArKSchachtFolge"/>
<Property name="ArKSchachtSeite1"/>
<Property name="ArODruckerFolge"/>
<Property name="ArODruckerSeite1"/>
<Property name="ArOSchachtFolge"/>
<Property name="ArOSchachtSeite1"/>
<Property name="AsKDruckerFolge"/>
<Property name="AsKDruckerSeite1"/>
<Property name="AsKSchachtFolge"/>
<Property name="AsKSchachtSeite1"/>
<Property name="AsODruckerFolge"/>
<Property name="AsODruckerSeite1"/>
<Property name="AsOSchachtFolge"/>
<Property name="AsOSchachtSeite1"/>
<Property name="BeKDruckerFolge"/>
<Property name="BeKDruckerSeite1"/>
<Property name="BeKSchachtFolge"/>
<Property name="BeKSchachtSeite1"/>
<Property name="BeODruckerFolge"/>
<Property name="BeODruckerSeite1"/>
<Property name="BeOSchachtFolge"/>
<Property name="BeOSchachtSeite1"/>
<Property name="BzKDruckerFolge"/>
<Property name="BzKDruckerSeite1"/>
<Property name="BzKSchachtFolge"/>
<Property name="BzKSchachtSeite1"/>
<Property name="BzODruckerFolge"/>
<Property name="BzODruckerSeite1"/>
<Property name="BzOSchachtFolge"/>
<Property name="BzOSchachtSeite1"/>
<Property name="FaxDrucker"/>
<Property name="Mandant"/>
<Property name="OfKDruckerFolge"/>
<Property name="OfKDruckerSeite1"/>
<Property name="OfKSchachtFolge"/>
<Property name="OfKSchachtSeite1"/>
<Property name="OfODruckerFolge"/>
<Property name="OfODruckerSeite1"/>
<Property name="OfOSchachtFolge"/>
<Property name="OfOSchachtSeite1"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.FormDruckerBen">
<Description>
</Description>
<Super>DBFaktEK.SD.FormDrucker,%XML.Adaptor</Super>
<TimeChanged>62222,66248.908574</TimeChanged>
<TimeCreated>61689,38599.558628</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Benutzer">
<Type>DBCore.Benutzer</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktEKFormDruckerBenBenutzer</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Benutzer"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="BenutzerIndex">
<Properties>Benutzer</Properties>
</Index>

<Index name="MandantBenutzerIndex">
<Properties>Mandant,Benutzer</Properties>
<Unique>1</Unique>
</Index>

<Method name="GetFormDruckerBenOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BenutzerOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.FormDruckerBen
		 WHERE Mandant=:MandantOid AND Benutzer=:BenutzerOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>FormDruckerBenDefaultData</DefaultData>
<Data name="FormDruckerBenDefaultData">
<Structure>listnode</Structure>
<Subscript>"FormDruckerBen"</Subscript>
<Value name="1">
<Value>Benutzer</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFaktEK.SD.Formular">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57268.171449</TimeChanged>
<TimeCreated>61349,55962.208335</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Index name="MandantNummerIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bezeichnung">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="FormularFile">
<Type>DBCore.ReportStream</Type>
<Cardinality>many</Cardinality>
<Inverse>FaktEKFormular</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.DTypForm</Type>
<Cardinality>many</Cardinality>
<Inverse>Formular</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Bezeichnung, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Formular).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Bezeichnung, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBFaktEK_SD.Formular WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

<Method name="OutputStream">
<FormalSpec>Sprache:%String</FormalSpec>
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set oid = ..%Id()
	Set Ret=""
	If (oid'="") {
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBCore.ReportStream 
		     WHERE FaktEKFormular=:oid AND Sprache=:Sprache)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBCore.ReportStream 
				 WHERE FaktEKFormular=:oid AND Sprache=:Sprache)
			Set s=##Class(DBCore.ReportStream).%OpenId(sID)
			Set Size=s.DataStream.Size
			Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
		} Else {
			Set StdSprache="de"
			&sql(SELECT count(*) As Cnt INTO :Cnt
			     FROM DBCore.ReportStream 
			     WHERE FaktEKFormular=:oid AND Sprache=:StdSprache)
			If (Cnt>0) {
				&sql(SELECT %ID INTO :sID 
				     FROM DBCore.ReportStream 
				     WHERE FaktEKFormular=:oid AND Sprache=:StdSprache)
				Set s=##Class(DBCore.ReportStream).%OpenId(sID)
				Set Size=s.DataStream.Size
				Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
			}
		}
	}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="InputStream">
<FormalSpec>Stream:%Library.GlobalBinaryStream,Sprache:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res=0
	Set oid=..%Id()
	Set sID = ""
	If (oid'="") {
		Set Cnt=0
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBCore.ReportStream 
		     WHERE FaktEKFormular=:oid AND Sprache=:Sprache)
		If (Cnt=0) {
			Set n=##Class(DBCore.ReportStream).%New()
			Set n.Sprache = Sprache
			Set n.FaktEKFormular = ##Class(DBFaktEK.SD.Formular).%OpenId(oid)
			Set Ret=n.%Save()
			Set n=""
			Set res=(Ret=1)
			Quit:'res res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBCore.ReportStream 
		     WHERE FaktEKFormular=:oid AND 
		           Sprache=:Sprache)
		Set s=##Class(DBCore.ReportStream).%OpenId(sID)
		Set Ret=s.DataStream.CopyFromAndSave(Stream)
		Set RetS = s.%Save()
		Set res=((Ret=1) && (RetS=1))
	}
	Quit res
]]></Implementation>
</Method>

<Method name="GetFormularOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,FormularNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.Formular
		 WHERE Nummer = :FormularNr AND Mandant=:MandOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="%OnDelete">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Delete</METHOD> method to 
provide notification that the object specified by <VAR>oid</VAR> is being deleted.

<P>If this method returns an error then the object will not be deleted.
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set reportOid = $lg(oid,1)
	
	&sql(DELETE FROM DBCore.ReportStream WHERE FaktEKFormular = :reportOid)
			
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code><![CDATA[	set myId = {ID*O}
	&sql(DELETE FROM DBCore.ReportStream WHERE FaktEKFormular = :myId)]]></Code>
<Event>DELETE</Event>
</Trigger>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.FormularD</DataLocation>
<DefaultData>FormularDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.FormularD</IdLocation>
<IndexLocation>^DBFaktEK.SD.FormularI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.FormularS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="FormularDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>DataStream</Value>
</Value>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.Fusstext">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57268.356792</TimeChanged>
<TimeCreated>61100,50652.074994</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Position_Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="Text1">
<Description>
Text 1</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="4096"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text2">
<Description>
Text 2</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text3">
<Description>
Text 3</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text4">
<Description>
Text 4</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text5">
<Description>
Text 5</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text6">
<Description>
Text 6</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text7">
<Description>
Text 7</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text8">
<Description>
Text 8</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text9">
<Description>
Text 9</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text10">
<Description>
Text 10</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="AKFusstext">
<Type>DBFaktEK.Bestellungskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Fusstext</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetText1">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text1, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText1Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText1(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText1">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text1, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText2">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text2, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText2Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText2(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText2">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text2, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText3">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text3, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText3Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText3(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText3">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text3, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText4">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text4, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText4Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText4(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText4">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text4, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText5">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text5, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText5Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText5(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText5">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text5, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText6">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text6, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText6Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText6(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText6">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text6, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText7">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text7, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText7Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText7(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText7">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text7, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText8">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text8, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText8Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText8(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText8">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text8, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText9">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text9, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText9Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText9(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText9">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text9, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText10">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text10, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText10Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText10(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText10">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text10, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK_SD.Fusstext
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr
		 AND (LENGTH(DBFaktEK_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang)) > 0  
		 OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText5Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText6Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText7Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText8Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText9Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFaktEK_SD.Fusstext_GetText10Class(%ID, :MandantOid, :Lang)) > 0))
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandWOCheckText">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK_SD.Fusstext
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteTextFromId">
<ClassMethod>1</ClassMethod>
<FormalSpec>FusstextOid:%String,Lang:%String</FormalSpec>
<Implementation><![CDATA[
	set obj = ##class(DBFaktEK.SD.Fusstext).%OpenId(FusstextOid)
	if (obj '= "") {
		set val = obj.Text1.GetAt(Lang)
		if (val '= "") {
			do obj.Text1.SetAt("",Lang)	
		}
		set val2 = obj.Text2.GetAt(Lang)
		if (val2 '= "") {
			do obj.Text2.SetAt("",Lang)	
		}
		set val3 = obj.Text3.GetAt(Lang)
		if (val3 '= "") {
			do obj.Text3.SetAt("",Lang)	
		}
		set val4 = obj.Text4.GetAt(Lang)
		if (val '= "") {
			do obj.Text4.SetAt("",Lang)	
		}
		
		do obj.%Save()
	}
]]></Implementation>
</Method>

<Property name="SteuerungOffertanFusstext">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OffertanFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungBestellungFusstext">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>BestellungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungAnnahmeFusstext">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AnnahmeFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungAbrechnungFusstext">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AbrechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungBarzahlungFusstext">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>BarzahlungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.FusstextD</DataLocation>
<DefaultData>FusstextDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.FusstextD</IdLocation>
<IndexLocation>^DBFaktEK.SD.FusstextI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.FusstextS</StreamLocation>
<Data name="FusstextDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
</Data>
<Data name="Text1">
<Attribute>Text1</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text1"</Subscript>
</Data>
<Data name="Text10">
<Attribute>Text10</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text10"</Subscript>
</Data>
<Data name="Text2">
<Attribute>Text2</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text2"</Subscript>
</Data>
<Data name="Text3">
<Attribute>Text3</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text3"</Subscript>
</Data>
<Data name="Text4">
<Attribute>Text4</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text4"</Subscript>
</Data>
<Data name="Text5">
<Attribute>Text5</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text5"</Subscript>
</Data>
<Data name="Text6">
<Attribute>Text6</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text6"</Subscript>
</Data>
<Data name="Text7">
<Attribute>Text7</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text7"</Subscript>
</Data>
<Data name="Text8">
<Attribute>Text8</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text8"</Subscript>
</Data>
<Data name="Text9">
<Attribute>Text9</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text9"</Subscript>
</Data>
<Property name="Mandant"/>
<Property name="PositionsNr"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.Hilfstexte">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57268.507377</TimeChanged>
<TimeCreated>61571,34244.439419</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Position</Description>
<Type>%Integer</Type>
</Property>

<Property name="Text">
<Description>
Text</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.Hilfstexte).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK_SD.Hilfstexte
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteTextFromId">
<ClassMethod>1</ClassMethod>
<FormalSpec>HilfstextOid:%String,Lang:%String</FormalSpec>
<Implementation><![CDATA[
	set obj = ##class(DBFaktEK.SD.Hilfstexte).%OpenId(HilfstextOid)
	if (obj '= "") {
		set val = obj.Text.GetAt(Lang)
		if (val '= "") {
			Do ##class(DBUtils.StringUtils).SetText(obj.Text, "", Lang, obj.Mandant)
			do obj.%Save()
		}
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.HilfstexteD</DataLocation>
<DefaultData>HilfstexteDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.HilfstexteD</IdLocation>
<IndexLocation>^DBFaktEK.SD.HilfstexteI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.HilfstexteS</StreamLocation>
<Data name="HilfstexteDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="Mandant"/>
<Property name="PositionsNr"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.StrgBestellung">
<Super>DBFaktEK.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62221,63624.389083</TimeChanged>
<TimeCreated>61689,47268.38148</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="TypBestellungStrgTyp">
<Type>DBFaktEK.TypStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>Typ</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFaktEK_SD.StrgBestellung
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="Adresse">
<Type>DBAdressen.Adresse</Type>
<Cardinality>many</Cardinality>
<Inverse>FaktEKBestSteuerung</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblDataE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57317.402765</TimeChanged>
<TimeCreated>61717,60833.050839</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Tabellenkopf">
<Type>DBFaktEK.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellendataEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Formularkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Method name="GetTblDataEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblDataENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblDataE
		 WHERE Nummer = :TblDataENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblDataE).%OpenId(myID)
		set text = rs.Format.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellendataEntry")</DataLocation>
<DefaultData>TblDataEDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblKopfC("TabellendataEntry")</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblDataEI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblDataES</StreamLocation>
<Data name="TblDataEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Rahmen</Value>
</Value>
<Value name="8">
<Value>Format</Value>
</Value>
<Value name="9">
<Value>Font</Value>
</Value>
</Data>
<Property name="Aktiv"/>
<Property name="Ausrichtung"/>
<Property name="Breite"/>
<Property name="Font"/>
<Property name="Format"/>
<Property name="Index"/>
<Property name="Nummer"/>
<Property name="Rahmen"/>
<Property name="Tabellenkopf"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblFuss">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57268.643796</TimeChanged>
<TimeCreated>61718,54787.781334</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantNummerIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bezeichnung">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="TabellenfussEntry">
<Type>DBFaktEK.SD.TblFussE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenfuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenfussSkontoEntry">
<Type>DBFaktEK.SD.TblFussSktE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenfuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="GenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="GenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Method name="GetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Bezeichnung, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblFuss).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Bezeichnung, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBFaktEK_SD.TblFuss WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

<Method name="GetTblFussOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,TblFussNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO oid
		 FROM DBFaktEK_SD.TblFuss
		 WHERE Nummer = :TblFussNr AND Mandant=:MandOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="CopyTblFuss">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer,Mandant:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBFaktEK.SD.TblFuss).%OpenId(SrcOid)
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.Nummer = newNr
	set dstAs.Mandant = Mandant
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	
	// Wenn erfolgreich auch die Childern kopieren
	if ($$$ISOK(status)) {
		// Formular Fuss Entrys
		Set strSQL="SELECT ID FROM DBFaktEK_SD.TblFussE WHERE Tabellenfuss = '"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFaktEK.SD.TblFussE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenfuss=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Formularfuss Entrys",  posState, !
				}
				k pos			    
		    }
	    }
		// Formular Skonto Entrys
		Set strSQL="SELECT ID FROM DBFaktEK_SD.TblFussSktE WHERE Tabellenfuss = '"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFaktEK.SD.TblFussSktE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenfuss=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Formularfuss Skonto Entrys",  posState, !
				}
				k pos			    
		    }
		    
	    }
	}
	
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.DTypTblFuss</Type>
<Cardinality>many</Cardinality>
<Inverse>TblFuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PrintEW">
<Type>%Boolean</Type>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.TblFussD</DataLocation>
<DefaultData>TblFussDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblFussD</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblFussI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblFussS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TblFussDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>GenFont</Value>
</Value>
<Value name="5">
<Value>GenRahmen</Value>
</Value>
<Value name="6">
<Value>PrintEW</Value>
</Value>
</Data>
<Property name="GenFont"/>
<Property name="GenRahmen"/>
<Property name="Mandant"/>
<Property name="Nummer"/>
<Property name="PrintEW"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblFussE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57317.576531</TimeChanged>
<TimeCreated>61718,54925.799669</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Tabellenfuss">
<Type>DBFaktEK.SD.TblFuss</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenfussEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenfuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="DetailFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="DetailRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="TotalFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="TotalRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="TotalText">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblFussE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblFussEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblFussOid:%String,TblFussENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblFussE
		 WHERE Nummer = :TblFussENr AND Tabellenfuss=:TblFussOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetTotalText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..TotalText, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTotalTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblFussE).%OpenId(myID)
		set text = rs.GetTotalText(MandOid, Lang)
		k rs
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetTotalText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..TotalText, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenfussEntry")</DataLocation>
<DefaultData>TblFussEDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblFussC("TabellenfussEntry")</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblFussEI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblFussES</StreamLocation>
<Data name="TblFussEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>DetailFont</Value>
</Value>
<Value name="10">
<Value>DetailRahmen</Value>
</Value>
<Value name="11">
<Value>TotalFont</Value>
</Value>
<Value name="12">
<Value>TotalRahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Data name="TotalText">
<Attribute>TotalText</Attribute>
<Structure>subnode</Structure>
<Subscript>"TotalText"</Subscript>
</Data>
<Property name="Aktiv"/>
<Property name="Ausrichtung"/>
<Property name="Breite"/>
<Property name="DetailFont"/>
<Property name="DetailRahmen"/>
<Property name="Font"/>
<Property name="Index"/>
<Property name="Nummer"/>
<Property name="Rahmen"/>
<Property name="Tabellenfuss"/>
<Property name="TotalFont"/>
<Property name="TotalRahmen"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblFussSktE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57317.873322</TimeChanged>
<TimeCreated>61723,33357.37006</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Tabellenfuss">
<Type>DBFaktEK.SD.TblFuss</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenfussSkontoEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenfuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblFussSktE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblFussSkontoEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblFussOid:%String,TblFussSkontoEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblFussSktE
		 WHERE Nummer = :TblFussSkontoEntryNr AND Tabellenfuss=:TblFussOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenfussSkontoEntry")</DataLocation>
<DefaultData>TblFussSktEDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblFussC("TabellenfussSkontoEntry")</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblFussSktEI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblFussSktES</StreamLocation>
<Data name="TblFussSktEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="Aktiv"/>
<Property name="Ausrichtung"/>
<Property name="Breite"/>
<Property name="Font"/>
<Property name="Index"/>
<Property name="Nummer"/>
<Property name="Rahmen"/>
<Property name="Tabellenfuss"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblKopf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57268.831534</TimeChanged>
<TimeCreated>61717,58974.878833</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantNummerIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bezeichnung">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Drucktyp">
<Type>DBFaktEK.SD.DTypTblKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>TblKopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenkopfEntry">
<Type>DBFaktEK.SD.TblKopfE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellendataEntry">
<Type>DBFaktEK.SD.TblDataE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSREntry">
<Type>DBFaktEK.SD.TblSREntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSRgkEntry">
<Type>DBFaktEK.SD.TblSRgkE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="GenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="GenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="DataGenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="DataGenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="SrGenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="SrGenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="SrKopfGenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="SrKopfGenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Method name="GetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Bezeichnung, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblKopf).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Bezeichnung, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBFaktEK_SD.TblKopf WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

<Method name="GetTblKopfOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,TblKopfNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblKopf
		 WHERE Nummer = :TblKopfNr AND Mandant=:MandOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="CopyTblKopf">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer,Mandant:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBFaktEK.SD.TblKopf).%OpenId(SrcOid)
	
	/// kopieren und Nummer zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.Nummer = newNr
	set dstAs.Mandant = Mandant
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	
	// Wenn erfolgreich auch die Childern kopieren
	if ($$$ISOK(status)) {
		// Formular Kopf Entrys
		Set strSQL="SELECT ID FROM DBFaktEK_SD.TblKopfE WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFaktEK.SD.TblKopfE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Kopf Entrys",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Formular Detail
		Set strSQL="SELECT ID FROM DBFaktEK_SD.TblDataE WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFaktEK.SD.TblDataE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Formular Detail ",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Sammelrechnung
		Set strSQL="SELECT ID FROM DBFaktEK_SD.TblSREntry WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFaktEK.SD.TblSREntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Sammelrechnung ",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Sammelrechnung Gruppenkopf
		Set strSQL="SELECT ID FROM DBFaktEK_SD.TblSRgkE WHERE Formularkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFaktEK.SD.FormSRgkEntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Formularkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Sammelrechnung Gruppenkopf ",  posState, !
				}
				k pos			    
		    }
		    
	    }
	}
	set status = dstAs.%Save()
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFaktEK.SD.TblKopfD</DataLocation>
<DefaultData>TblKopfDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblKopfD</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblKopfI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblKopfS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TblKopfDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>GenFont</Value>
</Value>
<Value name="5">
<Value>GenRahmen</Value>
</Value>
<Value name="6">
<Value>DataGenFont</Value>
</Value>
<Value name="7">
<Value>DataGenRahmen</Value>
</Value>
<Value name="8">
<Value>SrGenFont</Value>
</Value>
<Value name="9">
<Value>SrGenRahmen</Value>
</Value>
<Value name="10">
<Value>SrKopfGenFont</Value>
</Value>
<Value name="11">
<Value>SrKopfGenRahmen</Value>
</Value>
</Data>
<Property name="DataGenFont"/>
<Property name="DataGenRahmen"/>
<Property name="GenFont"/>
<Property name="GenRahmen"/>
<Property name="Mandant"/>
<Property name="Nummer"/>
<Property name="SrGenFont"/>
<Property name="SrGenRahmen"/>
<Property name="SrKopfGenFont"/>
<Property name="SrKopfGenRahmen"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblKopfE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57318.012898</TimeChanged>
<TimeCreated>61717,59103.095271</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblKopfE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblKopfEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblKopfENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblKopfE
		 WHERE Nummer = :TblKopfENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBFaktEK.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenkopfEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="FontColor">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenkopfEntry")</DataLocation>
<DefaultData>TblKopfEDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblKopfC("TabellenkopfEntry")</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblKopfEI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblKopfES</StreamLocation>
<Data name="TblKopfEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>FontColor</Value>
</Value>
<Value name="8">
<Value>Font</Value>
</Value>
<Value name="9">
<Value>Rahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="Aktiv"/>
<Property name="Ausrichtung"/>
<Property name="Breite"/>
<Property name="Font"/>
<Property name="FontColor"/>
<Property name="Index"/>
<Property name="Nummer"/>
<Property name="Rahmen"/>
<Property name="Tabellenkopf"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblSREntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57318.161154</TimeChanged>
<TimeCreated>61717,62057.620203</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Method name="GetTblSREntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSREntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblSREntry
		 WHERE Nummer = :TblSREntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBFaktEK.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenSREntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="DetailFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="DetailRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblSREntry).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Format.FormatTextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblSREntry).%OpenId(myID)
		set text = rs.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetFormatTextFallsLeerLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Format.FormatTextFallsLeer, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSREntry")</DataLocation>
<DefaultData>TblSREntryDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblKopfC("TabellenSREntry")</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblSREntryI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblSREntryS</StreamLocation>
<Data name="TblSREntryDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>Format</Value>
</Value>
<Value name="10">
<Value>DetailFont</Value>
</Value>
<Value name="11">
<Value>DetailRahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBFaktEK.SD.TblSRgkE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57318.306695</TimeChanged>
<TimeCreated>61718,29973.395954</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Tabellenkopf">
<Type>DBFaktEK.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenSRgkEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblSRgkE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Format.FormatTextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFaktEK.SD.TblSRgkE).%OpenId(myID)
		set text = rs.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetFormatTextFallsLeerLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Format.FormatTextFallsLeer, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblSRgkEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSRgkENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFaktEK_SD.TblSRgkE
		 WHERE Nummer = :TblSRgkENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSRgkEntry")</DataLocation>
<DefaultData>TblSRgkEDefaultData</DefaultData>
<IdLocation>^DBFaktEK.SD.TblKopfC("TabellenSRgkEntry")</IdLocation>
<IndexLocation>^DBFaktEK.SD.TblSRgkEI</IndexLocation>
<StreamLocation>^DBFaktEK.SD.TblSRgkES</StreamLocation>
<Data name="TblSRgkEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>Format</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBFaktEK.TypStrg">
<Super>DBFaktEK.BestStrg,%XML.Adaptor</Super>
<TimeChanged>62227,29196</TimeChanged>
<TimeCreated>61689,47945.018116</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Typ">
<Type>DBFaktEK.SD.StrgBestellung</Type>
<Cardinality>one</Cardinality>
<Inverse>TypBestellungStrgTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Typ"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="TypIndex">
<Properties>Typ</Properties>
</Index>

<Method name="ExistsBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.TypStrg
	     WHERE Typ=:TypOid)
	quit (id '= "")
]]></Implementation>
</Method>

<Method name="GetBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>DBFaktEK.BestStrg</ReturnType>
<Implementation><![CDATA[
	set steuerung = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.TypStrg
	     WHERE Typ=:TypOid)
	if (id '= "") {
		set steuerung = ##Class(DBFaktEK.TypStrg).%OpenId(id)
	} else {
		set steuerung = ##Class(DBFaktEK.TypStrg).%New()
	}
	quit steuerung
]]></Implementation>
</Method>

<Method name="DeleteBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFaktEK.TypStrg
	     WHERE Typ=:TypOid)
	if (id '= "") {
		set status = ##Class(DBFaktEK.BestStrg).%DeleteId(id)
	}
	quit status
]]></Implementation>
</Method>

<Method name="CopyBestellungsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcTypOid:%String,DstTypOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	
	/// Source steuerung öffnen
	set SrcId = ""
	&sql(SELECT TOP 1 ID INTO :SrcId FROM DBFaktEK.TypStrg
	     WHERE Typ=:SrcTypOid)
	if (SrcId '= "") {
		set srcAs = ##Class(DBFaktEK.TypStrg).%OpenId(SrcId)
	} else {
		quit 100
	}
		
	/// Ziel steuerung öffnen
	if (##Class(DBFaktEK.TypStrg).ExistsBestellungsSteuerung(DstTypOid)) {
		set DstId = ""
		&sql(SELECT TOP 1 ID INTO :DstId FROM DBFaktEK.TypStrg
	  	   WHERE Typ=:DstTypOid)
		set dstAs = ##Class(DBFaktEK.TypStrg).%OpenId(DstId)
	} else {
		set dstAs = ##Class(DBFaktEK.TypStrg).%New()
	}
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(0)
	set typ = ##Class(DBFaktEK.SD.StrgBestellung).%OpenId(DstTypOid)
	
	/// Bereinigen und zurück 
	set dstAs.Typ = typ
	set status = dstAs.%Save()
	kill dstAs, typ, srcTyp
	quit status
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>TypStrgDefaultData</DefaultData>
<Data name="TypStrgDefaultData">
<Structure>listnode</Structure>
<Subscript>"TypStrg"</Subscript>
<Value name="1">
<Value>Typ</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFaktEK.WerkzeugPruefung">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57318.812705</TimeChanged>
<TimeCreated>62411,51455.442526</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Pruefdatum">
<Type>%Date</Type>
</Property>

<Property name="Pruefintervall">
<Type>%Integer</Type>
</Property>

<Property name="Freigabe">
<Type>%Boolean</Type>
</Property>

<Property name="Freigabedatum">
<Type>%Date</Type>
</Property>

<Property name="FaktArtikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>WPruefung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Artikel"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Mitarbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>one</Cardinality>
<Inverse>WPruefung</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="MitarbeiterIndex">
<Properties>Mitarbeiter</Properties>
</Index>

<Method name="GetOidByArtOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT ID INTO :oid FROM DBFaktEK.WerkzeugPruefung WHERE FaktArtikel=:ArtikelOid)
	if (SQLCODE'=0) {
		set oid=""
	}
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("WPruefung")</DataLocation>
<DefaultData>WerkzeugPruefungDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("WPruefung")</IdLocation>
<IndexLocation>^DBFaktEK.WerkzeugPruefungI</IndexLocation>
<StreamLocation>^DBFaktEK.WerkzeugPruefungS</StreamLocation>
<Data name="WerkzeugPruefungDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Pruefdatum</Value>
</Value>
<Value name="3">
<Value>Pruefintervall</Value>
</Value>
<Value name="4">
<Value>Freigabe</Value>
</Value>
<Value name="5">
<Value>Freigabedatum</Value>
</Value>
<Value name="6">
<Value>Mitarbeiter</Value>
</Value>
</Data>
</Storage>
</Class>
</Export>
