<?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:29:28">
<Class name="DBProjekt.AF.BuchungAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33644</TimeChanged>
<TimeCreated>61726,32356.422888</TimeCreated>

<Query name="AlleBuchungenJnr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,abJnr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung,
		Kopfbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Buchung->Mandant=:MandantOid AND Buchung->Journalnr>=:abJnr
	ORDER BY Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
</Query>

<Query name="AlleBuchungenValutadatum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,abDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung,
		Kopfbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Buchung->Mandant=:MandantOid AND Valutadatum >= {d :abDatum}
	ORDER BY Valutadatum, Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
</Query>

<Query name="BuchungenByKstJnr">
<Type>%SQLQuery</Type>
<FormalSpec>KostenstelleOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung,
		Kopfbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Kostenstelle=:KostenstelleOid
	ORDER BY Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
</Query>

<Query name="BuchungenByKstValutadatum">
<Type>%SQLQuery</Type>
<FormalSpec>KostenstelleOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung,
		Kopfbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Kostenstelle=:KostenstelleOid
	ORDER BY Valutadatum, Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
</Query>

<Query name="BuchungenByFibuBuch">
<Type>%SQLQuery</Type>
<FormalSpec>FibuTeilbuchungOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung,
		Kopfbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Buchung->FibuBuchung=:FibuTeilbuchungOid
	ORDER BY Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
</Query>

<Query name="BuchungenKontodetailNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonKstNr:%String,bisKstNr:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->NummerNum,
		Gegenkonto->NummerNum,
		Kostenstelle,
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Buchungstext2,
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Buchung->Mandant=:MandantOid AND
			Kostenstelle->NummerNum BETWEEN :vonKstNr AND :bisKstNr AND
			Valutadatum BETWEEN {d :vonDatum} AND {d :bisDatum}
	ORDER BY Valutadatum, Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
<Parameter name="CONTAINID" value="1"/>
</Query>

<Query name="BuchungenKontodetailAlphaNum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonKstNr:%String,bisKstNr:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		Buchung,
		Buchung->Buchungsart, 
		Buchung->Journalnr, 
		Buchung->Buchungstyp,
		Valutadatum, 
		BelegNr, 
		Kostenstelle->NummerNum,
		Gegenkonto->NummerNum,
		Kostenstelle,
		Kostenstelle->Hauptnummer AS KostenstelleHauptnr, 
		Kostenstelle->Teilnummer AS KostenstelleTeilnr, 
		Gegenkonto->Hauptnummer AS GegenkontoHauptnr, 
		Gegenkonto->Teilnummer AS GegenkontoTeilnr, 
		Buchungstext1, 
		Buchungstext2,
		Soll, 
		Buchungsbetrag,
		BetragSH,
		Buchung->IsEinzelbuchung AS IsEinzelbuchung
	FROM DBProjekt.Teilbuchung 
	WHERE Buchung->Mandant=:MandantOid AND
			Kostenstelle->Nummer BETWEEN :vonKstNr AND :bisKstNr AND
			Valutadatum BETWEEN {d :vonDatum} AND {d :bisDatum}
	ORDER BY Valutadatum, Buchung->Journalnr, Kopfbuchung DESC]]></SqlQuery>
<Parameter name="CONTAINID" value="1"/>
</Query>
</Class>


<Class name="DBProjekt.AF.MaterialAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33644</TimeChanged>
<TimeCreated>61954,55946.925649</TimeCreated>

<Query name="ListeByProjekt">
<Type>%SQLQuery</Type>
<FormalSpec>ProjektOid:%String,MandOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT ID,
		PositionsNr, 
		Artikel, 
		Artikel->ArtikelNr as Artikelnummer, 
		Artikel->Kurztext as ArtikelKurztext, 		
		Artikel->Mengeneinheit as Mengeneinheit,
		DBFakturierung_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, :MandOid, :Lang) AS MengeneinheitText, 
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel, :MandOid, :Lang) AS ArtikeltText,
		Anzahl, 
		Erfassungsdatum,
		Status,
		Artikel->Basispreis as Basispreis
	FROM DBProjekt.Material 
	WHERE Projekt=:ProjektOid
	ORDER BY PositionsNr ASC]]></SqlQuery>
</Query>
</Class>


<Class name="DBProjekt.AF.SD.DetailTypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,33644</TimeChanged>
<TimeCreated>61615,43366.852579</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>SELECT ID, Nummer, DBProjekt_SD.DetailTyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, ViewTyp FROM DBProjekt_SD.DetailTyp WHERE AktMandant = :MandantOid ORDER BY Nummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>SELECT ID, Nummer, DBProjekt_SD.DetailTyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, "" AS wert2 FROM DBProjekt_SD.DetailTyp AS Stammdate WHERE AktMandant = :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, DBProjekt_SD.DetailTyp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, ViewTyp FROM DBProjekt_SD.DetailTyp WHERE AktMandant = :MandantOid AND Nummer = :Nummer ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBProjekt.Buchung">
<Description>
Buchung (Zusammenfassung der einzelnen Teilbuchungen)</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57286.866348</TimeChanged>
<TimeCreated>61711,60347.227278</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

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

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

<Property name="Journalnr">
<Description>
Journalnummer (eindeutig)</Description>
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="JournalnrIndex">
<Properties>Mandant,Journalnr</Properties>
<Unique>1</Unique>
</Index>

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

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

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

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

]]></Content>
</UDLText>

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

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
// -> haben nur informativen Charakter und würden 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[
// wären

]]></Content>
</UDLText>

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

]]></Content>
</UDLText>

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

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

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

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

<Property name="TeilbuchungBuchung">
<Description>
Teilbuchungen</Description>
<Type>DBProjekt.Teilbuchung</Type>
<Cardinality>children</Cardinality>
<Inverse>Buchung</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="IsEinzelbuchung">
<Description>
IsEinzelbuchung</Description>
<Type>%Boolean</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {IsEinzelbuchung}=##class(DBProjekt.Buchung).CheckEinzelbuchung({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="FibuBuchung">
<Description>
Fibu-Buchung</Description>
<Type>DBFibu.Teilbuchung</Type>
<Cardinality>one</Cardinality>
<Inverse>ProjektBuchung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="FibuBuchung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="FibuBuchungIndex">
<Properties>FibuBuchung</Properties>
</Index>

<Property name="AuftragFakturierung">
<Type>DBFakturierung.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Projektbuchung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<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 DBProjekt.Buchung Where Mandant=:MandantOid)
	Quit (newJnr + 1)
]]></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="%OnBeforeSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	If (Insert) {
		Set Mand = ..Mandant
		
		Set Jnr = +..Journalnr
		If ..Journalnr '= ..SetJournalnr(.Jnr, Mand) {
			Set ..Journalnr = +Jnr
		}
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="InsertBeforeNewData">
<Code>	new Jnr
	new Mand
	
	Set Jnr = {Journalnr*N}
	Set Mand = {Mandant*N}
	If {Journalnr*N} '= ##class(Buchung).SetJournalnr(.Jnr, Mand) {
		Set {Journalnr*N} = Jnr
	}</Code>
<Event>INSERT</Event>
</Trigger>

<Method name="GetFirstSollTBuchOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>BuchungOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set tbuchID = ""
	
	&sql(SELECT ID into :tbuchID FROM DBProjekt.Teilbuchung
			WHERE DBProjekt.Teilbuchung.Buchung->ID = :BuchungOid
			AND Soll <> 0)
			
	quit tbuchID
]]></Implementation>
</Method>

<Method name="GetFirstHabenTBuchOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>BuchungOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set tbuchID = ""
	
	&sql(SELECT ID into :tbuchID FROM DBProjekt.Teilbuchung
			WHERE DBProjekt.Teilbuchung.Buchung->ID = :BuchungOid
			AND Soll = 0)
			
	quit tbuchID
]]></Implementation>
</Method>

<Method name="GetBuchungByJnr">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandOid:%String,jnr:%Integer</FormalSpec>
<ReturnType>Buchung</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT ID into :oid FROM DBProjekt.Buchung WHERE Journalnr = :jnr AND Mandant = :mandOid)
	quit ##class(Buchung).%OpenId(oid)
]]></Implementation>
</Method>

<Method name="CheckEinzelbuchung">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set anzahl=0
	&sql(SELECT Count(ID) INTO :anzahl FROM DBProjekt.Teilbuchung WHERE buchung=:oid)
	
	Quit (anzahl <= 2)
]]></Implementation>
</Method>

<Method name="GetJnr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,AnzahlBuchungen:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	Set jnr=0
	
	Set strSQL="SELECT TOP "_AnzahlBuchungen_" Journalnr FROM DBProjekt.Buchung WHERE Mandant="_MandOid_" ORDER BY Journalnr DESC"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	IF ($$$ISOK(sc)) {
		while (rs.Next(.sc)) {
			Set jnr = rs.Data("Journalnr")
		}
    }
		
	Quit jnr
]]></Implementation>
</Method>

<Method name="GetDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,AnzahlBuchungen:%Integer</FormalSpec>
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[
	Set valutadatum=$H
	
	Set strSQL="SELECT TOP "_(AnzahlBuchungen*2)_" Valutadatum FROM DBProjekt.TeilBuchung WHERE Buchung->Mandant="_MandOid_" ORDER BY Valutadatum DESC"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	IF ($$$ISOK(sc)) {
		while (rs.Next(.sc)) {
			Set valutadatum = rs.Data("Valutadatum")
		}
    }
		
	Quit valutadatum
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBProjekt.BuchungD</DataLocation>
<DefaultData>BuchungDefaultData</DefaultData>
<IdLocation>^DBProjekt.BuchungD</IdLocation>
<IndexLocation>^DBProjekt.BuchungI</IndexLocation>
<StreamLocation>^DBProjekt.BuchungS</StreamLocation>
<Data name="BuchungDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Journalnr</Value>
</Value>
<Value name="3">
<Value>Erfassungsdatum</Value>
</Value>
<Value name="4">
<Value>Buchungsart</Value>
</Value>
<Value name="5">
<Value>Buchungsstatus</Value>
</Value>
<Value name="6">
<Value>ErfasserNr</Value>
</Value>
<Value name="7">
<Value>ErfasserBenutzername</Value>
</Value>
<Value name="8">
<Value>ErfasserVorname</Value>
</Value>
<Value name="9">
<Value>ErfasserName</Value>
</Value>
<Value name="10">
<Value>FibuBuchung</Value>
</Value>
<Value name="11">
<Value>Mandant</Value>
</Value>
<Value name="12">
<Value>Buchungstyp</Value>
</Value>
</Data>
<Property name="Buchungsart"/>
<Property name="Buchungsstatus"/>
<Property name="Buchungstyp"/>
<Property name="ErfasserBenutzername"/>
<Property name="ErfasserName"/>
<Property name="ErfasserNr"/>
<Property name="ErfasserVorname"/>
<Property name="Erfassungsdatum"/>
<Property name="FibuBuchung"/>
<Property name="IsEinzelbuchung"/>
<Property name="Journalnr"/>
<Property name="Mandant"/>
</Storage>
</Class>


<Class name="DBProjekt.Material">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57229.328543</TimeChanged>
<TimeCreated>61954,55148.001293</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="Projekt">
<Type>DBIntrap.SD.Projekt</Type>
<Cardinality>one</Cardinality>
<Inverse>Material</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="Anzahl">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBProjekt.MaterialD</DataLocation>
<DefaultData>MaterialDefaultData</DefaultData>
<IdLocation>^DBProjekt.MaterialD</IdLocation>
<IndexLocation>^DBProjekt.MaterialI</IndexLocation>
<StreamLocation>^DBProjekt.MaterialS</StreamLocation>
<Data name="MaterialDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Projekt</Value>
</Value>
<Value name="3">
<Value>Anzahl</Value>
</Value>
<Value name="4">
<Value>Status</Value>
</Value>
<Value name="5">
<Value>PositionsNr</Value>
</Value>
<Value name="6">
<Value>Artikel</Value>
</Value>
<Value name="7">
<Value>Erfassungsdatum</Value>
</Value>
</Data>
<Property name="Anzahl"/>
<Property name="Artikel"/>
<Property name="Erfassungsdatum"/>
<Property name="PositionsNr"/>
<Property name="Projekt"/>
<Property name="Status"/>
</Storage>
</Class>


<Project name="DBProjekt">
  <Items>
    <ProjectItem name="DBProjekt.AF.BuchungAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBProjekt.AF.MaterialAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBProjekt.AF.SD.DetailTypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBProjekt.Buchung" type="CLS"></ProjectItem>
    <ProjectItem name="DBProjekt.Material" type="CLS"></ProjectItem>
    <ProjectItem name="DBProjekt.SD.DetailTyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBProjekt.Teilbuchung" type="CLS"></ProjectItem>
  </Items>
</Project>


<Class name="DBProjekt.SD.DetailTyp">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57286.995236</TimeChanged>
<TimeCreated>61615,42684.237016</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>%String</Type>
<Parameter name="MAXLEN" value="5"/>
<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="ViewTyp">
<Type>%Library.Integer</Type>
</Property>

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

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

<Index name="AktMandantIdx">
<Properties>AktMandant</Properties>
</Index>

<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(DBProjekt.SD.DetailTyp).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBProjekt_SD.DetailTyp)
	Quit +nr +1
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBProjekt.SD.DetailTypD</DataLocation>
<DefaultData>DetailTypDefaultData</DefaultData>
<IdLocation>^DBProjekt.SD.DetailTypD</IdLocation>
<IndexLocation>^DBProjekt.SD.DetailTypI</IndexLocation>
<StreamLocation>^DBProjekt.SD.DetailTypS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="DetailTypDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>ViewTyp</Value>
</Value>
<Value name="4">
<Value>AktMandant</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBProjekt.Teilbuchung">
<Description>
Teilbuchung (Soll oder Haben) einer Buchung</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57332.245414</TimeChanged>
<TimeCreated>61711,60517.350494</TimeCreated>
<Inheritance>right</Inheritance>

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

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

<Index name="ValutadatumIndex">
<Properties>Valutadatum</Properties>
</Index>

<Property name="Soll">
<Description>
Soll-Haben-Code (True = Soll)</Description>
<Type>%Boolean</Type>
</Property>

<Index name="SollIndex">
<Properties>Soll</Properties>
</Index>

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

<Property name="Buchungstext2">
<Description>
Buchungstext 2</Description>
<Type>%Library.String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

<Index name="KostenstelleIndex">
<Properties>Kostenstelle</Properties>
</Index>

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

<Property name="Buchung">
<Description>
Buchung</Description>
<Type>DBProjekt.Buchung</Type>
<Cardinality>parent</Cardinality>
<Inverse>TeilbuchungBuchung</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Kopfbuchung">
<Description>
Wichtig fuer Sammelbuchung um Kopfbuchung neu zu berechnen</Description>
<Type>%Boolean</Type>
</Property>

<Property name="BetragSH">
<Description>
Betrag berechnet nach SollHaben-Code anhand des Hauptkontos</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragSH}=##class(DBProjekt.Teilbuchung).GetBetragBySHCodes({Soll},{Buchungsbetrag}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Method name="GetBetragBySHCodes">
<Description>
Liefert den Betrag zurueck um auf ein Konto zu kumulieren</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>buchungSoll:%Boolean,betrag:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	if 'buchungSoll {
		quit ((-1)*betrag)
	} else {
		quit betrag
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TeilbuchungBuchung")</DataLocation>
<DefaultData>TeilbuchungDefaultData</DefaultData>
<IdLocation>^DBProjekt.BuchungC("TeilbuchungBuchung")</IdLocation>
<IndexLocation>^DBProjekt.TeilbuchungI</IndexLocation>
<StreamLocation>^DBProjekt.TeilbuchungS</StreamLocation>
<Data name="TeilbuchungDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>BelegNr</Value>
</Value>
<Value name="3">
<Value>Valutadatum</Value>
</Value>
<Value name="4">
<Value>Soll</Value>
</Value>
<Value name="5">
<Value>Buchungstext1</Value>
</Value>
<Value name="6">
<Value>Buchungstext2</Value>
</Value>
<Value name="7">
<Value>Buchungsbetrag</Value>
</Value>
<Value name="8">
<Value>Buchungsmenge</Value>
</Value>
<Value name="9">
<Value>Mengeneinheit</Value>
</Value>
<Value name="10">
<Value>Kostenstelle</Value>
</Value>
<Value name="11">
<Value>Gegenkonto</Value>
</Value>
<Value name="12">
<Value>Kopfbuchung</Value>
</Value>
<Value name="13">
<Value>Belegdatum</Value>
</Value>
</Data>
<Property name="BelegNr"/>
<Property name="BetragSH"/>
<Property name="Buchung"/>
<Property name="Buchungsbetrag"/>
<Property name="Buchungstext1"/>
<Property name="Buchungstext2"/>
<Property name="Gegenkonto"/>
<Property name="Kopfbuchung"/>
<Property name="Kostenstelle"/>
<Property name="Soll"/>
<Property name="Valutadatum"/>
<Property name="childsub"/>
</Storage>
</Class>
</Export>
