<?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-14 17:36:41">
<Class name="DBFakturierung.AF.AbzuegeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32727.635565</TimeCreated>

<Query name="ListeByAbzugstyp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Abzugstyp:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PosNummer, Abzugscode, Bezugsart, ArtikelNr,
		   DBFakturierung_SD.Hilfstexte_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS Abzugstyp
	       FROM DBFakturierung.Abzuege WHERE Abzugstyp = :Abzugstyp ORDER BY PosNummer</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Datum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT abz.Abzugstyp->PositionsNr AS "Abzugstyp.PositionsNr", 
  			DBFakturierung_SD.Hilfstexte_GetTextClass(abz.Abzugstyp->%ID, :MandantOid, :Lang) AS "Abzugstyp.Text",
  			abz.Abzugscode,
    		abz.Bezugsart,
  			abz.PosNummer,
  			abz.ID,
  			abz.ArtikelNr AS "Artikel.Nummer",
    		DBFakturierung.Artikel_GetArtikeltextClass(art.ID, :MandantOid, :Lang) AS "Artikel.Text",
    		preis.AbDatum AS "Artikel.PreisAbDatum.AbDatum",
    		preis.Preis AS "Artikel.PreisAbDatum.Preis"
    		
	FROM DBFakturierung.Abzuege AS "abz" 
		INNER JOIN DBFakturierung.Artikel AS "art" ON abz.ArtikelNr = art.ArtikelNr 
		INNER JOIN DBFakturierung.ArtPreisDatum "preis" ON preis.Artikel = art.ID
		
	WHERE preis.AbDatum >= DBFakturierung.ArtPreisDatum_GetDatum(art.ID, :Datum)
	ORDER BY abz.Abzugstyp->PositionsNr, 
			abz.PosNummer, 
			preis.AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.ArtPreisDatumAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32742.10602</TimeCreated>

<Query name="ListeByArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>Artikel:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Preis, AbDatum
	       FROM DBFakturierung.ArtPreisDatum WHERE Artikel = :Artikel Order by AbDatum</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.ArtZusatztextAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61573,57641.505298</TimeCreated>

<Query name="ListeNachArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtikelOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, LaufNr, Artikel, 
	DBFakturierung.ArtikelZuText_GetZusatztextClass(%ID, :MandantOid, :Lang) As Zusatztext
	FROM DBFakturierung.ArtikelZuText 
	WHERE Artikel->ID = :ArtikelOid
	ORDER BY LaufNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.ArtikelAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61572,59384.755959</TimeCreated>

<Query name="ListeNachArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelNr, Kurztext, Artikelcode, ArtikelAktiv, LagerAktiv, 
	       Preisliste, Vertreterumsatz, 
	       DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2, 
	       Preiseinheit, LagerLagerbestand AS Lagerbestand, LagerReservation AS Reservation, LagerMinBestand AS Mindestbestand,
	       LetzterEKP, DurchschnittlicherEKP, LagerBestVorschlag AS Bestellvorschlag,
	       LagerBestMenge AS OptimaleBestellmenge, Lieferant1ArtNr, Lieferant2ArtNr,
	       Lieferant3ArtNr, Lieferant1LetzterEKP, Lieferant2LetzterEKP,
	       Lieferant3LetzterEKP, Bemerkung, DatumLetzteBewegung,
	       InventarBewertungspreis,
	       InventarBestand, InventarLagerberichtigung, Aktion, AktionVonDatum,
	       AktionBisDatum, Aktionspreis, MargeProzent, LagerOffeneBest AS OffeneBestellungen,
	       Basispreis, LagerVerfuegbar As VerfuegbarCalc, Artikelgruppe,
	       FibuKontoVK, FibuKontoEK, MwstEK, MwstVK, Mandant, Lieferant1, Lieferant2,
	       Lieferant3, Mengeneinheit
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe = :ArtGrpOid ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="ListeNachArtGrpNurAkt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelNr, Kurztext, Artikelcode, ArtikelAktiv, LagerAktiv, 
	       Preisliste, Vertreterumsatz, 
	       DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2, 
	       Preiseinheit, LagerLagerbestand AS Lagerbestand, LagerReservation AS Reservation, LagerMinBestand AS Mindestbestand,
	       LetzterEKP, DurchschnittlicherEKP, LagerBestVorschlag AS Bestellvorschlag,
	       LagerBestMenge AS OptimaleBestellmenge, Lieferant1ArtNr, Lieferant2ArtNr,
	       Lieferant3ArtNr, Lieferant1LetzterEKP, Lieferant2LetzterEKP,
	       Lieferant3LetzterEKP, Bemerkung, DatumLetzteBewegung,
	       InventarBewertungspreis,
	       InventarBestand, InventarLagerberichtigung, Aktion, AktionVonDatum,
	       AktionBisDatum, Aktionspreis, MargeProzent, LagerOffeneBest AS OffeneBestellungen,
	       Basispreis, LagerVerfuegbar As VerfuegbarCalc, Artikelgruppe,
	       FibuKontoVK, FibuKontoEK, MwstEK, MwstVK, Mandant, Lieferant1, Lieferant2,
	       Lieferant3, Mengeneinheit
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe = :ArtGrpOid AND ArtikelAktiv = 1 ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="GetEntryByArtikelNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtikelNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelNr,  DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel 
	WHERE Mandant = :MandantOid
	AND lower(ArtikelNr) LIKE lower(:ArtikelNr) ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="GetEntryByArtikelText">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtikelText:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelNr,  DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel 
	WHERE Mandant = :MandantOid
	AND lower(DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang)) LIKE lower(:ArtikelText) ORDER BY Artikeltext</SqlQuery>
</Query>

<Query name="GetEntryByKurztext">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Kurztext:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelNr,  DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel 
	WHERE Mandant = :MandantOid
	AND lower(Kurztext) LIKE lower(:Kurztext) ORDER BY Kurztext</SqlQuery>
</Query>

<Query name="ListeNachKurztext">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Kurztext:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, ArtikelNr, Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr, 
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	Kurztext, DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid 
	AND { fn LCASE(Kurztext)} LIKE { fn LCASE(:Kurztext)} ORDER BY Kurztext]]></SqlQuery>
</Query>

<Query name="ListeNachArtikeltext">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Text:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, ArtikelNr, Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr, 
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	Kurztext, DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid 
	AND { fn LCASE(DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang))} LIKE { fn LCASE(:Text)} ORDER BY Artikeltext]]></SqlQuery>
</Query>

<Query name="ListeNachArtikeltext2">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Text:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, ArtikelNr, Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr, 
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	Kurztext, DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid 
	AND { fn LCASE(DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang))} LIKE { fn LCASE(:Text)} ORDER BY Artikeltext2]]></SqlQuery>
</Query>

<Query name="ListeNachArtNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, ArtikelNr, Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr, 
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	Kurztext, DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid 
	AND { fn LCASE(ArtikelNr)} LIKE { fn LCASE(:ArtNr)} ORDER BY Artikeltext]]></SqlQuery>
</Query>

<Query name="ListeIDsNachArtGrpBereich">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpNrVon:%Integer,ArtGrpNrBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, ArtikelNr, Mandant
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis ORDER BY ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListArtGrpBaumSortArtNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String,NurAkt:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelNr, Kurztext, DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe = :ArtGrpOid 
	AND ((:NurAkt = 0) OR (ArtikelAktiv = :NurAkt))
	ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="ListArtGrpBaumSortKurz">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String,NurAkt:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelNr, Kurztext, DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe = :ArtGrpOid 
	AND ((:NurAkt = 0) OR (ArtikelAktiv = :NurAkt))
	ORDER BY Kurztext</SqlQuery>
</Query>

<Query name="ListeExport">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,	ArtikelAktiv, ArtikelNr, Artikelcode, 
			Artikelgruppe->ArtikelgruppenNr as Artikelgruppe, 
			Basispreis, Bemerkung, DezStellenMenge, DezStellenPreis, 
			DurchschnittlicherEKP, 
			FibuKontoEK->KontoNr as FibuKontoEK, FibuKontoVK->KontoNr as FibuKontoVK, 
			Kurztext, 
			LagerAktiv, LagerBestMenge, LagerBestVorschlag, LagerLagerbestand, 
			LagerMinBestand, LagerOffeneBest, LagerReservation, LagerVerfuegbar, 
			LetzterEKP, Lieferant1->Adressnummer as Lieferant1, 
			Mandant, Lieferant1, MargeProzent, 
			Mengeneinheit, 
			MwstEK->MwstCode as MwstEK, MwstVK->MwstCode as MwstVK, 
			Preiseinheit, Preisliste, Vertreterumsatz, 
			
	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, 'de') As ArtikeltextDE,		
	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, 'fr') As ArtikeltextFR,		
	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, 'en') As ArtikeltextEN,		
	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, 'it') As ArtikeltextIT,		
	
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, 'de') As Artikeltext2DE,		
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, 'fr') As Artikeltext2FR,		
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, 'en') As Artikeltext2EN,		
	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, 'it') As Artikeltext2IT,		
			
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 1) AS Mengenstaffel1,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 2) AS Mengenstaffel2,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 3) AS Mengenstaffel3,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 4) AS Mengenstaffel4,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 5) AS Mengenstaffel5,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 6) AS Mengenstaffel6,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 7) AS Mengenstaffel7,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 8) AS Mengenstaffel8,
	DBFakturierung.Artikel_GetMengenstaffelClass(%ID, 9) AS Mengenstaffel9,
	
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 1) AS Preisstaffel1,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 2) AS Preisstaffel2,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 3) AS Preisstaffel3,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 4) AS Preisstaffel4,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 5) AS Preisstaffel5,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 6) AS Preisstaffel6,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 7) AS Preisstaffel7,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 8) AS Preisstaffel8,
	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 9) AS Preisstaffel9
	
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid ORDER BY ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			ArtikelNr, 
			Kurztext, 
			Artikelcode, 
			ArtikelAktiv, 
			LagerAktiv, 
	       	Preisliste, 
	       	Vertreterumsatz, 
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2, 
	       	Preiseinheit, 
	       	LagerLagerbestand AS Lagerbestand, 
	       	LagerReservation AS Reservation, 
	       	LagerMinBestand AS Mindestbestand,
	       	LetzterEKP, 
	       	DurchschnittlicherEKP, 
	       	LagerBestVorschlag AS Bestellvorschlag,
	       	LagerBestMenge AS OptimaleBestellmenge, 
	       	Lieferant1ArtNr, 
	       	Lieferant2ArtNr,
	       	Lieferant3ArtNr, 
	       	Lieferant1LetzterEKP, 
	       	Lieferant2LetzterEKP,
	       	Lieferant3LetzterEKP, 
	       	Bemerkung, 
	       	DatumLetzteBewegung,
	       	InventarBewertungspreis,
	       	InventarBestand, 
	       	InventarLagerberichtigung, 
	       	Aktion, 
	       	AktionVonDatum,
	       	AktionBisDatum, 
	       	Aktionspreis, 
	       	MargeProzent, 
	       	Einzelgewicht,
	       	Herkunftsart, 
	       	LagerOffeneBest AS OffeneBestellungen, 
	       	Basispreis,
	       	LagerVerfuegbar As VerfuegbarCalc, 
	       	Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text",
	       	FibuKontoVK->KontoNr As "FibuKontoVK.KontoNr", 
	       	FibuKontoEK->KontoNr As "FibuKontoEK.KontoNr", 
	       	MwstEK->MwstCode As "MwstEK.MwstCode", 
	       	MwstVK->MwstCode As "MwstVK.MwstCode",
	       	Herkunft->PositionsNr As "Herkunft.Nr",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	Mandant, 
	       	Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant2->Adressnummer As "Lieferant2.AdressNr", 
			Lieferant2->Name As "Lieferant2.Name",
			Lieferant3->Adressnummer As "Lieferant3.AdressNr", 
			Lieferant3->Name As "Lieferant3.Name",
	       	Mengeneinheit->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit.Text"
	       	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeDruckVonBisArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtikelNrVon:%String,ArtikelNrBis:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			ArtikelNr, 
			Kurztext, 
			Artikelcode, 
			ArtikelAktiv, 
			LagerAktiv, 
	       	Preisliste, 
	       	Vertreterumsatz, 
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2, 
	       	Preiseinheit, 
	       	LagerLagerbestand AS Lagerbestand, 
	       	LagerReservation AS Reservation, 
	       	LagerMinBestand AS Mindestbestand,
	       	LetzterEKP, 
	       	DurchschnittlicherEKP, 
	       	LagerBestVorschlag AS Bestellvorschlag,
	       	LagerBestMenge AS OptimaleBestellmenge, 
	       	Lieferant1ArtNr, 
	       	Lieferant2ArtNr,
	       	Lieferant3ArtNr, 
	       	Lieferant1LetzterEKP, 
	       	Lieferant2LetzterEKP,
	       	Lieferant3LetzterEKP, 
	       	Bemerkung, 
	       	DatumLetzteBewegung,
	       	InventarBewertungspreis,
	       	InventarBestand, 
	       	InventarLagerberichtigung, 
	       	Aktion, 
	       	AktionVonDatum,
	       	AktionBisDatum, 
	       	Aktionspreis, 
	       	MargeProzent, 
	       	Einzelgewicht,
	       	Herkunftsart, 
	       	LagerOffeneBest AS OffeneBestellungen, 
	       	Basispreis,
	       	LagerVerfuegbar As VerfuegbarCalc, 
	       	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 1) AS Preisstaffel1,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 2) AS Preisstaffel2,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 3) AS Preisstaffel3,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 4) AS Preisstaffel4,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 5) AS Preisstaffel5,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 6) AS Preisstaffel6,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 7) AS Preisstaffel7,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 8) AS Preisstaffel8,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 9) AS Preisstaffel9,
	       	Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text",
	       	FibuKontoVK->KontoNr As "FibuKontoVK.KontoNr", 
	       	FibuKontoEK->KontoNr As "FibuKontoEK.KontoNr", 
	       	MwstEK->MwstCode As "MwstEK.MwstCode", 
	       	MwstVK->MwstCode As "MwstVK.MwstCode",
	       	Herkunft->PositionsNr As "Herkunft.Nr",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	Mandant, 
	       	Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant2->Adressnummer As "Lieferant2.AdressNr", 
			Lieferant2->Name As "Lieferant2.Name",
			Lieferant3->Adressnummer As "Lieferant3.AdressNr", 
			Lieferant3->Name As "Lieferant3.Name",
	       	Mengeneinheit->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit.Text"
	       	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid And ArtikelNr <= :ArtikelNrBis And ArtikelNr >= :ArtikelNrVon
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeDruckVonBisArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			ArtikelNr, 
			Kurztext, 
			Artikelcode, 
			ArtikelAktiv, 
			LagerAktiv, 
	       	Preisliste, 
	       	Vertreterumsatz, 
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	DBFakturierung.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2, 
	       	Preiseinheit, 
	       	LagerLagerbestand AS Lagerbestand, 
	       	LagerReservation AS Reservation, 
	       	LagerMinBestand AS Mindestbestand,
	       	LetzterEKP, 
	       	DurchschnittlicherEKP, 
	       	LagerBestVorschlag AS Bestellvorschlag,
	       	LagerBestMenge AS OptimaleBestellmenge, 
	       	Lieferant1ArtNr, 
	       	Lieferant2ArtNr,
	       	Lieferant3ArtNr, 
	       	Lieferant1LetzterEKP, 
	       	Lieferant2LetzterEKP,
	       	Lieferant3LetzterEKP, 
	       	Bemerkung, 
	       	DatumLetzteBewegung,
	       	InventarBewertungspreis,
	       	InventarBestand, 
	       	InventarLagerberichtigung, 
	       	Aktion, 
	       	AktionVonDatum,
	       	AktionBisDatum, 
	       	Aktionspreis, 
	       	MargeProzent, 
	       	Einzelgewicht,
	       	Herkunftsart,
	       	DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 1) AS Preisstaffel1,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 2) AS Preisstaffel2,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 3) AS Preisstaffel3,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 4) AS Preisstaffel4,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 5) AS Preisstaffel5,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 6) AS Preisstaffel6,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 7) AS Preisstaffel7,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 8) AS Preisstaffel8,
			DBFakturierung.Artikel_GetPreisstaffelClass(%ID, 9) AS Preisstaffel9, 
	       	LagerOffeneBest AS OffeneBestellungen, 
	       	Basispreis,
	       	LagerVerfuegbar As VerfuegbarCalc, 
	       	Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text",
	       	FibuKontoVK->KontoNr As "FibuKontoVK.KontoNr", 
	       	FibuKontoEK->KontoNr As "FibuKontoEK.KontoNr", 
	       	MwstEK->MwstCode As "MwstEK.MwstCode", 
	       	MwstVK->MwstCode As "MwstVK.MwstCode",
	       	Herkunft->PositionsNr As "Herkunft.Nr",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	Mandant, 
	       	Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant2->Adressnummer As "Lieferant2.AdressNr", 
			Lieferant2->Name As "Lieferant2.Name",
			Lieferant3->Adressnummer As "Lieferant3.AdressNr", 
			Lieferant3->Name As "Lieferant3.Name", 
	       	Mengeneinheit->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit.Text"
	       	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid And Artikelgruppe->ArtikelgruppenNr <= :ArtGrpBis And Artikelgruppe->ArtikelgruppenNr >= :ArtGrpVon
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeEAN">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, EANCode1, EtikettenTyp
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid</SqlQuery>
</Query>

<Query name="ListeMinbestandArtikelLieferant">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonLieferant:%String,BisLieferant:%String,VonArt:%String,BisArt:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			DezFormatMenge,
			ArtikelNr,
			LagerMinBestand As MindBestand,
			LagerLagerbestand As Lagerbestand,
			LagerBestMenge As OptBestMenge,
			LagerBestVorschlag As BestVorschlag,
			LagerReservation As Reservationen,
			LagerOffeneBest As OffeneBestellungen,
			LagerVerfuegbar As Verfuegbar,
			DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant1->Plz As "Lieferant1.Plz",
			Lieferant1->Ort As "Lieferant1.Ort",
			Lieferant1->Telefon1 As "Lieferant1.Telefon1",
			Lieferant1->Fax As "Lieferant1.Fax",
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit",
			ArtikelImmerAufBestelliste As ImmerAufBestelliste,
			Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text"
	FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (Lieferant1->Adressnummer >= :VonLieferant and Lieferant1->Adressnummer <= :BisLieferant)
			and (ArtikelNr >= :VonArt and ArtikelNr <= :BisArt)
	ORDER BY Lieferant1->Adressnummer, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeMinbestandArtikelArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonLieferant:%String,BisLieferant:%String,VonArt:%String,BisArt:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			DezFormatMenge,
			ArtikelNr,
			LagerMinBestand As MindBestand,
			LagerLagerbestand As Lagerbestand,
			LagerBestMenge As OptBestMenge,
			LagerBestVorschlag As BestVorschlag,
			LagerReservation As Reservationen,
			LagerOffeneBest As OffeneBestellungen,
			LagerVerfuegbar As Verfuegbar,
			DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant1->Plz As "Lieferant1.Plz",
			Lieferant1->Ort As "Lieferant1.Ort",
			Lieferant1->Telefon1 As "Lieferant1.Telefon1",
			Lieferant1->Fax As "Lieferant1.Fax",
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit",
			ArtikelImmerAufBestelliste As ImmerAufBestelliste,
			Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text"
	FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (Lieferant1->Adressnummer >= :VonLieferant and Lieferant1->Adressnummer <= :BisLieferant)
			and (ArtikelNr >= :VonArt and ArtikelNr <= :BisArt)
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeMinbestandArtGrpLieferant">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonLieferant:%String,BisLieferant:%String,VonArtGrp:%Integer,BisArtGrp:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			DezFormatMenge,
			ArtikelNr,
			LagerMinBestand As MindBestand,
			LagerLagerbestand As Lagerbestand,
			LagerBestMenge As OptBestMenge,
			LagerBestVorschlag As BestVorschlag,
			LagerReservation As Reservationen,
			LagerOffeneBest As OffeneBestellungen,
			LagerVerfuegbar As Verfuegbar,
			DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant1->Plz As "Lieferant1.Plz",
			Lieferant1->Ort As "Lieferant1.Ort",
			Lieferant1->Telefon1 As "Lieferant1.Telefon1",
			Lieferant1->Fax As "Lieferant1.Fax",
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit",
			ArtikelImmerAufBestelliste As ImmerAufBestelliste,
			Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text"
	FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (Lieferant1->Adressnummer >= :VonLieferant and Lieferant1->Adressnummer <= :BisLieferant)
			and (Artikelgruppe->ArtikelgruppenNr >= :VonArtGrp and Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp)
	ORDER BY Lieferant1->Adressnummer, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeMinbestandArtGrpArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonLieferant:%String,BisLieferant:%String,VonArtGrp:%Integer,BisArtGrp:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			DezFormatMenge,
			ArtikelNr,
			LagerMinBestand As MindBestand,
			LagerLagerbestand As Lagerbestand,
			LagerBestMenge As OptBestMenge,
			LagerBestVorschlag As BestVorschlag,
			LagerReservation As Reservationen,
			LagerOffeneBest As OffeneBestellungen,
			LagerVerfuegbar As Verfuegbar,
			DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			Lieferant1->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant1->Name As "Lieferant1.Name",
			Lieferant1->Plz As "Lieferant1.Plz",
			Lieferant1->Ort As "Lieferant1.Ort",
			Lieferant1->Telefon1 As "Lieferant1.Telefon1",
			Lieferant1->Fax As "Lieferant1.Fax",
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit",
			ArtikelImmerAufBestelliste As ImmerAufBestelliste,
			Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text"
	FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (Lieferant1->Adressnummer >= :VonLieferant and Lieferant1->Adressnummer <= :BisLieferant)
			and (Artikelgruppe->ArtikelgruppenNr >= :VonArtGrp and Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp)
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeInventarArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonArt:%String,BisArt:%String,NurMitBestand:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			ArtikelNr,
			LagerLagerbestand As Menge,
			LetzterEKP AS Preis,
			(LagerLagerbestand * LetzterEKP) AS Betrag,
			Artikelgruppe->ArtikelgruppenNr As "Artikel.ArtikelGrpNr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikel.ArtikelGrpText",
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit"
			FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (ArtikelNr >= :VonArt and ArtikelNr <= :BisArt)
			and (:NurMitBestand = 0 OR LagerLagerbestand > 0)
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeInventarArtikelGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonArtGrp:%Integer,BisArtGrp:%Integer,NurMitBestand:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			ArtikelNr,
			LagerLagerbestand As Menge,
			LetzterEKP AS Preis,
			(LagerLagerbestand * LetzterEKP) AS Betrag,
			Artikelgruppe->ArtikelgruppenNr As "Artikel.ArtikelGrpNr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikel.ArtikelGrpText",
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit"
			FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (Artikelgruppe->ArtikelgruppenNr >= :VonArtGrp and Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp)
			and (:NurMitBestand = 0 OR LagerLagerbestand > 0)
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeInventarAufnahmeArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonArt:%Integer,BisArt:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			ArtikelNr,
			LagerLagerbestand As Menge,
			LetzterEKP AS Preis,EANCode1,EANCode2,
			Artikelgruppe->ArtikelgruppenNr As "Artikel.ArtikelGrpNr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikel.ArtikelGrpText",
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit"
			FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (ArtikelNr >= :VonArt and ArtikelNr <= :BisArt)
			and LagerAktiv = 1
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeInventarAufnahmeArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonArtGrp:%Integer,BisArtGrp:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	ID,
			ArtikelNr,
			LagerLagerbestand As Menge,
			LetzterEKP AS Preis,EANCode1,EANCode2,
			Artikelgruppe->ArtikelgruppenNr As "Artikel.ArtikelGrpNr",
			DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikel.ArtikelGrpText",
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
			DBFakturierung_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit"
			FROM DBFakturierung.Artikel
	WHERE 	Mandant =  :MandantOid
			and (Artikelgruppe->ArtikelgruppenNr >= :VonArtGrp and Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp)
			and LagerAktiv = 1
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeGrid">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			ArtikelNr, 
			Kurztext, 
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	(ArtikelNr || ' - ' || DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang)) As DisplayText
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeArtikelErfassung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			ArtikelNr, 
			Kurztext, 
	       	DBFakturierung.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	Basispreis
	FROM DBFakturierung.Artikel
	WHERE Mandant = :MandantOid
	AND NVL(Preisliste,0) = 1
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.AuftragsKopfAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62437,63419.083366</TimeChanged>
<TimeCreated>61695,32758.474298</TimeCreated>

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

<Query name="ListeAuftraegeByMandantLaufend">
<Description>
Query GetAdrAuftraegeLaufend(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Status:%Integer,Mutierte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Verbucht
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid
			AND ((:Status = -1) 
				OR (NVL(Auftragsstatus,0) = :Status) 
				OR (:Status = DBFakturierung.Konst_AuftragsstatusRechnung() AND Auftragsstatus > :Status))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusOfferte()) 
				OR (BearbeitungsstatusOF = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusOF = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusAuftragsBest()) 
				OR (BearbeitungsstatusAU = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusAU = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusRuestzettel()) 
				OR (BearbeitungsstatusRZ = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusRZ = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusLieferschein()) 
				OR (BearbeitungsstatusLS = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusLS = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusRechnung()) 
				OR (BearbeitungsstatusRG = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusRG = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1))
				OR (BearbeitungsstatusBZ = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusBZ = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND NVL(Verbucht,0) = 0 
			ORDER BY Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByMandant">
<Description>
Query GetAdrAuftraege(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Verbucht
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid
			ORDER BY Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

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

<Query name="ListeAuftraegeByDebitorLaufend">
<Description>
Query GetAuftraegeLaufend(MandantOid As %String, DebitorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,DebitorOid:%String,Status:%Integer,Mutierte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse = :DebitorOid
			AND ((:Status = -1) 
				OR (NVL(Auftragsstatus,0) = :Status) 
				OR (:Status = DBFakturierung.Konst_AuftragsstatusRechnung() AND Auftragsstatus > :Status))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusOfferte()) 
				OR (BearbeitungsstatusOF = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusOF = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusAuftragsBest()) 
				OR (BearbeitungsstatusAU = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusAU = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusRuestzettel()) 
				OR (BearbeitungsstatusRZ = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusRZ = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusLieferschein()) 
				OR (BearbeitungsstatusLS = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusLS = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND ((:Status <> DBFakturierung.Konst_AuftragsstatusRechnung()) 
				OR (BearbeitungsstatusRG = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusRG = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1))
				OR (BearbeitungsstatusBZ = DBFakturierung.Konst_BearbeitungsstatusGedruckt()) 
				OR ((BearbeitungsstatusBZ = DBFakturierung.Konst_BearbeitungsstatusMutiert()) AND (:Mutierte = 1)))
			AND NVL(Verbucht,0) = 0 
			ORDER BY Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByDebitor">
<Description>
Query GetAuftraege(MandantOid As %String, DebitorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,DebitorOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse = :DebitorOid
			ORDER BY  NVL(Verbucht,0), Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByAdressNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AdressNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			ORDER BY Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByKurzname">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Kurzname LIKE :Kurzname
			ORDER BY Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeMwstByCodes">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,Lang:%String,IsOrtho:%Boolean,Selbstbehalt:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, Auftragskopf->Mandant, :Lang, Auftragskopf->Lieferdatum)  AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst->ID, Auftragskopf->Mandant, :Lang, Auftragskopf->Lieferdatum)  AS MwstBezFakt,			
			MwstSatz, 
			SUM(CASE WHEN (:IsOrtho=1 AND :Selbstbehalt=1 AND (Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())) THEN
					(-1) * Nettobetrag2MwstbetragEW
				ELSE 
					Nettobetrag2MwstbetragEW
				END) AS MwstBetrag, 
			SUM(CASE WHEN (:IsOrtho=1 AND :Selbstbehalt=1 AND (Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())) THEN
					(-1) * Nettobetrag2ExklMwstEW
				ELSE 
					Nettobetrag2ExklMwstEW
				END) AS MwstBetragExkl,
			SUM(CASE WHEN (:IsOrtho=1 AND :Selbstbehalt=1 AND (Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())) THEN
					(-1) * Nettobetrag2MwstbetragFW
				ELSE 
					Nettobetrag2MwstbetragFW
				END) AS MwstBetragFW, 
			SUM(CASE WHEN (:IsOrtho=1 AND :Selbstbehalt=1 AND (Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())) THEN
					(-1) * Nettobetrag2ExklMwstFW
				ELSE 
					Nettobetrag2ExklMwstFW
				END) AS MwstBetragExklFW, 
			Mwst->SteuerungInklExkl AS SteuerungInklExkl
	FROM DBFakturierung.Auftragspos
	WHERE Auftragskopf = :AuftragOid AND Mwst IS NOT NULL  AND
	    	(:IsOrtho=0 OR 
	    		(:IsOrtho=1 AND 
	    			((:Selbstbehalt=0) OR
	    			 (:Selbstbehalt=1 AND (Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())))
	    		)
	    	)

	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeMwstByCodesMaske">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,Lang:%String,IsOrtho:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, Auftragskopf->Mandant, :Lang, Auftragskopf->Lieferdatum)  AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst->ID, Auftragskopf->Mandant, :Lang, Auftragskopf->Lieferdatum)  AS MwstBezFakt,			
			MwstSatz, 
			SUM(Nettobetrag2MwstbetragEW) AS MwstBetrag, 
			SUM(Nettobetrag2ExklMwstEW) AS MwstBetragExkl,
			SUM(Nettobetrag2MwstbetragFW) AS MwstBetragFW, 
			SUM(Nettobetrag2ExklMwstFW) AS MwstBetragExklFW, 
			Mwst->SteuerungInklExkl AS SteuerungInklExkl
	FROM DBFakturierung.Auftragspos
	WHERE Auftragskopf = :AuftragOid AND Mwst IS NOT NULL  AND
	    	(:IsOrtho=0 OR 
	    		(:IsOrtho=1 AND Artikelcode<>DBFakturierung.Konst_AcOrthoSelbstbehalt() AND Artikelcode<>DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())
	    	)

	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeMwstByCodesVerbuchung">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, Auftragskopf->Mandant, :Lang, Auftragskopf->Lieferdatum) AS MwstBez,
			MwstSatz, 
			SUM(Nettobetrag2MwstbetragEW) AS MwstBetrag, 
			SUM(Nettobetrag2ExklMwstEW) AS MwstBetragExkl,
			SUM(Nettobetrag2MwstbetragFW) AS MwstBetragFW, 
			SUM(Nettobetrag2ExklMwstFW) AS MwstBetragExklFW
	FROM DBFakturierung.Auftragspos
	WHERE Auftragskopf->RechnungsNr = :RgNr AND
			Auftragskopf->StatusAutoVerarbeitung < 4 AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
			Auftragskopf->Mandant = :MandantOid AND
			Nettobetrag2MwstbetragEW <> 0 AND
			Mwst IS NOT NULL AND 
			Artikelcode<>DBFakturierung.Konst_AcOrthoSelbstbehalt() AND 
			Artikelcode<>DBFakturierung.Konst_AcOrthoSelbstbehaltProzent()
	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeAuftrag">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragsOid:%String,firstVorname:%Boolean,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT
                   ID,
                   Adresse->Adresse                                                                        AS "LAdresse.ID",
                   Adresse->Adresse->AdressNrAlt                    AS "LAdresse.AdressNrAlt", 
                   Adresse->Adresse->Adressnummer                    AS "LAdresse.Adressnummer", 
                   Adresse->Adresse->AdressNrAlt       AS "LAdresse.AdressnummerAlt",
                   Anrede                                               AS "LAdresse.Anrede", 
                   Name                                   AS "LAdresse.Name", 
                   Adresszeile1      AS "LAdresse.Adresszeile1", 
                   Adresszeile2      AS "LAdresse.Adresszeile2", 
                   Adresszeile3      AS "LAdresse.Adresszeile3", 
                   Plz                                                         AS "LAdresse.Plz", 
                   PlzZusatz                            AS "LAdresse.PlzZusatz", 
                   Ort                                        AS "LAdresse.Ort", 
                   Adresse->Adresse->Telefon1				  AS "LAdresse.Telefon1",
                   Adresse->Adresse->Telefon2				  AS "LAdresse.Telefon2",
                   Adresse->Adresse->Fax				  AS "LAdresse.Fax",
                   Adresse->Adresse->Mobil				  AS "LAdresse.Mobil",
                   ZusatzAdresse->Adresse                                                                           AS "ZAdresse.ID", 
                   ZusatzAdresse->Adresse->Adressnummer       AS "ZAdresse.Adressnummer", 
                   ZusatzAdresse->Adresse->Anrede                                       AS "ZAdresse.Anrede", 
                   DBAdressen.Adresse_GetName(ZusatzAdresse->Adresse->Adresscode, ZusatzAdresse->Adresse->Name, ZusatzAdresse->Adresse->VornameZusatz1, :firstVorname) AS "ZAdresse.Name", 
                   DBAdressen.Adresse_GetZusatz1(ZusatzAdresse->Adresse->Adresscode, ZusatzAdresse->Adresse->VornameZusatz1) AS "ZAdresse.Adresszeile1", 
                   ZusatzAdresse->Adresse->Zusatz2                        AS "ZAdresse.Adresszeile2", 
                   ZusatzAdresse->Adresse->Strasse || ' ' || NVL(ZusatzAdresse->Adresse->Hausnummer,'') AS "ZAdresse.Adresszeile3", 
                   ZusatzAdresse->Adresse->Plz                                 AS "ZAdresse.Plz", 
                   ZusatzAdresse->Adresse->PlzInklZusatz             AS "ZAdresse.PlzZusatz", 
                   ZusatzAdresse->Adresse->Ort                                                AS "ZAdresse.Ort", 
                   ZusatzAdresse->Adresse->Adresscode                               AS "ZAdresse.Adresscode",
                   ZusatzAdresse->Adresse->Telefon1				  AS "ZAdresse.Telefon1",
                   ZusatzAdresse->Adresse->Telefon2				  AS "ZAdresse.Telefon2",
                   ZusatzAdresse->Adresse->Fax				  AS "ZAdresse.Fax",
                   ZusatzAdresse->Adresse->Mobil				  AS "ZAdresse.Mobil",
                   AuftragValidiert, 
                   AuftragsNr, 
                   Auftragsdatum,
                   Auftragsstatus, 
                   BestellNr, 
                   DBFakturierung_SD.Hilfstexte_GetTextClass(Bestellart, Mandant, :Lang) as Bestellart, 
                   Besteller, 
                   BetragEWExklMwst, 
                   BetragEWInklMwst, 
                   BetragFWExklMwst, 
                   BetragFWInklMwst, 
                   BetragMwstFW, 
                   BetragMwst, 
                   BruttoGewinn, 
                   CodeMwst, 
                   Gebietscode, 
                   GewichtBrutto, 
                   GewichtNetto, 
                   GewichtTara, 
                   Fusstext, 
                   Fusstext1, 
                   Fusstext2, 
                   Fusstext3, 
                   Fusstext4, 
                   Kurs, 
                   Kurseinheit, 
                   Lieferart->PositionsNr AS "Lieferart.Nr", 
                   DBFakturierung_SD.Hilfstexte_GetTextClass(Lieferart, Mandant, :Lang) AS "Lieferart.Text", 
                   Lieferdatum, 
                   LieferscheinNr, 
                   Lieferzeit, 
                   RabattProzent, 
                   RechnungsNr, 
                   Rechnungsdatum, 
                   Referenz, 
                   RetourenErfasst, 
                   Sachbearbeiter->Benutzer->Benutzername AS SachbearbeiterBenutzername, 
                   Sachbearbeiter->Name AS SachbearbeiterName, 
                   Sachbearbeiter->Nummer AS SachbearbeiterNr, 
                   Sachbearbeiter->Vorname AS  SachbearbeiterVorname, 
                   Projekt->Hauptnummer AS "Projekt.Hauptnummer",
                   Projekt->Teilnummer AS "Projekt.Teilnummer",
                   DBIntrap_SD.Projekt_GetBezeichnungClass(Projekt->ID, Mandant, :Lang) AS "Projekt.Bezeichnung",
                   Skonto, 
                   BearbeitungsstatusAU, 
                   StatusAutoVerarbeitung, 
                   BearbeitungsstatusBZ, 
                   BearbeitungsstatusLS, 
                   BearbeitungsstatusOF, 
                   BearbeitungsstatusRG, 
                   BearbeitungsstatusRZ, 
                   TotalMitGebinde, 
                   TotalMitGebindeFW,
                   VerteillisteNr, 
                   Vertreter, 
                   DBAdressen_SD.Vertreter_GetNameClass(Vertreter, Mandant, :Lang) AS VertreterName, 
                   DBAdressen_SD.Vertreter_GetBeschreibungClass(Vertreter, Mandant, :Lang) AS VertreterBeschreibung, 
                   Waehrung, 
                   Warenaufwand, 
                   ZusatzFeld1,
                   ZusatzFeld2,
                   ZusatzFeld3,
                   ZusatzFeld4,
                   ZusatzFeld5,
                   
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->AdressNrAlt ELSE Zahladresse->Adresse->AdressNrAlt END AS "RAdresse.AdressNrAlt",  
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->Adressnummer ELSE Zahladresse->Adresse->Adressnummer END AS "RAdresse.Adressnummer", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Anrede ELSE Zahladresse->Adresse->Anrede END AS "RAdresse.Anrede", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Name ELSE DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, :firstVorname) END AS "RAdresse.Name", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresszeile1 ELSE DBAdressen.Adresse_GetZusatz1(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->VornameZusatz1) END AS "RAdresse.Adresszeile1", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresszeile2 ELSE Zahladresse->Adresse->Zusatz2 END AS "RAdresse.Adresszeile2", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresszeile3 ELSE Zahladresse->Adresse->Strasse || ' ' || NVL(Zahladresse->Adresse->Hausnummer,'') END AS "RAdresse.Adresszeile3", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Plz ELSE Zahladresse->Adresse->Plz END AS "RAdresse.Plz", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   PlzZusatz ELSE Zahladresse->Adresse->PlzInklZusatz END AS "RAdresse.PlzZusatz", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Ort ELSE Zahladresse->Adresse->Ort END AS "RAdresse.Ort", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   0 ELSE Zahladresse->Adresse->Adresscode END AS "RAdresse.Adresscode",
                                   
                   CASE
                                   WHEN   (Zahladresse->Adresse->Anrede LIKE Anrede AND
                                                                  DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, :firstVorname) LIKE Name AND
                                                                  NVL(DBAdressen.Adresse_GetZusatz1(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->VornameZusatz1),'') LIKE NVL(Adresszeile1,'') AND
                                                                  Zahladresse->Adresse->Zusatz2 LIKE Adresszeile2 AND
                                                                  ((Zahladresse->Adresse->Strasse LIKE Adresszeile3) OR (Zahladresse->Adresse->Strasse ||' '|| NVL(Zahladresse->Adresse->Hausnummer,'') LIKE NVL(Adresszeile3,''))) AND
                                                                  Zahladresse->Adresse->Plz LIKE Plz AND
                                                                  Zahladresse->Adresse->Ort LIKE Ort)
                                                                  OR UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%')
                                                   THEN
                                                                  CONVERT(BIT,1)
                                   ELSE
                                                                  CONVERT(BIT,0)
                   END AS AdressenEqual,
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->Telefon1 ELSE Zahladresse->Adresse->Telefon1 END AS "RAdresse.Telefon1", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->Telefon2 ELSE Zahladresse->Adresse->Telefon2 END AS "RAdresse.Telefon2", 
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->Fax ELSE Zahladresse->Adresse->Fax END AS "RAdresse.Fax",                                                
                   CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
                                   Adresse->Adresse->Mobil ELSE Zahladresse->Adresse->Mobil END AS "RAdresse.Mobil", 
                   
                   Zahlungskondition, 
                   Zahlungskondition->Code AS "ZahlungskonditionCode",
                   DBDebiKredi_SD.DZahlungskond_GetBezeichnungClass(Zahlungskondition, Mandant, :Lang) As "ZahlungskonditionText",
                   Verbucht,
                   (Select MWSTNR FROM DBDebiKredi.Kreditor AS k WHERE k.Adresse = a.Zahladresse->Adresse) AS "RAdresse.MwstNr",
                   OrthoVerfuegung
    FROM DBFakturierung.Auftragskopf AS a
    WHERE %ID=:AuftragsOid]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungDebi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Sum(TotalMitGebinde) As TotalMitGebinde, 
			Sum(Skonto) As Skonto,
			Sum(BetragEWInklMwst) As BetragEWInklMwst,
			Sum(TotalMitGebindeFW) As TotalMitGebindeFW, 
			Sum(SkontoFW) As SkontoFW,
			Sum(BetragFWInklMwst) As BetragFWInklMwst,
			Rechnungsdatum, 
			RechnungsNr, 
			Waehrung,
			Kurs,
			Kurseinheit As Faktor,
			Zahladresse->Adresse->Kundenkategorie As Kundenkategorie,
			Zahladresse->FibuKonto As DebiKonto,
			Zahlungskondition,
			Zahladresse->Adresse->Adressnummer As Adressnummer,
			DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, 0) As Name,
			Zahladresse->Adresse->Plz As Plz,
			Zahladresse->Adresse->Ort As Ort,
			Barkonto,
			IsGarantieAuftrag
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			DBFakturierung.Auftragskopf_IsDebitor(ID) = 1 AND
			NVL(Verbucht,0) = 0 AND
			(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum>={d :vonRgDatum} AND
			Rechnungsdatum<={d :bisRgDatum} AND
			(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)
	GROUP BY RechnungsNr
	ORDER BY RechnungsNr]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungKredi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Sum(TotalMitGebinde) As TotalMitGebinde, 
			Sum(Skonto) As Skonto,
			Sum(BetragEWInklMwst) As BetragEWInklMwst,
			Sum(TotalMitGebindeFW) As TotalMitGebindeFW, 
			Sum(SkontoFW) As SkontoFW,
			Sum(BetragFWInklMwst) As BetragFWInklMwst,
			Rechnungsdatum, 
			RechnungsNr, 
			Waehrung,
			Kurs,
			Kurseinheit As Faktor,
			Zahladresse->Adresse->Kundenkategorie As Kundenkategorie,
			DBDebiKredi.Kreditor_GetFibuKontoOidByDebiOid(Adresse) As KrediKonto,
			Zahlungskondition,
			Zahladresse->Adresse->Adressnummer As Adressnummer,
			DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, 0) As Name,
			Zahladresse->Adresse->Plz As Plz,
			Zahladresse->Adresse->Ort As Ort,
			Barkonto,
			IsGarantieAuftrag
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			DBFakturierung.Auftragskopf_IsDebitor(ID) = 0 AND
			NVL(Verbucht,0) = 0 AND
			(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum>={d :vonRgDatum} AND
			Rechnungsdatum<={d :bisRgDatum} AND
			(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)
	GROUP BY RechnungsNr
	ORDER BY RechnungsNr]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungArtikelOhneKtoEK">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Artikel,
			Artikel->ArtikelNr As ArtikelNr
	FROM DBFakturierung.Auftragspos 
	WHERE Auftragskopf->Mandant = :MandantOid AND
			NVL(Auftragskopf->Verbucht,0) = 0 AND
			(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
			Auftragskopf->Rechnungsnr>=:vonRgNr AND
			Auftragskopf->Rechnungsnr<=:bisRgNr AND
			Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
			Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
			NVL(Artikelcode, 0) <> 8 AND 
			(NVL(Artikelcode, 0) < 10 OR 
				NVL(Artikelcode, 0) = 21 OR 
				NVL(Artikelcode, 0) = 23 OR 
				(NVL(Artikelcode, 0) >= 30 AND 
					NVL(Artikelcode, 0) <= 33)) AND 
			(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode) AND
			Artikel->FibuKontoEK IS NULL]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungArtikelOhneKtoVK">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Artikel,
			Artikel->ArtikelNr As ArtikelNr
	FROM DBFakturierung.Auftragspos 
	WHERE Auftragskopf->Mandant = :MandantOid AND
			NVL(Auftragskopf->Verbucht,0) = 0 AND
			(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
			Auftragskopf->Rechnungsnr>=:vonRgNr AND
			Auftragskopf->Rechnungsnr<=:bisRgNr AND
			Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
			Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
			NVL(Artikelcode, 0) <> 8 AND 
			(NVL(Artikelcode, 0) < 10 OR 
				NVL(Artikelcode, 0) = 21 OR 
				NVL(Artikelcode, 0) = 23 OR 
				(NVL(Artikelcode, 0) >= 30 AND 
					NVL(Artikelcode, 0) <= 33)) AND 
			(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR  Auftragskopf->StatusAutoVerarbeitung = :freigabeCode) AND
			Artikel->FibuKontoVK IS NULL]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungDebiOhneKonti">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Zahladresse As Debitor,
			Zahladresse->Adresse->Adressnummer As Adressnummer
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			NVL(Verbucht,0) = 0 AND
			(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum>={d :vonRgDatum} AND
			Rechnungsdatum<={d :bisRgDatum} AND
			(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode) AND
			Zahladresse->FibuKonto IS NULL]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungKrediOhneKonti">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT Zahladresse->Adresse As Adresse,
			Zahladresse->Adresse->Adressnummer As Adressnummer
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			NVL(Verbucht,0) = 0 AND
			(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum>={d :vonRgDatum} AND
			Rechnungsdatum<={d :bisRgDatum} AND
			(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode) AND
			DBDebiKredi.Kreditor_GetFibuKontoOidByDebiOid(Adresse) IS NULL]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungDebi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskontoDebi:%String,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Auftragskopf->ID As "Auftragskopf.ID",
			Auftragskopf->RechnungsNr As "Auftragskopf.RechnungsNr", 
			Auftragskopf->LieferscheinNr As "Auftragskopf.LieferscheinNr", 
			Auftragskopf->AuftragsNr As "Auftragskopf.AuftragsNr",
			Auftragskopf->Rechnungsdatum As "Auftragskopf.Rechnungsdatum",
			Auftragskopf->Zahladresse->Adresse->Adressnummer As "Auftragskopf.Zahladresse.Adresse.Adressnummer",
			Auftragskopf->Zahladresse->Adresse->Name As "Auftragskopf.Zahladresse.Adresse.Name",
			Auftragskopf->Zahladresse->Adresse->Plz As "Auftragskopf.Zahladresse.Adresse.Plz",
			Auftragskopf->Zahladresse->Adresse->Ort As "Auftragskopf.Zahladresse.Adresse.Ort",
			Auftragskopf->Waehrung->FWCode As "Auftragskopf.Waehrung.Code",
			Auftragskopf->Waehrung->ISOSWIFTCode As "Auftragskopf.Waehrung.ISOSWIFTCode",
			Auftragskopf->Waehrung->Waehrung As "Auftragskopf.Waehrung.Waehrung",
			Auftragskopf->Zahladresse->Adresse->Kundenkategorie As Kundenkategorie,
			DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) As "Auftragskopf.IsDebitor",
			Buchungscode As Buchungscode,
			Auftragskopf->IsGarantieAuftrag As "Auftragskopf.IsGarantieAuftrag",
			CASE
				WHEN Auftragskopf->Zahlungskondition=:barzahlungsZahlungskondOid THEN
					CASE
						WHEN NVL(Auftragskopf->Barkonto,"")="" THEN
							:barzahlungskontoDebi
						ELSE 
							Auftragskopf->Barkonto->KontoNr
						END
				WHEN ((Auftragskopf->Zahlungskondition->Code >= 40) AND (Auftragskopf->Zahlungskondition->Code <= 49)) THEN
					Auftragskopf->Zahlungskondition->FibuKonto->KontoNr
				ELSE
					Auftragskopf->Zahladresse->FibuKonto->KontoNr
			END As "Auftragskopf.Zahladresse.DebiKonto",
			
			Auftragskopf->CodeMwst As "Auftragskopf.CodeMwst",
			Auftragskopf->BetragEWExklMwst As "Auftragskopf.Warenwert",
			Auftragskopf->Skonto As "Auftragskopf.Skonto",
			Auftragskopf->BetragMwst As "Auftragskopf.BetragMwst",
			Auftragskopf->BetragFWInklMwst As "Auftragskopf.BetragFW",
			Auftragskopf->TotalMitGebinde As "Auftragskopf.TotalMitGebinde",
			
			Artikel->ArtikelNr As "Artikel.ArtikelNr",
			
			CASE
				WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
					Artikel->FibuKontoVK->KontoNr 
				ELSE
					Artikel->FibuKontoEK->KontoNr 
			END As "Artikel.FibuKonto",
			
			DetailText,
			Menge,
			Mengeneinheit->PositionsNr As "Mengeneinheit.Code",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, :MandantOid, :lang) AS "Mengeneinheit.Text", 
			Nettobetrag2ExklMwstEW As BetragExklMwst,
			Nettobetrag2InklMwstEW As BetragInklMwst,
			Nettobetrag2InklMwstFW As BetragInklMwstFw,
			Mwst->MwstCode As "Mwst.MwstCode",
			MwstSatz,
			(SELECT count(ID) 
				FROM DBFakturierung.Auftragskopf anzAl
				WHERE anzAl.RechnungsNr = Auftragskopf->RechnungsNr
				GROUP BY anzAl.RechnungsNr) As "Auftragskopf.AnzahlLieferscheine"
	FROM DBFakturierung.Auftragspos 
	WHERE Auftragskopf->Mandant = :MandantOid AND
			DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) = 1 AND
			NVL(Artikelcode, 0) <> 8 AND 
			(NVL(Artikelcode, 0) < 10 OR 
				NVL(Artikelcode, 0) = 21 OR 
				NVL(Artikelcode, 0) = 23 OR 
				(NVL(Artikelcode, 0) >= 30 AND 
					NVL(Artikelcode, 0) <= 33)) AND
			((:druckAbJnr=1 AND Auftragskopf->VerbuchungsjournalNr=:jnr) OR
			(:druckAbJnr=0 AND NVL(Auftragskopf->Verbucht,0) = 0 AND
			Auftragskopf->Rechnungsnr>=:vonRgNr AND
			Auftragskopf->Rechnungsnr<=:bisRgNr AND
			Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
			Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
			(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
			(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode)))
	ORDER BY Auftragskopf->RechnungsNr, Auftragskopf->AuftragsNr, PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungKredi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskontoKredi:%String,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Auftragskopf->ID As "Auftragskopf.ID",
			Auftragskopf->RechnungsNr As "Auftragskopf.RechnungsNr", 
			Auftragskopf->LieferscheinNr As "Auftragskopf.LieferscheinNr", 
			Auftragskopf->AuftragsNr As "Auftragskopf.AuftragsNr",
			Auftragskopf->Rechnungsdatum As "Auftragskopf.Rechnungsdatum",
			Auftragskopf->Zahladresse->Adresse->Adressnummer As "Auftragskopf.Zahladresse.Adresse.Adressnummer",
			Auftragskopf->Zahladresse->Adresse->Name As "Auftragskopf.Zahladresse.Adresse.Name",
			Auftragskopf->Zahladresse->Adresse->Plz As "Auftragskopf.Zahladresse.Adresse.Plz",
			Auftragskopf->Zahladresse->Adresse->Ort As "Auftragskopf.Zahladresse.Adresse.Ort",
			Auftragskopf->Waehrung->FWCode As "Auftragskopf.Waehrung.Code",
			Auftragskopf->Waehrung->ISOSWIFTCode As "Auftragskopf.Waehrung.ISOSWIFTCode",
			Auftragskopf->Waehrung->Waehrung As "Auftragskopf.Waehrung.Waehrung",
			Auftragskopf->Zahladresse->Adresse->Kundenkategorie As Kundenkategorie,
			DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) As "Auftragskopf.IsDebitor",
			Buchungscode As Buchungscode,
			Auftragskopf->IsGarantieAuftrag As "Auftragskopf.IsGarantieAuftrag",
			CASE
				WHEN Auftragskopf->Zahlungskondition=:barzahlungsZahlungskondOid THEN
					CASE
						WHEN NVL(Auftragskopf->Barkonto,"")="" THEN
							:barzahlungskontoKredi
						ELSE 
							Auftragskopf->Barkonto->KontoNr
						END
				WHEN ((Auftragskopf->Zahlungskondition->Code >= 40) AND (Auftragskopf->Zahlungskondition->Code <= 49)) THEN
					Auftragskopf->Zahlungskondition->FibuKonto->KontoNr
				ELSE
					DBDebiKredi.Kreditor_GetFibuKontoNrByDebiOid(Auftragskopf->Adresse)
			END As "Auftragskopf.Zahladresse.DebiKonto",
			
			Auftragskopf->CodeMwst As "Auftragskopf.CodeMwst",
			Auftragskopf->BetragEWExklMwst As "Auftragskopf.Warenwert",
			Auftragskopf->Skonto As "Auftragskopf.Skonto",
			Auftragskopf->BetragMwst As "Auftragskopf.BetragMwst",
			Auftragskopf->BetragFWInklMwst As "Auftragskopf.BetragFW",
			Auftragskopf->TotalMitGebinde As "Auftragskopf.TotalMitGebinde",
			
			Artikel->ArtikelNr As "Artikel.ArtikelNr",
			
			CASE
				WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
					Artikel->FibuKontoVK->KontoNr 
				ELSE
					Artikel->FibuKontoEK->KontoNr 
			END As "Artikel.FibuKonto",
			
			DetailText,
			Menge,
			Mengeneinheit->PositionsNr As "Mengeneinheit.Code",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, :MandantOid, :lang) AS "Mengeneinheit.Text", 
			Nettobetrag2ExklMwstEW As BetragExklMwst,
			Nettobetrag2InklMwstEW As BetragInklMwst,
			Nettobetrag2InklMwstFW As BetragInklMwstFw,
			Mwst->MwstCode As "Mwst.MwstCode",
			MwstSatz,
			(SELECT count(ID) 
				FROM DBFakturierung.Auftragskopf anzAl
				WHERE anzAl.RechnungsNr = Auftragskopf->RechnungsNr
				GROUP BY anzAl.RechnungsNr) As "Auftragskopf.AnzahlLieferscheine"
	FROM DBFakturierung.Auftragspos 
	WHERE Auftragskopf->Mandant = :MandantOid AND
			DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) = 0 AND
			NVL(Artikelcode, 0) <> 8 AND 
			(NVL(Artikelcode, 0) < 10 OR 
				NVL(Artikelcode, 0) = 21 OR 
				NVL(Artikelcode, 0) = 23 OR 
				(NVL(Artikelcode, 0) >= 30 AND 
					NVL(Artikelcode, 0) <= 33)) AND
			((:druckAbJnr=1 AND Auftragskopf->VerbuchungsjournalNr=:jnr) OR
			(:druckAbJnr=0 AND NVL(Auftragskopf->Verbucht,0) = 0 AND
			Auftragskopf->Rechnungsnr>=:vonRgNr AND
			Auftragskopf->Rechnungsnr<=:bisRgNr AND
			Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
			Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
			(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
			(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode)))
	ORDER BY Auftragskopf->RechnungsNr, Auftragskopf->AuftragsNr, PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungMwstDebi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[		SELECT Mwst As "Mwst.ID",
				Mwst->MwstCode As "Mwst.MwstCode",
				DBFibu_SD.Mwst_GetBezeichnungClass(Mwst, :MandantOid, :lang, Auftragskopf->Lieferdatum) AS "Mwst.Bezeichnung", 
				{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFibuClass(Mwst, Auftragskopf->Lieferdatum), SQL_DOUBLE)} As "Mwst.MwstSatzFibu",
				SUM(Nettobetrag2ExklMwstEW) As BetragExklMwst,
				SUM(Nettobetrag2MwstbetragEW) As MwstBetrag,
				SUM(Nettobetrag2InklMwstEW) As BetragInklMwst,
				MwstSatz As "Mwst.MwstSatzFakturierung"
		FROM DBFakturierung.Auftragspos 
		WHERE Auftragskopf->Mandant = :MandantOid AND
				DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) = 1 AND
				NVL(Artikelcode, 0) <> 8 AND 
				(NVL(Artikelcode, 0) < 10 OR 
					NVL(Artikelcode, 0) = 21 OR 
					NVL(Artikelcode, 0) = 23 OR 
					(NVL(Artikelcode, 0) >= 30 AND 
					NVL(Artikelcode, 0) <= 33)) AND
				((:druckAbJnr=1 AND Auftragskopf->VerbuchungsjournalNr=:jnr) OR
				(:druckAbJnr=0 AND NVL(Auftragskopf->Verbucht,0) = 0 AND
				Auftragskopf->Rechnungsnr>=:vonRgNr AND
				Auftragskopf->Rechnungsnr<=:bisRgNr AND
				NVL(Auftragskopf->IsGarantieAuftrag,0)=0 AND
				Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
				Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
				(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
				(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
			(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode)))
				GROUP BY Mwst]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungMwstKredi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[		SELECT Mwst As "Mwst.ID",
				Mwst->MwstCode As "Mwst.MwstCode",
				DBFibu_SD.Mwst_GetBezeichnungClass(Mwst, :MandantOid, :lang, Auftragskopf->Lieferdatum) AS "Mwst.Bezeichnung", 
				{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFibuClass(Mwst, Auftragskopf->Lieferdatum), SQL_DOUBLE)} As "Mwst.MwstSatzFibu",
				SUM(Nettobetrag2ExklMwstEW) As BetragExklMwst,
				SUM(Nettobetrag2MwstbetragEW) As MwstBetrag,
				SUM(Nettobetrag2InklMwstEW) As BetragInklMwst,
				MwstSatz As "Mwst.MwstSatzFakturierung"
		FROM DBFakturierung.Auftragspos 
		WHERE Auftragskopf->Mandant = :MandantOid AND
				DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) = 0 AND
				NVL(Artikelcode, 0) <> 8 AND 
				(NVL(Artikelcode, 0) < 10 OR
					NVL(Artikelcode, 0) = 21 OR 
					NVL(Artikelcode, 0) = 23 OR 
					(NVL(Artikelcode, 0) >= 30 AND 
						NVL(Artikelcode, 0) <= 33)) AND
				((:druckAbJnr=1 AND Auftragskopf->VerbuchungsjournalNr=:jnr) OR
				(:druckAbJnr=0 AND NVL(Auftragskopf->Verbucht,0) = 0 AND
				Auftragskopf->Rechnungsnr>=:vonRgNr AND
				Auftragskopf->Rechnungsnr<=:bisRgNr AND
				NVL(Auftragskopf->IsGarantieAuftrag,0)=0 AND
				Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
				Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
				(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
				(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
				(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode)))
				GROUP BY Mwst]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungFibuDebiJ">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MandJahrOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskontoDebi:%String,skontokontoDebi:%String,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT "Konto.KontoNr", 
			"Konto.Bezeichnung", 
			"Konto.Soll",
			"Mwst.MwstCode",
			"Mwst.MwstSatzFibu",
			SUM(BetragExklMwst) As BetragExklMwst,
			SUM(MwstBetrag) As MwstBetrag,
			SUM(BetragInklMwst) As BetragInklMwst
	FROM (
			SELECT 
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							Artikel->FibuKontoVK->KontoNr
						ELSE
							Artikel->FibuKontoEK->KontoNr
					END As "Konto.KontoNr",
			
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Artikel->FibuKontoVK)
						ELSE
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Artikel->FibuKontoEK) 
					END As "Konto.Bezeichnung",
			
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK)
						ELSE
							DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK)
					END As "Konto.Soll",
					
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2ExklMwstEW
								ELSE
									Nettobetrag2ExklMwstEW
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK) = 1 THEN
									(-1)*Nettobetrag2ExklMwstEW
								ELSE
									Nettobetrag2ExklMwstEW
							END
					END As BetragExklMwst,
					
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2MwstbetragEW
								ELSE
									Nettobetrag2MwstbetragEW
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK) = 1 THEN
									(-1)*Nettobetrag2MwstbetragEW
								ELSE
									Nettobetrag2MwstbetragEW
							END
					END As MwstBetrag,
					
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2InklMwstEW
								ELSE
									Nettobetrag2InklMwstEW
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK) = 1 THEN
									(-1)*Nettobetrag2InklMwstEW
								ELSE
									Nettobetrag2InklMwstEW
							END
					END As BetragInklMwst,
					
					Mwst->MwstCode As "Mwst.MwstCode",
					{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFibuClass(Mwst, Auftragskopf->Lieferdatum), SQL_DOUBLE)} As "Mwst.MwstSatzFibu"
			
			FROM DBFakturierung.Auftragspos 
			WHERE Auftragskopf->Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) = 1 AND
					NVL(Artikelcode, 0) <> 8 AND 
					(NVL(Artikelcode, 0) < 10 OR 
						NVL(Artikelcode, 0) = 21 OR 
						NVL(Artikelcode, 0) = 23 OR 
						(NVL(Artikelcode, 0) >= 30 AND 
						NVL(Artikelcode, 0) <= 33)) AND
					((:druckAbJnr=1 AND Auftragskopf->VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Auftragskopf->Verbucht,0) = 0 AND
					Auftragskopf->Rechnungsnr>=:vonRgNr AND
					Auftragskopf->Rechnungsnr<=:bisRgNr AND
					NVL(Auftragskopf->IsGarantieAuftrag,0)=0 AND
					Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
					Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
					(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode)))

					
			UNION ALL SELECT 
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									:barzahlungskontoDebi
								ELSE 
									Barkonto->KontoNr
								END							
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							Zahlungskondition->FibuKonto->KontoNr
						ELSE
							Zahladresse->FibuKonto->KontoNr
					END As "Konto.KontoNr",
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									(SELECT KontoBezeichnung FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoDebi AND MandantJahr=:MandJahrOid)
								ELSE 
									DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Barkonto)
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Zahlungskondition->FibuKonto)
						ELSE
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Zahladresse->FibuKonto)
					END As "Konto.Bezeichnung",
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									(SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoDebi AND MandantJahr=:MandJahrOid)
								ELSE 
									DBFibu.Konto_GetSollClass(:MandJahrOid, Barkonto)
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto)
						ELSE
							DBFibu.Konto_GetSollClass(:MandJahrOid, Zahladresse->FibuKonto)
					END As "Konto.Soll",
					
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									CASE 
										WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoDebi AND MandantJahr=:MandJahrOid) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
									END
								ELSE 
									CASE 
										WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Barkonto) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
									END
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahladresse->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
					END As "BetragExklMwst",
					
					0,
					
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									CASE 
										WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoDebi AND MandantJahr=:MandJahrOid) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
										END
								ELSE 
									CASE
										WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Barkonto) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
										END
								END						
							
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahladresse->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
					END As "BetragInklMwst",
					
					0 As "Mwst.MwstCode",
					0 As "Mwst.MwstSatzFibu"
			
			FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(ID) = 1 AND
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					Rechnungsnr>=:vonRgNr AND
					Rechnungsnr<=:bisRgNr AND
					NVL(IsGarantieAuftrag,0)=0 AND
					Rechnungsdatum>={d :vonRgDatum} AND
					Rechnungsdatum<={d :bisRgDatum} AND
					(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)))

			UNION ALL SELECT 
					:skontokontoDebi As "Konto.KontoNr",
					
					(SELECT KontoBezeichnung FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoDebi AND MandantJahr=:MandJahrOid) As "Konto.Bezeichnung",
					
					(SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoDebi AND MandantJahr=:MandJahrOid) As "Konto.Soll",
					
					CASE 
						WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoDebi AND MandantJahr=:MandJahrOid) = 1 THEN
							Skonto
						ELSE
							(-1)*Skonto
					END As "BetragExklMwst",
					
					0,
					
					CASE 
						WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoDebi AND MandantJahr=:MandJahrOid) = 1 THEN
							Skonto
						ELSE
							(-1)*Skonto
					END As "BetragInklMwst",
					
					0 As "Mwst.MwstCode",
					0 As "Mwst.MwstSatzFibu"
			
			FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(ID) = 1 AND
					Skonto<>0 AND 
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					Rechnungsnr>=:vonRgNr AND
					Rechnungsnr<=:bisRgNr AND
					NVL(IsGarantieAuftrag,0)=0 AND
					Rechnungsdatum>={d :vonRgDatum} AND
					Rechnungsdatum<={d :bisRgDatum} AND
					(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)))

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

<Query name="ListeDruckVerbuchungFibuKrediJ">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MandJahrOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskontoKredi:%String,skontokontoKredi:%String,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT "Konto.KontoNr", 
			"Konto.Bezeichnung", 
			"Konto.Soll",
			"Mwst.MwstCode",
			"Mwst.MwstSatzFibu",
			SUM(BetragExklMwst) As BetragExklMwst,
			SUM(MwstBetrag) As MwstBetrag,
			SUM(BetragInklMwst) As BetragInklMwst
	FROM (
			SELECT 
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							Artikel->FibuKontoVK->KontoNr
						ELSE
							Artikel->FibuKontoEK->KontoNr
					END As "Konto.KontoNr",
			
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Artikel->FibuKontoVK)
						ELSE
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Artikel->FibuKontoEK) 
					END As "Konto.Bezeichnung",
			
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK)
						ELSE
							DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK)
					END As "Konto.Soll",
					
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2ExklMwstEW
								ELSE
									Nettobetrag2ExklMwstEW
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK) = 1 THEN
									(-1)*Nettobetrag2ExklMwstEW
								ELSE
									Nettobetrag2ExklMwstEW
							END
					END As BetragExklMwst,
					
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2MwstbetragEW
								ELSE
									Nettobetrag2MwstbetragEW
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK) = 1 THEN
									(-1)*Nettobetrag2MwstbetragEW
								ELSE
									Nettobetrag2MwstbetragEW
							END
					END As MwstBetrag,
					
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoVK) = 1 THEN
									(-1)*Nettobetrag2InklMwstEW
								ELSE
									Nettobetrag2InklMwstEW
							END
						ELSE
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Artikel->FibuKontoEK) = 1 THEN
									(-1)*Nettobetrag2InklMwstEW
								ELSE
									Nettobetrag2InklMwstEW
							END
					END As BetragInklMwst,
					
					Mwst->MwstCode As "Mwst.MwstCode",
					{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFibuClass(Mwst, Auftragskopf->Lieferdatum), SQL_DOUBLE)} As "Mwst.MwstSatzFibu"
			
			FROM DBFakturierung.Auftragspos 
			WHERE Auftragskopf->Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(Auftragskopf) = 0 AND
					NVL(Artikelcode, 0) <> 8 AND 
					(NVL(Artikelcode, 0) < 10 OR 
						NVL(Artikelcode, 0) = 21 OR 
						NVL(Artikelcode, 0) = 23 OR 
						(NVL(Artikelcode, 0) >= 30 AND 
						NVL(Artikelcode, 0) <= 33)) AND
					((:druckAbJnr=1 AND Auftragskopf->VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Auftragskopf->Verbucht,0) = 0 AND
					Auftragskopf->Rechnungsnr>=:vonRgNr AND
					Auftragskopf->Rechnungsnr<=:bisRgNr AND
					NVL(Auftragskopf->IsGarantieAuftrag,0)=0 AND
					Auftragskopf->Rechnungsdatum>={d :vonRgDatum} AND
					Auftragskopf->Rechnungsdatum<={d :bisRgDatum} AND
					(Auftragskopf->StatusAutoVerarbeitung < 4 OR Auftragskopf->StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(Auftragskopf->BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Auftragskopf->Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR Auftragskopf->StatusAutoVerarbeitung = :freigabeCode)))

					
			UNION ALL SELECT 
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									:barzahlungskontoKredi
								ELSE 
									Barkonto->KontoNr
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							Zahlungskondition->FibuKonto->KontoNr
						ELSE
							DBDebiKredi.Kreditor_GetFibuKontoNrByDebiOid(Adresse)
					END As "Konto.KontoNr",
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									(SELECT KontoBezeichnung FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoKredi AND MandantJahr=:MandJahrOid)
								ELSE 
									DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Barkonto)
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid, Zahlungskondition->FibuKonto)
						ELSE
							DBDebiKredi.Kreditor_GetFibuKontoJahrBezByDebiOid(Adresse,:MandJahrOid)
					END As "Konto.Bezeichnung",
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									(SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoKredi AND MandantJahr=:MandJahrOid)
								ELSE 
									DBFibu.Konto_GetSollClass(:MandJahrOid, Barkonto)
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto)
						ELSE
							DBDebiKredi.Kreditor_GetFibuKontoJahrSollByDebiOid(Adresse,:MandJahrOid)
					END As "Konto.Soll",
					
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									CASE 
										WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoKredi AND MandantJahr=:MandJahrOid) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
										END
								ELSE 
									CASE 
										WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Barkonto) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
										END
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
						ELSE
							CASE 
								WHEN DBDebiKredi.Kreditor_GetFibuKontoJahrSollByDebiOid(Adresse,:MandJahrOid) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
					END As "BetragExklMwst",
					
					0,
					
					CASE
						WHEN Zahlungskondition=:barzahlungsZahlungskondOid THEN
							CASE
								WHEN NVL(Barkonto,"")="" THEN
									CASE 
										WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:barzahlungskontoKredi AND MandantJahr=:MandJahrOid) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
										END
								ELSE 
									CASE
										WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Barkonto) = 1 THEN
											TotalMitGebinde
										ELSE
											(-1)*TotalMitGebinde
										END
								END	
						WHEN ((Zahlungskondition->Code >= 40) AND (Zahlungskondition->Code <= 49)) THEN
							CASE 
								WHEN DBFibu.Konto_GetSollClass(:MandJahrOid, Zahlungskondition->FibuKonto) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
						ELSE
							CASE 
								WHEN DBDebiKredi.Kreditor_GetFibuKontoJahrSollByDebiOid(Adresse,:MandJahrOid) = 1 THEN
									TotalMitGebinde
								ELSE
									(-1)*TotalMitGebinde
							END
					END As "BetragInklMwst",
					
					0 As "Mwst.MwstCode",
					0 As "Mwst.MwstSatzFibu"
			
			FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(ID) = 0 AND
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					Rechnungsnr>=:vonRgNr AND
					Rechnungsnr<=:bisRgNr AND
					NVL(IsGarantieAuftrag,0)=0 AND
					Rechnungsdatum>={d :vonRgDatum} AND
					Rechnungsdatum<={d :bisRgDatum} AND
					(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)))

			UNION ALL SELECT 
					:skontokontoKredi As "Konto.KontoNr",
					
					(SELECT KontoBezeichnung FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) As "Konto.Bezeichnung",
					
					(SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) As "Konto.Soll",
					
					CASE 
						WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) = 1 THEN
							Skonto
						ELSE
							(-1)*Skonto
					END As "BetragExklMwst",
					
					0,
					
					CASE 
						WHEN (SELECT Soll FROM DBFibu.KontoJahr WHERE KontoNr=:skontokontoKredi AND MandantJahr=:MandJahrOid) = 1 THEN
							Skonto
						ELSE
							(-1)*Skonto
					END	As "BetragInklMwst",
					
					0 As "Mwst.MwstCode",
					0 As "Mwst.MwstSatzFibu"
			
			FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(ID) = 0 AND
					Skonto<>0 AND 
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					Rechnungsnr>=:vonRgNr AND
					Rechnungsnr<=:bisRgNr AND
					NVL(IsGarantieAuftrag,0)=0 AND
					Rechnungsdatum>={d :vonRgDatum} AND
					Rechnungsdatum<={d :bisRgDatum} AND
					(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)))

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

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

<Query name="ListeProjektVerbuchungsjnr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT DISTINCT ProjektVerbuchungsjnr 
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant=:MandantOid AND 
			ProjektVerbuchungsjnr IS NOT NULL
	ORDER BY ProjektVerbuchungsjnr</SqlQuery>
</Query>

<Query name="ListeDruckVerbFibuFromBuDebi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskonto:%String,skontokonto:%String,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Hauptkonto->KontoNr AS "Konto.KontoNr", 
			Hauptkonto->KontoBezeichnung AS "Konto.Bezeichnung", 
			Hauptkonto->Soll AS "Konto.Soll",
			Mwst->MwstCode AS "Mwst.MwstCode",
			MwstSatz AS "Mwst.MwstSatzFibu",
			SUM(BuchungsbetragSH-MwstbetragSHnachHauptkonto) As BetragExklMwst,
			SUM(MwstbetragSHnachHauptkonto) As MwstBetrag,
			SUM(BuchungsbetragSH) As BetragInklMwst
	FROM DBFibu.Teilbuchung
	WHERE Buchung IN
		(
		SELECT OP->FibuBuchung FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(ID) = 1 AND
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					Rechnungsnr>=:vonRgNr AND
					Rechnungsnr<=:bisRgNr AND
					Rechnungsdatum>={d :vonRgDatum} AND
					Rechnungsdatum<={d :bisRgDatum} AND
					(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)))
		)
	GROUP BY Hauptkonto->KontoNr, Mwst, MwstSatz
	ORDER BY Hauptkonto->KontoNr, Mwst, MwstSatz]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbFibuFromBuKredi">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,lang:%String,jnr:%Integer,barzahlungsZahlungskondOid:%String,barzahlungskonto:%String,skontokonto:%String,nurBarzahlungen:%Boolean,vonRgNr:%Integer,bisRgNr:%Integer,vonRgDatum:%Date,bisRgDatum:%Date,druckAbJnr:%Boolean,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Hauptkonto->KontoNr AS "Konto.KontoNr", 
			Hauptkonto->KontoBezeichnung AS "Konto.Bezeichnung", 
			Hauptkonto->Soll AS "Konto.Soll",
			Mwst->MwstCode AS "Mwst.MwstCode",
			MwstSatz AS "Mwst.MwstSatzFibu",
			SUM(BuchungsbetragSH-MwstbetragSHnachHauptkonto) As BetragExklMwst,
			SUM(MwstbetragSHnachHauptkonto) As MwstBetrag,
			SUM(BuchungsbetragSH) As BetragInklMwst
	FROM DBFibu.Teilbuchung
	WHERE Buchung IN
		(
		SELECT OP->FibuBuchung FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND
					DBFakturierung.Auftragskopf_IsDebitor(ID) = 0 AND
					((:druckAbJnr=1 AND VerbuchungsjournalNr=:jnr) OR
					(:druckAbJnr=0 AND NVL(Verbucht,0) = 0 AND
					Rechnungsnr>=:vonRgNr AND
					Rechnungsnr<=:bisRgNr AND
					Rechnungsdatum>={d :vonRgDatum} AND
					Rechnungsdatum<={d :bisRgDatum} AND
					(StatusAutoVerarbeitung < 4 OR StatusAutoVerarbeitung = 9) AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
					(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
					(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)))
		)
	GROUP BY Hauptkonto->KontoNr, Mwst, MwstSatz
	ORDER BY Hauptkonto->KontoNr, Mwst, MwstSatz]]></SqlQuery>
</Query>

<Query name="ListeSammelrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgDatum:%Date,bisRgDatum:%Date,vonAuftragsstatus:%Integer,bisAuftragsstatus:%Integer,zahladrDebiOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID 
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant=:MandantOid AND 
			NVL(Auftragsstatus,0) >= :vonAuftragsstatus AND
			NVL(Auftragsstatus,0) <= :bisAuftragsstatus AND
			((Lieferdatum is NULL AND Auftragsdatum between {d :vonRgDatum} AND {d :bisRgDatum}) OR
			(Lieferdatum is NOT NULL AND Lieferdatum between {d :vonRgDatum} AND {d :bisRgDatum})) AND
			Zahladresse=:zahladrDebiOid AND
			NVL(StatusAutoVerarbeitung,0) <> DBFakturierung.Konst_StatusAutoLaufAuftragGesperrtG()]]></SqlQuery>
</Query>

<Query name="ListeSammelrechnungLiefer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgDatum:%Date,bisRgDatum:%Date,vonAuftragsstatus:%Integer,bisAuftragsstatus:%Integer,zahladrDebiOid:%String,lieferadrDebiOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID 
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant=:MandantOid AND 
			NVL(Auftragsstatus,0) >= :vonAuftragsstatus AND
			NVL(Auftragsstatus,0) <= :bisAuftragsstatus AND
			((Lieferdatum is NULL AND Auftragsdatum between {d :vonRgDatum} AND {d :bisRgDatum}) OR
			(Lieferdatum is NOT NULL AND Lieferdatum between {d :vonRgDatum} AND{d :bisRgDatum})) AND
			Zahladresse=:zahladrDebiOid and Adresse=:lieferadrDebiOid AND
			NVL(StatusAutoVerarbeitung,0) <> DBFakturierung.Konst_StatusAutoLaufAuftragGesperrtG()]]></SqlQuery>
</Query>

<Query name="ListeSammelrechnungWiederholung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,rgNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID 
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant=:MandantOid AND RechnungsNr = :rgNr</SqlQuery>
</Query>

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

<Query name="ListeSearchResultByOid">
<Type>%SQLQuery</Type>
<FormalSpec>Oid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBFakturierung.Auftragskopf
			WHERE %ID = :Oid
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByAdrNrS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AdressNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			AND Verbucht = 0
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByKurznameS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND { fn LCASE(Adresse->Adresse->Kurzname)} LIKE { fn LCASE(:Kurzname_'%')}
			AND Verbucht = 0
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByAdrNrL">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AdressNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByKurznameL">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Kurzname:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer,
	        Rechnungsdatum, Lieferdatum, Auftragsdatum,
	        Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr,
	        TotalMitGebinde, Verbucht, 
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid AND { fn LCASE(Adresse->Adresse->Kurzname)} LIKE { fn LCASE(:Kurzname_'%')}
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeGeraetNichtNachgefuehrt">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID FROM DBFakturierung.TmpAusgGeraet 
	WHERE RechnungPos->Auftragskopf->ID=:AuftragOid AND 
	Lagerstatus = DBFakturierung.Konst_LagerstatusKeinLager()]]></SqlQuery>
</Query>

<Query name="ListeGeraete">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Geraet->ID AS ID FROM DBFakturierung.TmpAusgGeraet 
	WHERE RechnungPos->Auftragskopf->ID=:AuftragOid]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeSeriendruck">
<Type>%SQLQuery</Type>
<FormalSpec>vonNummer:%Integer,bisNummer:%Integer,vonDatum:%Date,bisDatum:%Date,sachbearbeiterNr:%Integer,auftragsstatus:%Integer,statusAutoVerarbeitung:%Integer,mutierte:%Integer,MandantOid:%String,stufengleich:%Integer,auftragstyp:%String,auftragsstatusRG:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusAU) as AUGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusLS) as LSGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusOF) as OFGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusRG) as RGGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusRZ) as RZGedruckt
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid 
			AND Auftragsdatum BETWEEN {d :vonDatum} AND {d :bisDatum}
			AND AuftragsNr BETWEEN :vonNummer AND :bisNummer
			AND ((:stufengleich = 1 AND NVL(Auftragsstatus,0) < :auftragsstatusRG) OR NVL(Auftragsstatus,0) < :auftragsstatus OR (:mutierte = 1 AND NVL(Auftragsstatus,0) = :auftragsstatus))
			AND (:sachbearbeiterNr = 0 OR NVL(Sachbearbeiter->Nummer,0) = :sachbearbeiterNr)
			AND (:statusAutoVerarbeitung = 0 OR NVL(StatusAutoVerarbeitung,0) = :statusAutoVerarbeitung)
			AND ((NVL(Auftragstyp,"") = NVL(:auftragstyp,"")) OR (:auftragstyp = 'Alle'))
			AND NVL(Verbucht,0) = 0 
			ORDER BY AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeSerienSortName">
<Type>%SQLQuery</Type>
<FormalSpec>vonNummer:%Integer,bisNummer:%Integer,vonDatum:%Date,bisDatum:%Date,sachbearbeiterNr:%Integer,auftragsstatus:%Integer,statusAutoVerarbeitung:%Integer,mutierte:%Integer,MandantOid:%String,stufengleich:%Integer,auftragstyp:%String,auftragsstatusRG:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusAU) as AUGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusLS) as LSGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusOF) as OFGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusRG) as RGGedruckt,  
			DBFakturierung.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusRZ) as RZGedruckt
	 		FROM DBFakturierung.Auftragskopf
			WHERE Mandant = :MandantOid 
			AND Auftragsdatum BETWEEN {d :vonDatum} AND {d :bisDatum}
			AND AuftragsNr BETWEEN :vonNummer AND :bisNummer
			AND ((:stufengleich = 1 AND NVL(Auftragsstatus,0) < :auftragsstatusRG) OR NVL(Auftragsstatus,0) < :auftragsstatus OR (:mutierte = 1 AND NVL(Auftragsstatus,0) = :auftragsstatus))
			AND (:sachbearbeiterNr = 0 OR NVL(Sachbearbeiter->Nummer,0) = :sachbearbeiterNr)
			AND (:statusAutoVerarbeitung = 0 OR NVL(StatusAutoVerarbeitung,0) = :statusAutoVerarbeitung)
			AND ((NVL(Auftragstyp,"") = NVL(:auftragstyp,"")) OR (:auftragstyp = 'Alle'))
			AND NVL(Verbucht,0) = 0 
			ORDER BY ZahlAdresse->Adresse->Name, ZahlAdresse->Adresse->VornameZusatz1]]></SqlQuery>
</Query>

<Query name="ListeVerbuchungProjekt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,bisRgDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
			Rechnungsnr,
			Rechnungsdatum,
			Zahladresse->Adresse->Adressnummer As ZahladressNr,
			BetragEWExklMwst,
			Projekt,
			Buchungscode
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			NVL(ProjektVerbucht,0) = 0 AND
			NVL(Verbucht,0) = 1 AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum<={d :bisRgDatum} AND 
			NOT Projekt IS NULL
	ORDER BY Rechnungsnr, 
			Auftragsnr]]></SqlQuery>
</Query>

<Query name="ListeDruckVerbuchungProjekt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,jnr:%Integer,vonRgNr:%Integer,bisRgNr:%Integer,bisRgDatum:%Date,druckAbJnr:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
			Auftragsnr,
			Auftragsdatum,
			Rechnungsnr,
			Rechnungsdatum,
			Buchungscode,
			Zahladresse->Adresse->Adressnummer As "Zahladresse.Adresse.Adressnummer",
			Zahladresse->Adresse->Kurzname As "Zahladresse.Adresse.Kurzname",
			Zahladresse->Adresse->Name As "Zahladresse.Adresse.Name",
			Zahladresse->Adresse->Plz As "Zahladresse.Adresse.Plz",
			Zahladresse->Adresse->Ort As "Zahladresse.Adresse.Ort",
			BetragEWExklMwst,
			Projekt AS "Projekt.ID",
			Projekt->Hauptnummer AS "Projekt.Hauptnummer",
			Projekt->Teilnummer AS "Projekt.Teilnummer",
			Projekt->Kurzbezeichnung AS "Projekt.Kurzbezeichnung"
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			((:druckAbJnr=1 AND ProjektVerbuchungsjnr=:jnr) OR
			(:druckAbJnr=0 AND NVL(Verbucht,0) = 1 AND
			NVL(ProjektVerbucht,0) = 0 AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum<={d :bisRgDatum} AND 
			NOT Projekt IS NULL))
	ORDER BY Rechnungsnr, 
			Auftragsnr]]></SqlQuery>
</Query>

<Query name="ListeDruckVbProjektRekap">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,jnr:%Integer,vonRgNr:%Integer,bisRgNr:%Integer,bisRgDatum:%Date,druckAbJnr:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT SUM(BetragEWExklMwst) AS "ProjektBetragEWExklMwst",
			Projekt AS "Projekt.ID",
			Projekt->Hauptnummer AS "Projekt.Hauptnummer",
			Projekt->Teilnummer AS "Projekt.Teilnummer",
			Projekt->Kurzbezeichnung AS "Projekt.Kurzbezeichnung"
	FROM DBFakturierung.Auftragskopf 
	WHERE Mandant = :MandantOid AND
			((:druckAbJnr=1 AND ProjektVerbuchungsjnr=:jnr) OR
			(:druckAbJnr=0 AND NVL(Verbucht,0) = 1 AND
			NVL(ProjektVerbucht,0) = 0 AND
			Rechnungsnr>=:vonRgNr AND
			Rechnungsnr<=:bisRgNr AND
			Rechnungsdatum<={d :bisRgDatum} AND 
			NOT Projekt IS NULL))
	GROUP BY Projekt
	ORDER BY Projekt->Hauptnummer, 
			Projekt->Teilnummer]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeNachBarkonto">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,FibukontoOid:%String,bisDatum:%Date,BelegOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
		Auftragsnr,
		Rechnungsnr,
		Rechnungsdatum,
		Name,
		Plz,
		Ort,
		0 AS ManuellePosition,
		'' AS BelegNr,
		'' AS BelegText,
		0 AS Zugang,
		TotalMitGebinde AS Betrag
	FROM DBFakturierung.Auftragskopf
	WHERE Mandant=:MandantOid AND 
		Barkonto=:FibukontoOid AND 
		Rechnungsdatum<={d :bisDatum} AND 
		DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1 AND
		(Kassenbeleg IS NULL OR Kassenbeleg <= 0)
		
	UNION 
	SELECT 0 AS ID,
		0 AS Auftragsnr,
		0 AS Rechnungsnr,
		0 AS Rechnungsdatum,
		'' AS Name,
		'' AS Plz,
		'' AS Ort,
		1 AS ManuellePosition,
		BelegNr,
		BelegText,
		Zugang,
		Betrag
	FROM DBFakturierung.KassenbelegPosition
	WHERE Kassenbeleg = :BelegOid
	
	ORDER BY Rechnungsdatum, BelegNr]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeNachKassenbeleg">
<Type>%SQLQuery</Type>
<FormalSpec>KassenbelegOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID,
		Auftragsnr,
		Rechnungsnr,
		Rechnungsdatum,
		Name,
		Plz,
		Ort,
		0 AS ManuellePosition,
		'' AS BelegNr,
		'' AS BelegText,
		0 AS Zugang,
		TotalMitGebinde AS Betrag
	FROM DBFakturierung.Auftragskopf
	WHERE Kassenbeleg=:KassenbelegOid
	
	UNION 
	SELECT 0 AS ID,
		0 AS Auftragsnr,
		0 AS Rechnungsnr,
		0 AS Rechnungsdatum,
		'' AS Name,
		'' AS Plz,
		'' AS Ort,
		1 AS ManuellePosition,
		BelegNr,
		BelegText,
		Zugang,
		Betrag
	FROM DBFakturierung.KassenbelegPosition
	WHERE Kassenbeleg = :KassenbelegOid
	
	ORDER BY Rechnungsdatum, BelegNr</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.AuftragspositionAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32768.938499</TimeCreated>

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

<Query name="ListeByAuftragDruck">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,Lang:%String,IsOrtho:%Boolean,Selbstbehalt:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBFakturierung_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode,
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		Artikel->DezFormatMenge As "Artikel.FormatMenge", 
		Artikel->DezFormatPreis As "Artikel.FormatPreis",
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikelcode, 
		BestellNr, 
		PositionsNr, 
		BestellteMenge, 
		CASE WHEN (:Selbstbehalt=1 AND (Artikelcode = DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode = DBFakturierung.Konst_AcOrthoSelbstbehaltProzent())) THEN
			(-1) * BetragExklMwst
		ELSE 
			BetragExklMwst
		END AS BetragExklMwst, 
		BetragExklMwstFW, 
		BetragInklMwstFW, 
		BetragInklMwst, 
		DetailText,
		DetailText2, 
		GewichtBrutto, 
		GewichtNetto,
		GewichtTara, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, Auftragskopf->Mandant, :Lang) As "Herkunft.Text",
		Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
		Lagerstatus, 
		Lieferant->Adressnummer As "Lieferant.AdressNr", 
		Lieferant->Name As "Lieferant.Name",
		Lieferdatum, 
		Menge,  
		DBFakturierung_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		MwstBetrag, 
		MwstBetragFW, 
		MwstSatz, 
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
		ZaehlerNr,
		StandAlt,
		StandNeu,
		Tage,
		CASE WHEN Artikelcode = DBFakturierung.Konst_AcSeitenumbruch() THEN 1 ELSE 0 END AS Seitenumbruch,
	    Qualitaet->PositionsNr As "Qualitaet.Nr",
		DBFakturierung_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) As "Qualitaet.Text"
		FROM DBFakturierung.Auftragspos 
	    WHERE Auftragskopf = :Auftrag AND
	    	(:IsOrtho=0 OR 
	    		(:IsOrtho=1 AND 
	    			((:Selbstbehalt=0) OR
	    			 (:Selbstbehalt=1 AND (
	    			 	Artikelcode = DBFakturierung.Konst_AcOrthoSelbstbehalt() OR
	    			 	Artikelcode = DBFakturierung.Konst_AcOrthoSelbstbehaltProzent() OR
	    			 	Artikelcode = DBFakturierung.Konst_AcOrthoVS()
	    			 	)
	    			 ))
	    		)
	    	)
	    ORDER BY Auftragspos.PositionsNr, ZusatztextID]]></SqlQuery>
</Query>

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

<Query name="ListeGeraeteSerienNrLeer">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,ArtikelCode:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr FROM DBFakturierung.Auftragspos a
	WHERE Auftragskopf = :Auftrag AND Artikel->Artikelcode=:ArtikelCode
	AND NVL((SELECT COUNT(ID) FROM DBFakturierung.TmpAusgGeraet WHERE RechnungPos = a.ID),0) = 0
	ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeVerbFibu">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
			FibuKonto,
			Mwst,
			MwstSatz,
			SUM(BetragExklMwst) As BetragExklMwst,
			SUM(MwstBetrag) As MwstBetrag,
			SUM(BetragExklMwstFW) As BetragExklMwstFW,
			SUM(MwstBetragFW) As MwstBetragFW,
			Lieferdatum
	FROM (			
			SELECT 
					CASE
						WHEN (Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde() OR Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG()) THEN
							Artikel->FibuKontoVK
						ELSE
							Artikel->FibuKontoEK
					END As FibuKonto,
					Mwst, 
					MwstSatz, 
					Nettobetrag2ExklMwstEW As BetragExklMwst, 
					Nettobetrag2MwstbetragEW As MwstBetrag,
					Nettobetrag2ExklMwstFW As BetragExklMwstFW, 
					Nettobetrag2MwstbetragFW As MwstBetragFW,
					Auftragskopf->Lieferdatum As Lieferdatum  
			FROM DBFakturierung.Auftragspos 
			WHERE Auftragskopf->RechnungsNr=:RgNr AND 
					Auftragskopf->Mandant=:MandantOid AND
					NVL(Artikelcode, 0) <> 8 AND 
					(NVL(Artikelcode, 0) < 10 OR 
						NVL(Artikelcode, 0) = 21 OR 
						NVL(Artikelcode, 0) = 23 OR 
						(NVL(Artikelcode, 0) >= 30 AND 
						NVL(Artikelcode, 0) <= 33))
			)
	GROUP BY FibuKonto, 
			Mwst, 
			MwstSatz]]></SqlQuery>
</Query>

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

<Query name="ListeBySammelrechKumuliertDruck">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String,Lang:%String,firstVorname:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
		{fn CONVERT(DBFakturierung.Auftragskopf_GetBetragEWExklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragEWExklMwst", 
		{fn CONVERT(DBFakturierung.Auftragskopf_GetBetragEWInklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)}  AS "Auftragskopf.BetragEWInklMwst",
		{fn CONVERT(DBFakturierung.Auftragskopf_GetBetragExklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWExklMwst",
		{fn CONVERT(DBFakturierung.Auftragskopf_GetBetragInklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWInklMwst",
		{fn CONVERT(DBFakturierung.Auftragskopf_GetBetragMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwstFW",
		{fn CONVERT(DBFakturierung.Auftragskopf_GetBetragMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwst",
		
		Auftragskopf->Adresse 			AS "Auftragskopf.LAdresse.Adresse", 
		Auftragskopf->Anrede 			AS "Auftragskopf.LAdresse.Anrede", 
		Auftragskopf->Name 				AS "Auftragskopf.LAdresse.Name", 
		Auftragskopf->Adresszeile1		AS "Auftragskopf.LAdresse.Adresszeile1", 
		Auftragskopf->Adresszeile2 		AS "Auftragskopf.LAdresse.Adresszeile2", 
		Auftragskopf->Adresszeile3 		AS "Auftragskopf.LAdresse.Adresszeile3", 
		Auftragskopf->Plz				AS "Auftragskopf.LAdresse.Plz", 
		Auftragskopf->PlzZusatz 		AS "Auftragskopf.LAdresse.PlzZusatz", 
		Auftragskopf->Ort 				AS "Auftragskopf.LAdresse.Ort", 
		Auftragskopf->AuftragValidiert  AS "Auftragskopf.AuftragValidiert",
		Auftragskopf->AuftragsNr  		AS "Auftragskopf.AuftragsNr",
		Auftragskopf->Auftragsdatum  	AS "Auftragskopf.Auftragsdatum",
		Auftragskopf->Auftragsstatus  	AS "Auftragskopf.Auftragsstatus",
		Auftragskopf->BestellNr  		AS "Auftragskopf.BestellNr",
		Auftragskopf->Lieferdatum  		AS "Auftragskopf.Lieferdatum",
		Auftragskopf->LieferscheinNr  	AS "Auftragskopf.LieferscheinNr",
		Auftragskopf->RechnungsNr  		AS "Auftragskopf.RechnungsNr",
		Auftragskopf->Rechnungsdatum 	AS "Auftragskopf.Rechnungsdatum",
		Auftragskopf->Warenaufwand 		AS "Auftragskopf.Warenaufwand",
		Auftragskopf->Zahladresse->Adresse->Adressnummer 	AS "Auftragskopf.RAdresse.Adressnummer", 
		Auftragskopf->Zahladresse->Adresse->Anrede 			AS "Auftragskopf.RAdresse.Anrede",
		DBAdressen.Adresse_GetName(Auftragskopf->Zahladresse->Adresse->Adresscode, Auftragskopf->Zahladresse->Adresse->Name, Auftragskopf->Zahladresse->Adresse->VornameZusatz1, :firstVorname) 
															AS "Auftragskopf.RAdresse.Name", 
		DBAdressen.Adresse_GetZusatz1(Auftragskopf->Zahladresse->Adresse->Adresscode, Auftragskopf->Zahladresse->Adresse->VornameZusatz1) 
															AS "Auftragskopf.RAdresse.Adresszeile1", 
		Auftragskopf->Zahladresse->Adresse->Zusatz2	 		AS "Auftragskopf.RAdresse.Adresszeile2", 
		Auftragskopf->Zahladresse->Adresse->Strasse	 		AS "Auftragskopf.RAdresse.Adresszeile3", 
		Auftragskopf->Zahladresse->Adresse->Plz 			AS "Auftragskopf.RAdresse.Plz", 
		Auftragskopf->Zahladresse->Adresse->PlzInklZusatz	AS "Auftragskopf.RAdresse.PlzZusatz", 
		Auftragskopf->Zahladresse->Adresse->Ort 			AS "Auftragskopf.RAdresse.Ort", 
		Auftragskopf->Zahladresse->Adresse->Adresscode		AS "Auftragskopf.RAdresse.Adresscode",
		CASE
			WHEN 	Auftragskopf->Zahladresse->Adresse->Anrede LIKE Auftragskopf->Anrede AND
					DBAdressen.Adresse_GetName(Auftragskopf->Zahladresse->Adresse->Adresscode, Auftragskopf->Zahladresse->Adresse->Name, Auftragskopf->Zahladresse->Adresse->VornameZusatz1, :firstVorname) LIKE Auftragskopf->Name AND
					NVL(DBAdressen.Adresse_GetZusatz1(Auftragskopf->Zahladresse->Adresse->Adresscode, Auftragskopf->Zahladresse->Adresse->VornameZusatz1),'') LIKE Auftragskopf->Adresszeile1 AND
					Auftragskopf->Zahladresse->Adresse->Zusatz2 LIKE Auftragskopf->Adresszeile2 AND
					Auftragskopf->Zahladresse->Adresse->Strasse LIKE Auftragskopf->Adresszeile3 AND
					Auftragskopf->Zahladresse->Adresse->Plz LIKE Auftragskopf->Plz AND
					Auftragskopf->Zahladresse->Adresse->Ort LIKE Auftragskopf->Ort 
				THEN
					CONVERT(BIT,1)
			ELSE
					CONVERT(BIT,0)
		END AS "Auftragskopf.AdressenEqual"
	FROM DBFakturierung.Auftragspos 
	WHERE Auftragskopf->RechnungsNr = :RgNr AND Auftragskopf->Mandant=:MandantOid 
	GROUP BY  Auftragskopf->AuftragsNr
	ORDER BY Auftragskopf->AuftragsNr]]></SqlQuery>
</Query>

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

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

<Query name="ListeReservationen">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
			Auftragskopf->AuftragsNr As AuftragsNr, 
			Auftragskopf->Lieferdatum As Lieferdatum, 
			Auftragskopf->Adresse->Adresse->Kurzname As Kurzname, 
			Auftragskopf->Name As Name, 
			Auftragskopf->Plz As Plz, 
			Auftragskopf->Ort As Ort, 
			Menge,
			Artikel->DezFormatMenge As DezFormatMenge
	FROM DBFakturierung.Auftragspos
	WHERE Artikel=:ArtikelOid 
	AND	NVL(Lagerstatus,0)=DBFakturierung.Konst_LagerstatusReserviert()]]></SqlQuery>
</Query>

<Query name="ListeUmsatz">
<Type>%SQLQuery</Type>
<FormalSpec>Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Artikel->ID As ArtikelOid, 
			SUM(Menge) As SummeMenge, 
			SUM(BetragExklMwst) As SummeBetragExkl,
			SUM(GewichtNetto) As SummeNettogewicht,
			DATEPART('YYYY', Auftragskopf->Rechnungsdatum) As RGJahr
	FROM DBFakturierung.Auftragspos where Auftragskopf->Verbucht = 1 AND Auftragskopf->Mandant = :Mandant
	GROUP BY Artikel, DATEPART('YYYY', Auftragskopf->Rechnungsdatum)]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.GeraetAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61576,53192.774263</TimeCreated>

<Query name="ListNachArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,Archiv:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, EANCode, SerienNr, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, 
	DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet
	WHERE (NVL(Ausgeliefert,0) = 0 OR :Archiv = 1) AND
	Artikel = :ArtOid ORDER BY Text1, Kaufdatum desc]]></SqlQuery>
</Query>

<Query name="ListNachArtikelByArt">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,GeraeteArtOid:%String,Archiv:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, EANCode, SerienNr, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr,
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet
	WHERE (NVL(Ausgeliefert,0) = 0 OR :Archiv = 1) AND
	Artikel = :ArtOid AND GeraeteArt = :GeraeteArtOid ORDER BY Text1, Kaufdatum desc]]></SqlQuery>
</Query>

<Query name="ListNachArtikelVerfuegbar">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,Archiv:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, EANCode, SerienNr, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort,
	Lieferant, DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr,
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	DBFakturierung_SD.GeraeteArt_GetTextClass(GeraeteArt->ID, :MandantOid, :Lang) as GeraeteArtText, 
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet
	WHERE (NVL(Ausgeliefert,0) = 0 OR :Archiv = 1) AND
	Artikel = :ArtOid AND GeraeteArt->Verfuegbar = 1 ORDER BY Text1, Kaufdatum desc]]></SqlQuery>
</Query>

<Query name="ListNachBezeichnung">
<Type>%SQLQuery</Type>
<FormalSpec>Bezeichnung:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, EANCode, SerienNr, 
	DBFakturierung_SD.GeraeteArt_GetTextClass(GeraeteArt->ID, :MandantOid, :Lang) as GeraeteArtText, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeOidClass(%ID) As Kunde, Ausgeliefert, DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet
	WHERE LOWER(DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang)) LIKE LOWER(:Bezeichnung) OR
	LOWER(DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang)) LIKE LOWER(:Bezeichnung)
	 ORDER BY Text1, Kaufdatum desc]]></SqlQuery>
</Query>

<Query name="ListNachArtikelOhneAusgang">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, EANCode, SerienNr,
	DBFakturierung_SD.GeraeteArt_GetTextClass(GeraeteArt->ID, :MandantOid, :Lang) as GeraeteArtText, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, 
	DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet
	WHERE Artikel = :ArtOid	
	ORDER BY EANCode]]></SqlQuery>
</Query>

<Query name="ListNachArtikelMitAusgang">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,KundeOid,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Geraet->ID AS ID, Geraet->Artikel, Geraet->EANCode, Geraet->SerienNr,
	DBFakturierung_SD.GeraeteArt_GetTextClass(Geraet->GeraeteArt->ID, :MandantOid, :Lang) as GeraeteArtText, 
	DBFakturierung_SD.Lagerort_GetTextClass(Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Auftrag->Kunde As Kunde, Geraet->Ausgeliefert, 
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->GeraeteArt->Verfuegbar As ArtVerfuegbar, ID AS ItemID
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Geraet->Artikel = :ArtOid AND Auftrag->Kunde = :KundeOid AND RechnungPos is null	
	ORDER BY EANCode]]></SqlQuery>
</Query>

<Query name="ListDruck">
<Type>%SQLQuery</Type>
<FormalSpec>GeraeteVerfuegbar:%Boolean,GeraeteArt:%Boolean,GeraeteArtOid:%String,ArtVonNr:%String,ArtBisNr:%String,NurMitBestand:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel->ArtikelNr AS ArtikelNr, EANCode, SerienNr, Anzahl,
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeOidClass(%ID) As Kunde, Ausgeliefert, DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar, EKP, VP, MargeProzent, NVL(VP,0)* NVL(Anzahl,0) AS Betrag,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) As Artikeltext, 
	DBFakturierung.Artikel_GetArtikeltext2Class(Artikel->ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Geraet
	WHERE Artikel->ArtikelNr <= :ArtBisNr and Artikel->ArtikelNr >= :ArtVonNr AND
	(GeraeteArt = :GeraeteArtOid or :GeraeteArt = 0) AND (GeraeteArt->Verfuegbar = 1 or :GeraeteVerfuegbar = 0) AND
	Artikel->Mandant = :MandantOid AND (:NurMitBestand = 0 OR Anzahl > 0)
	ORDER BY Artikel->ArtikelNr, Kaufdatum ASC]]></SqlQuery>
</Query>

<Query name="ListDruckLager">
<Type>%SQLQuery</Type>
<FormalSpec>GeraeteVerfuegbar:%Boolean,GeraeteArt:%Boolean,GeraeteArtOid:%String,ArtVonNr:%String,ArtBisNr:%String,NurMitBestand:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel->ArtikelNr AS ArtikelNr, EANCode, SerienNr, Anzahl,
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lagerort->PositionsNr AS LagerortNr,
	Lieferant, DBFakturierung.Geraet_GetKundeOidClass(%ID) As Kunde, Ausgeliefert, DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar, EKP, VP, MargeProzent, NVL(VP,0)* NVL(Anzahl,0) AS Betrag,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) As Artikeltext, 
	DBFakturierung.Artikel_GetArtikeltext2Class(Artikel->ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Geraet
	WHERE Artikel->ArtikelNr <= :ArtBisNr and Artikel->ArtikelNr >= :ArtVonNr AND
	(GeraeteArt = :GeraeteArtOid or :GeraeteArt = 0) AND (GeraeteArt->Verfuegbar = 1 or :GeraeteVerfuegbar = 0) AND
	Artikel->Mandant = :MandantOid AND (:NurMitBestand = 0 OR Anzahl > 0)
	ORDER BY Lagerort->PositionsNr, Artikel->ArtikelNr, Kaufdatum ASC]]></SqlQuery>
</Query>

<Query name="ListNachArtikelOhneAusgVerf">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, EANCode, SerienNr,
	DBFakturierung_SD.GeraeteArt_GetTextClass(GeraeteArt->ID, :MandantOid, :Lang) as GeraeteArtText, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, 
	DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet AS G
	WHERE Artikel = :ArtOid	AND GeraeteArt->Verfuegbar = 1 
	AND ID NOT IN (SELECT Geraet FROM DBFakturierung.TmpAusgGeraet WHERE Geraet = G.ID AND (Auftrag IS NOT NULL OR RechnungPos IS NOT NULL))
	ORDER BY EANCode]]></SqlQuery>
</Query>

<Query name="ListeLastTenKaufdatum">
<Type>%SQLQuery</Type>
<FormalSpec>ArtOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT TOP 10 %ID, Artikel, EANCode, SerienNr,
	DBFakturierung_SD.GeraeteArt_GetTextClass(GeraeteArt->ID, :MandantOid, :Lang) as GeraeteArtText, 
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant, DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, 
	DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar
	FROM DBFakturierung.Geraet
	WHERE Artikel = :ArtOid	AND NVL(GeraeteArt->Verfuegbar,0) = 0
	ORDER BY Kaufdatum]]></SqlQuery>
</Query>

<Query name="ListeKontrolle">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT  %ID, Artikel->ArtikelNr AS ArtikelNr, EANCode, SerienNr, Anzahl,
	DBFakturierung_SD.Lagerort_GetTextClass(Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Lieferant,  DBFakturierung.Geraet_GetKundeListView(%ID) As Kunde, Ausgeliefert, 
	DBFakturierung.Geraet_GetAuftragNrClass(%ID) as TmpAusgangNr, 
	DBFakturierung.Geraet_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(%ID, :MandantOid, :Lang) As Text2,
	GeraeteArt->Verfuegbar As ArtVerfuegbar, EKP, VP, MargeProzent, 
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) As Artikeltext, 
	DBFakturierung.Artikel_GetArtikeltext2Class(Artikel->ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBFakturierung.Geraet
	WHERE Artikel->Artikelcode <> 31 AND Artikel->Artikelcode <> 30
	ORDER BY Artikel->ArtikelNr, EANCode]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.KGPreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32820.175886</TimeCreated>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			Artikel,
			Abzugstyp->PositionsNr AS "Abzugstyp.Nr", 
	       	DBFakturierung_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "Abzugstyp.Text", 
	       	AnzahlJeGebinde,
	       	Barcode,
	       	DetailPreis,
	       	KundenSpezArtNr,
	 		ArtikelAktiv, 
			Herkunft->PositionsNr As "Herkunft.Nr",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	MargeInProzent,
	       	Lieferant->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant->Name As "Lieferant1.Name",
			Menge->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBFakturierung_SD.Mengencode_GetTextClass(Menge, :MandantOid, :Lang) AS "Mengeneinheit.Text",
	       	Gruppe->Code As "Kundengruppe.Code",
	       	DBAdressen_SD.Kundengruppe_GetKundengruppentextClass(Gruppe, :MandantOid, :Lang) AS "Kundengruppe.Text"
	FROM DBFakturierung.KGPreis
	WHERE Artikel->Mandant = :MandantOid
	ORDER BY Gruppe->Code]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.KassenbelegAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61922,40467.716398</TimeCreated>

<Query name="ListeKassenbelege">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,FibuKontoOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID,
			Nummer, 
			Datum,
			Bareinlage,
			Barentnahme,
			Saldo
	FROM DBFakturierung.Kassenbeleg
	WHERE Mandant = :MandantOid AND Fibukonto = :FibuKontoOid</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.KassenbelegPosAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>62033,42398.543129</TimeCreated>

<Query name="ListeByKassenbeleg">
<Type>%SQLQuery</Type>
<FormalSpec>Beleg:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Zugang, BelegNr, BelegText, Betrag
	FROM DBFakturierung.KassenbelegPosition WHERE Kassenbeleg = :Beleg</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.KontraktAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61704,57079.383277</TimeCreated>

<Query name="ListeNachAdresse">
<Type>%SQLQuery</Type>
<FormalSpec>AdresseOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[                SELECT %ID, Artikel->ArtikelNr as ArtikelNr, Artikel->Kurztext as Kurztext, VerkaufPreis, VerkaufMenge,
                VerkaufMengeGeliefert, EinkaufPreis, EinkaufMenge, EinkaufMengeBezogen
                FROM DBFakturierung.Kontrakt
                WHERE Kunde = :AdresseOid ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeDruckArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonArtikelNr:%String,BisArtikelNr:%String,VonAdressNr:%Integer,BisAdressNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[                SELECT ID, Artikel->ArtikelNr, Artikel->Kurztext as Kurztext, VerkaufPreis, VerkaufMenge, VerkaufMengeGeliefert,
                EinkaufPreis, EinkaufMenge, EinkaufMengeBezogen, EinkaufBisDatum, EinkaufVonDatum,
                VerkaufBisDatum, VerkaufVonDatum, 
                Kunde->ID as AdressOid, Kunde->Name as AdressName, Kunde->Plz as AdressPlz, Kunde->Ort as AdressOrt,
                DBFakturierung.Artikel_GetArtikeltextClass(Artikel, :MandantOid, :Lang) As Artikeltext, 
	       		DBFakturierung.Artikel_GetArtikeltext2Class(Artikel, :MandantOid, :Lang) As Artikeltext2 
	       		FROM DBFakturierung.Kontrakt
                WHERE Artikel->Mandant = :MandantOid AND 
                Artikel->ArtikelNr <= :BisArtikelNr AND Artikel->ArtikelNr >= :VonArtikelNr AND 
                Kunde->Adressnummer <= :BisAdressNr AND Kunde->Adressnummer >= :VonAdressNr
                ORDER BY Kunde->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeDruckArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonArtGrpNr:%Integer,BisArtGrpNr:%Integer,VonAdressNr:%Integer,BisAdressNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[                SELECT ID, Artikel->ArtikelNr, Artikel->Kurztext as Kurztext, VerkaufPreis, VerkaufMenge, VerkaufMengeGeliefert,
                EinkaufPreis, EinkaufMenge, EinkaufMengeBezogen, EinkaufBisDatum, EinkaufVonDatum,
                VerkaufBisDatum, VerkaufVonDatum, 
                Kunde->ID as AdressOid, Kunde->Name as AdressName, Kunde->Plz as AdressPlz, Kunde->Ort as AdressOrt,
                DBFakturierung.Artikel_GetArtikeltextClass(Artikel, :MandantOid, :Lang) As Artikeltext, 
	       		DBFakturierung.Artikel_GetArtikeltext2Class(Artikel, :MandantOid, :Lang) As Artikeltext2
	       		FROM DBFakturierung.Kontrakt
                WHERE Artikel->Mandant = :MandantOid AND 
                Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrpNr  AND Artikel->Artikelgruppe->ArtikelgruppenNr >= :VonArtGrpNr AND
                Kunde->Adressnummer <= :BisAdressNr AND Kunde->Adressnummer >= :VonAdressNr
                ORDER BY Kunde->Adressnummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.KundenPreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32834.897563</TimeCreated>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			Artikel,
			Abzugstyp->PositionsNr AS "Abzugstyp.Nr", 
	       	DBFakturierung_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "Abzugstyp.Text", 
	       	AnzahlJeGebinde,
	       	Barcode,
	       	DetailPreis,
	       	KundenSpezArtNr,
	 		ArtikelAktiv, 
			Herkunft->PositionsNr As "Herkunft.Nr",
			DBFakturierung_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	MargeInProzent,
	       	Lieferant->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant->Name As "Lieferant1.Name",
			Menge->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBFakturierung_SD.Mengencode_GetTextClass(Menge, :MandantOid, :Lang) AS "Mengeneinheit.Text",
	       	Kunde->Adresse->Adressnummer As "Kunde.AdressNr",
	       	Kunde->Adresse->Kurzname As "Kunde.Kurzname",
	       	Kunde->Adresse->Name As "Kunde.Name",
	       	Kunde->Adresse->Plz As "Kunde.Plz",
	       	Kunde->Adresse->Ort As "Kunde.Ort"
	FROM DBFakturierung.KundenPreis
	WHERE Artikel->Mandant = :MandantOid
	ORDER BY Kunde->Adresse->Adressnummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.LagerbewAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61963,58131.093331</TimeCreated>

<Query name="ListebyArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Buchungsdatum, Belegtext, KundeLieferant->Name As Lieferant,
    DBFakturierung_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitText,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel, Artikel->Mandant, :Lang) As Artikeltext, 
	Menge, BetragEW, JournalNr, Buchungscode
    FROM DBFakturierung.Lagerbew
    WHERE Artikel = :ArtikelOid ORDER BY Buchungsdatum ASC, JournalNr ASC]]></SqlQuery>
</Query>

<Query name="ListeByArtikelLimited">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT TOP 20 %ID, Buchungsdatum, Belegtext, KundeLieferant->Name As Lieferant,
    Menge, BetragEW, JournalNr, Buchungscode
    FROM DBFakturierung.Lagerbew
    WHERE Artikel = :ArtikelOid ORDER BY Buchungsdatum ASC, JournalNr ASC]]></SqlQuery>
</Query>

<Query name="ListeByJournal">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Buchungsdatum, Belegtext, KundeLieferant->Name As Lieferant,
    DBFakturierung_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitText,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel, Artikel->Mandant, :Lang) As Artikeltext, 
	Menge, BetragEW, JournalNr, Buchungscode
    FROM DBFakturierung.Lagerbew
    WHERE Artikel->Mandant = :MandantOid ORDER BY JournalNr ASC]]></SqlQuery>
</Query>

<Query name="ListeDruckNachArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>VonArtikelNr:%String,BisArtikelNr:%String,VonDatum:%Date,BisDatum:%Date,BewegArt:%Integer,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Buchungsdatum, Lieferdatum, Belegtext, KundeLieferant->Name As Lieferant,
    DBFakturierung_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitText,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel, Artikel->Mandant, :Lang) As Artikeltext, 
	Artikel->ArtikelNr,	Menge, BetragEW, JournalNr, Buchungscode, BelegNr
    FROM DBFakturierung.Lagerbew
    WHERE Artikel->ArtikelNr BETWEEN :VonArtikelNr AND :BisArtikelNr
	AND Buchungsdatum BETWEEN :VonDatum AND :BisDatum 
	AND ((:BewegArt = DBFakturierung.Konst_LagerBuchungscodeAlle()) OR (Buchungscode = :BewegArt))
	ORDER BY Artikel->ArtikelNr, Buchungsdatum, JournalNr]]></SqlQuery>
</Query>

<Query name="ListeDruckNachJournal">
<Type>%SQLQuery</Type>
<FormalSpec>VonDatum:%Date,BisDatum:%Date,BewegArt:%Integer,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Buchungsdatum, Lieferdatum, Belegtext, KundeLieferant->Name As Lieferant,
    DBFakturierung_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitText,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel, Artikel->Mandant, :Lang) As Artikeltext, 
	Artikel->ArtikelNr,	Menge, BetragEW, JournalNr, Buchungscode, BelegNr
    FROM DBFakturierung.Lagerbew
    WHERE Buchungsdatum BETWEEN :VonDatum AND :BisDatum 
    AND ((:BewegArt = DBFakturierung.Konst_LagerBuchungscodeAlle()) OR (Buchungscode = :BewegArt))
	ORDER BY JournalNr ASC]]></SqlQuery>
</Query>

<Query name="ListeOrthoLetzteBewegungen">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
			Buchungsdatum,
			Artikel->ArtikelNr As ArtikelNr, 
			DBFakturierung.Artikel_GetArtikeltextClass(Artikel,:MandantOid,:Lang) As Artikeltext, 
			Schuhgroesse->Nr As GroesseNr, 
			DBSpezial_Ortho.Artikel_GetEanLaufnrByFaktArtikelOid(Artikel) As EanLaufnummer
    	FROM DBFakturierung.Lagerbew 
		WHERE Buchungscode=2 AND 
				Artikel->Artikelcode=40
				AND Buchungsdatum BETWEEN :VonDatum AND :BisDatum
    	ORDER BY Buchungsdatum Desc, JournalNr Desc]]></SqlQuery>
</Query>

<Query name="ListeDruckNachKundeArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>VonArtikelNr:%String,BisArtikelNr:%String,AdresseVon:%Integer,AdresseBis:%Integer,VonDatum:%Date,BisDatum:%Date,BewegArt:%Integer,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Buchungsdatum, Lieferdatum, Belegtext, KundeLieferant,
    KundeLieferant AS KundeAdresse, KundeLieferant->Adressnummer AS KundenLieferantNr,
    DBFakturierung_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitText,
	DBFakturierung.Artikel_GetArtikeltextClass(Artikel, Artikel->Mandant, :Lang) As Artikeltext, 
	Artikel->ArtikelNr,	Menge, BetragEW, PreisEW, JournalNr, Buchungscode, BelegNr
    FROM DBFakturierung.Lagerbew
    WHERE Artikel->ArtikelNr BETWEEN :VonArtikelNr AND :BisArtikelNr
	AND KundeLieferant->Adressnummer BETWEEN :AdresseVon AND :AdresseBis
	AND Buchungsdatum BETWEEN :VonDatum AND :BisDatum 
	AND ((:BewegArt = DBFakturierung.Konst_LagerBuchungscodeAlle()) OR (Buchungscode = :BewegArt))
	ORDER BY KundeLieferant->Adressnummer, Buchungsdatum, Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeUmsatzVerkaufOrtho">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT	%ID,
			Artikel->ArtikelNr As ArtikelNr,
			Artikel As FaktArtikelID,
			DBFakturierung.Artikel_GetArtikeltextClass(Artikel,:MandantOid,:Lang) As Artikeltext,
			Schuhgroesse->Schuhgroessentyp As Schuhgroessentyp,
			Schuhgroesse As GroesseID,
			SUM(Menge) As Menge,
			SUM(BetragEW) As Betrag
	FROM DBFakturierung.Lagerbew
	WHERE Buchungscode = 2 AND Artikel->Artikelcode = 40
    GROUP BY Artikel, Schuhgroesse
    ORDER BY Schuhgroesse->Nr]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.PreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32854.551735</TimeCreated>

<Query name="GetPreiseIdsByArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID FROM DBFakturierung.Preis
	WHERE Artikel = :ArtikelOid</SqlQuery>
</Query>

<Query name="ListeKundenPreis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Kunde->Adresse As Adresse, Artikel, ArtikelAktiv, EngrosPreis, DetailPreis, AnbruchsPreis, 
	EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
	MinMarge, MaxMarge, MargeInProzent,
	RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
	Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
	FROM DBFakturierung.KundenPreis
	WHERE Artikel->Mandant = :MandantOid AND Kunde->Adresse = :KundenOid
	ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeKGPreis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GruppenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gruppe, Artikel, ArtikelAktiv, EngrosPreis, DetailPreis, AnbruchsPreis, 
	EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
	MinMarge, MaxMarge, MargeInProzent,
	RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
	Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
	FROM DBFakturierung.KGPreis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe = :GruppenOid
	ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeKundenPreisKText">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Kunde->Adresse As Adresse, Artikel, ArtikelAktiv, EngrosPreis, DetailPreis, AnbruchsPreis, 
	EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
	MinMarge, MaxMarge, MargeInProzent,
	RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
	Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
	FROM DBFakturierung.KundenPreis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse = :KundenOid
	ORDER BY Artikel->Kurztext]]></SqlQuery>
</Query>

<Query name="ListeKGPreisKText">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GruppenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gruppe, Artikel, ArtikelAktiv, EngrosPreis, DetailPreis, AnbruchsPreis, 
	EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
	MinMarge, MaxMarge, MargeInProzent,
	RabattProzent, AnzahlJeGebinde,Artikel->Artikelgruppe As ArtikelgruppeOid,
	Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
	DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
	FROM DBFakturierung.KGPreis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe = :GruppenOid
	ORDER BY Artikel->Kurztext]]></SqlQuery>
</Query>

<Query name="ListeKundPreisIdsByArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtikelOid:%String,Kunde:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, ZusatzArtikelNr, KundenSpezArtNr
	FROM DBFakturierung.KundenPreis
	WHERE Artikel->Mandant = :MandantOid 
	AND Artikel = :ArtikelOid
	AND Kunde = :Kunde
	ORDER BY ZusatzArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeKGPreisIdsByArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtikelOid:%String,Gruppe:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, ZusatzArtikelNr, KundenSpezArtNr
	FROM DBFakturierung.KGPreis
	WHERE Artikel->Mandant = :MandantOid 
	AND Artikel = :ArtikelOid
	AND Gruppe = :Gruppe
	ORDER BY ZusatzArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePreiseForLadenwaagen">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GruppeVon:%Integer,GruppeBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, ArtikelNrWaage,EngrosPreis,EngrosPreisAbDatum,DatumPreisaenderung, CURRENT_DATE As CurrDate, Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtGruppe,
	CASE WHEN ArtikeltextEtikette = '' THEN DBFakturierung.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) ELSE ArtikeltextEtikette END AS TEXT, 
	CASE WHEN ((TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (DatumPreisaenderung >= CAST(CURRENT_DATE AS Date)))  THEN  EngrosPreis ELSE EngrosPreisAbDatum END AS Preis
	FROM DBFakturierung.KGPreis
	WHERE Artikel->Mandant = :MandantOid 
	AND Gruppe->Code >= :GruppeVon AND Gruppe->Code <= :GruppeBis
	ORDER BY ZusatzArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.ReparaturAuftragAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61646,48942.495443</TimeCreated>

<Query name="ListeSingle">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select Nummer, Datum,Problem, Sachbearbeiter->Name, Sachbearbeiter->Vorname,
	Geraet->SerienNr as Seriennummer, Geraet->Artikel->ArtikelNr as ArtikelNr,
	Geraet->EANCode As EANCode,DBFakturierung.Geraet_GetVerkaufsdatumClass(%ID) AS Verakufsdatum, 
	Geraet->GarantieAblauf AS GarantieAblauf, Status,
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Kunde->Anrede as "Kunde.Anrde", Kunde->Strasse as "Kunde.Strasse",
	Kunde->Ort as "Kunde.Ort", Kunde->Plz as "Kunde.Plz", Kunde->Adressnummer as "Kunde.AdressNr",
	DBAdressen.Adresse_GetName(Kunde->Adresscode, Kunde->Name, Kunde->VornameZusatz1, 1) as "Kunde.Name"
	From DBFakturierung.RepAuftrag where ID = :AuftragOid]]></SqlQuery>
</Query>

<Query name="ListeAll">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select Nummer, Datum, Problem, Sachbearbeiter->Name, Sachbearbeiter->Vorname,
	Geraet->SerienNr as Seriennummer, Geraet->Artikel->ArtikelNr as ArtikelNr,
	Geraet->EANCode As EANCode, DBFakturierung.Geraet_GetVerkaufsdatumClass(%ID) AS Verakufsdatum, 
	Geraet->GarantieAblauf AS GarantieAblauf, Status,
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Kunde->Anrede as "Kunde.Anrde", Kunde->Strasse as "Kunde.Strasse",
	Kunde->Ort as "Kunde.Ort", Kunde->Plz as "Kunde.Plz", Kunde->Adressnummer as "Kunde.AdressNr",	  
	DBAdressen.Adresse_GetName(Kunde->Adresscode, Kunde->Name, Kunde->VornameZusatz1, 1) as "Kunde.Name"
	From DBFakturierung.RepAuftrag]]></SqlQuery>
</Query>

<Query name="ListeByGeraet">
<Type>%SQLQuery</Type>
<FormalSpec>GeraetOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select Nummer, ID, Datum, Problem, Sachbearbeiter->Name, Sachbearbeiter->Vorname,
	Sachbearbeiter->Name || ' ' || Sachbearbeiter->Vorname as SachbearbeiterFull,
	Geraet->SerienNr as Seriennummer, Geraet->Artikel->ArtikelNr as ArtikelNr,
	Geraet->EANCode As EANCode, DBFakturierung.Geraet_GetVerkaufsdatumClass(%ID) AS Verakufsdatum, 
	Geraet->GarantieAblauf AS GarantieAblauf, Status,
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Kunde->Anrede as "Kunde.Anrde", Kunde->Strasse as "Kunde.Strasse",
	Kunde->Ort as "Kunde.Ort", Kunde->Plz as "Kunde.Plz", Kunde->Adressnummer as "Kunde.AdressNr",	  
	DBAdressen.Adresse_GetName(Kunde->Adresscode, Kunde->Name, Kunde->VornameZusatz1, 1) as "Kunde.Name"
	From DBFakturierung.RepAuftrag Where Geraet = :GeraetOid]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.SD.AbzugstypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32310.060069</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 
		%ID, 
		PositionsNr, 
		DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
		(PositionsNr || ' - ' || DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang)) As DisplayText,
		Mandant
	FROM DBFakturierung_SD.Abzugstyp
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.ArtGrPreisKatRabattAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32353.133239</TimeCreated>

<Query name="ListeByArtikelgruppe">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT (SELECT RabattProzent FROM DBFakturierung_SD.ArtGrPreisKatRabatt WHERE Preiskategorie = Preiskategorie.ID AND Artikelgruppe = :ArtGrOid) As RabattProzent,
			(SELECT ID FROM DBFakturierung_SD.ArtGrPreisKatRabatt WHERE Preiskategorie = Preiskategorie.ID AND Artikelgruppe = :ArtGrOid) As RabattID,
			ID, DBAdressen_SD.Preiskategorie_GetKategorieClass(ID, :MandantOid, :Lang) AS Preiskategorie 
			FROM DBAdressen_SD.Preiskategorie Preiskategorie WHERE AktMandant = :MandantOid</SqlQuery>
</Query>
</Class>


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

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


<Class name="DBFakturierung.AF.SD.ArtikelcodeStammAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>62046,37169.643127</TimeCreated>

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


<Class name="DBFakturierung.AF.SD.ArtikelgruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61572,34232.226385</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelgruppenNr, DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, 
	Mandant, DBFakturierung_SD.MargenStaf_GetBezeichnungClass(MargenStaffel, :MandantOid, :Lang) As MargenStaffel
	FROM DBFakturierung_SD.Artikelgrp
	WHERE Mandant = :MandantOid ORDER BY %String(ArtikelgruppenNr)</SqlQuery>
</Query>

<Query name="ListeGesamtOhneHauptGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, ArtikelgruppenNr, DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, 
	Mandant,
	CASE 
		WHEN
	    	(SELECT COUNT(*) 
			FROM DBFakturierung.Artikel 
			WHERE DBFakturierung_SD.Artikelgrp.ID = Artikelgruppe
			AND Artikelgruppe->Mandant = :MandantOid) = 0
			THEN
				Convert(BIT,0)
			ELSE
				Convert(BIT,1)
			END As HasArtikel
	FROM DBFakturierung_SD.Artikelgrp
	WHERE Mandant = :MandantOid AND ArtikelgruppenNr > 9 ORDER BY ArtikelgruppenNr]]></SqlQuery>
</Query>

<Query name="ListeVonBisOhneHauptGrp">
<Type>%SQLQuery</Type>
<FormalSpec>VonNr:%Integer,BisNr:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, ArtikelgruppenNr, DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, 
	Mandant,
	CASE 
		WHEN
	    	(SELECT COUNT(*) 
			FROM DBFakturierung.Artikel 
			WHERE DBFakturierung_SD.Artikelgrp.ID = Artikelgruppe
			AND Artikelgruppe->Mandant = :MandantOid) = 0
			THEN
				Convert(BIT,0)
			ELSE
				Convert(BIT,1)
			END As HasArtikel
	FROM DBFakturierung_SD.Artikelgrp
	WHERE Mandant = :MandantOid AND ArtikelgruppenNr > 9 AND ArtikelgruppenNr BETWEEN :VonNr AND :BisNr 
	ORDER BY ArtikelgruppenNr]]></SqlQuery>
</Query>

<Query name="GetEntryByNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelgruppenNr, DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBFakturierung_SD.Artikelgrp
	WHERE Mandant = :MandantOid
	AND ArtikelgruppenNr %StartsWith :ArtGrpNr</SqlQuery>
</Query>

<Query name="GetEntryByBezeichnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Bezeichnung:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT TOP 1 ID, ArtikelgruppenNr, DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBFakturierung_SD.Artikelgrp
	WHERE Mandant = :MandantOid
	AND DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :Bezeichnung
	ORDER BY Bezeichnung</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelgruppenNr AS Nummer, DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Wert1, 
	DBFakturierung_SD.MargenStaf_GetBezeichnungClass(MargenStaffel, :MandantOid, :Lang) As Wert2, 
	Mandant
	FROM DBFakturierung_SD.Artikelgrp 
	WHERE Mandant = :MandantOid ORDER BY ArtikelgruppenNr</SqlQuery>
</Query>

<Storage name="Default">
<Type>%Library.CacheSerialState</Type>
<StreamLocation>^DBFakturie93A0.ArtikelgrupF90FS</StreamLocation>
</Storage>
</Class>


<Class name="DBFakturierung.AF.SD.AuftrTextAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61717,36205.566599</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 	%ID,
			Nummer,
			Kurzbezeichnung,
			Text1,
			Text2
 	FROM DBFakturierung_SD.AuftrText
 	WHERE Mandant=:MandantOid
 	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.SD.AuftragstypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>62412,57252.377296</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>SELECT ID, Code,
DBFakturierung_SD.Auftragstyp_GetTextClass(%ID, :MandantOid, :Lang) As Text
FROM DBFakturierung_SD.Auftragstyp
WHERE Mandant = :MandantOid
ORDER BY Code</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>SELECT ID, Code,
DBFakturierung_SD.Auftragstyp_GetTextClass(%ID, :MandantOid, :Lang) AS wert1, "" AS wert2
FROM DBFakturierung_SD.Auftragstyp
WHERE Mandant = :MandantOid
ORDER BY Code</SqlQuery>
</Query>

<Query name="ListeNachCode">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Code:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>SELECT ID, Code,
DBFakturierung_SD.Auftragstyp_GetTextClass(%ID, :MandantOid, :Lang) As Text
FROM DBFakturierung_SD.Auftragstyp
WHERE Mandant = :MandantOid AND Code = :Code
ORDER BY Code</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.SD.BestellartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61579,56511.374602</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFakturierung_SD.Bestellart 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.ChauffeurAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,33992.826775</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFakturierung_SD.Chauffeur 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


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

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 	%ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
			Mandant, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypOF()) AS FormularOF, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypAU()) AS FormularAU, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypRZ()) AS FormularRZ, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypLS()) AS FormularLS, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypRG()) AS FormularRG, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypBZ()) AS FormularBZ, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypGU()) AS FormularGU, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypMA()) AS FormularMA, 
			DBFakturierung_SD.DTypForm_GetFormularNrByDrucktyp(ID, DBFakturierung.Konst_FormularTypSR()) AS FormularSR
	FROM DBFakturierung_SD.Drucktyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


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

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


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

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

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


<Class name="DBFakturierung.AF.SD.GeraeteArtAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61579,34962.541421</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Lagerort, Mandant
	FROM DBFakturierung_SD.GeraeteArt
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.HerkunftAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61579,56629.878365</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, IsoKennzeichen As Kennzeichen
	FROM DBFakturierung_SD.Herkunft
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.LSVADistanzAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61703,58543.274222</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Plz, Ort, Kilometer
	FROM DBFakturierung_SD.LSVADist 
	WHERE Mandant = :MandantOid 
	ORDER BY Plz</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Plz, Ort, Kilometer
	FROM DBFakturierung_SD.LSVADist as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Plz</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.SD.LSVATransportKatAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61706,54619.377481</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBFakturierung_SD.LSVAKat_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Gewicht
	FROM DBFakturierung_SD.LSVAKat 
	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, DBFakturierung_SD.LSVAKat_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Gewicht
	FROM DBFakturierung_SD.LSVAKat
	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, DBFakturierung_SD.LSVAKat_GetBezeichnungClass(%ID, :MandantOid, :Lang) As wert1, Gewicht AS wert2
	FROM DBFakturierung_SD.LSVAKat as Stammdate
	WHERE Mandant = :MandantOid 
	ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.SD.LagerortAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61572,50149.851701</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFakturierung_SD.Lagerort
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.LieferantengruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61572,37431.353536</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr, Lieferant->ID AS Lieferant, Kurzbez
	FROM DBFakturierung_SD.Liefgrp
	WHERE Lieferant->Mandant = :MandantOid ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr AS Nummer, Lieferant->ID As Wert1, 
	Kurzbez As Wert2
	FROM DBFakturierung_SD.Liefgrp 
	WHERE Lieferant->Mandant = :MandantOid ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturie93A0.LieferantenD3CAD</DataLocation>
<DefaultData>LieferantengruppeAFDefaultData</DefaultData>
<IdLocation>^DBFakturie93A0.LieferantenD3CAD</IdLocation>
<IndexLocation>^DBFakturie93A0.LieferantenD3CAI</IndexLocation>
<StreamLocation>^DBFakturie93A0.LieferantenD3CAS</StreamLocation>
<Data name="LieferantengruppeAFDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.AF.SD.LieferartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61579,56511.511205</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, Transporteur
	FROM DBFakturierung_SD.Lieferart
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.MargenStaffelAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61599,38071.281396</TimeCreated>

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

<Query name="ListeGesamtEntry">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,TitelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, AbBetrag, MargeProzent, MargenStaffel
	FROM DBFakturierung_SD.MargenStafE
	WHERE MargenStaffel->Mandant = :MandantOid and MargenStaffel = :TitelOid ORDER BY AbBetrag asc]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.SD.MengencodeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61572,50077.797588</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, Gewicht
	FROM DBFakturierung_SD.Mengencode 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.PreislisteAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32673.798851</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFakturierung_SD.Preisliste 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.ProduktgruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61696,52485.393272</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFakturierung_SD.Produktgruppe
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

<Query name="ListeNachNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,PosNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>SELECT ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text FROM DBFakturierung_SD.Produktgruppe WHERE Mandant = :MandantOid AND PositionsNr = :PosNr ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.QSMeldTypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32690.889848</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBFakturierung_SD.QSMeldTyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

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


<Class name="DBFakturierung.AF.SD.SteuerungAuftragsbearbAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61695,32707.808501</TimeCreated>

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

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


<Class name="DBFakturierung.AF.SD.StrgEinkAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61949,51333.677566</TimeCreated>

<Query name="ListeMargenBySteuerung">
<Type>%SQLQuery</Type>
<FormalSpec>StrgOid</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, BisBetrag, MargeProzent, PauschalZuschlag
	FROM DBFakturierung_SD.StrgEinkaufM
	WHERE Strg = :StrgOid ORDER BY BisBetrag ASC</SqlQuery>
</Query>
</Class>


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

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


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

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


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

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


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

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


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

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


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

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


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

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

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


<Class name="DBFakturierung.AF.SD.TblSRgfEAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>62374,35714.352736</TimeCreated>

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


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

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


<Class name="DBFakturierung.AF.SD.TrockKostenAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>62297,32503.970219</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>TrockKostenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID,
	CAST(element_key AS DEC) AS Liter,
	CAST(Kosten AS DEC) AS Kosten
	FROM DBFakturierung_SD.TrockKosten_Kosten
	WHERE TrockKosten = :TrockKostenOid
	ORDER BY TrockKosten</SqlQuery>
</Query>

<Query name="ListeNachCode">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, PositionsNr, DBFakturierung_SD.TrockKosten_GetTextClass(%ID, :MandantOid, :Lang) As Text
	FROM DBFakturierung_SD.TrockKosten
	WHERE Mandant = :MandantOid AND PositionsNr = :Nr
	ORDER BY PositionsNr</SqlQuery>
</Query>

<Query name="ListeGesamtTypen">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, PositionsNr, Einheit, Abzug,
	DBFakturierung_SD.TrockKosten_GetTextClass(%ID, :MandantOid, :Lang) As Text
	FROM DBFakturierung_SD.TrockKosten
	WHERE Mandant = :MandantOid
	ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.TempAusgangAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61653,38865.604857</TimeCreated>

<Query name="ListNachTmpAusgangsNr">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Geraet->%ID As  GeraetID, Geraet->Artikel,  Geraet->EANCode,  Geraet->SerienNr,  
	DBFakturierung_SD.Lagerort_GetTextClass( Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Geraet->Lieferant, Auftrag->Kunde As Kunde,  Geraet->Ausgeliefert,  Geraet->VP,
	DBFakturierung.Geraet_GetBezeichnungClass( Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class( Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->Artikel->ArtikelNr As Artikelnummer, Auftrag->Auftragnummer as TmpAusgangNr,
	Anzahl, Anzahl*Geraet->VP AS Betrag,
	Auftrag->Kunde->Name as "Adresse.Name", Auftrag->Kunde->VornameZusatz1 as "Adresse.Vorname", 
 	Auftrag->Kunde->Strasse as "Adresse.Strasse", Auftrag->Kunde->Ort as "Adresse.Ort", 
 	Auftrag->Kunde->PLZ as "Adresse.PLZ", Auftrag->Kunde->Anrede as "Adresse.Anrede"
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Auftrag->ID = :AuftragOid AND Geraet->Artikel->Mandant = :MandantOid ORDER BY Auftrag->Auftragnummer,Text1]]></SqlQuery>
</Query>

<Query name="ListTmpAusgangNachNr">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragNr:%Integer,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Geraet->%ID As  GeraetID, Geraet->Artikel,  Geraet->EANCode,  Geraet->SerienNr,  
	DBFakturierung_SD.Lagerort_GetTextClass( Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Geraet->Lieferant, Auftrag->Kunde As Kunde,  Geraet->Ausgeliefert,  Geraet->VP,
	DBFakturierung.Geraet_GetBezeichnungClass( Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class( Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->Artikel->ArtikelNr As Artikelnummer, Auftrag->Auftragnummer as TmpAusgangNr,
	Auftrag->ID as AuftragID,
	Anzahl, Anzahl*Geraet->VP AS Betrag
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Auftrag->Auftragnummer = :AuftragNr AND Geraet->Artikel->Mandant = :MandantOid ORDER BY Text1]]></SqlQuery>
</Query>

<Query name="ListNachKunde">
<Type>%SQLQuery</Type>
<FormalSpec>KundeOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Geraet->%ID As  GeraetID, Geraet->Artikel, Geraet->EANCode, Geraet->SerienNr, 
	DBFakturierung_SD.Lagerort_GetTextClass(Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Geraet->Lieferant,  Auftrag->Kunde->ID As Kunde, Geraet->Ausgeliefert, Geraet->VP,
	Anzahl, Anzahl*Geraet->VP AS Betrag, 
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->Artikel->ArtikelNr As Artikelnummer,  Auftrag->Auftragnummer as TmpAusgangNr,
	Auftrag->Kunde->Name as "Adresse.Name", Auftrag->Kunde->VornameZusatz1 as "Adresse.Vorname", 
 	Auftrag->Kunde->Strasse as "Adresse.Strasse", Auftrag->Kunde->Ort as "Adresse.Ort", 
 	Auftrag->Kunde->PLZ as "Adresse.PLZ", Auftrag->Kunde->Anrede as "Adresse.Anrede"
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Auftrag->Kunde->ID = :KundeOid ORDER BY Auftrag->Auftragnummer,Text1]]></SqlQuery>
</Query>

<Query name="ListNachKundeGrouped">
<Type>%SQLQuery</Type>
<FormalSpec>KundeOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Geraet->%ID As  GeraetID, Geraet->Artikel, Geraet->EANCode, Geraet->SerienNr, 
	DBFakturierung_SD.Lagerort_GetTextClass(Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Geraet->Lieferant,  Auftrag->Kunde->ID As Kunde, Geraet->Ausgeliefert, Geraet->VP,
	Anzahl, Anzahl*Geraet->VP AS Betrag, 
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->Artikel->ArtikelNr As Artikelnummer,  Auftrag->Auftragnummer as TmpAusgangNr,
	Auftrag->Verakufsdatum as Datum,
	Auftrag->Kunde->Name as "Adresse.Name", Auftrag->Kunde->VornameZusatz1 as "Adresse.Vorname", 
 	Auftrag->Kunde->Strasse as "Adresse.Strasse", Auftrag->Kunde->Ort as "Adresse.Ort", 
 	Auftrag->Kunde->PLZ as "Adresse.PLZ", Auftrag->Kunde->Anrede as "Adresse.Anrede"
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Auftrag->Kunde->ID = :KundeOid GROUP BY Auftrag->ID ORDER BY Auftrag->Auftragnummer]]></SqlQuery>
</Query>

<Query name="ListNachTmpAusgang">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Geraet->%ID As  GeraetID, Geraet->Artikel, Geraet->EANCode, Geraet->SerienNr, 
	DBFakturierung_SD.Lagerort_GetTextClass(Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Geraet->Lieferant,  Auftrag->Kunde->ID As Kunde, Geraet->Ausgeliefert, Geraet->VP,
	Anzahl, Anzahl*Geraet->VP AS Betrag, 
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->Artikel->ArtikelNr As Artikelnummer,  Auftrag->Auftragnummer as TmpAusgangNr, Auftrag->Verakufsdatum as "AusgangsDatum",
	Auftrag->Kunde->Name as "Adresse.Name", Auftrag->Kunde->VornameZusatz1 as "Adresse.Vorname", 
 	Auftrag->Kunde->Strasse as "Adresse.Strasse", Auftrag->Kunde->Ort as "Adresse.Ort", 
 	Auftrag->Kunde->PLZ as "Adresse.PLZ", Auftrag->Kunde->Anrede as "Adresse.Anrede"
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Auftrag->Auftragnummer > 0 AND Geraet->Artikel->Mandant = :MandantOid ORDER BY Auftrag->Auftragnummer, Text1]]></SqlQuery>
</Query>

<Query name="ListNachGeraet">
<Type>%SQLQuery</Type>
<FormalSpec>GeraetOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Geraet->%ID As  GeraetID, Geraet->Artikel,  Geraet->EANCode,  Geraet->SerienNr,  
	DBFakturierung_SD.Lagerort_GetTextClass( Geraet->Lagerort->ID, :MandantOid, :Lang) as Lagerort, 
	Geraet->Lieferant, Auftrag->Kunde As Kunde,  Geraet->Ausgeliefert,  Geraet->VP,
	DBFakturierung.Geraet_GetBezeichnungClass( Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class( Geraet->ID, :MandantOid, :Lang) As Text2,
	Geraet->Artikel->ArtikelNr As Artikelnummer, Auftrag->Auftragnummer as TmpAusgangNr,
	Anzahl, Anzahl*Geraet->VP AS Betrag,
	Auftrag->Kunde->Name as "Adresse.Name", Auftrag->Kunde->VornameZusatz1 as "Adresse.Vorname", 
 	Auftrag->Kunde->Strasse as "Adresse.Strasse", Auftrag->Kunde->Ort as "Adresse.Ort", 
 	Auftrag->Kunde->PLZ as "Adresse.PLZ", Auftrag->Kunde->Anrede as "Adresse.Anrede"
	FROM DBFakturierung.TmpAusgGeraet
	WHERE Geraet->ID = :GeraetOid ORDER BY Auftrag->Auftragnummer,Text1]]></SqlQuery>
</Query>

<Query name="ListeGeraeteNichtAnLager">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
		RechnungPos->Positionsnr AS RechnungPosPositionsnr,
		RechnungPos->DetailText AS RechnungPosDetailText,
		RechnungPos->Menge AS RechnungPosMenge,
		
		RechnungPos->Artikel AS RechnungPosArtikel,
		RechnungPos->Artikel->ArtikelNr AS RechnungPosArtikelArtikelNr,
		RechnungPos->Artikel->Kurztext AS RechnungPosArtikelKurztext,
		RechnungPos->Artikel->LagerLagerbestand AS RechnungPosArtikelLagerLagerbestand,
		
		Anzahl AS Anzahl,
		
		Geraet->Anzahl AS GeraetAnzahl,
		Geraet->Seriennr AS GeraetSeriennr,
		Geraet->EANCode AS GeraetEANCode,
		Geraet->Ausgeliefert AS GeraetAusgeliefert,
		Geraet->Laufnummer AS GeraetLaufnummer
	FROM DBFakturierung.TmpAusgGeraet 
	WHERE RechnungPos->Auftragskopf->ID=:AuftragOid AND 
		Lagerstatus = DBFakturierung.Konst_LagerstatusKeinLager() AND 
		Geraet->Anzahl < Anzahl]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.AF.VorabaustauschAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,32887</TimeChanged>
<TimeCreated>61593,38096.404394</TimeCreated>

<Query name="ListeSingle">
<Type>%SQLQuery</Type>
<FormalSpec>AustauschOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select Datum, SerienNr, AuftragNr, Problem, Sachbearbeiter->Name, Sachbearbeiter->Vorname,
	Geraet->ArtikelNrLieferant as Artikelnummer,
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Lieferant->Anrede as "Lieferant.Anrde", Lieferant->Strasse as "Lieferant.Strasse",
	Lieferant->Ort as "Lieferant.Ort", Lieferant->Plz as "Lieferant.Plz",	  
	DBAdressen.Adresse_GetName(Lieferant->Adresscode, Lieferant->Name, Lieferant->VornameZusatz1, 1) as "Lieferant.Name"
	From DBFakturierung.Vorabtausch where ID = :AustauschOid]]></SqlQuery>
</Query>

<Query name="ListeAll">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select Datum, SerienNr, AuftragNr, Problem, Sachbearbeiter->Name, Sachbearbeiter->Vorname,
	Geraet->ArtikelNrLieferant as Artikelnummer,
	DBFakturierung.Geraet_GetBezeichnungClass(Geraet->ID, :MandantOid, :Lang) As Text1,
	DBFakturierung.Geraet_GetBezeichnung2Class(Geraet->ID, :MandantOid, :Lang) As Text2,
	Lieferant->Anrede as "Lieferant.Anrde", Lieferant->Strasse as "Lieferant.Strasse",
	Lieferant->Ort as "Lieferant.Ort", Lieferant->Plz as "Lieferant.Plz",	  
	DBAdressen.Adresse_GetName(Lieferant->Adresscode, Lieferant->Name, Lieferant->VornameZusatz1, 1) as "Lieferant.Name"
	From DBFakturierung.Vorabtausch]]></SqlQuery>
</Query>
</Class>


<Class name="DBFakturierung.Abzuege">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57334.388013</TimeChanged>
<TimeCreated>61689,47368.724981</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="Abzugstyp">
<Type>DBFakturierung.SD.Abzugstyp</Type>
<Cardinality>parent</Cardinality>
<Inverse>Abzuege</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Abzugstyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AbzugstypIndex">
<Properties>Abzugstyp</Properties>
</Index>

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

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

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

<Property name="ArtikelNr">
<Description>
Artikelnummer - hier extra nicht gelinkt per Relation (Kreisbezug)
wegen der Artikelcopy-Funktion und dem Import von Daten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetOidByAbzugPosNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>aktAbzug:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT %ID INTO :id FROM DBFakturierung.Abzuege
			WHERE Abzugstyp = :aktAbzug AND PosNummer =:PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetNextkNrByAbzug">
<ClassMethod>1</ClassMethod>
<FormalSpec>aktAbzug:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = ""
	&sql(SELECT MAX(PosNummer) INTO :nr FROM DBFakturierung.Abzuege
			WHERE Abzugstyp = :aktAbzug)
	Quit nr+1
]]></Implementation>
</Method>

<Method name="PosNrExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>aktAbzug:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.Abzuege
	     WHERE Abzugstyp = :aktAbzug AND PosNummer = :PosNr)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("DBFakturierung.SD.Abzugstyp.Abzuege")</DataLocation>
<DefaultData>AbzuegeDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.AbzugstypC("Abzuege")</IdLocation>
<IndexLocation>^DBFakturierung.AbzuegeI</IndexLocation>
<StreamLocation>^DBFakturierung.AbzuegeS</StreamLocation>
<Data name="AbzuegeDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PosNummer</Value>
</Value>
<Value name="3">
<Value>Abzugscode</Value>
</Value>
<Value name="4">
<Value>Bezugsart</Value>
</Value>
<Value name="5">
<Value>ArtikelNr</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.ArtPreisDatum">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57318.918177</TimeChanged>
<TimeCreated>61689,47433.038927</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="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>ArtPreisDatum</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="AbDatum">
<Type>%Date</Type>
</Property>

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

<Method name="GetPreisPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	if (Artikel ="") {
		quit 0
	}
	set Preis = 0
	
	&sql(SELECT TOP 1 Preis INTO :Preis FROM DBFakturierung.ArtPreisDatum
		WHERE  Artikel=:Artikel AND AbDatum <= :Datum Order by AbDatum desc)
	
	quit +Preis
]]></Implementation>
</Method>

<Method name="PreisPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##Class(DBFakturierung.ArtPreisDatum).GetOidByArtikelDatum(Artikel, Datum)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetOidByArtikelDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.ArtPreisDatum
	     WHERE  Artikel= :Artikel AND AbDatum = {d :Datum})
	Quit id
]]></Implementation>
</Method>

<Method name="GetDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Datum:%Date</FormalSpec>
<ReturnType>%Date</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set dat = 0
	
	&sql(SELECT TOP 1 AbDatum INTO :dat FROM DBFakturierung.ArtPreisDatum
		WHERE  Artikel=:Artikel AND AbDatum <= {d :Datum} Order by AbDatum desc)
	
	quit dat
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ArtPreisDatum")</DataLocation>
<DefaultData>ArtPreisDatumDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("ArtPreisDatum")</IdLocation>
<IndexLocation>^DBFakturierung.ArtPreisDatumI</IndexLocation>
<StreamLocation>^DBFakturierung.ArtPreisDatumS</StreamLocation>
<Data name="ArtPreisDatumDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AbDatum</Value>
</Value>
<Value name="3">
<Value>Preis</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.ArtVerarb">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57221.470027</TimeChanged>
<TimeCreated>61689,48861.600498</TimeCreated>
<Inheritance>right</Inheritance>

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

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtVerarb</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="VerarbArtikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>VerarbArtVorschlag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="VerarbArtikel"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="VerarbArtikelIndex">
<Properties>VerarbArtikel</Properties>
</Index>

<Property name="AnzahlJeGebinde">
<Description>
Anzahl je Gebinde</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Index name="QualitaetIndex">
<Properties>Qualitaet</Properties>
</Index>

<Index name="PosNrIdx">
<Properties>PositionsNr,Artikel</Properties>
<Unique>1</Unique>
</Index>

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

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

<Index name="AbzugstypIndex">
<Properties>Abzugstyp</Properties>
</Index>

<Method name="PosNrExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>PosNr:%Integer,ArtikelOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtVerarb WHERE PositionsNr = :PosNr AND Artikel = :ArtikelOid)
	if (id '= ""){
		Quit 1
	} else {
		Quit 0	
	}
]]></Implementation>
</Method>

<Method name="GetNextPosNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	
	set nr = 0
	&sql(SELECT MAX(PositionsNr) INTO :nr FROM DBFakturierung.ArtVerarb
			WHERE Artikel = :ArtikelOid)
	Quit nr + 1
]]></Implementation>
</Method>

<Method name="ArtikelHasVerarbeitungen">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set ret = 0
	&sql(SELECT COUNT(*) INTO ret FROM DBFakturierung.ArtVerarb 
			WHERE Artikel = :ArtikelOid)
	if (ret > 0) {
		set ret = 1
	}
	Quit +ret
]]></Implementation>
</Method>

<Method name="GetIdByArtikelQual">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,QualitaetOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtVerarb WHERE Artikel = :ArtikelOid
			AND Qualitaet = :QualitaetOid)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.ArtVerarbD</DataLocation>
<DefaultData>ArtVerarbDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtVerarbD</IdLocation>
<IndexLocation>^DBFakturierung.ArtVerarbI</IndexLocation>
<StreamLocation>^DBFakturierung.ArtVerarbS</StreamLocation>
<Data name="ArtVerarbDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Artikel</Value>
</Value>
<Value name="4">
<Value>VerarbArtikel</Value>
</Value>
<Value name="5">
<Value>Gebinde</Value>
</Value>
<Value name="6">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="7">
<Value>Qualitaet</Value>
</Value>
<Value name="8">
<Value>Bemerkung</Value>
</Value>
<Value name="9">
<Value>Abzugstyp</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.ArtWaehrung">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61712,35915.461403</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="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>ArtWaehrung</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="Waehrung">
<Type>DBFibu.SD.Fremdwaehrung</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktArtWaehrung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Waehrung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="WaehrungIndex">
<Properties>Waehrung</Properties>
</Index>

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

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

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

<Method name="GetOidByArt">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,WaehrungOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtWaehrung
		 WHERE Artikel = :ArtikelOid AND Waehrung = :WaehrungOid)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ArtWaehrung")</DataLocation>
<DefaultData>ArtWaehrungDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("ArtWaehrung")</IdLocation>
<IndexLocation>^DBFakturierung.ArtWaehrungI</IndexLocation>
<StreamLocation>^DBFakturierung.ArtWaehrungS</StreamLocation>
<Data name="ArtWaehrungDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Waehrung</Value>
</Value>
<Value name="3">
<Value>PreisVP</Value>
</Value>
<Value name="4">
<Value>PreisEP</Value>
</Value>
<Value name="5">
<Value>PreisEPNetto</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikel">
</Property>
<Property name="PreisEP">
</Property>
<Property name="PreisEPNetto">
</Property>
<Property name="PreisVP">
</Property>
<Property name="Waehrung">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.Artikel">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62439,57064.689691</TimeChanged>
<TimeCreated>61571,37674.467571</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="ArtikelNr">
<Description>
Artikelnummer</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Index name="ArtikelNrIndex">
<Properties>ArtikelNr,Mandant</Properties>
<Unique>1</Unique>
</Index>

<Index name="ArtGrpArtNrIndex">
<Properties>ArtGrpNrCalc:Exact,ArtikelNr:Exact</Properties>
</Index>

<Index name="ArtGrpKurztextIndex">
<Properties>ArtGrpNrCalc:Exact,Kurztext:Exact</Properties>
</Index>

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

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

<Property name="ArtikelAktiv">
<Description>
Artikel aktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="LagerAktiv">
<Description>
Lager aktiv</Description>
<Type>%Boolean</Type>
</Property>

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

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

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

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

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

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

<Property name="LetzterEKP">
<Description>
Letzter EKspreis</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="DurchschnittlicherEKP">
<Description>
Durchschnittlicher EKP</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Lieferant1ArtNr">
<Description>
Lieferant 1 - Artikelnummer</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Lieferant2ArtNr">
<Description>
Lieferant 2 - Artikelnummer</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Lieferant3ArtNr">
<Description>
Lieferant 3 - Artikelnummer</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Lieferant1LetzterEKP">
<Description>
Lieferant 1 - Letzter EKP</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Lieferant2LetzterEKP">
<Description>
Lieferant 2 - Letzter EKP</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Lieferant3LetzterEKP">
<Description>
Lieferant 3 - Letzter EKP</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Property name="DatumLetzteBewegung">
<Description>
Letzte Bewegung</Description>
<Type>%Date</Type>
</Property>

<Property name="Preisstaffel">
<Description>
Preisstaffel 1</Description>
<Type>%Decimal</Type>
<Collection>array</Collection>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Mengenstaffel">
<Description>
Mengenstaffel 1</Description>
<Type>%Decimal</Type>
<Collection>array</Collection>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="InventarBewertungspreis">
<Description>
Inventar-Bewertungspreis</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="InventarBestand">
<Description>
Inventar-Bestand</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="InventarLagerberichtigung">
<Description>
Inventar-Lagerberichtigung</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

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

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

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

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

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

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

<Index name="ArtikelgruppeIndex">
<Properties>Artikelgruppe</Properties>
</Index>

<Property name="ArtGrpNrCalc">
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {ArtGrpNrCalc}=##class(DBFakturierung.Artikel).GetArtGrpNr({Artikelgruppe}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

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

<Index name="FibuKontoVKIndex">
<Properties>FibuKontoVK</Properties>
</Index>

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

<Index name="FibuKontoEKIndex">
<Properties>FibuKontoEK</Properties>
</Index>

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

<Index name="MwstEKIndex">
<Properties>MwstEK</Properties>
</Index>

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

<Index name="MwstVKIndex">
<Properties>MwstVK</Properties>
</Index>

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

<Index name="HerkunftIndex">
<Properties>Herkunft</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>

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

<Index name="Lieferant1Index">
<Properties>Lieferant1</Properties>
</Index>

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

<Index name="Lieferant2Index">
<Properties>Lieferant2</Properties>
</Index>

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

<Index name="Lieferant3Index">
<Properties>Lieferant3</Properties>
</Index>

<Property name="ZusatztextArtikel">
<Type>DBFakturierung.ArtikelZuText</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="LagerbewArtikel">
<Type>DBFakturierung.Lagerbew</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Index name="MengeneinheitIndex">
<Properties>Mengeneinheit</Properties>
</Index>

<Index name="ArtikelNrMoveIndex">
<Data>%%ID,ArtikelNr,Artikeltext(ELEMENTS)</Data>
<Properties>Mandant:Exact,Artikeltext(KEYS),ArtikelNr</Properties>
</Index>

<Index name="ArtikeltextIndex">
<Data>%%ID,ArtikelNr,Artikeltext(KEYS),Artikeltext(ELEMENTS)</Data>
<Properties>Mandant:Exact,Artikeltext(KEYS),Artikeltext(ELEMENTS):Exact</Properties>
</Index>

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

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

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

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

<Property name="WaageNachkommastellen">
<Description>
WaagenNachkommastellen</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="DezFormatMenge">
<Description>
DezFormatMenge</Description>
<Type>%String</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {DezFormatMenge}=##class(DBFakturierung.Artikel).GetDispFormatClass({DezStellenMenge}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="DezFormatPreis">
<Description>
DezFormatMenge</Description>
<Type>%String</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {DezFormatPreis}=##class(DBFakturierung.Artikel).GetDispFormatClass({DezStellenPreis}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerLagerbestand">
<Description>
LagerLagerbestand</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerLagerbestand}=##class(DBFakturierung.Artikel).GetLagerBestandClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerReservation">
<Description>
LagerReservation</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerReservation}=##class(DBFakturierung.Artikel).GetLagerReservationClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerOffeneBest">
<Description>
LagerOffeneBest</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerOffeneBest}=##class(DBFakturierung.Artikel).GetLagerOffeneBestClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerVerfuegbar">
<Description>
LagerVerfuegbar</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerVerfuegbar}=##class(DBFakturierung.Artikel).GetLagerVerfuegbarClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerMinBestand">
<Description>
LagerMindestbestand</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerMinBestand}=##class(DBFakturierung.Artikel).GetLagerMinBestandClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerBestMenge">
<Description>
LagerBestMenge</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerBestMenge}=##class(DBFakturierung.Artikel).GetLagerBestMengeClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerBestVorschlag">
<Description>
LagerBestVorschlag</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerBestVorschlag}=##class(DBFakturierung.Artikel).GetLagerBestVorschlagClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="ArtikelLager">
<Description>
Lagerverwaltung zu Artikel (Zuordnung Lagerort und Artikel)</Description>
<Type>DBFakturierung.ArtikelLager</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Geraete">
<Description>
Gäretedatei zu Artikel (Zuordnung Geräte und Artikel)</Description>
<Type>DBFakturierung.Geraet</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="BestellungspositionArtikel">
<Type>DBFaktEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetLagerBestandClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(Lagerbestand) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerReservationClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(Reservation) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerOffeneBestClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(OffeneBestellungen) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerVerfuegbarClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(VerfuegbarCalc) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerMinBestandClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(Mindestbestand) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerBestMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(OptimaleBestellmenge) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerBestVorschlagClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(Bestellvorschlag) INTO :menge FROM DBFakturierung.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetDispFormatClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>stellen:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	 set format = ""
	 if (+stellen = 0) {
		 set format = "#,###,##0;'-'#,###,##0"
	 } elseif (+stellen = 1) {
		 set format = "#,###,##0.0;'-'#,###,##0.0"
	 } elseif (+stellen = 2) {
		 set format = "#,###,##0.00;'-'#,###,##0.00"
	 } elseif (+stellen = 3) {
		 set format = "#,###,##0.000;'-'#,###,##0.000"
	 }
	 quit format
]]></Implementation>
</Method>

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

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

<Method name="GetFirstArtikelIdNurAktive">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id
	     FROM DBFakturierung.Artikel
	     WHERE Mandant = :MandantOid AND ArtikelAktiv = 1
	     ORDER BY ArtikelNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetArtGrpNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set grp = ##class(DBFakturierung.SD.Artikelgrp).%OpenId(ArtGrpOid)
	if (grp="") {
		Quit 0
	} else {
		Quit grp.ArtikelgruppenNr
	}
]]></Implementation>
</Method>

<Method name="GetPreisstaffel">
<FormalSpec>KeyPreisstaffel:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[	Quit ..Preisstaffel.GetAt(KeyPreisstaffel)
]]></Implementation>
</Method>

<Method name="GetPreisstaffelClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,KeyPreisstaffel:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set rs=##Class(DBFakturierung.Artikel).%OpenId(myID)
	Quit rs.Preisstaffel.GetAt(KeyPreisstaffel)
]]></Implementation>
</Method>

<Method name="SetPreisstaffel">
<FormalSpec>KeyPreisstaffel:%Integer,Value:%Decimal(SCALE=5)</FormalSpec>
<Implementation><![CDATA[	Do ..Preisstaffel.SetAt(Value,KeyPreisstaffel)
]]></Implementation>
</Method>

<Method name="GetMengenstaffel">
<FormalSpec>KeyMengenstaffel:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[	Quit ..Mengenstaffel.GetAt(KeyMengenstaffel)
]]></Implementation>
</Method>

<Method name="GetMengenstaffelClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,KeyMengenstaffel:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set rs=##Class(DBFakturierung.Artikel).%OpenId(myID)
	Quit rs.Mengenstaffel.GetAt(KeyMengenstaffel)
]]></Implementation>
</Method>

<Method name="SetMengenstaffel">
<FormalSpec>KeyMengenstaffel:%Integer,Value:%Decimal(SCALE=5)</FormalSpec>
<Implementation><![CDATA[	Do ..Mengenstaffel.SetAt(Value,KeyMengenstaffel)
]]></Implementation>
</Method>

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

<Method name="GetArtikeltextClass">
<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(DBFakturierung.Artikel).%OpenId(myID)
		set text = rs.GetArtikeltext(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

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

<Method name="GetArtikeltext2Class">
<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(DBFakturierung.Artikel).%OpenId(myID)
		set text = rs.GetArtikeltext2(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

<Method name="ArtikelNrExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtNr:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.Artikel
	     WHERE Mandant = :MandantOid AND ArtikelNr = :ArtNr)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetIdByArtikelNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtNr:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id 
			FROM DBFakturierung.Artikel
		 	WHERE Mandant = :MandantOid AND 
		 		ArtikelNr LIKE :ArtNr
		 	ORDER BY ArtikelNr)
	Quit id
]]></Implementation>
</Method>

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

	set art = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,""),1)
	if (art '= ""){
		set id = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,art,""),1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

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

	set art = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,""),-1)
	if (art '= ""){
		set id = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,art,""),-1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnArtikelNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,aktArtikelNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set nextArt = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang," "_aktArtikelNr))
	if (nextArt '= "") {
		set res = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,nextArt,""),1,list)
	} else {
		set list = ##class(DBFakturierung.Artikel).MoveLastOnArtikelNr(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnArtikelNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,aktArtikelNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set prevArt = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang," "_aktArtikelNr),-1)
	if (prevArt '= "") {
		set res = $Order(^DBFakturierung.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,prevArt,""),-1,list)
	} else {
		set list = ##class(DBFakturierung.Artikel).MoveFirstOnArtikelNr(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

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

	set art = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,""),1)
	if (art '= ""){
		set id = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,art,""),1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

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

	set art = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,""),-1)
	if (art '= ""){
		set id = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,art,""),-1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnArtikelText">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,aktArtikelText:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set nextArt = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,aktArtikelText))
	if (nextArt '= "") {
		set res = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,nextArt,""),1,list)
	} else {
		set list = ##class(DBFakturierung.Artikel).MoveLastOnArtikelText(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnArtikelText">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,aktArtikelText:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set prevArt = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,aktArtikelText),-1)
	if (prevArt '= "") {
		set res = $Order(^DBFakturierung.ArtikelI("ArtikeltextIndex",MandantOid,Lang,prevArt,""),-1,list)
	} else {
		set list = ##class(DBFakturierung.Artikel).MoveFirstOnArtikelText(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="CopyArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%String,dstNr:%String,dstBez:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set srcArtikel = ##class(DBFakturierung.Artikel).%OpenId(oid)
	Set newObj = srcArtikel.%ConstructClone(-1)
	Set newObj.ArtikelNr = dstNr
	Set newObj.Kurztext = dstBez
	Set newObj.EANCode1 = ""
	Set newObj.EANCode2 = ""
	do newObj.SetArtikeltext(srcArtikel.Mandant,"de",dstBez)
	Set newObj.UmsatzVorjahrMenge = 0
	Set newObj.UmsatzLaufendMenge = 0
	Set newObj.DatumLetzteBewegung = ""
	Do newObj.%Save()
	set srcArtikel = ""
	set id = newObj.%Id()
	set newObj = ""
	Quit id
]]></Implementation>
</Method>

<Method name="SetHerkunftsartByGrp">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Herkunftsart:%Integer,GrpVon:%Integer,GrpBis:%Integer</FormalSpec>
<Implementation><![CDATA[

	&sql(UPDATE DBFakturierung.Artikel
			SET Herkunftsart= :Herkunftsart
			WHERE Artikelgruppe->ArtikelgruppenNr >= :GrpVon 
			AND Artikelgruppe->ArtikelgruppenNr <= :GrpBis
		)
]]></Implementation>
</Method>

<Method name="FillArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String,NurAktive:%Boolean,OrderByKurztext:%Boolean,Kunde:%String="",Gruppe:%String=""</FormalSpec>
<ReturnType>%ResultSet</ReturnType>
<Implementation><![CDATA[
	
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	set str = ""
	if ((Kunde = "") && (Gruppe = "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "(SELECT COUNT(*) "_
		   "FROM DBFakturierung.Preis "_
		   "WHERE DBFakturierung.Artikel.ID = Artikel "_
		   "AND Artikel->Mandant = "_MandantOid_") "_
			" AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_"AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
		
	} elseif ((Kunde '= "") && (Gruppe '= "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "(SELECT COUNT(*) "_
		   "FROM DBFakturierung.KundenPreis "_
		   "WHERE DBFakturierung.Artikel.ID = Artikel "_
		   "AND Artikel->Mandant = "_MandantOid_" "_
		   "AND Kunde = "_Kunde_") "_"+"_
	       "(SELECT COUNT(*) "_
		   "FROM DBFakturierung.KGPreis "_
		   "WHERE DBFakturierung.Artikel.ID = Artikel "_
		   "AND Artikel->Mandant = "_MandantOid_" "_
		   "AND Gruppe = "_Gruppe_")"_" AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
	
	} elseif ((Kunde '= "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "(SELECT COUNT(*) "_
		   "FROM DBFakturierung.KundenPreis "_
		   "WHERE DBFakturierung.Artikel.ID = Artikel "_
		   "AND Artikel->Mandant = "_MandantOid_" "_
		   "AND Kunde = "_Kunde_") "_
			" AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
	
	} elseif ((Kunde = "") && (Gruppe '= "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "(SELECT COUNT(*) "_
		   "FROM DBFakturierung.KGPreis "_
		   "WHERE DBFakturierung.Artikel.ID = Artikel "_
		   "AND Artikel->Mandant = "_MandantOid_" "_
		   "AND Gruppe = "_Gruppe_") "_
			" AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
	}
	Do rs.Prepare(str)
	Set sc = rs.Execute()
	if (sc '= $$$OK) {
		Quit 0
	}
	Quit rs
]]></Implementation>
</Method>

<Method name="FillArtikelEK">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String,NurAktive:%Boolean,OrderByKurztext:%Boolean,Kunde:%String="",Gruppe:%String=""</FormalSpec>
<ReturnType>%ResultSet</ReturnType>
<Implementation><![CDATA[
	
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	set str = ""
	if ((Kunde = "") && (Gruppe = "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "0 AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_"AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
		
	} elseif ((Kunde '= "") && (Gruppe '= "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "0 AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
	
	} elseif ((Kunde '= "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "(SELECT COUNT(*) "_
		   "0 AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
	
	} elseif ((Kunde = "") && (Gruppe '= "")) {

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBFakturierung.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBFakturierung.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "0 AS CountPreise "_
		"FROM DBFakturierung.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		if (OrderByKurztext) {
			set str = str_"ORDER BY Kurztext"
		} else {
			set str = str_"ORDER BY ArtikelNr"
		}
	}
	Do rs.Prepare(str)
	Set sc = rs.Execute()
	if (sc '= $$$OK) {
		Quit 0
	}
	Quit rs
]]></Implementation>
</Method>

<Method name="SetHerkunftsartByArt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Herkunftsart:%Integer,ArtVon:%String,ArtBis:%String</FormalSpec>
<Implementation><![CDATA[
	&sql(UPDATE DBFakturierung.Artikel
			SET Herkunftsart= :Herkunftsart
			WHERE ArtikelNr >= :ArtVon 
			AND ArtikelNr <= :ArtBis
		)
]]></Implementation>
</Method>

<Method name="MandantHasArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.Artikel
	     WHERE Mandant = :MandantOid)
	if (id = "") {
		Quit 0
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="%OnBeforeSave">
<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 before 
any data is 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 artId = ..%Id()
		set oldArtNr = ""
		&sql(SELECT ArtikelNr INTO :oldArtNr FROM DBFakturierung.Artikel WHERE ID=:artId)
		Set ^FaktArtikelOldArtikelNr(artId) = oldArtNr
	} else {
		if ((..EANCode1 = "") || (..EANCode1 = $c(0)) && (..EtikettenTyp '= "") && (..EtikettenTyp '= $c(0))) {
			set ..EANCode1 = ##class(DBFakturierung.Geraet).GetEANCode(..Mandant)
		} elseif ((..EtikettenTyp = "") || (..EtikettenTyp = $c(0))) {
			set ..EANCode1 = ""
		}
	}
	
	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[
	// Verweiste Artikelnummern in DBFakturierung.Abzuege nachführen
	if ('insert) {
		set chk = ..checkUpdate(..%Id())
		if ('chk) {
			Quit $$$ERROR(##class(DBCore.ErrorCodes).ABZUGNICHTNACHGEFUEHRTCODE() ,##class(DBCore.ErrorCodes).ABZUGNICHTNACHGEFUEHRTMSG())
		}	
	}
	
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgBeforeSave">
<Code><![CDATA[	set artId = {ID*O}
	set oldArtNr = ""
	&sql(SELECT ArtikelNr INTO :oldArtNr FROM DBFakturierung.Artikel WHERE ID=:artId)
	Set ^FaktArtikelOldArtikelNr(artId) = oldArtNr]]></Code>
<Event>UPDATE</Event>
</Trigger>

<Trigger name="trgAfterSave">
<Code>	// Verweiste Artikelnummern in DBFakturierung.Abzuege nachführen
	set chk = ..checkUpdate({ID*N})
	if ('chk) {
		Set $ECODE = ##class(DBCore.ErrorCodes).ABZUGNICHTNACHGEFUEHRTCODE()
	}</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
</Trigger>

<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 tId = $LG(oid,1)
    Set tClass = ..%PackageName()_"."_..%ClassName()
	Do ##class(DBUtils.ClassHelper).DelArray(tClass,tId)
	
	set state = ..DeleteRelations(tId)
	// wenn Artikel in DBFakturierung.Abzuege zugewiesen ist -> nicht löschen
	set state = ..checkDelete($lg(oid,1)) && state
	if (state = 1) {
		Quit $$$OK
	} else {
		Quit $$$ERROR(##class(DBCore.ErrorCodes).ABZUGEXISTSCODE() ,##class(DBCore.ErrorCodes).ABZUGEXISTSMSG())
	}
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code><![CDATA[    Set tClass = ..%PackageName()_"."_..%ClassName()
	Do ##class(DBUtils.ClassHelper).DelArray(tClass,{ID})
	
	set state = ..DeleteRelations({ID})
	set state = ..checkDelete({ID}) && state
	if (state '= 1) {
		Set $ECODE = ##class(DBCore.ErrorCodes).ABZUGEXISTSCODE()
	}]]></Code>
<Event>DELETE</Event>
<Foreach>row</Foreach>
</Trigger>

<Method name="DeleteRelations">
<Description>
löscht verknüfungen welche mit artikel gelöscht werden dürfen
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ObjectId:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	//hier muss Dynamic SQL angewendet werden, da embedded nicht funktioniert
	Set strSQL="DELETE FROM DBFakturierung.Preis WHERE Artikel = ?"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute(ObjectId)
	
	// Ortho Artikel löschen
	Set strSQL="DELETE FROM DBSpezial_Ortho.Artikel WHERE FaktArtikel = "_ObjectId
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute(ObjectId)
	
	//Arbeitsposition zuweisung aufheben
	Set strSQL="UPDATE DBIntrap_SD.Arbeitsposition SET Artikel = NULL WHERE Artikel = ?"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute(ObjectId)
	
	Quit 1
]]></Implementation>
</Method>

<Method name="checkDelete">
<Description>
Prüft ob der Artikel gelöscht werden darf
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ObjectId:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="checkUpdate">
<Description>
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ObjectId:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

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

	set ret = ""
	set id = ""
	if (ArtikelOid '= "") {
		&sql(SELECT Mengeneinheit INTO :id FROM DBFakturierung.Artikel WHERE ID = :ArtikelOid)
		if (id '= "") {
			&sql(SELECT DBFakturierung_SD.Mengencode_GetTextClass(:id, :MandantOid, :Lang) INTO :ret
					FROM DBFakturierung_SD.Mengencode WHERE ID = :id)	
		}
	}
	Quit ret
]]></Implementation>
</Method>

<Property name="SingleLagerOrt">
<Type>DBFakturierung.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="SingleLagerOrtIndex">
<Properties>SingleLagerOrt</Properties>
</Index>

<Property name="VPreis">
<Type>DBFakturierung.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Index name="AbzugstypIndex">
<Properties>Abzugstyp</Properties>
</Index>

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

<Property name="ArtPreisDatum">
<Type>DBFakturierung.ArtPreisDatum</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Index name="ProduktgruppeIndex">
<Properties>Produktgruppe</Properties>
</Index>

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

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

<Property name="VerarbArtVorschlag">
<Type>DBFakturierung.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>VerarbArtikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="ArtVerarb">
<Type>DBFakturierung.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AuftragspositionArtikel">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Index name="QualitaetsklasseIndex">
<Properties>Qualitaetsklasse</Properties>
</Index>

<Method name="ChangePreisByGrp">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Change:%Decimal,GrpVon:%Integer,GrpBis:%Integer</FormalSpec>
<Implementation><![CDATA[

	&sql(UPDATE DBFakturierung.Artikel
			SET Basispreis = (Basispreis + :Change)
			WHERE Artikelgruppe->ArtikelgruppenNr >= :GrpVon 
			AND Artikelgruppe->ArtikelgruppenNr <= :GrpBis
			AND Basispreis > 0
		)
]]></Implementation>
</Method>

<Method name="ChangePreisByArt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Change:%Decimal,ArtVon:%String,ArtBis:%String</FormalSpec>
<Implementation><![CDATA[

	&sql(UPDATE DBFakturierung.Artikel
			SET Basispreis = (Basispreis + :Change)
			WHERE ArtikelNr >= :ArtVon 
			AND ArtikelNr <= :ArtBis
			AND Basispreis > 0
		)
]]></Implementation>
</Method>

<Method name="ChangePreisProzentByGrp">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Prozent:%Decimal,Rundung:%Integer,GrpVon:%Integer,GrpBis:%Integer</FormalSpec>
<Implementation><![CDATA[
	&sql(UPDATE DBFakturierung.Artikel
			SET Basispreis = DBUtils.NumberUtils_RoundWithEinst(:Rundung, (Basispreis + (Basispreis*:Prozent/100)))
			WHERE Artikelgruppe->ArtikelgruppenNr >= :GrpVon 
			AND Artikelgruppe->ArtikelgruppenNr <= :GrpBis
			AND Basispreis > 0
		)
]]></Implementation>
</Method>

<Method name="ChangePreisProzentByArt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Prozent:%Decimal,Rundung:%Integer,ArtVon:%String,ArtBis:%String</FormalSpec>
<Implementation><![CDATA[

	&sql(UPDATE DBFakturierung.Artikel
			SET Basispreis = DBUtils.NumberUtils_RoundWithEinst(:Rundung, (Basispreis + (Basispreis*:Prozent/100)))
			WHERE ArtikelNr >= :ArtVon 
			AND ArtikelNr <= :ArtBis
			AND Basispreis > 0
		)
]]></Implementation>
</Method>

<Property name="Kontrakt">
<Type>DBFakturierung.Kontrakt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="ArtWaehrung">
<Type>DBFakturierung.ArtWaehrung</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="EtikettenTyp">
<Type>DBPrint.Etikette</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelEtikettentyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="EtikettenTyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="BrancheArtikel">
<Type>DBAdressen.SD.Branche</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="IndSelArtikel">
<Type>DBAdressen.SD.IndSelektion</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Gebaeudetyp">
<Type>DBSpezial.Wasser.SD.Gebaeudetyp</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="OrthoArtikel">
<Type>DBSpezial.Ortho.Artikel</Type>
<Cardinality>children</Cardinality>
<Inverse>FaktArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByEANCode1">
<ClassMethod>1</ClassMethod>
<FormalSpec>EANCode:%String,MandOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set id = ""
	
	Set strSQL="SELECT ID FROM DBFakturierung.Artikel WHERE Mandant='"_MandOid_"' "
	set strSQL=strSQL_"AND EANCode1='"_EANCode_"'"

	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		if (rs.Next(.sc)) {
			Set id=rs.Data("ID")
		}
	}
	Quit id
]]></Implementation>
</Method>

<Method name="ResetDatumLetzteBewegung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[
	&sql(Update DBFakturierung.Artikel set DatumLetzteBewegung = '' 
	where Mandant = :MandantOid)
]]></Implementation>
</Method>

<Method name="DeleteAlleArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[
	
	&sql(DELETE DBFakturierung.Artikel	where Mandant = :MandantOid)
]]></Implementation>
</Method>

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

<Property name="BrechnungsArtikel">
<Type>DBSpezial.Fakt.SD.PosBerArt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="KontrollArtikel">
<Type>DBSpezial.Label.KontrollDetail</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="MecanoArtikel">
<Type>DBSpezial.Mecano.Artikel</Type>
<Cardinality>children</Cardinality>
<Inverse>FaktArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="WartungArtikel">
<Type>DBSpezial.Wartung.Detail</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Property name="AufbereitDetArtikel">
<Type>DBSpezial.Fakt.AufbereitDet</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ServiceTyp">
<Type>DBSpezial.Fzv.ServiceTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TransportFahrzeug">
<Type>DBSpezial.Logistik.TransAuftrag</Type>
<Cardinality>many</Cardinality>
<Inverse>Fahrzeug</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TransportMaterial">
<Type>DBSpezial.Logistik.TransAuftrag</Type>
<Cardinality>many</Cardinality>
<Inverse>Material</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TransportAnhaenger">
<Type>DBSpezial.Logistik.TransAuftrag</Type>
<Cardinality>many</Cardinality>
<Inverse>Anhaenger</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="SpezLeistungsart">
<Type>DBSpezial.Logistik.SD.LeistArt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtikelImmerAufBestelliste">
<Description>
Artikel immer auf Bestellliste drucken</Description>
<Type>%Boolean</Type>
</Property>

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

<Property name="VorbestellungArtikel">
<Type>DBSpezial.Eier.Vorbestellung</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

<Property name="Trocknungskosten">
<Type>DBFakturierung.SD.TrockKosten</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="EinsatzArtikel">
<Type>DBSpezial.Lohn.Artikel</Type>
<Cardinality>children</Cardinality>
<Inverse>FaktArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Umsatz">
<Type>DBFakturierung.Umsatz</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="WPruefung">
<Type>DBFaktEK.WerkzeugPruefung</Type>
<Cardinality>children</Cardinality>
<Inverse>FaktArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ViehAbzugZuschlag">
<Type>DBSpezial.Vieh.SD.AbzugZuschlag</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ViehTierart">
<Type>DBSpezial.Vieh.SD.Tierart</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="SetLieferantInfo">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,LieferantOid:%String,ArtNr:%String,Preis:%Decimal</FormalSpec>
<Implementation><![CDATA[
	set art = ##Class(DBFakturierung.Artikel).%OpenId(ArtikelOid)
	set lieferant = ##Class(DBAdressen.Adresse).%OpenId(LieferantOid)
	if (art '= "" && lieferant '= "") {
		if ((art.Lieferant1 = "") || (art.Lieferant1 = $c(0)) || (art.Lieferant1.%Id() = LieferantOid)) {
			set art.Lieferant1 = lieferant
			set art.Lieferant1ArtNr = ArtNr
			set art.Lieferant1LetzterEKP = Preis
		} elseif ((art.Lieferant2 = "") || (art.Lieferant2 = $c(0)) || (art.Lieferant2.%Id() = LieferantOid)) {
			set art.Lieferant2 = lieferant
			set art.Lieferant2ArtNr = ArtNr
			set art.Lieferant2LetzterEKP = Preis
		} elseif ((art.Lieferant3 = "") || (art.Lieferant3 = $c(0)) || (art.Lieferant3.%Id() = LieferantOid)) {
			set art.Lieferant3 = lieferant
			set art.Lieferant3ArtNr = ArtNr
			set art.Lieferant3LetzterEKP = Preis
		}
		w art.%Save(),!
		set art = ""
		set lieferant = ""
	}
]]></Implementation>
</Method>

<Method name="GetIdByLieferantArtikelNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtNr:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.Artikel
		 WHERE Mandant = :MandantOid AND (Lieferant1ArtNr = :ArtNr OR Lieferant2ArtNr = :ArtNr OR Lieferant3ArtNr = :ArtNr ))
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteOldLager">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBFakturierung.ArtikelLager where Artikel = :ArtikelOid AND Artikel->SingleLagerOrt <> Lagerort)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.ArtikelD</DataLocation>
<DefaultData>ArtikelDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelD</IdLocation>
<IndexLocation>^DBFakturierung.ArtikelI</IndexLocation>
<StreamLocation>^DBFakturierung.ArtikelS</StreamLocation>
<Data name="ArtikelDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>ArtikelNr</Value>
</Value>
<Value name="3">
<Value>Kurztext</Value>
</Value>
<Value name="4">
<Value>Artikelcode</Value>
</Value>
<Value name="5">
<Value>ArtikelAktiv</Value>
</Value>
<Value name="6">
<Value>LagerAktiv</Value>
</Value>
<Value name="7">
<Value>Preisliste</Value>
</Value>
<Value name="8">
<Value>Vertreterumsatz</Value>
</Value>
<Value name="9">
<Value>ArtikelGrAlsText</Value>
</Value>
<Value name="10">
<Value>Preiseinheit</Value>
</Value>
<Value name="11">
<Value>LetzterEKP</Value>
</Value>
<Value name="12">
<Value>DurchschnittlicherEKP</Value>
</Value>
<Value name="13">
<Value>Lieferant1ArtNr</Value>
</Value>
<Value name="14">
<Value>Lieferant2ArtNr</Value>
</Value>
<Value name="15">
<Value>Lieferant3ArtNr</Value>
</Value>
<Value name="16">
<Value>Lieferant1LetzterEKP</Value>
</Value>
<Value name="17">
<Value>Lieferant2LetzterEKP</Value>
</Value>
<Value name="18">
<Value>Lieferant3LetzterEKP</Value>
</Value>
<Value name="19">
<Value>Bemerkung</Value>
</Value>
<Value name="20">
<Value>DatumLetzteBewegung</Value>
</Value>
<Value name="21">
<Value>InventarBewertungspreis</Value>
</Value>
<Value name="22">
<Value>InventarBestand</Value>
</Value>
<Value name="23">
<Value>InventarLagerberichtigung</Value>
</Value>
<Value name="24">
<Value>Aktion</Value>
</Value>
<Value name="25">
<Value>AktionVonDatum</Value>
</Value>
<Value name="26">
<Value>AktionBisDatum</Value>
</Value>
<Value name="27">
<Value>Aktionspreis</Value>
</Value>
<Value name="28">
<Value>MargeProzent</Value>
</Value>
<Value name="29">
<Value>Einzelgewicht</Value>
</Value>
<Value name="30">
<Value>EUZolltarivNr</Value>
</Value>
<Value name="31">
<Value>OrderNr</Value>
</Value>
<Value name="32">
<Value>Herkunftsart</Value>
</Value>
<Value name="33">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="34">
<Value>Basispreis</Value>
</Value>
<Value name="35">
<Value>Parzelle</Value>
</Value>
<Value name="36">
<Value>AktionspreisAnbruch</Value>
</Value>
<Value name="37">
<Value>Artikelgruppe</Value>
</Value>
<Value name="38">
<Value>FibuKontoVK</Value>
</Value>
<Value name="39">
<Value>FibuKontoEK</Value>
</Value>
<Value name="40">
<Value>MwstEK</Value>
</Value>
<Value name="41">
<Value>MwstVK</Value>
</Value>
<Value name="42">
<Value>Herkunft</Value>
</Value>
<Value name="43">
<Value>Mandant</Value>
</Value>
<Value name="44">
<Value>Lieferant1</Value>
</Value>
<Value name="45">
<Value>Lieferant2</Value>
</Value>
<Value name="46">
<Value>Lieferant3</Value>
</Value>
<Value name="47">
<Value>Gebinde</Value>
</Value>
<Value name="48">
<Value>Mengeneinheit</Value>
</Value>
<Value name="49">
<Value>GewichJePal</Value>
</Value>
<Value name="50">
<Value>DezStellenMenge</Value>
</Value>
<Value name="51">
<Value>DezStellenPreis</Value>
</Value>
<Value name="52">
<Value>Waageneinstellungen</Value>
</Value>
<Value name="53">
<Value>WaageNachkommastellen</Value>
</Value>
<Value name="54">
<Value>WaagenTaraAbziehen</Value>
</Value>
<Value name="55">
<Value>KgProLm</Value>
</Value>
<Value name="56">
<Value>SingleLagerOrt</Value>
</Value>
<Value name="57">
<Value>Abzugstyp</Value>
</Value>
<Value name="58">
<Value>GewichtJePal</Value>
</Value>
<Value name="59">
<Value>Produktgruppe</Value>
</Value>
<Value name="60">
<Value>EANCode1</Value>
</Value>
<Value name="61">
<Value>EANCode2</Value>
</Value>
<Value name="62">
<Value>AbzugstypArtikelbez</Value>
</Value>
<Value name="63">
<Value>Qualitaetsklasse</Value>
</Value>
<Value name="64">
<Value>Marge</Value>
</Value>
<Value name="65">
<Value>Inhalt</Value>
</Value>
<Value name="66">
<Value>LSVABerechnung</Value>
</Value>
<Value name="67">
<Value>Lieferant</Value>
</Value>
<Value name="68">
<Value>EtikettenTyp</Value>
</Value>
<Value name="69">
<Value>ArtikelImmerAufBestelliste</Value>
</Value>
<Value name="70">
<Value>ArtikelInfoText</Value>
</Value>
<Value name="71">
<Value>UmsatzLaufendBetrag</Value>
</Value>
<Value name="72">
<Value>UmsatzLaufendMenge</Value>
</Value>
<Value name="73">
<Value>UmsatzVorjahrBetrag</Value>
</Value>
<Value name="74">
<Value>UmsatzVorjahrMenge</Value>
</Value>
<Value name="75">
<Value>Trocknungskosten</Value>
</Value>
</Data>
<Data name="Artikeltext">
<Attribute>Artikeltext</Attribute>
<Structure>subnode</Structure>
<Subscript>"Artikeltext"</Subscript>
</Data>
<Data name="Artikeltext2">
<Attribute>Artikeltext2</Attribute>
<Structure>subnode</Structure>
<Subscript>"Artikeltext2"</Subscript>
</Data>
<Data name="Mengenstaffel">
<Attribute>Mengenstaffel</Attribute>
<Structure>subnode</Structure>
<Subscript>"Mengenstaffel"</Subscript>
</Data>
<Data name="Preisstaffel">
<Attribute>Preisstaffel</Attribute>
<Structure>subnode</Structure>
<Subscript>"Preisstaffel"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abzugstyp">
</Property>
<Property name="AbzugstypArtikelbez">
</Property>
<Property name="Aktion">
</Property>
<Property name="AktionBisDatum">
</Property>
<Property name="AktionVonDatum">
</Property>
<Property name="Aktionspreis">
</Property>
<Property name="AktionspreisAnbruch"/>
<Property name="AnzahlJeGebinde"/>
<Property name="ArtGrpNrCalc">
</Property>
<Property name="ArtikelAktiv">
</Property>
<Property name="ArtikelGrAlsText">
</Property>
<Property name="ArtikelImmerAufBestelliste">
</Property>
<Property name="ArtikelInfoText">
</Property>
<Property name="ArtikelNr">
</Property>
<Property name="Artikelcode">
</Property>
<Property name="Artikelgruppe">
</Property>
<Property name="Basispreis">
</Property>
<Property name="Bemerkung">
</Property>
<Property name="DatumLetzteBewegung">
</Property>
<Property name="DezFormatMenge">
</Property>
<Property name="DezFormatPreis">
</Property>
<Property name="DezStellenMenge">
</Property>
<Property name="DezStellenPreis">
</Property>
<Property name="DurchschnittlicherEKP">
</Property>
<Property name="EANCode1">
</Property>
<Property name="EANCode2">
</Property>
<Property name="EUZolltarivNr"/>
<Property name="Einzelgewicht">
</Property>
<Property name="EtikettenTyp">
</Property>
<Property name="FibuKontoEK">
</Property>
<Property name="FibuKontoVK">
</Property>
<Property name="Gebinde"/>
<Property name="GewichJePal"/>
<Property name="GewichtJePal"/>
<Property name="Herkunft">
</Property>
<Property name="Herkunftsart">
</Property>
<Property name="InventarBestand">
</Property>
<Property name="InventarBewertungspreis">
</Property>
<Property name="InventarLagerberichtigung">
</Property>
<Property name="KgProLm">
</Property>
<Property name="Kurztext">
</Property>
<Property name="LSVABerechnung">
</Property>
<Property name="LagerAktiv">
</Property>
<Property name="LagerBestMenge">
</Property>
<Property name="LagerBestVorschlag">
</Property>
<Property name="LagerLagerbestand">
</Property>
<Property name="LagerMinBestand">
</Property>
<Property name="LagerOffeneBest">
</Property>
<Property name="LagerReservation">
</Property>
<Property name="LagerVerfuegbar">
</Property>
<Property name="LetzterEKP">
</Property>
<Property name="Lieferant"/>
<Property name="Lieferant1">
</Property>
<Property name="Lieferant1ArtNr">
</Property>
<Property name="Lieferant1LetzterEKP">
</Property>
<Property name="Lieferant2">
</Property>
<Property name="Lieferant2ArtNr">
</Property>
<Property name="Lieferant2LetzterEKP">
</Property>
<Property name="Lieferant3">
</Property>
<Property name="Lieferant3ArtNr">
</Property>
<Property name="Lieferant3LetzterEKP">
</Property>
<Property name="Mandant">
</Property>
<Property name="Marge"/>
<Property name="MargeProzent">
</Property>
<Property name="Mengeneinheit">
</Property>
<Property name="MwstEK">
</Property>
<Property name="MwstVK">
</Property>
<Property name="OrderNr"/>
<Property name="Preiseinheit">
</Property>
<Property name="Preisliste">
</Property>
<Property name="Produktgruppe">
</Property>
<Property name="Qualitaetsklasse">
</Property>
<Property name="SingleLagerOrt">
</Property>
<Property name="Trocknungskosten">
</Property>
<Property name="UmsatzLaufendMenge">
</Property>
<Property name="UmsatzVorjahrMenge">
</Property>
<Property name="Vertreterumsatz">
</Property>
<Property name="WaageNachkommastellen">
</Property>
<Property name="WaagenTaraAbziehen">
</Property>
<Property name="Waageneinstellungen">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.ArtikelLager">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61571,35159.876152</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="Lagerort">
<Type>DBFakturierung.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelLager</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lagerort"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="LagerortIndex">
<Properties>Lagerort</Properties>
</Index>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>ArtikelLager</Inverse>
<Relationship>1</Relationship>
</Property>

<UDLText name="T">
<Content><![CDATA[
//Index ArtikelLager On (Artikel, Lagerort) [Unique];

]]></Content>
</UDLText>

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

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

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

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

<Property name="OptimaleBestellmenge">
<Description>
optimale Bestellmenge</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="OffeneBestellungen">
<Description>
Offene Bestellungen</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="VerfuegbarCalc">
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {VerfuegbarCalc}=##class(DBFakturierung.ArtikelLager).GetVerfuegbar({Lagerbestand},{Reservation}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Method name="GetVerfuegbar">
<ClassMethod>1</ClassMethod>
<FormalSpec>Lagerbestand:%Decimal(SCALE=5),Reservation:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[	Quit Lagerbestand-Reservation
]]></Implementation>
</Method>

<Method name="GetIdByArtikelOrt">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtikelLager
		 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid)
	Quit id
]]></Implementation>
</Method>

<Method name="ResetLagerByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	&sql(UPDATE DBFakturierung.ArtikelLager SET Lagerbestand = 0, Reservation = 0, OffeneBestellungen=0
		 WHERE Artikel->Mandant = :MandOid)
	Quit (SQLCODE = 1)
]]></Implementation>
</Method>

<Method name="AddLager">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtOid:%String,LagerortOid:%String,menge:%Decimal(SCALE=5),lagerSet:%Boolean,reservSet:%Boolean,bestelltSet:%Boolean</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	w "starte 'AddLager' mit Mandant: "_MandantOid, !, " Artikel: "_ArtOid, !, " Lagerort: "_LagerortOid,!, " Menge: "_menge, !, " Lager: "_lagerSet, !, " Reserviert: "_reservSet, "Bestellt: "_bestelltSet, !
	set id = ""
	// Lagerort prüfen
	if ('##class(DBFakturierung.SD.Lagerort).%ExistsId(LagerortOid)) {
		set LagerortOid = ##Class(DBFakturierung.SD.Lagerort).GetIdByPosNrOnMandant(MandantOid, 1)
	}
	// wenn ungültige Daten quit
	if (LagerortOid = "") || ('##class(DBFakturierung.SD.Lagerort).%ExistsId(LagerortOid)) || ('##class(DBFakturierung.Artikel).%ExistsId(ArtOid)) {
		w "qui = OK", !
		quit 0
	}
	w "Lagerort = OK", !
	
	// prüfen ob schon Record vorhanden
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtikelLager
		 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid)
	
	
	// Wenn keine ID neuen anlegen
	set lager = ""
	if (id = "") || ('##class(DBFakturierung.ArtikelLager).%ExistsId(id)) {
		w "erstelle neues Lager : ", !
		set lager = ##class(DBFakturierung.ArtikelLager).%New()
		w "Lager erstellt", !
		w lager, !
		set artikel = ##class(DBFakturierung.Artikel).%OpenId(ArtOid)
		if (artikel '= "") {
			w "set Artikel", !
			set lager.Artikel =artikel
		} 
		set lagerort = ##class(DBFakturierung.SD.Lagerort).%OpenId(LagerortOid)
		if (lagerort '= "") {
			w "set lagerort", !
			set lager.Lagerort = lagerort
		}
		d lager.%Save()
		w "Lager = ", lager, !
	} else {
		w "öffne Lager : ", id, !
		set lager = ##class(DBFakturierung.ArtikelLager).%OpenId(id)
	}
	
	// Reservation addieren
	if (reservSet) {
		if (lager.Reservation = "") {
			set lager.Reservation = 0	
		}
		w "Reservation anhin: ",lager.Reservation, !
		set lager.Reservation = +lager.Reservation + menge
		w "Reservation neu: ",lager.Reservation, !
	}
	// Lagerbestand addieren
	if (lagerSet) {
		if (lager.Lagerbestand = "") {
			set lager.Lagerbestand = 0	
		}
		set lager.Lagerbestand = +lager.Lagerbestand + menge
	}
	if (bestelltSet) {
		if (lager.OffeneBestellungen = "") {
			set lager.OffeneBestellungen = 0	
		}
		set lager.OffeneBestellungen = +lager.OffeneBestellungen + menge
	}
	// speichern
	set state = lager.%Save()
	
	kill lager
	
	quit $$$ISOK(state)
]]></Implementation>
</Method>

<Method name="AddLagerDirekt">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,menge:%Decimal(SCALE=5),lagerSet:%Boolean,reservSet:%Boolean,bestelltSet:%Boolean</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	// Lagerort prüfen
	if ('##class(DBFakturierung.SD.Lagerort).%ExistsId(LagerortOid)) {
		w "Lagerort ungültig! ", !
		set LagerortOid = ##Class(DBFakturierung.SD.Lagerort).GetIdByPosNrOnMandant(MandantOid, 1)
	}
	// wenn ungültige Daten quit
	if ((LagerortOid = "") || ('##class(DBFakturierung.SD.Lagerort).%ExistsId(LagerortOid)) || ('##class(DBFakturierung.Artikel).%ExistsId(ArtOid))) {
		quit 0
	}
	
	// prüfen ob schon Record vorhanden
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtikelLager
		 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid)
		 
	Set:(SQLCODE'=0) id = ""
	
	// Wenn keine ID neuen anlegen
	set lager = ""
	if ((id = "") || ('##class(DBFakturierung.ArtikelLager).%ExistsId(id))) {
		set lager = ##class(DBFakturierung.ArtikelLager).%New()
		set artikel = ##class(DBFakturierung.Artikel).%OpenId(ArtOid)
		if (artikel '= "") {
			set lager.Artikel =artikel
		} 
		set lagerort = ##class(DBFakturierung.SD.Lagerort).%OpenId(LagerortOid)
		if (lagerort '= "") {
			set lager.Lagerort = lagerort
		}
		d lager.%Save()
	} else {
		set lager = ##class(DBFakturierung.ArtikelLager).%OpenId(id)
	}
	
	// Reservation addieren
	if (reservSet) {
		if (lager.Reservation = "") {
			set lager.Reservation = 0	
		}
		set lager.Reservation = +lager.Reservation + menge
	}
	// Lagerbestand addieren
	if (lagerSet) {
		if (lager.Lagerbestand = "") {
			set lager.Lagerbestand = 0	
		}
		set lager.Lagerbestand = +lager.Lagerbestand + menge
	}
	if (bestelltSet) {
		if (lager.OffeneBestellungen = "") {
			set lager.OffeneBestellungen = 0	
		}
		set lager.OffeneBestellungen = +lager.OffeneBestellungen + menge
	}
	// speichern
	set state = lager.%Save()
	
	quit $$$ISOK(state)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ArtikelLager")</DataLocation>
<DefaultData>ArtikelLagerDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("ArtikelLager")</IdLocation>
<IndexLocation>^DBFakturierung.ArtikelLagerI</IndexLocation>
<StreamLocation>^DBFakturierung.ArtikelLagerS</StreamLocation>
<Data name="ArtikelLagerDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Lagerort</Value>
</Value>
<Value name="3">
<Value>Lagerbestand</Value>
</Value>
<Value name="4">
<Value>Reservation</Value>
</Value>
<Value name="5">
<Value>Mindestbestand</Value>
</Value>
<Value name="6">
<Value>Bestellvorschlag</Value>
</Value>
<Value name="7">
<Value>OptimaleBestellmenge</Value>
</Value>
<Value name="8">
<Value>OffeneBestellungen</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikel">
</Property>
<Property name="Bestellvorschlag">
</Property>
<Property name="Lagerbestand">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Mindestbestand">
</Property>
<Property name="OffeneBestellungen">
</Property>
<Property name="OptimaleBestellmenge">
</Property>
<Property name="Reservation">
</Property>
<Property name="VerfuegbarCalc">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.ArtikelZuText">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61647,53473.78284</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="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>ZusatztextArtikel</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="LaufNr">
<Type>%Integer</Type>
</Property>

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

<Index name="LnrIndex">
<Properties>Artikel,LaufNr</Properties>
<Unique>1</Unique>
</Index>

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

<Method name="GetZusatztextClass">
<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(DBFakturierung.ArtikelZuText).%OpenId(myID)
		set text = rs.GetZusatztext(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

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

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtikelZuText
	     WHERE Artikel = :ArtikelOid)
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByArtikelOidLaufNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,LaufNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung.ArtikelZuText
	     WHERE Artikel = :ArtikelOid AND LaufNr = :LaufNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ZusatztextArtikel")</DataLocation>
<DefaultData>ArtikelZuTextDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("ZusatztextArtikel")</IdLocation>
<IndexLocation>^DBFakturierung.ArtikelZuTextI</IndexLocation>
<StreamLocation>^DBFakturierung.ArtikelZuTextS</StreamLocation>
<Data name="ArtikelZuTextDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>LaufNr</Value>
</Value>
</Data>
<Data name="Zusatztext">
<Attribute>Zusatztext</Attribute>
<Structure>subnode</Structure>
<Subscript>"Zusatztext"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikel">
</Property>
<Property name="LaufNr">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.AuftrStrg">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61689,47541.047455</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

<Property name="OfferteAnzKopien">
<Description>
Offerte_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="AuftragsbestAnzKopien">
<Description>
Auftragsbestaetigung_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="RuestscheinAnzKopien">
<Description>
Ruestschein_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="LieferscheinAnzKopien">
<Description>
Lieferschein_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="LieferscheinExportFuss">
<Description>
Lieferschein_Export-Fuss</Description>
<Type>%Integer</Type>
</Property>

<Property name="LieferscheinSpezEinst">
<Description>
Lieferschein_SpezEinst</Description>
<Type>%Integer</Type>
</Property>

<Property name="RechnungAnzKopien">
<Description>
Rechnung_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="RechnungSpezEinst">
<Description>
Rechnung_SpezEinst</Description>
<Type>%Integer</Type>
</Property>

<Property name="SammelrechnungAnzKopien">
<Description>
Sammelrechnung_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="SammelrechnungSpezEinst">
<Description>
Sammelrechnung Art_des_Drucks</Description>
<Type>%Integer</Type>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="RechnungExportFuss">
<Description>
Rechnung Export-Fuss</Description>
<Type>%Integer</Type>
</Property>

<Property name="EngrosPreisMutieren">
<Description>
Engros Preis mutieren</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnbruchtsPreisMutieren">
<Description>
Anbruch Preis mutieren</Description>
<Type>%Integer</Type>
</Property>

<Property name="DetailPreisMutieren">
<Description>
Detail Preis mutieren</Description>
<Type>%Integer</Type>
</Property>

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

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

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

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

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

<Index name="Abzug1FibuKontoIndex">
<Properties>Abzug1FibuKonto</Properties>
</Index>

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

<Index name="Abzug2FibuKontoIndex">
<Properties>Abzug2FibuKonto</Properties>
</Index>

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

<Index name="Abzug3FibuKontoIndex">
<Properties>Abzug3FibuKonto</Properties>
</Index>

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

<Index name="ExportTypIndex">
<Properties>ExportTyp</Properties>
</Index>

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

<Index name="PreislisteIndex">
<Properties>Preisliste</Properties>
</Index>

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

<Index name="OfferteDrucktypIndex">
<Properties>OfferteDrucktyp</Properties>
</Index>

<Property name="OfferteFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungOffertenFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="OfferteFusstextIndex">
<Properties>OfferteFusstext</Properties>
</Index>

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

<Index name="AuftragsbestDrucktypIndex">
<Properties>AuftragsbestDrucktyp</Properties>
</Index>

<Property name="AuftragsbestFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungAuftragsbestFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="AuftragsbestFusstextIndex">
<Properties>AuftragsbestFusstext</Properties>
</Index>

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

<Index name="RuestscheinDrucktypIndex">
<Properties>RuestscheinDrucktyp</Properties>
</Index>

<Property name="RuestscheinFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungRuestscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="RuestscheinFusstextIndex">
<Properties>RuestscheinFusstext</Properties>
</Index>

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

<Index name="LieferscheinDrucktypIndex">
<Properties>LieferscheinDrucktyp</Properties>
</Index>

<Property name="LieferscheinFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungLieferscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="LieferscheinFusstextIndex">
<Properties>LieferscheinFusstext</Properties>
</Index>

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

<Index name="RechnungDrucktypIndex">
<Properties>RechnungDrucktyp</Properties>
</Index>

<Property name="RechnungFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungRechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="RechnungFusstextIndex">
<Properties>RechnungFusstext</Properties>
</Index>

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

<Index name="SammelrechnungDrucktypIndex">
<Properties>SammelrechnungDrucktyp</Properties>
</Index>

<Property name="SammelrechnungFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungSammelrechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="SammelrechnungFusstextIndex">
<Properties>SammelrechnungFusstext</Properties>
</Index>

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

<Index name="BarzahlungDrucktypIndex">
<Properties>BarzahlungDrucktyp</Properties>
</Index>

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

<Index name="BarzahlungFusstextIndex">
<Properties>BarzahlungFusstext</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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Index name="GarantieauftragDrucktypIndex">
<Properties>GarantieauftragDrucktyp</Properties>
</Index>

<Property name="GarantieauftragAnzKopien">
<Description>
Garantieauftrag_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

<Property name="GarantieauftragFusstext">
<Type>DBFakturierung.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungGAFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="GarantieauftragFusstextIndex">
<Properties>GarantieauftragFusstext</Properties>
</Index>

<Property name="IsGarantieauftragInaktiv">
<Description>
Garantieauftrag Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Method name="SaveAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>steuerung:DBFakturierung.AuftrStrg,typOid:%String,KundeOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set spez = steuerung
	if (KundeOid = "") && (typOid '= "") {
	//	set spez = ##Class(DBFakturierung.TypStrg).DeleteAuftragsSteuerung(typOid)
		if ('##Class(DBFakturierung.TypStrg).ExistsAuftragsSteuerung(typOid)) {
			set spez = ##Class(DBFakturierung.TypStrg).GetAuftragsSteuerung(typOid)
			set spez = steuerung.%ConstructClone()
			set typ = ##class(DBFakturierung.SD.Hilfstexte).%OpenId(typOid)
			set spez.Typ = typ
		}
		
	} elseif (typOid = "") && (KundeOid '= "") {
	//	set spez = ##Class(DBFakturierung.KundenStrg).DeleteAuftragsSteuerung(KundeOid)
		if ('##Class(DBFakturierung.KundenStrg).ExistsAuftragsSteuerung(KundeOid)) {
			set spez = ##Class(DBFakturierung.KundenStrg).GetAuftragsSteuerung(KundeOid)
			set spez = steuerung.%ConstructClone()
			set adr = ##class(DBAdressen.Adresse).%OpenId(KundeOid)
			set spez.Kunde = adr
		}
		
	}
	set status = spez.%Save()
	quit status
]]></Implementation>
</Method>

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.AuftrStrgD</DataLocation>
<DefaultData>AuftrStrgDefaultData</DefaultData>
<IdLocation>^DBFakturierung.AuftrStrgD</IdLocation>
<IndexLocation>^DBFakturierung.AuftrStrgI</IndexLocation>
<StreamLocation>^DBFakturierung.AuftrStrgS</StreamLocation>
<Data name="AuftrStrgDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>OfferteAnzKopien</Value>
</Value>
<Value name="3">
<Value>AuftragsbestAnzKopien</Value>
</Value>
<Value name="4">
<Value>RuestscheinAnzKopien</Value>
</Value>
<Value name="5">
<Value>LieferscheinAnzKopien</Value>
</Value>
<Value name="6">
<Value>LieferscheinExportFuss</Value>
</Value>
<Value name="7">
<Value>LieferscheinSpezEinst</Value>
</Value>
<Value name="8">
<Value>RechnungAnzKopien</Value>
</Value>
<Value name="9">
<Value>RechnungSpezEinst</Value>
</Value>
<Value name="10">
<Value>SammelrechnungAnzKopien</Value>
</Value>
<Value name="11">
<Value>SammelrechnungSpezEinst</Value>
</Value>
<Value name="12">
<Value>Herkunft</Value>
</Value>
<Value name="13">
<Value>Abzug1</Value>
</Value>
<Value name="14">
<Value>Abzug1Prozent</Value>
</Value>
<Value name="15">
<Value>Abzug2</Value>
</Value>
<Value name="16">
<Value>Abzug2Prozent</Value>
</Value>
<Value name="17">
<Value>Abzug3</Value>
</Value>
<Value name="18">
<Value>Abzug3Prozent</Value>
</Value>
<Value name="19">
<Value>Abzug1Text</Value>
</Value>
<Value name="20">
<Value>Abzug2Text</Value>
</Value>
<Value name="21">
<Value>Abzug3Text</Value>
</Value>
<Value name="22">
<Value>GenerierungOPText</Value>
</Value>
<Value name="23">
<Value>LieferZeit</Value>
</Value>
<Value name="24">
<Value>RechnungExportFuss</Value>
</Value>
<Value name="25">
<Value>EngrosPreisMutieren</Value>
</Value>
<Value name="26">
<Value>AnbruchtsPreisMutieren</Value>
</Value>
<Value name="27">
<Value>DetailPreisMutieren</Value>
</Value>
<Value name="28">
<Value>BarzahlungAnzKopien</Value>
</Value>
<Value name="29">
<Value>BarzahlungSpezEinst</Value>
</Value>
<Value name="30">
<Value>TestGebinderetouren</Value>
</Value>
<Value name="31">
<Value>EinstellungenMutieren</Value>
</Value>
<Value name="32">
<Value>TextOP</Value>
</Value>
<Value name="33">
<Value>Abzug1FibuKonto</Value>
</Value>
<Value name="34">
<Value>Abzug2FibuKonto</Value>
</Value>
<Value name="35">
<Value>Abzug3FibuKonto</Value>
</Value>
<Value name="36">
<Value>ExportTyp</Value>
</Value>
<Value name="37">
<Value>Preisliste</Value>
</Value>
<Value name="38">
<Value>OfferteDrucktyp</Value>
</Value>
<Value name="39">
<Value>OfferteFusstext</Value>
</Value>
<Value name="40">
<Value>AuftragsbestDrucktyp</Value>
</Value>
<Value name="41">
<Value>AuftragsbestFusstext</Value>
</Value>
<Value name="42">
<Value>RuestscheinDrucktyp</Value>
</Value>
<Value name="43">
<Value>RuestscheinFusstext</Value>
</Value>
<Value name="44">
<Value>LieferscheinDrucktyp</Value>
</Value>
<Value name="45">
<Value>LieferscheinFusstext</Value>
</Value>
<Value name="46">
<Value>RechnungDrucktyp</Value>
</Value>
<Value name="47">
<Value>RechnungFusstext</Value>
</Value>
<Value name="48">
<Value>SammelrechnungDrucktyp</Value>
</Value>
<Value name="49">
<Value>SammelrechnungFusstext</Value>
</Value>
<Value name="50">
<Value>BarzahlungDrucktyp</Value>
</Value>
<Value name="51">
<Value>BarzahlungFusstext</Value>
</Value>
<Value name="52">
<Value>Mandant</Value>
</Value>
<Value name="53">
<Value>IsAuftragDatumInaktiv</Value>
</Value>
<Value name="54">
<Value>IsLieferDatumInaktiv</Value>
</Value>
<Value name="55">
<Value>IsRabattInaktiv</Value>
</Value>
<Value name="56">
<Value>IsMwstInaktiv</Value>
</Value>
<Value name="57">
<Value>IsVertreterInaktiv</Value>
</Value>
<Value name="58">
<Value>IsBearbeiterInaktiv</Value>
</Value>
<Value name="59">
<Value>IsKonditionenInaktiv</Value>
</Value>
<Value name="60">
<Value>IsLieferartInaktiv</Value>
</Value>
<Value name="61">
<Value>IsLieferzeitInaktiv</Value>
</Value>
<Value name="62">
<Value>IsGebietInaktiv</Value>
</Value>
<Value name="63">
<Value>IsBestellartInaktiv</Value>
</Value>
<Value name="64">
<Value>IsBestellNrInaktiv</Value>
</Value>
<Value name="65">
<Value>IsBestellerInaktiv</Value>
</Value>
<Value name="66">
<Value>IsReferenzInaktiv</Value>
</Value>
<Value name="67">
<Value>IsSkontoInaktiv</Value>
</Value>
<Value name="68">
<Value>OfferteGebFuss</Value>
</Value>
<Value name="69">
<Value>AuftragsbestGebFuss</Value>
</Value>
<Value name="70">
<Value>RuestscheinGebFuss</Value>
</Value>
<Value name="71">
<Value>LieferscheinGebFuss</Value>
</Value>
<Value name="72">
<Value>RechnungGebFuss</Value>
</Value>
<Value name="73">
<Value>SammelrechnungGebFuss</Value>
</Value>
<Value name="74">
<Value>BarzahlungGebFuss</Value>
</Value>
<Value name="75">
<Value>GebindescheinAnzKopien</Value>
</Value>
<Value name="76">
<Value>GebindescheinDrucktyp</Value>
</Value>
<Value name="77">
<Value>GebindescheinFusstext</Value>
</Value>
<Value name="78">
<Value>GebindescheinGebFuss</Value>
</Value>
<Value name="79">
<Value>VorschlagLieferart</Value>
</Value>
<Value name="80">
<Value>VorschlagGebiet</Value>
</Value>
<Value name="81">
<Value>VorschlagBestellart</Value>
</Value>
<Value name="82">
<Value>VorschlagBestellNr</Value>
</Value>
<Value name="83">
<Value>VorschlagBesteller</Value>
</Value>
<Value name="84">
<Value>VorschlagLieferzeit</Value>
</Value>
<Value name="85">
<Value>VorschlagReferenz</Value>
</Value>
<Value name="86">
<Value>GarantieauftragDrucktyp</Value>
</Value>
<Value name="87">
<Value>GarantieauftragAnzKopien</Value>
</Value>
<Value name="88">
<Value>GarantieauftragFusstext</Value>
</Value>
<Value name="89">
<Value>IsGarantieauftragInaktiv</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abzug1">
</Property>
<Property name="Abzug1FibuKonto">
</Property>
<Property name="Abzug1Prozent">
</Property>
<Property name="Abzug1Text">
</Property>
<Property name="Abzug2">
</Property>
<Property name="Abzug2FibuKonto">
</Property>
<Property name="Abzug2Prozent">
</Property>
<Property name="Abzug2Text">
</Property>
<Property name="Abzug3">
</Property>
<Property name="Abzug3FibuKonto">
</Property>
<Property name="Abzug3Prozent">
</Property>
<Property name="Abzug3Text">
</Property>
<Property name="AnbruchtsPreisMutieren">
</Property>
<Property name="AuftragsbestAnzKopien">
</Property>
<Property name="AuftragsbestDrucktyp">
</Property>
<Property name="AuftragsbestFusstext">
</Property>
<Property name="AuftragsbestGebFuss"/>
<Property name="BarzahlungAnzKopien">
</Property>
<Property name="BarzahlungDrucktyp">
</Property>
<Property name="BarzahlungFusstext">
</Property>
<Property name="BarzahlungGebFuss"/>
<Property name="BarzahlungSpezEinst">
</Property>
<Property name="DetailPreisMutieren">
</Property>
<Property name="EinstellungenMutieren">
</Property>
<Property name="EngrosPreisMutieren">
</Property>
<Property name="ExportTyp">
</Property>
<Property name="GarantieauftragAnzKopien">
</Property>
<Property name="GarantieauftragDrucktyp">
</Property>
<Property name="GarantieauftragFusstext">
</Property>
<Property name="GebindescheinAnzKopien"/>
<Property name="GebindescheinDrucktyp"/>
<Property name="GebindescheinFusstext"/>
<Property name="GebindescheinGebFuss"/>
<Property name="GenerierungOPText">
</Property>
<Property name="Herkunft">
</Property>
<Property name="IsAuftragDatumInaktiv">
</Property>
<Property name="IsBearbeiterInaktiv">
</Property>
<Property name="IsBestellNrInaktiv">
</Property>
<Property name="IsBestellartInaktiv">
</Property>
<Property name="IsBestellerInaktiv">
</Property>
<Property name="IsGarantieauftragInaktiv">
</Property>
<Property name="IsGebietInaktiv">
</Property>
<Property name="IsKonditionenInaktiv">
</Property>
<Property name="IsLieferDatumInaktiv">
</Property>
<Property name="IsLieferartInaktiv">
</Property>
<Property name="IsLieferzeitInaktiv">
</Property>
<Property name="IsMwstInaktiv">
</Property>
<Property name="IsRabattInaktiv">
</Property>
<Property name="IsReferenzInaktiv">
</Property>
<Property name="IsSkontoInaktiv">
</Property>
<Property name="IsVertreterInaktiv">
</Property>
<Property name="LieferZeit">
</Property>
<Property name="LieferscheinAnzKopien">
</Property>
<Property name="LieferscheinDrucktyp">
</Property>
<Property name="LieferscheinExportFuss">
</Property>
<Property name="LieferscheinFusstext">
</Property>
<Property name="LieferscheinGebFuss"/>
<Property name="LieferscheinSpezEinst">
</Property>
<Property name="Mandant">
</Property>
<Property name="OfferteAnzKopien">
</Property>
<Property name="OfferteDrucktyp">
</Property>
<Property name="OfferteFusstext">
</Property>
<Property name="OfferteGebFuss"/>
<Property name="Preisliste">
</Property>
<Property name="RechnungAnzKopien">
</Property>
<Property name="RechnungDrucktyp">
</Property>
<Property name="RechnungExportFuss">
</Property>
<Property name="RechnungFusstext">
</Property>
<Property name="RechnungGebFuss"/>
<Property name="RechnungSpezEinst">
</Property>
<Property name="RuestscheinAnzKopien">
</Property>
<Property name="RuestscheinDrucktyp">
</Property>
<Property name="RuestscheinFusstext">
</Property>
<Property name="RuestscheinGebFuss"/>
<Property name="SammelrechnungAnzKopien">
</Property>
<Property name="SammelrechnungDrucktyp">
</Property>
<Property name="SammelrechnungFusstext">
</Property>
<Property name="SammelrechnungGebFuss"/>
<Property name="SammelrechnungSpezEinst">
</Property>
<Property name="TestGebinderetouren"/>
<Property name="TextOP">
</Property>
<Property name="VorschlagBestellNr">
</Property>
<Property name="VorschlagBestellart">
</Property>
<Property name="VorschlagBesteller">
</Property>
<Property name="VorschlagGebiet">
</Property>
<Property name="VorschlagLieferart">
</Property>
<Property name="VorschlagLieferzeit">
</Property>
<Property name="VorschlagReferenz">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.Auftragskopf">
<Description>
</Description>
<Super>%Persistent,%Populate,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61689,47479.956484</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

<Property name="LieferscheinNr">
<Description>
Lieferschein-Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="RechnungsNr">
<Description>
Rechnungs-Nr</Description>
<Type>%Integer</Type>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="RetourenErfasst">
<Description>
Retouren erfasst</Description>
<Type>%Boolean</Type>
</Property>

<Property name="AuftragValidiert">
<Description>
Auftrag validiert</Description>
<Type>%Boolean</Type>
</Property>

<Property name="VerteillisteNr">
<Description>
Verteilliste-Nr</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="Auftragspos">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>children</Cardinality>
<Inverse>Auftragskopf</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Index name="ZahlungskonditionIndex">
<Properties>Zahlungskondition</Properties>
</Index>

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

<Index name="LieferartIndex">
<Properties>Lieferart</Properties>
</Index>

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

<Index name="BestellartIndex">
<Properties>Bestellart</Properties>
</Index>

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

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
// SachbearbeiterNr wird noch fuer Datenuebernahme benoetigt

]]></Content>
</UDLText>

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

]]></Content>
</UDLText>

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

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

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

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

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

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

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

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

<Index name="WaehrungIndex">
<Properties>Waehrung</Properties>
</Index>

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

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

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

<Index name="VertreterIndex">
<Properties>Vertreter</Properties>
</Index>

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

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

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

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

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

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

<Index name="GebietscodeIndex">
<Properties>Gebietscode</Properties>
</Index>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="Abteilung">
<Type>DBCore.Abteilung</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktAuftragAbteilung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Abteilung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</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="MandantStatusIdx">
<Properties>Mandant,Verbucht,Auftragsstatus</Properties>
</Index>

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

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

<Property name="Buchungscode">
<Type>%Integer</Type>
<InitialExpression>0</InitialExpression>
</Property>

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

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

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

<Property name="Projektbuchung">
<Type>DBProjekt.Buchung</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragFakturierung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Projektbuchung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ProjektbuchungIndex">
<Properties>Projektbuchung</Properties>
</Index>

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

<Index name="BarkontoIndex">
<Properties>Barkonto</Properties>
</Index>

<Property name="Kassenbeleg">
<Description>
Barkonto</Description>
<Type>DBFakturierung.Kassenbeleg</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktKopfKassenbeleg</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Kassenbeleg"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="KassenbelegIndex">
<Properties>Kassenbeleg</Properties>
</Index>

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

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

<Index name="ZusatzAdresseIndex">
<Properties>ZusatzAdresse</Properties>
</Index>

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

<Property name="ZusatzFeld1">
<Type>%String</Type>
<Parameter name="MAXLEN" value="100"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ZusatzFeld2">
<Type>%String</Type>
<Parameter name="MAXLEN" value="100"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ZusatzFeld3">
<Type>%String</Type>
<Parameter name="MAXLEN" value="100"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ZusatzFeld4">
<Type>%String</Type>
<Parameter name="MAXLEN" value="100"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ZusatzFeld5">
<Type>%String</Type>
<Parameter name="MAXLEN" value="100"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="OrthoVerfuegung">
<Type>DBSpezial.Ortho.Verfuegung</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktAuftragskopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="OrthoVerfuegungIndex">
<Properties>OrthoVerfuegung</Properties>
</Index>

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

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

<Property name="KassenBon">
<Type>DBKasse.KassenBon</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktAuftrag</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="KassenBonIndex">
<Properties>KassenBon</Properties>
<Unique>1</Unique>
</Index>

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

<Property name="Auftragstyp">
<Type>DBFakturierung.SD.Auftragstyp</Type>
<Cardinality>one</Cardinality>
<Inverse>Fakturierung</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="AuftragstypIndex">
<Properties>Auftragstyp</Properties>
</Index>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Method name="SetBStatusMutiert">
<Implementation><![CDATA[
	set exists = $GET(^FaktKopfNotSetStatusMutiert(..%Id()))
	set existsDeleting = $GET(^FaktAuftragskopfIsDeleting(..%Id()))
	if ((('exists) || ('^FaktKopfNotSetStatusMutiert(..%Id())))) {
		if ((('existsDeleting) || ('^FaktAuftragskopfIsDeleting(..%Id())))) {
			set check = 0
			if (##class(DBFakturierung.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusOF)) {
				set ..BearbeitungsstatusOF = ##class(DBFakturierung.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFakturierung.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusAU)) {
				set ..BearbeitungsstatusAU = ##class(DBFakturierung.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFakturierung.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusRZ)) {
				set ..BearbeitungsstatusRZ = ##class(DBFakturierung.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFakturierung.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusLS)) {
				set ..BearbeitungsstatusLS = ##class(DBFakturierung.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFakturierung.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusRG)) {
				set ..BearbeitungsstatusRG = ##class(DBFakturierung.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBFakturierung.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusBZ)) {
				set ..BearbeitungsstatusBZ = ##class(DBFakturierung.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			
			if (check) {
				do ..%Save()
			}
		}
	}
]]></Implementation>
</Method>

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

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

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

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

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

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

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

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

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

<Method name="CopyAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>FibuMandOid:%String,AuftragOid:%String,nextAuftragsNr:%Integer,MitarbeiterOid:%String,chargenAusgang:%Boolean,storno:%Boolean,kunde:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set faktor = 1
	if (storno) {
		set faktor = -1
	}
	
	set user = ##class(DBCore.Mitarbeiter).%OpenId(MitarbeiterOid)
	w "user: ", user, !
	
	set sAuf = ##class(DBFakturierung.Auftragskopf).%OpenId(AuftragOid)
	w "sAuf ", sAuf, !
	set dAuf = ##class(DBFakturierung.Auftragskopf).%New()
	w "dAuf ", dAuf, !
	
	if ((kunde = "") || (kunde = sAuf.Adresse)) {
		set dAuf.Adresse = sAuf.Adresse
		set dAuf.Adresszeile1 = sAuf.Adresszeile1
		set dAuf.Adresszeile2 = sAuf.Adresszeile2
		set dAuf.Adresszeile3 = sAuf.Adresszeile3
		set dAuf.Anrede = sAuf.Anrede
		set dAuf.Name = sAuf.Name
		set dAuf.Ort = sAuf.Ort
		set dAuf.Plz = sAuf.Plz
		set dAuf.PlzZusatz = sAuf.PlzZusatz
		set dAuf.ZahlAdresse = sAuf.ZahlAdresse
	} else {
		set adresse = ##class(DBAdressen.Adresse).%OpenId(kunde)
		set dAuf.Adresszeile1 = adresse.GetZusatz1(adresse.Adresscode, adresse.VornameZusatz1)
		set dAuf.Adresszeile2 = adresse.Zusatz2
		if ((adresse.Hausnummer '= "") && (adresse.Hausnummer '= $c(0)) && (adresse.Hausnummer '= $$$NULLOREF)) {
			w "HabeHausNr:"_adresse.Hausnummer,!
			set dAuf.Adresszeile3 = adresse.Strasse_" "_adresse.Hausnummer
		} else {
			set dAuf.Adresszeile3 = adresse.Strasse
		}
		set dAuf.Anrede = adresse.Anrede
		set dAuf.Name = adresse.GetName(adresse.Adresscode, adresse.Name, adresse.VornameZusatz1, 0)
		set dAuf.Ort = adresse.Ort
		set dAuf.Plz = adresse.Plz
		set dAuf.PlzZusatz = adresse.PlzInklZusatz
		
		w "adr ", kunde, !
		set debi = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, kunde)
		w "debi ", debi, !
	
		if (debi '= "") {
			set debitor = ##class(DBDebiKredi.Debitor).%OpenId(debi)
			set dAuf.Adresse = debitor
			set dAuf.ZahlAdresse = debitor.Zahladresse
		} else {
			quit ""
		}
	}
	
	set dAuf.Auftragsdatum = +$H
	set dAuf.AuftragsNr = nextAuftragsNr
	set dAuf.Auftragsstatus = 0
	set dAuf.AuftragValidiert = 0
	set dAuf.Barkonto = sAuf.Barkonto
	set dAuf.BearbeitungsstatusAU = ##class(DBFakturierung.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusBZ = ##class(DBFakturierung.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusLS = ##class(DBFakturierung.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusOF = ##class(DBFakturierung.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusRG = ##class(DBFakturierung.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusRZ = ##class(DBFakturierung.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.Bestellart = sAuf.Bestellart
	set dAuf.Besteller = sAuf.Besteller
	set dAuf.BestellNr = sAuf.BestellNr
	set dAuf.CodeMwst = sAuf.CodeMwst
	set dAuf.Fusstext = sAuf.Fusstext
	set dAuf.Fusstext1 = sAuf.Fusstext1
	set dAuf.Fusstext2 = sAuf.Fusstext2
	set dAuf.Fusstext3 = sAuf.Fusstext3
	set dAuf.Fusstext4 = sAuf.Fusstext4
	set dAuf.Gebietscode = sAuf.Gebietscode
	set dAuf.IsGarantieAuftrag = sAuf.IsGarantieAuftrag
	set dAuf.Projekt = sAuf.Projekt
	set dAuf.Kurs = sAuf.Kurs
	set dAuf.Kurseinheit = sAuf.Kurseinheit
	set dAuf.Lieferart = sAuf.Lieferart
	set dAuf.Lieferdatum = sAuf.Lieferdatum
	set dAuf.LieferscheinNr = 0
	set dAuf.Lieferzeit = sAuf.Lieferzeit
	set dAuf.RabattProzent = sAuf.RabattProzent
	set dAuf.Rechnungsdatum = 0
	set dAuf.RechnungsNr = 0
	set dAuf.Referenz = sAuf.Referenz
	set dAuf.RetourenErfasst = sAuf.RetourenErfasst
	set dAuf.Sachbearbeiter = user
	set dAuf.Skonto = (faktor * sAuf.Skonto)
	set dAuf.SkontoFW = (faktor * sAuf.SkontoFW)
	set dAuf.StatusAutoVerarbeitung = 0
	set dAuf.Verbucht = 0
	set dAuf.VerbuchungsjournalNr = 0
	set dAuf.VerteillisteNr = 0
	set dAuf.Vertreter = sAuf.Vertreter
	set dAuf.Waehrung = sAuf.Waehrung
	set dAuf.Zahlungskondition = sAuf.Zahlungskondition
	set dAuf.Mandant = sAuf.Mandant
	set dAuf.BCGesperrt = sAuf.BCGesperrt
	set dAuf.Buchungscode = sAuf.Buchungscode
	if (storno = 1) {
		set dAuf.IsStorno = 1
		set sAuf.IsStorniert = 1
	}
	
	set scAuf = dAuf.%Save()
	set scAufSrc = sAuf.%Save()
	
	//Multilager Aktiv?
	set multilager = ##class(DBCore.MandantEinstellung).GetBoolEinst(sAuf.Mandant, 1150040)
	
	if ($$$ISOK(scAuf)) {
		Set strSQL="SELECT ID FROM DBFakturierung.Auftragspos WHERE Auftragskopf="_AuftragOid
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set sPos = ##class(DBFakturierung.Auftragspos).%OpenId(rs.Data("ID"))
			w "sPos ", sPos, !
			set dPos = ##class(DBFakturierung.Auftragspos).%New()
			w "dPos ", dPos, !
			
			set dPos.Abzugstyp = sPos.Abzugstyp
			set dPos.Artikel = sPos.Artikel
			set dPos.Artikelcode = sPos.Artikelcode
			set dPos.Auftragskopf = dAuf
			set dPos.BestellNr = sPos.BestellNr
			set dPos.BestellteMenge = (faktor * sPos.BestellteMenge)
			set dPos.BetragExklMwst = (faktor * sPos.BetragExklMwst)
			set dPos.BetragExklMwstFW = (faktor * sPos.BetragExklMwstFW)
			set dPos.BetragInklMwstFW = (faktor * sPos.BetragInklMwstFW)
			set dPos.BetragInklMwst = (faktor * sPos.BetragInklMwst)
			
			w "dPos ", dPos, !
			set dPos.DetailText = sPos.DetailText
			set dPos.GewichtBrutto = sPos.GewichtBrutto
			set dPos.GewichtNetto = sPos.GewichtNetto
			set dPos.GewichtTara = sPos.GewichtTara
			set dPos.Herkunft = sPos.Herkunft
			set dPos.Lagerort = sPos.Lagerort
			if (dPos.Lagerort = "") {
				set lagerOid = ""
				if (multilager = 1) {
					//Gesamtlager
					set lagerOid = ##class(DBFakturierung.SD.Lagerort).GetIdByPosNrOnMandant(sAuf.Mandant, 0)
				} elseif(dPos.Artikel.SingleLagerOrt = "") {
					//Hauptlager
					set lagerOid = ##class(DBFakturierung.SD.Lagerort).GetIdByPosNrOnMandant(sAuf.Mandant, 0)
				} else {
					set lagerOid = 	dPos.Artikel.SingleLagerOrt.%Id()
				}
				
				if (lagerOid '= "") {
					SET dPos.Lagerort = ##class(DBFakturierung.SD.Lagerort).%OpenId(lagerOid)
				}
			}
			set dPos.Lagerstatus = ##class(DBFakturierung.Konst).LagerstatusKeinLager()
			set dPos.Lieferant = sPos.Lieferant
			set dPos.Lieferdatum = sPos.Lieferdatum
			set dPos.Menge = (faktor * sPos.Menge)
			set dPos.Mengeneinheit = sPos.Mengeneinheit
			set dPos.Mwst = sPos.Mwst
			set dPos.MwstBetrag = (faktor * sPos.MwstBetrag)
			set dPos.MwstExport = sPos.MwstExport
			set dPos.MwstSatz = sPos.MwstSatz
			set dPos.MwstSatzExport = sPos.MwstSatzExport
			set dPos.ParzellenNr = sPos.ParzellenNr
			set dPos.PositionsNr = sPos.PositionsNr
			set dPos.Preis = sPos.Preis
			set dPos.PreisFW = sPos.PreisFW
			set dPos.RabattBetrag = (faktor * sPos.RabattBetrag)
			set dPos.RabattProzent = sPos.RabattProzent
			set dPos.SpezPreis = sPos.SpezPreis
			set dPos.Vertreter = sPos.Vertreter
			set dPos.Warenaufwand = (faktor * sPos.Warenaufwand)
			set dPos.ZusatztextID = sPos.ZusatztextID
			set dPos.Buchungscode = sPos.Buchungscode
			
			w "dPos2 ", dPos, !
			set scPos = dPos.%Save()
			
			if ($$$ISERR(scPos)) {
				w "Fehler bei der Detailposition: "_scPos
			}
	    }
	    
    } else {
	    w "Fehler beim Auftrag: "_scAuf
    }
    
	Quit dAuf.%Id()
]]></Implementation>
</Method>

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

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

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

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

<Method name="GetTotalMitGebindeByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String,IsOrtho:%Boolean,Selbstbehalt:%Boolean</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (IsOrtho = 1) {
		if (Selbstbehalt = 1) {
			&sql(SELECT SUM(CASE WHEN (Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent()) THEN
								(-1) * Nettobetrag2InklMwstEW
							ELSE 
								Nettobetrag2InklMwstEW
							END) INTO :betrag 
					FROM DBFakturierung.Auftragspos
	     			WHERE Auftragskopf->RechnungsNr=:RgNr AND 
	     				Auftragskopf->Mandant = :MandantOid AND 
			     		Artikelcode<>DBFakturierung.Konst_AcRabattZwischentotal() AND
			     		Artikelcode<>DBFakturierung.Konst_AcZwischentotal() AND
			     		Artikelcode<>DBFakturierung.Konst_AcZwischentotalVorRabatt() AND
			     		Artikelcode<>DBFakturierung.Konst_AcRabattGesamttotal() AND
			     		Artikelcode<>DBFakturierung.Konst_AcGesamttotal() AND
	     				Artikelcode<>DBFakturierung.Konst_AcOrthoTotalTaxpunkte() AND
			     		(Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehalt() OR
			     		Artikelcode=DBFakturierung.Konst_AcOrthoSelbstbehaltProzent()))
	     		
		} else {
			&sql(SELECT SUM(Nettobetrag2InklMwstEW) INTO :betrag 
					FROM DBFakturierung.Auftragspos
	     			WHERE Auftragskopf->RechnungsNr=:RgNr AND 
	     				Auftragskopf->Mandant = :MandantOid AND 
			     		Artikelcode<>DBFakturierung.Konst_AcRabattZwischentotal() AND
			     		Artikelcode<>DBFakturierung.Konst_AcZwischentotal() AND
			     		Artikelcode<>DBFakturierung.Konst_AcZwischentotalVorRabatt() AND
			     		Artikelcode<>DBFakturierung.Konst_AcRabattGesamttotal() AND
			     		Artikelcode<>DBFakturierung.Konst_AcGesamttotal() AND
	     				Artikelcode<>DBFakturierung.Konst_AcOrthoTotalTaxpunkte())

		}
	} else {
		&sql(SELECT SUM(TotalMitGebinde) INTO :betrag FROM DBFakturierung.Auftragskopf WHERE RechnungsNr=:RgNr AND Mandant = :MandantOid)
	}
	if (SQLCODE '= 0) {
		set betrag = 0
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBuchungsTyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set maxCode = ##Class(DBFakturierung.Konst).ADBuchungstypRGKunde()
	set maxBetrag = 0
	set betrag = 0
	&sql(SELECT ABS(SUM(BetragExklMwst)) INTO :betrag FROM DBFakturierung.Auftragspos WHERE Auftragskopf->ID=:AuftragOid AND Buchungscode = DBFakturierung.Konst_ADBuchungstypRGKunde())
	set maxBetrag = betrag
	
	set betrag = 0
	&sql(SELECT ABS(SUM(BetragExklMwst)) INTO :betrag FROM DBFakturierung.Auftragspos WHERE Auftragskopf->ID=:AuftragOid AND Buchungscode = DBFakturierung.Konst_ADBuchungstypGUzuRG())
	
	if (betrag > maxBetrag) {
		set maxBetrag = betrag
		set maxCode = ##Class(DBFakturierung.Konst).ADBuchungstypGUzuRG()
	}
	
	set betrag = 0
	&sql(SELECT ABS(SUM(BetragExklMwst)) INTO :betrag FROM DBFakturierung.Auftragspos WHERE Auftragskopf->ID=:AuftragOid AND Buchungscode = DBFakturierung.Konst_ADBuchungstypGUKunde())
	
	if (betrag > maxBetrag) {
		set maxBetrag = betrag
		set maxCode = ##Class(DBFakturierung.Konst).ADBuchungstypGUKunde()
	}
	
	set betrag = 0
	&sql(SELECT ABS(SUM(BetragExklMwst)) INTO :betrag FROM DBFakturierung.Auftragspos WHERE Auftragskopf->ID=:AuftragOid AND Buchungscode = DBFakturierung.Konst_ADBuchungstypRGzuGU())
	
	if (betrag > maxBetrag) {
		set maxBetrag = betrag
		set maxCode = ##Class(DBFakturierung.Konst).ADBuchungstypRGzuGU()
	}
	
	Quit maxCode
]]></Implementation>
</Method>

<Method name="IsDebitor">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set b = ##class(DBFakturierung.Auftragskopf).GetBuchungsTyp(AuftragOid)
	quit ((b = ##Class(DBFakturierung.Konst).ADBuchungstypRGKunde()) || (b = ##Class(DBFakturierung.Konst).ADBuchungstypGUzuRG()))
]]></Implementation>
</Method>

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

<Method name="CheckGeraeteBuchungen">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set count = 0
	&sql(SELECT Count(ID) INTO :count FROM DBFakturierung.TmpAusgGeraet WHERE RechnungPos->Auftragskopf->ID=:AuftragOid AND Lagerstatus = DBFakturierung.Konst_LagerstatusKeinLager() AND Geraet->Anzahl < Anzahl )
	if (count > 0) {
		quit 0	
	} else {
		quit 1	
	}
]]></Implementation>
</Method>

<Method name="SearchWithFreeSelektion">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,vonDatum:%Date,bisDatum:%Date,nachStatus:%Boolean,auftragStatus:%Integer,nurVerbuchte:%Boolean,nurBarzahlungen:%Boolean,nurNichtAusgelieferte:%Boolean,nurAusgelieferte:%Boolean</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set strSQL = "SELECT ID, Adresse->Adresse->ID As AdressOid, Adresse->Adresse->Adressnummer As Adressnummer, "
	Set strSQL = strSQL_"Rechnungsdatum, Lieferdatum, Auftragsdatum, "
	Set strSQL = strSQL_"Auftragsstatus, StatusAutoVerarbeitung, RechnungsNr, LieferscheinNr, AuftragsNr, "
	Set strSQL = strSQL_"TotalMitGebinde, Verbucht, "
	Set strSQL = strSQL_"BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, "
	Set strSQL = strSQL_"BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ "
	Set strSQL = strSQL_"FROM DBFakturierung.Auftragskopf "
	Set strSQL = strSQL_"WHERE Mandant = "_MandantOid_" "
	Set strSQL = strSQL_"AND Auftragsdatum between '"_$ZDate(vonDatum,3)_"' and '"_$ZDate(bisDatum,3)_"' "
	
	if (nachStatus) {
		Set strSQL = strSQL_"AND Auftragsstatus = "_auftragStatus_" "
	}
	if (nurBarzahlungen) {
		Set strSQL = strSQL_"AND BearbeitungsstatusBZ = DBAgrofresh.Konst_BearbeitungsstatusGedruckt() "
	}
	if (nurNichtAusgelieferte) {
		Set strSQL = strSQL_"AND Auftragsstatus < 4 "
	}
	if (nurAusgelieferte) {
		Set strSQL = strSQL_"AND Auftragsstatus >= 4 "
	}
	if (nurVerbuchte) {
		Set strSQL = strSQL_"AND Verbucht = 0 "
	}
	
	Set strSQL = strSQL_"ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC"
	
	Quit strSQL
	/*Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()	
	IF $$$ISOK(sc) {
		quit rs
	} else {
		quit ""
	}*/
]]></Implementation>
</Method>

<Method name="GetAnzVerbuchungDebi">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set anz=0
	&sql(
		SELECT Count(RechnungsNr) Into :anz
		FROM (
			SELECT RechnungsNr
			FROM DBFakturierung.Auftragskopf 
			WHERE Mandant = :MandantOid AND
				DBFakturierung.Auftragskopf_IsDebitor(ID) = 1 AND
				NVL(Verbucht,0) = 0 AND
				StatusAutoVerarbeitung < 4 AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
				Rechnungsnr>=:vonRgNr AND
				Rechnungsnr<=:bisRgNr AND
				Rechnungsdatum<={d :bisRgDatum} AND
				(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
				(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)
			GROUP BY RechnungsNr
		)
	)
	quit anz
]]></Implementation>
</Method>

<Method name="GetAnzVerbuchungKredi">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,vonRgNr:%Integer,bisRgNr:%Integer,bisRgDatum:%Date,nurBarzahlungen:%Boolean,barzahlungsZahlungskondOid:%String,nurFreigegebene:%Boolean,freigabeCode:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set anz=0
	&sql(
		SELECT Count(RechnungsNr) Into :anz
		FROM (
			SELECT RechnungsNr
			FROM DBFakturierung.Auftragskopf 
			WHERE Mandant = :MandantOid AND
				DBFakturierung.Auftragskopf_IsDebitor(ID) = 0 AND
				NVL(Verbucht,0) = 0 AND
				StatusAutoVerarbeitung < 4 AND (DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) = 1 OR DBFakturierung.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusBZ) = 1) AND
				Rechnungsnr>=:vonRgNr AND
				Rechnungsnr<=:bisRgNr AND
				Rechnungsdatum<={d :bisRgDatum} AND
				(:nurBarzahlungen <> 1 OR Zahlungskondition = :barzahlungsZahlungskondOid) AND
				(:nurFreigegebene <> 1 OR StatusAutoVerarbeitung = :freigabeCode)
			GROUP BY RechnungsNr
		)
	)
	quit anz
]]></Implementation>
</Method>

<Method name="IsDebitorJournal">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,JournalNr:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set AuftragOid = ""
	&sql(SELECT TOP 1 ID Into :AuftragOid FROM DBFakturierung.Auftragskopf WHERE Mandant=:MandOid AND VerbuchungsjournalNr=:JournalNr)
	
	set b = ##class(DBFakturierung.Auftragskopf).GetBuchungsTyp(AuftragOid)
	quit ((b = ##Class(DBFakturierung.Konst).ADBuchungstypRGKunde()) || (b = ##Class(DBFakturierung.Konst).ADBuchungstypGUzuRG()))
]]></Implementation>
</Method>

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

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.AuftragskopfD</DataLocation>
<DefaultData>AuftragskopfDefaultData</DefaultData>
<IdLocation>^DBFakturierung.AuftragskopfD</IdLocation>
<IndexLocation>^DBFakturierung.AuftragskopfI</IndexLocation>
<StreamLocation>^DBFakturierung.AuftragskopfS</StreamLocation>
<Data name="AuftragskopfDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AuftragsNr</Value>
</Value>
<Value name="3">
<Value>LieferscheinNr</Value>
</Value>
<Value name="4">
<Value>RechnungsNr</Value>
</Value>
<Value name="5">
<Value>Auftragsdatum</Value>
</Value>
<Value name="6">
<Value>Lieferdatum</Value>
</Value>
<Value name="7">
<Value>Rechnungsdatum</Value>
</Value>
<Value name="8">
<Value>Auftragsstatus</Value>
</Value>
<Value name="9">
<Value>StatusAutoVerarbeitung</Value>
</Value>
<Value name="10">
<Value>CodeMwst</Value>
</Value>
<Value name="11">
<Value>Besteller</Value>
</Value>
<Value name="12">
<Value>Referenz</Value>
</Value>
<Value name="13">
<Value>BestellNr</Value>
</Value>
<Value name="14">
<Value>Fusstext1</Value>
</Value>
<Value name="15">
<Value>Fusstext2</Value>
</Value>
<Value name="16">
<Value>Fusstext3</Value>
</Value>
<Value name="17">
<Value>Fusstext4</Value>
</Value>
<Value name="18">
<Value>Anrede</Value>
</Value>
<Value name="19">
<Value>Name</Value>
</Value>
<Value name="20">
<Value>Adresszeile1</Value>
</Value>
<Value name="21">
<Value>Adresszeile2</Value>
</Value>
<Value name="22">
<Value>Adresszeile3</Value>
</Value>
<Value name="23">
<Value>Plz</Value>
</Value>
<Value name="24">
<Value>PlzZusatz</Value>
</Value>
<Value name="25">
<Value>Ort</Value>
</Value>
<Value name="26">
<Value>RabattProzent</Value>
</Value>
<Value name="27">
<Value>Kurs</Value>
</Value>
<Value name="28">
<Value>Kurseinheit</Value>
</Value>
<Value name="29">
<Value>Lieferzeit</Value>
</Value>
<Value name="30">
<Value>RetourenErfasst</Value>
</Value>
<Value name="31">
<Value>AuftragValidiert</Value>
</Value>
<Value name="32">
<Value>VerteillisteNr</Value>
</Value>
<Value name="33">
<Value>Skonto</Value>
</Value>
<Value name="34">
<Value>Zahlungskondition</Value>
</Value>
<Value name="35">
<Value>Lieferart</Value>
</Value>
<Value name="36">
<Value>Bestellart</Value>
</Value>
<Value name="37">
<Value>SachbearbeiterNr</Value>
</Value>
<Value name="38">
<Value>SachbearbeiterBenutzername</Value>
</Value>
<Value name="39">
<Value>SachbearbeiterVorname</Value>
</Value>
<Value name="40">
<Value>SachbearbeiterName</Value>
</Value>
<Value name="41">
<Value>Fusstext</Value>
</Value>
<Value name="42">
<Value>Adresse</Value>
</Value>
<Value name="43">
<Value>ZahlAdresse</Value>
</Value>
<Value name="44">
<Value>Waehrung</Value>
</Value>
<Value name="45">
<Value>Vertreter</Value>
</Value>
<Value name="46">
<Value>Gebietscode</Value>
</Value>
<Value name="47">
<Value>BearbeitungsstatusOF</Value>
</Value>
<Value name="48">
<Value>BearbeitungsstatusAU</Value>
</Value>
<Value name="49">
<Value>BearbeitungsstatusRZ</Value>
</Value>
<Value name="50">
<Value>BearbeitungsstatusLS</Value>
</Value>
<Value name="51">
<Value>BearbeitungsstatusRG</Value>
</Value>
<Value name="52">
<Value>BearbeitungsstatusBZ</Value>
</Value>
<Value name="53">
<Value>GebindeVerrechnungAktiv</Value>
</Value>
<Value name="54">
<Value>Verbucht</Value>
</Value>
<Value name="55">
<Value>VerbuchungsjournalNr</Value>
</Value>
<Value name="56">
<Value>OP</Value>
</Value>
<Value name="57">
<Value>SkontoFW</Value>
</Value>
<Value name="58">
<Value>Abteilung</Value>
</Value>
<Value name="59">
<Value>Mandant</Value>
</Value>
<Value name="60">
<Value>Projekt</Value>
</Value>
<Value name="61">
<Value>Buchungscode</Value>
</Value>
<Value name="62">
<Value>BCGesperrt</Value>
</Value>
<Value name="63">
<Value>ProjektVerbucht</Value>
</Value>
<Value name="64">
<Value>ProjektVerbuchungsjnr</Value>
</Value>
<Value name="65">
<Value>Projektbuchung</Value>
</Value>
<Value name="66">
<Value>Barkonto</Value>
</Value>
<Value name="67">
<Value>Kassenbeleg</Value>
</Value>
<Value name="68">
<Value>IsGarantieAuftrag</Value>
</Value>
<Value name="69">
<Value>ZusatzAdresse</Value>
</Value>
<Value name="70">
<Value>WasserTyp</Value>
</Value>
<Value name="71">
<Value>ZusatzFeld1</Value>
</Value>
<Value name="72">
<Value>ZusatzFeld2</Value>
</Value>
<Value name="73">
<Value>ZusatzFeld3</Value>
</Value>
<Value name="74">
<Value>ZusatzFeld4</Value>
</Value>
<Value name="75">
<Value>ZusatzFeld5</Value>
</Value>
<Value name="76">
<Value>OrthoVerfuegung</Value>
</Value>
<Value name="77">
<Value>IsStorno</Value>
</Value>
<Value name="78">
<Value>IsStorniert</Value>
</Value>
<Value name="79">
<Value>KassenBon</Value>
</Value>
<Value name="80">
<Value>Sachbearbeiter</Value>
</Value>
<Value name="81">
<Value>Auftragstyp</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abteilung">
</Property>
<Property name="Adresse">
</Property>
<Property name="Adresszeile1">
</Property>
<Property name="Adresszeile2">
</Property>
<Property name="Adresszeile3">
</Property>
<Property name="Anrede">
</Property>
<Property name="AuftragValidiert">
</Property>
<Property name="AuftragsNr">
</Property>
<Property name="Auftragsdatum">
</Property>
<Property name="Auftragsstatus">
</Property>
<Property name="Auftragstyp">
</Property>
<Property name="BCGesperrt">
</Property>
<Property name="Barkonto">
</Property>
<Property name="BearbeitungsstatusAU">
</Property>
<Property name="BearbeitungsstatusBZ">
</Property>
<Property name="BearbeitungsstatusLS">
</Property>
<Property name="BearbeitungsstatusOF">
</Property>
<Property name="BearbeitungsstatusRG">
</Property>
<Property name="BearbeitungsstatusRZ">
</Property>
<Property name="BestellNr">
</Property>
<Property name="Bestellart">
</Property>
<Property name="Besteller">
</Property>
<Property name="BetragEWExklMwst">
</Property>
<Property name="BetragEWInklMwst">
</Property>
<Property name="BetragFWExklMwst">
</Property>
<Property name="BetragFWInklMwst">
</Property>
<Property name="BetragMwst">
</Property>
<Property name="BetragMwstFW">
</Property>
<Property name="BruttoGewinn">
</Property>
<Property name="Buchungscode">
</Property>
<Property name="CodeMwst">
</Property>
<Property name="Fusstext">
</Property>
<Property name="Fusstext1">
</Property>
<Property name="Fusstext2">
</Property>
<Property name="Fusstext3">
</Property>
<Property name="Fusstext4">
</Property>
<Property name="Gebietscode">
</Property>
<Property name="GebindeMwstBetrag"/>
<Property name="GebindeMwstBetragFW"/>
<Property name="GebindeSaldo"/>
<Property name="GebindeSaldoFW"/>
<Property name="GebindeVerrechnungAktiv"/>
<Property name="GewichtBrutto">
</Property>
<Property name="GewichtNetto">
</Property>
<Property name="GewichtTara">
</Property>
<Property name="IsGarantieAuftrag">
</Property>
<Property name="IsStorniert">
</Property>
<Property name="IsStorno">
</Property>
<Property name="KassenBon">
</Property>
<Property name="Kassenbeleg">
</Property>
<Property name="Kurs">
</Property>
<Property name="Kurseinheit">
</Property>
<Property name="Lieferart">
</Property>
<Property name="Lieferdatum">
</Property>
<Property name="LieferscheinNr">
</Property>
<Property name="Lieferzeit">
</Property>
<Property name="Mandant">
</Property>
<Property name="Name">
</Property>
<Property name="OP">
</Property>
<Property name="Ort">
</Property>
<Property name="OrthoVerfuegung">
</Property>
<Property name="Plz">
</Property>
<Property name="PlzZusatz">
</Property>
<Property name="Projekt">
</Property>
<Property name="ProjektVerbucht">
</Property>
<Property name="ProjektVerbuchungsjnr">
</Property>
<Property name="Projektbuchung">
</Property>
<Property name="RabattProzent">
</Property>
<Property name="RechnungsNr">
</Property>
<Property name="Rechnungsdatum">
</Property>
<Property name="Referenz">
</Property>
<Property name="RetourenErfasst">
</Property>
<Property name="Sachbearbeiter">
</Property>
<Property name="SachbearbeiterBenutzername"/>
<Property name="SachbearbeiterName"/>
<Property name="SachbearbeiterNr">
</Property>
<Property name="SachbearbeiterVorname"/>
<Property name="Skonto">
</Property>
<Property name="SkontoFW">
</Property>
<Property name="StatusAutoVerarbeitung">
</Property>
<Property name="TotalMitGebinde">
</Property>
<Property name="TotalMitGebindeFW">
</Property>
<Property name="Verbucht">
</Property>
<Property name="VerbuchungsjournalNr">
</Property>
<Property name="VerteillisteNr">
</Property>
<Property name="Vertreter">
</Property>
<Property name="Waehrung">
</Property>
<Property name="Warenaufwand">
</Property>
<Property name="WasserTyp">
</Property>
<Property name="ZahlAdresse">
</Property>
<Property name="Zahlungskondition">
</Property>
<Property name="ZusatzAdresse">
</Property>
<Property name="ZusatzFeld1">
</Property>
<Property name="ZusatzFeld2">
</Property>
<Property name="ZusatzFeld3">
</Property>
<Property name="ZusatzFeld4">
</Property>
<Property name="ZusatzFeld5">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.Auftragspos">
<Super>%Persistent,%Populate,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61689,47507.285499</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="Auftragskopf">
<Type>DBFakturierung.Auftragskopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>Auftragspos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Auftragskopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

<Index name="HerkunftIndex">
<Properties>Herkunft</Properties>
</Index>

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

<Index name="MengeneinheitIndex">
<Properties>Mengeneinheit</Properties>
</Index>

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

<Index name="MwstIndex">
<Properties>Mwst</Properties>
</Index>

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

<Index name="MwstExportIndex">
<Properties>MwstExport</Properties>
</Index>

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

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

<Index name="AbzugstypIndex">
<Properties>Abzugstyp</Properties>
</Index>

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

<Index name="VertreterIndex">
<Properties>Vertreter</Properties>
</Index>

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

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

<Index name="QualitaetIndex">
<Properties>Qualitaet</Properties>
</Index>

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

<Index name="LagerortIndex">
<Properties>Lagerort</Properties>
</Index>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="Buchungscode">
<Type>%Integer</Type>
<InitialExpression>0</InitialExpression>
</Property>

<Property name="LSVADistanz">
<Type>DBFakturierung.SD.LSVADist</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragPos</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="LSVADistanzIndex">
<Properties>LSVADistanz</Properties>
</Index>

<Property name="LSVAKategorie">
<Type>DBFakturierung.SD.LSVAKat</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragPos</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="LSVAKategorieIndex">
<Properties>LSVAKategorie</Properties>
</Index>

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

<Property name="Geraet">
<Type>DBFakturierung.TmpAusgGeraet</Type>
<Cardinality>many</Cardinality>
<Inverse>RechnungPos</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="ZaehlerNr">
<Type>%String</Type>
<Parameter name="MAXLEN" value="10"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

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

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

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

<Method name="RechnungHasDetails">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	Set strSQL="SELECT TOP 1 ID FROM DBFakturierung.Auftragspos WHERE  Auftragskopf->RechnungsNr='"_RgNr_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set id=rs.Data("ID")
		}
	}
	Quit id '= ""
]]></Implementation>
</Method>

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

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

<Method name="GetOidByPosAndZusatzId">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,PosNr:%Integer,ZusatzTextId:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	
	set oid = ""
	Set strSQL="SELECT ID FROM DBFakturierung.Auftragspos WHERE  Auftragskopf ="_AuftragOid_" AND PositionsNr = "_PosNr_" AND ZusatztextID = "_ZusatzTextId
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		if rs.Next(.sc) {
			Set oid=rs.Data("ID")
		}
	}
	Quit oid
]]></Implementation>
</Method>

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

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

<Method name="UpdateLieferdatumByAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,NewDatum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set sqlDate = $ZDate(NewDatum,3)
	Set strSQL="UPDATE DBFakturierung.Auftragspos (Lieferdatum) VALUES ({d '"_sqlDate_"'}) WHERE  Auftragskopf ='"_AuftragOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	Quit $$$ISOK(sc)
]]></Implementation>
</Method>

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

<Method name="DeleteZusatztext">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,PosNr:%Integer,ZusatzTextId:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	Set strSQL="SELECT ID FROM DBFakturierung.Auftragspos WHERE  Auftragskopf ="_AuftragOid_" AND PositionsNr = "_PosNr_" AND ZusatztextID = "_ZusatzTextId
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		if rs.Next(.sc) {
			Set oid=rs.Data("ID")
			w ##class(DBFakturierung.Auftragspos).%DeleteId(oid)
		}
	}
	Quit 1
]]></Implementation>
</Method>

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

<P>If this method returns an error then the object will not be deleted.
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set myId = $lg(oid,1)
	w !,"OnDelete Auftragspos",!
	
	set ^FaktAuftragsDetIsDeleting(myId) = 1
	
	set auftragId = ""
	set mandant = ""
	
	Set strSQL="SELECT Auftragskopf->ID AS auftragId, Auftragskopf->Mandant AS mandant FROM DBFakturierung.Auftragspos WHERE ID='"_myId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set auftragId=rs.Data("auftragId")
			Set mandant=rs.Data("mandant")
		}
	}
	
	do ##class(DBFakturierung.Auftragskopf).SetBStatusMutiertClass(auftragId)
	
	Set ^FaktAufDetOldValues(myId) = auftragId
	
	d ..CheckLager(myId)
		
	//Geraete
	Set ret=##Class(DBFakturierung.Auftragspos).GetGeraetAuftragOidClass(myId)
	if (ret '= "") {
		set item = ##class(DBFakturierung.TmpAusgGeraet).%OpenId(ret)
		set item.RechnungPos = ""
		do item.%Save()
		
		if (item.Auftrag = "" && item.Lagerstatus = 1) {
			set gerat = ##class(DBFakturierung.Geraet).%OpenId(item.Geraet.%Id())
			set gerat.Anzahl = gerat.Anzahl + item.Anzahl
			set geratArtOid = ##class(DBFakturierung.SD.GeraeteArt).GetFirstVerfuegbarIdOnMandant(mandant)
			if (geratArtOid '= "") {
				set gerArt = ##class(DBFakturierung.SD.GeraeteArt).%OpenId(geratArtOid)
				set gerat.GeraeteArt = gerArt
			}
			d gerat.%Save()
			KILL gerArt
			set gerArt = ""
			KILL gerat		
			set gerat = ""	
			KILL item
			set item = ""
			do ##class(DBFakturierung.TmpAusgGeraet).%DeleteId(ret)
		}	
	}
	
	set st = ##class(DBUtils.ClassHelper).DeleteManyRelations("DBFakturierung.Auftragspos", myId)
	//w st
	Quit st
]]></Implementation>
</Method>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Trigger name="trgBeforeDelete">
<Code><![CDATA[	w !,"Before delete Auftragspos",!
	new myId
	new auf
	new res
	
	set myId = {ID*O}
	
	do ##class(DBFakturierung.Auftragskopf).SetBStatusMutiertClass({Auftragskopf*N})
	
	d ..CheckLager(myId)
	
	//Geraete
	w "BevorGer",!
	w "myId:"_myId,!
	Set ret=##Class(DBFakturierung.Auftragspos).GetGeraetAuftragOidClass(myId)
	w "ret:"_ret,!
	w "1",!
	if (ret '= "") {
		w "2",!
		set item = ##class(DBFakturierung.TmpAusgGeraet).%OpenId(ret)
		set item.RechnungPos = ""
		do item.%Save()
		w "3",!
		
		if (item.Auftrag = "" && item.Lagerstatus = 1) {
			w "MitGer",!
			set ger = ##class(DBFakturierung.Geraet).%OpenId(item.Geraet.%Id())
			set ger.Anzahl = ger.Anzahl + item.Anzahl
			do ger.%Save()
			set ger = ""
			KILL ger
			set item = ""
			KILL item
			do ##class(DBFakturierung.TmpAusgGeraet).%DeleteId(ret)
		}
		w "4",!	
	}
	w "AfterGer",!
	
	set res = ##class(DBUtils.ClassHelper).DeleteManyRelations("DBFakturierung.Auftragspos", myId)
	
	Quit res]]></Code>
<Event>DELETE</Event>
<Foreach>row</Foreach>
</Trigger>

<Method name="GetGeraetOid">
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set ret=##Class(DBFakturierung.Auftragspos).GetGeraetOidClass(myId)
	quit ret
]]></Implementation>
</Method>

<Method name="GetGeraetOidClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set geraetOid = ""
	&sql(SELECT TOP 1 Geraet->ID INTO :geraetOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where RechnungPos = :Id)
	quit geraetOid
]]></Implementation>
</Method>

<Method name="GetGeraetAuftragOid">
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set ret=##Class(DBFakturierung.Auftragspos).GetGeraetAuftragOidClass(myId)
	quit ret
]]></Implementation>
</Method>

<Method name="GetGeraetAuftragOidClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT TOP 1 ID INTO :oid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where RechnungPos = :Id)
	quit oid
]]></Implementation>
</Method>

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

<Method name="AddSeriennummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,PosNr:%Integer,SerienNr:%String</FormalSpec>
<Implementation><![CDATA[
	set pos = 0
	set posLast = 0
	set isSet = 0
	Set strSQL="SELECT ZusatztextID AS posNr, DetailText, ID FROM DBFakturierung.Auftragspos WHERE  Auftragskopf ="_AuftragOid_" AND PositionsNr = "_PosNr_" ORDER BY ZusatztextID"
	w strSQL,!
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set pos=rs.Data("posNr")
			Set id=rs.Data("ID")
			Set detailText = rs.Data("DetailText")
			if ($FIND(detailText,"SN:") > 0) {
				if ((SerienNr = "") || (SerienNr = $c(0))) {
					DO ##class(DBFakturierung.Auftragspos).%DeleteId(id)
					QUIT
				}else {
					set pos = ##class(DBFakturierung.Auftragspos).%OpenId(id)
					set pos.DetailText = "SN: "_SerienNr
					Do pos.%Save()
					Set pos = ""
					Set isSet = 1
					QUIT
				}
			} elseif (pos > (posLast+1)) {
				set pos = ##class(DBFakturierung.Auftragspos).%New()
				set pos.DetailText = "SN: "_SerienNr
				set pos.ZusatztextID = posLast + 1 
				set pos.Artikelcode = 8
				set pos.Auftragskopf = ##class(DBFakturierung.Auftragskopf).%OpenId(AuftragOid)
				set pos.PositionsNr = PosNr
				DO pos.%Save()
				Set pos = ""
				Set isSet = 1
				QUIT
			}
			Set posLast = pos
		}
	}
	
	if ((isSet = 0) && (SerienNr '= "") && (SerienNr '= $c(0))) {
		set pos = ##class(DBFakturierung.Auftragspos).%New()
		set pos.DetailText = "SN: "_SerienNr
		set pos.ZusatztextID = posLast + 1 
		set pos.Artikelcode = 8
		set pos.Auftragskopf = ##class(DBFakturierung.Auftragskopf).%OpenId(AuftragOid)
		set pos.PositionsNr = PosNr
		DO pos.%Save()
		Set pos = ""
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Auftragspos")</DataLocation>
<DefaultData>AuftragsposDefaultData</DefaultData>
<IdLocation>^DBFakturierung.AuftragskopfC("Auftragspos")</IdLocation>
<IndexLocation>^DBFakturierung.AuftragsposI</IndexLocation>
<StreamLocation>^DBFakturierung.AuftragsposS</StreamLocation>
<Data name="AuftragsposDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Lieferdatum</Value>
</Value>
<Value name="4">
<Value>Lagerstatus</Value>
</Value>
<Value name="5">
<Value>BestellNr</Value>
</Value>
<Value name="6">
<Value>DetailText</Value>
</Value>
<Value name="7">
<Value>AnzahlGebinde</Value>
</Value>
<Value name="8">
<Value>AnzahlGedruckteGebinde</Value>
</Value>
<Value name="9">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="10">
<Value>AnzahlHauptGebinde</Value>
</Value>
<Value name="11">
<Value>Menge</Value>
</Value>
<Value name="12">
<Value>BestellteMenge</Value>
</Value>
<Value name="13">
<Value>Preis</Value>
</Value>
<Value name="14">
<Value>PreisFW</Value>
</Value>
<Value name="15">
<Value>RabattProzent</Value>
</Value>
<Value name="16">
<Value>RabattBetrag</Value>
</Value>
<Value name="17">
<Value>MwstSatz</Value>
</Value>
<Value name="18">
<Value>MwstSatzExport</Value>
</Value>
<Value name="19">
<Value>MwstBetrag</Value>
</Value>
<Value name="20">
<Value>BetragExklMwst</Value>
</Value>
<Value name="21">
<Value>BetragInklMwst</Value>
</Value>
<Value name="22">
<Value>BetragInklMwstFW</Value>
</Value>
<Value name="23">
<Value>Warenaufwand</Value>
</Value>
<Value name="24">
<Value>GewichtNetto</Value>
</Value>
<Value name="25">
<Value>ParzellenNr</Value>
</Value>
<Value name="26">
<Value>GewichtTara</Value>
</Value>
<Value name="27">
<Value>GewichtBrutto</Value>
</Value>
<Value name="28">
<Value>ZusatztextID</Value>
</Value>
<Value name="29">
<Value>GrammJeEinheit</Value>
</Value>
<Value name="30">
<Value>GrammJeLaufmeter</Value>
</Value>
<Value name="31">
<Value>Artikel</Value>
</Value>
<Value name="32">
<Value>Herkunft</Value>
</Value>
<Value name="33">
<Value>Mengeneinheit</Value>
</Value>
<Value name="34">
<Value>Gebinde</Value>
</Value>
<Value name="35">
<Value>HauptGebinde</Value>
</Value>
<Value name="36">
<Value>Mwst</Value>
</Value>
<Value name="37">
<Value>MwstExport</Value>
</Value>
<Value name="38">
<Value>Artikelcode</Value>
</Value>
<Value name="39">
<Value>Abzugstyp</Value>
</Value>
<Value name="40">
<Value>Vertreter</Value>
</Value>
<Value name="41">
<Value>Lieferant</Value>
</Value>
<Value name="42">
<Value>Qualitaet</Value>
</Value>
<Value name="43">
<Value>Lagerort</Value>
</Value>
<Value name="44">
<Value>SpezPreis</Value>
</Value>
<Value name="45">
<Value>Charge</Value>
</Value>
<Value name="46">
<Value>MwstBetragFW</Value>
</Value>
<Value name="47">
<Value>BetragExklMwstFW</Value>
</Value>
<Value name="48">
<Value>RabattBetragFW</Value>
</Value>
<Value name="49">
<Value>Artikelrabatt1ExklMwstEW</Value>
</Value>
<Value name="50">
<Value>Artikelrabatt1InklMwstEW</Value>
</Value>
<Value name="51">
<Value>Artikelrabatt1InProzent</Value>
</Value>
<Value name="52">
<Value>Artikelrabatt2ExklMwstEW</Value>
</Value>
<Value name="53">
<Value>Artikelrabatt2InklMwstEW</Value>
</Value>
<Value name="54">
<Value>Artikelrabatt2InProzent</Value>
</Value>
<Value name="55">
<Value>Artikelrabatt1ExklMwstFW</Value>
</Value>
<Value name="56">
<Value>Artikelrabatt1InklMwstFW</Value>
</Value>
<Value name="57">
<Value>Artikelrabatt2ExklMwstFW</Value>
</Value>
<Value name="58">
<Value>Artikelrabatt2InklMwstFW</Value>
</Value>
<Value name="59">
<Value>Abteilung</Value>
</Value>
<Value name="60">
<Value>SachbearbeiterNr</Value>
</Value>
<Value name="61">
<Value>SachbearbeiterBenutzername</Value>
</Value>
<Value name="62">
<Value>SachbearbeiterVorname</Value>
</Value>
<Value name="63">
<Value>SachbearbeiterName</Value>
</Value>
<Value name="64">
<Value>EPProvisorisch</Value>
</Value>
<Value name="65">
<Value>DetailPreis</Value>
</Value>
<Value name="66">
<Value>MargeProzent</Value>
</Value>
<Value name="67">
<Value>Buchungstyp</Value>
</Value>
<Value name="68">
<Value>Buchungscode</Value>
</Value>
<Value name="69">
<Value>LSVADistanz</Value>
</Value>
<Value name="70">
<Value>LSVAKategorie</Value>
</Value>
<Value name="71">
<Value>KontraktMengeEingetrag</Value>
</Value>
<Value name="72">
<Value>KorrekturAbzug</Value>
</Value>
<Value name="73">
<Value>KorrekturMwst</Value>
</Value>
<Value name="74">
<Value>ZaehlerNr</Value>
</Value>
<Value name="75">
<Value>StandAlt</Value>
</Value>
<Value name="76">
<Value>StandNeu</Value>
</Value>
<Value name="77">
<Value>Tage</Value>
</Value>
<Value name="78">
<Value>DetailText2</Value>
</Value>
<Value name="79">
<Value>KgProLm</Value>
</Value>
<Value name="80">
<Value>Lm</Value>
</Value>
<Value name="81">
<Value>Oelverbrauch</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abteilung">
</Property>
<Property name="Abzugstyp">
</Property>
<Property name="AnzahlGebinde"/>
<Property name="AnzahlGedruckteGebinde"/>
<Property name="AnzahlHauptGebinde"/>
<Property name="AnzahlJeGebinde"/>
<Property name="Artikel">
</Property>
<Property name="Artikelcode">
</Property>
<Property name="Artikelrabatt1ExklMwstEW">
</Property>
<Property name="Artikelrabatt1ExklMwstFW">
</Property>
<Property name="Artikelrabatt1InProzent">
</Property>
<Property name="Artikelrabatt1InklMwstEW">
</Property>
<Property name="Artikelrabatt1InklMwstFW">
</Property>
<Property name="Artikelrabatt1MwstbetragEW">
</Property>
<Property name="Artikelrabatt1MwstbetragFW">
</Property>
<Property name="Artikelrabatt2ExklMwstEW">
</Property>
<Property name="Artikelrabatt2ExklMwstFW">
</Property>
<Property name="Artikelrabatt2InProzent">
</Property>
<Property name="Artikelrabatt2InklMwstEW">
</Property>
<Property name="Artikelrabatt2InklMwstFW">
</Property>
<Property name="Artikelrabatt2MwstbetragEW">
</Property>
<Property name="Artikelrabatt2MwstbetragFW">
</Property>
<Property name="Auftragskopf">
</Property>
<Property name="BestellNr">
</Property>
<Property name="BestellteMenge">
</Property>
<Property name="BetragExklMwst">
</Property>
<Property name="BetragExklMwstFW">
</Property>
<Property name="BetragInklMwst">
</Property>
<Property name="BetragInklMwstFW">
</Property>
<Property name="Buchungscode">
</Property>
<Property name="Charge"/>
<Property name="DetailPreis">
</Property>
<Property name="DetailText">
</Property>
<Property name="DetailText2">
</Property>
<Property name="EPProvisorisch">
</Property>
<Property name="Gebinde"/>
<Property name="GewichtBrutto">
</Property>
<Property name="GewichtNetto">
</Property>
<Property name="GewichtTara">
</Property>
<Property name="GrammJeEinheit"/>
<Property name="GrammJeLaufmeter"/>
<Property name="HauptGebinde"/>
<Property name="Herkunft">
</Property>
<Property name="KontraktMengeEingetrag">
</Property>
<Property name="KorrekturMwst">
</Property>
<Property name="LSVADistanz">
</Property>
<Property name="LSVAKategorie">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Lagerstatus">
</Property>
<Property name="Lieferant">
</Property>
<Property name="Lieferdatum">
</Property>
<Property name="Lm"/>
<Property name="MargeProzent">
</Property>
<Property name="Menge">
</Property>
<Property name="Mengeneinheit">
</Property>
<Property name="Mwst">
</Property>
<Property name="MwstBetrag">
</Property>
<Property name="MwstBetragFW">
</Property>
<Property name="MwstExport">
</Property>
<Property name="MwstSatz">
</Property>
<Property name="MwstSatzExport">
</Property>
<Property name="Nettobetrag1ExklMwstEW">
</Property>
<Property name="Nettobetrag1ExklMwstFW">
</Property>
<Property name="Nettobetrag1InklMwstEW">
</Property>
<Property name="Nettobetrag1InklMwstFW">
</Property>
<Property name="Nettobetrag1MwstbetragEW">
</Property>
<Property name="Nettobetrag1MwstbetragFW">
</Property>
<Property name="Nettobetrag2ExklMwstEW">
</Property>
<Property name="Nettobetrag2ExklMwstFW">
</Property>
<Property name="Nettobetrag2InklMwstEW">
</Property>
<Property name="Nettobetrag2InklMwstFW">
</Property>
<Property name="Nettobetrag2MwstbetragEW">
</Property>
<Property name="Nettobetrag2MwstbetragFW">
</Property>
<Property name="Oelverbrauch">
</Property>
<Property name="ParzellenNr">
</Property>
<Property name="PositionsNr">
</Property>
<Property name="Preis">
</Property>
<Property name="PreisFW">
</Property>
<Property name="Qualitaet">
</Property>
<Property name="RabattBetrag">
</Property>
<Property name="RabattBetragFW">
</Property>
<Property name="RabattProzent">
</Property>
<Property name="SachbearbeiterBenutzername"/>
<Property name="SachbearbeiterName"/>
<Property name="SachbearbeiterNr"/>
<Property name="SachbearbeiterVorname"/>
<Property name="SpezPreis">
</Property>
<Property name="StandAlt">
</Property>
<Property name="StandNeu">
</Property>
<Property name="Tage">
</Property>
<Property name="Vertreter">
</Property>
<Property name="Warenaufwand">
</Property>
<Property name="ZaehlerNr">
</Property>
<Property name="ZusatztextID">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.Geraet">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57320.063157</TimeChanged>
<TimeCreated>61576,30968.523553</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="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>Geraete</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

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

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

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

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

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

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

<Property name="MargeCHF">
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {MargeCHF}=##class(DBFakturierung.Geraet).GetMargeCHF({EKP},{VP}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MargeProzent">
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {MargeProzent}=##class(DBFakturierung.Geraet).GetMargeProzent({EKP},{VP}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

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

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

<Index name="EANCodeIndex">
<Properties>EANCode</Properties>
<Unique>1</Unique>
</Index>

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

<Index name="LagerortIndex">
<Properties>Lagerort</Properties>
</Index>

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

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

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

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

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

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

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

<Property name="EtikettenTyp">
<Type>DBPrint.Etikette</Type>
<Cardinality>one</Cardinality>
<Inverse>GeraetEtikettentyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="EtikettenTyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="PreisEditiert">
<Description>
Preis Editiert</Description>
<Type>%Boolean</Type>
</Property>

<Property name="Vorabaustausch">
<Type>DBFakturierung.Vorabtausch</Type>
<Cardinality>children</Cardinality>
<Inverse>Geraet</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="ReparaturAuftrag">
<Type>DBFakturierung.RepAuftrag</Type>
<Cardinality>children</Cardinality>
<Inverse>Geraet</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetMargeCHF">
<ClassMethod>1</ClassMethod>
<FormalSpec>EKP:%Decimal(SCALE=5),VP:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[	Quit VP-EKP
]]></Implementation>
</Method>

<Method name="GetMargeProzent">
<ClassMethod>1</ClassMethod>
<FormalSpec>EKP:%Decimal(SCALE=5),VP:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set value = 0
	if (+VP '= 0) {
		// Berrechnung
		set value = 100* (+VP-(+EKP)) / +VP
	}
	// Rundung auf 2 Nachkommastellen
	Quit ##class(DBUtils.NumberUtils).Round(+value, 2)
]]></Implementation>
</Method>

<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(DBFakturierung.Geraet).%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="GetBezeichnung2">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Bezeichnung2, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBezeichnung2Class">
<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(DBFakturierung.Geraet).%OpenId(myID)
		set text = rs.GetBezeichnung2(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="GetLaufNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrNr:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set laufNr = 1
	
	Set strSQL="SELECT MAX(Laufnummer) as lnr FROM DBFakturierung.Geraet WHERE Artikel->Artikelgruppe->ArtikelgruppenNr='"_ArtGrNr_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		if (rs.Next(.sc)) {
			Set laufNr=rs.Data("lnr")
			set laufNr = +laufNr + 1
		}
	}
	Quit laufNr
]]></Implementation>
</Method>

<Method name="GetEANCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set eanCodePart = ##class(DBCore.MandantEinstellung).GetLongEinst(MandOid, ##class(DBCore.Konst).FAKTURIERUNGEANNUMMER())
	set eanCodePart = eanCodePart + 1
	set ok = 0
	while (ok '= 1) {
			Set eanCode = ##class(DBFakturierung.Geraet).AddPZifferToEan(eanCodePart)
			Set foundEANArt=0
			Set foundEANGer=0
			&sql(SELECT TOP 1 EANCode1 INTO :foundEANArt
		     	FROM DBFakturierung.Artikel
		     	Where EANCode1 = :eanCode)
		    &sql(SELECT TOP 1 EANCode INTO :foundEANGer
		     	FROM DBFakturierung.Geraet
		     	Where EANCode = :eanCode)
		     if ((foundEANArt '= eanCode) && (foundEANGer '= eanCode)) {
			  	set ok = 1   
		     } else {
			     set eanCodePart = eanCodePart + 1
		     }
	}
	do ##class(DBCore.MandantEinstellung).SetLongEinst(MandOid, ##class(DBCore.Konst).FAKTURIERUNGEANNUMMER(), eanCodePart)
	Set eanCode = ##class(DBFakturierung.Geraet).AddPZifferToEan(eanCodePart)
	Quit eanCode
]]></Implementation>
</Method>

<Method name="AddPZifferToEan">
<ClassMethod>1</ClassMethod>
<FormalSpec>eanCode:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	while ($L(eanCode) < 12) {
			Set eanCode = "0"_eanCode
	}
	set pruefziffer = 0
	set checkSumme = 0
	/// Jede Zahl mit dem Faktor zur checksume aufrechnen
	for i = 1:1:12 {
		set aktAlpha = $EXTRACT(eanCode,i)
		set aktNumber = +aktAlpha
		set faktor = 1
		set even = (i # 2)
		if (even = 0) {
			set faktor = 3
		}
		set checkSumme = checkSumme + (aktNumber * faktor)
	}
	/// Modulo 10 Rechnung
	set rest = checkSumme # 10
	/// pruefziffer 
	set pruefziffer = 10 - rest
	if (rest = 0) {
		set pruefziffer = 0
	}
	set eanCode = eanCode_pruefziffer	
	w "EAN:"_eanCode
	quit eanCode
]]></Implementation>
</Method>

<Method name="GetIdByEANCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>EANCode:%String,MandOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set id = ""
	
	Set strSQL="SELECT ID FROM DBFakturierung.Geraet WHERE Artikel->Mandant='"_MandOid_"' "
	set strSQL=strSQL_"AND EANCode='"_EANCode_"'"
	
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		if (rs.Next(.sc)) {
			Set id=rs.Data("ID")
		}
	}
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetNewestVorabaustausch">
<ReturnType>DBFakturierung.Vorabtausch</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set id=0
	&sql(SELECT TOP 1 ID INTO :id
		     	FROM DBFakturierung.Vorabtausch 
		     	Where Geraet = :myId
		     	ORDER by Datum desc)
	If (id '= 0) {
		Set ret=##Class(DBFakturierung.Vorabtausch).%OpenId(id)
	}
	quit ret
]]></Implementation>
</Method>

<Method name="%OnBeforeSave">
<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>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	If (Insert) {
		set artGr = ..Artikel.Artikelgruppe.ArtikelgruppenNr
		set laufNr = ##class(DBFakturierung.Geraet).GetLaufNr(artGr)
		set ..Laufnummer = +laufNr
		if (..EANCode = "") {
			set ..EANCode = ##class(DBFakturierung.Geraet).GetEANCode(..Artikel.Mandant)
		}
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="Insert">
<Code>	w "in Trigger", !
	new artOid
	new artikel
	new laufNr
	new aktOid
	new eanCode
	
	set aktOid = {ID*N}
	set artOid = {Artikel*N}
	set artikel = ##class(DBFakturierung.Artikel).%OpenId(artOid)
	set laufNr = ##class(DBFakturierung.Geraet).GetLaufNr(artikel.Artikelgruppe.ArtikelgruppenNr)
	set eanCode = ##class(DBFakturierung.Geraet).GetEANCode(artikel.Mandant)
	
	Set strSQL="Update DBFakturierung.Geraet Set Laufnummer='"_laufNr_"', EANCode='"_eanCode_"' WHERE ID='"_aktOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF '$$$ISOK(sc) {
		write "Error in DBFakturierung.Geraet im Trigger Insert beim UpdateStatement für Laufnummer", !
		write sc, !
	}
	
	Set strSQL="Update DBFakturierung.Geraet Set EANCode='"_eanCode_"' WHERE ID='"_aktOid_"' and EANCode= = ''"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF '$$$ISOK(sc) {
		write "Error in DBFakturierung.Geraet im Trigger Insert beim UpdateStatement für EAN Code", !
		write sc, !
	}
	
	k aktOid
	k artOid
	k artikel
	k laufNr
	k eanCode</Code>
<Event>INSERT</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Property name="TempAusgang">
<Type>DBFakturierung.TmpAusgGeraet</Type>
<Cardinality>many</Cardinality>
<Inverse>Geraet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetAuftragNr">
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set ret=##Class(DBFakturierung.Geraet).GetAuftragNrClass(myId)
	quit ret
]]></Implementation>
</Method>

<Method name="GetAuftragNrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set ret = ""
	set auftragNr = 0
		     	
	&sql(SELECT TOP 1 Auftrag->Auftragnummer INTO :auftragNr
			FROM DBFakturierung.TmpAusgGeraet 
			Where Geraet = :Id and Auftrag is not null order by Auftrag->Verakufsdatum)
		     	
	if (auftragNr = "" || auftragNr = 0) {
		&sql(SELECT TOP 1 RechnungPos->Auftragskopf->AuftragsNr INTO :auftragNr
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where Geraet = :Id AND RechnungPos is not null order by RechnungPos->Auftragskopf->Auftragsdatum)
	}
	
	quit auftragNr
]]></Implementation>
</Method>

<Method name="GetAuftragOidClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set ret = ""
	set auftragOid = 0
	&sql(SELECT TOP 1 Auftrag->ID INTO :auftragOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where Geraet = :Id)
		     	
	quit auftragOid
]]></Implementation>
</Method>

<Method name="GetAuftragItemOid">
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set ret=##Class(DBFakturierung.Geraet).GetAuftragItemOidClass(myId)
	quit ret
]]></Implementation>
</Method>

<Method name="GetAuftragItemOidClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set ret = ""
	set itemOid = 0
	&sql(SELECT TOP 1 ID INTO :itemOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where Geraet = :Id)
	quit itemOid
]]></Implementation>
</Method>

<Method name="GetKundeOid">
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set ret=##Class(DBFakturierung.Geraet).GetKundeOidClass(myId)
	quit ret
]]></Implementation>
</Method>

<Method name="GetKundeOidClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set ret = ""
	set kundeOid = ""
	&sql(SELECT TOP 1 Auftrag->Kunde->ID INTO :kundeOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where Geraet = :Id and Auftrag is not null order by Auftrag->Verakufsdatum)
		     	
	if (kundeOid = "") {
		&sql(SELECT TOP 1 RechnungPos->Auftragskopf->Adresse->Adresse->ID INTO :kundeOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	Where Geraet = :Id AND RechnungPos is not null order by RechnungPos->Auftragskopf->Auftragsdatum)
	}
	
	quit kundeOid
]]></Implementation>
</Method>

<Method name="GetVerkaufsdatum">
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set ret=##Class(DBFakturierung.Geraet).GetVerkaufsdatumClass(myId)
	quit ret
]]></Implementation>
</Method>

<Method name="GetVerkaufsdatumClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Id:%String</FormalSpec>
<ReturnType>%Date</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set ret = ""
	set datum = ""
	&sql(SELECT TOP 1 Auftrag->Verakufsdatum INTO :datum
		     FROM DBFakturierung.TmpAusgGeraet 
		     Where Geraet = :Id and Auftrag is not null order by Auftrag->Verakufsdatum)
	
	if (datum = "") {
		&sql(SELECT TOP 1 RechnungPos->Auftragskopf->Auftragsdatum INTO :datum
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	WHERE Geraet = :myId AND RechnungPos is not null order by RechnungPos->Auftragskopf->Auftragsdatum)
	}

	quit datum
]]></Implementation>
</Method>

<Method name="GetNextFreeAuftragNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>StartNr:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set ok = 0
	while (ok '= 1) {
			Set foundNr =0
			&sql(SELECT TOP 1 Auftragnummer INTO :foundNr
		     	FROM DBFakturierung.TempAusgang
		     	Where Auftragnummer = :StartNr)
		     if (foundNr '= StartNr) {
			  	set ok = 1   
		     } else {
			     set StartNr = StartNr + 1
		     }
	}
	quit StartNr
]]></Implementation>
</Method>

<Method name="GetAnzAuftraege">
<ClassMethod>1</ClassMethod>
<FormalSpec>GeraetOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	Set Count =0
		&sql(SELECT Count(*) INTO :Count
		    FROM DBFakturierung.TmpAusgGeraet
		    Where Geraet = :GeraetOid)
	quit Count
]]></Implementation>
</Method>

<Method name="GetNewestReperaturAuftrag">
<ReturnType>DBFakturierung.RepAuftrag</ReturnType>
<Implementation><![CDATA[
	set ret = ""
	Set myId=..%Id()
	Set id=0
	&sql(SELECT TOP 1 ID INTO :id
		     	FROM DBFakturierung.RepAuftrag 
		     	Where Geraet = :myId
		     	ORDER by Datum desc)
	If (id '= 0) {
		Set ret=##Class(DBFakturierung.RepAuftrag).%OpenId(id)
	}
	quit ret
]]></Implementation>
</Method>

<Method name="GetKundeListView">
<ClassMethod>1</ClassMethod>
<FormalSpec>myId:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set adrOid = ""
	&sql(SELECT TOP 1 Kunde->ID INTO :adrOid
		     	FROM DBFakturierung.RepAuftrag 
		     	Where Geraet = :myId
		     	ORDER by Datum desc)
		     	
	if (adrOid = "") {
		&sql(SELECT TOP 1 Auftrag->Kunde->ID INTO :adrOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	WHERE Geraet = :myId AND Auftrag is not null order by Auftrag->Verakufsdatum)
	}
	
	if (adrOid = "") {
		&sql(SELECT TOP 1 RechnungPos->Auftragskopf->Adresse->Adresse->ID INTO :adrOid
		     	FROM DBFakturierung.TmpAusgGeraet 
		     	WHERE Geraet = :myId AND RechnungPos is not null order by RechnungPos->Auftragskopf->Auftragsdatum)
	}

	quit adrOid
]]></Implementation>
</Method>

<Method name="DeleteAllGeraete">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelId:%String</FormalSpec>
<Implementation><![CDATA[
	set delId = ""
	&sql(DECLARE C1 CURSOR FOR
	               SELECT ID InTo :delId
	               FROM  DBFakturierung.TmpAusgGeraet 
	               WHERE Geraet->Artikel=:ArtikelId)
               
	&sql(OPEN C1)
	&sql(FETCH C1)
	While (SQLCODE = 0) {
    	do ##class(DBFakturierung.TmpAusgGeraet).%DeleteId(delId)
		&sql(FETCH C1)
	}

	&sql(CLOSE C1)
	
	set delGId = ""
	&sql(DECLARE C2 CURSOR FOR
	               SELECT ID InTo :delGId
	               FROM  DBFakturierung.Geraet 
	               WHERE Artikel=:ArtikelId)
               
	&sql(OPEN C2)
	&sql(FETCH C2)
	While (SQLCODE = 0) {
    	do ##class(DBFakturierung.Geraet).%DeleteId(delGId)
		&sql(FETCH C2)
	}

	&sql(CLOSE C2)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Geraete")</DataLocation>
<DefaultData>GeraetDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("Geraete")</IdLocation>
<IndexLocation>^DBFakturierung.GeraetI</IndexLocation>
<StreamLocation>^DBFakturierung.GeraetS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="Bezeichnung2">
<Attribute>Bezeichnung2</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung2"</Subscript>
</Data>
<Data name="GeraetDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>EKP</Value>
</Value>
<Value name="3">
<Value>VP</Value>
</Value>
<Value name="4">
<Value>Kaufdatum</Value>
</Value>
<Value name="5">
<Value>GarantieAblauf</Value>
</Value>
<Value name="6">
<Value>SerienNr</Value>
</Value>
<Value name="7">
<Value>EANCode</Value>
</Value>
<Value name="8">
<Value>Lagerort</Value>
</Value>
<Value name="9">
<Value>LagerortBemerkung</Value>
</Value>
<Value name="10">
<Value>Zusatztext</Value>
</Value>
<Value name="11">
<Value>Laufnummer</Value>
</Value>
<Value name="12">
<Value>Lieferant</Value>
</Value>
<Value name="13">
<Value>Kunde</Value>
</Value>
<Value name="14">
<Value>Anzahl</Value>
</Value>
<Value name="15">
<Value>Verakufsdatum</Value>
</Value>
<Value name="16">
<Value>ArtikelNrLieferant</Value>
</Value>
<Value name="17">
<Value>AnzahlEtiketten</Value>
</Value>
<Value name="18">
<Value>Occasion</Value>
</Value>
<Value name="19">
<Value>EtikettenTyp</Value>
</Value>
<Value name="20">
<Value>GeraeteArt</Value>
</Value>
<Value name="21">
<Value>Swico</Value>
</Value>
<Value name="22">
<Value>Transport</Value>
</Value>
<Value name="23">
<Value>Ausgeliefert</Value>
</Value>
<Value name="24">
<Value>TmpAusgangNr</Value>
</Value>
<Value name="25">
<Value>PreisEditiert</Value>
</Value>
<Value name="26">
<Value>TEMPEANCode</Value>
</Value>
</Data>
<Property name="Anzahl"/>
<Property name="AnzahlEtiketten"/>
<Property name="Artikel"/>
<Property name="ArtikelNrLieferant"/>
<Property name="Ausgeliefert"/>
<Property name="EANCode"/>
<Property name="EKP"/>
<Property name="EtikettenTyp"/>
<Property name="GarantieAblauf"/>
<Property name="GeraeteArt"/>
<Property name="Kaufdatum"/>
<Property name="Kunde"/>
<Property name="Lagerort"/>
<Property name="LagerortBemerkung"/>
<Property name="Laufnummer"/>
<Property name="Lieferant"/>
<Property name="MargeCHF"/>
<Property name="MargeProzent"/>
<Property name="Occasion"/>
<Property name="PreisEditiert"/>
<Property name="SerienNr"/>
<Property name="Swico"/>
<Property name="TEMPEANCode"/>
<Property name="TmpAusgangNr"/>
<Property name="Transport"/>
<Property name="VP"/>
<Property name="Verakufsdatum"/>
<Property name="Zusatztext"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFakturierung.KGPreis">
<Description>
</Description>
<Super>DBFakturierung.Preis,%XML.Adaptor</Super>
<TimeChanged>61690,30966.911402</TimeChanged>
<TimeCreated>61689,47645.374063</TimeCreated>
<Inheritance>right</Inheritance>

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

<Index name="GruppeIdx">
<Properties>Gruppe</Properties>
</Index>

<Index name="GruppeArtikelIdx">
<Properties>Artikel,ZusatzArtikelNr,Gruppe</Properties>
<Unique>1</Unique>
</Index>

<Method name="GetOidByKundengruppe">
<ClassMethod>1</ClassMethod>
<FormalSpec>KgOid:%String,ArtikelOid:%String,zusatzNr:%String=""</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID into :id FROM DBFakturierung.KGPreis WHERE Gruppe = :KgOid AND Artikel = :ArtikelOid And ZusatzArtikelNr = :zusatzNr)
	
	if (id = "") && (zusatzNr = "") {
		&sql(SELECT TOP 1 ID into :id FROM DBFakturierung.KGPreis WHERE Gruppe = :KgOid AND Artikel = :ArtikelOid ORDER BY ZusatzArtikelNr)
	}
	quit id
]]></Implementation>
</Method>

<Method name="IsZusatzNrVergeben">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,KGOid:%String,ZusatzArtikelNr:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[

	set res = 0
	&sql(SELECT COUNT(*) INTO :res FROM DBFakturierung.KGPreis
		 WHERE Artikel = :ArtikelOid AND Gruppe = :KGOid
		 AND ZusatzArtikelNr = :ZusatzArtikelNr)
	if (res = 0) {
		Quit 0	
	} else {
		Quit 1	
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KGPreisDefaultData</DefaultData>
<Data name="KGPreisDefaultData">
<Structure>listnode</Structure>
<Subscript>"KGPreis"</Subscript>
<Value name="1">
<Value>Gruppe</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.KGRabatt">
<Description>
</Description>
<Super>DBFakturierung.Rabatt,%XML.Adaptor</Super>
<TimeChanged>61690,48606.823347</TimeChanged>
<TimeCreated>61690,30911.28522</TimeCreated>
<Inheritance>right</Inheritance>

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

<Index name="KGruppeIdx">
<Properties>Gruppe</Properties>
</Index>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KGRabattDefaultData</DefaultData>
<Data name="KGRabattDefaultData">
<Structure>listnode</Structure>
<Subscript>"KGRabatt"</Subscript>
<Value name="1">
<Value>Gruppe</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.KGRueckverg">
<Super>DBFakturierung.Rueckverg</Super>
<TimeChanged>61690,30932.053842</TimeChanged>
<TimeCreated>61689,47671.783145</TimeCreated>

<Property name="Gruppe">
<Type>DBAdressen.SD.Kundengruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktGruppenRueckverg</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="GruppeIndex">
<Properties>Gruppe</Properties>
</Index>

<Method name="GetOidByKgDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>KgOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID into :id FROM DBFakturierung.KGRueckverg WHERE Gruppe = :KgOid AND GueltigAbDatum <= :Datum ORDER BY GueltigAbDatum DESC)
	quit id
]]></Implementation>
</Method>

<Method name="GetOidByExaktKgDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>KgOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.KGRueckverg WHERE Gruppe = :KgOid AND GueltigAbDatum = :Datum)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KGRueckvergDefaultData</DefaultData>
<Data name="KGRueckvergDefaultData">
<Structure>listnode</Structure>
<Subscript>"KGRueckverg"</Subscript>
<Value name="1">
<Value>Gruppe</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.Kassenbeleg">
<Super>%Persistent,%Populate,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61922,37901.268311</TimeCreated>
<Inheritance>right</Inheritance>

<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="Fibukonto">
<Description>
Barkonto</Description>
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>KassenbelegFibukonto</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Fibukonto"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="FibukontoIndex">
<Properties>Fibukonto</Properties>
</Index>

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

<Property name="Saldo">
<Description>
Kassenbestand von diesem Datum</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

<Property name="Definitv">
<Description>
Definitv (Kassenbeleg wurde bereits definitiv gedruckt)</Description>
<Type>%Boolean</Type>
</Property>

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

<Property name="Belegpos">
<Type>DBFakturierung.KassenbelegPosition</Type>
<Cardinality>children</Cardinality>
<Inverse>Kassenbeleg</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetLastEntryOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuKontoOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id 
			FROM DBFakturierung.Kassenbeleg 
			WHERE Mandant=:MandantOid AND Fibukonto=:FibuKontoOid 
			ORDER BY Nummer DESC)
	Quit:(SQLCODE'=0) ""
	quit id
]]></Implementation>
</Method>

<Method name="GetNextNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuKontoOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(SELECT TOP 1 Nummer INTO :nr 
			FROM DBFakturierung.Kassenbeleg 
			WHERE Mandant=:MandantOid AND Fibukonto=:FibuKontoOid 
			ORDER BY Nummer DESC)
	Quit:(SQLCODE'=0) 1
	quit (nr+1)
]]></Implementation>
</Method>

<Method name="GetOidByNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuKontoOid:%String,Nummer:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id 
			FROM DBFakturierung.Kassenbeleg 
			WHERE Mandant=:MandantOid AND Fibukonto=:FibuKontoOid AND Nummer=:Nummer)
	Quit:(SQLCODE'=0) ""
	quit id
]]></Implementation>
</Method>

<Method name="GetOidByDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuKontoOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	set selDatum = $ZD(Datum, 3)
	&sql(SELECT ID INTO :id 
			FROM DBFakturierung.Kassenbeleg 
			WHERE Mandant=:MandantOid AND Fibukonto=:FibuKontoOid AND Datum=TO_DATE(:Datum))
	Quit:(SQLCODE'=0) ""
	quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.KassenbelegD</DataLocation>
<DefaultData>KassenbelegDefaultData</DefaultData>
<IdLocation>^DBFakturierung.KassenbelegD</IdLocation>
<IndexLocation>^DBFakturierung.KassenbelegI</IndexLocation>
<StreamLocation>^DBFakturierung.KassenbelegS</StreamLocation>
<Data name="KassenbelegDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Fibukonto</Value>
</Value>
<Value name="4">
<Value>Datum</Value>
</Value>
<Value name="5">
<Value>KassenbestandVorDatum</Value>
</Value>
<Value name="6">
<Value>Bareinlage</Value>
</Value>
<Value name="7">
<Value>Barentnahme</Value>
</Value>
<Value name="8">
<Value>Saldovortrag</Value>
</Value>
<Value name="9">
<Value>Nummer</Value>
</Value>
<Value name="10">
<Value>Saldo</Value>
</Value>
<Value name="11">
<Value>Definitv</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Bareinlage">
</Property>
<Property name="Barentnahme">
</Property>
<Property name="Datum">
</Property>
<Property name="Definitv">
</Property>
<Property name="Fibukonto">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
<Property name="Saldo">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.KassenbelegPosition">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>62033,39751.855174</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="Kassenbeleg">
<Type>DBFakturierung.Kassenbeleg</Type>
<Cardinality>parent</Cardinality>
<Inverse>Belegpos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Kassenbeleg"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

<Property name="Zugang">
<Description><![CDATA[
Zugang, wenn false -> Abgang]]></Description>
<Type>%Boolean</Type>
</Property>

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

<Property name="BelegText">
<Description>
Beleg-Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<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[
	set id = ..Kassenbeleg.%Id()
	w "%OnAfterSave id: ", id, !
	d ##class(DBFakturierung.KassenbelegPosition).AdjustKassenbeleg(id)
	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 kopfId = ""
	&sql(SELECT Kassenbeleg into :kopfId FROM DBFakturierung.KassenbelegPosition WHERE ID = :myId)
	w "SQL code: ", SQLCODE, " kopfId: ", kopfId, !
	if ((SQLCODE = 0) && (kopfId '= "")) {
		set ^KassenbelegOidBevorDelete(myId) = kopfId
	}
	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 belegId = $Get(^KassenbelegOidBevorDelete(myId))
	if ((belegId '= "") && (belegId '= $c(0))) {
		d ##class(DBFakturierung.KassenbelegPosition).AdjustKassenbeleg(belegId)
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="AdjustKassenbeleg">
<ClassMethod>1</ClassMethod>
<FormalSpec>BelegOid:%String</FormalSpec>
<Implementation><![CDATA[
	w "Adjuste bitzli dr Beleg: ", BelegOid, !
	set beleg = ##class(DBFakturierung.Kassenbeleg).%OpenId(BelegOid)
	if ((beleg '= $c(0)) && (beleg '= "")) {
		set betrag = 0
		// Bareinlagen
		&sql(SELECT SUM(Betrag) INTO :betrag 
			FROM DBFakturierung.KassenbelegPosition 
			WHERE Kassenbeleg=:BelegOid AND NVL(Zugang,0) = 1)
		
		if (SQLCODE=0) {
			w "Betrag Bareinlage ", betrag, !
			set beleg.Bareinlage = betrag
		}
		
		// Barentnahme
		&sql(SELECT SUM(Betrag) INTO :betrag 
			FROM DBFakturierung.KassenbelegPosition 
			WHERE Kassenbeleg=:BelegOid AND NVL(Zugang,0) = 0)
		
		if (SQLCODE=0) {
			w "Betrag Barauslage ", betrag, !
			set beleg.Barentnahme = betrag
		}
		
		set cs = beleg.%Save()
		w "Status: ", cs, !
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Belegpos")</DataLocation>
<DefaultData>KassenbelegPositionDefaultData</DefaultData>
<IdLocation>^DBFakturierung.KassenbelegC("Belegpos")</IdLocation>
<IndexLocation>^DBFakturie50DC.KassenbelegD07AI</IndexLocation>
<StreamLocation>^DBFakturie50DC.KassenbelegD07AS</StreamLocation>
<Data name="KassenbelegPositionDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Zugang</Value>
</Value>
<Value name="4">
<Value>Betrag</Value>
</Value>
<Value name="5">
<Value>BelegNr</Value>
</Value>
<Value name="6">
<Value>BelegTex</Value>
</Value>
<Value name="7">
<Value>BelegText</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="BelegNr">
</Property>
<Property name="BelegText">
</Property>
<Property name="Betrag">
</Property>
<Property name="Kassenbeleg">
</Property>
<Property name="PositionsNr">
</Property>
<Property name="Zugang">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.Konst">
<Super>%RegisteredObject</Super>
<TimeChanged>62409,34894.110972</TimeChanged>
<TimeCreated>61689,47697.532126</TimeCreated>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Method name="AutoCalcPalNein">
<Description>
Die Anzahl Pallette wird nicht berechnet</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="AutoCalcPalStandard">
<Description>
Die Anzahl Pallette wird über die Optimale Anz. Gebinde je Pallet gerechnet</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="AutoCalcPalOptimiert">
<Description>
Die Anzahl Pallette wird über die Max Anz. Gebinde je Pallet gerechnet</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 2
]]></Implementation>
</Method>

<Method name="ADBuchungstypRGKunde">
<Description>
Auftragsdetail Buchungstyp RG Kunde</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="ADBuchungstypGUzuRG">
<Description>
Auftragsdetail Buchungstyp Einkauf</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 1
]]></Implementation>
</Method>

<Method name="ADBuchungstypGUKunde">
<Description>
Auftragsdetail Buchungstyp RG Kunde</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 10
]]></Implementation>
</Method>

<Method name="ADBuchungstypRGzuGU">
<Description>
Auftragsdetail Buchungstyp Einkauf</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 11
]]></Implementation>
</Method>

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

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

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

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

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

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

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

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

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

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

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

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

<Method name="FormularTypEZ">
<Description>
Formulartyp EZ Seite</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 14
]]></Implementation>
</Method>

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

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

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

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

<Method name="AuftragsstatusErfasst">
<Description>
-------------------------
Auftragsstatus	*
-------------------------</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

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

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

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

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

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

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


<Class name="DBFakturierung.Kontrakt">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61704,33863.670128</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="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>Kontrakt</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>Kontrakt</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

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

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

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

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

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

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

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

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

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

<Method name="GetKontraktOidArtAdr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,AdresseOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT TOP 1 ID INTO :oid FROM DBFakturierung.Kontrakt WHERE Artikel = :ArtikelOid and Kunde = :AdresseOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetVerkaufspreisByDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,AdresseOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
    set preis = 0
    
    set strSQL = "SELECT TOP 1 VerkaufPreis FROM DBFakturierung.Kontrakt WHERE Artikel="_ArtikelOid_" and Kunde="_AdresseOid
    set strSQL = strSQL_" AND TO_DATE("_Datum_") <= VerkaufBisDatum AND TO_DATE("_Datum_") >= VerkaufVonDatum"
    w "STR:"_strSQL,!
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    
    IF $$$ISOK(sc) {
                   While rs.Next(.sc) {
                                   Set preis = rs.Data("VerkaufPreis")
                   }
    }
    
    Quit preis
]]></Implementation>
</Method>

<Method name="GetEinkaufspreisByDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,AdresseOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
    set preis = 0
    
    set strSQL = "SELECT TOP 1 EinkaufPreis FROM DBFakturierung.Kontrakt WHERE Artikel="_ArtikelOid_" and Kunde="_AdresseOid
    set strSQL = strSQL_" AND TO_DATE("_Datum_") <= EinkaufBisDatum AND TO_DATE("_Datum_") >= EinkaufVonDatum"
    w "STR:"_strSQL,!
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    
    IF $$$ISOK(sc) {
                   While rs.Next(.sc) {
                                   Set preis = rs.Data("EinkaufPreis")
                   }
    }
    
    Quit preis
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.KontraktD</DataLocation>
<DefaultData>KontraktDefaultData</DefaultData>
<IdLocation>^DBFakturierung.KontraktD</IdLocation>
<IndexLocation>^DBFakturierung.KontraktI</IndexLocation>
<StreamLocation>^DBFakturierung.KontraktS</StreamLocation>
<Data name="KontraktDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Kunde</Value>
</Value>
<Value name="3">
<Value>Artikel</Value>
</Value>
<Value name="4">
<Value>VerkaufPreis</Value>
</Value>
<Value name="5">
<Value>VerkaufVonDatum</Value>
</Value>
<Value name="6">
<Value>VerkaufBisDatum</Value>
</Value>
<Value name="7">
<Value>VerkaufMenge</Value>
</Value>
<Value name="8">
<Value>VerkaufMengeGeliefert</Value>
</Value>
<Value name="9">
<Value>EinkaufPreis</Value>
</Value>
<Value name="10">
<Value>EinkaufVonDatum</Value>
</Value>
<Value name="11">
<Value>EinkaufBisDatum</Value>
</Value>
<Value name="12">
<Value>EinkaufMenge</Value>
</Value>
<Value name="13">
<Value>EinkaufMengeBezogen</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikel">
</Property>
<Property name="EinkaufBisDatum">
</Property>
<Property name="EinkaufMenge">
</Property>
<Property name="EinkaufMengeBezogen">
</Property>
<Property name="EinkaufPreis">
</Property>
<Property name="EinkaufVonDatum">
</Property>
<Property name="Kunde">
</Property>
<Property name="VerkaufBisDatum">
</Property>
<Property name="VerkaufMenge">
</Property>
<Property name="VerkaufMengeGeliefert">
</Property>
<Property name="VerkaufPreis">
</Property>
<Property name="VerkaufVonDatum">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.KundenPreis">
<Description>
</Description>
<Super>DBFakturierung.Preis,%XML.Adaptor</Super>
<TimeChanged>62095,38674.49832</TimeChanged>
<TimeCreated>61689,47842.713063</TimeCreated>
<Inheritance>right</Inheritance>

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

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

<Index name="KundeArtikelIndex">
<Properties>Artikel,ZusatzArtikelNr,Kunde</Properties>
<Unique>1</Unique>
</Index>

<Method name="IsZusatzNrVergeben">
<ClassMethod>1</ClassMethod>
<FormalSpec>FibuMandOid:%String,ArtikelOid:%String,AdressOid:%String,ZusatzArtikelNr:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[

	set debOid = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, AdressOid)
	set res = 0
	&sql(SELECT COUNT(*) INTO :res FROM DBFakturierung.KundenPreis
		 WHERE Artikel = :ArtikelOid AND Kunde = :debOid
		 AND ZusatzArtikelNr = :ZusatzArtikelNr)
	if (res = 0) {
		Quit 0	
	} else {
		Quit 1	
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KundenPreisDefaultData</DefaultData>
<Data name="KundenPreisDefaultData">
<Structure>listnode</Structure>
<Subscript>"KundenPreis"</Subscript>
<Value name="1">
<Value>Kunde</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.KundenRabatt">
<Description>
</Description>
<Super>DBFakturierung.Rabatt,%XML.Adaptor</Super>
<TimeChanged>61689,51717.301278</TimeChanged>
<TimeCreated>61689,47853.959659</TimeCreated>
<Inheritance>right</Inheritance>

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KundenRabattDefaultData</DefaultData>
<Data name="KundenRabattDefaultData">
<Structure>listnode</Structure>
<Subscript>"KundenRabatt"</Subscript>
<Value name="1">
<Value>Kunde</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.KundenRueckverg">
<Super>DBFakturierung.Rueckverg</Super>
<TimeChanged>61690,49316.040389</TimeChanged>
<TimeCreated>61689,47866.376006</TimeCreated>

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

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

<Method name="GetOidByKundeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>KundeOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID into :id FROM DBFakturierung.KundenRueckverg WHERE Kunde = :KundeOid AND GueltigAbDatum <= :Datum ORDER BY GueltigAbDatum DESC)
	quit id
]]></Implementation>
</Method>

<Method name="GetOidByExaktKundeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>KundeOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.KundenRueckverg WHERE Kunde = :KundeOid AND GueltigAbDatum = :Datum)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KundenRueckvergDefaultData</DefaultData>
<Data name="KundenRueckvergDefaultData">
<Structure>listnode</Structure>
<Subscript>"KundenRueckverg"</Subscript>
<Value name="1">
<Value>Kunde</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.KundenStrg">
<Super>DBFakturierung.AuftrStrg,%XML.Adaptor</Super>
<TimeChanged>61689,51744.309872</TimeChanged>
<TimeCreated>61689,47879.099204</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KundenStrgDefaultData</DefaultData>
<Data name="KundenStrgDefaultData">
<Structure>listnode</Structure>
<Subscript>"KundenStrg"</Subscript>
<Value name="1">
<Value>Kunde</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.Lagerbew">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61571,35029.957899</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="JournalNr">
<Description>
Journalnummer</Description>
<Type>%Integer</Type>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Index name="KundeLieferantIndex">
<Properties>KundeLieferant</Properties>
</Index>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>LagerbewArtikel</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="Waehrung">
<Type>DBFibu.SD.Fremdwaehrung</Type>
<Cardinality>one</Cardinality>
<Inverse>LagerbewFaktWaehrung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Waehrung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="WaehrungIndex">
<Properties>Waehrung</Properties>
</Index>

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

<Index name="LagerortIndex">
<Properties>Lagerort</Properties>
</Index>

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

<Index name="AuftragsdetIndex">
<Properties>Auftragsdet</Properties>
</Index>

<Property name="Bewegungstyp">
<Description>
Bewegungstyp - Bewegung aus Einkauf, Verkauf oder durch Umpacken (Charge)</Description>
<Type>%Integer</Type>
</Property>

<UDLText name="T">
<Content><![CDATA[
// Schuhgrösse für den Ortho-Artikel

]]></Content>
</UDLText>

<Property name="Schuhgroesse">
<Type>DBSpezial.Ortho.SD.Groesse</Type>
<Cardinality>one</Cardinality>
<Inverse>Lagerbewegung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Schuhgroesse"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

<Property name="AnzEtiketten">
<Description>
Anzahl Etiketten</Description>
<Type>%Integer</Type>
</Property>

<Property name="BearbeiterKurzel">
<Type>%String</Type>
<Parameter name="MAXLEN" value="5"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Property name="Bestellungsdet">
<Type>DBFaktEK.Bestellungspos</Type>
<Cardinality>one</Cardinality>
<Inverse>Lagerbewegung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Auftragsdet"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="BestellungsdetIndex">
<Properties>Bestellungsdet</Properties>
</Index>

<Method name="GetAktPosNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set pos = ""
	&sql(SELECT Max(JournalNr) INTO :pos FROM DBFakturierung.Lagerbew WHERE Artikel->Mandant = :MandOid)
	Quit:(SQLCODE'=0) 1		
	Quit +pos
]]></Implementation>
</Method>

<Method name="GetBestandPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>artikelOid:%String,perDatum:%Date,endbestand:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set mengeVK = 0
	set mengeEK = 0
	
	&sql(SELECT SUM(Menge) INTO :mengeVK 
			FROM DBFakturierung.Lagerbew 
			WHERE Artikel=:artikelOid AND
				Buchungsdatum>={d :perDatum} AND
				Buchungscode=DBFakturierung.Konst_LagerBuchungscodeAbgang())
	set:(SQLCODE'=0) mengeVK = 0
			
	&sql(SELECT SUM(Menge) INTO :mengeEK 
			FROM DBFakturierung.Lagerbew 
			WHERE Artikel=:artikelOid AND
				Buchungsdatum>={d :perDatum} AND
				Buchungscode=DBFakturierung.Konst_LagerBuchungscodeZugang())
	set:(SQLCODE'=0) mengeEK = 0
				
	set res = (endbestand+mengeVK-mengeEK)
	
	Quit res
]]></Implementation>
</Method>

<Method name="GetMenge">
<ClassMethod>1</ClassMethod>
<FormalSpec>artikelOid:%String,bc:%Integer,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set menge = 0
	
	&sql(SELECT SUM(Menge) INTO :menge 
			FROM DBFakturierung.Lagerbew 
			WHERE Artikel=:artikelOid AND
				Buchungsdatum>={d :vonDatum} AND
				Buchungsdatum<={d :bisDatum} AND
				Buchungscode=:bc)
	Quit:(SQLCODE'=0) 0		
	Quit menge
]]></Implementation>
</Method>

<Method name="DeleteAllBew">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBFakturierung.Lagerbew where Artikel->Mandant = :MandantOid)
]]></Implementation>
</Method>

<Method name="ArtikelHasBewegungen">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set count = 0
	&sql(SELECT COUNT(ID) into :count FROM DBFakturierung.Lagerbew where Artikel = :ArtOid)
	Quit:(SQLCODE'=0) 0
	quit count > 0
]]></Implementation>
</Method>

<Method name="DeleteAllBewByArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBFakturierung.Lagerbew where Artikel = :ArtOid)
]]></Implementation>
</Method>

<Method name="%OnBeforeSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	//w " ON Before Save: Insert " ,Insert,!
	If ('Insert) {
		set lagerBewId = ..%Id()
		
		set oldLieferung = 0
		set artikelId = 0
		set lagerortId = 0
		
		&Sql(SELECT  Menge, Artikel->ID, Lagerort->ID into :oldLieferung, :artikelId, :lagerortId FROM DBFakturierung.Lagerbew WHERE ID=:lagerBewId)
		
		if (SQLCODE = 0) {
			Set ^LagerBewOldValues(lagerBewId, 1) = oldLieferung
			Set ^LagerBewOldValues(lagerBewId, 2) = lagerortId
			Set ^LagerBewOldValues(lagerBewId, 3) = artikelId
			//w "Menge bevor: ", oldLieferung," lagerortId ", lagerortId," artikelId ", artikelId, !
		}
		
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="%OnAfterSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set lagerBewId = ..%Id()
	set isZugang =..Buchungscode = ##class(DBFakturierung.Konst).LagerBuchungscodeZugang()
	
	If ('Insert) {
		Set oldLieferung = $Get(^LagerBewOldValues(lagerBewId, 1))
		Set lagerortId = $Get(^LagerBewOldValues(lagerBewId, 2))
		Set artikelId = $Get(^LagerBewOldValues(lagerBewId, 3))
		
		if (lagerortId '= "") {
			w "Adding Lager",!
			if (isZugang) {
				do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1)*oldLieferung, 1, 0, 0)
			} else {
				do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, oldLieferung, 1, 0, 0)
			}
		}
	} else {
		if (isZugang && (..Menge > 0)) {
			//Artikel aktualisieren	
			set ..Artikel.LetzterEKP = ..PreisEW
			set bestand = ..Artikel.LagerLagerbestand - ..Menge
			set div = (+bestand + ..Menge)
			if (+div '= 0) {
				set preis = (((+bestand * ..Artikel.DurchschnittlicherEKP) + (..Menge * ..PreisEW)) / div)
				set ..Artikel.DurchschnittlicherEKP = ##class(DBUtils.NumberUtils).RoundGemEinst(..Artikel.Mandant, preis)
			} else {
				set ..Artikel.DurchschnittlicherEKP = ..PreisEW
			}
			do ..Artikel.%Save()
			if (..KundeLieferant '= "") {
				do ##class(DBFakturierung.Artikel).SetLieferantInfo(..Artikel.%Id(), ..KundeLieferant.%Id(), ..ArtikelNrLieferant, ..PreisEW)
			}
		}
	}
	if (isZugang = 0) {
		//Umsatz auf Artikel nachführen
		if (..Artikel.UmsatzLaufendMenge '= "") {
			set ..Artikel.UmsatzLaufendMenge = ..Artikel.UmsatzLaufendMenge + ..Menge
		} else {
			set ..Artikel.UmsatzLaufendMenge = ..Menge
		}
		if (..Artikel.DatumLetzteBewegung < ..Buchungsdatum) {
			set ..Artikel.DatumLetzteBewegung = ..Buchungsdatum
		}
		do ..Artikel.%Save()
	}
	if (..Lagerort '= "") {
		if (isZugang) {
			do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(..Artikel.%Id(), ..Lagerort.%Id(), ..Menge, 1, 0, 0)
		} else {
			do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(..Artikel.%Id(), ..Lagerort.%Id(), (-1)*..Menge, 1, 0, 0)
		}
	}
	
	KILL ^LagerBewOldValues(lagerBewId)
	
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="%OnDelete">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set lagerBewId = $lg(oid,1)
	
	set oldLieferung = 0
	set artikelId = 0
	set lagerortId = 0
	set buchungscode = 0
	
	&Sql(SELECT  Menge, Artikel->ID, Lagerort->ID, Buchungscode into :oldLieferung, :artikelId, :lagerortId, :buchungscode FROM DBFakturierung.Lagerbew WHERE ID=:lagerBewId)
	
	set isZugang = buchungscode = ##class(DBFakturierung.Konst).LagerBuchungscodeZugang()
	
	if (SQLCODE = 0) {
		//w "Delete LagerBew mit ", oldLieferung, " IsZugang: ", isZugang, !
		if (isZugang) {
			do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * oldLieferung, 1, 0, 0)
		} else {
			do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, oldLieferung, 1, 0, 0)
		}
		
		if (isZugang = 0) {
		//Umsatz auf Artikel nachführen
		set artikel = ##class(DBFakturierung.Artikel).%OpenId(artikelId)
		if (artikel.UmsatzLaufendMenge '= "") {
			set artikel.UmsatzLaufendMenge = artikel.UmsatzLaufendMenge + oldLieferung
		} else {
			set artikel.UmsatzLaufendMenge = oldLieferung
		}
		
		do artikel.%Save()
		set artikel = ""
	}
	}
	
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="InsertLagerbew">
<Code>	
	new newLieferung
	new lagerortId
	new artikelId
	new buchungscode
	
	set artikelId = {Artikel*N}
	set lagerortId = {Lagerort*N}
	set newLieferung = {Menge*N}
	set buchungscode = {Buchungscode*N}
		
	set isZugang = buchungscode = ##class(DBFakturierung.Konst).LagerBuchungscodeZugang()
	if (isZugang) {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, newLieferung, 1, 0, 0)
	} else {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * newLieferung, 1, 0, 0)
	}</Code>
<Event>INSERT</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="UpdateLagerbew">
<Code>	
	new artikelId
	new lagerortId
	new oldLieferung
	new newLieferung
	new buchungscode
	
	set buchungscode = {Buchungscode*N}
	set artikelId = {Artikel*N}
	set lagerortId = {Lagerort*N}
	set oldLieferung = {Menge*O}
	
	set isZugang = buchungscode = ##class(DBFakturierung.Konst).LagerBuchungscodeZugang()
	if (isZugang) {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * oldLieferung, 1, 0, 0)
	} else {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, oldLieferung, 1, 0, 0)
	}
	set newLieferung = {Menge*N}
	
	if (isZugang) {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, newLieferung, 1, 0, 0)
	} else {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * newLieferung, 1, 0, 0)
	}</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="DeleteLagerbew">
<Code>	new newLieferung
	new lagerortId
	new artikelId
	new buchungscode
	
	set artikelId = {Artikel*O}
	set lagerortId = {Lagerort*O}
	set newLieferung = {Menge*O}
	set buchungscode = {Buchungscode*O}
	
	set isZugang = buchungscode = ##class(DBFakturierung.Konst).LagerBuchungscodeZugang()
	//w "Trg Delete LagerBew mit ", newLieferung, " IsZugang: ", isZugang, !
	if (isZugang) {	
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * newLieferung, 1, 0, 0)
	} else {
		do ##class(DBFakturierung.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, newLieferung, 1, 0, 0)
	}</Code>
<Event>DELETE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.LagerbewD</DataLocation>
<DefaultData>LagerbewDefaultData</DefaultData>
<IdLocation>^DBFakturierung.LagerbewD</IdLocation>
<IndexLocation>^DBFakturierung.LagerbewI</IndexLocation>
<StreamLocation>^DBFakturierung.LagerbewS</StreamLocation>
<Data name="LagerbewDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>JournalNr</Value>
</Value>
<Value name="3">
<Value>Buchungsdatum</Value>
</Value>
<Value name="4">
<Value>Buchungscode</Value>
</Value>
<Value name="5">
<Value>Referenz</Value>
</Value>
<Value name="6">
<Value>BelegNr</Value>
</Value>
<Value name="7">
<Value>Status</Value>
</Value>
<Value name="8">
<Value>Belegtext</Value>
</Value>
<Value name="9">
<Value>Menge</Value>
</Value>
<Value name="10">
<Value>PreisEW</Value>
</Value>
<Value name="11">
<Value>PreisFW</Value>
</Value>
<Value name="12">
<Value>BetragEW</Value>
</Value>
<Value name="13">
<Value>BetragFW</Value>
</Value>
<Value name="14">
<Value>Kurseinheit</Value>
</Value>
<Value name="15">
<Value>Kurs</Value>
</Value>
<Value name="16">
<Value>KundeLieferant</Value>
</Value>
<Value name="17">
<Value>Artikel</Value>
</Value>
<Value name="18">
<Value>Waehrung</Value>
</Value>
<Value name="19">
<Value>Lagerort</Value>
</Value>
<Value name="20">
<Value>Auftragsdet</Value>
</Value>
<Value name="21">
<Value>Bestelldet</Value>
</Value>
<Value name="22">
<Value>Bewegungstyp</Value>
</Value>
<Value name="23">
<Value>Schuhgroesse</Value>
</Value>
<Value name="24">
<Value>Lieferdatum</Value>
</Value>
<Value name="25">
<Value>Bearbeiter</Value>
</Value>
<Value name="26">
<Value>AnzEtiketten</Value>
</Value>
<Value name="27">
<Value>BearbeiterKurzel</Value>
</Value>
<Value name="28">
<Value>ArtikelNrLieferant</Value>
</Value>
<Value name="29">
<Value>Bestellungsdet</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AnzEtiketten">
</Property>
<Property name="Artikel">
</Property>
<Property name="ArtikelNrLieferant">
</Property>
<Property name="Auftragsdet">
</Property>
<Property name="Bearbeiter">
</Property>
<Property name="BearbeiterKurzel">
</Property>
<Property name="BelegNr">
</Property>
<Property name="Belegtext">
</Property>
<Property name="Bestelldet"/>
<Property name="Bestellungsdet">
</Property>
<Property name="BetragEW">
</Property>
<Property name="BetragFW">
</Property>
<Property name="Bewegungstyp">
</Property>
<Property name="Buchungscode">
</Property>
<Property name="Buchungsdatum">
</Property>
<Property name="JournalNr">
</Property>
<Property name="KundeLieferant">
</Property>
<Property name="Kurs">
</Property>
<Property name="Kurseinheit">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Lieferdatum">
</Property>
<Property name="Menge">
</Property>
<Property name="PreisEW">
</Property>
<Property name="PreisFW">
</Property>
<Property name="Referenz">
</Property>
<Property name="Schuhgroesse">
</Property>
<Property name="Status">
</Property>
<Property name="Waehrung">
</Property>
</Storage>
</Class>


<Project name="DBFakturierung" Target="##class(DBFakturierung.Auftragspos).%OnDelete(&apos;1463||50358&apos;)" TargetType="2">
  <Items>
    <ProjectItem name="DBFakturierung.AF.AbzuegeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.ArtPreisDatumAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.ArtZusatztextAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.ArtikelAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.AuftragsKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.AuftragspositionAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.GeraetAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.KGPreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.KassenbelegAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.KassenbelegPosAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.KontraktAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.KundenPreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.LagerbewAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.PreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.ReparaturAuftragAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.AbzugstypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.ArtGrPreisKatRabattAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.ArtikelcodeDetailAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.ArtikelcodeStammAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.ArtikelgruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.AuftrTextAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.AuftragstypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.BestellartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.ChauffeurAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.DrucktypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.FormularAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.FusstextAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.GeraeteArtAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.HerkunftAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.LSVADistanzAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.LSVATransportKatAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.LagerortAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.LieferantengruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.LieferartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.MargenStaffelAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.MengencodeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.PreislisteAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.ProduktgruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.QSMeldTypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.SteuerungAuftragsbearbAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.StrgEinkAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblDataEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblFussAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblFussEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblFussSkontoEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblKopfEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblSREntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblSRgfEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TblSRgkEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.SD.TrockKostenAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.TempAusgangAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AF.VorabaustauschAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Abzuege" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.ArtPreisDatum" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.ArtVerarb" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.ArtWaehrung" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Artikel" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.ArtikelLager" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.ArtikelZuText" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.AuftrStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Auftragskopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Auftragspos" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Geraet" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KGPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KGRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KGRueckverg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Kassenbeleg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KassenbelegPosition" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Konst" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Kontrakt" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KundenPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KundenRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KundenRueckverg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.KundenStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Lagerbew" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Preis" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Rabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.RepAuftrag" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Rueckverg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Abzugstyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.ArtGrPreisKatRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.ArtikelcodeDetail" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.ArtikelcodeStamm" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Artikelgrp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.AuftrText" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Auftragstyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Bestellart" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Chauffeur" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.DTypForm" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.DTypRepHead" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.DTypTblFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.DTypTblKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Drucktyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.FormDrucker" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.FormDruckerBen" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Formular" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Fusstext" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.GeraeteArt" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Herkunft" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Hilfstexte" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.LSVADist" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.LSVAKat" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Lagerort" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Lieferart" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Liefgrp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.MargenStaf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.MargenStafE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Mengencode" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Preisliste" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Produktgruppe" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.QSMeldTyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.Qualitaetsklasse" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.StrgAuftrag" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.StrgEinkauf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.StrgEinkaufM" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblDataE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblFussE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblFussSktE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblKopfE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblSREntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblSRgfE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TblSRgkE" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.SD.TrockKosten" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.TempAusgang" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.TmpAusgGeraet" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.TypStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Umsatz" type="CLS"></ProjectItem>
    <ProjectItem name="DBFakturierung.Vorabtausch" type="CLS"></ProjectItem>
  </Items>
</Project>


<Class name="DBFakturierung.Preis">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61689,47907.484397</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="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>VPreis</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="ZusatzArtikelNr">
<Description>
ZusatzArtikelNr</Description>
<Type>%String</Type>
<Required>1</Required>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="ArtikelAktiv">
<Description>
Artikel aktiv</Description>
<Type>%Boolean</Type>
</Property>

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

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

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

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

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

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

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

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

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

<Property name="VerfalldatumTage">
<Description>
VerfaldatumTage</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnzahlJeEinheitTyp2">
<Description>
Anzahl Je Einheit Typ2</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="EngrosPreisAbDatum">
<Description>
Engros - Preis ab Datum</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="DetailPreisAbDatum">
<Description>
Detail - Preis ab Datum</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="AnbruchsPreisAbDatum">
<Description>
Anbruchs - Preis ab Datum</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="DatumPreisaenderung">
<Description>
Datum Preisaenderung</Description>
<Type>%Date</Type>
</Property>

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

<Property name="EtiketteJeGebinde">
<Description>
Etikette je Gebinde</Description>
<Type>%Integer</Type>
</Property>

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

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

<Property name="ArtikelNrWaage">
<Description>
ArtikelNr Waage</Description>
<Type>%Integer</Type>
</Property>

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

<Index name="HerkunftIndex">
<Properties>Herkunft</Properties>
</Index>

<Property name="Etikettentyp1">
<Type>DBPrint.Etikette</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktVPreisEtikettentyp1</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Etikettentyp1"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="Etikettentyp1Index">
<Properties>Etikettentyp1</Properties>
</Index>

<Property name="Etikettentyp2">
<Type>DBPrint.Etikette</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktVPreisEtikettentyp2</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Etikettentyp2"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="Etikettentyp2Index">
<Properties>Etikettentyp2</Properties>
</Index>

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

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

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

<Index name="ProduzentIndex">
<Properties>Produzent</Properties>
</Index>

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

<Index name="ZulieferantIndex">
<Properties>Zulieferant</Properties>
</Index>

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

<Index name="MengeIndex">
<Properties>Menge</Properties>
</Index>

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

<Index name="AbzugstypIndex">
<Properties>Abzugstyp</Properties>
</Index>

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

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

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

<Property name="AuftragDetail">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>SpezPreis</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetOidForArtikelbaum">
<ClassMethod>1</ClassMethod>
<FormalSpec>DebitorOid:%String,kundGrpOid:%String,ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	set zusatzNr = 0
	set kundGrpNr = 0
	
	set kg = ##class(DBAdressen.SD.Kundengruppe).%OpenId(kundGrpOid)
	if (kg '= "") {
		set kundGrpNr = kg.Code	
	}
	//wenn Kundenspezifisch
		
	set preistyp = 1
	Set strSQL="SELECT ID FROM DBFakturierung.KundenPreis "_
			"WHERE Kunde = "_DebitorOid_" "_
			"AND Artikel->ID = "_ArtikelOid_" "_
			"AND ZusatzArtikelNr = '"_zusatzNr_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set id=rs.Data("ID")
			Quit
		}
    }
        
	// wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		Set strSQL="SELECT ID FROM DBFakturierung.KGPreis "_
				"WHERE Kunde = "_DebitorOid_" "_
				"AND Artikel->ID = "_ArtikelOid_" "_
				"AND Gruppe = "_kundGrpOid_" "_
				"AND ZusatzArtikelNr = '"_zusatzNr_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			if rs.Next(.sc) {
				Set id=rs.Data("ID")
			}
        }
	}

	quit id
]]></Implementation>
</Method>

<Method name="GetPreis">
<Description><![CDATA[
Methode gibt den Preis anhand des Mandanten, Adresse und Artikel zurück
onlyGroup steuert, dass nur nach den Gruppe gesucht wird -> dann muss onlyKunde auf False sein!!!
onlyKunde steuert, dass explizit nur nach dem Kunden gesucht wird,
und nicht wenn der Kunde nicht gefunden wurde, noch nach der Gruppe gesucht wird]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandOid:%String,AdressOid:%String,ArtikelOid:%String,onlyGroup:%Boolean,onlyKunde:%Boolean,otherKGOid:%String="",zusatzNr:%String=""</FormalSpec>
<ReturnType>DBFakturierung.Preis</ReturnType>
<Implementation><![CDATA[
	
	set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
	set debOid = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, AdressOid)
	set art = ##class(DBFakturierung.Artikel).%OpenId(ArtikelOid)
	set artGrpOid = ""
	set kundGrpOid = ""
	set kundGrpNr = ""
	set artNr = ""
	// Zusatznummer = 0 wenn keine andere angegeben
	if (zusatzNr = "") {
		set zusatzNr = 0
	}
	// Kundengruppe der Adresse auswählen
	if (otherKGOid = "") {
		if (adr '= "") && (adr.Kundengruppe '= "") {
			set kundGrpOid = adr.Kundengruppe.%Id()
			set kundGrpNr = adr.Kundengruppe.Code	
		}
	// andere Kundengruppe auswählen
	} else {
		set kg = ##class(DBAdressen.SD.Kundengruppe).%OpenId(otherKGOid)
		if (kg '= "") {
			set kundGrpOid = kg.%Id()
			set kundGrpNr = kg.Code	
		}
	}
	if (art '= "") {
		if (art.Artikelgruppe '= "") {
			set artGrp = art.Artikelgruppe.%Id()
		}
		set artNr = art.ArtikelNr
	}
	set onlyGroup = onlyGroup && (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())

	// wenn Oids nicht übergeben wurden -> Quit
	if ((MandantOid = "") || ((otherKGOid="") && (AdressOid = "")) || (ArtikelOid = "")) {
		Quit ""
	}
	// onlyGroup und onlyKunde dürfen nie beide auf true gesetzt sein
	// Wenn doch -> Quit
	if ((onlyGroup = 1) && (onlyKunde = 1)) {
		Quit ""
	}
	
	
	set id = ""	
	set preistyp = 0	
	//wenn Kundenspezifisch
	if (onlyGroup = 0) {
		
		set preistyp = 1
		Set strSQL="SELECT ID FROM DBFakturierung.KundenPreis "_
		 			"WHERE Artikel->Mandant = '"_MandantOid_"' "_
		 			"AND Kunde = '"_debOid_"' "_
		 			"AND Artikel->ArtikelNr = '"_artNr_"' "_
		 			"AND ZusatzArtikelNr = '"_zusatzNr_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			While rs.Next(.sc) {
				Set id=rs.Data("ID")
				Quit
			}
        }
		
	} // wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (onlyKunde = 0) && (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		Set strSQL="SELECT ID FROM DBFakturierung.KGPreis "_
		 			"WHERE Artikel->Mandant = '"_MandantOid_"' "_
		 			"AND Gruppe = '"_kundGrpOid_"' "_
		 			"AND Artikel->ArtikelNr = '"_artNr_"' "_
		 			"AND ZusatzArtikelNr = '"_zusatzNr_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			If (rs.Next(.sc)) {
				Set id=rs.Data("ID")
			}
        }
	}
	if (id '= "") {
		if (preistyp = 1) {
			Quit ##class(DBFakturierung.KundenPreis).%OpenId(id)	
		} elseif (preistyp = 2) {
			Quit ##class(DBFakturierung.KGPreis).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Method name="ClonePreis">
<ClassMethod>1</ClassMethod>
<FormalSpec>srcPreis:DBFakturierung.Preis</FormalSpec>
<ReturnType>DBFakturierung.Preis</ReturnType>
<Implementation><![CDATA[
	set retval = ""
	if (srcPreis '= "") {
		set retval = srcPreis.%ConstructClone(-1)
	
	}
	Quit retval
]]></Implementation>
</Method>

<Method name="GetNextZusatzNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Kunde:%String,Gruppe:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set zusatzNr = -1
	set zusatzNr2 = -1
	set count = 0
	if ((Gruppe '= "")) {
		&sql(SELECT MAX(ZusatzArtikelNr) INTO :zusatzNr FROM DBFakturierung.KGPreis WHERE Artikel = :Artikel AND Gruppe = :Gruppe)
		if (+zusatzNr = 0) {
			&sql(SELECT COUNT(ZusatzArtikelNr) INTO :count FROM DBFakturierung.KGPreis WHERE Artikel = :Artikel AND Gruppe = :Gruppe)
			if (+count = 0) {
				set zusatzNr = -1
			}		
		}
	}
	if ((Kunde '= "")) {
		set count2 = 0
		&sql(SELECT MAX(ZusatzArtikelNr) INTO :zusatzNr2 FROM DBFakturierung.KundenPreis WHERE Artikel = :Artikel AND Kunde->Adresse = :Kunde)
		if (+zusatzNr2 = 0) {
			&sql(SELECT COUNT(ZusatzArtikelNr) INTO :count2 FROM DBFakturierung.KundenPreis WHERE Artikel = :Artikel AND Kunde->Adresse = :Kunde)
			if (+count2 = 0) {
				set zusatzNr2 = -1
			}		
		}
	}
	if (+zusatzNr2 > +zusatzNr) {
		set zusatzNr = zusatzNr2
	}
	quit (+zusatzNr)+1
]]></Implementation>
</Method>

<Method name="UpdatePreiseAbDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,GruppenNrVon:%Integer,GruppenNrBis:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set cnt = 0
	set date = $PIECE($HOROLOG,",",1)
	&sql(UPDATE DBFakturierung.KGPreis
		 SET EngrosPreis = EngrosPreisAbDatum, DetailPreis = DetailPreisAbDatum,
		 	 AnbruchsPreis = AnbruchsPreisAbDatum, EngrosPreisAbDatum = 0,
		 	 DetailPreisAbDatum = 0, AnbruchsPreisAbDatum = 0, DatumPreisaenderung = NULL
		 WHERE DatumPreisaenderung <= :date AND Artikel->Mandant = :MandantOid
		 AND Gruppe->Code BETWEEN :GruppenNrVon AND :GruppenNrBis)
	
	set cnt = %ROWCOUNT
	Quit cnt
]]></Implementation>
</Method>

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

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

<Method name="MoveNextOnZusatzNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,aktArtikelNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnZusatzNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,aktArtikelNr:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	Quit list
]]></Implementation>
</Method>

<Method name="DeleteAllByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	// Verknüpfung auf Detailpositionen zurücksetzen
	Set strSQL="UPDATE DBFakturierung.Auftragspos "_
			"SET SpezPreis = NULL "_
			"WHERE Artikel->Mandant = '"_MandantOid_"'"
			
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
	    
	    // SpezEinst von Kunde löschen
		Set strSQL="DELETE FROM DBFakturierung.KundenPreis "_
				"WHERE Artikel->Mandant = '"_MandantOid_"'"
			
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
	    IF $$$ISOK(sc) {
		    
		    
	   		 // SpezEinst von Kundengruppe löschen
			Set strSQL="DELETE FROM DBFakturierung.KGPreis "_
					"WHERE Artikel->Mandant = '"_MandantOid_"'"
			
			Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
			Do rs.Prepare(strSQL)
			Set sc=rs.Execute()
	    }
    }
	quit sc
]]></Implementation>
</Method>

<Method name="GetPreisForWebEdi">
<ClassMethod>1</ClassMethod>
<FormalSpec>DebiOid:%String,SpezArtikelNr:%String</FormalSpec>
<ReturnType>DBFakturierung.Preis</ReturnType>
<Implementation><![CDATA[
	// wenn Oids nicht übergeben wurden -> Quit
	if (DebiOid = "" || SpezArtikelNr="") {
		Quit ""
	}
	set id = ""
	set debi = ##class(DBDebiKredi.Debitor).%OpenId(DebiOid)
	//set art = ##class(DBFakturierung.Artikel).%OpenId(ArtikelOid)
	set kundGrpOid = ""
	set kundGrpNr = ""
	set artNr = ""
	// Kundengruppe der debi.Adresse auswählen
	if (debi.Adresse '= "") && (debi.Adresse.Kundengruppe '= "") {
		set kundGrpOid = debi.Adresse.Kundengruppe.%Id()
		set kundGrpNr = debi.Adresse.Kundengruppe.Code	
	}
	set onlyGroup = (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())
	
	
	set preistyp = 0	
	//wenn Kundenspezifisch
	if (onlyGroup = 0) {
		
		set preistyp = 1
		Set strSQL="SELECT ID FROM DBFakturierung.KundenPreis "_
		 			"WHERE Kunde = '"_DebiOid_"' "_
		 			"AND KundenSpezArtNr = '"_SpezArtikelNr_"' "
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			While rs.Next(.sc) {
				Set id=rs.Data("ID")
				Quit
			}
        }
		
	} // wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (onlyKunde = 0) && (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		Set strSQL="SELECT ID FROM DBFakturierung.KGPreis "_
		 			"WHERE Gruppe = '"_kundGrpOid_"' "_
		 			"AND KundenSpezArtNr = '"_SpezArtikelNr_"' "
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			If (rs.Next(.sc)) {
				Set id=rs.Data("ID")
			}
        }
	}
	if (id '= "") {
		if (preistyp = 1) {
			Quit ##class(DBFakturierung.KundenPreis).%OpenId(id)	
		} elseif (preistyp = 2) {
			Quit ##class(DBFakturierung.KGPreis).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.PreisD</DataLocation>
<DefaultData>PreisDefaultData</DefaultData>
<IdLocation>^DBFakturierung.PreisD</IdLocation>
<IndexLocation>^DBFakturierung.PreisI</IndexLocation>
<StreamLocation>^DBFakturierung.PreisS</StreamLocation>
<Data name="PreisDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikel</Value>
</Value>
<Value name="3">
<Value>ZusatzArtikelNr</Value>
</Value>
<Value name="4">
<Value>ArtikelAktiv</Value>
</Value>
<Value name="5">
<Value>Preislisten</Value>
</Value>
<Value name="6">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="7">
<Value>KundenSpezArtNr</Value>
</Value>
<Value name="8">
<Value>Barcode</Value>
</Value>
<Value name="9">
<Value>EngrosPreis</Value>
</Value>
<Value name="10">
<Value>DetailPreis</Value>
</Value>
<Value name="11">
<Value>AnbruchsPreis</Value>
</Value>
<Value name="12">
<Value>RabattProzent</Value>
</Value>
<Value name="13">
<Value>AbpackdatumTage</Value>
</Value>
<Value name="14">
<Value>VerfalldatumTage</Value>
</Value>
<Value name="15">
<Value>AnzahlJeEinheitTyp2</Value>
</Value>
<Value name="16">
<Value>Zusatzsortierung</Value>
</Value>
<Value name="17">
<Value>EngrosPreisAbDatum</Value>
</Value>
<Value name="18">
<Value>DetailPreisAbDatum</Value>
</Value>
<Value name="19">
<Value>AnbruchsPreisAbDatum</Value>
</Value>
<Value name="20">
<Value>DatumPreisaenderung</Value>
</Value>
<Value name="21">
<Value>Etikettendruck</Value>
</Value>
<Value name="22">
<Value>EtiketteJeGebinde</Value>
</Value>
<Value name="23">
<Value>AnzahlEtikettenJeGebinde</Value>
</Value>
<Value name="24">
<Value>ArtikeltextEtikette</Value>
</Value>
<Value name="25">
<Value>ArtikelNrWaage</Value>
</Value>
<Value name="26">
<Value>Gebinde</Value>
</Value>
<Value name="27">
<Value>Herkunft</Value>
</Value>
<Value name="28">
<Value>Etikettentyp1</Value>
</Value>
<Value name="29">
<Value>Etikettentyp2</Value>
</Value>
<Value name="30">
<Value>Lieferant</Value>
</Value>
<Value name="31">
<Value>Produzent</Value>
</Value>
<Value name="32">
<Value>Zulieferant</Value>
</Value>
<Value name="33">
<Value>Menge</Value>
</Value>
<Value name="34">
<Value>Abzugstyp</Value>
</Value>
<Value name="35">
<Value>MinMarge</Value>
</Value>
<Value name="36">
<Value>MaxMarge</Value>
</Value>
<Value name="37">
<Value>MargeInProzent</Value>
</Value>
<Value name="38">
<Value>GrammJeEinheit</Value>
</Value>
<Value name="39">
<Value>GrammJeLaufmeter</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AbpackdatumTage">
</Property>
<Property name="Abzugstyp">
</Property>
<Property name="AnbruchsPreis">
</Property>
<Property name="AnbruchsPreisAbDatum">
</Property>
<Property name="AnzahlEtikettenJeGebinde">
</Property>
<Property name="AnzahlJeEinheitTyp2">
</Property>
<Property name="AnzahlJeGebinde">
</Property>
<Property name="Artikel">
</Property>
<Property name="ArtikelAktiv">
</Property>
<Property name="ArtikelNrWaage">
</Property>
<Property name="ArtikeltextEtikette">
</Property>
<Property name="Barcode">
</Property>
<Property name="DatumPreisaenderung">
</Property>
<Property name="DetailPreis">
</Property>
<Property name="DetailPreisAbDatum">
</Property>
<Property name="EngrosPreis">
</Property>
<Property name="EngrosPreisAbDatum">
</Property>
<Property name="EtiketteJeGebinde">
</Property>
<Property name="Etikettendruck">
</Property>
<Property name="Etikettentyp1">
</Property>
<Property name="Etikettentyp2">
</Property>
<Property name="Gebinde"/>
<Property name="GrammJeEinheit"/>
<Property name="GrammJeLaufmeter"/>
<Property name="Herkunft">
</Property>
<Property name="KundenSpezArtNr">
</Property>
<Property name="Lieferant">
</Property>
<Property name="MargeInProzent">
</Property>
<Property name="MaxMarge">
</Property>
<Property name="Menge">
</Property>
<Property name="MinMarge">
</Property>
<Property name="Preislisten">
</Property>
<Property name="Produzent">
</Property>
<Property name="RabattProzent">
</Property>
<Property name="VerfalldatumTage">
</Property>
<Property name="Zulieferant">
</Property>
<Property name="ZusatzArtikelNr">
</Property>
<Property name="Zusatzsortierung">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.Rabatt">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57222.288049</TimeChanged>
<TimeCreated>61571,35480.300922</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="Artikelgruppe">
<Type>DBFakturierung.SD.Artikelgrp</Type>
<Cardinality>one</Cardinality>
<Inverse>RabattKundengruppe</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Artikelgruppe"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ArtikelgruppeIndex">
<Properties>Artikelgruppe</Properties>
</Index>

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.RabattD</DataLocation>
<DefaultData>RabattDefaultData</DefaultData>
<IdLocation>^DBFakturierung.RabattD</IdLocation>
<IndexLocation>^DBFakturierung.RabattI</IndexLocation>
<StreamLocation>^DBFakturierung.RabattS</StreamLocation>
<Data name="RabattDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikelgruppe</Value>
</Value>
<Value name="3">
<Value>RabattProzent</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.RepAuftrag">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57334.554195</TimeChanged>
<TimeCreated>61647,53715.993538</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="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>RepAufFaktKunde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Kunde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

<Property name="Problem">
<Type>%String</Type>
<Parameter name="MAXLEN" value="2500"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Geraet">
<Type>DBFakturierung.Geraet</Type>
<Cardinality>parent</Cardinality>
<Inverse>ReparaturAuftrag</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="GeraetIndex">
<Properties>Geraet</Properties>
</Index>

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

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

<Property name="Status">
<Type>%Integer</Type>
<Parameter name="MAXVAL" value="10"/>
<Parameter name="MINVAL" value="0"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Parameter name="MINVAL" value="0"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ReparaturAuftrag")</DataLocation>
<DefaultData>RepAuftragDefaultData</DefaultData>
<IdLocation>^DBFakturierung.GeraetC("ReparaturAuftrag")</IdLocation>
<IndexLocation>^DBFakturierung.RepAuftragI</IndexLocation>
<StreamLocation>^DBFakturierung.RepAuftragS</StreamLocation>
<Data name="RepAuftragDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Kunde</Value>
</Value>
<Value name="3">
<Value>Datum</Value>
</Value>
<Value name="4">
<Value>Problem</Value>
</Value>
<Value name="5">
<Value>Sachbearbeiter</Value>
</Value>
<Value name="6">
<Value>Status</Value>
</Value>
<Value name="7">
<Value>Nummer</Value>
</Value>
</Data>
<Property name="Datum"/>
<Property name="Geraet"/>
<Property name="Kunde"/>
<Property name="Nummer"/>
<Property name="Problem"/>
<Property name="Sachbearbeiter"/>
<Property name="Status"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFakturierung.Rueckverg">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57222.370985</TimeChanged>
<TimeCreated>61689,47933.881364</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="ProzentLaufend">
<Description>
Rückvergütung laufend</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Umsatz1">
<Description>
Rückvergütung ab Umsatz 1</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Prozent1">
<Description>
Rückvergütung ab Prozent1</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Umsatz2">
<Description>
Rückvergütung ab Umsatz 2</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Prozent2">
<Description>
Rückvergütung ab Prozent2</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Umsatz3">
<Description>
Rückvergütung ab Umsatz 3</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Prozent3">
<Description>
Rückvergütung ab Prozent3</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Umsatz4">
<Description>
Rückvergütung ab Umsatz 4</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Prozent4">
<Description>
Rückvergütung ab Prozent4</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Umsatz5">
<Description>
Rückvergütung ab Umsatz 5</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Prozent5">
<Description>
Rückvergütung ab Prozent5</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GueltigAbDatum">
<Description>
Gültig ab Datum</Description>
<Type>%Date</Type>
</Property>

<Method name="GetRueckverg">
<Description><![CDATA[
Methode gibt die Rückvergütung anhand der Adresse und Datum zurück
onlyGroup steuert, dass nur nach den Gruppe gesucht wird -> dann muss onlyKunde auf False sein!!!
onlyKunde steuert, dass explizit nur nach dem Kunden gesucht wird,
und nicht wenn der Kunde nicht gefunden wurde, noch nach der Gruppe gesucht wird]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>AdressOid:%String,Datum:%Date,onlyGroup:%Boolean,onlyKunde:%Boolean,exactDate:%Boolean=0</FormalSpec>
<ReturnType>DBFakturierung.Rueckverg</ReturnType>
<Implementation><![CDATA[
	
	set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
	set kundGrpOid = ""
	set kundGrpNr = ""
	
	
	// Kundengruppe der Adresse auswählen
	if (adr '= "") && (adr.Kundengruppe '= "") {
		set kundGrpOid = adr.Kundengruppe.%Id()
		set kundGrpNr = adr.Kundengruppe.Code
	}
	
	set onlyGroup = onlyGroup && (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())

	// wenn Oids nicht übergeben wurden -> Quit
	if ((Datum = "") || (AdressOid = "")) {
		Quit ""
	}
	// onlyGroup und onlyKunde dürfen nie beide auf true gesetzt sein
	// Wenn doch -> Quit
	if ((onlyGroup = 1) && (onlyKunde = 1)) {
		Quit ""
	}
	
	set id = ""	
	set typ = 0	
	//wenn Kundenspezifisch
	w "Adresse: ", adr, !
	w "Gruppen Nr: ", kundGrpNr, !
	w "Datum: ", Datum, !
	w "Nur Gruppe: ", onlyGroup, !
	w "Nur Kunde: ", onlyKunde, !
	if (onlyGroup = 0) {
		set typ = 1
		if (exactDate) {
			set id = ##class(DBFakturierung.KundenRueckverg).GetOidByExaktKundeDatum(AdressOid, Datum)
		} else {
			set id = ##class(DBFakturierung.KundenRueckverg).GetOidByKundeDatum(AdressOid, Datum)
		}
		
	} // wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (onlyKunde = 0) && (kundGrpNr < ##class(DBFakturierung.Konst).KundenGrpKundenbezStart())) {
		set typ = 2
		if (exactDate) {
			set id = ##class(DBFakturierung.KGRueckverg).GetOidByExaktKgDatum(kundGrpOid, Datum)
		} else {
			set id = ##class(DBFakturierung.KGRueckverg).GetOidByKgDatum(kundGrpOid, Datum)
		}
	}
	
	if (id '= "") {
		if (typ = 1) {
			Quit ##class(DBFakturierung.KundenRueckverg).%OpenId(id)	
		} elseif (typ = 2) {
			Quit ##class(DBFakturierung.KGRueckverg).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.RueckvergD</DataLocation>
<DefaultData>RueckvergDefaultData</DefaultData>
<IdLocation>^DBFakturierung.RueckvergD</IdLocation>
<IndexLocation>^DBFakturierung.RueckvergI</IndexLocation>
<StreamLocation>^DBFakturierung.RueckvergS</StreamLocation>
<Data name="RueckvergDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>ProzentLaufend</Value>
</Value>
<Value name="3">
<Value>Umsatz1</Value>
</Value>
<Value name="4">
<Value>Prozent1</Value>
</Value>
<Value name="5">
<Value>Umsatz2</Value>
</Value>
<Value name="6">
<Value>Prozent2</Value>
</Value>
<Value name="7">
<Value>Umsatz3</Value>
</Value>
<Value name="8">
<Value>Prozent3</Value>
</Value>
<Value name="9">
<Value>Umsatz4</Value>
</Value>
<Value name="10">
<Value>Prozent4</Value>
</Value>
<Value name="11">
<Value>Umsatz5</Value>
</Value>
<Value name="12">
<Value>Prozent5</Value>
</Value>
<Value name="13">
<Value>GueltigAbDatum</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Abzugstyp">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62017,53395.076669</TimeChanged>
<TimeCreated>61689,38023.060225</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>

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

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

<Property name="ArtikelAbzugstyp">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Abzuege">
<Type>DBFakturierung.Abzuege</Type>
<Cardinality>children</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AbzugTyp">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreisAbzug">
<Type>DBFakturierung.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtikelAbzugstypArtikelbez">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>AbzugstypArtikelbez</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtVerarb">
<Type>DBFakturierung.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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


<Class name="DBFakturierung.SD.ArtGrPreisKatRabatt">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57222.425964</TimeChanged>
<TimeCreated>61689,38119.573709</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="Artikelgruppe">
<Type>DBFakturierung.SD.Artikelgrp</Type>
<Cardinality>one</Cardinality>
<Inverse>RabattPreiskat</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Artikelgruppe"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ArtikelgruppeIndex">
<Properties>Artikelgruppe</Properties>
</Index>

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

<Index name="PreiskategorieIndex">
<Properties>Preiskategorie</Properties>
</Index>

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

<Method name="GetRabatt">
<Description>
Gibt den Rabatt in Prozent zurück mittels Artikelgruppe und Preiskategorie</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String,PreisKatOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set rabatt = 0
	&sql(Select RabattProzent into :rabatt From DBFakturierung_SD.ArtGrPreisKatRabatt WHERE Artikelgruppe = :ArtGrpOid AND Preiskategorie = :PreisKatOid)
	quit rabatt
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturie30A1.ArtGrPreisK915BD</DataLocation>
<DefaultData>ArtGrPreisKatRabattDefaultData</DefaultData>
<IdLocation>^DBFakturie30A1.ArtGrPreisK915BD</IdLocation>
<IndexLocation>^DBFakturie30A1.ArtGrPreisK915BI</IndexLocation>
<StreamLocation>^DBFakturie30A1.ArtGrPreisK915BS</StreamLocation>
<Data name="ArtGrPreisKatRabattDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikelgruppe</Value>
</Value>
<Value name="3">
<Value>Preiskategorie</Value>
</Value>
<Value name="4">
<Value>RabattProzent</Value>
</Value>
</Data>
</Storage>
</Class>


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

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

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

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

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

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

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

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

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

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturie30A1.ArtikelcodeF800D</DataLocation>
<DefaultData>ArtikelcodeDetailDefaultData</DefaultData>
<IdLocation>^DBFakturie30A1.ArtikelcodeF800D</IdLocation>
<IndexLocation>^DBFakturie30A1.ArtikelcodeF800I</IndexLocation>
<StreamLocation>^DBFakturie30A1.ArtikelcodeF800S</StreamLocation>
<Data name="ArtikelcodeDetailDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Artikelcode</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikelcode">
</Property>
<Property name="Mandant">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.ArtikelcodeStamm">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>62046,37048.024731</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

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

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

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturie30A1.ArtikelcodeB956D</DataLocation>
<DefaultData>ArtikelcodeStammDefaultData</DefaultData>
<IdLocation>^DBFakturie30A1.ArtikelcodeB956D</IdLocation>
<IndexLocation>^DBFakturie30A1.ArtikelcodeB956I</IndexLocation>
<StreamLocation>^DBFakturie30A1.ArtikelcodeB956S</StreamLocation>
<Data name="ArtikelcodeStammDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Artikelcode</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikelcode">
</Property>
<Property name="Mandant">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Artikelgrp">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61647,53918.214021</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="ArtikelgruppenNr">
<Description>
Artikelgruppen-Nr</Description>
<Type>%Integer</Type>
</Property>

<Index name="ArtGrpNrIndex">
<Data>%%ID,ArtikelgruppenNr</Data>
<Properties>Mandant,ArtikelgruppenNr</Properties>
<Unique>1</Unique>
</Index>

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

<Index name="BezeichnungIndex">
<Data>%%ID,ArtikelgruppenNr,Bezeichnung(KEYS),Bezeichnung(ELEMENTS)</Data>
<Properties>Mandant:Exact,Bezeichnung(KEYS):Exact,Bezeichnung(ELEMENTS):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>

<Property name="ArtikelArtikelgruppe">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="RabattKundengruppe">
<Type>DBFakturierung.Rabatt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</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(DBFakturierung.SD.Artikelgrp).%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="ArtGruppeExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.Artikelgrp
	     WHERE ArtikelgruppenNr >= 10 AND Mandant = :MandantOid)
	if (id = "") {
		Quit 0
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetFirstArtGrpId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.Artikelgrp
	     WHERE ArtikelgruppenNr >= 10 AND Mandant = :MandantOid ORDER BY ArtikelgruppenNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetLastArtGrpId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.Artikelgrp
	     WHERE ArtikelgruppenNr >= 10 AND Mandant = :MandantOid ORDER BY ArtikelgruppenNr DESC)
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByArtikelgruppenNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtikelgruppenNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Artikelgrp
	     WHERE ArtikelgruppenNr = :ArtikelgruppenNr AND Mandant = :MandantOid)
	Quit id
]]></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(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",MandantOid,""),1)
	if (grp '= ""){
		set id = $Order(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",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(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",MandantOid,""),-1)
	if (grp '= ""){
		set id = $Order(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",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(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",MandantOid,AdrNr))
	if (nextNr '= "") {
		set res = $Order(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",MandantOid,nextNr,""),1,list)
	} else {
		set list = ##class(DBFakturierung.SD.Artikelgrp).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(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",MandantOid,AdrNr),-1)
	if (nextNr '= "") {
		set res = $Order(^DBFakturierung.SD.ArtikelgrpI("ArtGrpNrIndex",MandantOid,nextNr,""),-1,list)
	} else {
		set list = ##class(DBFakturierung.SD.Artikelgrp).MoveFirstOnNr(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

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

	set lang = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set grp = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,""),1)
		if (grp '= "") {
			set id = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,grp,""),1,list)
		} else {
			Quit ""
		}
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

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

	set lang = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set grp = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,""),-1)
		if (grp '= "") {
			set id = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,grp,""),-1,list)
		} else {
			Quit ""
		}
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnBezeichnung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Kurzname:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set nextNr = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,Kurzname))
	if (nextNr '= "") {
		set res = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,nextNr,""),1,list)
	} else {
		set list = ##class(DBFakturierung.SD.Artikelgrp).MoveLastOnBezeichnung(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnBezeichnung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Kurzname:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
    set nextNr = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,Kurzname),-1)
	if (nextNr '= "") {
		set res = $Order(^DBFakturierung.SD.ArtikelgrpI("BezeichnungIndex",MandantOid,Lang,nextNr,""),-1,list)
	} else {
		set list = ##class(DBFakturierung.SD.Artikelgrp).MoveFirstOnBezeichnung(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="GetIdByBezeichnung">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Bezeichnung:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	set bez = Bezeichnung_"%"
	&sql(SELECT TOP 1 ID INTO :id 
		 FROM DBFakturierung_SD.Artikelgrp 
		 WHERE Mandant = :MandantOid
		 AND DBFakturierung_SD.Artikelgrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :bez)
	
	if (id '= "") {
		Quit id
		
		// keine Daten gefunden
	} else {
		Quit ""
	}
]]></Implementation>
</Method>

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

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

<Property name="MargenStaffel">
<Type>DBFakturierung.SD.MargenStaf</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="MargenStaffelIndex">
<Properties>MargenStaffel</Properties>
</Index>

<Property name="RabattPreiskat">
<Type>DBFakturierung.SD.ArtGrPreisKatRabatt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="StrgEinkauf">
<Type>DBFakturierung.SD.StrgEinkauf</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.ArtikelgrpD</DataLocation>
<DefaultData>ArtikelgrpDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.ArtikelgrpD</IdLocation>
<IndexLocation>^DBFakturierung.SD.ArtikelgrpI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.ArtikelgrpS</StreamLocation>
<Data name="ArtikelgrpDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>ArtikelgruppenNr</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>MargenStaffel</Value>
</Value>
</Data>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="ArtikelgruppenNr">
</Property>
<Property name="Mandant">
</Property>
<Property name="MargenStaffel">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.AuftrText">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57272.919868</TimeChanged>
<TimeCreated>61717,36051.302255</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

<Index name="NummerIndex">
<Data>%%ID,Nummer,Text1,Text2</Data>
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

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

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

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

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

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

<Method name="GetTextByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,Nr:%Integer</FormalSpec>
<ReturnType>DBFakturierung.SD.AuftrText</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT ID InTo :oid 
			FROM DBFakturierung_SD.AuftrText 
			WHERE Mandant=:MandOid AND Nummer=:Nr)
	Quit ##class(DBFakturierung.SD.AuftrText).%OpenId(oid)
]]></Implementation>
</Method>

<Method name="MoveFirstOnNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set nummer = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,""),1)
	if (nummer '= ""){
		set res = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,nummer,""),1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveLastOnNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set nummer = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,""),-1)
	if (nummer '= ""){
		set res = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,nummer,""),-1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

<Method name="MoveNextOnNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,nr:%Integer</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nummer = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,nr))
	if (nummer '= "") {
		set res = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,nummer,""),1,list)
	} else {
		set list = ##class(DBFakturierung.SD.AuftrText).MoveLastOnNummer(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,nr:%Integer</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
	set nummer = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,nr),-1)
    if (nummer '= "") {
		set res = $Order(^DBFakturierung.SD.AuftrTextI("NummerIndex",MandantOid,nummer,""),-1,list)
	} else {
		set list = ##class(DBFakturierung.SD.AuftrText).MoveFirstOnNummer(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="GetTextOidByKurzbez">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,kbez:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	
	set oid = ""
	&sql(SELECT TOP 1 ID InTo :oid 
			FROM DBFakturierung_SD.AuftrText 
			WHERE Mandant=:MandOid AND Kurzbezeichnung=:kbez)
	quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.AuftrTextD</DataLocation>
<DefaultData>AuftrTextDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.AuftrTextD</IdLocation>
<IndexLocation>^DBFakturierung.SD.AuftrTextI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.AuftrTextS</StreamLocation>
<Data name="AuftrTextDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Kurzbezeichnung</Value>
</Value>
<Value name="4">
<Value>Text1</Value>
</Value>
<Value name="5">
<Value>Text2</Value>
</Value>
<Value name="6">
<Value>Mandant</Value>
</Value>
</Data>
<Property name="Kurzbezeichnung"/>
<Property name="Mandant"/>
<Property name="Nummer"/>
<Property name="Text1"/>
<Property name="Text2"/>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Auftragstyp">
<Super>%Persistent,%XML.Adaptor,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57273.051867</TimeChanged>
<TimeCreated>62412,57246.801921</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="MandantNrIdx">
<Properties>Mandant,Code</Properties>
<Unique>1</Unique>
</Index>

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

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

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

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

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

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.AuftragstypD</DataLocation>
<DefaultData>AuftragstypDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.AuftragstypD</IdLocation>
<IndexLocation>^DBFakturierung.SD.AuftragstypI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.AuftragstypS</StreamLocation>
<Data name="AuftragstypDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Code</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Bestellart">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62222,63639.554541</TimeChanged>
<TimeCreated>61579,54841.330771</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="FaktAdrVorschlag">
<Type>DBDebiKredi.Debitor</Type>
<Cardinality>many</Cardinality>
<Inverse>FaktBestellart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Property name="AuftrStrgVorschlag">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>VorschlagBestellart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

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


<Class name="DBFakturierung.SD.Chauffeur">
<Description>
</Description>
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61689,48365.676795</TimeChanged>
<TimeCreated>61689,38447.699869</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>

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

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

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


<Class name="DBFakturierung.SD.DTypForm">
<Super>%Persistent</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61719,33935.378324</TimeCreated>

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


<Class name="DBFakturierung.SD.DTypTblFuss">
<Super>%Persistent</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61718,56211.754536</TimeCreated>

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

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

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

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

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

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

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

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

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

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

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


<Class name="DBFakturierung.SD.DTypTblKopf">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61717,60010.848513</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

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

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

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

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

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

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

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


<Class name="DBFakturierung.SD.Drucktyp">
<Description>
</Description>
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62409,43186.830806</TimeChanged>
<TimeCreated>61689,38501.714052</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

<Property name="ASOfferteDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OfferteDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASAuftragsbestDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AuftragsbestDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASRuestscheinDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RuestscheinDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASLieferscheinDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>LieferscheinDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASRechnungDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RechnungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASSammelrechnungDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>SammelrechnungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="ASGarantieauftragDrucktyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>GarantieauftragDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

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

<Method name="CopyDrucktyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// folgende Parameter werden benötigt falls Mandantübergereifend
	///, dstMandOid As %String, overwriteOldEinst As %Boolean
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBFakturierung.SD.Drucktyp).%OpenId(SrcOid)
	set dstMandant = srcAs.Mandant
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(1)
	set dstAs.PositionsNr = newNr
	set dstAs.Mandant = dstMandant
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	
	/// Keine Elemente kopieren oder neu zuweisen da automatisch wenn gleicher Mandant
	/// Auf anderen Mandanten müssen die Elemente geprüft werden:
	// if (srcAs.Mandant'= dstMandOid) {
		// Formularvorlage
		// Prüfen ob auf dstMandant vorhanden
		// k ^allreadyCopiedFormulare
		// set dstFormularIdAu = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularAU.Nummer)
		// set srcFormularAu = ##class(DBFakturierung.SD.Formular).%OpenId(srcAs.FormularAU.%Id())
		// wenn nicht vorhanden kann die Source kopiert werden
		// if (dstFormularIdAu = "") {
		// 	set dstFormular = srcFormularAu.%ConstructClone(1)
		// 	set dstAS.FormularAU = dstFormular
		// } else {
			// Falls schon vorhanden
			// In Globel speichern das diese Nummer bereits behandelt wurde
		// 	set ^allreadyCopiedFormulare(srcFormularAu.Nummer) = 1
			// Bestehendes Formular öffnen
		// 	set dstFormular = ##class(DBFakturierung.SD.Formular).%OpenId(dstFormularIdAu)
			// Falls zum überschreiben frei gegeben überschreiben
		// 	if (overwriteOldEinst) {
		// 		set dstFormular = srcFormularAu.%ConstructClone(1)
		// 		set status = dstFormular.%Save()
		// 	}
			// Bestehendes Formular dem Drucktyp zuweisen	
		// 	set dstAs.FormularAU = dstFormular
		// }
		// set dstFormularIdBz = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularBZ.Nummer)
		// set dstFormularIdGs = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularGS.Nummer)
		// set dstFormularIdGu = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularGU.Nummer)
		// set dstFormularIdLs = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularLS.Nummer)
		// set dstFormularIdMa = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularMA.Nummer)
		// set dstFormularIdOf = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularOF.Nummer)
		// set dstFormularIdRg = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularRG.Nummer)
		// set dstFormularIdRz = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularRZ.Nummer)
		// set dstFormularIdSr = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularSR.Nummer)
		// set dstFormularIdSrp = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularSRP.Nummer)
		// set dstFormularIdSrv = ##class(DBFakturierung.SD.Formular).GetFormularOidByCode(dstMandOid, srcAs.FormularSRV.Nummer)
		// FormularFuss
		// Prüfen ob auf dstMandant vorhanden
		// set dstFussIdAu = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussAU.Nummer)
		// set dstFussIdBz = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussBZ.Nummer)
		// set dstFussIdGs = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussGS.Nummer)
		// set dstFussIdGu = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussGU.Nummer)
		// set dstFussIdLs = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussLS.Nummer)
		// set dstFussIdMa = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussMA.Nummer)
		// set dstFussIdOf = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussOF.Nummer)
		// set dstFussIdRg = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussRG.Nummer)
		// set dstFussIdRz = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussRZ.Nummer)
		// set dstFussIdSr = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussSR.Nummer)
		// set dstFussIdSrp = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussSRP.Nummer)
		// set dstFussIdSrv = ##class(DBFakturierung.SD.FormFuss).GetFormFussOidByCode(dstMandOid, srcAs.FormFussSRV.Nummer)
	//}
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>DrucktypDefaultData</DefaultData>
<Data name="DrucktypDefaultData">
<Structure>listnode</Structure>
<Subscript>"Drucktyp"</Subscript>
<Value name="1">
<Value>FormularOF</Value>
</Value>
<Value name="2">
<Value>FormularAU</Value>
</Value>
<Value name="3">
<Value>FormularRZ</Value>
</Value>
<Value name="4">
<Value>FormularLS</Value>
</Value>
<Value name="5">
<Value>FormularRG</Value>
</Value>
<Value name="6">
<Value>FormularGU</Value>
</Value>
<Value name="7">
<Value>FormularBZ</Value>
</Value>
<Value name="8">
<Value>FormularMA</Value>
</Value>
<Value name="9">
<Value>FormularSR</Value>
</Value>
<Value name="10">
<Value>FormularSRV</Value>
</Value>
<Value name="11">
<Value>FormularSRP</Value>
</Value>
<Value name="12">
<Value>FormKopfOF</Value>
</Value>
<Value name="13">
<Value>FormKopfAU</Value>
</Value>
<Value name="14">
<Value>FormKopfRZ</Value>
</Value>
<Value name="15">
<Value>FormKopfLS</Value>
</Value>
<Value name="16">
<Value>FormKopfRG</Value>
</Value>
<Value name="17">
<Value>FormKopfGU</Value>
</Value>
<Value name="18">
<Value>FormKopfBZ</Value>
</Value>
<Value name="19">
<Value>FormKopfMA</Value>
</Value>
<Value name="20">
<Value>FormKopfSR</Value>
</Value>
<Value name="21">
<Value>FormKopfSRV</Value>
</Value>
<Value name="22">
<Value>FormKopfSRP</Value>
</Value>
<Value name="23">
<Value>KopieEindrucken</Value>
</Value>
<Value name="24">
<Value>KopieDrehung</Value>
</Value>
<Value name="25">
<Value>KopieNummer</Value>
</Value>
<Value name="26">
<Value>KopieFontName</Value>
</Value>
<Value name="27">
<Value>KopieFontSize</Value>
</Value>
<Value name="28">
<Value>KopieFontBold</Value>
</Value>
<Value name="29">
<Value>KopieFontItalic</Value>
</Value>
<Value name="30">
<Value>KopieFontStrikeout</Value>
</Value>
<Value name="31">
<Value>KopieFontUnderline</Value>
</Value>
<Value name="32">
<Value>KopieFontColor</Value>
</Value>
<Value name="33">
<Value>KopiePosLinks</Value>
</Value>
<Value name="34">
<Value>KopiePosUnten</Value>
</Value>
<Value name="35">
<Value>KopfSeite1FM</Value>
</Value>
<Value name="36">
<Value>KopfSeite1OF</Value>
</Value>
<Value name="37">
<Value>KopfSeite1AU</Value>
</Value>
<Value name="38">
<Value>KopfSeite1RZ</Value>
</Value>
<Value name="39">
<Value>KopfSeite1LS</Value>
</Value>
<Value name="40">
<Value>KopfSeite1RG</Value>
</Value>
<Value name="41">
<Value>KopfSeite1GU</Value>
</Value>
<Value name="42">
<Value>KopfSeite1BZ</Value>
</Value>
<Value name="43">
<Value>KopfSeite1MA</Value>
</Value>
<Value name="44">
<Value>KopfSeite1SR</Value>
</Value>
<Value name="45">
<Value>KopfSeite1SRV</Value>
</Value>
<Value name="46">
<Value>KopfSeite1SRP</Value>
</Value>
<Value name="47">
<Value>KopfFolgeFM</Value>
</Value>
<Value name="48">
<Value>KopfFolgeOF</Value>
</Value>
<Value name="49">
<Value>KopfFolgeAU</Value>
</Value>
<Value name="50">
<Value>KopfFolgeRZ</Value>
</Value>
<Value name="51">
<Value>KopfFolgeLS</Value>
</Value>
<Value name="52">
<Value>KopfFolgeRG</Value>
</Value>
<Value name="53">
<Value>KopfFolgeGU</Value>
</Value>
<Value name="54">
<Value>KopfFolgeBZ</Value>
</Value>
<Value name="55">
<Value>KopfFolgeMA</Value>
</Value>
<Value name="56">
<Value>KopfFolgeSR</Value>
</Value>
<Value name="57">
<Value>KopfFolgeSRV</Value>
</Value>
<Value name="58">
<Value>KopfFolgeSRP</Value>
</Value>
<Value name="59">
<Value>KopfKopieSeite1FM</Value>
</Value>
<Value name="60">
<Value>KopfKopieSeite1OF</Value>
</Value>
<Value name="61">
<Value>KopfKopieSeite1AU</Value>
</Value>
<Value name="62">
<Value>KopfKopieSeite1RZ</Value>
</Value>
<Value name="63">
<Value>KopfKopieSeite1LS</Value>
</Value>
<Value name="64">
<Value>KopfKopieSeite1RG</Value>
</Value>
<Value name="65">
<Value>KopfKopieSeite1GU</Value>
</Value>
<Value name="66">
<Value>KopfKopieSeite1BZ</Value>
</Value>
<Value name="67">
<Value>KopfKopieSeite1MA</Value>
</Value>
<Value name="68">
<Value>KopfKopieSeite1SR</Value>
</Value>
<Value name="69">
<Value>KopfKopieSeite1SRV</Value>
</Value>
<Value name="70">
<Value>KopfKopieSeite1SRP</Value>
</Value>
<Value name="71">
<Value>KopfKopieFolgeFM</Value>
</Value>
<Value name="72">
<Value>KopfKopieFolgeOF</Value>
</Value>
<Value name="73">
<Value>KopfKopieFolgeAU</Value>
</Value>
<Value name="74">
<Value>KopfKopieFolgeRZ</Value>
</Value>
<Value name="75">
<Value>KopfKopieFolgeLS</Value>
</Value>
<Value name="76">
<Value>KopfKopieFolgeRG</Value>
</Value>
<Value name="77">
<Value>KopfKopieFolgeGU</Value>
</Value>
<Value name="78">
<Value>KopfKopieFolgeBZ</Value>
</Value>
<Value name="79">
<Value>KopfKopieFolgeMA</Value>
</Value>
<Value name="80">
<Value>KopfKopieFolgeSR</Value>
</Value>
<Value name="81">
<Value>KopfKopieFolgeSRV</Value>
</Value>
<Value name="82">
<Value>KopfKopieFolgeSRP</Value>
</Value>
<Value name="83">
<Value>FormFussOF</Value>
</Value>
<Value name="84">
<Value>FormFussAU</Value>
</Value>
<Value name="85">
<Value>FormFussRZ</Value>
</Value>
<Value name="86">
<Value>FormFussLS</Value>
</Value>
<Value name="87">
<Value>FormFussRG</Value>
</Value>
<Value name="88">
<Value>FormFussGU</Value>
</Value>
<Value name="89">
<Value>FormFussBZ</Value>
</Value>
<Value name="90">
<Value>FormFussMA</Value>
</Value>
<Value name="91">
<Value>FormFussSR</Value>
</Value>
<Value name="92">
<Value>FormFussSRV</Value>
</Value>
<Value name="93">
<Value>FormFussSRP</Value>
</Value>
<Value name="94">
<Value>EzDrucken</Value>
</Value>
<Value name="95">
<Value>KopfSeite1GS</Value>
</Value>
<Value name="96">
<Value>KopfFolgeGS</Value>
</Value>
<Value name="97">
<Value>KopfKopieSeite1GS</Value>
</Value>
<Value name="98">
<Value>KopfKopieFolgeGS</Value>
</Value>
<Value name="99">
<Value>FormFussGS</Value>
</Value>
<Value name="100">
<Value>FormularGS</Value>
</Value>
<Value name="101">
<Value>FormKopfGS</Value>
</Value>
<Value name="102">
<Value>GenFontAktiv</Value>
</Value>
<Value name="103">
<Value>GenFontName</Value>
</Value>
<Value name="104">
<Value>GenFontSize</Value>
</Value>
<Value name="105">
<Value>GenFontBold</Value>
</Value>
<Value name="106">
<Value>GenFontItalic</Value>
</Value>
<Value name="107">
<Value>GenFontStrikeout</Value>
</Value>
<Value name="108">
<Value>GenFontUnderline</Value>
</Value>
<Value name="109">
<Value>GenFontColor</Value>
</Value>
<Value name="110">
<Value>GenRahmenAktiv</Value>
</Value>
<Value name="111">
<Value>GenRahmenAktivLinks</Value>
</Value>
<Value name="112">
<Value>GenRahmenBreiteLinks</Value>
</Value>
<Value name="113">
<Value>GenRahmenAbstandLinks</Value>
</Value>
<Value name="114">
<Value>GenRahmenAktivOben</Value>
</Value>
<Value name="115">
<Value>GenRahmenBreiteOben</Value>
</Value>
<Value name="116">
<Value>GenRahmenAbstandOben</Value>
</Value>
<Value name="117">
<Value>GenRahmenAktivRechts</Value>
</Value>
<Value name="118">
<Value>GenRahmenBreiteRechts</Value>
</Value>
<Value name="119">
<Value>GenRahmenAbstandRechts</Value>
</Value>
<Value name="120">
<Value>GenRahmenAktivUnten</Value>
</Value>
<Value name="121">
<Value>GenRahmenBreiteUnten</Value>
</Value>
<Value name="122">
<Value>GenRahmenAbstandUnten</Value>
</Value>
<Value name="123">
<Value>CheckDrucken</Value>
</Value>
<Value name="124">
<Value>WarenwertTotal</Value>
</Value>
<Value name="125">
<Value>FirstArtikelzeileFett</Value>
</Value>
</Data>
<Data name="KopieText">
<Attribute>KopieText</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBFakturierung.SD.Drucktyp.KopieText"</Subscript>
</Data>
<Data name="TextTotalOhneGebinde">
<Attribute>TextTotalOhneGebinde</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBFakturierung.SD.Drucktyp.TextTotalOhneGebinde"</Subscript>
</Data>
<Data name="TextUebertrag">
<Attribute>TextUebertrag</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBFakturierung.SD.Drucktyp.TextUebertrag"</Subscript>
</Data>
</Storage>
</Class>


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="RgEDrucker">
<Description>
Rechnung Einzahlungsschein Drucker</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="RgESchacht">
<Description>
Rechnung Einzahlungsschein Schacht</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

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

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

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

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

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

<Property name="GuODruckerSeite1">
<Description>
Gutschrift Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuOSchachtSeite1">
<Description>
Gutschrift Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuODruckerFolge">
<Description>
Gutschrift Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuOSchachtFolge">
<Description>
Gutschrift Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuKDruckerSeite1">
<Description>
Gutschrift Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuKSchachtSeite1">
<Description>
Gutschrift Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuKDruckerFolge">
<Description>
Gutschrift Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GuKSchachtFolge">
<Description>
Gutschrift Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaODruckerSeite1">
<Description>
Mahnung Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaOSchachtSeite1">
<Description>
Mahnung Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaODruckerFolge">
<Description>
Mahnung Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaOSchachtFolge">
<Description>
Mahnung Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaKDruckerSeite1">
<Description>
Mahnung Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaKSchachtSeite1">
<Description>
Mahnung Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaKDruckerFolge">
<Description>
Mahnung Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaKSchachtFolge">
<Description>
Mahnung Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaEDrucker">
<Description>
Mahnung Einzahlungsschein Drucker</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="MaESchacht">
<Description>
Mahnung Einzahlungsschein Schacht</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrODruckerSeite1">
<Description>
Sammelrechnung Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrOSchachtSeite1">
<Description>
Sammelrechnung Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrODruckerFolge">
<Description>
Sammelrechnung Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrOSchachtFolge">
<Description>
Sammelrechnung Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrKDruckerSeite1">
<Description>
Sammelrechnung Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrKSchachtSeite1">
<Description>
Sammelrechnung Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrKDruckerFolge">
<Description>
Sammelrechnung Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrKSchachtFolge">
<Description>
Sammelrechnung Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrEDrucker">
<Description>
Sammelrechnung Einzahlungsschein Drucker</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrESchacht">
<Description>
Sammelrechnung Einzahlungsschein Schacht</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvODruckerSeite1">
<Description>
Sammelrechnung-Verteilliste Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvOSchachtSeite1">
<Description>
Sammelrechnung-Verteilliste Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvODruckerFolge">
<Description>
Sammelrechnung-Verteilliste Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvOSchachtFolge">
<Description>
Sammelrechnung-Verteilliste Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvKDruckerSeite1">
<Description>
Sammelrechnung-Verteilliste Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvKSchachtSeite1">
<Description>
Sammelrechnung-Verteilliste Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvKDruckerFolge">
<Description>
Sammelrechnung-Verteilliste Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrvKSchachtFolge">
<Description>
Sammelrechnung-Verteilliste Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpODruckerSeite1">
<Description>
Sammelrechnung Proforma Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpOSchachtSeite1">
<Description>
Sammelrechnung Proforma Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpODruckerFolge">
<Description>
Sammelrechnung Proforma Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpOSchachtFolge">
<Description>
Sammelrechnung Proforma Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpKDruckerSeite1">
<Description>
Sammelrechnung Proforma Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpKSchachtSeite1">
<Description>
Sammelrechnung Proforma Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpKDruckerFolge">
<Description>
Sammelrechnung Proforma Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="SrpKSchachtFolge">
<Description>
Sammelrechnung Proforma Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsODruckerSeite1">
<Description>
Gebindeschein Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsOSchachtSeite1">
<Description>
Gebindeschein Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsODruckerFolge">
<Description>
Gebindeschein Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsOSchachtFolge">
<Description>
Gebindeschein Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsKDruckerSeite1">
<Description>
Gebindeschein Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsKSchachtSeite1">
<Description>
Gebindeschein Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsKDruckerFolge">
<Description>
Gebindeschein Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GsKSchachtFolge">
<Description>
Gebindeschein Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="FaxDrucker">
<Description>
Fax Drucker</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="RgCDrucker">
<Description>
Rechnung Check Drucker</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="RgCSchacht">
<Description>
Rechnung Check Schacht</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaODruckerSeite1">
<Description>
Garantieauftrag Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaOSchachtSeite1">
<Description>
Garantieauftrag Original Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaODruckerFolge">
<Description>
Garantieauftrag Original Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaOSchachtFolge">
<Description>
Garantieauftrag Original Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaKDruckerSeite1">
<Description>
Garantieauftrag Kopie Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaKSchachtSeite1">
<Description>
Garantieauftrag Kopie Schacht Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaKDruckerFolge">
<Description>
Garantieauftrag Kopie Drucker Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="GaKSchachtFolge">
<Description>
Garantieauftrag Kopie Schacht Folgeseiten</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetFormDrucker">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BenutzerOid:%String</FormalSpec>
<ReturnType>DBFakturierung.SD.FormDrucker</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.FormDruckerBen
		 WHERE Mandant=:MandantOid AND Benutzer=:BenutzerOid)
	
	if (oid="") {
		&sql(SELECT ID INTO :oid
			 FROM DBFakturierung_SD.FormDrucker
			 WHERE Mandant=:MandantOid AND ID NOT IN(SELECT ID FROM DBFakturierung_SD.FormDruckerBen WHERE Mandant=:MandantOid))
	}
	
	set res = ""
	if (oid'="") {
		set res = ##class(DBFakturierung.SD.FormDrucker).%OpenId(oid)
	} else {
		set res = ##class(DBFakturierung.SD.FormDrucker).%New()
		do res.%Save()		
	}

	Quit res
]]></Implementation>
</Method>

<Method name="GetFormDruckerOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.FormDrucker
		 WHERE Mandant=:MandantOid
		  AND ID NOT IN(SELECT ID FROM DBFakturierung_SD.FormDruckerBen WHERE Mandant=:MandantOid))
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.FormDruckerD</DataLocation>
<DefaultData>FormDruckerDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.FormDruckerD</IdLocation>
<IndexLocation>^DBFakturierung.SD.FormDruckerI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.FormDruckerS</StreamLocation>
<Data name="FormDruckerDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>OfODruckerSeite1</Value>
</Value>
<Value name="4">
<Value>OfOSchachtSeite1</Value>
</Value>
<Value name="5">
<Value>OfODruckerFolge</Value>
</Value>
<Value name="6">
<Value>OfOSchachtFolge</Value>
</Value>
<Value name="7">
<Value>OfKDruckerSeite1</Value>
</Value>
<Value name="8">
<Value>OfKSchachtSeite1</Value>
</Value>
<Value name="9">
<Value>OfKDruckerFolge</Value>
</Value>
<Value name="10">
<Value>OfKSchachtFolge</Value>
</Value>
<Value name="11">
<Value>AuODruckerSeite1</Value>
</Value>
<Value name="12">
<Value>AuOSchachtSeite1</Value>
</Value>
<Value name="13">
<Value>AuODruckerFolge</Value>
</Value>
<Value name="14">
<Value>AuOSchachtFolge</Value>
</Value>
<Value name="15">
<Value>AuKDruckerSeite1</Value>
</Value>
<Value name="16">
<Value>AuKSchachtSeite1</Value>
</Value>
<Value name="17">
<Value>AuKDruckerFolge</Value>
</Value>
<Value name="18">
<Value>AuKSchachtFolge</Value>
</Value>
<Value name="19">
<Value>RzODruckerSeite1</Value>
</Value>
<Value name="20">
<Value>RzOSchachtSeite1</Value>
</Value>
<Value name="21">
<Value>RzODruckerFolge</Value>
</Value>
<Value name="22">
<Value>RzOSchachtFolge</Value>
</Value>
<Value name="23">
<Value>RzKDruckerSeite1</Value>
</Value>
<Value name="24">
<Value>RzKSchachtSeite1</Value>
</Value>
<Value name="25">
<Value>RzKDruckerFolge</Value>
</Value>
<Value name="26">
<Value>RzKSchachtFolge</Value>
</Value>
<Value name="27">
<Value>LsODruckerSeite1</Value>
</Value>
<Value name="28">
<Value>LsOSchachtSeite1</Value>
</Value>
<Value name="29">
<Value>LsODruckerFolge</Value>
</Value>
<Value name="30">
<Value>LsOSchachtFolge</Value>
</Value>
<Value name="31">
<Value>LsKDruckerSeite1</Value>
</Value>
<Value name="32">
<Value>LsKSchachtSeite1</Value>
</Value>
<Value name="33">
<Value>LsKDruckerFolge</Value>
</Value>
<Value name="34">
<Value>LsKSchachtFolge</Value>
</Value>
<Value name="35">
<Value>RgODruckerSeite1</Value>
</Value>
<Value name="36">
<Value>RgOSchachtSeite1</Value>
</Value>
<Value name="37">
<Value>RgODruckerFolge</Value>
</Value>
<Value name="38">
<Value>RgOSchachtFolge</Value>
</Value>
<Value name="39">
<Value>RgKDruckerSeite1</Value>
</Value>
<Value name="40">
<Value>RgKSchachtSeite1</Value>
</Value>
<Value name="41">
<Value>RgKDruckerFolge</Value>
</Value>
<Value name="42">
<Value>RgKSchachtFolge</Value>
</Value>
<Value name="43">
<Value>RgEDrucker</Value>
</Value>
<Value name="44">
<Value>RgESchacht</Value>
</Value>
<Value name="45">
<Value>BzODruckerSeite1</Value>
</Value>
<Value name="46">
<Value>BzOSchachtSeite1</Value>
</Value>
<Value name="47">
<Value>BzODruckerFolge</Value>
</Value>
<Value name="48">
<Value>BzOSchachtFolge</Value>
</Value>
<Value name="49">
<Value>BzKDruckerSeite1</Value>
</Value>
<Value name="50">
<Value>BzKSchachtSeite1</Value>
</Value>
<Value name="51">
<Value>BzKDruckerFolge</Value>
</Value>
<Value name="52">
<Value>BzKSchachtFolge</Value>
</Value>
<Value name="53">
<Value>GuODruckerSeite1</Value>
</Value>
<Value name="54">
<Value>GuOSchachtSeite1</Value>
</Value>
<Value name="55">
<Value>GuODruckerFolge</Value>
</Value>
<Value name="56">
<Value>GuOSchachtFolge</Value>
</Value>
<Value name="57">
<Value>GuKDruckerSeite1</Value>
</Value>
<Value name="58">
<Value>GuKSchachtSeite1</Value>
</Value>
<Value name="59">
<Value>GuKDruckerFolge</Value>
</Value>
<Value name="60">
<Value>GuKSchachtFolge</Value>
</Value>
<Value name="61">
<Value>MaODruckerSeite1</Value>
</Value>
<Value name="62">
<Value>MaOSchachtSeite1</Value>
</Value>
<Value name="63">
<Value>MaODruckerFolge</Value>
</Value>
<Value name="64">
<Value>MaOSchachtFolge</Value>
</Value>
<Value name="65">
<Value>MaKDruckerSeite1</Value>
</Value>
<Value name="66">
<Value>MaKSchachtSeite1</Value>
</Value>
<Value name="67">
<Value>MaKDruckerFolge</Value>
</Value>
<Value name="68">
<Value>MaKSchachtFolge</Value>
</Value>
<Value name="69">
<Value>MaEDrucker</Value>
</Value>
<Value name="70">
<Value>MaESchacht</Value>
</Value>
<Value name="71">
<Value>SrODruckerSeite1</Value>
</Value>
<Value name="72">
<Value>SrOSchachtSeite1</Value>
</Value>
<Value name="73">
<Value>SrODruckerFolge</Value>
</Value>
<Value name="74">
<Value>SrOSchachtFolge</Value>
</Value>
<Value name="75">
<Value>SrKDruckerSeite1</Value>
</Value>
<Value name="76">
<Value>SrKSchachtSeite1</Value>
</Value>
<Value name="77">
<Value>SrKDruckerFolge</Value>
</Value>
<Value name="78">
<Value>SrKSchachtFolge</Value>
</Value>
<Value name="79">
<Value>SrEDrucker</Value>
</Value>
<Value name="80">
<Value>SrESchacht</Value>
</Value>
<Value name="81">
<Value>SrvODruckerSeite1</Value>
</Value>
<Value name="82">
<Value>SrvOSchachtSeite1</Value>
</Value>
<Value name="83">
<Value>SrvODruckerFolge</Value>
</Value>
<Value name="84">
<Value>SrvOSchachtFolge</Value>
</Value>
<Value name="85">
<Value>SrvKDruckerSeite1</Value>
</Value>
<Value name="86">
<Value>SrvKSchachtSeite1</Value>
</Value>
<Value name="87">
<Value>SrvKDruckerFolge</Value>
</Value>
<Value name="88">
<Value>SrvKSchachtFolge</Value>
</Value>
<Value name="89">
<Value>SrpODruckerSeite1</Value>
</Value>
<Value name="90">
<Value>SrpOSchachtSeite1</Value>
</Value>
<Value name="91">
<Value>SrpODruckerFolge</Value>
</Value>
<Value name="92">
<Value>SrpOSchachtFolge</Value>
</Value>
<Value name="93">
<Value>SrpKDruckerSeite1</Value>
</Value>
<Value name="94">
<Value>SrpKSchachtSeite1</Value>
</Value>
<Value name="95">
<Value>SrpKDruckerFolge</Value>
</Value>
<Value name="96">
<Value>SrpKSchachtFolge</Value>
</Value>
<Value name="97">
<Value>GsODruckerSeite1</Value>
</Value>
<Value name="98">
<Value>GsOSchachtSeite1</Value>
</Value>
<Value name="99">
<Value>GsODruckerFolge</Value>
</Value>
<Value name="100">
<Value>GsOSchachtFolge</Value>
</Value>
<Value name="101">
<Value>GsKDruckerSeite1</Value>
</Value>
<Value name="102">
<Value>GsKSchachtSeite1</Value>
</Value>
<Value name="103">
<Value>GsKDruckerFolge</Value>
</Value>
<Value name="104">
<Value>GsKSchachtFolge</Value>
</Value>
<Value name="105">
<Value>FaxDrucker</Value>
</Value>
<Value name="106">
<Value>RgCDrucker</Value>
</Value>
<Value name="107">
<Value>RgCSchacht</Value>
</Value>
<Value name="108">
<Value>GaODruckerSeite1</Value>
</Value>
<Value name="109">
<Value>GaOSchachtSeite1</Value>
</Value>
<Value name="110">
<Value>GaODruckerFolge</Value>
</Value>
<Value name="111">
<Value>GaOSchachtFolge</Value>
</Value>
<Value name="112">
<Value>GaKDruckerSeite1</Value>
</Value>
<Value name="113">
<Value>GaKSchachtSeite1</Value>
</Value>
<Value name="114">
<Value>GaKDruckerFolge</Value>
</Value>
<Value name="115">
<Value>GaKSchachtFolge</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AuKDruckerFolge">
</Property>
<Property name="AuKDruckerSeite1">
</Property>
<Property name="AuKSchachtFolge">
</Property>
<Property name="AuKSchachtSeite1">
</Property>
<Property name="AuODruckerFolge">
</Property>
<Property name="AuODruckerSeite1">
</Property>
<Property name="AuOSchachtFolge">
</Property>
<Property name="AuOSchachtSeite1">
</Property>
<Property name="BzKDruckerFolge">
</Property>
<Property name="BzKDruckerSeite1">
</Property>
<Property name="BzKSchachtFolge">
</Property>
<Property name="BzKSchachtSeite1">
</Property>
<Property name="BzODruckerFolge">
</Property>
<Property name="BzODruckerSeite1">
</Property>
<Property name="BzOSchachtFolge">
</Property>
<Property name="BzOSchachtSeite1">
</Property>
<Property name="FaxDrucker">
</Property>
<Property name="GaKDruckerFolge">
</Property>
<Property name="GaKDruckerSeite1">
</Property>
<Property name="GaKSchachtFolge">
</Property>
<Property name="GaKSchachtSeite1">
</Property>
<Property name="GaODruckerFolge">
</Property>
<Property name="GaODruckerSeite1">
</Property>
<Property name="GaOSchachtFolge">
</Property>
<Property name="GaOSchachtSeite1">
</Property>
<Property name="GsKDruckerFolge">
</Property>
<Property name="GsKDruckerSeite1">
</Property>
<Property name="GsKSchachtFolge">
</Property>
<Property name="GsKSchachtSeite1">
</Property>
<Property name="GsODruckerFolge">
</Property>
<Property name="GsODruckerSeite1">
</Property>
<Property name="GsOSchachtFolge">
</Property>
<Property name="GsOSchachtSeite1">
</Property>
<Property name="GuKDruckerFolge">
</Property>
<Property name="GuKDruckerSeite1">
</Property>
<Property name="GuKSchachtFolge">
</Property>
<Property name="GuKSchachtSeite1">
</Property>
<Property name="GuODruckerFolge">
</Property>
<Property name="GuODruckerSeite1">
</Property>
<Property name="GuOSchachtFolge">
</Property>
<Property name="GuOSchachtSeite1">
</Property>
<Property name="LsKDruckerFolge">
</Property>
<Property name="LsKDruckerSeite1">
</Property>
<Property name="LsKSchachtFolge">
</Property>
<Property name="LsKSchachtSeite1">
</Property>
<Property name="LsODruckerFolge">
</Property>
<Property name="LsODruckerSeite1">
</Property>
<Property name="LsOSchachtFolge">
</Property>
<Property name="LsOSchachtSeite1">
</Property>
<Property name="MaEDrucker">
</Property>
<Property name="MaESchacht">
</Property>
<Property name="MaKDruckerFolge">
</Property>
<Property name="MaKDruckerSeite1">
</Property>
<Property name="MaKSchachtFolge">
</Property>
<Property name="MaKSchachtSeite1">
</Property>
<Property name="MaODruckerFolge">
</Property>
<Property name="MaODruckerSeite1">
</Property>
<Property name="MaOSchachtFolge">
</Property>
<Property name="MaOSchachtSeite1">
</Property>
<Property name="Mandant">
</Property>
<Property name="OfKDruckerFolge">
</Property>
<Property name="OfKDruckerSeite1">
</Property>
<Property name="OfKSchachtFolge">
</Property>
<Property name="OfKSchachtSeite1">
</Property>
<Property name="OfODruckerFolge">
</Property>
<Property name="OfODruckerSeite1">
</Property>
<Property name="OfOSchachtFolge">
</Property>
<Property name="OfOSchachtSeite1">
</Property>
<Property name="RgCDrucker">
</Property>
<Property name="RgCSchacht">
</Property>
<Property name="RgEDrucker">
</Property>
<Property name="RgESchacht">
</Property>
<Property name="RgKDruckerFolge">
</Property>
<Property name="RgKDruckerSeite1">
</Property>
<Property name="RgKSchachtFolge">
</Property>
<Property name="RgKSchachtSeite1">
</Property>
<Property name="RgODruckerFolge">
</Property>
<Property name="RgODruckerSeite1">
</Property>
<Property name="RgOSchachtFolge">
</Property>
<Property name="RgOSchachtSeite1">
</Property>
<Property name="RzKDruckerFolge">
</Property>
<Property name="RzKDruckerSeite1">
</Property>
<Property name="RzKSchachtFolge">
</Property>
<Property name="RzKSchachtSeite1">
</Property>
<Property name="RzODruckerFolge">
</Property>
<Property name="RzODruckerSeite1">
</Property>
<Property name="RzOSchachtFolge">
</Property>
<Property name="RzOSchachtSeite1">
</Property>
<Property name="SrEDrucker">
</Property>
<Property name="SrESchacht">
</Property>
<Property name="SrKDruckerFolge">
</Property>
<Property name="SrKDruckerSeite1">
</Property>
<Property name="SrKSchachtFolge">
</Property>
<Property name="SrKSchachtSeite1">
</Property>
<Property name="SrODruckerFolge">
</Property>
<Property name="SrODruckerSeite1">
</Property>
<Property name="SrOSchachtFolge">
</Property>
<Property name="SrOSchachtSeite1">
</Property>
<Property name="SrpKDruckerFolge">
</Property>
<Property name="SrpKDruckerSeite1">
</Property>
<Property name="SrpKSchachtFolge">
</Property>
<Property name="SrpKSchachtSeite1">
</Property>
<Property name="SrpODruckerFolge">
</Property>
<Property name="SrpODruckerSeite1">
</Property>
<Property name="SrpOSchachtFolge">
</Property>
<Property name="SrpOSchachtSeite1">
</Property>
<Property name="SrvKDruckerFolge">
</Property>
<Property name="SrvKDruckerSeite1">
</Property>
<Property name="SrvKSchachtFolge">
</Property>
<Property name="SrvKSchachtSeite1">
</Property>
<Property name="SrvODruckerFolge">
</Property>
<Property name="SrvODruckerSeite1">
</Property>
<Property name="SrvOSchachtFolge">
</Property>
<Property name="SrvOSchachtSeite1">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.FormDruckerBen">
<Description>
</Description>
<Super>DBFakturierung.SD.FormDrucker,%XML.Adaptor</Super>
<TimeChanged>61690,49316.41262</TimeChanged>
<TimeCreated>61689,38599.558628</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Benutzer">
<Type>DBCore.Benutzer</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktFormDruckerBenBenutzer</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Benutzer"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="BenutzerIndex">
<Properties>Benutzer</Properties>
</Index>

<Index name="MandantBenutzerIndex">
<Properties>Mandant,Benutzer</Properties>
<Unique>1</Unique>
</Index>

<Method name="GetFormDruckerBenOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BenutzerOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.FormDruckerBen
		 WHERE Mandant=:MandantOid AND Benutzer=:BenutzerOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>FormDruckerBenDefaultData</DefaultData>
<Data name="FormDruckerBenDefaultData">
<Structure>listnode</Structure>
<Subscript>"FormDruckerBen"</Subscript>
<Value name="1">
<Value>Benutzer</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Formular">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61349,55962.208335</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Index name="MandantNummerIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bezeichnung">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="FormularFile">
<Type>DBCore.ReportStream</Type>
<Cardinality>many</Cardinality>
<Inverse>FakturierungFormular</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Drucktyp">
<Type>DBFakturierung.SD.DTypForm</Type>
<Cardinality>many</Cardinality>
<Inverse>Formular</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Bezeichnung, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Formular).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Bezeichnung, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBFakturierung_SD.Formular WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

<Method name="OutputStream">
<FormalSpec>Sprache:%String</FormalSpec>
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set oid = ..%Id()
	Set Ret=""
	If (oid'="") {
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBCore.ReportStream 
		     WHERE FakturierungFormular=:oid AND Sprache=:Sprache)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBCore.ReportStream 
				 WHERE FakturierungFormular=:oid AND Sprache=:Sprache)
			Set s=##Class(DBCore.ReportStream).%OpenId(sID)
			Set Size=s.DataStream.Size
			Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
		} Else {
			Set StdSprache="de"
			&sql(SELECT count(*) As Cnt INTO :Cnt
			     FROM DBCore.ReportStream 
			     WHERE FakturierungFormular=:oid AND Sprache=:StdSprache)
			If (Cnt>0) {
				&sql(SELECT %ID INTO :sID 
				     FROM DBCore.ReportStream 
				     WHERE FakturierungFormular=:oid AND Sprache=:StdSprache)
				Set s=##Class(DBCore.ReportStream).%OpenId(sID)
				Set Size=s.DataStream.Size
				Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
			}
		}
	}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="InputStream">
<FormalSpec>Stream:%Library.GlobalBinaryStream,Sprache:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res=0
	Set oid=..%Id()
	Set sID = ""
	If (oid'="") {
		Set Cnt=0
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBCore.ReportStream 
		     WHERE FakturierungFormular=:oid AND Sprache=:Sprache)
		If (Cnt=0) {
			Set n=##Class(DBCore.ReportStream).%New()
			Set n.Sprache = Sprache
			Set n.FakturierungFormular = ##Class(DBFakturierung.SD.Formular).%OpenId(oid)
			Set Ret=n.%Save()
			Set n=""
			Set res=(Ret=1)
			Quit:'res res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBCore.ReportStream 
		     WHERE FakturierungFormular=:oid AND 
		           Sprache=:Sprache)
		Set s=##Class(DBCore.ReportStream).%OpenId(sID)
		Set Ret=s.DataStream.CopyFromAndSave(Stream)
		Set RetS = s.%Save()
		Set res=((Ret=1) && (RetS=1))
	}
	Quit res
]]></Implementation>
</Method>

<Method name="GetFormularOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,FormularNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.Formular
		 WHERE Nummer = :FormularNr AND Mandant=:MandOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="%OnDelete">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%Delete</METHOD> method to 
provide notification that the object specified by <VAR>oid</VAR> is being deleted.

<P>If this method returns an error then the object will not be deleted.
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set reportOid = $lg(oid,1)
	
	&sql(DELETE FROM DBCore.ReportStream WHERE FakturierungFormular = :reportOid)
			
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code><![CDATA[	set myId = {ID*O}
	&sql(DELETE FROM DBCore.ReportStream WHERE FakturierungFormular = :myId)]]></Code>
<Event>DELETE</Event>
</Trigger>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.FormularD</DataLocation>
<DefaultData>FormularDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.FormularD</IdLocation>
<IndexLocation>^DBFakturierung.SD.FormularI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.FormularS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="FormularDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>DataStream</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Fusstext">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61100,50652.074994</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Position_Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="Text1">
<Description>
Text 1</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="4096"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text2">
<Description>
Text 2</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text3">
<Description>
Text 3</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text4">
<Description>
Text 4</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text5">
<Description>
Text 5</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text6">
<Description>
Text 6</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text7">
<Description>
Text 7</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text8">
<Description>
Text 8</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text9">
<Description>
Text 9</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Text10">
<Description>
Text 10</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="AKFusstext">
<Type>DBFakturierung.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Fusstext</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetText1">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text1, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText1Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText1(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText1">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text1, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText2">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text2, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText2Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText2(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText2">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text2, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText3">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text3, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText3Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText3(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText3">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text3, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText4">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text4, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText4Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText4(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText4">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text4, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText5">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text5, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText5Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText5(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText5">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text5, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText6">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text6, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText6Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText6(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText6">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text6, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText7">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text7, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText7Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText7(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText7">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text7, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText8">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text8, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText8Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText8(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText8">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text8, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText9">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text9, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText9Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText9(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText9">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text9, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText10">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text10, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetText10Class">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Fusstext).%OpenId(myID)
		set text = rs.GetText10(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText10">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text10, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Fusstext
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr
		 AND (LENGTH(DBFakturierung_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang)) > 0  
		 OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText5Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText6Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText7Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText8Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText9Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBFakturierung_SD.Fusstext_GetText10Class(%ID, :MandantOid, :Lang)) > 0))
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandWOCheckText">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Fusstext
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteTextFromId">
<ClassMethod>1</ClassMethod>
<FormalSpec>FusstextOid:%String,Lang:%String</FormalSpec>
<Implementation><![CDATA[
	set obj = ##class(DBFakturierung.SD.Fusstext).%OpenId(FusstextOid)
	if (obj '= "") {
		set val = obj.Text1.GetAt(Lang)
		if (val '= "") {
			do obj.Text1.SetAt("",Lang)	
		}
		set val2 = obj.Text2.GetAt(Lang)
		if (val2 '= "") {
			do obj.Text2.SetAt("",Lang)	
		}
		set val3 = obj.Text3.GetAt(Lang)
		if (val3 '= "") {
			do obj.Text3.SetAt("",Lang)	
		}
		set val4 = obj.Text4.GetAt(Lang)
		if (val '= "") {
			do obj.Text4.SetAt("",Lang)	
		}
		
		do obj.%Save()
	}
]]></Implementation>
</Method>

<Property name="SteuerungOffertenFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OfferteFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungAuftragsbestFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AuftragsbestFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungRuestscheinFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RuestscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungLieferscheinFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>LieferscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungRechnungFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungSammelrechnungFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>SammelrechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungBarzahlungFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>BarzahlungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungGAFusstext">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>GarantieauftragFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.FusstextD</DataLocation>
<DefaultData>FusstextDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.FusstextD</IdLocation>
<IndexLocation>^DBFakturierung.SD.FusstextI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.FusstextS</StreamLocation>
<Data name="FusstextDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
</Data>
<Data name="Text1">
<Attribute>Text1</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text1"</Subscript>
</Data>
<Data name="Text10">
<Attribute>Text10</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text10"</Subscript>
</Data>
<Data name="Text2">
<Attribute>Text2</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text2"</Subscript>
</Data>
<Data name="Text3">
<Attribute>Text3</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text3"</Subscript>
</Data>
<Data name="Text4">
<Attribute>Text4</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text4"</Subscript>
</Data>
<Data name="Text5">
<Attribute>Text5</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text5"</Subscript>
</Data>
<Data name="Text6">
<Attribute>Text6</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text6"</Subscript>
</Data>
<Data name="Text7">
<Attribute>Text7</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text7"</Subscript>
</Data>
<Data name="Text8">
<Attribute>Text8</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text8"</Subscript>
</Data>
<Data name="Text9">
<Attribute>Text9</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text9"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Mandant">
</Property>
<Property name="PositionsNr">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.GeraeteArt">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62109,38117.583411</TimeChanged>
<TimeCreated>61579,34637.984053</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="Geraete">
<Type>DBFakturierung.Geraet</Type>
<Cardinality>many</Cardinality>
<Inverse>GeraeteArt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<UDLText name="T">
<Content><![CDATA[
// Vorschlag des Lagerortes

]]></Content>
</UDLText>

<Property name="Lagerort">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Verfuegbar">
<Type>%Boolean</Type>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.GeraeteArt
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetFirstVerfuegbarIdOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.GeraeteArt
		 WHERE Mandant = :MandantOid AND NVL(Verfuegbar,0) = 1 ORDER BY PositionsNr ASC)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>GeraeteArtDefaultData</DefaultData>
<Data name="GeraeteArtDefaultData">
<Structure>listnode</Structure>
<Subscript>"GeraeteArt"</Subscript>
<Value name="1">
<Value>Lagerort</Value>
</Value>
<Value name="2">
<Value>Verfuegbar</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Herkunft">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62221,64607.343643</TimeChanged>
<TimeCreated>61571,36540.737441</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="IsoKennzeichen">
<Description>
Kennzeichen</Description>
<Type>%String</Type>
</Property>

<Property name="ArtikelHerkunft">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VPreisHerkunft">
<Type>DBFakturierung.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AuftragspositionHerkunft">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="BestellungsPosHerkunft">
<Type>DBFaktEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Herkunft
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="HerkunftExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.Herkunft
	     WHERE Mandant = :MandantOid)
	if (id = "") {
		Quit 0
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>HerkunftDefaultData</DefaultData>
<Data name="HerkunftDefaultData">
<Structure>listnode</Structure>
<Subscript>"Herkunft"</Subscript>
<Value name="1">
<Value>IsoKennzeichen</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Hilfstexte">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,57710</TimeChanged>
<TimeCreated>61571,34244.439419</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Position</Description>
<Type>%Integer</Type>
</Property>

<Property name="Text">
<Description>
Text</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.Hilfstexte).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Hilfstexte
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteTextFromId">
<ClassMethod>1</ClassMethod>
<FormalSpec>HilfstextOid:%String,Lang:%String</FormalSpec>
<Implementation><![CDATA[
	set obj = ##class(DBFakturierung.SD.Hilfstexte).%OpenId(HilfstextOid)
	if (obj '= "") {
		set val = obj.Text.GetAt(Lang)
		if (val '= "") {
			Do ##class(DBUtils.StringUtils).SetText(obj.Text, "", Lang, obj.Mandant)
			do obj.%Save()
		}
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.HilfstexteD</DataLocation>
<DefaultData>HilfstexteDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.HilfstexteD</IdLocation>
<IndexLocation>^DBFakturierung.SD.HilfstexteI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.HilfstexteS</StreamLocation>
<Data name="HilfstexteDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Mandant">
</Property>
<Property name="PositionsNr">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.LSVADist">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61709,38378.17101</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="Plz">
<Type>%String</Type>
<Parameter name="MAXLEN" value="15"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Ort">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Kilometer">
<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>

<Property name="PlzInklZusatz">
<Type>%String</Type>
<Parameter name="MAXLEN" value="15"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AuftragPos">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>LSVADistanz</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetDistanzByPlz">
<ClassMethod>1</ClassMethod>
<FormalSpec>plzInklZusatz:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT TOP 1 ID INTO :oid
		     	FROM DBFakturierung_SD.LSVADist 
		     	Where PlzInklZusatz = :plzInklZusatz)	
	quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.LSVADistD</DataLocation>
<DefaultData>LSVADistDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.LSVADistD</IdLocation>
<IndexLocation>^DBFakturierung.SD.LSVADistI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.LSVADistS</StreamLocation>
<Data name="LSVADistDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Plz</Value>
</Value>
<Value name="3">
<Value>Ort</Value>
</Value>
<Value name="4">
<Value>Kilometer</Value>
</Value>
<Value name="5">
<Value>Mandant</Value>
</Value>
<Value name="6">
<Value>PlzInklZusatz</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Kilometer">
</Property>
<Property name="Mandant">
</Property>
<Property name="Ort">
</Property>
<Property name="Plz">
</Property>
<Property name="PlzInklZusatz">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.LSVAKat">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61709,38406.270137</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(DBFakturierung.SD.LSVAKat).%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="Gewicht">
<Type>%Integer</Type>
</Property>

<Property name="AuftragPos">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>LSVAKategorie</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.LSVAKatD</DataLocation>
<DefaultData>LSVAKatDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.LSVAKatD</IdLocation>
<IndexLocation>^DBFakturierung.SD.LSVAKatI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.LSVAKatS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="LSVAKatDefaultData">
<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>Gewicht</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Gewicht">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Lagerort">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62375,34837.419591</TimeChanged>
<TimeCreated>61571,34244.554182</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="ArtikelLager">
<Type>DBFakturierung.ArtikelLager</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Telefon">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Fax">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Lagerbewegung">
<Type>DBFakturierung.Lagerbew</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Lagerort
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="Geraet">
<Type>DBFakturierung.Geraet</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>SingleLagerOrt</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Auftragsposition">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Bestellungssposition">
<Type>DBFaktEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetNextFreeCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set code = 0
	&sql(SELECT TOP 1 PositionsNr INTO :code FROM DBFakturierung_SD.Lagerort
	     WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	set code = code + 1	     
	Quit code
]]></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 DBFakturierung_SD.Lagerort
		 WHERE Mandant = :MandantOid AND DBFakturierung_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) = :Text)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>LagerortDefaultData</DefaultData>
<Data name="LagerortDefaultData">
<Structure>listnode</Structure>
<Subscript>"Lagerort"</Subscript>
<Value name="1">
<Value>Telefon</Value>
</Value>
<Value name="2">
<Value>Fax</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Lieferart">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62222,63692.921313</TimeChanged>
<TimeCreated>61579,55597.207681</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="Transporteur">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktTransporteurAdr</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Transporteur"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="TransporteurIndex">
<Properties>Transporteur</Properties>
</Index>

<Property name="AdressVorschlag">
<Type>DBDebiKredi.Debitor</Type>
<Cardinality>many</Cardinality>
<Inverse>FaktLieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Verrechnen">
<Type>%Boolean</Type>
</Property>

<Property name="AKLieferart">
<Type>DBFakturierung.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Lieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Lieferart
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="AuftrStrgLieferart">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>VorschlagLieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="BKLieferart">
<Type>DBFaktEK.Bestellungskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Lieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="BestStrgLieferart">
<Type>DBFaktEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>VorschlagLieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>LieferartDefaultData</DefaultData>
<Data name="LieferartDefaultData">
<Structure>listnode</Structure>
<Subscript>"Lieferart"</Subscript>
<Value name="1">
<Value>Transporteur</Value>
</Value>
<Value name="2">
<Value>Verrechnen</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Liefgrp">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57222.943703</TimeChanged>
<TimeCreated>61647,53617.170333</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Pos-Nr</Description>
<Type>%Integer</Type>
</Property>

<Property name="Lieferant">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>LieferantenGrLieferant</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lieferant3"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="LieferantIndex">
<Properties>Lieferant</Properties>
</Index>

<Property name="Kurzbez">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetOidByPosNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set myID = ""
	&sql(SELECT ID into :myID FROM DBFakturierung_SD.Liefgrp WHERE Lieferant->Mandant= :MandantOid AND PositionsNr= :PosNr)
	Quit myID
]]></Implementation>
</Method>

<Method name="GetNextPosNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(SELECT MAX(PositionsNr) into :nr FROM DBFakturierung_SD.Liefgrp WHERE Lieferant->Mandant= :MandantOid)
	Quit +(nr+1)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.LiefgrpD</DataLocation>
<DefaultData>LiefgrpDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.LiefgrpD</IdLocation>
<IndexLocation>^DBFakturierung.SD.LiefgrpI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.LiefgrpS</StreamLocation>
<Data name="LiefgrpDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Lieferant</Value>
</Value>
<Value name="4">
<Value>Kurzbez</Value>
</Value>
</Data>
<Property name="Kurzbez"/>
<Property name="Lieferant"/>
<Property name="PositionsNr"/>
</Storage>
</Class>


<Class name="DBFakturierung.SD.MargenStaf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57274.390642</TimeChanged>
<TimeCreated>61647,53820.920465</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>
<Parameter name="MAXVAL" value="100"/>
<Parameter name="MINVAL" value="0"/>
</Property>

<Property name="Bezeichnung">
<Description>
Bezeichnung</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Index name="BezeichnungIndex">
<Data>%%ID,Nummer,Bezeichnung(KEYS),Bezeichnung(ELEMENTS)</Data>
<Properties>Mandant:Exact,Bezeichnung(KEYS):Exact,Bezeichnung(ELEMENTS):Exact</Properties>
</Index>

<Property name="Entry">
<Type>DBFakturierung.SD.MargenStafE</Type>
<Cardinality>children</Cardinality>
<Inverse>MargenStaffel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Artikelgruppe">
<Type>DBFakturierung.SD.Artikelgrp</Type>
<Cardinality>many</Cardinality>
<Inverse>MargenStaffel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<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(DBFakturierung.SD.MargenStaf).%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="GetMarge">
<FormalSpec>Betrag:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set marge = 0	
	set myId = ..%Id()
	&sql(SELECT TOP 1 MargeProzent INTO :marge
		     	FROM DBFakturierung_SD.MargenStafE
		     	Where MargenStaffel = :myId and AbBetrag <= :Betrag
		     	ORDER by AbBetrag desc)
	if (marge = 0) {
		&sql(SELECT TOP 1 MargeProzent INTO :marge
		     	FROM DBFakturierung_SD.MargenStafE
		     	Where MargenStaffel = :myId
		     	ORDER by AbBetrag asc)
	}
	quit marge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.MargenStafD</DataLocation>
<DefaultData>MargenStafDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.MargenStafD</IdLocation>
<IndexLocation>^DBFakturierung.SD.MargenStafI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.MargenStafS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="MargenStafDefaultData">
<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="DBFakturierung.SD.MargenStafE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57322.913453</TimeChanged>
<TimeCreated>61647,53867.416593</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="AbBetrag">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MargeProzent">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MargenStaffel">
<Type>DBFakturierung.SD.MargenStaf</Type>
<Cardinality>parent</Cardinality>
<Inverse>Entry</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Entry")</DataLocation>
<DefaultData>MargenStafEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.MargenStafC("Entry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.MargenStafEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.MargenStafES</StreamLocation>
<Data name="MargenStafEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AbBetrag</Value>
</Value>
<Value name="3">
<Value>MargeProzent</Value>
</Value>
</Data>
<Property name="AbBetrag"/>
<Property name="MargeProzent"/>
<Property name="MargenStaffel"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Mengencode">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62221,64091.954699</TimeChanged>
<TimeCreated>61571,37153.30815</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="CodeEinheit">
<Type>%Integer</Type>
</Property>

<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="Gewicht">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="ArtikelMengeneinheit">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AuftragspositionMengeneinheit">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreisMenge">
<Type>DBFakturierung.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Menge</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VorkalkEinheit">
<Type>DBSpezial.Mecano.VorkalkPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Einheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="WerkzeugEinheit">
<Type>DBSpezial.Mecano.Werkzeug</Type>
<Cardinality>many</Cardinality>
<Inverse>Einheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="BestellungsPosMengeneinheit">
<Type>DBFaktEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Mengencode
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="MengencodeExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.Mengencode
	     WHERE Mandant = :MandantOid)
	if (id = "") {
		Quit 0
	} else {
		Quit 1
	}
]]></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 DBFakturierung_SD.Mengencode
		 WHERE Mandant = :MandantOid AND DBFakturierung_SD.Hilfstexte_GetTextClass(%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 PositionsNr INTO :code FROM DBFakturierung_SD.Mengencode
	     WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	set code = code + 1	     
	Quit code
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>MengencodeDefaultData</DefaultData>
<Data name="MengencodeDefaultData">
<Structure>listnode</Structure>
<Subscript>"Mengencode"</Subscript>
<Value name="1">
<Value>Gewicht</Value>
</Value>
<Value name="2">
<Value>CodeEinheit</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Preisliste">
<Description>
</Description>
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62017,60355.766223</TimeChanged>
<TimeCreated>61689,40021.427656</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="AuftragsSteuerungPreisliste">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>Preisliste</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Preisliste
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Produktgruppe">
<Description>
</Description>
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61689,48380.351795</TimeChanged>
<TimeCreated>61689,47068.972898</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>

<Method name="GetOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set myID = ""
	&sql(SELECT ID into :myID FROM DBFakturierung_SD.Produktgruppe WHERE Mandant= :MandantOid AND PositionsNr= :PosNr)
	Quit myID
]]></Implementation>
</Method>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktgruppe</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
</Storage>
</Class>


<Class name="DBFakturierung.SD.QSMeldTyp">
<Description>
</Description>
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62017,60483.954179</TimeChanged>
<TimeCreated>61689,47097.88627</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>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.QSMeldTyp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
</Storage>
</Class>


<Class name="DBFakturierung.SD.Qualitaetsklasse">
<Description>
</Description>
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62017,58121.068514</TimeChanged>
<TimeCreated>61689,48934.265943</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="ArtikelQualitaetsklasse">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaetsklasse</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Autragpos">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtVerarb">
<Type>DBFakturierung.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.Qualitaetsklasse
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="QualitaetExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung_SD.Qualitaetsklasse
	     WHERE Mandant = :MandantOid)
	if (id = "") {
		Quit 0
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
</Storage>
</Class>


<Class name="DBFakturierung.SD.StrgAuftrag">
<Super>DBFakturierung.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62173,52961.04417</TimeChanged>
<TimeCreated>61689,47268.38148</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="AuftragsSteuerungExportTyp">
<Type>DBFakturierung.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>ExportTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TypAuftragssteuerungTyp">
<Type>DBFakturierung.TypStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>Typ</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.StrgAuftrag
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="Adresse">
<Type>DBAdressen.Adresse</Type>
<Cardinality>many</Cardinality>
<Inverse>FaktAuftragSteuerung</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
</Storage>
</Class>


<Class name="DBFakturierung.SD.StrgEinkauf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61949,42510.839588</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="Artikelgruppe">
<Type>DBFakturierung.SD.Artikelgrp</Type>
<Cardinality>one</Cardinality>
<Inverse>StrgEinkauf</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="ArtikelgruppeIndex">
<Properties>Artikelgruppe</Properties>
</Index>

<Property name="WaehrungEK">
<Type>DBFibu.SD.Fremdwaehrung</Type>
<Cardinality>one</Cardinality>
<Inverse>FaktStrgEinkauf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Brutto">
<Type>%Boolean</Type>
</Property>

<Property name="Netto">
<Type>%Boolean</Type>
</Property>

<Property name="BruttoMargeEK">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="VKMarge">
<Type>DBFakturierung.SD.StrgEinkaufM</Type>
<Cardinality>children</Cardinality>
<Inverse>Strg</Inverse>
<Relationship>1</Relationship>
</Property>

<Method name="GetIdByArtGrpOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	if ((ArtGrpOid '= "") && (ArtGrpOid '= $c(0))) {
		&sql(SELECT ID INTO :id FROM DBFakturierung_SD.StrgEinkauf
		 WHERE Mandant = :MandantOid AND Artikelgruppe = :ArtGrpOid)
	} else {
		&sql(SELECT ID INTO :id FROM DBFakturierung_SD.StrgEinkauf
		 WHERE Mandant = :MandantOid AND Artikelgruppe IS NULL)
	}
	Quit id
]]></Implementation>
</Method>

<Method name="GetMarge">
<ClassMethod>1</ClassMethod>
<FormalSpec>StrgOid:%String,Betrag:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set marge = 0	
	&sql(SELECT TOP 1 MargeProzent INTO :marge
		     	FROM DBFakturierung_SD.StrgEinkaufM
		     	Where Strg = :StrgOid and BisBetrag >= :Betrag
		     	ORDER by BisBetrag asc)
	if (marge = 0) {
		&sql(SELECT TOP 1 MargeProzent INTO :marge
		     	FROM DBFakturierung_SD.StrgEinkaufM
		     	Where Strg = :StrgOid
		     	ORDER by BisBetrag desc)
	}
	quit marge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.StrgEinkaufD</DataLocation>
<DefaultData>StrgEinkaufDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.StrgEinkaufD</IdLocation>
<IndexLocation>^DBFakturierung.SD.StrgEinkaufI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.StrgEinkaufS</StreamLocation>
<Data name="StrgEinkaufDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Artikelgruppe</Value>
</Value>
<Value name="4">
<Value>WaehrungEK</Value>
</Value>
<Value name="5">
<Value>Brutto</Value>
</Value>
<Value name="6">
<Value>Netto</Value>
</Value>
<Value name="7">
<Value>BruttoMargeEK</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikelgruppe">
</Property>
<Property name="Brutto">
</Property>
<Property name="BruttoMargeEK">
</Property>
<Property name="Mandant">
</Property>
<Property name="Netto">
</Property>
<Property name="WaehrungEK">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.StrgEinkaufM">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61949,42656.819646</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="Strg">
<Type>DBFakturierung.SD.StrgEinkauf</Type>
<Cardinality>parent</Cardinality>
<Inverse>VKMarge</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="BisBetrag">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MargeProzent">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="PauschalZuschlag">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("VKMarge")</DataLocation>
<DefaultData>StrgEinkaufMDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.StrgEinkaufC("VKMarge")</IdLocation>
<IndexLocation>^DBFakturierun30A1.StrgEinkaufMI</IndexLocation>
<StreamLocation>^DBFakturierun30A1.StrgEinkaufMS</StreamLocation>
<Data name="StrgEinkaufMDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>BisBetrag</Value>
</Value>
<Value name="3">
<Value>MargeProzent</Value>
</Value>
<Value name="4">
<Value>PauschalZuschlag</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="BisBetrag">
</Property>
<Property name="MargeProzent">
</Property>
<Property name="PauschalZuschlag">
</Property>
<Property name="Strg">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblDataE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61717,60833.050839</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Tabellenkopf">
<Type>DBFakturierung.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellendataEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Formularkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Method name="GetTblDataEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblDataENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblDataE
		 WHERE Nummer = :TblDataENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblDataE).%OpenId(myID)
		set text = rs.Format.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellendataEntry")</DataLocation>
<DefaultData>TblDataEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblKopfC("TabellendataEntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblDataEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblDataES</StreamLocation>
<Data name="TblDataEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Rahmen</Value>
</Value>
<Value name="8">
<Value>Format</Value>
</Value>
<Value name="9">
<Value>Font</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Aktiv">
</Property>
<Property name="Ausrichtung">
</Property>
<Property name="Breite">
</Property>
<Property name="Font">
</Property>
<Property name="Format">
</Property>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenkopf">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblFuss">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61718,54787.781334</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantNummerIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bezeichnung">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="TabellenfussEntry">
<Type>DBFakturierung.SD.TblFussE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenfuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenfussSkontoEntry">
<Type>DBFakturierung.SD.TblFussSktE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenfuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="GenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="GenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Method name="GetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Bezeichnung, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblFuss).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Bezeichnung, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBFakturierung_SD.TblFuss WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

<Method name="GetTblFussOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,TblFussNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO oid
		 FROM DBFakturierung_SD.TblFuss
		 WHERE Nummer = :TblFussNr AND Mandant=:MandOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="CopyTblFuss">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer,Mandant:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBFakturierung.SD.TblFuss).%OpenId(SrcOid)
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.Nummer = newNr
	set dstAs.Mandant = Mandant
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	
	// Wenn erfolgreich auch die Childern kopieren
	if ($$$ISOK(status)) {
		// Formular Fuss Entrys
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblFussE WHERE Tabellenfuss = '"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.TblFussE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenfuss=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Formularfuss Entrys",  posState, !
				}
				k pos			    
		    }
	    }
		// Formular Skonto Entrys
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblFussSktE WHERE Tabellenfuss = '"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.TblFussSktE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenfuss=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Formularfuss Skonto Entrys",  posState, !
				}
				k pos			    
		    }
		    
	    }
	}
	
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Property name="Drucktyp">
<Type>DBFakturierung.SD.DTypTblFuss</Type>
<Cardinality>many</Cardinality>
<Inverse>TblFuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PrintEW">
<Type>%Boolean</Type>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.TblFussD</DataLocation>
<DefaultData>TblFussDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblFussD</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblFussI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblFussS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TblFussDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>GenFont</Value>
</Value>
<Value name="5">
<Value>GenRahmen</Value>
</Value>
<Value name="6">
<Value>PrintEW</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="GenFont">
</Property>
<Property name="GenRahmen">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
<Property name="PrintEW">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblFussE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61718,54925.799669</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Tabellenfuss">
<Type>DBFakturierung.SD.TblFuss</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenfussEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenfuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="DetailFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="DetailRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="TotalFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="TotalRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="TotalText">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblFussE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblFussEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblFussOid:%String,TblFussENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblFussE
		 WHERE Nummer = :TblFussENr AND Tabellenfuss=:TblFussOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="GetTotalText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..TotalText, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTotalTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblFussE).%OpenId(myID)
		set text = rs.GetTotalText(MandOid, Lang)
		k rs
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetTotalText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..TotalText, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenfussEntry")</DataLocation>
<DefaultData>TblFussEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblFussC("TabellenfussEntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblFussEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblFussES</StreamLocation>
<Data name="TblFussEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>DetailFont</Value>
</Value>
<Value name="10">
<Value>DetailRahmen</Value>
</Value>
<Value name="11">
<Value>TotalFont</Value>
</Value>
<Value name="12">
<Value>TotalRahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Data name="TotalText">
<Attribute>TotalText</Attribute>
<Structure>subnode</Structure>
<Subscript>"TotalText"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Aktiv">
</Property>
<Property name="Ausrichtung">
</Property>
<Property name="Breite">
</Property>
<Property name="DetailFont">
</Property>
<Property name="DetailRahmen">
</Property>
<Property name="Font">
</Property>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenfuss">
</Property>
<Property name="TotalFont">
</Property>
<Property name="TotalRahmen">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblFussSktE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61723,33357.37006</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Tabellenfuss">
<Type>DBFakturierung.SD.TblFuss</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenfussSkontoEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenfuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblFussSktE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblFussSkontoEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblFussOid:%String,TblFussSkontoEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblFussSktE
		 WHERE Nummer = :TblFussSkontoEntryNr AND Tabellenfuss=:TblFussOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenfussSkontoEntry")</DataLocation>
<DefaultData>TblFussSktEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblFussC("TabellenfussSkontoEntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblFussSktEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblFussSktES</StreamLocation>
<Data name="TblFussSktEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Aktiv">
</Property>
<Property name="Ausrichtung">
</Property>
<Property name="Breite">
</Property>
<Property name="Font">
</Property>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenfuss">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblKopf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61717,58974.878833</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantNummerIndex">
<Properties>Mandant,Nummer</Properties>
<Unique>1</Unique>
</Index>

<Property name="Bezeichnung">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Drucktyp">
<Type>DBFakturierung.SD.DTypTblKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>TblKopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenkopfEntry">
<Type>DBFakturierung.SD.TblKopfE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellendataEntry">
<Type>DBFakturierung.SD.TblDataE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSREntry">
<Type>DBFakturierung.SD.TblSREntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSRgkEntry">
<Type>DBFakturierung.SD.TblSRgkE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="GenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="GenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="DataGenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="DataGenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="SrGenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="SrGenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="SrKopfGenFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="SrKopfGenRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="TabellenSRgfEntry">
<Type>DBFakturierung.SD.TblSRgfE</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</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(DBFakturierung.SD.TblKopf).%OpenId(myID)
		set text = rs.GetBezeichnung(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetBezeichnung">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Bezeichnung, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetNextFreeNumber">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	&sql(Select max(Nummer) into :nr From DBFakturierung_SD.TblKopf WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

<Method name="GetTblKopfOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,TblKopfNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblKopf
		 WHERE Nummer = :TblKopfNr AND Mandant=:MandOid)
	Quit oid
]]></Implementation>
</Method>

<Method name="CopyTblKopf">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer,Mandant:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBFakturierung.SD.TblKopf).%OpenId(SrcOid)
	
	/// kopieren und Nummer zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.Nummer = newNr
	set dstAs.Mandant = Mandant
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	
	// Wenn erfolgreich auch die Childern kopieren
	if ($$$ISOK(status)) {
		// Formular Kopf Entrys
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblKopfE WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.TblKopfE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Kopf Entrys",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Formular Detail
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblDataE WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.TblDataE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Formular Detail ",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Sammelrechnung
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblSREntry WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.TblSREntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Sammelrechnung ",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Sammelrechnung Gruppenkopf
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblSRgkE WHERE Formularkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.FormSRgkEntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Formularkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Sammelrechnung Gruppenkopf ",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Sammelrechnung Verteilliste
		Set strSQL="SELECT ID FROM DBFakturierung_SD.TblSRvlE WHERE Tabellenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBFakturierung.SD.TblSRvlE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Tabellenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Sammelrechnung Verteilliste ",  posState, !
				}
				k pos			    
		    }
		    
	    }
	}
	set status = dstAs.%Save()
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.TblKopfD</DataLocation>
<DefaultData>TblKopfDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblKopfD</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblKopfI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblKopfS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="TblKopfDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Mandant</Value>
</Value>
<Value name="4">
<Value>GenFont</Value>
</Value>
<Value name="5">
<Value>GenRahmen</Value>
</Value>
<Value name="6">
<Value>DataGenFont</Value>
</Value>
<Value name="7">
<Value>DataGenRahmen</Value>
</Value>
<Value name="8">
<Value>SrGenFont</Value>
</Value>
<Value name="9">
<Value>SrGenRahmen</Value>
</Value>
<Value name="10">
<Value>SrKopfGenFont</Value>
</Value>
<Value name="11">
<Value>SrKopfGenRahmen</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="DataGenFont">
</Property>
<Property name="DataGenRahmen">
</Property>
<Property name="GenFont">
</Property>
<Property name="GenRahmen">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
<Property name="SrGenFont">
</Property>
<Property name="SrGenRahmen">
</Property>
<Property name="SrKopfGenFont">
</Property>
<Property name="SrKopfGenRahmen">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblKopfE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62432,43930</TimeChanged>
<TimeCreated>61717,59103.095271</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblKopfE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblKopfEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblKopfENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblKopfE
		 WHERE Nummer = :TblKopfENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBFakturierung.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenkopfEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="FontColor">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenkopfEntry")</DataLocation>
<DefaultData>TblKopfEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblKopfC("TabellenkopfEntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblKopfEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblKopfES</StreamLocation>
<Data name="TblKopfEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>FontColor</Value>
</Value>
<Value name="8">
<Value>Font</Value>
</Value>
<Value name="9">
<Value>Rahmen</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Aktiv">
</Property>
<Property name="Ausrichtung">
</Property>
<Property name="Breite">
</Property>
<Property name="Font">
</Property>
<Property name="FontColor">
</Property>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenkopf">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblSREntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57324.483131</TimeChanged>
<TimeCreated>61717,62057.620203</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Method name="GetTblSREntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSREntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblSREntry
		 WHERE Nummer = :TblSREntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBFakturierung.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenSREntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="DetailFont">
<Type>DBCore.COFont</Type>
</Property>

<Property name="DetailRahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="DetailFormat">
<Type>DBCore.COFormat</Type>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblSREntry).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Format.TextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblSREntry).%OpenId(myID)
		set text = rs.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetFormatTextFallsLeerLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Format.TextFallsLeer, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetDetailFormatTextLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..DetailFormat.TextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetDetailFormatTextLeerClass">
<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(DBFakturierung.SD.TblSREntry).%OpenId(myID)
		set text = rs.GetDetailFormatTextLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetDetailFormatTextLeerLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..DetailFormat.TextFallsLeer, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSREntry")</DataLocation>
<DefaultData>TblSREntryDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblKopfC("TabellenSREntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblSREntryI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblSREntryS</StreamLocation>
<Data name="TblSREntryDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>Format</Value>
</Value>
<Value name="10">
<Value>DetailFont</Value>
</Value>
<Value name="11">
<Value>DetailRahmen</Value>
</Value>
<Value name="12">
<Value>DetailFormat</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Aktiv">
</Property>
<Property name="Ausrichtung">
</Property>
<Property name="Breite">
</Property>
<Property name="DetailFont">
</Property>
<Property name="DetailFormat">
</Property>
<Property name="DetailRahmen">
</Property>
<Property name="Font">
</Property>
<Property name="Format">
</Property>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenkopf">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblSRgfE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57324.635913</TimeChanged>
<TimeCreated>62374,35597.950475</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Tabellenkopf">
<Type>DBFakturierung.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenSRgfEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblSRgfE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Format.FormatTextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblSRgfE).%OpenId(myID)
		set text = rs.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetFormatTextFallsLeerLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Format.FormatTextFallsLeer, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblSRgfEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSRgkENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblSRgfE
		 WHERE Nummer = :TblSRgkENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSRgfEntry")</DataLocation>
<DefaultData>TblSRgfEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblKopfC("TabellenSRgfEntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblSRgfEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblSRgfES</StreamLocation>
<Data name="TblSRgfEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>Format</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TblSRgkE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57324.79918</TimeChanged>
<TimeCreated>61718,29973.395954</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="Nummer">
<Type>%Integer</Type>
<Required>1</Required>
</Property>

<Index name="NummerIndex">
<Properties>Nummer</Properties>
</Index>

<Property name="Aktiv">
<Type>%Boolean</Type>
</Property>

<Property name="Index">
<Type>%Integer</Type>
</Property>

<Property name="Breite">
<Type>%Integer</Type>
</Property>

<Property name="Ausrichtung">
<Type>%Integer</Type>
</Property>

<Property name="Font">
<Type>DBCore.COFont</Type>
</Property>

<Property name="Tabellenkopf">
<Type>DBFakturierung.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenSRgkEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Tabellenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Rahmen">
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="Format">
<Type>DBCore.COFormat</Type>
</Property>

<Property name="Text">
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblSRgkE).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Format.FormatTextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetFormatTextFallsLeerClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBFakturierung.SD.TblSRgkE).%OpenId(myID)
		set text = rs.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetFormatTextFallsLeerLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Format.FormatTextFallsLeer, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTblSRgkEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSRgkENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBFakturierung_SD.TblSRgkE
		 WHERE Nummer = :TblSRgkENr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSRgkEntry")</DataLocation>
<DefaultData>TblSRgkEDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TblKopfC("TabellenSRgkEntry")</IdLocation>
<IndexLocation>^DBFakturierung.SD.TblSRgkEI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TblSRgkES</StreamLocation>
<Data name="TblSRgkEDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Nummer</Value>
</Value>
<Value name="3">
<Value>Aktiv</Value>
</Value>
<Value name="4">
<Value>Index</Value>
</Value>
<Value name="5">
<Value>Breite</Value>
</Value>
<Value name="6">
<Value>Ausrichtung</Value>
</Value>
<Value name="7">
<Value>Font</Value>
</Value>
<Value name="8">
<Value>Rahmen</Value>
</Value>
<Value name="9">
<Value>Format</Value>
</Value>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Property name="Aktiv"/>
<Property name="Ausrichtung"/>
<Property name="Breite"/>
<Property name="Font"/>
<Property name="Format"/>
<Property name="Index"/>
<Property name="Nummer"/>
<Property name="Rahmen"/>
<Property name="Tabellenkopf"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBFakturierung.SD.TrockKosten">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57275.039612</TimeChanged>
<TimeCreated>62297,32163.070427</TimeCreated>
<Inheritance>right</Inheritance>

<Parameter name="XMLIGNOREINVALIDATTRIBUTE">
<Description><![CDATA[
Controls how to handle attributes that are unexpected.
-> If this parameter is 1 (the default), such attributes are ignored.
-> If it is 0, they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNOREINVALIDTAG">
<Description><![CDATA[
Controls how to handle tags that are unexpected. 
-> If this parameter is 1, such tags are ignored. 
-> If it is 0 (the default), they are treated as errors, and import fails.]]></Description>
<Default>1</Default>
</Parameter>

<Parameter name="XMLIGNORENULL">
<Default>1</Default>
</Parameter>

<Property name="IdForExport">
<Type>%XML.Id</Type>
<Private>1</Private>
<Transient>1</Transient>
<Parameter name="XMLNAME" value="ID"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
</Property>

<Property name="PositionsNr">
<Description>
Position</Description>
<Type>%Integer</Type>
</Property>

<Property name="Text">
<Description>
Text</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Bemerkung">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Mandant">
<Type>%String</Type>
</Property>

<ForeignKey name="FKMandant">
<Properties>Mandant</Properties>
<ReferencedClass>DBCore.Mandant</ReferencedClass>
<ReferencedKey>MandIdIndex</ReferencedKey>
</ForeignKey>

<Index name="MandantIdx">
<Properties>Mandant</Properties>
</Index>

<Property name="Kosten">
<Type>%Decimal</Type>
<Collection>array</Collection>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Trocknungskosten</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Einheit">
<Type>%String</Type>
<Parameter name="MAXLEN" value="10"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Abzug">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Method name="GetText">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..Text, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetTextClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if ((myID '= "") && (myID '= $c(0)) && (myID '= "0")) {
		Set rs=##Class(DBFakturierung.SD.TrockKosten).%OpenId(myID)
		set text = rs.GetText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Text, Value, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetIdByPosNrOnMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,PosNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBFakturierung_SD.TrockKosten
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteTextFromId">
<ClassMethod>1</ClassMethod>
<FormalSpec>HilfstextOid:%String,Lang:%String</FormalSpec>
<Implementation><![CDATA[
	set obj = ##class(DBFakturierung.SD.TrockKosten).%OpenId(HilfstextOid)
	if (obj '= "") {
		set val = obj.Text.GetAt(Lang)
		if (val '= "") {
			Do ##class(DBUtils.StringUtils).SetText(obj.Text, "", Lang, obj.Mandant)
			do obj.%Save()
		}
	}
]]></Implementation>
</Method>

<Method name="GetKosten">
<FormalSpec>Liter:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	if (+Liter = 0) {
		Quit 0
	} 
	quit ..Kosten.GetAt(Liter)
]]></Implementation>
</Method>

<Method name="GetNextKosten">
<FormalSpec>Liter:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set fid = 0
	set id = ..%Id()
	&sql(SELECT TOP 1 element_key into :fid FROM DBFakturierung_SD.TrockKosten_Kosten WHERE TrockKosten = :id AND element_key >= :Liter ORDER BY element_key ASC)
	Quit:(SQLCODE '= 0) ""
	Quit:(..Kosten.IsDefined(fid) = 0) ""
	quit ..Kosten.GetAt(fid)
]]></Implementation>
</Method>

<Method name="GetNextKostenClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,Liter:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kosten = ""
	if ((myID '= "") && (myID '= $c(0)) && (myID '= "0")) {
		Set rs=##Class(DBFakturierung.SD.TrockKosten).%OpenId(myID)
		set kosten = rs.GetNextKosten(Liter)
	}
	Quit kosten
]]></Implementation>
</Method>

<Method name="SetKosten">
<FormalSpec>Liter:%Decimal,value:%Decimal</FormalSpec>
<Implementation><![CDATA[	d ..Kosten.SetAt(value, Liter)
]]></Implementation>
</Method>

<Method name="DeleteById">
<ClassMethod>1</ClassMethod>
<FormalSpec>KostenOid:%String</FormalSpec>
<Implementation><![CDATA[
	&sql(DELETE FROM DBFakturierung_SD.TrockKosten_Kosten
		WHERE ID = :KostenOid)
]]></Implementation>
</Method>

<Method name="DeleteAllById">
<ClassMethod>1</ClassMethod>
<FormalSpec>TrockKostenOid:%String</FormalSpec>
<Implementation><![CDATA[
	&sql(DELETE FROM DBFakturierung_SD.TrockKosten_Kosten
		WHERE TrockKosten = :TrockKostenOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.SD.TrockKostenD</DataLocation>
<DefaultData>TrockKostenDefaultData</DefaultData>
<IdLocation>^DBFakturierung.SD.TrockKostenD</IdLocation>
<IndexLocation>^DBFakturierung.SD.TrockKostenI</IndexLocation>
<StreamLocation>^DBFakturierung.SD.TrockKostenS</StreamLocation>
<Data name="Kosten">
<Attribute>Kosten</Attribute>
<Structure>subnode</Structure>
<Subscript>"Kosten"</Subscript>
</Data>
<Data name="Text">
<Attribute>Text</Attribute>
<Structure>subnode</Structure>
<Subscript>"Text"</Subscript>
</Data>
<Data name="TrockKostenDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>PositionsNr</Value>
</Value>
<Value name="3">
<Value>Bemerkung</Value>
</Value>
<Value name="4">
<Value>Mandant</Value>
</Value>
<Value name="5">
<Value>Einheit</Value>
</Value>
<Value name="6">
<Value>Abzug</Value>
</Value>
</Data>
<Property name="Abzug"/>
<Property name="Bemerkung"/>
<Property name="Einheit"/>
<Property name="Mandant"/>
<Property name="PositionsNr"/>
</Storage>
</Class>


<Class name="DBFakturierung.TempAusgang">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57223.017777</TimeChanged>
<TimeCreated>61647,51527.583848</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="Kunde">
<Description>
Kunde</Description>
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>GeraetFaktKunde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Kunde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Verakufsdatum">
<Description>
Verakufsdatum</Description>
<Type>%Date</Type>
</Property>

<Property name="Auftragnummer">
<Description>
Auftragnummer</Description>
<Type>%Integer</Type>
</Property>

<Property name="Geraet">
<Type>DBFakturierung.TmpAusgGeraet</Type>
<Cardinality>many</Cardinality>
<Inverse>Auftrag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.TempAusgangD</DataLocation>
<DefaultData>TempAusgangDefaultData</DefaultData>
<IdLocation>^DBFakturierung.TempAusgangD</IdLocation>
<IndexLocation>^DBFakturierung.TempAusgangI</IndexLocation>
<StreamLocation>^DBFakturierung.TempAusgangS</StreamLocation>
<Data name="TempAusgangDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Kunde</Value>
</Value>
<Value name="3">
<Value>Verakufsdatum</Value>
</Value>
<Value name="4">
<Value>Auftragnummer</Value>
</Value>
</Data>
<Property name="Auftragnummer"/>
<Property name="Kunde"/>
<Property name="Verakufsdatum"/>
</Storage>
</Class>


<Class name="DBFakturierung.TmpAusgGeraet">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57223.125893</TimeChanged>
<TimeCreated>61653,35838.596261</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="Anzahl">
<Description>
Anzahl</Description>
<Type>%Integer</Type>
</Property>

<Property name="Geraet">
<Type>DBFakturierung.Geraet</Type>
<Cardinality>one</Cardinality>
<Inverse>TempAusgang</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Geraet"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GeraetIndex">
<Properties>Geraet</Properties>
</Index>

<Property name="Auftrag">
<Type>DBFakturierung.TempAusgang</Type>
<Cardinality>one</Cardinality>
<Inverse>Geraet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Auftrag"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AuftragIndex">
<Properties>Auftrag</Properties>
</Index>

<Property name="RechnungPos">
<Type>DBFakturierung.Auftragspos</Type>
<Cardinality>one</Cardinality>
<Inverse>Geraet</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="RechnungPosIndex">
<Properties>RechnungPos</Properties>
</Index>

<Property name="Lagerstatus">
<Type>%Integer</Type>
<InitialExpression>0</InitialExpression>
</Property>

<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 item =##Class(DBFakturierung.TmpAusgGeraet).%OpenId(myId)
	if (item.Auftrag '= "") {
		Set auftragOid = item.Auftrag.%Id()
		w "AOID:"_auftragOid,!
		Set Count =0
			&sql(SELECT Count(*) INTO :Count
			    FROM DBFakturierung.TmpAusgGeraet
			    Where Auftrag = :auftragOid and ID <> :myId)
		w "Count:"_Count,!
		if (Count = 0) {
			set item.Auftrag = ""
			d item.%Save()
			w ##Class(DBFakturierung.TempAusgang).%DeleteId(auftragOid),!
		}
	}
	Kill item
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code><![CDATA[	new myId
	new item
	new Count
	set myId = {ID*O}
	Set item =##Class(DBFakturierung.TmpAusgGeraet).%OpenId(myId)
	if (item.Auftrag '= "") {
		Set auftragOid = item.Auftrag.%Id()
		Set Count =0
			&sql(SELECT Count(*) INTO :Count
			    FROM DBFakturierung.TmpAusgGeraet
			    Where Auftrag = :auftragOid and ID <> :myId)
		if (Count = 0) {
			set item.Auftrag = ""
			d item.%Save()
			d ##Class(DBFakturierung.TempAusgang).%DeleteId(auftragOid)
		}
	}
	Kill item
	Quit]]></Code>
<Event>DELETE</Event>
</Trigger>

<Method name="ChangeGeraet">
<ClassMethod>1</ClassMethod>
<FormalSpec>OidAlt:%String,OidNeu:%String</FormalSpec>
<Implementation><![CDATA[
	&sql(Update DBFakturierung.TmpAusgGeraet Set Geraet = :OidNeu
			Where Geraet = :OidAlt)
]]></Implementation>
</Method>

<Method name="DeleteOnAuftragpos">
<ClassMethod>1</ClassMethod>
<FormalSpec>Auftragpos:%String</FormalSpec>
<Implementation><![CDATA[
	Set strSQL="SELECT ID, Geraet, Anzahl FROM DBFakturierung.TmpAusgGeraet WHERE  RechnungPos ='"_Auftragpos_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set id = rs.Data("ID")
			Set geraetOid = rs.Data("Geraet")
			Set anzahl = rs.Data("Anzahl")
			
			set geraet = ##class(DBFakturierung.Geraet).%OpenId(geraetOid)
			if (geraet '= "") {
				set geraet.Anzahl = geraet.Anzahl + anzahl
				do geraet.%Save()
			}
			set geraet = ""
			
			d ##class(DBFakturierung.TmpAusgGeraet).%DeleteId(id)
		}
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBFakturierung.TmpAusgGeraetD</DataLocation>
<DefaultData>TmpAusgGeraetDefaultData</DefaultData>
<IdLocation>^DBFakturierung.TmpAusgGeraetD</IdLocation>
<IndexLocation>^DBFakturierung.TmpAusgGeraetI</IndexLocation>
<StreamLocation>^DBFakturierung.TmpAusgGeraetS</StreamLocation>
<Data name="TmpAusgGeraetDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Anzahl</Value>
</Value>
<Value name="3">
<Value>Geraet</Value>
</Value>
<Value name="4">
<Value>Auftrag</Value>
</Value>
<Value name="5">
<Value>RechnungPos</Value>
</Value>
<Value name="6">
<Value>Lagerstatus</Value>
</Value>
</Data>
<Property name="Anzahl"/>
<Property name="Auftrag"/>
<Property name="Geraet"/>
<Property name="Lagerstatus"/>
<Property name="RechnungPos"/>
</Storage>
</Class>


<Class name="DBFakturierung.TypStrg">
<Super>DBFakturierung.AuftrStrg,%XML.Adaptor</Super>
<TimeChanged>61689,48382.283678</TimeChanged>
<TimeCreated>61689,47945.018116</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Typ">
<Type>DBFakturierung.SD.StrgAuftrag</Type>
<Cardinality>one</Cardinality>
<Inverse>TypAuftragssteuerungTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Typ"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="TypIndex">
<Properties>Typ</Properties>
</Index>

<Method name="ExistsAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.TypStrg
	     WHERE Typ=:TypOid)
	quit (id '= "")
]]></Implementation>
</Method>

<Method name="GetAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>DBFakturierung.AuftrStrg</ReturnType>
<Implementation><![CDATA[
	set steuerung = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.TypStrg
	     WHERE Typ=:TypOid)
	if (id '= "") {
		set steuerung = ##Class(DBFakturierung.TypStrg).%OpenId(id)
	} else {
		set steuerung = ##Class(DBFakturierung.TypStrg).%New()
	}
	quit steuerung
]]></Implementation>
</Method>

<Method name="DeleteAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBFakturierung.TypStrg
	     WHERE Typ=:TypOid)
	if (id '= "") {
		set status = ##Class(DBFakturierung.AuftrStrg).%DeleteId(id)
	}
	quit status
]]></Implementation>
</Method>

<Method name="CopyAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcTypOid:%String,DstTypOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	
	/// Source steuerung öffnen
	set SrcId = ""
	&sql(SELECT TOP 1 ID INTO :SrcId FROM DBFakturierung.TypStrg
	     WHERE Typ=:SrcTypOid)
	if (SrcId '= "") {
		set srcAs = ##Class(DBFakturierung.TypStrg).%OpenId(SrcId)
	} else {
		quit 100
	}
		
	/// Ziel steuerung öffnen
	if (##Class(DBFakturierung.TypStrg).ExistsAuftragsSteuerung(DstTypOid)) {
		set DstId = ""
		&sql(SELECT TOP 1 ID INTO :DstId FROM DBFakturierung.TypStrg
	  	   WHERE Typ=:DstTypOid)
		set dstAs = ##Class(DBFakturierung.TypStrg).%OpenId(DstId)
	} else {
		set dstAs = ##Class(DBFakturierung.TypStrg).%New()
	}
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(0)
	set typ = ##Class(DBFakturierung.SD.StrgAuftrag).%OpenId(DstTypOid)
	
	/// Bereinigen und zurück 
	set dstAs.Typ = typ
	set status = dstAs.%Save()
	kill dstAs, typ, srcTyp
	quit status
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>TypStrgDefaultData</DefaultData>
<Data name="TypStrgDefaultData">
<Structure>listnode</Structure>
<Subscript>"TypStrg"</Subscript>
<Value name="1">
<Value>Typ</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.Umsatz">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57325.626922</TimeChanged>
<TimeCreated>62404,36274.306129</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="Menge">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="NettoGewicht">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="BetragExkl">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Artikel">
<Type>DBFakturierung.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>Umsatz</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>

<Method name="GetOidByArtOidJahr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,Jahr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT ID INTO :oid FROM DBFakturierung.Umsatz WHERE Artikel=:ArtikelOid AND Jahr=:Jahr)
	if (SQLCODE'=0) {
		set oid=""
	}
	Quit oid
]]></Implementation>
</Method>

<Method name="DeleteAll">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBFakturierung.Umsatz WHERE Artikel->Mandant = :MandantOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Umsatz")</DataLocation>
<DefaultData>UmsatzDefaultData</DefaultData>
<IdLocation>^DBFakturierung.ArtikelC("Umsatz")</IdLocation>
<IndexLocation>^DBFakturierung.UmsatzI</IndexLocation>
<StreamLocation>^DBFakturierung.UmsatzS</StreamLocation>
<Data name="UmsatzDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Jahr</Value>
</Value>
<Value name="3">
<Value>Menge</Value>
</Value>
<Value name="4">
<Value>Laufmeter</Value>
</Value>
<Value name="5">
<Value>BetragExkl</Value>
</Value>
<Value name="6">
<Value>Kilogramm</Value>
</Value>
<Value name="7">
<Value>NettoGewicht</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBFakturierung.Vorabtausch">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57334.709425</TimeChanged>
<TimeCreated>61647,53663.615719</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="Lieferant">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>AustauschFaktLieferant</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lieferant"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="SerienNr">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="AuftragNr">
<Type>%String</Type>
<Parameter name="MAXLEN" value="50"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Datum">
<Type>%Date</Type>
</Property>

<Property name="Problem">
<Type>%String</Type>
<Parameter name="MAXLEN" value="2500"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Geraet">
<Type>DBFakturierung.Geraet</Type>
<Cardinality>parent</Cardinality>
<Inverse>Vorabaustausch</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="GeraetIndex">
<Properties>Geraet</Properties>
</Index>

<Property name="Sachbearbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>one</Cardinality>
<Inverse>VorabaustauschSachbe</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="SachbearbeiterIndex">
<Properties>Sachbearbeiter</Properties>
</Index>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Vorabaustausch")</DataLocation>
<DefaultData>VorabtauschDefaultData</DefaultData>
<IdLocation>^DBFakturierung.GeraetC("Vorabaustausch")</IdLocation>
<IndexLocation>^DBFakturierung.VorabtauschI</IndexLocation>
<StreamLocation>^DBFakturierung.VorabtauschS</StreamLocation>
<Data name="VorabtauschDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Lieferant</Value>
</Value>
<Value name="3">
<Value>SerienNr</Value>
</Value>
<Value name="4">
<Value>AuftragNr</Value>
</Value>
<Value name="5">
<Value>Datum</Value>
</Value>
<Value name="6">
<Value>Problem</Value>
</Value>
<Value name="7">
<Value>Sachbearbeiter</Value>
</Value>
</Data>
</Storage>
</Class>
</Export>
