<?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:28:20">
<Class name="DBIntrap.AF.LeistungAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62431,29554.550967</TimeChanged>
<TimeCreated>61621,43179.02337</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,MitarbeiterOid:%String,AdressOid:%String,ProjektOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Datum, 
			DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
			Adresse->Kurzname As "Kurzname",
			Projekt->Kurzbezeichnung As "Projekt",
			Arbeitsposition->Nummer As "Arbeitsposition",
			Arbeitsposition->Zeiterfassung As "Zeiterfassung",
			Text1 As "Buchungstext",
			Beginn,
			Ende,
			Menge,
			BetragIntern,
			BetragExtern,
			Absenzart,
			Mitarbeiter->Kurzname As "Mitarbeiter",
			CASE WHEN Beginn = 0 AND Ende = 0 THEN 1 ELSE 0 END AS Spesen,
			Verrechnet
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid AND
			(Mitarbeiter = :MitarbeiterOid OR :MitarbeiterOid = "") AND
			(Projekt = :ProjektOid OR :ProjektOid = "") AND
			(Adresse = :AdressOid OR :AdressOid = "")
	ORDER BY Datum, Spesen, Beginn, Mitarbeiter->Nummer]]></SqlQuery>
</Query>

<Query name="ListeNachDatum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,MitarbeiterOid:%String,AdressOid:%String,ProjektOid:%String,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Datum, 
			DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
			Adresse->Kurzname As "Kurzname",
			Projekt->Kurzbezeichnung As "Projekt",
			Arbeitsposition->Nummer As "Arbeitsposition",
			Arbeitsposition->Zeiterfassung As "Zeiterfassung",
			Text1 As "Buchungstext",
			Beginn,
			Ende,
			Menge,
			BetragIntern,
			BetragExtern,
			Absenzart,
			Mitarbeiter->Kurzname As "Mitarbeiter",
			CASE WHEN Beginn = 0 AND Ende = 0 THEN 1 ELSE 0 END AS Spesen,
			Verrechnet
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid AND
			(Mitarbeiter = :MitarbeiterOid OR :MitarbeiterOid = "") AND
			(Projekt = :ProjektOid OR :ProjektOid = "") AND
			(Adresse = :AdressOid OR :AdressOid = "") AND
			Datum >= :VonDatum AND
			Datum <= :BisDatum
	ORDER BY Datum, Spesen, Beginn, Mitarbeiter->Nummer]]></SqlQuery>
</Query>

<Query name="ListeNachDatumMA">
<Type>%SQLQuery</Type>
<FormalSpec>Lang:%String,MitarbeiterOid:%String,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Datum, 
			DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
			Adresse->Kurzname As "Kurzname",
			Projekt->Kurzbezeichnung As "Projekt",
			Arbeitsposition->Nummer As "Arbeitsposition",
			Arbeitsposition->Zeiterfassung As "Zeiterfassung",
			Text1 As "Buchungstext",
			Beginn,
			Ende,
			Menge,
			BetragIntern,
			BetragExtern,
			Absenzart,
			Mitarbeiter->Kurzname As "Mitarbeiter",
			CASE WHEN Beginn = 0 AND Ende = 0 THEN 1 ELSE 0 END AS Spesen,
			Verrechnet
	FROM DBIntrap.Leistung 
	WHERE Mitarbeiter = :MitarbeiterOid AND
			Datum >= :VonDatum AND
			Datum <= :BisDatum
	ORDER BY Datum, Spesen, Beginn, Mitarbeiter->Nummer]]></SqlQuery>
</Query>

<Query name="ListeDatum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Datum
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid
	GROUP BY Datum]]></SqlQuery>
</Query>

<Query name="ListeAbrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Abrechnungnr
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid
	AND NVL(Abrechnungnr,0) > 0
	ORDER BY Abrechnungnr]]></SqlQuery>
</Query>

<Query name="ListeDruckNachAdresse">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonMitarbeiterNr:%Integer,BisMitarbeiterNr:%Integer,VonAdressNr:%Integer,BisAdressNr:%Integer,VonProjektNr:%String,BisProjektNr:%String,VonDatum:%Date,BisDatum:%Date,ProjektAlphaNum:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Datum, 
			DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
			Projekt->Hauptnummer AS "Projekt.Nummer",
			Projekt->Kurzbezeichnung As "Projekt.Kurzbez",
			DBIntrap_SD.Projekt_GetBezeichnungClass(Projekt, :MandantOid, :Lang) AS "Projekt.Bezeichnung",
			Adresse->Adressnummer As "Adresse.Adressnummer",
			Adresse->ID As "Adresse.ID",
			Arbeitsposition->Nummer As "ArbeitsPos.Nummer",
			DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(Arbeitsposition, :MandantOid, :Lang) As "ArbeitsPos.Bezeichnung",
			Arbeitsposition->Zeiterfassung As "ArbeitsPos.Zeiterfassung",
			Text1 As "Buchungstext",
			Beginn,
			Ende,
			Menge,
			BetragIntern,
			BetragExtern,
			Mitarbeiter->Kurzname As "Mitarbeiter",
			Verrechnet
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid AND
			Mitarbeiter->Nummer BETWEEN :VonMitarbeiterNr AND :BisMitarbeiterNr AND
			((Projekt->Nummer BETWEEN :VonProjektNr AND :BisProjektNr AND :ProjektAlphaNum = 1) OR
			(Projekt->NummerNum BETWEEN +:VonProjektNr AND +:BisProjektNr AND :ProjektAlphaNum = 0)) AND
			Adresse->Adressnummer BETWEEN :VonAdressNr AND :BisAdressNr AND
			Datum BETWEEN :VonDatum AND :BisDatum
	ORDER BY Adresse->Adressnummer, Projekt->Nummer, Datum]]></SqlQuery>
</Query>

<Query name="ListeDruckNachProjekt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonMitarbeiterNr:%Integer,BisMitarbeiterNr:%Integer,VonProjektNr:%String,BisProjektNr:%String,VonDatum:%Date,BisDatum:%Date,ProjektAlphaNum:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Datum, 
			DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
			Projekt->ID AS "Projekt.ID",
			Projekt->Hauptnummer AS "Projekt.Nummer",
			Projekt->Kurzbezeichnung As "Projekt.Kurzbez",
			DBIntrap_SD.Projekt_GetBezeichnungClass(Projekt, :MandantOid, :Lang) AS "Projekt.Bezeichnung",
			Adresse->Adressnummer As "Adresse.Adressnummer",
			Adresse->ID As "Adresse.ID",
			Arbeitsposition->Nummer As "ArbeitsPos.Nummer",
			DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(Arbeitsposition, :MandantOid, :Lang) As "ArbeitsPos.Bezeichnung",
			Arbeitsposition->Zeiterfassung As "ArbeitsPos.Zeiterfassung",
			Text1 As "Buchungstext",
			Beginn,
			Ende,
			Menge,
			BetragIntern,
			BetragExtern,
			Mitarbeiter->Nummer AS "Mitarbeiter.Nummer",
			Mitarbeiter->Kurzname As "Mitarbeiter.Kurzname",
			Mitarbeiter->Name As "Mitarbeiter.Name",
			Mitarbeiter->Vorname As "Mitarbeiter.Vorname",
			Verrechnet
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid AND
			Mitarbeiter->Nummer BETWEEN :VonMitarbeiterNr AND :BisMitarbeiterNr AND
			((Projekt->Nummer BETWEEN :VonProjektNr AND :BisProjektNr AND :ProjektAlphaNum = 1) OR
			(Projekt->NummerNum BETWEEN +:VonProjektNr AND +:BisProjektNr AND :ProjektAlphaNum = 0)) AND
			Datum BETWEEN :VonDatum AND :BisDatum
	ORDER BY Projekt->Nummer, Datum]]></SqlQuery>
</Query>

<Query name="ListeDruckAbrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonAdressNr:%Integer,BisAdressNr:%Integer,VonProjektNr:%String,BisProjektNr:%String,VonDatum:%Date,BisDatum:%Date,ProjektAlphaNum:%Boolean,Abrechnungnr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Datum, 
			DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
			Projekt->Hauptnummer AS "Projekt.Nummer",
			Projekt->Kurzbezeichnung As "Projekt.Kurzbez",
			DBIntrap_SD.Projekt_GetBezeichnungClass(Projekt, :MandantOid, :Lang) AS "Projekt.Bezeichnung",
			Adresse->Adressnummer As "Adresse.Adressnummer",
			Adresse->ID As "Adresse.ID",
			Arbeitsposition->Nummer As "ArbeitsPos.Nummer",
			DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(Arbeitsposition, :MandantOid, :Lang) As "ArbeitsPos.Bezeichnung",
			Arbeitsposition->Zeiterfassung As "ArbeitsPos.Zeiterfassung",
			Text1 As "Buchungstext",
			Beginn,
			Ende,
			Menge,
			BetragIntern,
			BetragExtern,
			Mitarbeiter->Nummer AS "Mitarbeiter.Nummer",
			Mitarbeiter->Kurzname As "Mitarbeiter.Kurzname",
			Mitarbeiter->Name As "Mitarbeiter.Name",
			Mitarbeiter->Vorname As "Mitarbeiter.Vorname",
			Verrechnet
	FROM DBIntrap.Leistung 
	WHERE Adresse->Mandant = :MandantOid AND
			((Projekt->Nummer BETWEEN :VonProjektNr AND :BisProjektNr AND :ProjektAlphaNum = 1) OR
			(Projekt->NummerNum BETWEEN +:VonProjektNr AND +:BisProjektNr AND :ProjektAlphaNum = 0)) AND
			Adresse->Adressnummer BETWEEN :VonAdressNr AND :BisAdressNr AND
			Datum BETWEEN :VonDatum AND :BisDatum
			AND NVL(Abrechnungnr,0)=:Abrechnungnr
	ORDER BY Adresse->Adressnummer, Projekt->Nummer, Datum]]></SqlQuery>
</Query>

<Query name="ListeDruckAnKunde">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonMitarbeiterNr:%Integer,BisMitarbeiterNr:%Integer,VonAdressNr:%Integer,BisAdressNr:%Integer,VonProjektNr:%String,BisProjektNr:%String,VonDatum:%Date,BisDatum:%Date,ProjektAlphaNum:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT ID, 
           Datum, 
           DBIntrap_SD.Einheit_GetBezeichnungClass(Einheit, :MandantOid, :Lang) As Einheit,
           Projekt->Hauptnummer AS "Projekt.Nummer",
           Projekt->Kurzbezeichnung As "Projekt.Kurzbez",
           DBIntrap_SD.Projekt_GetBezeichnungClass(Projekt, :MandantOid, :Lang) AS "Projekt.Bezeichnung",
           Adresse->Adressnummer As "Adresse.Adressnummer",
           Adresse->ID As "Adresse.ID",
           Arbeitsposition->Nummer As "ArbeitsPos.Nummer",
           DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(Arbeitsposition, :MandantOid, :Lang) As "ArbeitsPos.Bezeichnung",
           Arbeitsposition->Zeiterfassung As "ArbeitsPos.Zeiterfassung",
           Text1 As "Buchungstext",
           Beginn,
           Ende,
           Menge,
           BetragIntern,
           BetragExtern,
           Mitarbeiter->Kurzname As "Mitarbeiter",
           Verrechnet
    FROM DBIntrap.Leistung 
    WHERE Adresse->Mandant = :MandantOid AND
       Mitarbeiter->Nummer BETWEEN :VonMitarbeiterNr AND :BisMitarbeiterNr AND
       ((Projekt->Nummer BETWEEN :VonProjektNr AND :BisProjektNr AND :ProjektAlphaNum = 1) OR
       (Projekt->NummerNum BETWEEN +:VonProjektNr AND +:BisProjektNr AND :ProjektAlphaNum = 0)) AND
       Adresse->Adressnummer BETWEEN :VonAdressNr AND :BisAdressNr AND
       Datum BETWEEN :VonDatum AND :BisDatum
       AND BetragExtern > 0
    ORDER BY Adresse->Adressnummer, Projekt->Nummer, Datum]]></SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.MandatskontrolleAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62207,42669.876668</TimeCreated>

<Query name="ListeByAktAdrOid">
<Type>%SQLQuery</Type>
<FormalSpec>AktAdresseOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Buchhaltungsjahr
	FROM DBIntrap.Mandatskontrolle
	WHERE Adresse = :AktAdresseOid
	ORDER BY Buchhaltungsjahr DESC</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>VonAdressNr:%Integer,BisAdressNr:%Integer,VonJahr:%Integer,BisJahr:%Integer,Lang:%String,AdrMandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Buchhaltungsjahr, Adresse, Ablage, BHNr,
	Sachbearbeiter1->Name AS Sachbearbeiter1N, Sachbearbeiter2->Name AS Sachbearbeiter2N,
	Sachbearbeiter1->Vorname AS Sachbearbeiter1V, Sachbearbeiter2->Vorname AS Sachbearbeiter2V,
	DBIntrap_SD.Software_GetBezeichnungClass(Software, :AdrMandant, :Lang) AS Software,
	NVL((SELECT MAX(element_key) FROM DBIntrap.Mandatskontrolle_Kassenrapporte WHERE Mandatskontrolle = m.ID AND Kassenrapporte = 1),0) AS Kassenrapporte,
	NVL((SELECT MAX(element_key) FROM DBIntrap.Mandatskontrolle_Aktentyp1 WHERE Mandatskontrolle = m.ID AND Aktentyp1 = 1),0) AS Aktentyp1,
	NVL((SELECT MAX(element_key) FROM DBIntrap.Mandatskontrolle_Aktentyp2 WHERE Mandatskontrolle = m.ID AND Aktentyp2= 1),0) AS Aktentyp2,
	NVL((SELECT MAX(element_key) FROM DBIntrap.Mandatskontrolle_Aktentyp3 WHERE Mandatskontrolle = m.ID AND Aktentyp3= 1),0) AS Aktentyp3,
	NVL((SELECT MAX(element_key) FROM DBIntrap.Mandatskontrolle_Aktentyp4 WHERE Mandatskontrolle = m.ID AND Aktentyp4= 1),0) AS Aktentyp4,
	Individuell1, Individuell2, Individuell3, Individuell4, Individuell5, KassenrapporteEingang,
	KassenrapporteAusgang, Aktentyp1Eingang, Aktentyp1Ausgang,
	Aktentyp2Eingang, Aktentyp2Ausgang, Aktentyp3Eingang, Aktentyp3Ausgang,
	Aktentyp4Eingang, Aktentyp4Ausgang, Text, SteuerdekGeschaeftEingang,
	SteuerdekGeschaeftFrist, SteuerdekGeschaeftVerl1, SteuerdekGeschaeftVerl2,
	SteuerdekGeschaeftErledigt, SteuerdekPrivatEingang, SteuerdekPrivatFrist, SteuerdekPrivatVerlaengerung1,
	SteuerdekPrivatVerlaengerung2, SteuerdekPrivatErledigt, SteuerdekGeschaeft, SteuerdekPrivat
	FROM DBIntrap.Mandatskontrolle as m
	WHERE Adresse->Adressnummer <= :BisAdressNr AND Adresse->Adressnummer >= :VonAdressNr
	AND Buchhaltungsjahr <= :BisJahr AND Buchhaltungsjahr >= :VonJahr
	ORDER BY Adresse->Adressnummer, Buchhaltungsjahr DESC]]></SqlQuery>
</Query>

<Query name="ListeSteuerdeklEingang">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonJahr:%Integer,bisJahr:%Integer,firstVorname:%Boolean,vonTypSteuerdeklNr:%Integer,bisTypSteuerdeklNr:%Integer,vonAdressNr:%Integer,bisAdressNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Buchhaltungsjahr,
			BHNr,
			Adresse      				AS "Adresse.ID", 
			Adresse->AdressNrAlt        AS "Adresse.AdressNrAlt", 
			Adresse->Adressnummer       AS "Adresse.Adressnummer", 
			Adresse->Anrede             AS "Adresse.Anrede", 
			DBAdressen.Adresse_GetName(Adresse->Adresscode, Adresse->Name, Adresse->VornameZusatz1, :firstVorname) AS "Adresse.Name", 
			DBAdressen.Adresse_GetZusatz1(Adresse->Adresscode, Adresse->VornameZusatz1) AS "Adresse.Adresszeile1", 
			Adresse->Zusatz2            AS "Adresse.Adresszeile2", 
			Adresse->Strasse || ' ' || NVL(Adresse->Hausnummer,'') AS "Adresse.Adresszeile3", 
			Adresse->Plz                AS "Adresse.Plz", 
			Adresse->Ort                AS "Adresse.Ort", 
			Adresse->Telefon1			AS "Adresse.Telefon1",
			TypSteuerdekl->Nummer		AS "TypSteuerdeklNr", 
			TypSteuerdekl				AS "TypSteuerdeklOid", 
			NVL(Sachbearbeiter1->Nummer,0)   	AS "Sachbearbeiter1.Nummer",
			Sachbearbeiter1->Kurzname   AS "Sachbearbeiter1.Kurzname",
			NVL(Sachbearbeiter2->Nummer,0)   	AS "Sachbearbeiter2.Nummer",
			Sachbearbeiter2->Kurzname   AS "Sachbearbeiter2.Kurzname",
			SteuerdekGeschaeft,
			SteuerdekGeschaeftEingang,
			SteuerdekGeschaeftErledigt,
			SteuerdekPrivat,
			SteuerdekPrivatEingang,
			SteuerdekPrivatErledigt
			
	FROM DBIntrap.Mandatskontrolle
	WHERE Adresse->Mandant=:MandantOid AND 
			Buchhaltungsjahr >= :vonJahr AND
			Buchhaltungsjahr <= :bisJahr AND
			Adresse->Adressnummer >= :vonAdressNr AND
			Adresse->Adressnummer <= :bisAdressNr AND
			NVL(TypSteuerdekl->Nummer,0) >= :vonTypSteuerdeklNr AND
			NVL(TypSteuerdekl->Nummer,0) <= :bisTypSteuerdeklNr AND
			(NVL(SteuerdekGeschaeft,0) <> 0 OR NVL(SteuerdekPrivat,0) <> 0)
	ORDER BY Buchhaltungsjahr, Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeAbschlussunterlagenEingang">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonJahr:%Integer,bisJahr:%Integer,firstVorname:%Boolean,vonAdressNr:%Integer,bisAdressNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Buchhaltungsjahr,
			BHNr,
			Adresse      				AS "Adresse.ID", 
			Adresse->AdressNrAlt        AS "Adresse.AdressNrAlt", 
			Adresse->Adressnummer       AS "Adresse.Adressnummer", 
			Adresse->Anrede             AS "Adresse.Anrede", 
			DBAdressen.Adresse_GetName(Adresse->Adresscode, Adresse->Name, Adresse->VornameZusatz1, :firstVorname) AS "Adresse.Name", 
			DBAdressen.Adresse_GetZusatz1(Adresse->Adresscode, Adresse->VornameZusatz1) AS "Adresse.Adresszeile1", 
			Adresse->Zusatz2            AS "Adresse.Adresszeile2", 
			Adresse->Strasse || ' ' || NVL(Adresse->Hausnummer,'') AS "Adresse.Adresszeile3", 
			Adresse->Plz                AS "Adresse.Plz", 
			Adresse->Ort                AS "Adresse.Ort", 
			Adresse->Telefon1			AS "Adresse.Telefon1",
			Software->Nummer			AS "SoftwareNr", 
			Software					AS "SoftwareOid", 
			NVL(Sachbearbeiter1->Nummer,0)   	AS "Sachbearbeiter1.Nummer",
			Sachbearbeiter1->Kurzname   AS "Sachbearbeiter1.Kurzname",
			NVL(Sachbearbeiter2->Nummer,0)   	AS "Sachbearbeiter2.Nummer",
			Sachbearbeiter2->Kurzname   AS "Sachbearbeiter2.Kurzname",
			SteuerdekGeschaeft,
			SteuerdekGeschaeftEingang,
			SteuerdekGeschaeftErledigt,
			SteuerdekPrivat,
			SteuerdekPrivatEingang,
			SteuerdekPrivatErledigt,
			Aktentyp4Ausgang,
			Aktentyp4Eingang
			
	FROM DBIntrap.Mandatskontrolle
	WHERE Adresse->Mandant=:MandantOid AND 
			Adresse->Adressnummer >= :vonAdressNr AND
			Adresse->Adressnummer <= :bisAdressNr AND
			Buchhaltungsjahr >= :vonJahr AND
			Buchhaltungsjahr <= :bisJahr
	ORDER BY Buchhaltungsjahr, Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeCopy">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonAdressNr:%Integer,bisAdressNr:%Integer,vonJahr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID
	FROM DBIntrap.Mandatskontrolle
	WHERE Adresse->Mandant=:MandantOid AND 
			Adresse->Adressnummer >= :vonAdressNr AND
			Adresse->Adressnummer <= :bisAdressNr AND
			Buchhaltungsjahr = :vonJahr
			
	ORDER BY Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeOffeneSteuerdekl">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonJahr:%Integer,bisJahr:%Integer,firstVorname:%Boolean,vonTypSteuerdeklNr:%Integer,bisTypSteuerdeklNr:%Integer,vonAdressNr:%Integer,bisAdressNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Buchhaltungsjahr,
			BHNr,
			Adresse      				AS "Adresse.ID", 
			Adresse->AdressNrAlt        AS "Adresse.AdressNrAlt", 
			Adresse->Adressnummer       AS "Adresse.Adressnummer", 
			Adresse->Anrede             AS "Adresse.Anrede", 
			DBAdressen.Adresse_GetName(Adresse->Adresscode, Adresse->Name, Adresse->VornameZusatz1, :firstVorname) AS "Adresse.Name", 
			DBAdressen.Adresse_GetZusatz1(Adresse->Adresscode, Adresse->VornameZusatz1) AS "Adresse.Adresszeile1", 
			Adresse->Zusatz2            AS "Adresse.Adresszeile2", 
			Adresse->Strasse || ' ' || NVL(Adresse->Hausnummer,'') AS "Adresse.Adresszeile3", 
			Adresse->Plz                AS "Adresse.Plz", 
			Adresse->Ort                AS "Adresse.Ort", 
			Adresse->Telefon1			AS "Adresse.Telefon1",
			TypSteuerdekl->Nummer		AS "TypSteuerdeklNr", 
			TypSteuerdekl				AS "TypSteuerdeklOid", 
			NVL(Sachbearbeiter1->Nummer,0)   	AS "Sachbearbeiter1.Nummer",
			Sachbearbeiter1->Kurzname   AS "Sachbearbeiter1.Kurzname",
			NVL(Sachbearbeiter2->Nummer,0)   	AS "Sachbearbeiter2.Nummer",
			Sachbearbeiter2->Kurzname   AS "Sachbearbeiter2.Kurzname",
			SteuerdekGeschaeft,
			SteuerdekGeschaeftEingang,
			SteuerdekGeschaeftErledigt,
			SteuerdekPrivat,
			SteuerdekPrivatEingang,
			SteuerdekPrivatErledigt,
			Aktentyp4Ausgang,
			Aktentyp4Eingang
			
	FROM DBIntrap.Mandatskontrolle
	WHERE Adresse->Mandant=:MandantOid AND 
			Buchhaltungsjahr >= :vonJahr AND
			Buchhaltungsjahr <= :bisJahr AND
			Adresse->Adressnummer >= :vonAdressNr AND
			Adresse->Adressnummer <= :bisAdressNr AND
			NVL(TypSteuerdekl->Nummer,0) >= :vonTypSteuerdeklNr AND
			NVL(TypSteuerdekl->Nummer,0) <= :bisTypSteuerdeklNr AND
			(NVL(SteuerdekGeschaeft,0) <> 0 OR NVL(SteuerdekPrivat,0) <> 0)			
	ORDER BY Buchhaltungsjahr, Adresse->Adressnummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.ArbeitspositionAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61565,57437.824137</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, 
	DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart, :MandantOid, :Lang) As Tarifart
	FROM DBIntrap_SD.Arbeitsposition 
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart, :MandantOid, :Lang) As Tarifart
	FROM DBIntrap_SD.Arbeitsposition 
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeNachProjektGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ProjektGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart, :MandantOid, :Lang) As Tarifart
	FROM DBIntrap_SD.Arbeitsposition
	WHERE Mandant = :MandantOid
	AND (:ProjektGrpOid ="" OR :ProjektGrpOid IN 
		(SELECT Projektgruppe FROM DBIntrap_SD.ProjektGrpAP WHERE Arbeitsposition=DBIntrap_SD.Arbeitsposition.ID))
	Order by Nummer Asc</SqlQuery>
</Query>

<Query name="ListeNachProjektGrpAktive">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ProjektGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart, :MandantOid, :Lang) As Tarifart
	FROM DBIntrap_SD.Arbeitsposition
	WHERE Mandant = :MandantOid
	AND (:ProjektGrpOid ="" OR :ProjektGrpOid IN 
		(SELECT Projektgruppe FROM DBIntrap_SD.ProjektGrpAP WHERE Arbeitsposition=DBIntrap_SD.Arbeitsposition.ID))
	AND Tarifart->Nummer <> DBIntrap.Konst_TarifartGesperrt()
	Order by Nummer Asc]]></SqlQuery>
</Query>

<Query name="GetEntryByNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String,ProjektGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart, :MandantOid, :Lang) As Tarifart
	FROM DBIntrap_SD.Arbeitsposition
	WHERE Mandant = :MandantOid
	AND Nummer %StartsWith :Nummer
	AND (:ProjektGrpOid="" OR :ProjektGrpOid IN 
		(SELECT Projektgruppe FROM DBIntrap_SD.ProjektGrpAP WHERE Arbeitsposition=DBIntrap_SD.Arbeitsposition.ID))</SqlQuery>
</Query>

<Query name="GetEntryByKurzbez">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Kurzbez:%String,ProjektGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT TOP 1 ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart, :MandantOid, :Lang) As Tarifart
	FROM DBIntrap_SD.Arbeitsposition
	WHERE Mandant = :MandantOid
	AND Kurzbezeichnung LIKE :Kurzbez
	AND (:ProjektGrpOid="" OR :ProjektGrpOid IN 
		(SELECT Projektgruppe FROM DBIntrap_SD.ProjektGrpAP WHERE Arbeitsposition=DBIntrap_SD.Arbeitsposition.ID))
	ORDER BY Kurzbezeichnung</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, Kurzbezeichnung AS wert1, Tarifart AS wert3, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert2
	FROM DBIntrap_SD.Arbeitsposition as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.EinheitAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61618,33965.355594</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Einheit_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Einheit
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.Einheit_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.Einheit as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.PrioAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61675,34096.98776</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer,  DBIntrap_SD.Prio_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM  DBIntrap_SD.Prio
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

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


<Class name="DBIntrap.AF.SD.ProblemtypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61565,61450.7785</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Problemtyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Problemtyp 
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.ProjektAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61564,41638.767647</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeGesamtOffene">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid and (Abgeschlossen is null or Abgeschlossen <> 1)
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid 
	ORDER BY +Nummer</SqlQuery>
</Query>

<Query name="ListeGesamtOffeneNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid and (Abgeschlossen is null or Abgeschlossen <> 1)
	ORDER BY +Nummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtBaum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	Kunde->Kurzname As "Kunde",
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid 
	ORDER BY Projektgruppe->Nummer,Nummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtBaumNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	Kunde->Kurzname As "Kunde",
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid 
	ORDER BY Projektgruppe->Nummer,+Nummer]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Hauptnummer || '-' || Teilnummer as Code, Kurzbezeichnung AS wert1, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert2
	FROM DBIntrap_SD.Projekt as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruckNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Hauptnummer || '-' || Teilnummer as Code, Kurzbezeichnung AS wert1, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert2
	FROM DBIntrap_SD.Projekt as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY +Nummer</SqlQuery>
</Query>

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND Hauptnummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeNachHauptNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND Hauptnummer = :Nummer 
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeNachZusatzNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, ZusatzProjektNr,
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND ZusatzProjektNr LIKE :Nummer 
	ORDER BY ZusatzProjektNr]]></SqlQuery>
</Query>

<Query name="ListeNachSerienNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Seriennummer,
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND Seriennummer LIKE :Nummer 
	ORDER BY Seriennummer]]></SqlQuery>
</Query>

<Query name="ListeNachKurzname">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Seriennummer,
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND Kunde->Kurzname LIKE :Kurzname
	ORDER BY Seriennummer]]></SqlQuery>
</Query>

<Query name="ListeNachHauptTeilNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,HauptNummer:%String,TeilNummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND Hauptnummer = :HauptNummer AND Teilnummer = :TeilNummer
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeHauptprojekte">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	Projektgruppe as GruppenID, Projektgruppe->Nummer as GruppenNummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(Projektgruppe, :MandantOid, :Lang) As GruppenBezeichnung
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid and Hauptprojekt is null
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="GetEntryByNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, Projektgruppe, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Projekt
	WHERE Mandant = :MandantOid
	AND Nummer %StartsWith :Nummer</SqlQuery>
</Query>

<Query name="GetEntryByKurzbez">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Kurzbez:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT TOP 1 ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, Projektgruppe, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Projekt
	WHERE Mandant = :MandantOid
	AND Kurzbezeichnung LIKE :Kurzbez
	ORDER BY Kurzbezeichnung</SqlQuery>
</Query>

<Query name="SearchEntryByKurzbez">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Kurzbez:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, Projektgruppe, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Projekt
	WHERE Mandant = :MandantOid
	AND Kurzbezeichnung LIKE :Kurzbez
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="SearchEntryByBezeichnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Bezeichnung:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Hauptnummer, Teilnummer, Kurzbezeichnung, Projektgruppe, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Projekt
	WHERE Mandant = :MandantOid
	AND DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :Bezeichnung
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruckProjektAlphaNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonProjektNr:%String,BisProjektNr:%String,isExtern:%Boolean,isAbgeschlossen:%Boolean,alleProjekte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Abgeschlossen, IsExternesProjekt, Hauptnummer, Teilnummer,
	DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) as Bezeichnung, 
	Kunde->Name As "Kunde.Name", Kunde->Plz As "Kunde.PLZ", Kunde->Ort As "Kunde.Ort", Kunde->ID As "Kunde.Oid", NummerNum		
	FROM DBIntrap_SD.Projekt	
	WHERE Mandant = :MandantOid
	and (Nummer >= :VonProjektNr and Nummer <= :BisProjektNr)
	and (IsExternesProjekt = :isExtern)
	and ((:alleProjekte = 0 and Abgeschlossen = :isAbgeschlossen) or (:alleProjekte = 1))
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeDruckProjektNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonProjektNr:%String,BisProjektNr:%String,isExtern:%Boolean,isAbgeschlossen:%Boolean,alleProjekte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Abgeschlossen, IsExternesProjekt, Hauptnummer, Teilnummer, 
	DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) as Bezeichnung, 
	Kunde->Name As "Kunde.Name", Kunde->Plz As "Kunde.PLZ", Kunde->Ort As "Kunde.Ort", Kunde->ID As "Kunde.Oid"	
	FROM DBIntrap_SD.Projekt	
	WHERE Mandant = :MandantOid
	and (NummerNum >= :VonProjektNr and NummerNum <= :BisProjektNr)
	and (IsExternesProjekt = :isExtern)
	and ((:alleProjekte = 0 and Abgeschlossen = :isAbgeschlossen) or (:alleProjekte = 1))
	ORDER BY NummerNum]]></SqlQuery>
</Query>

<Query name="ListeKontodetailNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonProjektNr:%String,bisProjektNr:%String,vonDatumSaldovortrag:%Date,bisDatumSaldovortrag:%Date,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, 
			Hauptnummer, 
			Teilnummer, 
			DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) as Bezeichnung, 
			{fn CONVERT(DBIntrap_SD.Projekt_GetSaldovortrag(ID,:vonDatumSaldovortrag,:bisDatumSaldovortrag), SQL_DOUBLE) } As Saldovortrag,
			{fn CONVERT(DBIntrap_SD.Projekt_GetSaldovortragUmsatzSoll(ID,:vonDatumSaldovortrag,:bisDatumSaldovortrag), SQL_DOUBLE) } As SaldovortragUmsatzSoll,
			{fn CONVERT(DBIntrap_SD.Projekt_GetSaldovortragUmsatzHaben(ID,:vonDatumSaldovortrag,:bisDatumSaldovortrag), SQL_DOUBLE) } As SaldovortragUmsatzHaben,
			DBIntrap_SD.Projekt_GetAnzahlBuchungen(%ID) As AnzahlBuchungen
 	FROM DBIntrap_SD.Projekt
 	WHERE Mandant=:MandantOid AND
 			NummerNum BETWEEN :vonProjektNr AND :bisProjektNr
 	ORDER BY NummerNum</SqlQuery>
</Query>

<Query name="ListeKontodetailAlphaNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonProjektNr:%String,bisProjektNr:%String,vonDatumSaldovortrag:%Date,bisDatumSaldovortrag:%Date,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, 
			Hauptnummer, 
			Teilnummer, 
			DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) as Bezeichnung, 
			{fn CONVERT(DBIntrap_SD.Projekt_GetSaldovortrag(ID,:vonDatumSaldovortrag,:bisDatumSaldovortrag), SQL_DOUBLE) } As Saldovortrag,
			{fn CONVERT(DBIntrap_SD.Projekt_GetSaldovortragUmsatzSoll(ID,:vonDatumSaldovortrag,:bisDatumSaldovortrag), SQL_DOUBLE) } As SaldovortragUmsatzSoll,
			{fn CONVERT(DBIntrap_SD.Projekt_GetSaldovortragUmsatzHaben(ID,:vonDatumSaldovortrag,:bisDatumSaldovortrag), SQL_DOUBLE) } As SaldovortragUmsatzHaben,
			DBIntrap_SD.Projekt_GetAnzahlBuchungen(%ID) As AnzahlBuchungen,
			NummerNum
 	FROM DBIntrap_SD.Projekt
 	WHERE Mandant=:MandantOid AND
 			Nummer BETWEEN :vonProjektNr AND :bisProjektNr
 	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeGesamtByKurzbezOffene">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KurzBez:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Kurzbezeichnung, Hauptnummer, Teilnummer, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND (Abgeschlossen is null or Abgeschlossen <> 1) AND Kurzbezeichnung LIKE :KurzBez || '%'
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtByKurzbezOffeneNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KurzBez:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Kurzbezeichnung, Teilnummer, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid and (Abgeschlossen is null or Abgeschlossen <> 1) AND Kurzbezeichnung LIKE :KurzBez || '%'
	ORDER BY +Nummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtByBezOffene">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Bez:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Kurzbezeichnung, Hauptnummer, Teilnummer, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid AND (Abgeschlossen is null or Abgeschlossen <> 1) AND DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :Bez || '%'
	ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtByBezOffeneNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Bez:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Nummer, Hauptnummer, Kurzbezeichnung, Teilnummer, DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	CASE WHEN Hauptprojekt is null Then 1 ELSE 0 END As "IsHauptprojekt"
	FROM DBIntrap_SD.Projekt 
	WHERE Mandant = :MandantOid and (Abgeschlossen is null or Abgeschlossen <> 1) AND DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :Bez || '%'
	ORDER BY +Nummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.ProjektGrpApAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62060,54382.527591</TimeCreated>

<Query name="ListeNachProjektgruppe">
<Type>%SQLQuery</Type>
<FormalSpec>ProjektgruppeOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Arbeitsposition
	FROM DBIntrap_SD.ProjektGrpAP 
	WHERE Projektgruppe = :ProjektgruppeOid</SqlQuery>
</Query>

<Query name="ListeProjektGrpAp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ProjektgruppeOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, Kurzbezeichnung, DBIntrap_SD.Arbeitsposition_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
		(SELECT Projektgruppe 
			FROM DBIntrap_SD.ProjektGrpAP 
			WHERE Arbeitsposition=DBIntrap_SD.Arbeitsposition.ID 
				AND Projektgruppe=:ProjektgruppeOid) AS Projektgruppe
		FROM DBIntrap_SD.Arbeitsposition
		WHERE Mandant = :MandantOid 
		ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.ProjektgruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61654,49587.227036</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Projektgruppe 
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.Projektgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.Projektgruppe as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.QMeldungAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61646,62606.435768</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.QMeldung_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.QMeldung
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.QMeldung_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.QMeldung as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.SoftwareAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62115,57452.181498</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Software_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Software
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.Software_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.Software as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.SollzeitJahrAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61626,49506.060389</TimeCreated>

<Query name="ListeBySollzeittabelle">
<Type>%SQLQuery</Type>
<FormalSpec>ObjectId:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Jahr, SollzeitJanuar, SollzeitFebruar, SollzeitMaerz, SollzeitApril, 
	SollzeitMai, SollzeitJuni, SollzeitJuli, SollzeitAugust, SollzeitSeptember, 
	SollzeitOktober, SollzeitNovember, SollzeitDezember, SollzeitProTag, SollzeitJeWoche
	FROM DBIntrap_SD.SollzeitJahr
	WHERE Sollzeittabelle = :ObjectId
	ORDER BY Jahr</SqlQuery>
</Query>

<Query name="ListeNachJahr">
<Type>%SQLQuery</Type>
<FormalSpec>ObjectId:%String,Jahr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID
	FROM DBIntrap_SD.SollzeitJahr
	WHERE Sollzeittabelle = :ObjectId AND Jahr = :Jahr
	ORDER BY ID</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.SollzeittabelleAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61625,51072.794733</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Sollzeittabelle_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Sollzeittabelle
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.SpesentypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62214,52631.703022</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Spesentyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Spesentyp
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.Spesentyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.Spesentyp as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.TarifAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61611,35633.132527</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, AbDatum, TarifIntern, TarifExtern, 
			Tarifgruppe->ID As "Tarifgruppe.ID", 
			Tarifgruppe->Nummer As "Tarifgruppe.Nummer", 
			DBIntrap_SD.Tarifgruppe_GetBezeichnungClass(Tarifgruppe->ID, :MandantOid, :Lang) As "Tarifgruppe.Bezeichnung",
			
			Tarifart->ID As "Tarifart.ID", 
			Tarifart->Nummer As "Tarifart.Nummer", 
			DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart->ID, :MandantOid, :Lang) As "Tarifart.Bezeichnung"
			
	FROM DBIntrap_SD.Tarif 
	WHERE Tarifgruppe->Mandant = :MandantOid 
	ORDER BY Tarifgruppe->Nummer, Tarifart->Nummer, AbDatum DESC]]></SqlQuery>
</Query>

<Query name="ListeNachTarifart">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,TarifartOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, AbDatum, TarifIntern, TarifExtern, 
			Tarifart->ID As "Tarifart.ID", 
			Tarifart->Nummer As "Tarifart.Nummer", 
			DBIntrap_SD.Tarifart_GetBezeichnungClass(Tarifart->ID, :MandantOid, :Lang) As "Tarifart.Bezeichnung",
			
			Tarifgruppe->ID As "Tarifgruppe.ID", 
			Tarifgruppe->Nummer As "Tarifgruppe.Nummer", 
			DBIntrap_SD.Tarifgruppe_GetBezeichnungClass(Tarifgruppe->ID, :MandantOid, :Lang) As "Tarifgruppe.Bezeichnung"
			
	FROM DBIntrap_SD.Tarif 
	WHERE Tarifart->ID = :TarifartOid 
	ORDER BY Tarifgruppe->Nummer, AbDatum DESC]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT '' as code, Tarifgruppe As "wert1", 'ab Datum' AS "wert2", 'Tarif Intern' AS "wert3", 'Tarif Extern' AS "wert4"
	FROM DBIntrap_SD.Tarif as Stammdate
	WHERE Tarifgruppe->Mandant = :MandantOid
	ORDER BY Tarifgruppe->Nummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.TarifartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61588,59385.984305</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Tarifart_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Tarifart 
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.Tarifart_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.Tarifart as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.TarifgruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>61588,51760.502183</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.Tarifgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.Tarifgruppe 
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.Tarifgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.Tarifgruppe as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.SD.TypSteuerdeklAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62262,53916.623914</TimeCreated>

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

<Query name="ListeNachNummer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBIntrap_SD.TypSteuerdekl_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBIntrap_SD.TypSteuerdekl
	WHERE Mandant = :MandantOid AND Nummer = :Nummer 
	ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Nummer as Code, DBIntrap_SD.TypSteuerdekl_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, '' AS wert2
	FROM DBIntrap_SD.TypSteuerdekl as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.StatistikAPAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62038,38007.346852</TimeCreated>

<Query name="ListeByJahr">
<Type>%SQLQuery</Type>
<FormalSpec>ArbeitsposOid:%String,Jahr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Monat, Jahr, Arbeitsposition, Menge, Betrag
	FROM DBIntrap.StatistikAP
	WHERE Arbeitsposition = :ArbeitsposOid AND Jahr = :Jahr
	Order BY Monat</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.StatistikMitarbAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62039,32729.567708</TimeCreated>

<Query name="ListeByJahrMonat">
<Type>%SQLQuery</Type>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Kategorie, MengeIntern, BetragIntern,
	MengeExtern, BetragExtern
	FROM DBIntrap.StatistikMitarbeiter
	WHERE Mitarbeiter = :MitarbeiterOid AND Jahr = :Jahr AND Monat = :Monat
	ORDER BY Kategorie</SqlQuery>
</Query>

<Query name="ListeByJahr">
<Type>%SQLQuery</Type>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Kategorie, SUM(MengeIntern) AS MengeIntern, SUM(BetragIntern) AS BetragIntern,
	SUM(MengeExtern) AS MengeExtern, SUM(BetragExtern) AS BetragExtern
	FROM DBIntrap.StatistikMitarbeiter
	WHERE Mitarbeiter = :MitarbeiterOid AND Jahr = :Jahr
	GROUP BY Kategorie
	ORDER BY Kategorie</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.AF.StatistikProjektAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33116</TimeChanged>
<TimeCreated>62038,57385.370097</TimeCreated>

<Query name="ListeByJahr">
<Type>%SQLQuery</Type>
<FormalSpec>ProjektOid:%String,Jahr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Monat, Jahr, Projekt, Menge, Betrag
	FROM DBIntrap.StatistikProjekt
	WHERE Projekt = :ProjektOid AND Jahr = :Jahr
	Order BY Monat</SqlQuery>
</Query>
</Class>


<Class name="DBIntrap.Konst">
<Super>%RegisteredObject</Super>
<TimeChanged>62193,36053.585224</TimeChanged>
<TimeCreated>61618,53793.534984</TimeCreated>

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

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

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

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

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

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

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

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

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

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

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

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

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

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


<Class name="DBIntrap.Leistung">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57224.901675</TimeChanged>
<TimeCreated>61544,52160.840339</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="Adresse">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>LeistungAdresse</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="Projekt">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>one</Cardinality>
<Inverse>LeistungProjekt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Projekt"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ProjektIndex">
<Properties>Projekt</Properties>
</Index>

<Property name="Arbeitsposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>one</Cardinality>
<Inverse>LeistungArbeitsposition</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Arbeitsposition"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ArbeitspositionIndex">
<Properties>Arbeitsposition</Properties>
</Index>

<Property name="Datum">
<Type>%Date</Type>
</Property>

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

<Property name="Beginn">
<Type>%Time</Type>
</Property>

<Property name="Ende">
<Type>%Time</Type>
</Property>

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

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

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

<Property name="BetragIntern">
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragIntern}=##class(DBIntrap.Leistung).CalcBetragInternClass({Kategorie},{Berechnungsart},{Menge},{TarifIntern}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragExtern">
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragExtern}=##class(DBIntrap.Leistung).CalcBetragExternClass({Kategorie},{Berechnungsart},{Menge},{TarifExtern}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Index name="MitarbeiterIndex">
<Properties>Mitarbeiter</Properties>
</Index>

<UDLText name="T">
<Content><![CDATA[
//***********************

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
// Erfasser wurden extra nicht als Relation abgebildet

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
// -> haben nur informativen Charakter und wuerden bei einem Datenaustausch

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
// verloren gehen, da die Benutzerinformationen auf dem Zielsystem nicht vorhanden

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
// waeren

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
//***********************

]]></Content>
</UDLText>

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

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

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

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

<Property name="Einheit">
<Type>DBIntrap.SD.Einheit</Type>
<Cardinality>one</Cardinality>
<Inverse>Leistung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Einheit"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

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

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

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

<Index name="DatumIndex">
<Properties>Datum</Properties>
</Index>

<Index name="MitarbeiterDatumIndex">
<Properties>Mitarbeiter,Datum</Properties>
</Index>

<Method name="CalcBetragInternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>kategorie:%Integer,berechnung:%Integer,menge:%Decimal,tarif:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set b = 0
	
	if (berechnung = ##class(DBIntrap.Konst).BerechnungMengeTarif()) {
		Set b = (menge * tarif)
		
	} elseif (berechnung = ##class(DBIntrap.Konst).BerechnungPauschal()) {
		Set b = tarif
		
	} elseif (berechnung = ##class(DBIntrap.Konst).BerechnungInternMTExternP()) {
		Set b = (menge * tarif)
		
	}
	
	Quit b
]]></Implementation>
</Method>

<Method name="CalcBetragExternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>kategorie:%Integer,berechnung:%Integer,menge:%Decimal,tarif:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set b = 0
	
	if (berechnung = ##class(DBIntrap.Konst).BerechnungMengeTarif()) {
		if (kategorie '= ##class(DBIntrap.Konst).KategorieIntern()) {
			Set b = (menge * tarif)
		}
		
	} elseif (berechnung = ##class(DBIntrap.Konst).BerechnungPauschal()) {
		if (kategorie '= ##class(DBIntrap.Konst).KategorieIntern()) {
			Set b = tarif
		}
		
	} elseif (berechnung = ##class(DBIntrap.Konst).BerechnungInternMTExternP()) {
		if (kategorie '= ##class(DBIntrap.Konst).KategorieIntern()) {
			Set b = tarif
		}
		
	}
	
	Quit b
]]></Implementation>
</Method>

<Method name="GetLastTimeByDay">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,MitarbeiterOid:%String,Tag:%Date</FormalSpec>
<ReturnType>%Time</ReturnType>
<Implementation><![CDATA[
	set zeit = 0
	
	&sql(SELECT TOP 1 Ende INTO :zeit 
			FROM DBIntrap.Leistung 
			WHERE Adresse->Mandant=:MandantOid AND Mitarbeiter=:MitarbeiterOid AND Datum=:Tag
			ORDER BY Ende DESC)
	
	Quit zeit
]]></Implementation>
</Method>

<Method name="GetLeistungByTime">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,MitarbeiterOid:%String,Tag:%Date,Zeit:%Time</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	
	&sql(SELECT TOP 1 ID INTO :id 
			FROM DBIntrap.Leistung 
			WHERE Adresse->Mandant=:MandantOid AND Mitarbeiter=:MitarbeiterOid AND Datum=:Tag AND Beginn <= :Zeit AND Ende >= :Zeit
			ORDER BY Ende DESC)
	
	Quit id
]]></Implementation>
</Method>

<Method name="%OnBeforeSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	If ('Insert) {
		set id = ..%Id()
		set betragIntern = 0
		set betragExtern = 0
		set menge = 0
		set datum = 0
		set kat = 0
		set mitarbeiter = ""
		set ap = ""
		set projekt = ""
		
		&sql(SELECT BetragIntern, BetragExtern, Kategorie, Menge, Datum, Mitarbeiter, Projekt, Arbeitsposition INTO :betragIntern, :betragExtern, :kat, :menge, :datum, :mitarbeiter, :projekt, :ap FROM DBIntrap.Leistung WHERE ID = :id)
		
		if (SQLCODE=0) {
			set ^LeistungOidBevorSave(..%Id(), "betragIntern") = betragIntern
			set ^LeistungOidBevorSave(..%Id(), "betragExtern") = betragExtern
			set ^LeistungOidBevorSave(..%Id(), "menge") = menge
			set ^LeistungOidBevorSave(..%Id(), "datum") = datum
			set ^LeistungOidBevorSave(..%Id(), "kat") = kat
			set ^LeistungOidBevorSave(..%Id(), "mitarbeiter") = mitarbeiter
			set ^LeistungOidBevorSave(..%Id(), "projekt") = projekt
			set ^LeistungOidBevorSave(..%Id(), "ap") = ap
		}
	} else {
		Set Mand = ..Adresse.Mandant
		Set Jnr = +..Journalnr
		If ..Journalnr '= ..SetJournalnr(.Jnr, Mand) {
			Set ..Journalnr = +Jnr
		}	
	}
	QUIT $$$OK
]]></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) {
		Set datum = $Get(^LeistungOidBevorSave(..%Id(), "datum"))
		Set vMonth=+$P($ZD(datum),"/",1)
   		Set vYear=+$P($ZD(datum),"/",3)
		Set projekt = $Get(^LeistungOidBevorSave(..%Id(), "projekt"))
		Set ap = $Get(^LeistungOidBevorSave(..%Id(), "ap"))
		Set kat = $Get(^LeistungOidBevorSave(..%Id(), "kat"))
		Set mitarbeiter = $Get(^LeistungOidBevorSave(..%Id(), "mitarbeiter"))
		set menge = $Get(^LeistungOidBevorSave(..%Id(), "menge")) * -1
		set betragIntern = $Get(^LeistungOidBevorSave(..%Id(), "betragIntern")) * -1
		set betragExtern = $Get(^LeistungOidBevorSave(..%Id(), "betragExtern")) * -1
		d ##class(DBIntrap.StatistikAP).SetBetragMengeClass(ap, vYear, vMonth, betragIntern, menge)
		if (ap '= "") {
			set app = ##class(DBIntrap.SD.Arbeitsposition).%OpenId(ap)
			if ((app = "") || (app.Einheit = "") || (app.Einheit.Stundenerfassung '= 1)) {
				set menge = 0
			}
			KILL app
			set app = ""
		}
		d ##class(DBIntrap.StatistikProjekt).SetBetragMengeClass(projekt, vYear, vMonth, betragIntern, menge)
		d ##class(DBIntrap.StatistikMitarbeiter).SetBetragMengeClass(mitarbeiter, vYear, vMonth, kat, betragIntern, menge, betragExtern, menge)
	
		KILL ^LeistungOidBevorSave(..%Id(), "betragIntern")
		KILL ^LeistungOidBevorSave(..%Id(), "betragExtern")
		KILL ^LeistungOidBevorSave(..%Id(), "menge")
		KILL ^LeistungOidBevorSave(..%Id(), "datum")
		KILL ^LeistungOidBevorSave(..%Id(), "kat")
		KILL ^LeistungOidBevorSave(..%Id(), "mitarbeiter")
		KILL ^LeistungOidBevorSave(..%Id(), "projekt")
		KILL ^LeistungOidBevorSave(..%Id(), "ap")
	}
	
	Set datum = ..Datum
	Set vMonth=+$P($ZD(datum),"/",1)
    Set vYear=+$P($ZD(datum),"/",3)
	set menge = ..Menge
	set betragIntern = ..BetragIntern
	set betragExtern = ..BetragExtern
		
	d ##class(DBIntrap.StatistikAP).SetBetragMengeClass(..Arbeitsposition.%Id(), vYear, vMonth, betragIntern, menge)
	if ((..Arbeitsposition = "") || (..Arbeitsposition.Einheit = "") || (..Arbeitsposition.Einheit.Stundenerfassung '= 1)) {
		set menge = 0
	}
	d ##class(DBIntrap.StatistikProjekt).SetBetragMengeClass(..Projekt.%Id(), vYear, vMonth, betragIntern, menge)
	d ##class(DBIntrap.StatistikMitarbeiter).SetBetragMengeClass(..Mitarbeiter.%Id(), vYear, vMonth, ..Kategorie, betragIntern, menge, betragExtern, menge)
	
	Quit $$$OK
]]></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 leist = ##class(DBIntrap.Leistung).%OpenId(myId)
	if (leist '= "") {
		set ^LeistungOidBevorDelete(myId, "ap") = leist.Arbeitsposition.%Id()
		set ^LeistungOidBevorDelete(myId, "kat") = leist.Kategorie
		set ^LeistungOidBevorDelete(myId, "mitarbeiter") = leist.Mitarbeiter.%Id()
		set ^LeistungOidBevorDelete(myId, "projekt") = leist.Projekt.%Id()
		set ^LeistungOidBevorDelete(myId, "betragIntern") = leist.BetragIntern
		set ^LeistungOidBevorDelete(myId, "betragExtern") = leist.BetragExtern
		set ^LeistungOidBevorDelete(myId, "menge") = leist.Menge
		set ^LeistungOidBevorDelete(myId, "datum") = leist.Datum
	}
	kill leist
	Quit $$$OK
]]></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[
	
	set myId = $lg(oid,1)
	
	Set apId = $Get(^LeistungOidBevorDelete(myId, "ap"))
	Set kat = $Get(^LeistungOidBevorDelete(myId, "kat"))
	Set mitarbeiterId = $Get(^LeistungOidBevorDelete(myId, "mitarbeiter"))
	Set projektId = $Get(^LeistungOidBevorDelete(myId, "projekt"))
	Set menge = $Get(^LeistungOidBevorDelete(myId, "menge"))
	Set betragIntern = $Get(^LeistungOidBevorDelete(myId, "betragIntern"))
	Set betragExtern = $Get(^LeistungOidBevorDelete(myId, "betragExtern"))
	Set datum = $Get(^LeistungOidBevorDelete(myId, "datum"))
	Set vMonth=+$P($ZD(datum),"/",1)
    Set vYear=+$P($ZD(datum),"/",3)
	if ((apId '= "") && (apId '= $c(0))) {
		d ##class(DBIntrap.StatistikAP).SetBetragMengeClass(apId, vYear, vMonth, betragIntern*-1, menge*-1)
	}
	if (apId '= "") {
		set app = ##class(DBIntrap.SD.Arbeitsposition).%OpenId(apId)
		if ((app = "") || (app.Einheit = "") || (app.Einheit.Stundenerfassung '= 1)) {
			set menge = 0
		}
		KILL app
		set app = ""
	}
	if ((projektId '= "") && (projektId '= $c(0))) {
		d ##class(DBIntrap.StatistikProjekt).SetBetragMengeClass(projektId, vYear, vMonth, betragIntern*-1, menge*-1)
	}
	if ((mitarbeiterId '= "") && (mitarbeiterId '= $c(0))) {
		d ##class(DBIntrap.StatistikMitarbeiter).SetBetragMengeClass(mitarbeiterId, vYear, vMonth, kat, betragIntern*-1, menge*-1, betragExtern*-1, menge*-1)
	}
	KILL ^LeistungOidBevorDelete(myId, "ap")
	KILL ^LeistungOidBevorDelete(myId, "kat")
	KILL ^LeistungOidBevorDelete(myId, "mitarbeiter")
	KILL ^LeistungOidBevorDelete(myId, "projekt")
	KILL ^LeistungOidBevorDelete(myId, "betragIntern")
	KILL ^LeistungOidBevorDelete(myId, "betragExtern")
	KILL ^LeistungOidBevorDelete(myId, "menge")
	KILL ^LeistungOidBevorDelete(myId, "datum")
	
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="RecalcStatistik">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,VonJahr:%Integer,BisJahr:%Integer,VonMonat:%Integer,BisMonat:%Integer</FormalSpec>
<Implementation><![CDATA[
	
	//Stat zuruecksetzten
	&sql(DELETE FROM DBIntrap.StatistikAP WHERE Arbeitsposition->Mandant = :MandantOid AND Jahr BETWEEN :VonJahr AND :BisJahr AND ((Jahr <> :VonJahr AND Jahr <> :BisJahr) OR (Jahr = :VonJahr AND Monat >= :VonMonat) OR (Jahr = :BisJahr AND Monat <= :BisMonat)))
	&sql(DELETE FROM DBIntrap.StatistikProjekt WHERE Projekt->Mandant = :MandantOid AND Jahr BETWEEN :VonJahr AND :BisJahr AND ((Jahr <> :VonJahr AND Jahr <> :BisJahr) OR (Jahr = :VonJahr AND Monat >= :VonMonat) OR (Jahr = :BisJahr AND Monat <= :BisMonat)))
	&sql(DELETE FROM DBIntrap.StatistikMitarbeiter WHERE Mitarbeiter->Mandant = :MandantOid AND Jahr BETWEEN :VonJahr AND :BisJahr AND ((Jahr <> :VonJahr AND Jahr <> :BisJahr) OR (Jahr = :VonJahr AND Monat >= :VonMonat) OR (Jahr = :BisJahr AND Monat <= :BisMonat)))
	
	Set strSQL="SELECT Arbeitsposition, Kategorie, Mitarbeiter, Projekt, BetragIntern, BetragExtern, Menge, Datum FROM DBIntrap.Leistung WHERE Adresse->Mandant="_MandantOid
	Set strSQL=strSQL_" AND DATEPART(YEAR, Datum) BETWEEN "_VonJahr_" AND "_BisJahr_" AND ((DATEPART(YEAR, Datum) <> "_VonJahr_" AND DATEPART(YEAR, Datum) <> "_BisJahr_") OR (DATEPART(YEAR, Datum) = "_VonJahr_" AND DATEPART(MONTH, Datum) >= "_VonMonat_") OR (DATEPART(YEAR, Datum) = "_BisJahr_" AND DATEPART(MONTH, Datum) <= "_BisMonat_"))"
	w strSQL,!
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	while (rs.Next()) {
		set datum = rs.Data("Datum")
		set vMonth=+$P(datum,"-",2)
    	Set vYear=+$P(datum,"-",1)
    	set menge = rs.Data("Menge")
		set betragIntern = rs.Data("BetragIntern")
		set betragExtern = rs.Data("BetragExtern")
		set ap = rs.Data("Arbeitsposition")
		
    	d ##class(DBIntrap.StatistikAP).SetBetragMengeClass(ap, vYear, vMonth, betragIntern, menge)
		if (ap '= "") {
			set app = ##class(DBIntrap.SD.Arbeitsposition).%OpenId(ap)
			if ((app = "") || (app.Einheit = "") || (app.Einheit.Stundenerfassung '= 1)) {
				set menge = 0
			}
			KILL app
			set app = ""
		}
		d ##class(DBIntrap.StatistikProjekt).SetBetragMengeClass(rs.Data("Projekt"), vYear, vMonth, betragIntern, menge)
		d ##class(DBIntrap.StatistikMitarbeiter).SetBetragMengeClass(rs.Data("Mitarbeiter"), vYear, vMonth, rs.Data("Kategorie"), betragIntern, menge, betragExtern, menge)
	
	}
]]></Implementation>
</Method>

<Method name="GetNextJournalnr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	Set newJnr = 0
	&sql(Select ISNULL(Max(Journalnr),0) Into :newJnr From Leistung Where Adresse->Mandant=:MandantOid)
	if (SQLCODE '= 0) { 
		Quit 1
	} else {
		Quit (newJnr + 1)
	}
]]></Implementation>
</Method>

<Method name="GetNextAbrechnungnr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^LeistungAbrechnungNr(MandantOid)) = "") {
		&sql(Select ISNULL(Max(Abrechnungnr),0) Into :nr From Leistung Where Adresse->Mandant=:MandantOid)
		if (SQLCODE = 0) {
			SET ^LeistungAbrechnungNr(MandantOid) = nr	
		}
	}
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^LeistungAbrechnungNr(MandantOid))
	
	set count = 0
	&sql(Select COUNT(ID) Into :count From Leistung Where Adresse->Mandant=:MandantOid AND Abrechnungnr = :nr)
	if (SQLCODE = 0) {
		set count = 0
	}
		
	while (count '= 0) {
		SET nr=$INCREMENT(^LeistungAbrechnungNr(MandantOid))
		&sql(Select COUNT(ID) Into :count From Leistung Where Adresse->Mandant=:MandantOid AND Abrechnungnr = :nr)
		if (SQLCODE = 0) {
			set count = 0
		}
	}
		
	Quit nr
]]></Implementation>
</Method>

<Method name="SetJournalnr">
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&Jnr:%RegisteredObject,MandantOid:%String]]></FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	If (Jnr '= 0) {
		Set Jnr = ..GetNextJournalnr(MandantOid)
	}
	Quit Jnr
]]></Implementation>
</Method>

<Method name="GetLastVerrechnetDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[
    Set datum =""
    &sql(SELECT TOP 1 Datum INTO :datum
       FROM DBIntrap.Leistung 
       WHERE Adresse->Mandant=:MandantOid
       AND Verrechnet = 1
       ORDER BY Datum DESC)
    if (SQLCODE '= 0) {
       &sql(SELECT TOP 1 Datum INTO :datum
           FROM DBIntrap.Leistung 
           WHERE Adresse->Mandant=:MandantOid
           ORDER BY Datum ASC)  
       if (SQLCODE '= 0) {          
           QUIT ""
       } else {
           Quit datum
       }
    } else {
	   Quit datum
    }
]]></Implementation>
</Method>

<Method name="GetLastVerrechnetDatumAdr">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdressOid:%String</FormalSpec>
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[
    Set datum =""
    &sql(SELECT TOP 1 Datum INTO :datum
       FROM DBIntrap.Leistung 
       WHERE Adresse=:AdressOid
       AND Verrechnet = 1
       ORDER BY Datum DESC)
    if (SQLCODE '= 0) {
       &sql(SELECT TOP 1 Datum INTO :datum
           FROM DBIntrap.Leistung 
           WHERE Adresse=:AdressOid
           ORDER BY Datum ASC)  
       if (SQLCODE '= 0) {          
           QUIT ""
       } else {
           Quit datum
       }
    } else {
	   Quit datum
    }
]]></Implementation>
</Method>

<Method name="SetVerrechnet">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<Implementation><![CDATA[
    &sql(UPDATE DBIntrap.Leistung SET Verrechnet = 1 
       WHERE Adresse->Mandant = :MandantOid AND
       Datum BETWEEN :VonDatum AND :BisDatum)
]]></Implementation>
</Method>

<Method name="ResetVerrechnet">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Abrechnungnr:%Integer</FormalSpec>
<Implementation><![CDATA[
    &sql(UPDATE DBIntrap.Leistung SET Verrechnet = 0, Abrechnungnr = 0
       WHERE Adresse->Mandant = :MandantOid AND
       Abrechnungnr = :Abrechnungnr)
]]></Implementation>
</Method>

<Method name="SetVerrechnetAdresse">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,VonDatum:%Date,BisDatum:%Date,AdressOid:%String</FormalSpec>
<Implementation><![CDATA[
	set abrechNr = ##class(DBIntrap.Leistung).GetNextAbrechnungnr(MandantOid)
	
    &sql(UPDATE DBIntrap.Leistung SET Verrechnet = 1, Abrechnungnr = :abrechNr
       WHERE Adresse = :AdressOid AND
       Datum BETWEEN :VonDatum AND :BisDatum)
]]></Implementation>
</Method>

<Method name="HasLeistungOnDayTime">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Tag:%Date,ZeitVon:%Time,ZeitBis:%Time</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set count = ""
	
	&sql(SELECT COUNT(ID) INTO :count
			FROM DBIntrap.Leistung 
			WHERE Mitarbeiter=:MitarbeiterOid AND Datum=:Tag
			AND Beginn >= :ZeitVon AND Ende <= :ZeitBis)
			
	if ((SQLCODE '= 0) || (count = 0)) {
		Quit 0 	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetEntry">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterNr:%Integer,AdressNr:%Integer,Tag:%Date,ZeitVon:%Time,ZeitBis:%Time</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set myId = ""
	
	&sql(SELECT ID INTO :myId
			FROM DBIntrap.Leistung 
			WHERE Mitarbeiter->Nummer=:MitarbeiterNr AND 
				Adresse->Adressnummer=:AdressNr AND
				Datum=:Tag AND 
				Beginn = :ZeitVon AND 
				Ende = :ZeitBis)
			
	if (SQLCODE '= 0) {
		set myId = ""
	}
	
	Quit myId
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.LeistungD</DataLocation>
<DefaultData>LeistungDefaultData</DefaultData>
<IdLocation>^DBIntrap.LeistungD</IdLocation>
<IndexLocation>^DBIntrap.LeistungI</IndexLocation>
<StreamLocation>^DBIntrap.LeistungS</StreamLocation>
<Data name="LeistungDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Journalnummer</Value>
</Value>
<Value name="3">
<Value>Adresse</Value>
</Value>
<Value name="4">
<Value>Projekt</Value>
</Value>
<Value name="5">
<Value>Arbeitsposition</Value>
</Value>
<Value name="6">
<Value>Datum</Value>
</Value>
<Value name="7">
<Value>Text1</Value>
</Value>
<Value name="8">
<Value>Text2</Value>
</Value>
<Value name="9">
<Value>Beginn</Value>
</Value>
<Value name="10">
<Value>Ende</Value>
</Value>
<Value name="11">
<Value>Menge</Value>
</Value>
<Value name="12">
<Value>TarifIntern</Value>
</Value>
<Value name="13">
<Value>TarifExtern</Value>
</Value>
<Value name="14">
<Value>Mitarbeiter</Value>
</Value>
<Value name="15">
<Value>ErfasserNr</Value>
</Value>
<Value name="16">
<Value>ErfasserBenutzername</Value>
</Value>
<Value name="17">
<Value>ErfasserVorname</Value>
</Value>
<Value name="18">
<Value>ErfasserName</Value>
</Value>
<Value name="19">
<Value>Einheit</Value>
</Value>
<Value name="20">
<Value>Kategorie</Value>
</Value>
<Value name="21">
<Value>Berechnungsart</Value>
</Value>
<Value name="22">
<Value>JournalNr</Value>
</Value>
<Value name="23">
<Value>Journalnr</Value>
</Value>
<Value name="24">
<Value>Absenzart</Value>
</Value>
<Value name="25">
<Value>Verrechnet</Value>
</Value>
<Value name="26">
<Value>Abrechnungnr</Value>
</Value>
</Data>
<Property name="Abrechnungnr"/>
<Property name="Absenzart"/>
<Property name="Adresse"/>
<Property name="Arbeitsposition"/>
<Property name="Beginn"/>
<Property name="Berechnungsart"/>
<Property name="BetragExtern"/>
<Property name="BetragIntern"/>
<Property name="Datum"/>
<Property name="Einheit"/>
<Property name="Ende"/>
<Property name="ErfasserBenutzername"/>
<Property name="ErfasserName"/>
<Property name="ErfasserNr"/>
<Property name="ErfasserVorname"/>
<Property name="Journalnr"/>
<Property name="Kategorie"/>
<Property name="Menge"/>
<Property name="Mitarbeiter"/>
<Property name="Projekt"/>
<Property name="TarifExtern"/>
<Property name="TarifIntern"/>
<Property name="Text1"/>
<Property name="Verrechnet"/>
</Storage>
</Class>


<Class name="DBIntrap.Mandatskontrolle">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57277.916059</TimeChanged>
<TimeCreated>62110,40373.240659</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="Buchhaltungsjahr">
<Description>
Buchhaltungsjahr</Description>
<Type>%Integer</Type>
</Property>

<Property name="Adresse">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>Mandatskontrolle</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="AdresseBuchhaltungsjahrIndex">
<Properties>Adresse,Buchhaltungsjahr</Properties>
<Unique>1</Unique>
</Index>

<Property name="Ablage">
<Description>
Ablage</Description>
<Type>%String</Type>
</Property>

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

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

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

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

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

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

<Property name="Kassenrapporte">
<Description>
Kassenrapporte</Description>
<Type>%Boolean</Type>
<Collection>array</Collection>
</Property>

<Property name="Aktentyp1">
<Description>
Aktentyp1</Description>
<Type>%Boolean</Type>
<Collection>array</Collection>
</Property>

<Property name="Aktentyp2">
<Description>
Aktentyp2</Description>
<Type>%Boolean</Type>
<Collection>array</Collection>
</Property>

<Property name="Aktentyp3">
<Description>
Aktentyp3</Description>
<Type>%Boolean</Type>
<Collection>array</Collection>
</Property>

<Property name="Aktentyp4">
<Description>
Aktentyp4</Description>
<Type>%Boolean</Type>
<Collection>array</Collection>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="SteuerdekPrivat">
<Description>
SteuerdekPrivate</Description>
<Type>%Boolean</Type>
</Property>

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

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

<Property name="Software">
<Type>DBIntrap.SD.Software</Type>
<Cardinality>one</Cardinality>
<Inverse>Mandatskontrolle</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Software"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="TypSteuerdekl">
<Type>DBIntrap.SD.TypSteuerdekl</Type>
<Cardinality>one</Cardinality>
<Inverse>Mandatskontrolle</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="TypSteuerdekl"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

<Property name="SteuerdekEinspracheStellungn">
<Description>
SteuerdekEinspracheStellungnahme</Description>
<Type>%Date</Type>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Method name="GetKassenrapporte">
<FormalSpec>Nummer:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res = ..Kassenrapporte.GetAt(Nummer)
	Quit res
]]></Implementation>
</Method>

<Method name="GetAktentyp1">
<FormalSpec>Nummer:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res = ..Aktentyp1.GetAt(Nummer)
	Quit res
]]></Implementation>
</Method>

<Method name="GetAktentyp2">
<FormalSpec>Nummer:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res = ..Aktentyp2.GetAt(Nummer)
	Quit res
]]></Implementation>
</Method>

<Method name="GetAktentyp3">
<FormalSpec>Nummer:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res = ..Aktentyp3.GetAt(Nummer)
	Quit res
]]></Implementation>
</Method>

<Method name="GetAktentyp4">
<FormalSpec>Nummer:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res = ..Aktentyp4.GetAt(Nummer)
	Quit res
]]></Implementation>
</Method>

<Method name="SetKassenrapporte">
<FormalSpec>Nummer:%Integer,Value:%Boolean</FormalSpec>
<Implementation><![CDATA[	DO ..Kassenrapporte.SetAt(Value, Nummer)
]]></Implementation>
</Method>

<Method name="SetAktentyp1">
<FormalSpec>Nummer:%Integer,Value:%Boolean</FormalSpec>
<Implementation><![CDATA[	DO ..Aktentyp1.SetAt(Value, Nummer)
]]></Implementation>
</Method>

<Method name="SetAktentyp2">
<FormalSpec>Nummer:%Integer,Value:%Boolean</FormalSpec>
<Implementation><![CDATA[	DO ..Aktentyp2.SetAt(Value, Nummer)
]]></Implementation>
</Method>

<Method name="SetAktentyp3">
<FormalSpec>Nummer:%Integer,Value:%Boolean</FormalSpec>
<Implementation><![CDATA[	DO ..Aktentyp3.SetAt(Value, Nummer)
]]></Implementation>
</Method>

<Method name="SetAktentyp4">
<FormalSpec>Nummer:%Integer,Value:%Boolean</FormalSpec>
<Implementation><![CDATA[	DO ..Aktentyp4.SetAt(Value, Nummer)
]]></Implementation>
</Method>

<Method name="GetIdByAdressOidAndJahr">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdressOid:%String,Buchhaltungsjahr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	
	&sql(SELECT ID INTO :id FROM DBIntrap.Mandatskontrolle WHERE Adresse = :AdressOid AND Buchhaltungsjahr = :Buchhaltungsjahr)
	if (SQLCODE'=0) {
		set id=""
	}
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.MandatskontrolleD</DataLocation>
<DefaultData>MandatskontrolleDefaultData</DefaultData>
<IdLocation>^DBIntrap.MandatskontrolleD</IdLocation>
<IndexLocation>^DBIntrap.MandatskontrolleI</IndexLocation>
<StreamLocation>^DBIntrap.MandatskontrolleS</StreamLocation>
<Data name="Aktentyp1">
<Attribute>Aktentyp1</Attribute>
<Structure>subnode</Structure>
<Subscript>"Aktentyp1"</Subscript>
</Data>
<Data name="Aktentyp2">
<Attribute>Aktentyp2</Attribute>
<Structure>subnode</Structure>
<Subscript>"Aktentyp2"</Subscript>
</Data>
<Data name="Aktentyp3">
<Attribute>Aktentyp3</Attribute>
<Structure>subnode</Structure>
<Subscript>"Aktentyp3"</Subscript>
</Data>
<Data name="Aktentyp4">
<Attribute>Aktentyp4</Attribute>
<Structure>subnode</Structure>
<Subscript>"Aktentyp4"</Subscript>
</Data>
<Data name="Kassenrapporte">
<Attribute>Kassenrapporte</Attribute>
<Structure>subnode</Structure>
<Subscript>"Kassenrapporte"</Subscript>
</Data>
<Data name="MandatskontrolleDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Buchhaltungsjahr</Value>
</Value>
<Value name="4">
<Value>Adresse</Value>
</Value>
<Value name="5">
<Value>Ablage</Value>
</Value>
<Value name="6">
<Value>BHNr</Value>
</Value>
<Value name="7">
<Value>Individuell1</Value>
</Value>
<Value name="8">
<Value>Individuell2</Value>
</Value>
<Value name="9">
<Value>Individuell3</Value>
</Value>
<Value name="10">
<Value>Individuell4</Value>
</Value>
<Value name="11">
<Value>Individuell5</Value>
</Value>
<Value name="12">
<Value>KassenrapporteEingang</Value>
</Value>
<Value name="13">
<Value>KassenrapporteAusgang</Value>
</Value>
<Value name="14">
<Value>KassenrapporteTage</Value>
</Value>
<Value name="15">
<Value>Aktentyp1Eingang</Value>
</Value>
<Value name="16">
<Value>Aktentyp1Ausgang</Value>
</Value>
<Value name="17">
<Value>Aktentyp1Tage</Value>
</Value>
<Value name="18">
<Value>Aktentyp2Eingang</Value>
</Value>
<Value name="19">
<Value>Aktentyp2Ausgang</Value>
</Value>
<Value name="20">
<Value>Aktentyp2Tage</Value>
</Value>
<Value name="21">
<Value>Aktentyp3Eingang</Value>
</Value>
<Value name="22">
<Value>Aktentyp3Ausgang</Value>
</Value>
<Value name="23">
<Value>Aktentyp3Tage</Value>
</Value>
<Value name="24">
<Value>Aktentyp4Eingang</Value>
</Value>
<Value name="25">
<Value>Aktentyp4Ausgang</Value>
</Value>
<Value name="26">
<Value>Aktentyp4Tage</Value>
</Value>
<Value name="27">
<Value>Text</Value>
</Value>
<Value name="28">
<Value>SteuerdekGeschaeftEingang</Value>
</Value>
<Value name="29">
<Value>SteuerdekGeschaeftFrist</Value>
</Value>
<Value name="30">
<Value>SteuerdekGeschaeftVerl1</Value>
</Value>
<Value name="31">
<Value>SteuerdekGeschaeftVerl2</Value>
</Value>
<Value name="32">
<Value>SteuerdekGeschaeftErledigt</Value>
</Value>
<Value name="33">
<Value>SteuerdekPrivatEingang</Value>
</Value>
<Value name="34">
<Value>SteuerdekPrivatFrist</Value>
</Value>
<Value name="35">
<Value>SteuerdekPrivatVerlaengerung1</Value>
</Value>
<Value name="36">
<Value>SteuerdekPrivatVerlaengerung2</Value>
</Value>
<Value name="37">
<Value>SteuerdekPrivatErledigt</Value>
</Value>
<Value name="38">
<Value>SteuerdekGeschaeft</Value>
</Value>
<Value name="39">
<Value>SteuerdekPrivat</Value>
</Value>
<Value name="40">
<Value>Sachbearbeiter1</Value>
</Value>
<Value name="41">
<Value>Sachbearbeiter2</Value>
</Value>
<Value name="42">
<Value>Software</Value>
</Value>
<Value name="43">
<Value>INdividuell3</Value>
</Value>
<Value name="44">
<Value>TypSteuerdekl</Value>
</Value>
<Value name="45">
<Value>SteuerdekEinspracheEingang</Value>
</Value>
<Value name="46">
<Value>SteuerdekEinspracheFrist</Value>
</Value>
<Value name="47">
<Value>SteuerdekEinspracheVersandt</Value>
</Value>
<Value name="48">
<Value>SteuerdekEinspracheStellungn</Value>
</Value>
<Value name="49">
<Value>SteuerdekEinspracheEntscheid</Value>
</Value>
<Value name="50">
<Value>SteuerdekRekursEingang</Value>
</Value>
<Value name="51">
<Value>SteuerdekRekursFrist</Value>
</Value>
<Value name="52">
<Value>SteuerdekRekursVersandt</Value>
</Value>
<Value name="53">
<Value>SteuerdekRekursStellungnahme</Value>
</Value>
<Value name="54">
<Value>SteuerdekRekursEntscheid</Value>
</Value>
<Value name="55">
<Value>SteuerdekBemerkung</Value>
</Value>
<Value name="56">
<Value>BetriebDatum1</Value>
</Value>
<Value name="57">
<Value>BetriebDatum2</Value>
</Value>
<Value name="58">
<Value>BetriebDatum3</Value>
</Value>
<Value name="59">
<Value>BetriebDatum4</Value>
</Value>
<Value name="60">
<Value>BetriebDatum5</Value>
</Value>
<Value name="61">
<Value>BetriebBetrag1</Value>
</Value>
<Value name="62">
<Value>BetriebBetrag2</Value>
</Value>
<Value name="63">
<Value>BetriebBetrag3</Value>
</Value>
<Value name="64">
<Value>BetriebBetrag4</Value>
</Value>
<Value name="65">
<Value>BetriebBetrag5</Value>
</Value>
<Value name="66">
<Value>BetriebBetrag6</Value>
</Value>
<Value name="67">
<Value>BetriebBetrag7</Value>
</Value>
<Value name="68">
<Value>BetriebBetrag8</Value>
</Value>
<Value name="69">
<Value>BetriebBetrag9</Value>
</Value>
<Value name="70">
<Value>BetriebBetrag10</Value>
</Value>
</Data>
<Property name="Ablage"/>
<Property name="Adresse"/>
<Property name="Aktentyp1Ausgang"/>
<Property name="Aktentyp1Eingang"/>
<Property name="Aktentyp1Tage"/>
<Property name="Aktentyp2Ausgang"/>
<Property name="Aktentyp2Eingang"/>
<Property name="Aktentyp2Tage"/>
<Property name="Aktentyp3Ausgang"/>
<Property name="Aktentyp3Eingang"/>
<Property name="Aktentyp3Tage"/>
<Property name="Aktentyp4Ausgang"/>
<Property name="Aktentyp4Eingang"/>
<Property name="Aktentyp4Tage"/>
<Property name="BHNr"/>
<Property name="BetriebBetrag1"/>
<Property name="BetriebBetrag10"/>
<Property name="BetriebBetrag2"/>
<Property name="BetriebBetrag3"/>
<Property name="BetriebBetrag4"/>
<Property name="BetriebBetrag5"/>
<Property name="BetriebBetrag6"/>
<Property name="BetriebBetrag7"/>
<Property name="BetriebBetrag8"/>
<Property name="BetriebBetrag9"/>
<Property name="BetriebDatum1"/>
<Property name="BetriebDatum2"/>
<Property name="BetriebDatum3"/>
<Property name="BetriebDatum4"/>
<Property name="BetriebDatum5"/>
<Property name="Buchhaltungsjahr"/>
<Property name="INdividuell3"/>
<Property name="Individuell1"/>
<Property name="Individuell2"/>
<Property name="Individuell3"/>
<Property name="Individuell4"/>
<Property name="Individuell5"/>
<Property name="KassenrapporteAusgang"/>
<Property name="KassenrapporteEingang"/>
<Property name="KassenrapporteTage"/>
<Property name="Sachbearbeiter1"/>
<Property name="Sachbearbeiter2"/>
<Property name="Software"/>
<Property name="SteuerdekBemerkung"/>
<Property name="SteuerdekEinspracheEingang"/>
<Property name="SteuerdekEinspracheEntscheid"/>
<Property name="SteuerdekEinspracheFrist"/>
<Property name="SteuerdekEinspracheStellungn"/>
<Property name="SteuerdekEinspracheVersandt"/>
<Property name="SteuerdekGeschaeft"/>
<Property name="SteuerdekGeschaeftEingang"/>
<Property name="SteuerdekGeschaeftErledigt"/>
<Property name="SteuerdekGeschaeftFrist"/>
<Property name="SteuerdekGeschaeftVerl1"/>
<Property name="SteuerdekGeschaeftVerl2"/>
<Property name="SteuerdekPrivat"/>
<Property name="SteuerdekPrivatEingang"/>
<Property name="SteuerdekPrivatErledigt"/>
<Property name="SteuerdekPrivatFrist"/>
<Property name="SteuerdekPrivatVerlaengerung1"/>
<Property name="SteuerdekPrivatVerlaengerung2"/>
<Property name="SteuerdekRekursEingang"/>
<Property name="SteuerdekRekursEntscheid"/>
<Property name="SteuerdekRekursFrist"/>
<Property name="SteuerdekRekursStellungnahme"/>
<Property name="SteuerdekRekursVersandt"/>
<Property name="Text"/>
<Property name="TypSteuerdekl"/>
</Storage>
</Class>


<Project name="DBIntrap">
  <Items>
    <ProjectItem name="DBIntrap.AF.LeistungAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.MandatskontrolleAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.ArbeitspositionAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.EinheitAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.PrioAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.ProblemtypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.ProjektAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.ProjektGrpApAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.ProjektgruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.QMeldungAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.SoftwareAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.SollzeitJahrAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.SollzeittabelleAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.SpesentypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.TarifAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.TarifartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.TarifgruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.SD.TypSteuerdeklAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.StatistikAPAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.StatistikMitarbAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.AF.StatistikProjektAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.Konst" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.Leistung" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.Mandatskontrolle" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.RTFStream" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Arbeitsposition" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Einheit" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Prio" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Problemtyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Projekt" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.ProjektGrpAP" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Projektgruppe" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.QMeldung" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Software" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.SollzeitJahr" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Sollzeittabelle" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Spesentyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Tarif" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Tarifart" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.Tarifgruppe" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SD.TypSteuerdekl" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.SperreMonatJahr" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.StatistikAP" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.StatistikMitarbeiter" type="CLS"></ProjectItem>
    <ProjectItem name="DBIntrap.StatistikProjekt" type="CLS"></ProjectItem>
  </Items>
</Project>


<Class name="DBIntrap.RTFStream">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.054833</TimeChanged>
<TimeCreated>61615,32580.666018</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Sprache">
<Type>%String</Type>
<Parameter name="MAXLEN" value="2"/>
<Parameter name="MINLEN" value="2"/>
</Property>

<Index name="SpracheIndex">
<Type>bitmap</Type>
<Properties>Sprache</Properties>
</Index>

<Property name="DataStream">
<Type>%GlobalBinaryStream</Type>
</Property>

<Property name="ProjektBeschrieb">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>one</Cardinality>
<Inverse>Detailbeschrieb</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="ProjektBeschriebIndex">
<Properties>ProjektBeschrieb</Properties>
</Index>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.RTFStreamD</DataLocation>
<DefaultData>RTFStreamDefaultData</DefaultData>
<IdLocation>^DBIntrap.RTFStreamD</IdLocation>
<IndexLocation>^DBIntrap.RTFStreamI</IndexLocation>
<StreamLocation>^DBIntrap.RTFStreamS</StreamLocation>
<Data name="RTFStreamDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Sprache</Value>
</Value>
<Value name="3">
<Value>DataStream</Value>
</Value>
<Value name="4">
<Value>ProjektBeschrieb</Value>
</Value>
</Data>
<Property name="DataStream"/>
<Property name="ProjektBeschrieb"/>
<Property name="Sprache"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Arbeitsposition">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57278.303531</TimeChanged>
<TimeCreated>61543,61821.865483</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>
</Property>

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

<Index name="NrIndex">
<Data>%%ID,Nummer,Kurzbezeichnung</Data>
<Properties>Mandant,Nummer</Properties>
</Index>

<Index name="KurzbezIndex">
<Data>%%ID,Nummer,Kurzbezeichnung</Data>
<Properties>Mandant:Exact,Kurzbezeichnung:Exact</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="NummerMandantIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

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

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

<Property name="TelefonatArbeitsposition">
<Type>DBAdressen.TelefonatDetail</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

<Property name="LeistungArbeitsposition">
<Type>DBIntrap.Leistung</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Tarifart">
<Type>DBIntrap.SD.Tarifart</Type>
<Cardinality>one</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tarifart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

<Property name="Einheit">
<Type>DBIntrap.SD.Einheit</Type>
<Cardinality>one</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Einheit"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

<Property name="Zusatzposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>one</Cardinality>
<Inverse>Parentposition</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="ZusatzpositionIndex">
<Properties>Zusatzposition</Properties>
</Index>

<Property name="Parentposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>many</Cardinality>
<Inverse>Zusatzposition</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Statistik">
<Type>DBIntrap.StatistikAP</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Arbeitszeiterfassung">
<Type>DBLohn.ArbeitszeitErf</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ProjektGrpAP">
<Type>DBIntrap.SD.ProjektGrpAP</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Arbeitsschema">
<Type>DBLohn.SD.Arbeitsschema</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AnzeigeCode">
<Type>%String</Type>
<Parameter name="MAXLEN" value="3"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Property name="Vorkalkulation">
<Type>DBSpezial.Mecano.VorkalkPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Arbeitsposition</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>APArtikel</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="Spesentyp">
<Type>DBIntrap.SD.Spesentyp</Type>
<Cardinality>one</Cardinality>
<Inverse>APSpesentyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Spesentyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</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(DBIntrap.SD.Arbeitsposition).%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="MoveFirstOnNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,""),1)
	if (grp '= ""){
		set id = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,grp,""),1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveLastOnNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,""),-1)
	if (grp '= ""){
		set id = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,grp,""),-1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AdrNr:%Integer</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextNr = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,AdrNr))
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,nextNr,""),1,list)
	} else {
		set list = ##class(DBIntrap.SD.Arbeitsposition).MoveLastOnNr(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AdrNr:%Integer</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextNr = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,AdrNr),-1)
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ArbeitspositionI("NrIndex",MandantOid,nextNr,""),-1,list)
	} else {
		set list = ##class(DBIntrap.SD.Arbeitsposition).MoveFirstOnNr(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MoveFirstOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()

	set grp = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,""),1)
	if (grp '= "") {
		set id = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,grp,""),1,list)
	} else {
		Quit ""
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveLastOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set grp = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,""),-1)
	if (grp '= "") {
		set id = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,grp,""),-1,list)
	} else {
		Quit ""
	}

	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbez:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set nextNr = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,Kurzbez))
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,nextNr,""),1,list)
	} else {
		set list = ##class(DBIntrap.SD.Arbeitsposition).MoveLastOnKurzbez(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbez:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set nextNr = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,Kurzbez),-1)
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ArbeitspositionI("KurzbezIndex",MandantOid,nextNr,""),-1,list)
	} else {
		set list = ##class(DBIntrap.SD.Arbeitsposition).MoveFirstOnKurzbez(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="GetIdByKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbez:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	set bez = Kurzbez_"%"
	&sql(SELECT TOP 1 ID INTO :id 
		 FROM DBIntrap_SD.Arbeitsposition 
		 WHERE Mandant = :MandantOid
		 AND Kurzbezeichnung LIKE :bez)
	
	if (id '= "") {
		Quit id
		
		// keine Daten gefunden
	} else {
		Quit ""
	}
]]></Implementation>
</Method>

<Method name="GetIdByNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nummer:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
                set id = ""
                &sql(SELECT TOP 1 ID INTO :id 
                                FROM DBIntrap_SD.Arbeitsposition 
                                WHERE Mandant = :MandantOid
                               AND Nummer = :Nummer)
                
                if (id '= "") {
                               Quit id
                               
                               // keine Daten gefunden
                } else {
                               Quit ""
                }
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.ArbeitspositionD</DataLocation>
<DefaultData>ArbeitspositionDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.ArbeitspositionD</IdLocation>
<IndexLocation>^DBIntrap.SD.ArbeitspositionI</IndexLocation>
<StreamLocation>^DBIntrap.SD.ArbeitspositionS</StreamLocation>
<Data name="ArbeitspositionDefaultData">
<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>Kurzbezeichnung</Value>
</Value>
<Value name="5">
<Value>BezeichnungArt</Value>
</Value>
<Value name="6">
<Value>Zeiterfassung</Value>
</Value>
<Value name="7">
<Value>Berechnungsart</Value>
</Value>
<Value name="8">
<Value>Tarifgruppe</Value>
</Value>
<Value name="9">
<Value>Einheit</Value>
</Value>
<Value name="10">
<Value>Tarifart</Value>
</Value>
<Value name="11">
<Value>Kategorie</Value>
</Value>
<Value name="12">
<Value>BetragFix</Value>
</Value>
<Value name="13">
<Value>Zusatzposition</Value>
</Value>
<Value name="14">
<Value>AnzeigeCode</Value>
</Value>
<Value name="15">
<Value>MaxAuslastungWoche</Value>
</Value>
<Value name="16">
<Value>ButtonFarbe</Value>
</Value>
<Value name="17">
<Value>Farbe</Value>
</Value>
<Value name="18">
<Value>Artikel</Value>
</Value>
<Value name="19">
<Value>Spesentyp</Value>
</Value>
</Data>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Property name="AnzeigeCode"/>
<Property name="Artikel"/>
<Property name="Berechnungsart"/>
<Property name="BetragFix"/>
<Property name="BezeichnungArt"/>
<Property name="BezeichnungFix"/>
<Property name="Einheit"/>
<Property name="Farbe"/>
<Property name="Kategorie"/>
<Property name="Kurzbezeichnung"/>
<Property name="Mandant"/>
<Property name="MaxAuslastungWoche"/>
<Property name="Nummer"/>
<Property name="Spesentyp"/>
<Property name="Tarifart"/>
<Property name="Tarifgruppe"/>
<Property name="Zeiterfassung"/>
<Property name="Zusatzposition"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Einheit">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57278.595966</TimeChanged>
<TimeCreated>61618,33180.181415</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>
</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>

<Index name="NummerMandantIndex">
<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="Arbeitsposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>many</Cardinality>
<Inverse>Einheit</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Leistung">
<Type>DBIntrap.Leistung</Type>
<Cardinality>many</Cardinality>
<Inverse>Einheit</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Stundenerfassung">
<Type>%Boolean</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(DBIntrap.SD.Einheit).%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="GetIdByTextOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Text:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
                set id = ""
                &sql(SELECT ID INTO :id FROM DBIntrap_SD.Einheit
                               WHERE Mandant = :MandantOid AND DBIntrap_SD.Einheit_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Text)
                Quit id
]]></Implementation>
</Method>

<Method name="GetNextFreeCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
                set code = 0
                &sql(SELECT TOP 1 Nummer INTO :code FROM DBIntrap_SD.Einheit
                     WHERE Mandant = :MandantOid ORDER BY Nummer DESC)
                set code = code + 1             
                Quit code
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.EinheitD</DataLocation>
<DefaultData>EinheitDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.EinheitD</IdLocation>
<IndexLocation>^DBIntrap.SD.EinheitI</IndexLocation>
<StreamLocation>^DBIntrap.SD.EinheitS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="EinheitDefaultData">
<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>Stundenerfassung</Value>
</Value>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
<Property name="Stundenerfassung"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Prio">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57278.794408</TimeChanged>
<TimeCreated>61675,33659.300782</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>
</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>

<Index name="NummerMandantIndex">
<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="PendenzPrioritaet">
<Type>DBAdressen.Pendenz</Type>
<Cardinality>many</Cardinality>
<Inverse>Prioritaet</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(DBIntrap.SD.Prio).%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>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.PrioD</DataLocation>
<DefaultData>PrioDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.PrioD</IdLocation>
<IndexLocation>^DBIntrap.SD.PrioI</IndexLocation>
<StreamLocation>^DBIntrap.SD.PrioS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="PrioDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Problemtyp">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57278.958644</TimeChanged>
<TimeCreated>61565,61340.539018</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>
</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>

<Index name="NummerMandantIndex">
<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="TelefonatProblemtyp">
<Type>DBAdressen.TelefonatKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>ProblemtypOld</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TelefonatDetProblemtyp">
<Type>DBAdressen.TelefonatDetail</Type>
<Cardinality>many</Cardinality>
<Inverse>Problemtyp</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(DBIntrap.SD.Problemtyp).%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>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.ProblemtypD</DataLocation>
<DefaultData>ProblemtypDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.ProblemtypD</IdLocation>
<IndexLocation>^DBIntrap.SD.ProblemtypI</IndexLocation>
<StreamLocation>^DBIntrap.SD.ProblemtypS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="ProblemtypDefaultData">
<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>Kurzbezeichnung</Value>
</Value>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Projekt">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57279.181294</TimeChanged>
<TimeCreated>61543,58226.960854</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="Hauptnummer">
<Type>%String</Type>
<Parameter name="MAXLEN" value="10"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Teilnummer">
<Type>%String</Type>
<Parameter name="MAXLEN" value="2"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Nummer">
<Type>%String</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {Nummer}=##class(DBIntrap.SD.Projekt).GetNummer({Hauptnummer},{Teilnummer}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="NummerNum">
<Type>%String</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {NummerNum}=##class(DBIntrap.SD.Projekt).GetNummerNum({Hauptnummer},{Teilnummer}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Index name="NrIndexAlpha">
<Data>%%ID,Nummer,Hauptnummer,Teilnummer,Kurzbezeichnung,Abgeschlossen,Projektgruppe</Data>
<Properties>Mandant,Nummer</Properties>
</Index>

<Index name="NrIndexNum">
<Data>%%ID,Nummer,Hauptnummer,Teilnummer,Kurzbezeichnung,Abgeschlossen,Projektgruppe</Data>
<Properties>Mandant,NummerNum:PLUS</Properties>
</Index>

<Index name="KurzbezIndex">
<Data>%%ID,Nummer,Kurzbezeichnung</Data>
<Properties>Mandant:Exact,Kurzbezeichnung:Exact</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="NummerMandantIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

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

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

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

<Property name="TelefonatProjekt">
<Type>DBAdressen.TelefonatDetail</Type>
<Cardinality>many</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="LeistungProjekt">
<Type>DBIntrap.Leistung</Type>
<Cardinality>many</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Hauptprojekt">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>one</Cardinality>
<Inverse>Teilprojekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="HauptprojektIndex">
<Properties>Hauptprojekt</Properties>
</Index>

<Property name="Teilprojekt">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>many</Cardinality>
<Inverse>Hauptprojekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="KundeIndex">
<Properties>Kunde</Properties>
</Index>

<Property name="Abgeschlossen">
<Type>%Boolean</Type>
<InitialExpression>0</InitialExpression>
</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(DBIntrap.SD.Projekt).%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="GetBeschreibung">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Beschreibung, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBeschreibungClass">
<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(DBIntrap.SD.Projekt).%OpenId(myID)
		set text = rs.GetBeschreibung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

<Method name="GetNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>Hauptnummer:%String,Teilnummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	if (Hauptnummer = $C(0)) {
		Set Hauptnummer = "0"
	}
	if (Teilnummer = $C(0)) {
		Set Teilnummer = "00"
	}
	
	if ($L(Hauptnummer) > 10) {
		Set Hauptnummer = $E(Hauptnummer,0, 9)
	} else {
		while ($L(Hauptnummer) < 10) {
			Set Hauptnummer = Hauptnummer_" "
		}	
	}
	if ($L(Teilnummer) > 2) {
		Set Teilnummer = $E(Teilnummer,0, 1)
	} else {
		while ($L(Teilnummer) < 2) {
			Set Teilnummer = "0"_Teilnummer
		}	
	}
	set retval = Hauptnummer_Teilnummer
	quit retval
]]></Implementation>
</Method>

<Method name="GetNummerNum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Nummer:%String,Teilnummer:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set retval = +Nummer * 100 + Teilnummer
	quit retval
]]></Implementation>
</Method>

<Method name="MoveFirstOnNrAlpha">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,""),1)
	w "GRP1:"_grp
	if (grp '= ""){
		set id = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,grp,""),1,list)
		set abge = $LIST(list,7)
		while (grp '= "" && abge = 1) {
			set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,grp),1)	
			w "GRP2:"_grp
			if (grp '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,grp,""),1,list)
				set abge = $LIST(list,7)
			}
		}
	} else {
		Quit ""	
	}
	w "quit",!
	Quit list
]]></Implementation>
</Method>

<Method name="MoveLastOnNrAlpha">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,""),-1)
	if (grp '= ""){
		set id = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,grp,""),-1,list)
		set abge = $LIST(list,7)
		while (grp '= "" && abge = 1) {
			set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,grp),-1)	
			if (grp '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,grp,""),-1,list)
				set abge = $LIST(list,7)
			}
		}
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnNrAlpha">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ProjNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set ProjNr = " "_ProjNr
    set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,ProjNr))
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,nextNr,""),1,list)
		set abge = $LIST(list,7)
		while (nextNr '= "" && abge = 1) {
			set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,nextNr),1)	
			if (nextNr '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,nextNr,""),1,list)
				set abge = $LIST(list,7)
			}else {
				set list = ##class(DBIntrap.SD.Projekt).MoveLastOnNrAlpha(MandantOid)
				break
			} 
		}
	} else {
		set list = ##class(DBIntrap.SD.Projekt).MoveLastOnNrAlpha(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnNrAlpha">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ProjNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set ProjNr = " "_ProjNr
    set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,ProjNr),-1)
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,nextNr,""),-1,list)
		set abge = $LIST(list,7)
		while (nextNr '= "" && abge = 1) {
			set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,nextNr),-1)	
			if (nextNr '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexAlpha",MandantOid,nextNr,""),-1,list)
				set abge = $LIST(list,7)
			} else {
				set list = ##class(DBIntrap.SD.Projekt).MoveFirstOnNrAlpha(MandantOid)
				break
			}
		}
	} else {
		set list = ##class(DBIntrap.SD.Projekt).MoveFirstOnNrAlpha(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MoveFirstOnNrNum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,""),1)
	if (grp '= ""){
		set id = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,grp,""),1,list)
		set abge = $LIST(list,7)
		while (grp '= "" && abge = 1) {
			set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,grp),1)	
			if (grp '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,grp,""),1,list)
				set abge = $LIST(list,7)
			}
		}
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveLastOnNrNum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,""),-1)
	if (grp '= ""){
		set id = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,grp,""),-1,list)
		set abge = $LIST(list,7)
		while (grp '= "" && abge = 1) {
			set grp = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,grp),-1)	
			if (grp '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,grp,""),-1,list)
				set abge = $LIST(list,7)
			}
		}
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnNrNum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ProjNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set ProjNr = +ProjNr
    set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,ProjNr))
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,nextNr,""),1,list)
		set abge = $LIST(list,7)
		while (nextNr '= "" && abge = 1) {
			set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,nextNr),1)	
			if (nextNr '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,nextNr,""),1,list)
				set abge = $LIST(list,7)
			}else {
				set list = ##class(DBIntrap.SD.Projekt).MoveLastOnNrNum(MandantOid)
				break
			} 
		}
	} else {
		set list = ##class(DBIntrap.SD.Projekt).MoveLastOnNrNum(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnNrNum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ProjNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set ProjNr = +ProjNr
    set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,ProjNr),-1)
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,nextNr,""),-1,list)
		set abge = $LIST(list,7)
		while (nextNr '= "" && abge = 1) {
			set nextNr = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,nextNr),-1)	
			if (nextNr '= ""){
				set id = $Order(^DBIntrap.SD.ProjektI("NrIndexNum",MandantOid,nextNr,""),-1,list)
				set abge = $LIST(list,7)
			} else {
				set list = ##class(DBIntrap.SD.Projekt).MoveFirstOnNrNum(MandantOid)
				break
			}
		}
	} else {
		set list = ##class(DBIntrap.SD.Projekt).MoveFirstOnNrNum(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MoveFirstOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,""),1)
	if (grp '= "") {
		set id = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,grp,""),1,list)
	} else {
		Quit ""
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveLastOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set grp = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,""),-1)
	if (grp '= "") {
		set id = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,grp,""),-1,list)
	} else {
		Quit ""
	}

	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbez:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextNr = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,Kurzbez))
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,nextNr,""),1,list)
	} else {
		set list = ##class(DBIntrap.SD.Projekt).MoveLastOnKurzbez(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbez:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextNr = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,Kurzbez),-1)
	if (nextNr '= "") {
		set res = $Order(^DBIntrap.SD.ProjektI("KurzbezIndex",MandantOid,nextNr,""),-1,list)
	} else {
		set list = ##class(DBIntrap.SD.Projekt).MoveFirstOnKurzbez(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="GetIdByKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbez:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	set bez = Kurzbez_"%"
	&sql(SELECT TOP 1 ID INTO :id 
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 AND Kurzbezeichnung LIKE :bez)
	
	if (id '= "") {
		Quit id
		
		// keine Daten gefunden
	} else {
		Quit ""
	}
]]></Implementation>
</Method>

<Method name="OutputStream">
<FormalSpec>Sprache:%String</FormalSpec>
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set myId = ..%Id()
	Set sID = ""
	Set Ret=""
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBIntrap.RTFStream
		     WHERE ProjektBeschrieb->ID=:myId AND Sprache=:Sprache)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBIntrap.RTFStream  
				 WHERE ProjektBeschrieb->ID=:myId AND 
				       Sprache=:Sprache)
			Set s=##Class(DBIntrap.RTFStream).%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 myId = ..%Id()
	Set sID = ""
	If (myId'="") {
		Set Cnt=0
		
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBIntrap.RTFStream
		     WHERE ProjektBeschrieb->ID=:myId AND Sprache=:Sprache)
		
		If (Cnt=0) {
			Set myId=..%Id()			
			Set n=##Class(DBIntrap.RTFStream).%New()
			Set n.Sprache = Sprache
			Set n.ProjektBeschrieb = ##Class(DBIntrap.SD.Projekt).%OpenId(myId)
			Set Ret=n.%Save()
			Set n=""
			Set res=(Ret=1)
			Quit:'res res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBIntrap.RTFStream 
		     WHERE ProjektBeschrieb->ID=:myId AND 
		           Sprache=:Sprache)
		
		Set s=##Class(DBIntrap.RTFStream).%OpenId(sID)
		Set Ret=s.DataStream.CopyFromAndSave(Stream)
		Set RetS = s.%Save()
		
		Set res=((Ret=1) && (RetS=1))
	}
	Quit res
]]></Implementation>
</Method>

<Property name="Detailbeschrieb">
<Type>DBIntrap.RTFStream</Type>
<Cardinality>many</Cardinality>
<Inverse>ProjektBeschrieb</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="ProjektleiterIntern">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>one</Cardinality>
<Inverse>ProjektProjektleiterIntern</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="ProjektleiterInternIndex">
<Properties>ProjektleiterIntern</Properties>
</Index>

<Property name="Sachbearbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>one</Cardinality>
<Inverse>ProjektSachbearbeiter</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="SachbearbeiterIndex">
<Properties>Sachbearbeiter</Properties>
</Index>

<Property name="Projektgruppe">
<Type>DBIntrap.SD.Projektgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="IsExternesProjekt">
<Type>%Boolean</Type>
<InitialExpression>0</InitialExpression>
</Property>

<Method name="GetNextFreeTeilNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Hauptnummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set nummer = ""
	&sql(SELECT MAX(Teilnummer) INTO :nummer
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 AND Hauptnummer = :Hauptnummer)
	
	if (nummer '= "") {
		set nummer = +nummer + 1
		if ($L(nummer) > 2) {
			Set nummer = $E(nummer,0, 1)
		} else {
			while ($L(nummer) < 2) {
				Set nummer = "0"_nummer
			}	
		}
		Quit nummer
		
		// keine Daten gefunden
	} else {
		Quit "01"
	}
]]></Implementation>
</Method>

<Method name="GetHauptOidByNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Hauptnummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT TOP 1 ID INTO :oid
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 AND Hauptnummer = :Hauptnummer
		 AND Hauptprojekt is null)
	
	Quit oid
]]></Implementation>
</Method>

<Method name="IsProjektHauptprojekt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Hauptnummer:%String,Teilnummer:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT TOP 1 ID INTO :oid
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 AND Hauptnummer = :Hauptnummer
		 AND Teilnummer = :Teilnummer
		 AND Hauptprojekt is null)
	w "OID:"_oid,!
	if (oid = "") {
		Quit 0
	} else {
		Quit 1	
	}
]]></Implementation>
</Method>

<Method name="GetFirstProjektByKunde">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,KundeOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
		&sql(SELECT TOP 1 ID INTO :oid
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 AND Kunde = :KundeOid
		 And (Abgeschlossen is null or Abgeschlossen <> 1) 
		 Order by Nummer
		 )
	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 feldOid = $lg(oid,1)
	d ##class(DBIntrap.SD.Projekt).DeleteRelations(feldOid)		
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code>	set myId = {ID*O}
	w "ID"_myId,!
	d ##class(DBIntrap.SD.Projekt).DeleteRelations(myId)</Code>
<Event>DELETE</Event>
</Trigger>

<Method name="DeleteRelations">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBIntrap.RTFStream WHERE ProjektBeschrieb = :oid)
]]></Implementation>
</Method>

<Property name="Auftrag">
<Type>DBFakturierung.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TeilbuchungKostenstelle">
<Description>
Teilbuchung-Kostenstelle</Description>
<Type>DBProjekt.Teilbuchung</Type>
<Cardinality>many</Cardinality>
<Inverse>Kostenstelle</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TeilbuchungGegenkonto">
<Description>
Teilbuchung-Kostenstelle</Description>
<Type>DBProjekt.Teilbuchung</Type>
<Cardinality>many</Cardinality>
<Inverse>Gegenkonto</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="KontoJahrProjektKostenstelle">
<Type>DBFibu.KontoJahr</Type>
<Cardinality>many</Cardinality>
<Inverse>ProjektKostenstelle</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="KontoJahrProjektGegenkonto">
<Type>DBFibu.KontoJahr</Type>
<Cardinality>many</Cardinality>
<Inverse>ProjektGegenkonto</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetFirstProjekt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
		&sql(SELECT TOP 1 ID INTO :oid
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 Order by Nummer
		 )
	quit oid
]]></Implementation>
</Method>

<Method name="GetLastProjekt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
		&sql(SELECT TOP 1 ID INTO :oid
		 FROM DBIntrap_SD.Projekt 
		 WHERE Mandant = :MandantOid
		 Order by Nummer DESC
		 )
	quit oid
]]></Implementation>
</Method>

<Method name="GetSaldovortrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set saldovortrag = 0
	
	&sql(SELECT SUM(BetragSH) Into :saldovortrag 
		 FROM DBProjekt.Teilbuchung
		 WHERE Kostenstelle=:ProjektOid AND 
		 	   Valutadatum BETWEEN {d :vonDatum} AND {d :bisDatum})
	
	if (SQLCODE '= 0) {
		set saldovortrag=0
	}
    
    Quit saldovortrag
]]></Implementation>
</Method>

<Method name="GetSaldovortragUmsatzSoll">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set saldovortrag = 0
	
	&sql(SELECT SUM(Buchungsbetrag) Into :saldovortrag 
			 FROM DBProjekt.Teilbuchung 
			 WHERE Kostenstelle=:ProjektOid AND 
			 	   Valutadatum BETWEEN {d :vonDatum} AND {d :bisDatum} AND 
			 	   Soll=1)
		
    if (SQLCODE '= 0) {
		set saldovortrag=0
	}
	
	Quit saldovortrag
]]></Implementation>
</Method>

<Method name="GetSaldovortragUmsatzHaben">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set saldovortrag = 0
	
	&sql(SELECT SUM(Buchungsbetrag) Into :saldovortrag 
		 FROM DBProjekt.Teilbuchung 
		 WHERE Kostenstelle=:ProjektOid AND 
		 	   Valutadatum BETWEEN {d :vonDatum} AND {d :bisDatum} AND 
		 	   Soll=0)
	
	if (SQLCODE '= 0) {
		set saldovortrag=0
	}
    
    Quit saldovortrag
]]></Implementation>
</Method>

<Method name="GetAnzahlBuchungen">
<ClassMethod>1</ClassMethod>
<FormalSpec>kstOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set anzahl = 0
	
	Set strSQL="SELECT COUNT(ID) As Anz FROM DBProjekt.Teilbuchung WHERE Kostenstelle='"_kstOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		Set sc = rs.Next(.sc)
		IF $$$ISOK(sc) {
			Set anzahl=rs.Data("Anz")
		}
    }
       
	Quit anzahl
]]></Implementation>
</Method>

<Property name="OPDebiZusatzProjekt">
<Type>DBDebiKredi.OPDebiZusatz</Type>
<Cardinality>many</Cardinality>
<Inverse>ProjektIntern</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ProjektleiterExtern">
<Type>%String</Type>
<Parameter name="MAXLEN" value="50"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ProjektleitungExtern">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>LeitungProjekt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Material">
<Type>DBProjekt.Material</Type>
<Cardinality>many</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

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

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

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

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

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

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

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

<Property name="Statistik">
<Type>DBIntrap.StatistikProjekt</Type>
<Cardinality>many</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetOidByNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set oid = ""
    &sql(SELECT TOP 1 ID INTO :oid
           FROM DBIntrap_SD.Projekt 
           WHERE Mandant = :MandantOid
           AND Nummer = :Nummer)
    if (SQLCODE'=0) {
           set oid = ""
    }
    Quit oid
]]></Implementation>
</Method>

<Method name="GetOidByHauptNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set oid = ""
    &sql(SELECT TOP 1 ID INTO :oid
           FROM DBIntrap_SD.Projekt 
           WHERE Mandant = :MandantOid
           AND Hauptnummer = :Nummer
           ORDER BY Teilnummer)
    if (SQLCODE'=0) {
           set oid = ""
    }
    Quit oid
]]></Implementation>
</Method>

<Property name="ProjektPendenz">
<Type>DBAdressen.Pendenz</Type>
<Cardinality>many</Cardinality>
<Inverse>Projekt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ZusatzProjektNr">
<Type>%String</Type>
<Parameter name="MAXLEN" value="50"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Seriennummer">
<Type>%String</Type>
<Parameter name="MAXLEN" value="50"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetHauptNrByOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set nr = ""
    &sql(SELECT TOP 1 Hauptnummer INTO :nr
           FROM DBIntrap_SD.Projekt 
           WHERE ID = :Oid)
    if (SQLCODE'=0) {
           set nr = ""
    }
    Quit nr
]]></Implementation>
</Method>

<Method name="GetOidByTeilHauptNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Hauptnummer:%String,Teilnummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set oid = ""
    &sql(SELECT ID INTO :oid
           FROM DBIntrap_SD.Projekt 
           WHERE Mandant = :MandantOid
           AND Hauptnummer = :Hauptnummer
           AND Teilnummer = :Teilnummer)
    if (SQLCODE'=0) {
           set oid = ""
    }
    Quit oid
]]></Implementation>
</Method>

<Method name="GetOidByKurzbezeichnung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Kurzbezeichnung:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set oid = ""
    &sql(SELECT ID INTO :oid
           FROM DBIntrap_SD.Projekt 
           WHERE Mandant = :MandantOid
           AND Kurzbezeichnung = :Kurzbezeichnung)
    if (SQLCODE'=0) {
           set oid = ""
    }
    Quit oid
]]></Implementation>
</Method>

<Method name="GetOidByBezeichnung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Bezeichnung:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set oid = ""
    &sql(SELECT ID INTO :oid
           FROM DBIntrap_SD.Projekt 
           WHERE Mandant = :MandantOid
           AND DBIntrap_SD.Projekt_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Bezeichnung)
    if (SQLCODE'=0) {
           set oid = ""
    }
    Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.ProjektD</DataLocation>
<DefaultData>ProjektDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.ProjektD</IdLocation>
<IndexLocation>^DBIntrap.SD.ProjektI</IndexLocation>
<StreamLocation>^DBIntrap.SD.ProjektS</StreamLocation>
<Data name="Beschreibung">
<Attribute>Beschreibung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Beschreibung"</Subscript>
</Data>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="ProjektDefaultData">
<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>Kurzbezeichnung</Value>
</Value>
<Value name="5">
<Value>Hauptnummer</Value>
</Value>
<Value name="6">
<Value>Teilnummer</Value>
</Value>
<Value name="7">
<Value>Hauptprojekt</Value>
</Value>
<Value name="8">
<Value>Kunde</Value>
</Value>
<Value name="9">
<Value>ProjektleiterIntern</Value>
</Value>
<Value name="10">
<Value>Sachbearbeiter</Value>
</Value>
<Value name="11">
<Value>Projektgruppe</Value>
</Value>
<Value name="12">
<Value>IsInteresProjekt</Value>
</Value>
<Value name="13">
<Value>IsExternesProjekt</Value>
</Value>
<Value name="14">
<Value>Abgeschlossen</Value>
</Value>
<Value name="15">
<Value>ProjektleiterExtern</Value>
</Value>
<Value name="16">
<Value>ProjektleitungExtern</Value>
</Value>
<Value name="17">
<Value>ErtraegeEffektiv</Value>
</Value>
<Value name="18">
<Value>MaterialEffektiv</Value>
</Value>
<Value name="19">
<Value>PersonalEffektiv</Value>
</Value>
<Value name="20">
<Value>DiverseEffektiv</Value>
</Value>
<Value name="21">
<Value>GemeinEffektiv</Value>
</Value>
<Value name="22">
<Value>ErtraegeBudget</Value>
</Value>
<Value name="23">
<Value>MaterialBudget</Value>
</Value>
<Value name="24">
<Value>PersonalBudget</Value>
</Value>
<Value name="25">
<Value>DiverseBudget</Value>
</Value>
<Value name="26">
<Value>GemeinBudget</Value>
</Value>
<Value name="27">
<Value>ZusatzProjektNr</Value>
</Value>
<Value name="28">
<Value>Seriennummer</Value>
</Value>
</Data>
<Property name="Abgeschlossen"/>
<Property name="DiverseBudget"/>
<Property name="DiverseEffektiv"/>
<Property name="ErtraegeBudget"/>
<Property name="ErtraegeEffektiv"/>
<Property name="GemeinBudget"/>
<Property name="GemeinEffektiv"/>
<Property name="Hauptnummer"/>
<Property name="Hauptprojekt"/>
<Property name="IsExternesProjekt"/>
<Property name="Kunde"/>
<Property name="Kurzbezeichnung"/>
<Property name="Mandant"/>
<Property name="MaterialBudget"/>
<Property name="MaterialEffektiv"/>
<Property name="Nummer"/>
<Property name="NummerNum"/>
<Property name="PersonalBudget"/>
<Property name="PersonalEffektiv"/>
<Property name="Projektgruppe"/>
<Property name="ProjektleiterExtern"/>
<Property name="ProjektleiterIntern"/>
<Property name="ProjektleitungExtern"/>
<Property name="Sachbearbeiter"/>
<Property name="Seriennummer"/>
<Property name="Teilnummer"/>
<Property name="Verwantwortlich"/>
<Property name="ZusatzProjektNr"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.ProjektGrpAP">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.146755</TimeChanged>
<TimeCreated>62060,53964.36785</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="Projektgruppe">
<Type>DBIntrap.SD.Projektgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>ProjektGrpAP</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Projektgruppe"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ProjektgruppeIndex">
<Properties>Projektgruppe</Properties>
</Index>

<Property name="Arbeitsposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>one</Cardinality>
<Inverse>ProjektGrpAP</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Arbeitsposition"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ArbeitspositionIndex">
<Properties>Arbeitsposition</Properties>
</Index>

<Method name="HasProjektGrpApClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>projektGrpOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set anz = 0
	
	&sql(SELECT COUNT(ID) INTO :anz FROM DBIntrap_SD.ProjektGrpAP WHERE Projektgruppe=:projektGrpOid)
	
	Quit (anz>0)
]]></Implementation>
</Method>

<Method name="IsApInProjektGrpClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>projektGrpOid:%String,apOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set anz = 0
	
	&sql(SELECT COUNT(ID) INTO :anz FROM DBIntrap_SD.ProjektGrpAP WHERE Projektgruppe=:projektGrpOid AND Arbeitsposition=:apOid)
	
	Quit (anz>0)
]]></Implementation>
</Method>

<Method name="UpdateProjektGrpAp">
<ClassMethod>1</ClassMethod>
<FormalSpec>projektGrpOid:%String,apOid:%String,setzen:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT ID INTO :oid FROM DBIntrap_SD.ProjektGrpAP WHERE Projektgruppe=:projektGrpOid AND Arbeitsposition=:apOid)
	
	w "UpdateProjektGrpAp - ID: "_oid,!
	w "UpdateProjektGrpAp - $L(ID): "_$L(oid),!
	
	if (setzen) {
		w "UpdateProjektGrpAp - setzen",!
	
		if ($L(oid)<=0) {
			set p = ##class(DBIntrap.SD.ProjektGrpAP).%New()
			set p.Arbeitsposition = ##class(DBIntrap.SD.Arbeitsposition).%OpenId(apOid)
			set p.Projektgruppe = ##class(DBIntrap.SD.Projektgruppe).%OpenId(projektGrpOid)
			set s = p.%Save()
			kill p
		}
	} else {
		w "UpdateProjektGrpAp - loeschen",!
	
		if ($L(oid)>0) {
			do ##class(DBIntrap.SD.ProjektGrpAP).%DeleteId(oid)
		}
	}
]]></Implementation>
</Method>

<Method name="CopyProjektGrpAp">
<ClassMethod>1</ClassMethod>
<FormalSpec>VonProjektGrpOid:%String,NachProjektGrpOid:%String</FormalSpec>
<Implementation><![CDATA[
	Set rs = ##class(%Library.ResultSet).%New("DBIntrap.AF.SD.ProjektApGrpAF.ListeNachProjektgruppe")
    Set sc=rs.%Execute(VonProjektGrpOid)
    while rs.Next() {
	   set id = rs.Data("ID")
		set ap = rs.Data("Arbeitsposition")
		do ##Class(DBIntrap.SD.ProjektGrpAP).UpdateProjektGrpAp(NachProjektGrpOid, ap, 1)
	}	
	Quit sc
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.ProjektGrpAPD</DataLocation>
<DefaultData>ProjektGrpAPDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.ProjektGrpAPD</IdLocation>
<IndexLocation>^DBIntrap.SD.ProjektGrpAPI</IndexLocation>
<StreamLocation>^DBIntrap.SD.ProjektGrpAPS</StreamLocation>
<Data name="ProjektGrpAPDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Projektgruppe</Value>
</Value>
<Value name="3">
<Value>Arbeitsposition</Value>
</Value>
</Data>
<Property name="Arbeitsposition"/>
<Property name="Projektgruppe"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Projektgruppe">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57279.426361</TimeChanged>
<TimeCreated>61655,33895.541733</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>
</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>

<Index name="NummerMandantIndex">
<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>

<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(DBIntrap.SD.Projektgruppe).%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>

<Property name="Projekt">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>many</Cardinality>
<Inverse>Projektgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="ProjektGrpAP">
<Type>DBIntrap.SD.ProjektGrpAP</Type>
<Cardinality>many</Cardinality>
<Inverse>Projektgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.ProjektgruppeD</DataLocation>
<DefaultData>ProjektgruppeDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.ProjektgruppeD</IdLocation>
<IndexLocation>^DBIntrap.SD.ProjektgruppeI</IndexLocation>
<StreamLocation>^DBIntrap.SD.ProjektgruppeS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="ProjektgruppeDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.QMeldung">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57279.54621</TimeChanged>
<TimeCreated>61646,62529.151176</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>
</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>

<Index name="NummerMandantIndex">
<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="TelefonatQMeldung">
<Type>DBAdressen.TelefonatDetail</Type>
<Cardinality>many</Cardinality>
<Inverse>QMeldung</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="QMeldMeldung">
<Type>DBTQM.QMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>Grund</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(DBIntrap.SD.QMeldung).%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>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.QMeldungD</DataLocation>
<DefaultData>QMeldungDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.QMeldungD</IdLocation>
<IndexLocation>^DBIntrap.SD.QMeldungI</IndexLocation>
<StreamLocation>^DBIntrap.SD.QMeldungS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="QMeldungDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Software">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57279.691095</TimeChanged>
<TimeCreated>62115,55400.252466</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>
</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>

<Index name="NummerMandantIndex">
<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="Mandatskontrolle">
<Type>DBIntrap.Mandatskontrolle</Type>
<Cardinality>many</Cardinality>
<Inverse>Software</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(DBIntrap.SD.Software).%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="GetIdByTextOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Text:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set id = ""
    &sql(SELECT ID INTO :id FROM DBIntrap_SD.Software
    WHERE Mandant = :MandantOid AND DBIntrap_SD.Software_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Text)
    Quit id
]]></Implementation>
</Method>

<Method name="GetNextFreeCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
    set code = 0
    &sql(SELECT TOP 1 Nummer INTO :code FROM DBIntrap_SD.Software
    WHERE Mandant = :MandantOid ORDER BY Nummer DESC)
    set code = code + 1             
    Quit code
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.SoftwareD</DataLocation>
<DefaultData>SoftwareDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.SoftwareD</IdLocation>
<IndexLocation>^DBIntrap.SD.SoftwareI</IndexLocation>
<StreamLocation>^DBIntrap.SD.SoftwareS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="SoftwareDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.SollzeitJahr">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.258005</TimeChanged>
<TimeCreated>61625,36768.341211</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="Jahr">
<Type>%Integer</Type>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="Sollzeittabelle">
<Type>DBIntrap.SD.Sollzeittabelle</Type>
<Cardinality>one</Cardinality>
<Inverse>SollzeitJahr</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Sollzeittabelle"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="SollzeittabelleIndex">
<Properties>Sollzeittabelle</Properties>
</Index>

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

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

<Method name="GetIdBySollzeittabelleJahr">
<ClassMethod>1</ClassMethod>
<FormalSpec>Sollzeittabelle:%String,Jahr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id
			FROM DBIntrap_SD.Sollzeitjahr
			WHERE Sollzeittabelle = :Sollzeittabelle AND Jahr = :Jahr)
			Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.SollzeitJahrD</DataLocation>
<DefaultData>SollzeitJahrDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.SollzeitJahrD</IdLocation>
<IndexLocation>^DBIntrap.SD.SollzeitJahrI</IndexLocation>
<StreamLocation>^DBIntrap.SD.SollzeitJahrS</StreamLocation>
<Data name="SollzeitJahrDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>SollzeittabelleNummer</Value>
</Value>
<Value name="3">
<Value>Jahr</Value>
</Value>
<Value name="4">
<Value>SollzeitJanuar</Value>
</Value>
<Value name="5">
<Value>SollzeitFebruar</Value>
</Value>
<Value name="6">
<Value>SollzeitMaerz</Value>
</Value>
<Value name="7">
<Value>SollzeitApril</Value>
</Value>
<Value name="8">
<Value>SollzeitMai</Value>
</Value>
<Value name="9">
<Value>SollzeitJuni</Value>
</Value>
<Value name="10">
<Value>SollzeitJuli</Value>
</Value>
<Value name="11">
<Value>SollzeitAugust</Value>
</Value>
<Value name="12">
<Value>SollzeitSeptember</Value>
</Value>
<Value name="13">
<Value>SollzeitOktober</Value>
</Value>
<Value name="14">
<Value>SollzeitNovember</Value>
</Value>
<Value name="15">
<Value>SollzeitDezember</Value>
</Value>
<Value name="16">
<Value>Sollzeittabelle</Value>
</Value>
<Value name="17">
<Value>SollzeitProTag</Value>
</Value>
<Value name="18">
<Value>SollzeitJeWoche</Value>
</Value>
</Data>
<Property name="Jahr"/>
<Property name="SollzeitApril"/>
<Property name="SollzeitAugust"/>
<Property name="SollzeitDezember"/>
<Property name="SollzeitFebruar"/>
<Property name="SollzeitJanuar"/>
<Property name="SollzeitJeWoche"/>
<Property name="SollzeitJuli"/>
<Property name="SollzeitJuni"/>
<Property name="SollzeitMaerz"/>
<Property name="SollzeitMai"/>
<Property name="SollzeitNovember"/>
<Property name="SollzeitOktober"/>
<Property name="SollzeitProTag"/>
<Property name="SollzeitSeptember"/>
<Property name="Sollzeittabelle"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Sollzeittabelle">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57279.810821</TimeChanged>
<TimeCreated>61625,36324.30367</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="Nummer">
<Type>%Integer</Type>
</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>

<Index name="NummerMandantIndex">
<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>

<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(DBIntrap.SD.Sollzeittabelle).%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>

<Property name="SollzeitJahr">
<Type>DBIntrap.SD.SollzeitJahr</Type>
<Cardinality>many</Cardinality>
<Inverse>Sollzeittabelle</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Mitarbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>many</Cardinality>
<Inverse>Sollzeittabelle</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Method name="GetSollzeitProTag">
<ClassMethod>1</ClassMethod>
<FormalSpec>Jahr:%Integer,SollzeitOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set zeit = 0
	
	&sql(SELECT TOP 1 SollzeitProTag INTO :zeit 
			FROM DBIntrap_SD.SollzeitJahr 
			WHERE Sollzeittabelle=:SollzeitOid AND Jahr=:Jahr
			ORDER BY Jahr DESC)
	
	Quit zeit
]]></Implementation>
</Method>

<Method name="GetSollzeitProMonat">
<ClassMethod>1</ClassMethod>
<FormalSpec>Jahr:%Integer,Monat:%Integer,SollzeitOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set zeit = 0
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id
			FROM DBIntrap_SD.SollzeitJahr 
			WHERE Sollzeittabelle=:SollzeitOid AND Jahr=:Jahr)
	if (id '= "") {
		set tbl = ##class(DBIntrap.SD.SollzeitJahr).%OpenId(id)
		if (Monat = 1) {
			set zeit = tbl.SollzeitJanuar
		} elseif (Monat = 2) {
			set zeit = tbl.SollzeitFebruar			
		} elseif (Monat = 3) {
			set zeit = tbl.SollzeitMaerz			
		} elseif (Monat = 4) {
			set zeit = tbl.SollzeitApril		
		} elseif (Monat = 5) {
			set zeit = tbl.SollzeitMai	
		} elseif (Monat = 6) {
			set zeit = tbl.SollzeitJuni			
		} elseif (Monat = 7) {
			set zeit = tbl.SollzeitJuli		
		} elseif (Monat = 8) {
			set zeit = tbl.SollzeitAugust		
		} elseif (Monat = 9) {
			set zeit = tbl.SollzeitSeptember			
		} elseif (Monat = 10) {
			set zeit = tbl.SollzeitOktober		
		} elseif (Monat = 11) {
			set zeit = tbl.SollzeitNovember		
		} elseif (Monat = 12) {
			set zeit = tbl.SollzeitDezember		
		}
		set tbl = ""	
	}		
	
	Quit zeit
]]></Implementation>
</Method>

<Method name="GetIdByMandantProzent">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,Prozent:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id
			FROM DBIntrap_SD.Sollzeittabelle
			WHERE Mandant = :MandOid AND Prozent = :Prozent)
			Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.SollzeittabelleD</DataLocation>
<DefaultData>SollzeittabelleDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.SollzeittabelleD</IdLocation>
<IndexLocation>^DBIntrap.SD.SollzeittabelleI</IndexLocation>
<StreamLocation>^DBIntrap.SD.SollzeittabelleS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="SollzeittabelleDefaultData">
<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>Prozent</Value>
</Value>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
<Property name="Prozent"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Spesentyp">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57279.931426</TimeChanged>
<TimeCreated>62214,49716.401245</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>
</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>

<Index name="NummerMandantIndex">
<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="APSpesentyp">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>many</Cardinality>
<Inverse>Spesentyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</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(DBIntrap.SD.Spesentyp).%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="GetIdByTextOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Text:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set id = ""
    &sql(SELECT ID INTO :id FROM DBIntrap_SD.Spesentyp
    WHERE Mandant = :MandantOid AND DBIntrap_SD.Spesentyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Text)
    Quit id
]]></Implementation>
</Method>

<Method name="GetNextFreeCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
    set code = 0
    &sql(SELECT TOP 1 Nummer INTO :code FROM DBIntrap_SD.Spesentyp
    WHERE Mandant = :MandantOid ORDER BY Nummer DESC)
    if (SQLCODE '= 0) {
	    Quit 0
    } else {
    	set code = code + 1             
    	Quit code
    }
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.SpesentypD</DataLocation>
<DefaultData>SpesentypDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.SpesentypD</IdLocation>
<IndexLocation>^DBIntrap.SD.SpesentypI</IndexLocation>
<StreamLocation>^DBIntrap.SD.SpesentypS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="SpesentypDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Tarif">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.392155</TimeChanged>
<TimeCreated>61595,49402.364153</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="AbDatum">
<Type>%Date</Type>
</Property>

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

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

<Property name="Tarifgruppe">
<Type>DBIntrap.SD.Tarifgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>Tarif</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tarifgruppe"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="TarifgruppeIndex">
<Properties>Tarifgruppe</Properties>
</Index>

<Property name="Tarifart">
<Type>DBIntrap.SD.Tarifart</Type>
<Cardinality>one</Cardinality>
<Inverse>Tarif</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tarifart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="TarifartIndex">
<Properties>Tarifart</Properties>
</Index>

<Index name="UniqueIndex">
<Properties>Tarifgruppe,Tarifart,AbDatum</Properties>
<Unique>1</Unique>
</Index>

<Method name="GetTarifOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>tarifgruppeOid:%String,tarifartOid:%String,datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	w "Datum:"_datum,!
	set oid = ""
	set dt=""
	&sql(SELECT TOP 1 ID, AbDatum INTO :oid, :dt 
			FROM DBIntrap_SD.Tarif 
			WHERE Tarifgruppe->ID=:tarifgruppeOid AND 
					Tarifart->ID=:tarifartOid AND
					AbDatum<=:datum
			ORDER BY AbDatum DESC)
	w "dt:"_dt,!
	Quit oid
]]></Implementation>
</Method>

<Method name="GetTarifOidExactDate">
<ClassMethod>1</ClassMethod>
<FormalSpec>tarifgruppeOid:%String,tarifartOid:%String,datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	w "Datum:"_datum,!
	set oid = ""
	set dt=""
	&sql(SELECT TOP 1 ID, AbDatum INTO :oid, :dt 
			FROM DBIntrap_SD.Tarif 
			WHERE Tarifgruppe->ID=:tarifgruppeOid AND 
					Tarifart->ID=:tarifartOid AND
					AbDatum=:datum
			ORDER BY AbDatum DESC)
	w "dt:"_dt,!
	Quit oid
]]></Implementation>
</Method>

<Method name="CopyFromTarifart">
<ClassMethod>1</ClassMethod>
<FormalSpec>vonTarifartOid:%String,nachTarifartOid:%String,ueberschreiben:%Boolean</FormalSpec>
<Implementation><![CDATA[
	Set strSQL ="SELECT ID, AbDatum, TarifIntern, TarifExtern, Tarifgruppe FROM DBIntrap_SD.Tarif WHERE Tarifart = "_vonTarifartOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		while (rs.Next(.sc)) {
			Set abdatum = rs.Data("AbDatum")
			Set intern = rs.Data("TarifIntern")
			Set extern = rs.Data("TarifExtern")
			Set gruppe = rs.Data("Tarifgruppe")
			
			Set oid=##class(DBIntrap.SD.Tarif).GetTarifOidExactDate(gruppe,nachTarifartOid,$ZDH(abdatum,3))
			
			w "OID:"_oid,!
			if (##class(DBIntrap.SD.Tarif).%ExistsId(oid)) {
				w "OID existiert",!
				if (ueberschreiben) {
					w "ueberschreiben",!
					Set edit = ##class(DBIntrap.SD.Tarif).%OpenId(oid)
					Set edit.TarifExtern = extern
					Set edit.TarifIntern = intern
					Set status = edit.%Save()
					w "Status:"_status,!
				}
				
			} else {
				w "OID existiert nicht",!
				Set neu = ##class(DBIntrap.SD.Tarif).%New()
				
				w "abdatum:",abdatum,!
				
				Set neu.AbDatum = $ZDH(abdatum,3)
				Set neu.Tarifart = ##class(DBIntrap.SD.Tarifart).%OpenId(nachTarifartOid)
				Set neu.TarifExtern = extern
				Set neu.Tarifgruppe = ##class(DBIntrap.SD.Tarifgruppe).%OpenId(gruppe)
				Set neu.TarifIntern = intern
				Set status = neu.%Save()
				w "Status:"_status,!
			}
		}
    }
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.TarifD</DataLocation>
<DefaultData>TarifDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.TarifD</IdLocation>
<IndexLocation>^DBIntrap.SD.TarifI</IndexLocation>
<StreamLocation>^DBIntrap.SD.TarifS</StreamLocation>
<Data name="TarifDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AbDatum</Value>
</Value>
<Value name="3">
<Value>TarifIntern</Value>
</Value>
<Value name="4">
<Value>TarifExtern</Value>
</Value>
<Value name="5">
<Value>Tarifgruppe</Value>
</Value>
<Value name="6">
<Value>Tarifart</Value>
</Value>
</Data>
<Property name="AbDatum"/>
<Property name="TarifExtern"/>
<Property name="TarifIntern"/>
<Property name="Tarifart"/>
<Property name="Tarifgruppe"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Tarifart">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57280.052766</TimeChanged>
<TimeCreated>61588,59337.664028</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>
</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>

<Index name="NummerMandantIndex">
<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="Arbeitsposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>many</Cardinality>
<Inverse>Tarifart</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Tarif">
<Type>DBIntrap.SD.Tarif</Type>
<Cardinality>many</Cardinality>
<Inverse>Tarifart</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(DBIntrap.SD.Tarifart).%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="%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 feldOid = $lg(oid,1)
	d ##class(DBIntrap.SD.Tarifart).DeleteRelations(feldOid)		
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code>	set myId = {ID*O}
	w "ID"_myId,!
	d ##class(DBIntrap.SD.Tarifart).DeleteRelations(myId)</Code>
<Event>DELETE</Event>
</Trigger>

<Method name="DeleteRelations">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBIntrap_SD.Tarif WHERE Tarifart = :oid)
]]></Implementation>
</Method>

<Method name="GetIdByNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nummer:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set id = ""
    &sql(SELECT TOP 1 ID INTO :id 
       FROM DBIntrap_SD.Tarifart
       WHERE Mandant = :MandantOid
       AND Nummer = :Nummer)
    
    if (id '= "") {
	   Quit id
   
	   // keine Daten gefunden
    } else {
       Quit ""
    }
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.TarifartD</DataLocation>
<DefaultData>TarifartDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.TarifartD</IdLocation>
<IndexLocation>^DBIntrap.SD.TarifartI</IndexLocation>
<StreamLocation>^DBIntrap.SD.TarifartS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TarifartDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.Tarifgruppe">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57280.173405</TimeChanged>
<TimeCreated>61588,51615.963372</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>
</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>

<Index name="NummerMandantIndex">
<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="Tarif">
<Type>DBIntrap.SD.Tarif</Type>
<Cardinality>many</Cardinality>
<Inverse>Tarifgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Mitarbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>many</Cardinality>
<Inverse>Tarifgruppe</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(DBIntrap.SD.Tarifgruppe).%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>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.TarifgruppeD</DataLocation>
<DefaultData>TarifgruppeDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.TarifgruppeD</IdLocation>
<IndexLocation>^DBIntrap.SD.TarifgruppeI</IndexLocation>
<StreamLocation>^DBIntrap.SD.TarifgruppeS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TarifgruppeDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SD.TypSteuerdekl">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57280.293868</TimeChanged>
<TimeCreated>62262,49646.541709</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>
</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>

<Index name="NummerMandantIndex">
<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="Mandatskontrolle">
<Type>DBIntrap.Mandatskontrolle</Type>
<Cardinality>many</Cardinality>
<Inverse>TypSteuerdekl</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(DBIntrap.SD.TypSteuerdekl).%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="GetIdByTextOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Text:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set id = ""
    &sql(SELECT ID INTO :id FROM DBIntrap_SD.TypSteuerdekl
   			 WHERE Mandant = :MandantOid AND 
   			 DBIntrap_SD.TypSteuerdekl_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Text)
    if (SQLCODE'=0) {
	    set id = ""
    }
    Quit id
]]></Implementation>
</Method>

<Method name="GetIdByNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
    set id = ""
    &sql(SELECT ID INTO :id 
    		FROM DBIntrap_SD.TypSteuerdekl
   			WHERE Mandant = :MandantOid AND
   					Nummer = :Nr)
    if (SQLCODE'=0) {
	    set id = ""
    }
    Quit id
]]></Implementation>
</Method>

<Method name="GetNextFreeCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
    set code = 0
    &sql(SELECT TOP 1 Nummer INTO :code FROM DBIntrap_SD.TypSteuerdekl
    WHERE Mandant = :MandantOid ORDER BY Nummer DESC)
    set code = code + 1             
    Quit code
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SD.TypSteuerdeklD</DataLocation>
<DefaultData>TypSteuerdeklDefaultData</DefaultData>
<IdLocation>^DBIntrap.SD.TypSteuerdeklD</IdLocation>
<IndexLocation>^DBIntrap.SD.TypSteuerdeklI</IndexLocation>
<StreamLocation>^DBIntrap.SD.TypSteuerdeklS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TypSteuerdeklDefaultData">
<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>
</Data>
<Property name="Mandant"/>
<Property name="Nummer"/>
</Storage>
</Class>


<Class name="DBIntrap.SperreMonatJahr">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.494378</TimeChanged>
<TimeCreated>62340,37157.128844</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="Jahr">
<Type>%Integer</Type>
</Property>

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

<Index name="SperreIndex">
<Properties>Jahr,Monat</Properties>
<Unique>1</Unique>
</Index>

<Method name="SetSperre">
<ClassMethod>1</ClassMethod>
<FormalSpec>Jahr:%Integer,Monat:%Integer,Gesperrt:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set res = $$$OK
	
	&sql(SELECT ID INTO :id 
			FROM DBIntrap.SperreMonatJahr
			WHERE Jahr=:Jahr AND Monat=:Monat)
			
	if (SQLCODE'=0) {
		set id = ""
	}
	
	if (Gesperrt '= 1) {
		if (id '= "") {
			set res = ##class(DBIntrap.SperreMonatJahr).%DeleteId(id)
		}
	} else {
		if (id = "") {
			set s = ##class(DBIntrap.SperreMonatJahr).%New()
			set s.Jahr = Jahr
			set s.Monat = Monat
			
			set res = s.%Save()
		}
	}
	
	Quit res
]]></Implementation>
</Method>

<Method name="IsGesperrt">
<ClassMethod>1</ClassMethod>
<FormalSpec>Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set res = $$$OK
	
	&sql(SELECT ID INTO :id 
			FROM DBIntrap.SperreMonatJahr
			WHERE Jahr=:Jahr AND Monat=:Monat)
			
	if (SQLCODE'=0) {
		set id = ""
	}
	
	Quit (id '= "")
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.SperreMonatJahrD</DataLocation>
<DefaultData>SperreMonatJahrDefaultData</DefaultData>
<IdLocation>^DBIntrap.SperreMonatJahrD</IdLocation>
<IndexLocation>^DBIntrap.SperreMonatJahrI</IndexLocation>
<StreamLocation>^DBIntrap.SperreMonatJahrS</StreamLocation>
<Data name="SperreMonatJahrDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Jahr</Value>
</Value>
<Value name="3">
<Value>Monat</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBIntrap.StatistikAP">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.591097</TimeChanged>
<TimeCreated>62038,33550.308382</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="Jahr">
<Type>%Integer</Type>
</Property>

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

<Property name="Arbeitsposition">
<Type>DBIntrap.SD.Arbeitsposition</Type>
<Cardinality>one</Cardinality>
<Inverse>Statistik</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Arbeitsposition"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="StatistikIndex">
<Properties>Arbeitsposition,Jahr,Monat</Properties>
<Unique>1</Unique>
</Index>

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

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

<Method name="GetStatistik">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	
	&sql(SELECT ID INTO :id 
			FROM DBIntrap.StatistikAP
			WHERE Arbeitsposition=:ArbeitspositionOid AND Jahr=:Jahr AND Monat=:Monat)
	Quit id
]]></Implementation>
</Method>

<Method name="GetBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT Betrag INTO :betrag
			FROM DBIntrap.StatistikAP
			WHERE Arbeitsposition=:ArbeitspositionOid AND Jahr=:Jahr AND Monat=:Monat)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT Menge INTO :menge
			FROM DBIntrap.StatistikAP
			WHERE Arbeitsposition=:ArbeitspositionOid AND Jahr=:Jahr AND Monat=:Monat)
	Quit menge
]]></Implementation>
</Method>

<Method name="SetBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,Jahr:%Integer,Monat:%Integer,Betrag:%Decimal</FormalSpec>
<Implementation><![CDATA[
	set id = ##class(DBIntrap.StatistikAP).GetStatistik(ArbeitspositionOid, Jahr, Monat)
	if (id = "") {
		set stat = ##class(DBIntrap.StatistikAP).%New()
		set stat.Arbeitsposition =  ##class(DBIntrap.SD.Arbeitsposition).%OpenId(ArbeitspositionOid)
		set stat.Jahr = Jahr
		set stat.Monat = Monat
		set stat.Betrag = Betrag
		do stat.%Save()
		kill stat
	} else {
		set stat = ##class(DBIntrap.StatistikAP).%OpenId(id)
		set stat.Betrag = stat.Betrag+Betrag
		do stat.%Save()
		kill stat
	}
]]></Implementation>
</Method>

<Method name="SetMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,Jahr:%Integer,Monat:%Integer,Menge:%Decimal</FormalSpec>
<Implementation><![CDATA[
	set id = ##class(DBIntrap.StatistikAP).GetStatistik(ArbeitspositionOid, Jahr, Monat)
	if (id = "") {
		set stat = ##class(DBIntrap.StatistikAP).%New()
		set stat.Arbeitsposition =  ##class(DBIntrap.SD.Arbeitsposition).%OpenId(ArbeitspositionOid)
		set stat.Jahr = Jahr
		set stat.Monat = Monat
		set stat.Menge = Menge
		do stat.%Save()
		kill stat
	} else {
		set stat = ##class(DBIntrap.StatistikAP).%OpenId(id)
		set stat.Menge = stat.Menge+Menge
		do stat.%Save()
		kill stat
	}
]]></Implementation>
</Method>

<Method name="SetBetragMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,Jahr:%Integer,Monat:%Integer,Betrag:%Decimal,Menge:%Decimal</FormalSpec>
<Implementation><![CDATA[
	//w "Set Statistik AP "_ArbeitspositionOid_" "_Jahr_"/"_Monat_" Betrag: "_Betrag,!
	set id = ##class(DBIntrap.StatistikAP).GetStatistik(ArbeitspositionOid, Jahr, Monat)
	if (id = "") {
		set stat = ##class(DBIntrap.StatistikAP).%New()
		set stat.Arbeitsposition =  ##class(DBIntrap.SD.Arbeitsposition).%OpenId(ArbeitspositionOid)
		set stat.Jahr = Jahr
		set stat.Monat = Monat
		set stat.Betrag = Betrag
		set stat.Menge = Menge
		do stat.%Save()
		kill stat
	} else {
		set stat = ##class(DBIntrap.StatistikAP).%OpenId(id)
		set stat.Betrag = stat.Betrag+Betrag
		set stat.Menge = stat.Menge+Menge
		do stat.%Save()
		kill stat
	}
]]></Implementation>
</Method>

<Method name="GetVortragBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,BisJahr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT SUM(Betrag) INTO :betrag
			FROM DBIntrap.StatistikAP
			WHERE Arbeitsposition=:ArbeitspositionOid AND Jahr < :BisJahr)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetVortragMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArbeitspositionOid:%String,BisJahr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT SUM(Menge) INTO :menge
			FROM DBIntrap.StatistikAP
			WHERE Arbeitsposition=:ArbeitspositionOid AND Jahr < :BisJahr)
	Quit menge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.StatistikAPD</DataLocation>
<DefaultData>StatistikAPDefaultData</DefaultData>
<IdLocation>^DBIntrap.StatistikAPD</IdLocation>
<IndexLocation>^DBIntrap.StatistikAPI</IndexLocation>
<StreamLocation>^DBIntrap.StatistikAPS</StreamLocation>
<Data name="StatistikAPDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Jahr</Value>
</Value>
<Value name="3">
<Value>Perdiode</Value>
</Value>
<Value name="4">
<Value>Arbeitsposition</Value>
</Value>
<Value name="5">
<Value>Betrag</Value>
</Value>
<Value name="6">
<Value>Menge</Value>
</Value>
<Value name="7">
<Value>Periode</Value>
</Value>
<Value name="8">
<Value>Monat</Value>
</Value>
</Data>
<Property name="Arbeitsposition"/>
<Property name="Betrag"/>
<Property name="Jahr"/>
<Property name="Menge"/>
<Property name="Monat"/>
</Storage>
</Class>


<Class name="DBIntrap.StatistikMitarbeiter">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,60496.960532</TimeChanged>
<TimeCreated>62039,30773.861419</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="Jahr">
<Type>%Integer</Type>
</Property>

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

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

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

<Index name="StatistikIndex">
<Properties>Mitarbeiter,Jahr,Monat,Kategorie</Properties>
<Unique>1</Unique>
</Index>

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

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

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

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

<Method name="GetStatistik">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer,Kategorie:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	
	&sql(SELECT ID INTO :id 
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr=:Jahr AND Monat=:Monat AND Kategorie = :Kategorie)
	Quit id
]]></Implementation>
</Method>

<Method name="GetBetragInternClassKat">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer,Kategorie:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT BetragIntern INTO :betrag
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr=:Jahr AND Monat=:Monat AND Kategorie = :Kategorie)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetMengeInternClassKat">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer,Kategorie:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT MengeIntern INTO :menge
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr=:Jahr AND Monat=:Monat AND Kategorie = :Kategorie)
	Quit menge
]]></Implementation>
</Method>

<Method name="SetBetragMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer,Kategorie:%Integer,BetragIntern:%Decimal,MengeIntern:%Decimal,BetragExtern:%Decimal,MengeExtern:%Decimal</FormalSpec>
<Implementation><![CDATA[
    //w "Set Statistik Mitarbeiter "_MitarbeiterOid_" "_Jahr_"/"_Monat_" Betrag: "_BetragIntern,!
    set id = ##class(DBIntrap.StatistikMitarbeiter).GetStatistik(MitarbeiterOid, Jahr, Monat, Kategorie)
    if (id = "") {
       set stat = ##class(DBIntrap.StatistikMitarbeiter).%New()
       set stat.Mitarbeiter = ##class(DBCore.Mitarbeiter).%OpenId(MitarbeiterOid)
       set stat.Jahr = Jahr
       set stat.Monat = Monat
       set stat.Kategorie = Kategorie
       set stat.BetragIntern = BetragIntern
       set stat.MengeIntern = MengeIntern
       set stat.BetragExtern = BetragExtern
       set stat.MengeExtern = MengeExtern
       do stat.%Save()
       kill stat
    } else {
       set stat = ##class(DBIntrap.StatistikMitarbeiter).%OpenId(id)
       set stat.BetragIntern = BetragIntern
       set stat.MengeIntern = MengeIntern
       set stat.BetragExtern = BetragExtern
       set stat.MengeExtern = MengeExtern
       do stat.%Save()
       kill stat
    }
]]></Implementation>
</Method>

<Method name="GetVortragBetragInternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,BisJahr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT SUM(BetragIntern) INTO :betrag
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr < :BisJahr)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetVortragMengeInternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,BisJahr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT SUM(MengeIntern) INTO :menge
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr < :BisJahr)
	Quit menge
]]></Implementation>
</Method>

<Method name="GetBetragInternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT SUM(BetragIntern) INTO :betrag
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr=:Jahr AND Monat=:Monat)
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetMengeInternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT SUM(MengeIntern) INTO :menge
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr=:Jahr AND Monat=:Monat)
	Quit menge
]]></Implementation>
</Method>

<Method name="GetStundenInternClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>MitarbeiterOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT SUM(MengeIntern) INTO :menge
			FROM DBIntrap.StatistikMitarbeiter
			WHERE Mitarbeiter=:MitarbeiterOid AND Jahr=:Jahr AND Monat=:Monat
			AND (Kategorie = DBIntrap.Konst_KategorieVerrechenbar() 
				OR Kategorie = DBIntrap.Konst_KategorieNichtVerrechenbar()
				OR Kategorie = DBIntrap.Konst_KategorieFerien()
				OR Kategorie = DBIntrap.Konst_KategorieWeiterbildung()
				OR Kategorie = DBIntrap.Konst_KategorieIntern()
				OR Kategorie = DBIntrap.Konst_KategorieAbsenz()))
	Quit menge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.StatistikMitarbeiterD</DataLocation>
<DefaultData>StatistikMitarbeiterDefaultData</DefaultData>
<IdLocation>^DBIntrap.StatistikMitarbeiterD</IdLocation>
<IndexLocation>^DBIntrap.StatistikMitarbeiterI</IndexLocation>
<StreamLocation>^DBIntrap.StatistikMitarbeiterS</StreamLocation>
<Data name="StatistikMitarbeiterDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Jahr</Value>
</Value>
<Value name="3">
<Value>Monat</Value>
</Value>
<Value name="4">
<Value>Mitarbeiter</Value>
</Value>
<Value name="5">
<Value>Kategorie</Value>
</Value>
<Value name="6">
<Value>BetragIntern</Value>
</Value>
<Value name="7">
<Value>MengeIntern</Value>
</Value>
<Value name="8">
<Value>BetragExtern</Value>
</Value>
<Value name="9">
<Value>MengeExtern</Value>
</Value>
</Data>
<Property name="BetragExtern"/>
<Property name="BetragIntern"/>
<Property name="Jahr"/>
<Property name="Kategorie"/>
<Property name="MengeExtern"/>
<Property name="MengeIntern"/>
<Property name="Mitarbeiter"/>
<Property name="Monat"/>
</Storage>
</Class>


<Class name="DBIntrap.StatistikProjekt">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57225.824081</TimeChanged>
<TimeCreated>62038,55672.508225</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="Jahr">
<Type>%Integer</Type>
</Property>

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

<Property name="Projekt">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>one</Cardinality>
<Inverse>Statistik</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Projekt"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="StatistikIndex">
<Properties>Projekt,Jahr,Monat</Properties>
<Unique>1</Unique>
</Index>

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

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

<Method name="GetStatistik">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	
	&sql(SELECT ID INTO :id 
			FROM DBIntrap.StatistikProjekt
			WHERE Projekt=:ProjektOid AND Jahr=:Jahr AND Monat=:Monat)
			
	if (SQLCODE'=0) {
		set id = ""
	}
	Quit id
]]></Implementation>
</Method>

<Method name="GetBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT Betrag INTO :betrag
			FROM DBIntrap.StatistikProjekt
			WHERE Projekt=:ProjektOid AND Jahr=:Jahr AND Monat=:Monat)
			
	if (SQLCODE'=0) {
		set betrag = 0
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,Jahr:%Integer,Monat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT Menge INTO :menge
			FROM DBIntrap.StatistikProjekt
			WHERE Projekt=:ProjektOid AND Jahr=:Jahr AND Monat=:Monat)
	
	if (SQLCODE'=0) {
		set menge = 0
	}
	Quit menge
]]></Implementation>
</Method>

<Method name="SetBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,Jahr:%Integer,Monat:%Integer,Betrag:%Decimal</FormalSpec>
<Implementation><![CDATA[
	set id = ##class(DBIntrap.StatistikProjekt).GetStatistik(ProjektOid, Jahr, Monat)
	if (id = "") {
		set stat = ##class(DBIntrap.StatistikProjekt).%New()
		set stat.Projekt =  ##class(DBIntrap.SD.Projekt).%OpenId(ProjektOid)
		set stat.Jahr = Jahr
		set stat.Monat = Monat
		set stat.Betrag = Betrag
		do stat.%Save()
		kill stat
	} else {
		set stat = ##class(DBIntrap.StatistikProjekt).%OpenId(id)
		set stat.Betrag = stat.Betrag+Betrag
		do stat.%Save()
		kill stat
	}
]]></Implementation>
</Method>

<Method name="SetMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,Jahr:%Integer,Monat:%Integer,Menge:%Decimal</FormalSpec>
<Implementation><![CDATA[
	set id = ##class(DBIntrap.StatistikProjekt).GetStatistik(ProjektOid, Jahr, Monat)
	if (id = "") {
		set stat = ##class(DBIntrap.StatistikProjekt).%New()
		set stat.Projekt =  ##class(DBIntrap.SD.Projekt).%OpenId(ProjektOid)
		set stat.Jahr = Jahr
		set stat.Monat = Monat
		set stat.Menge = Menge
		do stat.%Save()
		kill stat
	} else {
		set stat = ##class(DBIntrap.StatistikProjekt).%OpenId(id)
		set stat.Menge = stat.Menge+Menge
		do stat.%Save()
		kill stat
	}
]]></Implementation>
</Method>

<Method name="SetBetragMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,Jahr:%Integer,Monat:%Integer,Betrag:%Decimal,Menge:%Decimal</FormalSpec>
<Implementation><![CDATA[
	//w "Set Statistik Projekt "_ProjektOid_" "_Jahr_"/"_Monat_" Betrag: "_Betrag,!
	set id = ##class(DBIntrap.StatistikProjekt).GetStatistik(ProjektOid, Jahr, Monat)
	if (id = "") {
		set stat = ##class(DBIntrap.StatistikProjekt).%New()
		set stat.Projekt =  ##class(DBIntrap.SD.Projekt).%OpenId(ProjektOid)
		set stat.Jahr = Jahr
		set stat.Monat = Monat
		set stat.Betrag = Betrag
		set stat.Menge = Menge
		do stat.%Save()
		kill stat
	} else {
		set stat = ##class(DBIntrap.StatistikProjekt).%OpenId(id)
		set stat.Betrag = stat.Betrag+Betrag
		set stat.Menge = stat.Menge+Menge
		do stat.%Save()
		kill stat
	}
]]></Implementation>
</Method>

<Method name="GetVortragBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,BisJahr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	&sql(SELECT SUM(Betrag) INTO :betrag
			FROM DBIntrap.StatistikProjekt
			WHERE Projekt=:ProjektOid AND Jahr < :BisJahr)
	
	if (SQLCODE'=0) {
		set betrag = 0
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetVortragMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ProjektOid:%String,BisJahr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT SUM(Menge) INTO :menge
			FROM DBIntrap.StatistikProjekt
			WHERE Projekt=:ProjektOid AND Jahr < :BisJahr)
	
	if (SQLCODE'=0) {
		set menge = 0
	}
	Quit menge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBIntrap.StatistikProjektD</DataLocation>
<DefaultData>StatistikProjektDefaultData</DefaultData>
<IdLocation>^DBIntrap.StatistikProjektD</IdLocation>
<IndexLocation>^DBIntrap.StatistikProjektI</IndexLocation>
<StreamLocation>^DBIntrap.StatistikProjektS</StreamLocation>
<Data name="StatistikProjektDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Jahr</Value>
</Value>
<Value name="3">
<Value>Monat</Value>
</Value>
<Value name="4">
<Value>Projekt</Value>
</Value>
<Value name="5">
<Value>Betrag</Value>
</Value>
<Value name="6">
<Value>Menge</Value>
</Value>
</Data>
<Property name="Betrag"/>
<Property name="Jahr"/>
<Property name="Menge"/>
<Property name="Monat"/>
<Property name="Projekt"/>
</Storage>
</Class>
</Export>
