<?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-13 18:14:21">
<Class name="DBAgrofresh.AF.AbzuegeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61286,55168.073268</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,
		   DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS Abzugstyp
	       FROM DBAgrofresh.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", 
  			DBAgrofresh_SD.Hilfstexte_GetTextClass(abz.Abzugstyp->%ID, :MandantOid, :Lang) AS "Abzugstyp.Text",
  			abz.Abzugscode,
    		abz.Bezugsart,
  			abz.PosNummer,
  			abz.ID,
  			abz.ArtikelNr AS "Artikel.Nummer",
    		DBAgrofresh.Artikel_GetArtikeltextClass(art.ID, :MandantOid, :Lang) AS "Artikel.Text",
    		preis.AbDatum AS "Artikel.PreisAbDatum.AbDatum",
    		preis.Preis AS "Artikel.PreisAbDatum.Preis"
    		
	FROM DBAgrofresh.Abzuege AS "abz" 
		LEFT JOIN DBAgrofresh.Artikel AS "art" ON abz.ArtikelNr = art.ArtikelNr 
		LEFT JOIN DBAgrofresh.ArtPreisDatum "preis" ON preis.Artikel = art.ID
	
	ORDER BY abz.Abzugstyp->PositionsNr, 
			abz.PosNummer, 
			preis.AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.AktionspreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61885,46186.410071</TimeCreated>

<Query name="ListeDetails">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,KundeOid:%String,ArtikelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, AktionVon, AktionBis, Preis
	FROM DBAgrofresh.AktionspreisDet
	WHERE Kopf->Mandant = :MandantOid AND
	Kopf->Kunde = :KundeOid AND Kopf->Artikel = :ArtikelOid
	Order By AktionVon]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtAufwandAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62048,39347.726409</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String,Datum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, PositionsNr, Artikel, Bezug, MengeVorschlag,
		AufwArtikel, Bemerkung, DBAgrofresh.ArtPreisDatum_GetPreisPerDatum(AufwArtikel, {d :Datum}) AS Ansatz
	FROM DBAgrofresh.ArtAufwand 
	WHERE Artikel = :ArtikelOid ORDER BY PositionsNr</SqlQuery>
</Query>

<Query name="ListeVerarbeitung">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr AS PosNummer, Bezug AS Bezugsart, MengeVorschlag, Bemerkung,0 AS AnzahlMitarbeiter,
			AufwArtikel AS Artikel, DBAgrofresh.Artikel_GetArtikeltextClass(AufwArtikel, :MandantOid, :Lang) as ArtikelText,
			DBAgrofresh_SD.Mengencode_GetTextClass(AufwArtikel->Mengeneinheit, :MandantOid, :Lang) as MengeneinheitText,
			AufwArtikel->Artikelcode as Artikelcode, DBAgrofresh.ArtPreisDatum_GetPreisPerDatum(AufwArtikel, CURRENT_DATE) AS Ansatz,
		   DBAgrofreshEK_SD.Hilfstexte_GetTextClass(AufwArtikel->Verarbeitungstyp, :MandantOid, :Lang) AS Verarbeitungstyp
	       FROM DBAgrofresh.ArtAufwand WHERE  Artikel = :ArtikelOid ORDER BY PosNummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtPreisDatumAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61325,51156.860534</TimeCreated>

<Query name="ListeByArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>Artikel:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Preis, AbDatum, Artikel->DezFormatPreis PreisFormat
	       FROM DBAgrofresh.ArtPreisDatum WHERE Artikel = :Artikel Order by AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtVerarbAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61550,32650.534129</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, PositionsNr, Artikel, Qualitaet, 
		Gebinde, AnzahlJeGebinde, VerarbArtikel, Artikel->Einzelgewicht As Einzelgewicht,
		Artikel->Produktionsart AS Produktionsart, Artikel->Herkunft AS Herkunft,
		VerarbArtikel->Mengeneinheit As Mengeneinheit, Bemerkung, Abzugstyp, Mischposten
	FROM DBAgrofresh.ArtVerarb 
	WHERE Artikel = :ArtikelOid ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeProduktion">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelOid:%String,KundeOid:%String,MandantOid:%String,FibuMandOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, PositionsNr, Artikel, Qualitaet, VerarbArtikel, 0 AS AnzGeb, 0 As ChargeNr,
		VerarbArtikel->ArtikelNr as VerarbArtikelNr, Bemerkung, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, :MandantOid, :Lang) As QualitaetText,
		DBAgrofresh.Artikel_GetArtikeltextClass(VerarbArtikel, :MandantOid, :Lang) As VerarbArtikeltext,
		Abzugstyp,
		CASE WHEN DBAgrofresh.Preis_GetGebinde(:MandantOid, :FibuMandOid, :KundeOid, Artikel) is null Then DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) ELSE DBAgrofresh_SD.Gebinde_GetBezeichnungClass(DBAgrofresh.Preis_GetGebinde(:MandantOid, :FibuMandOid, :KundeOid, Artikel), :MandantOid, :Lang) END AS GebindeText,
		CASE WHEN DBAgrofresh.Preis_GetMengeEinheit(:MandantOid,:FibuMandOid, :KundeOid, Artikel) is null Then DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, :MandantOid, :Lang) ELSE DBAgrofresh_SD.Hilfstexte_GetTextClass(DBAgrofresh.Preis_GetMengeEinheit(:MandantOid,:FibuMandOid, :KundeOid, Artikel), :MandantOid, :Lang) END AS MengeneinheitText,
		CASE WHEN DBAgrofresh.Preis_GetGebinde(:MandantOid, :FibuMandOid, :KundeOid, Artikel) is null Then Gebinde ELSE DBAgrofresh.Preis_GetGebinde(:MandantOid, :FibuMandOid, :KundeOid, Artikel) END AS Gebinde,
		CASE WHEN DBAgrofresh.Preis_GetAnzJeGebinde(:MandantOid,:FibuMandOid, :KundeOid, Artikel) = 0 Then AnzahlJeGebinde ELSE DBAgrofresh.Preis_GetAnzJeGebinde(:MandantOid,:FibuMandOid, :KundeOid, Artikel) END AS AnzahlJeGebinde,
		CASE WHEN DBAgrofresh.Preis_GetMengeEinheit(:MandantOid,:FibuMandOid, :KundeOid, Artikel) is null Then VerarbArtikel->Mengeneinheit ELSE DBAgrofresh.Preis_GetMengeEinheit(:MandantOid,:FibuMandOid, :KundeOid, VerarbArtikel) END AS Mengeneinheit
	FROM DBAgrofresh.ArtVerarb 
	WHERE Artikel = :ArtikelOid ORDER BY PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeProduktionDesign">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, PositionsNr, Artikel, Qualitaet, VerarbArtikel, 0 AS AnzGeb, Bemerkung, 0 As ChargeNr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, :MandantOid, :Lang) As QualitaetText,
		DBAgrofresh.Artikel_GetArtikeltextClass(VerarbArtikel, :MandantOid, :Lang) As VerarbArtikeltext,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) As GebindeText,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(VerarbArtikel->Mengeneinheit, :MandantOid, :Lang) as MengeneinheitText,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp, :MandantOid, :Lang) as Abzugstext,
		Gebinde AS Gebinde, Abzugstyp,
		AnzahlJeGebinde  AS AnzahlJeGebinde,
		VerarbArtikel->Mengeneinheit AS Mengeneinheit
	FROM DBAgrofresh.ArtVerarb 
	ORDER BY PositionsNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtZusatzInfoAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62161,31820.480015</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Artikel, Typ, DateiEndung, 
		DateiName, Sprache 
	FROM DBAgrofresh.ArtZusatzInfo
	WHERE Artikel->Mandant = :Mandant ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtZusatztextAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61289,53977.455393</TimeCreated>

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


<Class name="DBAgrofresh.AF.ArtikelAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61282,42898.054023</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, 
	       DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       DBAgrofresh.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,
	       EUZolltarifNr, OrderNr, Herkunftsart, 
	       LagerOffeneBest AS OffeneBestellungen, AnzahlJeGebinde, Basispreis,
	       Parzelle, LagerVerfuegbar As VerfuegbarCalc, AktionspreisAnbruch, Artikelgruppe,
	       FibuKontoVK, FibuKontoEK, MwstEK, MwstVK,
	       Herkunft, Produktionsart, Aufbereitungsart, Qualitaetsklasse,
	       Inhalt, Verpackung, Preisetikette, Mandant, Lieferant1, Lieferant2,
	       Lieferant3, Abzugstyp, Gebinde, Mengeneinheit, Marge
	FROM DBAgrofresh.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, 
	       DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       DBAgrofresh.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,
	       EUZolltarifNr, OrderNr, Herkunftsart, 
	       LagerOffeneBest AS LagerOffeneBest, AnzahlJeGebinde, Basispreis,
	       Parzelle, LagerVerfuegbar As VerfuegbarCalc, AktionspreisAnbruch, Artikelgruppe,
	       FibuKontoVK, FibuKontoEK, MwstEK, MwstVK,
	       Herkunft, Produktionsart, Aufbereitungsart, Qualitaetsklasse,
	       Inhalt, Verpackung, Preisetikette, Mandant, Lieferant1, Lieferant2,
	       Lieferant3, Abzugstyp, Gebinde, Mengeneinheit, Marge
	FROM DBAgrofresh.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,  DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext
	FROM DBAgrofresh.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,  DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext
	FROM DBAgrofresh.Artikel 
	WHERE Mandant = :MandantOid
	AND lower(DBAgrofresh.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,  DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext
	FROM DBAgrofresh.Artikel 
	WHERE Mandant = :MandantOid
	AND lower(Kurztext) LIKE lower(:Kurztext) ORDER BY Kurztext</SqlQuery>
</Query>

<Query name="GetArtikelOidByArtikelnr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Artikelnr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID FROM DBAgrofresh.Artikel WHERE Mandant = :MandantOid AND ArtikelNr = :Artikelnr</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, ArtikelAktiv,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	Kurztext, DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBAgrofresh.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBAgrofresh.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,  ArtikelAktiv,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	Kurztext, DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext,
	DBAgrofresh.Artikel_GetArtikeltext2Class(%ID, :MandantOid, :Lang) As Artikeltext2
	FROM DBAgrofresh.Artikel
	WHERE Mandant = :MandantOid 
	AND { fn LCASE(DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang))} LIKE { fn LCASE(:Text)} 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 DBAgrofresh.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis ORDER BY ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeNachArtGrpBereich">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNrVon:%Integer,ArtGrpNrBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, ArtikelNr, Mandant, Kurztext, Artikelcode, ArtikelAktiv, LagerAktiv, 
	       	Preisliste, Vertreterumsatz, 
	       	DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
		   	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text",
	       	Produktionsart->PositionsNr As "Produktionsart.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As "Produktionsart.Text",
	       	AnzahlJeGebinde, Qualitaetsklasse->PositionsNr As "Qualitaet.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaetsklasse, :MandantOid, :Lang) As "Qualitaet.Text",
	       	Gebinde->GebindeNr As "Gebinde.Nr", 
	       	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As "Gebinde.Text", 
	       	Herkunft->PositionsNr As "Herkunft.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Mengeneinheit->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit.Text", 
	       	Abzugstyp->PositionsNr AS "AbzugstypEinkauf.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "AbzugstypEinkauf.Text", 
	       	AbzugstypArtikelbez->PositionsNr AS "AbzugstypArtikelbez.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(AbzugstypArtikelbez, :MandantOid, :Lang) AS "AbzugstypArtikelbez.Text"
	FROM DBAgrofresh.Artikel
	WHERE Mandant = :MandantOid AND Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis ORDER BY ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeIDsGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelNr FROM DBAgrofresh.Artikel WHERE Mandant = :MandantOid</SqlQuery>
</Query>

<Query name="ListeIDsVonBis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonArtNr:%String,BisArtNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelNr FROM DBAgrofresh.Artikel
		WHERE Mandant = :MandantOid AND ArtikelNr BETWEEN :VonArtNr AND :BisArtNr ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNrVon:%Integer=0,ArtGrpNrBis:%Integer=0,ArtNrVon:%String="",ArtNrBis:%String=""</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			ArtikelNr, 
			Kurztext, 
			Artikelcode, 
			ArtikelAktiv, 
			LagerAktiv, 
	       	Preisliste, 
	       	Vertreterumsatz, 
	       	DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	DBAgrofresh.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,
	       	EUZolltarifNr, 
	       	OrderNr, 
	       	Herkunftsart, 
	       	LagerOffeneBest AS OffeneBestellungen, 
	       	AnzahlJeGebinde, 
	       	Basispreis,
	       	Parzelle, 
	       	LagerVerfuegbar As VerfuegbarCalc, 
	       	AktionspreisAnbruch,
	       	Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
			DBAgrofresh_SD.Artikelgruppe_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",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	Produktionsart->PositionsNr As "Produktionsart.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As "Produktionsart.Text",
	       	Aufbereitungsart, 
	       	Qualitaetsklasse->PositionsNr As "Qualitaet.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaetsklasse, :MandantOid, :Lang) As "Qualitaet.Text",
	       	Inhalt, 
	       	Verpackung, 
	       	Preisetikette, 
	       	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",
			Gebinde->GebindeNr As "Gebinde.Nr", 
	       	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As "Gebinde.Text", 
	       	Mengeneinheit->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit.Text", 
	       	Abzugstyp->PositionsNr AS "AbzugstypEinkauf.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "AbzugstypEinkauf.Text", 
	       	AbzugstypArtikelbez->PositionsNr AS "AbzugstypArtikelbez.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(AbzugstypArtikelbez, :MandantOid, :Lang) AS "AbzugstypArtikelbez.Text", 
	       	Marge->Margencode AS "Marge.Nr", 
	       	DBAgrofreshEK_SD.Marge_GetTextClass(Marge, :MandantOid, :Lang) AS "Marge.Text",
	       	DBAgrofresh.Artikel_GetLLFormatClass(DezStellenMenge) AS "FormatMenge"
	FROM DBAgrofresh.Artikel
	WHERE Mandant = :MandantOid
		AND (ArtikelNr BETWEEN :ArtNrVon AND :ArtNrBis OR NVL(:ArtNrVon,'') = '')
	    AND (Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis OR :ArtGrpNrBis = 0)
	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, 
	       	DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	(ArtikelNr || ' - ' || DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang)) As DisplayText,
	       	(ArtikelNr || ' - ' || Kurztext) As DisplayKurzText
	FROM DBAgrofresh.Artikel
	WHERE Mandant = :MandantOid
	ORDER BY Artikelgruppe->ArtikelgruppenNr, ArtikelNr]]></SqlQuery>
</Query>

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

<Query name="ListeArtikelIdsNachProdGrp">
<Type>%SQLQuery</Type>
<FormalSpec>ProduktGrp:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT DISTINCT ID
	FROM DBAgrofresh.Artikel
	WHERE Produktgruppe = :ProduktGrp</SqlQuery>
</Query>

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

<Query name="ListeIDsNachArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>    SELECT ID FROM DBAgrofresh.Artikel WHERE Artikelgruppe = :ArtGrpOid ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="ListeNachArtArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNrVon:%Integer,ArtGrpNrBis:%Integer,ArtNrVon:%String,ArtNrBis:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 	%ID, ArtikelNr, Mandant, Kurztext, Artikelcode, ArtikelAktiv, LagerAktiv, 
	       	Preisliste, Vertreterumsatz, LetzterEKP, Basispreis, Aktionspreis, Aktion, AktionVonDatum, AktionBisDatum,
	       	DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext, 
	       	Artikelgruppe->ArtikelgruppenNr As "Artikelgruppe.Nr",
		   	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As "Artikelgruppe.Text",
	       	Produktionsart->PositionsNr As "Produktionsart.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As "Produktionsart.Text",
	       	AnzahlJeGebinde, Qualitaetsklasse->PositionsNr As "Qualitaet.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaetsklasse, :MandantOid, :Lang) As "Qualitaet.Text",
	       	Gebinde->GebindeNr As "Gebinde.Nr", 
	       	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As "Gebinde.Text", 
	       	Herkunft->PositionsNr As "Herkunft.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Mengeneinheit->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS "Mengeneinheit.Text", 
	       	Abzugstyp->PositionsNr AS "AbzugstypEinkauf.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "AbzugstypEinkauf.Text", 
	       	AbzugstypArtikelbez->PositionsNr AS "AbzugstypArtikelbez.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(AbzugstypArtikelbez, :MandantOid, :Lang) AS "AbzugstypArtikelbez.Text"
	FROM DBAgrofresh.Artikel
	WHERE Mandant = :MandantOid 
		AND (ArtikelNr BETWEEN :ArtNrVon AND :ArtNrBis OR :ArtNrVon = '')
	    AND (Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis OR :ArtGrpNrVon = 0)
	ORDER BY ArtikelNr]]></SqlQuery>
</Query>

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

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

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

<Query name="ListePreislisteByPreiskatNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,PreiskatNr:%Integer,AdressOid:%Integer,PerDatum:%Date,VonArtGrp:%Integer,BisArtGrp:%Integer,onlyPreisliste:%Boolean=1,sortBez:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, +:AdressOid AS AdressOid,
		ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang) AS Artikeltext, 
		Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
		DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
		Herkunft->IsoKennzeichen As HerkunftCode,
		DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
		DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
		DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) As Mengeneinheit,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) As GebindeBezeichnung,
		AnzahlJeGebinde AS AnzahlJeGebinde,
		0 AS IsKundenSpez,
		CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang)  ELSE ArtikelNr END AS sort2,
		DBAgrofresh.Artikel_GetPreisByPreisKatClass(ID, :PreiskatNr) AS EngrosPreis,
		0 AS DetailPreis,
		0 AS AnbruchsPreis,
		DBAgrofresh.Artikel_GetPreisByPreisKatClass(ID, :PreiskatNr) AS NettoPreis,
		Bemerkung
		FROM DBAgrofresh.Artikel Preis
		WHERE Mandant = :MandantOid
		AND ArtikelAktiv=1 AND (Preisliste=1 OR :onlyPreisliste = 0)
		AND (Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp)

	ORDER BY ArtikelGruppe, sort2]]></SqlQuery>
</Query>

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

<Query name="ListeNachArtGrpShort">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>    SELECT ID,
		ArtikelNr, 
		Kurztext, 
	    DBAgrofresh.Artikel_GetArtikeltextClass(%ID, :MandantOid, :Lang) As Artikeltext
    FROM DBAgrofresh.Artikel WHERE Artikelgruppe = :ArtGrpOid ORDER BY ArtikelNr</SqlQuery>
</Query>

<Query name="ListeLagerNachArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,NurAktive:%Boolean,Lagerort:%String,ArtGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Artikel->%ID AS ArtikelID , Artikel->ArtikelNr, Artikel->Kurztext, Artikel->ArtikelAktiv, Artikel->LagerAktiv, 
		   Artikel->Artikelgruppe AS ArtikelgruppeOid, Artikel->AnzahlJeGebinde,
		   Artikel->DezStellenMenge, Artikel->Gebinde, 
		   Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
	       DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	       Artikel->Basispreis, Artikel->Mengeneinheit, 
	       Lagerbestand, LagerbestandGebinde, OptimaleBestellmenge, OptimaleBestellmengeGebinde,
	       Bestellvorschlag, BestellvorschlagGebinde, Mindestbestand, MindestbestandGebinde,
	       VerfuegbarCalc, VerfuegbarGebindeCalc, Artikel->Lieferant1
	FROM DBAgrofresh.ArtikelLager
	WHERE Artikel->Mandant = :MandantOid 
	AND Lagerort = :Lagerort
	AND ((Artikel->Artikelgruppe = :ArtGrpOid) OR (:ArtGrpOid = ""))
	AND ((Artikel->ArtikelAktiv = 1) OR (:NurAktive = 0)) 
	ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeBestellenNachArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,NurAktive:%Boolean,Lagerort:%String,ArtGrpOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Artikel->%ID AS ArtikelID , Artikel->ArtikelNr, Artikel->Kurztext, Artikel->ArtikelAktiv, Artikel->LagerAktiv, 
		   Artikel->Artikelgruppe AS ArtikelgruppeOid, Artikel->AnzahlJeGebinde,
		   Artikel->DezStellenMenge, Artikel->Gebinde, 
		   Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
	       DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, :MandantOid,:Lang) AS ArtikelgruppenBez,
	       Artikel->Basispreis, Artikel->Mengeneinheit, 
	       Lagerbestand, LagerbestandGebinde, OptimaleBestellmenge, OptimaleBestellmengeGebinde,
	       Bestellvorschlag, BestellvorschlagGebinde, Mindestbestand, MindestbestandGebinde,
	       VerfuegbarCalc, VerfuegbarGebindeCalc, Artikel->Lieferant1
	FROM DBAgrofresh.ArtikelLager
	WHERE Artikel->Mandant = :MandantOid 
	AND Lagerort = :Lagerort
	AND ((Artikel->Artikelgruppe = :ArtGrpOid) OR (:ArtGrpOid = ""))
	AND ((Artikel->ArtikelAktiv = 1) OR (:NurAktive = 0)) 
	AND Artikel->Lieferant1 IS NOT NULL
	AND ((Bestellvorschlag > 0) OR (BestellvorschlagGebinde > 0))
	ORDER BY Artikel->Lieferant1, Artikel->ArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtikelHogaAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61954,33772.758186</TimeCreated>

<Query name="ListeIdsByArtGrp">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID
	FROM DBAgrofresh.ArtikelHoga 
    WHERE Artikel->Mandant = :MandantOid 
    AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis 
    OR :ArtGrpBis = 0)
    ORDER BY Artikel->Artikelgruppe->ArtikelgruppenNr ASC]]></SqlQuery>
</Query>

<Query name="ListeIdsByArt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtVon:%String,ArtBis:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT ID
    FROM DBAgrofresh.ArtikelHoga 
    WHERE Artikel->Mandant = :MandantOid 
    AND (Artikel->ArtikelNr BETWEEN :ArtVon AND :ArtBis  OR
    NVL(:ArtBis, '') = '')
    ORDER BY Artikel->ArtikelNr ASC]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.ArtikelInventarAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61907,56323.659682</TimeCreated>

<Query name="ListeByDatum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,PerDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, Einheit, Produktionsart, Qualitaet, Gebinde, Abzugstyp, Lagerort, Abteilung, Vortrag, Eingang, Ausgang, Bestand, Korrektur,
	       Artikel->ArtikelNr AS ArtikelNr, DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) As Artikeltext
	       FROM DBAgrofresh.ArtikelInventar WHERE Artikel->Mandant = :MandantOid AND PerDatum = {d :PerDatum}]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.AuftragsKopfAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61324,40731.047668</TimeCreated>

<Query name="ListeAuftraegeByMandant">
<Description>
Query GetAdrAuftraege(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String=""</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid)
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, Lieferdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<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 DBAgrofresh.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="ListeAuftragsBaumLaufend">
<Description>
Query GetAdrAuftraegeLaufend(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus, Lagerort
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumAlle">
<Description>
Query GetAdrAuftraege(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,BisDatumArchiv:%Date=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus, Lagerort
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND ((NVL(:BisDatumArchiv,TO_DATE(0))=TO_DATE(0)) OR (NVL(Verbucht,0) = 0) OR (Rechnungsdatum >= {d :BisDatumArchiv}))]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumOffenLS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus, Lagerort
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND (NVL(Auftragsstatus,0) < 4 OR (Auftragsstatus = 4 AND
			(:MitMutierten<>0 AND BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert())))]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumOffenRZ">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus, Lagerort
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND (NVL(Auftragsstatus,0) < 3 OR (Auftragsstatus = 3 AND 
			(:MitMutierten<>0 AND BearbeitungsstatusRZ = DBAgrofresh.Konst_BearbeitungsstatusMutiert())))]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumMutLS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus, Lagerort
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND
			Auftragsstatus = DBAgrofresh.Konst_AuftragstatusLieferschein() AND 
			BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert()]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumMutRG">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus, Lagerort
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND
			Auftragsstatus = DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() AND 
			BearbeitungsstatusRG = DBAgrofresh.Konst_BearbeitungsstatusMutiert()]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumLoLaufend">
<Description>
Query GetAdrAuftraegeLaufend(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0  AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid)]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumLoAlle">
<Description>
Query GetAdrAuftraege(MandantOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String,BisDatumArchiv:%Date=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid)
			AND ((NVL(:BisDatumArchiv,TO_DATE(0))=TO_DATE(0)) OR (NVL(Verbucht,0) = 0) OR (Rechnungsdatum >= {d :BisDatumArchiv}))]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumLoOffenLS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND (NVL(Auftragsstatus,0) < 4 OR (Auftragsstatus = 4 AND
			(:MitMutierten<>0 AND BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert())))]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumLoOffenRZ">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND (NVL(Auftragsstatus,0) < 3 OR (Auftragsstatus = 3 AND 
			(:MitMutierten<>0 AND BearbeitungsstatusRZ = DBAgrofresh.Konst_BearbeitungsstatusMutiert())))]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumLoMutLS">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND
			Auftragsstatus = DBAgrofresh.Konst_AuftragstatusLieferschein() AND 
			BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert()]]></SqlQuery>
</Query>

<Query name="ListeAuftragsBaumLoMutRG">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,LagerOid:%String,MitMutierten:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT DISTINCT BY(Adresse) Adresse->Adresse As Adresse, Adresse As Debitor, Adresse->Adresse->Adressnummer As Adressnummer,
	        Adresse->Adresse->Name As Name, Adresse->Adresse->Plz As Plz, Adresse->Adresse->Ort As Ort, 
	        Verbucht, Auftragsstatus
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid
			AND NVL(Verbucht,0) = 0 AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND
			Auftragsstatus = DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() AND 
			BearbeitungsstatusRG = DBAgrofresh.Konst_BearbeitungsstatusMutiert()]]></SqlQuery>
</Query>

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

<Query name="ListeAuftraegeByDebitorMutLS">
<Description>
Query GetAuftraegeLaufend(MandantOid As %String, DebitorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,DebitorOid:%String,LagerOid:%String="",MitMutierten:%Boolean=1</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,
        Verbucht
		FROM DBAgrofresh.Auftragskopf
		WHERE Mandant = :MandantOid AND Adresse = :DebitorOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND
		Auftragsstatus = DBAgrofresh.Konst_AuftragstatusLieferschein() AND 
		BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert()
		AND NVL(Verbucht,0) = 0 ORDER BY Auftragsstatus, NVL(Rechnungsdatum,TO_DATE(0)) DESC, NVL(RechnungsNr,0) DESC, NVL(Lieferdatum,TO_DATE(0)) DESC, NVL(LieferscheinNr,0) DESC, Auftragsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByDebitorMutRG">
<Description>
Query GetAuftraegeLaufend(MandantOid As %String, DebitorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,DebitorOid:%String,LagerOid:%String="",MitMutierten:%Boolean=1</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,
        Verbucht
		FROM DBAgrofresh.Auftragskopf
		WHERE Mandant = :MandantOid AND Adresse = :DebitorOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND
			Auftragsstatus = DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() AND 
			BearbeitungsstatusRG = DBAgrofresh.Konst_BearbeitungsstatusMutiert()
		AND NVL(Verbucht,0) = 0 ORDER BY Auftragsstatus, NVL(Rechnungsdatum,TO_DATE(0)) DESC, NVL(RechnungsNr,0) DESC, NVL(Lieferdatum,TO_DATE(0)) DESC, NVL(LieferscheinNr,0) DESC, Auftragsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByDebitorOffenLS">
<Description>
Query GetAuftraegeLaufend(MandantOid As %String, DebitorOid As %String) As %SQLQuery</Description>
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,DebitorOid:%String,LagerOid:%String="",MitMutierten:%Boolean=1</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,
        Verbucht
		FROM DBAgrofresh.Auftragskopf
		WHERE Mandant = :MandantOid AND Adresse = :DebitorOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND (NVL(Auftragsstatus,0) < 4 OR (Auftragsstatus = 4 AND (:MitMutierten<>0 AND BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert())))
		AND NVL(Verbucht,0) = 0 ORDER BY Auftragsstatus, NVL(Rechnungsdatum,TO_DATE(0)) DESC, NVL(RechnungsNr,0) DESC, NVL(Lieferdatum,TO_DATE(0)) DESC, NVL(LieferscheinNr,0) DESC, Auftragsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeByDebitorOffenRZ">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,DebitorOid:%String,LagerOid:%String="",MitMutierten:%Boolean=1</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,
        Verbucht
  FROM DBAgrofresh.Auftragskopf
WHERE Mandant = :MandantOid AND Adresse = :DebitorOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) AND (NVL(Auftragsstatus,0) < 3 OR (Auftragsstatus = 3 AND(:MitMutierten<>0 AND BearbeitungsstatusRZ = DBAgrofresh.Konst_BearbeitungsstatusMutiert())))
AND NVL(Verbucht,0) = 0 ORDER BY Auftragsstatus, NVL(Rechnungsdatum,TO_DATE(0)) DESC, NVL(RechnungsNr,0) DESC, NVL(Lieferdatum,TO_DATE(0)) DESC, NVL(LieferscheinNr,0) DESC, Auftragsdatum DESC, 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,LagerOid:%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,
        Verbucht
		FROM DBAgrofresh.Auftragskopf
		WHERE Mandant = :MandantOid AND Adresse = :DebitorOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) 
		AND NVL(Verbucht,0) = 0 ORDER BY Auftragsstatus, NVL(Rechnungsdatum, TO_DATE(0)) DESC, NVL(RechnungsNr,0) DESC, NVL(Lieferdatum,TO_DATE(0)) DESC, NVL(LieferscheinNr,0) DESC, Auftragsdatum 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,LagerOid:%String="",BisDatumArchiv:%Date=0</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,
        Verbucht
		FROM DBAgrofresh.Auftragskopf
		WHERE Mandant = :MandantOid AND Adresse = :DebitorOid AND (NVL(:LagerOid,'')='' OR Lagerort=:LagerOid) 
		AND ((NVL(:BisDatumArchiv,TO_DATE(0))=TO_DATE(0)) OR (NVL(Verbucht,0) = 0) OR (Rechnungsdatum >= {d :BisDatumArchiv}))
		ORDER BY Verbucht, Auftragsstatus, NVL(Rechnungsdatum,TO_DATE(0)) DESC, NVL(RechnungsNr,0) DESC, NVL(Lieferdatum,TO_DATE(0)) DESC, NVL(LieferscheinNr,0) DESC, Auftragsdatum 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,
	        GebindeSaldo, TotalMitGebinde, Verbucht
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			ORDER BY Auftragsstatus, 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,
	        GebindeSaldo, TotalMitGebinde, Verbucht
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Kurzname LIKE :Kurzname
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeMwstByCodesNew">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,MandantOid:%String,Lang:%String,InklAbzuege:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			MwstCode, 
			MwstBez,
			MwstBezFakt,
			MwstSatz, 
			CASE 
				WHEN CodeMwst = DBCore.Konst_MWSTSTEUERUNGINKL() THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM((MwstBetragInkl + GebindeInkl)-((MwstBetragInkl + GebindeInkl)/(1+(MwstSatz/100))))), SQL_DOUBLE)} 
				ELSE
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM((MwstBetragExkl + Gebinde)*MwstSatz/100)), SQL_DOUBLE)}
			END AS MwstBetrag, 
			CASE 
				WHEN CodeMwst = DBCore.Konst_MWSTSTEUERUNGINKL()  THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl/(1+(MwstSatz/100)))), SQL_DOUBLE)} 
				ELSE
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragExkl)), SQL_DOUBLE)}
			END AS MwstBetragExkl,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM((MwstBetragExklFW + GebindeFW)*MwstSatzExport/100),2), SQL_DOUBLE)} AS MwstBetragFW,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM(MwstBetragExklFW + GebindeFW), 2), SQL_DOUBLE)} AS MwstBetragExklFW, 
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(Gebinde)), SQL_DOUBLE)} AS Gebinde,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM(GebindeFW),2), SQL_DOUBLE)} AS GebindeFW
	FROM (
	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst->ID, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			MwstSatz, 
			MwstSatzExport,
			Nettobetrag2ExklMwstEW AS MwstBetragExkl,
			Nettobetrag2InklMwstEW AS MwstBetragInkl,
			Nettobetrag2ExklMwstFW AS MwstBetragExklFW, 
			0 AS Gebinde,
			0 AS GebindeFW,
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			Auftragskopf->CodeMwst AS CodeMwst
	FROM DBAgrofresh.Auftragspos
	WHERE Auftragskopf = :AuftragOid AND 
			Mwst IS NOT NULL 
			
	UNION ALL SELECT    
			Abzug1Mwst As Mwst,
			Abzug1Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug1Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug1Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug1MwstSatz AS MwstSatz,
			Abzug1MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE :InklAbzuege = 1 AND ID =:AuftragOid AND not NVL(Abzug1Typ,0) = 0
			
	UNION ALL SELECT    
			Abzug2Mwst As Mwst,
			Abzug2Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug2Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug2Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug2MwstSatz AS MwstSatz,
			Abzug2MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE :InklAbzuege = 1 AND ID =:AuftragOid AND not NVL(Abzug2Typ,0) = 0
			
	UNION ALL SELECT    
			Abzug3Mwst As Mwst,
			Abzug3Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug3Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug3Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug3MwstSatz AS MwstSatz,
			Abzug3MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE :InklAbzuege = 1 AND ID =:AuftragOid AND not NVL(Abzug3Typ,0) = 0

	UNION ALL SELECT Mwst AS Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, :MandantOid, :Lang, Datum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst->ID, :MandantOid, :Lang, Datum) AS MwstBezFakt,
			MwstSatz AS MwstSatz, 
			{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Datum),SQL_DOUBLE)}  AS MwstSatzExport,
			
			0 AS MwstBetragExkl,
			0 AS MwstBetragInkl,
			0 AS MwstBetragExklFW,
			
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID), SQL_DOUBLE)} AS Gebinde,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID), SQL_DOUBLE)} AS GebindeFW,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID), SQL_DOUBLE)} AS GebindeInkl,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID), SQL_DOUBLE)} AS GebindeInklFW,
			Mwst->SteuerungInklExkl AS CodeMwst
	FROM DBAgrofresh.GebDetail
	WHERE Auftrag =:AuftragOid AND
			DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0 AND 
			Mwst IS NOT NULL)
	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->Adressnummer 		AS "LAdresse.Adressnummer", 
		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->UstIdNr As "LAdresse.UstIdNr",
		Adresse->Adresse->Telefon1 	As "LAdresse.Telefon",
		Adresse->Adresse->Mobil 	As "LAdresse.Natel",
		Adresse->Adresse->Fax 		As "LAdresse.Fax",
		AuftragValidiert, 
		AuftragsNr, 
		Auftragsdatum,
		Auftragsstatus, 
		BestellNr,
		Gebietscode->Code AS "Gebiet.Nr", 
		DBAdressen_SD.Gebiet_GetGebietstextClass(Gebietscode, Mandant, :Lang) AS "Gebiet.Text",	
		Bestellart->PositionsNr AS "Bestellart.Nr", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Bestellart, Mandant, :Lang) AS "Bestellart.Text",
		CASE WHEN Mitarbeiter = '' THEN
			Besteller
			ELSE
		DBAdressen.Adresse_GetName(2, Mitarbeiter->Name, Mitarbeiter->Vorname,:firstVorname) 
		END   							AS "Besteller",  
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(ID), SQL_DOUBLE)} AS BetragEWExklMwst, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(ID), SQL_DOUBLE)} AS BetragEWInklMwst, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragExklMwstFWClass(ID), SQL_DOUBLE)} AS BetragFWExklMwst, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(ID), SQL_DOUBLE)} AS BetragFWInklMwst, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstFWClass(ID), SQL_DOUBLE)} AS BetragMwstFW, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstByAuftrClass(ID), SQL_DOUBLE)} AS BetragMwst, 
		{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(ID), 0) - NVL(DBAgrofresh.Auftragskopf_GetWarenaufwandByAuftrClass(ID), 0) , SQL_DOUBLE)} AS BruttoGewinn, 
		CodeMwst, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(ID), SQL_DOUBLE)} AS GebindeSaldo, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(ID), SQL_DOUBLE)} AS GebindeMwstBetrag,
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeMwstFWByAuftrClass(ID), SQL_DOUBLE)} AS GebindeMwstBetragFW,
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoFWByAuftrClass(ID), SQL_DOUBLE)} AS GebindeSaldoFW,
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtBruttoClass(ID), SQL_DOUBLE)} AS GewichtBrutto, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtNettoClass(ID), SQL_DOUBLE)} AS GewichtNetto, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtTaraClass(ID), SQL_DOUBLE)} AS GewichtTara, 
		Fusstext, 
		Fusstext1, 
		Fusstext2, 
		Fusstext3, 
		Fusstext4, 
		Kurs, 
		Kurseinheit, 
		Lieferart->PositionsNr AS "Lieferart.Nr", 
		DBAgrofresh_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, 
		Skonto, 
		BearbeitungsstatusAU, 
		StatusAutoVerarbeitung, 
		BearbeitungsstatusBZ, 
		BearbeitungsstatusLS, 
		BearbeitungsstatusOF, 
		BearbeitungsstatusRG, 
		BearbeitungsstatusRZ, 
		{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(ID), 0) + NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(ID), 0)  + NVL(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(ID), 0) - NVL(Skonto,0) , SQL_DOUBLE)} AS TotalMitGebinde, 
		{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoFWByAuftrClass(ID), 0) + NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstFWByAuftrClass(ID), 0)  + NVL(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(ID), 0) - NVL(SkontoFW,0) , SQL_DOUBLE)} AS TotalMitGebindeFW,
		VerteillisteNr, 
		Vertreter, 
		DBAdressen_SD.Vertreter_GetNameClass(Vertreter, Mandant, :Lang) As VertreterName,
		Waehrung, 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetWarenaufwandByAuftrClass(ID), SQL_DOUBLE)} AS Warenaufwand, 
		
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresse->Adresse->Adressnummer ELSE Zahladresse->Adresse->Adressnummer END AS "RAdresse.Adressnummer", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Anrede ELSE Zahladresse->Adresse->Anrede END AS "RAdresse.Anrede", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Name ELSE DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, :firstVorname)  END AS "RAdresse.Name", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresszeile1 ELSE DBAdressen.Adresse_GetZusatz1(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->VornameZusatz1) END AS "RAdresse.Adresszeile1", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresszeile2 ELSE Zahladresse->Adresse->Zusatz2 END AS "RAdresse.Adresszeile2", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresszeile3 ELSE Zahladresse->Adresse->Strasse || ' ' || 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 UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresse->UstIdNr ELSE Zahladresse->UstIdNr END AS "RAdresse.UstIdNr", 
		
		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 Adresszeile1 AND
					Zahladresse->Adresse->Zusatz2 LIKE Adresszeile2 AND
					((Zahladresse->Adresse->Strasse LIKE Adresszeile3) OR (Zahladresse->Adresse->Strasse ||' '|| NVL(Zahladresse->Adresse->Hausnummer,'') LIKE NVL(Adresszeile3,''))) AND
					Zahladresse->Adresse->Plz LIKE Plz AND
					Zahladresse->Adresse->Ort LIKE Ort )
					OR UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%')
				THEN
					CONVERT(BIT,1)
			ELSE
					CONVERT(BIT,0)
		END AS AdressenEqual,
					
		Zahlungskondition, 
		Zahlungskondition->Code AS "ZahlungskonditionCode",
		DBDebiKredi_SD.DZahlungskond_GetBezeichnungClass(Zahlungskondition, Mandant, :Lang) As "ZahlungskonditionText",
		Verbucht,
		Lagerort->PositionsNr AS "Lagerort.Nr", 
		Lagerort->Telefon AS "Lagerort.Telefon",
		Lagerort->Fax AS "Lagerort.Fax",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Lagerort, Mandant, :Lang) AS "Lagerort.Text"
	FROM DBAgrofresh.Auftragskopf
	WHERE %ID=:AuftragsOid]]></SqlQuery>
</Query>

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

<Query name="ListeSammelrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgDatum:%Date,bisRgDatum:%Date,vonAuftragsstatus:%Integer,bisAuftragsstatus:%Integer,zahladrDebiOid:%String,nurFreigabe:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID 
	FROM DBAgrofresh.Auftragskopf 
	WHERE Mandant=:MandantOid AND 
			Auftragsstatus >= :vonAuftragsstatus AND
			Auftragsstatus <= :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) <> DBAgrofresh.Konst_StatusAutoLaufAuftragGesperrtG() AND
			(:nurFreigabe = 0 OR NVL(StatusAutoVerarbeitung,0) = DBAgrofresh.Konst_StatusAutoLaufFreigabeRG())]]></SqlQuery>
</Query>

<Query name="ListeSammelrechnungLiefer">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonRgDatum:%Date,bisRgDatum:%Date,vonAuftragsstatus:%Integer,bisAuftragsstatus:%Integer,zahladrDebiOid:%String,lieferadrDebiOid:%String,nurFreigabe:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID 
	FROM DBAgrofresh.Auftragskopf 
	WHERE Mandant=:MandantOid AND 
			Auftragsstatus >= :vonAuftragsstatus AND
			Auftragsstatus <= :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) <> DBAgrofresh.Konst_StatusAutoLaufAuftragGesperrtG() AND
			(:nurFreigabe = 0 OR NVL(StatusAutoVerarbeitung,0) = DBAgrofresh.Konst_StatusAutoLaufFreigabeRG())]]></SqlQuery>
</Query>

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

<Query name="ListeVerteillisteWiederholung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,verteilNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID 
	FROM DBAgrofresh.Auftragskopf 
	WHERE Mandant=:MandantOid AND VerteillisteNr = :verteilNr</SqlQuery>
</Query>

<Query name="ListeMwstCodesSammelrechnung">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String,Lang:%String,AbzugBisArtikelGr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	
	SELECT Mwst, 
			MwstCode, 
			MwstBez,
			MwstBezFakt,
			MwstSatz, 
			CASE 
				WHEN CodeMwst = DBCore.Konst_MWSTSTEUERUNGINKL() THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM((MwstBetragInkl + GebindeInkl)-((MwstBetragInkl + GebindeInkl)/(1+(MwstSatz/100))))), SQL_DOUBLE)} 
				ELSE
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM((MwstBetragExkl + Gebinde)*MwstSatz/100)), SQL_DOUBLE)}
			END AS MwstBetrag, 
			CASE 
				WHEN CodeMwst = DBCore.Konst_MWSTSTEUERUNGINKL()  THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl/(1+(MwstSatz/100)))), SQL_DOUBLE)} 
				ELSE
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragExkl)), SQL_DOUBLE)}
			END AS MwstBetragExkl,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM((MwstBetragExklFW + GebindeFW)*MwstSatzExport/100),2), SQL_DOUBLE)} AS MwstBetragFW,
			{fn CONVERT(DBUtils.NumberUtils_Round(:MandantOid,SUM(MwstBetragExklFW + GebindeFW)), SQL_DOUBLE)} AS MwstBetragExklFW, 
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(Gebinde)), SQL_DOUBLE)} AS Gebinde,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM(GebindeFW),2), SQL_DOUBLE)} AS GebindeFW
	FROM (
	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst, :MandantOidt, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst,:MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			MwstSatz, 
			MwstSatzExport,
			Nettobetrag2ExklMwstEW AS MwstBetragExkl,
			Nettobetrag2InklMwstEW AS MwstBetragInkl,
			Nettobetrag2MwstbetragFW AS MwstBetragExklFW, 
			0 AS Gebinde,
			0 AS GebindeFW,
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			Auftragskopf->CodeMwst AS CodeMwst
	FROM DBAgrofresh.Auftragspos
	WHERE Auftragskopf->RechnungsNr=:RgNr AND 
			Auftragskopf->Mandant=:MandantOid AND
			Mwst IS NOT NULL 
			
	UNION ALL SELECT    
			Abzug1Mwst As Mwst,
			Abzug1Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug1Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug1Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug1MwstSatz AS MwstSatz,
			Abzug1MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE RechnungsNr=:RgNr AND 
			Mandant=:MandantOid AND not NVL(Abzug1Typ,0) = 0
			GROUP BY RechnungsNr
			
	UNION ALL SELECT    
			Abzug2Mwst As Mwst,
			Abzug2Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug2Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug2Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug2MwstSatz AS MwstSatz,
			Abzug2MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE RechnungsNr=:RgNr AND 
			Mandant=:MandantOid AND not NVL(Abzug2Typ,0) = 0
			GROUP BY RechnungsNr
			
	UNION ALL SELECT    
			Abzug3Mwst As Mwst,
			Abzug3Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug3Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug3Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug3MwstSatz AS MwstSatz,
			Abzug3MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE RechnungsNr=:RgNr AND 
			Mandant=:MandantOid AND not NVL(Abzug3Typ,0) = 0
			GROUP BY RechnungsNr

	UNION ALL SELECT Mwst AS Mwst, 
			(SELECT MwstCode  FROM DBFibu_SD.Mwst WHERE ID=MWST) AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(GebKontr->Gebinde->MwstVK, :MandantOid, :Lang, Datum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(GebKontr->Gebinde->MwstVK, :MandantOid, :Lang, Datum) AS MwstBezFakt,
			MwstSatz AS MwstSatz, 
			{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Datum), SQL_DOUBLE)} AS MwstSatzExport,
			
			0 AS MwstBetragExkl,
			0 AS MwstBetragInkl,
			0 AS MwstBetragExklFW,
			
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID), SQL_DOUBLE)} AS Gebinde,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID), SQL_DOUBLE)} AS GebindeFW,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID), SQL_DOUBLE)} AS GebindeInkl,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID), SQL_DOUBLE)} AS GebindeInklFW,
			GebKontr->Gebinde->MwstEK->SteuerungInklExkl AS CodeMwst
	FROM DBAgrofresh.GebDetail
	WHERE Auftrag->RechnungsNr=:RgNr AND 
			Auftrag->Mandant=:MandantOid AND
			DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0)
	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeMwstCodesVerteilliste">
<Type>%SQLQuery</Type>
<FormalSpec>VlNr:%Integer,MandantOid:%String,Lang:%String,AbzugBisArtikelGr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	
	SELECT Mwst, 
			MwstCode, 
			MwstBez,
			MwstBezFakt,
			MwstSatz, 
			CASE 
				WHEN CodeMwst = DBCore.Konst_MWSTSTEUERUNGINKL() THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM((MwstBetragInkl + GebindeInkl)-((MwstBetragInkl + GebindeInkl)/(1+(MwstSatz/100))))), SQL_DOUBLE)} 
				ELSE
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM((MwstBetragExkl + Gebinde)*MwstSatz/100)), SQL_DOUBLE)}
			END AS MwstBetrag, 
			CASE 
				WHEN CodeMwst = DBCore.Konst_MWSTSTEUERUNGINKL()  THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl/(1+(MwstSatz/100)))), SQL_DOUBLE)} 
				ELSE
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragExkl)), SQL_DOUBLE)}
			END AS MwstBetragExkl,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM((MwstBetragExklFW + GebindeFW)*MwstSatzExport/100),2), SQL_DOUBLE)} AS MwstBetragFW,
			{fn CONVERT(DBUtils.NumberUtils_Round(:MandantOid,SUM(MwstBetragExklFW + GebindeFW)), SQL_DOUBLE)} AS MwstBetragExklFW, 
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(Gebinde)), SQL_DOUBLE)} AS Gebinde,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM(GebindeFW),2), SQL_DOUBLE)} AS GebindeFW
	FROM (
	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(Mwst->ID, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Mwst->ID, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			MwstSatz, 
			MwstSatzExport,
			Nettobetrag2ExklMwstEW AS MwstBetragExkl,
			Nettobetrag2InklMwstEW AS MwstBetragInkl,
			Nettobetrag2MwstbetragFW AS MwstBetragExklFW, 
			0 AS Gebinde,
			0 AS GebindeFW,
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			Auftragskopf->CodeMwst AS CodeMwst
	FROM DBAgrofresh.Auftragspos
	WHERE Auftragskopf->VerteillisteNr=:VlNr AND 
			Auftragskopf->Mandant=:MandantOid AND
			Mwst IS NOT NULL 
			
	UNION ALL SELECT    
			Abzug1Mwst As Mwst,
			Abzug1Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug1Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug1Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug1MwstSatz AS MwstSatz,
			Abzug1MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE VerteillisteNr=:VlNr AND 
			Mandant=:MandantOid AND not NVL(Abzug1Typ,0) = 0
			GROUP BY VerteillisteNr
			
	UNION ALL SELECT    
			Abzug2Mwst As Mwst,
			Abzug2Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug2Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug2Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug2MwstSatz AS MwstSatz,
			Abzug2MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE VerteillisteNr=:VlNr AND 
			Mandant=:MandantOid AND not NVL(Abzug2Typ,0) = 0
			GROUP BY VerteillisteNr
			
	UNION ALL SELECT    
			Abzug3Mwst As Mwst,
			Abzug3Mwst->MwstCode AS MwstCode,
			DBFibu_SD.Mwst_GetBezeichnungClass(Abzug3Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(Abzug3Mwst, :MandantOid, :Lang, Lieferdatum) AS MwstBezFakt,
			Abzug3MwstSatz AS MwstSatz,
			Abzug3MwstSatzExport AS MwstSatzExport,
				
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			
			0 AS Gebinde,
			0 AS GebindeFW, 
			0 AS GebindeInkl,
			0 AS GebindeInklFW, 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE VerteillisteNr=:VlNr AND 
			Mandant=:MandantOid AND not NVL(Abzug3Typ,0) = 0
			GROUP BY VerteillisteNr

	UNION ALL SELECT Mwst AS Mwst, 
			(SELECT MwstCode  FROM DBFibu_SD.Mwst WHERE ID=MWST) AS MwstCode, 
			DBFibu_SD.Mwst_GetBezeichnungClass(GebKontr->Gebinde->MwstVK->ID, :MandantOid, :Lang, Datum) AS MwstBez,
			DBFibu_SD.Mwst_GetBezeichnungFaktClass(GebKontr->Gebinde->MwstVK->ID, :MandantOid, :Lang, Datum) AS MwstBezFakt,
			MwstSatz AS MwstSatz, 
			{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Datum), SQL_DOUBLE)} AS MwstSatzExport,
			
			0 AS MwstBetragExkl,
			0 AS MwstBetragInkl,
			0 AS MwstBetragExklFW,
			
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID), SQL_DOUBLE)} AS Gebinde,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID), SQL_DOUBLE)} AS GebindeFW,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID), SQL_DOUBLE)} AS GebindeInkl,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID), SQL_DOUBLE)} AS GebindeInklFW,
			GebKontr->Gebinde->MwstEK->SteuerungInklExkl AS CodeMwst
	FROM DBAgrofresh.GebDetail
	WHERE Auftrag->VerteillisteNr=:VlNr AND 
			Auftrag->Mandant=:MandantOid AND
			DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0)
	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeAbzuegeSR">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Abzug1Typ, Abzug2Typ, Abzug3Typ,
	Abzug1Prozent, Abzug2Prozent, Abzug3Prozent,
	Abzug1Text AS Abzug1Text ,  
	Abzug2Text AS Abzug2Text, 
	Abzug3Text AS Abzug3Text ,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) * Abzug1Prozent / 100), SQL_DOUBLE)} as BetragAbzug1EWExkl, 
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) * Abzug2Prozent / 100), SQL_DOUBLE)} as BetragAbzug2EWExkl, 
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) * Abzug3Prozent / 100), SQL_DOUBLE)} as BetragAbzug3EWExkl, 
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) * Abzug1Prozent / 100, 2), SQL_DOUBLE)} as BetragAbzug1FWExkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) * Abzug2Prozent / 100, 2), SQL_DOUBLE)} as BetragAbzug2FWExkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) * Abzug3Prozent / 100, 2), SQL_DOUBLE)} as BetragAbzug3FWExkl,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) * Abzug1Prozent / 100), SQL_DOUBLE)} as BetragAbzug1EWInkl,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) * Abzug2Prozent / 100), SQL_DOUBLE)} as BetragAbzug2EWInkl,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) * Abzug3Prozent / 100), SQL_DOUBLE)} as BetragAbzug3EWInkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugInklMwstFWClass(ID), 0)) * Abzug1Prozent / 100, 2), SQL_DOUBLE)} as BetragAbzug1FWInkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugInklMwstFWClass(ID), 0)) * Abzug2Prozent / 100, 2), SQL_DOUBLE)} as BetragAbzug2FWInkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugInklMwstFWClass(ID), 0)) * Abzug3Prozent / 100, 2), SQL_DOUBLE)} as BetragAbzug3FWInkl,
	
	SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) as BetragForAbzugEWExklMwst,
	SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) as BetragForAbzugEWInklMwst,
	SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) as BetragForAbzugFWExklMwst
	FROM DBAgrofresh.Auftragskopf
	WHERE RechnungsNr=:RgNr AND 
			Mandant=:MandantOid
	GROUP BY RechnungsNr</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,
	        GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst,
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBAgrofresh.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,
	        GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst,
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND Adresse->Adresse->Adressnummer LIKE :AdressNr
			AND NVL(Verbucht, 0) = 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,
	        GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst,
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND { fn LCASE(Adresse->Adresse->Kurzname)} LIKE { fn LCASE(:Kurzname_'%')}
			AND NVL(Verbucht,0) = 0
			ORDER BY Auftragsstatus, Rechnungsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeSearchResultByBestellNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,BestellNr:%String,MitVerbuchten:%Boolean</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,
	        GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst,
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBAgrofresh.Auftragskopf
			WHERE Mandant = :MandantOid AND BestellNr = :BestellNr
			AND ((NVL(Verbucht,0) = 0) OR (:MitVerbuchten = 1))
			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,
	        GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst,
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBAgrofresh.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,
	        GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst,
	        BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, 
	        BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ
	 		FROM DBAgrofresh.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="ListeAuftraegeSeriendruck">
<Type>%SQLQuery</Type>
<FormalSpec>vonNummer:%Integer,bisNummer:%Integer,vonDatum:%Date,bisDatum:%Date,sachbearbeiterNr:%Integer,auftragsstatus:%Integer,statusAutoVerarbeitung:%Integer,mutierte:%Integer,MandantOid:%String,lagerortOid:%Integer,stufengleich:%Integer,auftragsstatusRG:%Integer,auftragsstatusLS:%Integer,nurLS:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
	   Adresse->Adresse as Adresse,
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusAU) as AUGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusLS) as LSGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusOF) as OFGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) as RGGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRZ) as RZGedruckt
       FROM DBAgrofresh.Auftragskopf
       WHERE Mandant = :MandantOid 
       AND ((Auftragsdatum BETWEEN {d :vonDatum} AND {d :bisDatum} AND :auftragsstatusLS <> :auftragsstatus)
       		OR (Lieferdatum BETWEEN {d :vonDatum} AND {d :bisDatum} AND :auftragsstatusLS = :auftragsstatus))
       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 ((:nurLS = 1 And Auftragsstatus = :auftragsstatusLS) or (:nurLS = 0))
       AND (:sachbearbeiterNr = 0 OR Sachbearbeiter->Nummer = :sachbearbeiterNr)
       AND (:statusAutoVerarbeitung = DBAgrofresh.Konst_StatusAutoLaufKeinStatus() OR StatusAutoVerarbeitung = :statusAutoVerarbeitung)
       AND NVL(StatusAutoVerarbeitung,0) <> DBAgrofresh.Konst_StatusAutoLaufAuftragGesperrtG()
       AND NVL(Verbucht,0) = 0 
       AND (:lagerortOid = 0 OR Lagerort = :lagerortOid)
       ORDER BY Adresse->Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeAuftraegeSeriendruckSR">
<Type>%SQLQuery</Type>
<FormalSpec>vonNummer:%Integer,bisNummer:%Integer,vonDatum:%Date,bisDatum:%Date,sachbearbeiterNr:%Integer,statusAutoVerarbeitung:%Integer,MandantOid:%String,lagerortOid:%Integer,nurLS:%Boolean,nurFreigabe:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
	   Adresse->Adresse as Adresse,
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusAU) as AUGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusLS) as LSGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusOF) as OFGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRG) as RGGedruckt, 
       DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRZ) as RZGedruckt
       FROM DBAgrofresh.Auftragskopf
       WHERE Mandant = :MandantOid 
       AND Lieferdatum BETWEEN {d :vonDatum} AND {d :bisDatum}
       AND AuftragsNr BETWEEN :vonNummer AND :bisNummer 
       AND NVL(Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusSammelrechnung()
       AND ((:nurLS = 1 And Auftragsstatus = DBAgrofresh.Konst_AuftragstatusLieferschein()) or (:nurLS = 0))
       AND (:sachbearbeiterNr = 0 OR Sachbearbeiter->Nummer = :sachbearbeiterNr)
       AND (:statusAutoVerarbeitung = DBAgrofresh.Konst_StatusAutoLaufKeinStatus() OR StatusAutoVerarbeitung = :statusAutoVerarbeitung)
       AND NVL(StatusAutoVerarbeitung,0) <> DBAgrofresh.Konst_StatusAutoLaufAuftragGesperrtG()
       AND NVL(Verbucht,0) = 0
       AND (:nurFreigabe = 0 OR NVL(StatusAutoVerarbeitung,0) = DBAgrofresh.Konst_StatusAutoLaufFreigabeRG())
       AND (:lagerortOid = 0 OR Lagerort = :lagerortOid)
       ORDER BY Adresse->Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeByMandantSelExport">
<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 DISTINCT %ID
	 		FROM DBAgrofresh.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 AND CodeMwst = DBCore.Konst_MWSTSTEUERUNGEXPORT()
			ORDER BY Auftragsdatum DESC, AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftragVerteilliste">
<Type>%SQLQuery</Type>
<FormalSpec>VerteillisteNr:%Integer,firstVorname:%Boolean,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT
		ID,
		Adresse->Adresse->Adressnummer 		AS "LAdresse.Adressnummer", 
		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->UstIdNr As "LAdresse.UstIdNr",
		Adresse->Adresse->Telefon1 	As "LAdresse.Telefon",
		Adresse->Adresse->Mobil 	As "LAdresse.Natel",
		Adresse->Adresse->Fax 		As "LAdresse.Fax",
		AuftragValidiert, 
		AuftragsNr, 
		Auftragsdatum,
		Auftragsstatus, 
		BestellNr, 		
		Bestellart->PositionsNr AS "Bestellart.Nr", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Bestellart, Mandant, :Lang) AS "Bestellart.Text", 
		Besteller, 
		SUM(BetragEWExklMwst) AS BetragEWExklMwst, 
		SUM(BetragEWInklMwst) AS BetragEWInklMwst, 
		SUM(BetragFWExklMwst) AS BetragFWExklMwst, 
		SUM(BetragFWInklMwst) AS BetragFWInklMwst, 
		SUM(BetragMwstFW) AS BetragMwstFW, 
		SUM(BetragMwst) AS BetragMwst, 
		SUM(BruttoGewinn) AS BruttoGewinn, 
		CodeMwst, 
		Gebietscode, 
		SUM(GebindeSaldo) AS GebindeSaldo, 
		SUM(GebindeMwstBetrag) AS GebindeMwstBetrag, 
		SUM(GebindeMwstBetragFW) AS GebindeMwstBetragFW, 
		SUM(GebindeSaldoFW) AS GebindeSaldoFW, 
		SUM(GewichtBrutto) AS GewichtBrutto, 
		SUM(GewichtNetto) AS GewichtNetto, 
		SUM(GewichtTara) AS GewichtTara,
		Kurs, 
		Kurseinheit, 
		Lieferart->PositionsNr AS "Lieferart.Nr", 
		DBAgrofresh_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, 
		Skonto, 
		BearbeitungsstatusAU, 
		StatusAutoVerarbeitung, 
		BearbeitungsstatusBZ, 
		BearbeitungsstatusLS, 
		BearbeitungsstatusOF, 
		BearbeitungsstatusRG, 
		BearbeitungsstatusRZ, 
		SUM(TotalMitGebinde) AS TotalMitGebinde,
		SUM(TotalMitGebindeFW) AS TotalMitGebindeFW,
		{fn CONVERT(:VerteillisteNr, SQL_INTEGER)} AS VerteillisteNr, 
		Vertreter, 
		Waehrung, 
		SUM(Warenaufwand) AS Warenaufwand,
		
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresse->Adresse->Adressnummer ELSE Zahladresse->Adresse->Adressnummer END AS "RAdresse.Adressnummer", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Anrede ELSE Zahladresse->Adresse->Anrede END AS "RAdresse.Anrede", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Name ELSE DBAdressen.Adresse_GetName(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->Name, Zahladresse->Adresse->VornameZusatz1, :firstVorname)  END AS "RAdresse.Name", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresszeile1 ELSE DBAdressen.Adresse_GetZusatz1(Zahladresse->Adresse->Adresscode, Zahladresse->Adresse->VornameZusatz1) END AS "RAdresse.Adresszeile1", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresszeile2 ELSE Zahladresse->Adresse->Zusatz2 END AS "RAdresse.Adresszeile2", 
		CASE WHEN UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresszeile3 ELSE Zahladresse->Adresse->Strasse  || ' ' || 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 UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%') THEN 
			Adresse->UstIdNr ELSE Zahladresse->UstIdNr END AS "RAdresse.UstIdNr", 
		
		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 Adresszeile1 AND
					Zahladresse->Adresse->Zusatz2 LIKE Adresszeile2 AND
					Zahladresse->Adresse->Strasse LIKE Adresszeile3 AND
					Zahladresse->Adresse->Plz LIKE Plz AND
					Zahladresse->Adresse->Ort LIKE Ort )
					OR UPPER(Zahladresse->Adresse->Name) like UPPER('Divers%')
				THEN
					CONVERT(BIT,1)
			ELSE
					CONVERT(BIT,0)
		END AS AdressenEqual,
					
		Zahlungskondition, 
		Zahlungskondition->Code AS "ZahlungskonditionCode",
		DBDebiKredi_SD.DZahlungskond_GetBezeichnungClass(Zahlungskondition, Mandant, :Lang) As "ZahlungskonditionText",
		Verbucht,
		Lagerort->PositionsNr AS "Lagerort.Nr", 
		Lagerort->Telefon AS "Lagerort.Telefon",
		Lagerort->Fax AS "Lagerort.Fax",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Lagerort, Mandant, :Lang) AS "Lagerort.Text"
	FROM DBAgrofresh.Auftragskopf
	WHERE VerteillisteNr=:VerteillisteNr Group by VerteillisteNr]]></SqlQuery>
</Query>

<Query name="ListeAbzuegeVL">
<Type>%SQLQuery</Type>
<FormalSpec>VlNr:%Integer,MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Abzug1Typ, Abzug2Typ, Abzug3Typ,
	Abzug1Prozent, Abzug2Prozent, Abzug3Prozent,
	Abzug1Text AS Abzug1Text , 
	Abzug2Text AS Abzug2Text, 
	Abzug3Text AS Abzug3Text ,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) * Abzug1Prozent / 100), SQL_DOUBLE)} as BetragAbzug1EWExkl, 
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) * Abzug2Prozent / 100), SQL_DOUBLE)} as BetragAbzug2EWExkl, 
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) * Abzug3Prozent / 100), SQL_DOUBLE)} as BetragAbzug3EWExkl, 
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) * Abzug1Prozent / 100,2), SQL_DOUBLE)} as BetragAbzug1FWExkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) * Abzug2Prozent / 100,2), SQL_DOUBLE)} as BetragAbzug2FWExkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) * Abzug3Prozent / 100,2), SQL_DOUBLE)} as BetragAbzug3FWExkl,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) * Abzug1Prozent / 100), SQL_DOUBLE)} as BetragAbzug1EWInkl,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) * Abzug2Prozent / 100), SQL_DOUBLE)} as BetragAbzug2EWInkl,
	{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) * Abzug3Prozent / 100), SQL_DOUBLE)} as BetragAbzug3EWInkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugInklMwstFWClass(ID), 0)) * Abzug1Prozent / 100,2), SQL_DOUBLE)} as BetragAbzug1FWInkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugInklMwstFWClass(ID), 0)) * Abzug2Prozent / 100,2), SQL_DOUBLE)} as BetragAbzug2FWInkl,
	{fn CONVERT(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugInklMwstFWClass(ID), 0)) * Abzug3Prozent / 100,2), SQL_DOUBLE)} as BetragAbzug3FWInkl,

	SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)) as BetragForAbzugEWExklMwst,
	SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)) as BetragForAbzugEWInklMwst,
	SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)) as BetragForAbzugFWExklMwst
	FROM DBAgrofresh.Auftragskopf
	WHERE VerteillisteNr=:VlNr AND 
	Mandant=:MandantOid
	GROUP BY VerteillisteNr</SqlQuery>
</Query>

<Query name="VbRechnungsnummernJahr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MandJahrOid:%String,vonNr:%Integer,bisNr:%Integer,vonDatum:%Date,bisDatum:%Date,NurBarzahlungen:%Integer,BarzahlungskondOid:%String,journalNr:%Integer,AbteilungOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Rechnungsnr, 
	   Zahlungskondition->Code As ZahlungskonditionCode,
	   Zahladresse->FibuKonto As ZahladresseFibuKonto,
	   Zahladresse->FibuKonto->KontoNr As ZahlAdresseFibuKontoKontoNr,
	   Zahladresse->Adresse->Kundenkategorie->VKFibuKonto As ZahladresseKundenkatFibuKontoVK,
	   Zahladresse->Adresse->Kundenkategorie->VKFibuKonto->KontoNr As ZahladresseKundenkatFibuKontoVKKontoNr,
	   Zahladresse->Adresse->Kundenkategorie As ZahladresseKundenkat,
	   Zahladresse->Adresse->Kundenkategorie->Code As ZahladresseKundenkatCode,
	   Zahladresse,
	   CodeMwst,
	   Rechnungsdatum,
	   Waehrung,
	   Waehrung->FWCode AS WaehrungCode,
	   Kurseinheit,
	   Kurs,
	   Vertreter,
	   Zahlungskondition,
	   Abzug1Typ,
	   Abzug1Prozent,
	   Abzug1Text,
	   Abzug1FibuKonto,
	   DBFibu.Konto_GetSollClass(:MandJahrOid,Abzug1FibuKonto) As Abzug1FibuKontoSoll,
	   Abzug1FibuKonto->KontoNr As Abzug1FibuKontoNr,
	   Abzug1Mwst AS Abzug1Mwst,
	   Abzug1Mwst->MwstCode AS Abzug1MwstCode,
	   Abzug1MwstSatz AS Abzug1MwstSatz,
	   Abzug1MwstSatzExport AS Abzug1MwstSatzExport,
	   DBFibu_SD.MwstJahr_GetExportKontoByMwstDateClass(Abzug1Mwst, Lieferdatum) AS Abzug1FibuKontoExport,
	   Abzug2Typ,
	   Abzug2Prozent,
	   Abzug2Text,
	   Abzug2FibuKonto,
	   DBFibu.Konto_GetSollClass(:MandJahrOid,Abzug2FibuKonto) As Abzug2FibuKontoSoll,
	   Abzug2FibuKonto->KontoNr As Abzug2FibuKontoNr,
	   Abzug2Mwst AS Abzug2Mwst,
	   Abzug2Mwst->MwstCode AS Abzug2MwstCode,
	   Abzug2MwstSatz AS Abzug2MwstSatz,
	   Abzug2MwstSatzExport AS Abzug2MwstSatzExport,
	   DBFibu_SD.MwstJahr_GetExportKontoByMwstDateClass(Abzug2Mwst, Lieferdatum) AS Abzug2FibuKontoExport,
	   Abzug3Typ,
	   Abzug3Prozent,
	   Abzug3Text,
	   Abzug3FibuKonto,
	   DBFibu.Konto_GetSollClass(:MandJahrOid,Abzug3FibuKonto) As Abzug3FibuKontoSoll,
	   Abzug3FibuKonto->KontoNr As Abzug3FibuKontoNr,
	   Abzug3Mwst AS Abzug3Mwst,
	   Abzug3Mwst->MwstCode AS Abzug3MwstCode,
	   Abzug3MwstSatz AS Abzug3MwstSatz,
	   Abzug3MwstSatzExport AS Abzug3MwstSatzExport,
	   DBFibu_SD.MwstJahr_GetExportKontoByMwstDateClass(Abzug3Mwst, Lieferdatum) AS Abzug3FibuKontoExport,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(ID),0)) AS BetragEWInklMwst,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragMwstByAuftrClass(ID),0)) AS BetragMwst,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(ID),0)) AS BetragEWExklMwst,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(ID),0)) AS BetragFWInklMwst,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragMwstFWClass(ID),0)) AS BetragMwstFW,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragExklMwstFWClass(ID),0)) AS BetragFWExklMwst,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(ID),0)) AS GebindeSaldo,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(ID),0)) AS GebindeMwstBetrag,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoFWByAuftrClass(ID),0)) AS GebindeSaldoFW,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstFWByAuftrClass(ID),0)) AS GebindeMwstBetragFW,
	   SUM(Skonto) AS Skonto,
	   SUM(SkontoFW) AS SkontoFW,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(ID),0) + NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(ID),0) + NVL(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(ID),0) - NVL(Skonto,0)) AS TotalMitGebinde,
	   SUM(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoFWByAuftrClass(ID),0) + NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstFWByAuftrClass(ID),0) + NVL(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(ID),0) - NVL(SkontoFW,0)) AS TotalMitGebindeFW
	FROM DBAgrofresh.Auftragskopf 
	WHERE (:journalNr=0 AND (Rechnungsnr>=:vonNr AND Rechnungsnr<=:bisNr AND 
	            Rechnungsdatum >= {d :vonDatum} AND 
	            Rechnungsdatum <= {d :bisDatum} AND 
	            Mandant=:MandantOid AND 
	   (:NurBarzahlungen=0 OR Zahlungskondition=:BarzahlungskondOid) AND 
	   NVL(Verbucht,0)=0 AND Auftragsstatus>=5) AND
	   (Abteilung=:AbteilungOid OR :AbteilungOid="")
	   ) OR (:journalNr<>0 AND VerbuchungsjournalNr=:journalNr) 
	GROUP BY Rechnungsnr 
	ORDER BY Rechnungsnr]]></SqlQuery>
</Query>

<Query name="VbAuftraege">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,RgNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID
	FROM DBAgrofresh.Auftragskopf 
	WHERE Rechnungsnr=:RgNr AND 
			Mandant=:MandantOid</SqlQuery>
</Query>

<Query name="VbRechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,RgNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT Rechnungsnr, 
			SUM(TotalMitGebinde) AS TotalMitGebinde,
			SUM(TotalMitGebindeFW) AS TotalMitGebindeFW,
			SUM(Skonto) AS Skonto,
			SUM(SkontoFW) AS SkontoFW
	FROM DBAgrofresh.Auftragskopf 
	WHERE Rechnungsnr=:RgNr AND 
			Mandant=:MandantOid
	GROUP BY Rechnungsnr</SqlQuery>
</Query>

<Query name="GetIdByBestellNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,BestellNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID
	FROM DBAgrofresh.Auftragskopf 
	WHERE 	BestellNr = :BestellNr AND 
			Mandant=:MandantOid</SqlQuery>
</Query>

<Query name="ListeMwstByCodesForRecalc">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,MandantOid:%String,AbzugBisArtikelGr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Mwst, 
			MwstCode, 
			MwstSatz, 
			SUM(MwstBetrag) AS MwstBetrag, 
			CASE 
				WHEN CodeMwst = 3 THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragExkl*MwstSatz/100)), SQL_DOUBLE)}
				WHEN CodeMwst = 2 THEN
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl*MwstSatz/(100+MwstSatz))), SQL_DOUBLE)}
			ELSE
				{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl-(MwstBetragInkl/(1+(MwstSatz/100))))), SQL_DOUBLE)} 
			END AS MwstBetragCalc, 
			
			CASE 
				WHEN CodeMwst = 3 THEN  
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragExkl)), SQL_DOUBLE)}
				WHEN CodeMwst = 2 THEN
					{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl/(1+(MwstSatz/100)))), SQL_DOUBLE)}
			ELSE
				{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,SUM(MwstBetragInkl/(1+(MwstSatz/100)))), SQL_DOUBLE)} 
			END AS MwstBetragExklCalc,
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM(MwstBetragExklFW*MwstSatz/100), 2), SQL_DOUBLE)} AS MwstBetragFWCalc, 
			{fn CONVERT(DBUtils.NumberUtils_Round(SUM(MwstBetragExklFW), 2), SQL_DOUBLE)} AS MwstBetragExklFWCalc
	FROM (
	SELECT Mwst, 
			Mwst->MwstCode AS MwstCode, 
			MwstSatz, 
			Nettobetrag2MwstbetragEW AS MwstBetrag, 
			Nettobetrag2ExklMwstEW AS MwstBetragExkl,
			Nettobetrag2MwstbetragFW AS MwstBetragFW, 
			Nettobetrag2ExklMwstFW AS MwstBetragExklFW, 
			Nettobetrag2InklMwstEW AS MwstBetragInkl,
			Auftragskopf->CodeMwst AS CodeMwst
	FROM DBAgrofresh.Auftragspos
	WHERE Auftragskopf = :AuftragOid AND
			Mwst IS NOT NULL 
			
	UNION ALL SELECT    
			Abzug1Mwst As Mwst,
			Abzug1Mwst->MwstCode AS MwstCode,
			Abzug1MwstSatz AS MwstSatz,
			
			0-(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragAbzug1EWMwstClass(ID),0)),2)) AS MwstBetrag,	
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			0-(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragAbzug1FWMwstClass(ID),0)),2)) AS MwstBetragFW,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug1Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug1Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE ID =:AuftragOid AND 
			Mandant=:MandantOid
			
	UNION ALL SELECT    
			Abzug2Mwst As Mwst,
			Abzug2Mwst->MwstCode AS MwstCode,
			Abzug2MwstSatz AS MwstSatz,
				
			0-(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragAbzug2EWMwstClass(ID),0)),2)) AS MwstBetrag,	
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			0-(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragAbzug2FWMwstClass(ID),0)),2)) AS MwstBetragFW,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug2BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug1Typ, Abzug2Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE ID =:AuftragOid AND 
			Mandant=:MandantOid
			
	UNION ALL SELECT    
			Abzug3Mwst As Mwst,
			Abzug3Mwst->MwstCode AS MwstCode,
			Abzug3MwstSatz AS MwstSatz,
				
			0-(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragAbzug3EWMwstClass(ID),0)),2)) AS MwstBetrag,	
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWExklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExkl,
			0-(DBUtils.NumberUtils_Round(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetragAbzug3FWMwstClass(ID),0)),2)) AS MwstBetragFW,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3Betrag(:MandantOid, SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugEWInklMwstClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragInkl,
			(-1)*({fn CONVERT(DBAgrofresh.Auftragskopf_CalcAbzug3BetragFW(SUM(NVL(DBAgrofresh.Auftragskopf_GetBetrAbzugExklMwstFWClass(ID), 0)), Abzug1Prozent, Abzug2Prozent, Abzug3Prozent, Abzug1Typ, Abzug2Typ, Abzug3Typ), SQL_DOUBLE)}) AS MwstBetragExklFW,
			 
			CodeMwst AS CodeMwst
			FROM DBAgrofresh.Auftragskopf
			WHERE ID =:AuftragOid AND 
			Mandant=:MandantOid
			
	)
			
	GROUP BY Mwst ORDER BY MwstCode]]></SqlQuery>
</Query>

<Query name="ListeForRuestscheinNachTouren">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,perDatum:%Date,vonTourNr:%Integer,bisTourNr:%Integer,mitRZ:%Boolean,ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
	   Adresse->Adresse as Adresse,
		ID,
		Adresse->Adresse->Adressnummer 		AS "LAdresse.Adressnummer", 
		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->UstIdNr As "LAdresse.UstIdNr",
		Adresse->Adresse->Telefon1 	As "LAdresse.Telefon",
		Adresse->Adresse->Mobil 	As "LAdresse.Natel",
		Adresse->Adresse->Fax 		As "LAdresse.Fax",
       	DBAgrofresh.Auftragskopf_IsStatusGedruckt(BearbeitungsstatusRZ) as "RZGedruckt",
       	Gebietscode->Code AS "GebietsCode",
       	DBAdressen_SD.Gebiet_GetGebietstextClass(Gebietscode, :MandantOid, :Lang) AS "GebietsText",
       	Gebietscode AS "Gebiet"       	
       FROM DBAgrofresh.Auftragskopf
       WHERE Mandant = :MandantOid 
       AND Lieferdatum = {d :perDatum}
       AND Gebietscode->Code BETWEEN :vonTourNr AND :bisTourNr
       AND (NVL(Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusRuestzettel() OR (Auftragsstatus = DBAgrofresh.Konst_AuftragstatusRuestzettel() AND :mitRZ = 1))
       AND ID IN (SELECT Auftragskopf->ID
       	FROM DBAgrofresh.Auftragspos
		WHERE Auftragskopf->Mandant = :MandantOid 
		AND Auftragskopf->Lieferdatum = {d :perDatum}
      	AND Auftragskopf->Gebietscode->Code BETWEEN :vonTourNr AND :bisTourNr
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (NVL(Auftragskopf->Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusRuestzettel() OR (NVL(Auftragskopf->Auftragsstatus,0) = DBAgrofresh.Konst_AuftragstatusRuestzettel() AND :mitRZ = 1)))
		
       ORDER BY DBAdressen.TourDetail_GetPosNrByGebIdAdrId(Gebietscode, Adresse->Adresse), AuftragsNr DESC]]></SqlQuery>
</Query>

<Query name="ListeAuftragVonBis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AuftragVon:%Integer,AuftragBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT  %ID
	 		FROM DBAgrofresh.AuftragsKopf
			WHERE Mandant = :MandantOid  AND
			AuftragsNr between :AuftragVon AND :AuftragBis
			Order by AuftragsNr</SqlQuery>
</Query>

<Query name="ListeAuftraegeVorGebRec">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonKunde:%Integer,BisKunde:%Integer,VonDatum:%Date,BisDatum:%Date,Verrechnete:%Boolean,Verbuchte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID
    FROM DBAgrofresh.AuftragsKopf
    WHERE Mandant = :MandantOid  AND
    	Adresse->Adresse->Adressnummer between :VonKunde AND :BisKunde AND
    	Lieferdatum between {d :VonDatum} AND {d :BisDatum} AND
    	(NVL(BearbeitungsstatusRG,0) = 0 OR :Verrechnete = 1) AND 
    	(NVL(Verbucht, 0) = 0 OR :Verbuchte = 1)]]></SqlQuery>
</Query>

<Query name="ListeLsKontrollliste">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonKunde:%Integer,BisKunde:%Integer,BisDatum:%Date,stufenKleinere:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, LieferscheinNr, Lieferdatum, BearbeitungsstatusLS, StatusAutoVerarbeitung,
	Adresse->Adresse->Adressnummer 		AS "Adresse.Adressnummer", 
	Anrede 			AS "Adresse.Anrede", 
	Name 			AS "Adresse.Name", 
	Adresszeile1	AS "Adresse.Adresszeile1", 
	Adresszeile2 	AS "Adresse.Adresszeile2", 
	Adresszeile3 	AS "Adresse.Adresszeile3", 
	Plz				AS "Adresse.Plz", 
	PlzZusatz 		AS "Adresse.PlzZusatz", 
	Ort 			AS "Adresse.Ort",
	{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(ID), SQL_DOUBLE)} AS Gebinde,
	{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(ID), SQL_DOUBLE)} AS BetragExkl,
	{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(ID), SQL_DOUBLE)} AS BetragInkl
    FROM DBAgrofresh.AuftragsKopf
    WHERE Mandant = :MandantOid  AND
    	Adresse->Adresse->Adressnummer between :VonKunde AND :BisKunde AND
    	Lieferdatum <={d :BisDatum} AND
    	(NVL(Auftragsstatus,0) = DBAgrofresh.Konst_AuftragstatusLieferschein() OR 
    	(:stufenKleinere = 1 AND (NVL(Auftragsstatus,0) <= DBAgrofresh.Konst_AuftragstatusLieferschein()))) AND
    	NVL(Verbucht, 0) = 0
    ORDER BY Adresse->Adresse->Adressnummer, LieferscheinNr]]></SqlQuery>
</Query>

<Query name="ListeAuftrByBeastatusMutiert">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,AuftragVon:%Integer,AuftragBis:%Integer,RG:%Boolean,LS:%Boolean,RZ:%Boolean,AU:%Boolean,OF:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT  %ID
	 		FROM DBAgrofresh.AuftragsKopf
			WHERE Mandant = :MandantOid  AND
			AuftragsNr between :AuftragVon AND :AuftragBis AND
			((:RG = 1 AND BearbeitungsstatusRG = DBAgrofresh.Konst_BearbeitungsstatusMutiert()) OR
			(:RG = 1 AND BearbeitungsstatusBZ = DBAgrofresh.Konst_BearbeitungsstatusMutiert()) OR
			(:LS = 1 AND BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert()) OR
			(:RZ = 1 AND BearbeitungsstatusRZ = DBAgrofresh.Konst_BearbeitungsstatusMutiert()) OR
			(:AU = 1 AND BearbeitungsstatusAU = DBAgrofresh.Konst_BearbeitungsstatusMutiert()) OR
			(:OF = 1 AND BearbeitungsstatusOF = DBAgrofresh.Konst_BearbeitungsstatusMutiert()))
			Order by AuftragsNr</SqlQuery>
</Query>

<Query name="ListeKundenStatJeAuftr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonKunde:%Integer,BisKunde:%Integer,VonDatum:%Date,BisDatum:%Date,Archivierte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, RechnungsNr, LieferscheinNr, Lieferdatum, 
	Adresse->Adresse->Adressnummer 		AS "Adresse.Adressnummer", 
	Anrede 			AS "Adresse.Anrede", 
	Name 			AS "Adresse.Name", 
	Adresszeile1	AS "Adresse.Adresszeile1", 
	Adresszeile2 	AS "Adresse.Adresszeile2", 
	Adresszeile3 	AS "Adresse.Adresszeile3", 
	Plz				AS "Adresse.Plz", 
	PlzZusatz 		AS "Adresse.PlzZusatz", 
	Ort 			AS "Adresse.Ort",
	{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(ID), SQL_DOUBLE)} AS Gebinde,
	TotalOhneGebMitAbzugExkl AS BetragExkl,
	TotalOhneGebMitAbzugInkl AS BetragInkl,
	TotalMitGebMitAbzug AS TotalMitGebinde
    FROM DBAgrofresh.AuftragsKopf
    WHERE Mandant = :MandantOid  AND
    	Adresse->Adresse->Adressnummer between :VonKunde AND :BisKunde AND
    	Lieferdatum Between {d :VonDatum} AND {d :BisDatum} AND
    	NVL(Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() AND
    	(NVL(Verbucht, 0) = 0 OR :Archivierte = 1)
    ORDER BY Adresse->Adresse->Adressnummer, LieferscheinNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.AuftragspositionAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61327,63909.065388</TimeCreated>

<Query name="ListeByAuftrag">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Abzugstyp AS AbzugstypId,
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode, 
		AnzahlGebinde, 
		AnzahlGedruckteGebinde, 
		AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel,
		Artikel->ArtikelAktiv AS ArtikelAktiv, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS Artikeltext,
		Artikelcode, 
		Artikel->DezFormatMenge As FormatMenge, 
		Artikel->DezFormatPreis As FormatPreis,
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr", 
		Artikel->OrderNr As "Artikel.OrderNr", 
		BestellNr, 
		PositionsNr, 
		BestellteMenge, 
		BetragExklMwst, 
		BetragExklMwstFW, 
		BetragInklMwstFW, 
		BetragInklMwst, 
		ChargenNrMan,
		DetailText, 
		Gebinde, 
		GewichtBrutto, 
		GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		GewichtTara, 
		HauptGebinde, 
		Herkunft, 
		Lagerstatus, 
		Lieferant, 
		Lieferdatum, 
		Menge,  
		Mengeneinheit AS MengeneinheitId,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, Auftragskopf->Mandant, :Lang) AS "Produktionsart.Text", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, Auftragskopf->Mandant, :Lang) AS "Herkunft.Text", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) AS "Qualitaet.Text", 
		Mwst, 
		MwstSatzExport,
		MwstBetrag, 
		MwstBetragFW, 
		MwstSatz, 
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW, 
		DetailPreis,
		RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
		Charge->Charge->PositionsNr AS "Charge.Nummer",
		ChargenNrMan AS "Charge.NummerMan",
		Charge->Charge->ID AS "Charge.ID",
		Qualitaet,
		Produktionsart,
		Charge,
		SpezPreis,
		ZusatztextID,
		ZusatzChargenID,
		SpezPreis->Barcode As Barcode
		FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf = :Auftrag 
	    ORDER BY Auftragspos.PositionsNr, ZusatztextID, ZusatzChargenID]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruckGroup">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,Lang:%String,PrintZeroPositions:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode, 
		SUM(AnzahlGebinde) AS AnzahlGebinde, 
		SUM(AnzahlGedruckteGebinde) AS AnzahlGedruckteGebinde, 
		SUM(AnzahlHauptGebinde) AS AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelgruppenNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenMenge) As "Artikel.FormatMenge", 
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenPreis) As "Artikel.FormatPreis",
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr",
		Artikel->OrderNr As "Artikel.OrderNr", 
		Artikel->Lagerplatz As "Artikel.Lagerplatz",  
		Artikel->Bemerkung As "Artikel.Bemerkung", 
		Produktionsart->PositionsNr As "Produktionsart.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, Auftragskopf->Mandant, :Lang) As "Produktionsart.Text",
		Artikelcode, 
		ChargenNrMan,
		BestellNr, 
		PositionsNr, 
		SUM(BestellteMenge) AS BestellteMenge, 
		SUM(BetragExklMwst) AS BetragExklMwst, 
		SUM(BetragExklMwstFW) AS BetragExklMwstFW, 
		SUM(BetragInklMwstFW) AS BetragInklMwstFW, 
		SUM(BetragInklMwst) AS BetragInklMwst, 
		DetailText, 
		Gebinde, 
		SUM(GewichtBrutto) AS GewichtBrutto, 
		SUM(GewichtNetto) AS GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		SUM(GewichtTara) AS MwstBetrag, 
		HauptGebinde, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBAgrofresh_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",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort",
		Lieferdatum, 
		SUM(Menge) AS Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		SUM(MwstBetrag) AS MwstBetrag, 
		SUM(MwstBetragFW) AS MwstBetragFW, 
		MwstSatz, 
		MwstSatzExport,
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		SUM(RabattBetrag) AS RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
	    Qualitaet->PositionsNr As "Qualitaet.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) As "Qualitaet.Text",
		{fn CONVERT(Charge->Charge->PositionsNr, SQL_VARCHAR)} AS "Charge.Nummer",
		DBAgrofresh.Auftragspos_GetGebindePreisByDet(%ID) AS GebindePreis,
	    SpezPreis->KundenSpezArtNr AS "KundenspezArtNr",
		Gebinde->GewichtJeGebinde AS GebindeGewicht,
		SpezPreis->Barcode As Barcode
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf = :Auftrag AND
	    ((Artikelcode <> DBAgrofresh.Konst_ArtCodeMengePreis() OR Menge <> 0 OR AnzahlGebinde <> 0) OR :PrintZeroPositions = 1)
	    Group by Auftragspos.PositionsNr, ZusatztextID, Gebinde
	    ORDER BY Auftragspos.PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruck">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,Lang:%String,PrintZeroPositions:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode, 
		AnzahlGebinde AS AnzahlGebinde, 
		AnzahlGedruckteGebinde AS AnzahlGedruckteGebinde, 
		AnzahlHauptGebinde AS AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelgruppenNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenMenge) As "Artikel.FormatMenge", 
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenPreis) As "Artikel.FormatPreis", 
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr",
		Artikel->OrderNr As "Artikel.OrderNr",   
		Artikel->Lagerplatz As "Artikel.Lagerplatz", 
		Artikel->Bemerkung As "Artikel.Bemerkung", 
		Produktionsart->PositionsNr As "Produktionsart.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, Auftragskopf->Mandant, :Lang) As "Produktionsart.Text",
		Artikelcode, 
		ChargenNrMan,
		BestellNr, 
		PositionsNr, 
		BestellteMenge AS BestellteMenge, 
		BetragExklMwst AS BetragExklMwst, 
		BetragExklMwstFW AS BetragExklMwstFW, 
		BetragInklMwstFW AS BetragInklMwstFW, 
		BetragInklMwst AS BetragInklMwst, 
		DetailText, 
		Gebinde, 
		GewichtBrutto AS GewichtBrutto, 
		GewichtNetto AS GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		GewichtTara AS MwstBetrag, 
		HauptGebinde, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBAgrofresh_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",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort",
		Lieferdatum, 
		Menge AS Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		MwstBetrag AS MwstBetrag, 
		MwstBetragFW AS MwstBetragFW, 
		MwstSatz, 
		MwstSatzExport,
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		RabattBetrag AS RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
	    Qualitaet->PositionsNr As "Qualitaet.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) As "Qualitaet.Text",
		{fn CONVERT(Charge->Charge->PositionsNr, SQL_VARCHAR)} AS "Charge.Nummer",
		DBAgrofresh.Auftragspos_GetGebindePreisByDet(%ID) AS GebindePreis,
	    SpezPreis->KundenSpezArtNr AS "KundenspezArtNr",
		Gebinde->GewichtJeGebinde AS GebindeGewicht
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf = :Auftrag AND
	    ((Artikelcode <> DBAgrofresh.Konst_ArtCodeMengePreis() OR Menge <> 0 OR AnzahlGebinde <> 0) OR :PrintZeroPositions = 1)
	    ORDER BY Auftragspos.PositionsNr, ZusatztextID, ZusatzChargenID]]></SqlQuery>
</Query>

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

<Query name="ListeEtiketten">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID AS ID, AnzahlGebinde, AnzahlGedruckteGebinde FROM DBAgrofresh.Auftragspos 
	WHERE Auftragskopf = :Auftrag
	ORDER BY Auftragspos.PositionsNr</SqlQuery>
</Query>

<Query name="ListeEtikettenNurNichtGedruckte">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,nurNichtGedruckte:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID AS ID, AnzahlGebinde, AnzahlGedruckteGebinde FROM DBAgrofresh.Auftragspos 
	WHERE Auftragskopf = :Auftrag AND NVL(AnzahlGebinde,0)>NVL(AnzahlGedruckteGebinde,0)
	ORDER BY Auftragspos.PositionsNr]]></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",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode, 
		SUM(AnzahlGebinde) AS AnzahlGebinde,
		SUM(AnzahlGedruckteGebinde) AS AnzahlHauptGebinde, 
		SUM(AnzahlHauptGebinde) AS AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelgruppenNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenMenge) As "Artikel.FormatMenge", 
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenPreis) As "Artikel.FormatPreis", 
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr",
		Artikel->OrderNr As "Artikel.OrderNr",  
		Artikel->Lagerplatz As "Artikel.Lagerplatz", 
		Artikel->Bemerkung As "Artikel.Bemerkung", 
		Produktionsart->PositionsNr As "Produktionsart.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, Auftragskopf->Mandant, :Lang) As "Produktionsart.Text",
		Artikelcode, 
		BestellNr, 
		PositionsNr, 
		SUM(BestellteMenge) AS BestellteMenge, 
		SUM(BetragExklMwst) AS BetragExklMwst, 
		SUM(BetragExklMwstFW) AS BetragExklMwstFW, 
		SUM(BetragInklMwstFW) AS BetragInklMwstFW, 
		SUM(BetragInklMwst) AS BetragInklMwst, 
		ChargenNrMan,
		DetailText, 
		Gebinde, 
		SUM(GewichtBrutto) AS GewichtBrutto, 
		SUM(GewichtNetto) AS GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		SUM(GewichtTara) AS GewichtTara, 
		HauptGebinde, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBAgrofresh_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",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort",
		Lieferdatum, 
		SUM(Menge) AS Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		SUM(MwstBetrag) AS MwstBetrag, 
		SUM(MwstBetragFW) AS MwstBetragFW, 
		MwstSatz, 
		MwstSatzExport,
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		SUM(RabattBetrag) AS RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
		Qualitaet->PositionsNr As "Qualitaet.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) As "Qualitaet.Text",
		Charge->Charge->PositionsNr AS "Charge.Nummer",
		DBAgrofresh.Auftragspos_GetGebindePreisByDet(%ID) AS GebindePreis,
		Gebinde->GewichtJeGebinde AS GebindeGewicht,
	    SpezPreis->KundenSpezArtNr AS "KundenspezArtNr",
		SpezPreis->Barcode As Barcode,
		
		Auftragskopf->AuftragsNr  		AS "Auftragskopf.AuftragsNr",
		Auftragskopf->Auftragsdatum  	AS "Auftragskopf.Auftragsdatum",
		Auftragskopf->BestellNr  		AS "Auftragskopf.BestellNr",
		CASE WHEN Auftragskopf->Mitarbeiter = '' THEN
			Auftragskopf->Besteller
		ELSE
			DBAdressen.Adresse_GetName(2, Auftragskopf->Mitarbeiter->Name, Auftragskopf->Mitarbeiter->Vorname,:firstVorname) 
		END   							AS "Auftragskopf.Besteller",
		Auftragskopf->Lieferdatum  		AS "Auftragskopf.Lieferdatum",
		Auftragskopf->LieferscheinNr  	AS "Auftragskopf.LieferscheinNr",
		Auftragskopf->Lieferzeit  		AS "Auftragskopf.Lieferzeit",
		Auftragskopf->RechnungsNr  		AS "Auftragskopf.RechnungsNr",
		Auftragskopf->Rechnungsdatum 	AS "Auftragskopf.Rechnungsdatum",
		Auftragskopf->Referenz  		AS "Auftragskopf.Referenz",
		Auftragskopf->VerteillisteNr 	AS "Auftragskopf.VerteillisteNr",
		DBAgrofresh.Auftragspos_AuftragHasArtikel(Auftragskopf) AS "Auftragskopf.AuftragHasDetails",
		0 AS GebindeLieferungMenge,
		0 AS GebindeRetourenMenge
		
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->RechnungsNr = :RgNr AND Auftragskopf->Mandant=:MandantOid  
	    Group by Auftragskopf, Auftragspos.PositionsNr, ZusatztextID, Gebinde
	    
	UNION SELECT %ID, 
		0 As "Abzugstyp.Nr",
		"" As "Abzugstyp.Text",
		0 AS Artikelcode, 
		0 AS AnzahlGebinde, 
		0 AS AnzahlGedruckteGebinde, 
		0 AS AnzahlHauptGebinde, 
		0 AS AnzahlJeGebinde, 
		"" AS "Artikel.ArtikelNr",
		0 AS "Artikel.ArtikelgruppenNr",
		"" AS "Artikel.Artikeltext",
		"" As "Artikel.FormatMenge", 
		"" As "Artikel.FormatPreis",
		0 As "Artikel.Herkunftsart",
		"" As "Artikel.EUZolltarifNr",
		"" As "Artikel.OrderNr", 
		"" As "Artikel.Lagerplatz",  
		"" As "Artikel.Bemerkung", 
		0 As "Produktionsart.Nr",
		"" As "Produktionsart.Text",
		0 AS Artikelcode, 
		"" AS BestellNr, 
		0 AS PositionsNr, 
		0 AS BestellteMenge, 
		0 AS BetragExklMwst, 
		0 AS BetragExklMwstFW, 
		0 AS BetragInklMwstFW, 
		0 AS BetragInklMwst, 
		"" AS ChargenNrMan,
		"" AS DetailText, 
		GebKontr->Gebinde AS Gebinde, 
		0 AS GewichtBrutto, 
		0 AS GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) As GebindeBezeichnung, 
		0 AS GewichtTara, 
		0 AS HauptGebinde, 
		0 AS "Herkunft.Nr",
		"" As "Herkunft.Text",
		"" As "Herkunft.IsoKennzeichen",
		0 AS Lagerstatus, 
		0 AS "Lieferant.AdressNr", 
		"" As "Lieferant.Name",
		"" As "Lieferant.PLZ",
		"" As "Lieferant.Ort",
		0 AS Lieferdatum, 
		0 AS Menge,  
		"" AS Mengeneinheit, 
		"" AS Mwst, 
		0 AS MwstBetrag, 
		0 AS MwstBetragFW, 
		0 AS MwstSatz, 
		0 AS MwstSatzExport,
		"" AS ParzellenNr, 
		0 AS PositionsNr, 
		0 AS Preis, 
		0 AS PreisFW,
		0 AS DetailPreis,
		0 AS RabattBetrag,	
		0 AS RabattProzent, 
		Auftrag AS Auftragskopf,
		0 AS MargeProzent,
		0 AS "Qualitaet.Nr",
		"" As "Qualitaet.Text",
		0 AS "Charge.Nummer",
		0 AS GebindePreis,
		0 AS GebindeGewicht,
	    "" AS "KundenspezArtNr",
	    "" AS "Barcode",
		
		Auftrag->AuftragsNr  		AS "Auftragskopf.AuftragsNr",
		Auftrag->Auftragsdatum  	AS "Auftragskopf.Auftragsdatum",
		Auftrag->BestellNr  		AS "Auftragskopf.BestellNr",
		CASE WHEN Auftrag->Mitarbeiter = '' THEN
			Auftrag->Besteller
		ELSE
			DBAdressen.Adresse_GetName(2, Auftrag->Mitarbeiter->Name, Auftrag->Mitarbeiter->Vorname,:firstVorname) 
		END   						AS "Auftragskopf.Besteller",
		Auftrag->Lieferdatum  		AS "Auftragskopf.Lieferdatum",
		Auftrag->LieferscheinNr  	AS "Auftragskopf.LieferscheinNr",
		Auftrag->Lieferzeit  		AS "Auftragskopf.Lieferzeit",
		Auftrag->RechnungsNr  		AS "Auftragskopf.RechnungsNr",
		Auftrag->Rechnungsdatum 	AS "Auftragskopf.Rechnungsdatum",
		Auftrag->Referenz  			AS "Auftragskopf.Referenz",
		Auftrag->VerteillisteNr 	AS "Auftragskopf.VerteillisteNr",
		DBAgrofresh.Auftragspos_AuftragHasArtikel(Auftrag) AS "Auftragskopf.AuftragHasDetails",
		NVL(LieferungMenge,0) AS GebindeLieferungMenge,
		NVL(RetourenMenge,0) AS GebindeRetourenMenge
		
	    FROM DBAgrofresh.GebDetail 
	    WHERE Auftrag->RechnungsNr = :RgNr AND Auftrag->Mandant=:MandantOid  
 		AND Not Auftrag IN (SELECT Auftragskopf FROM DBAgrofresh.Auftragspos WHERE Auftrag->RechnungsNr = :RgNr AND Not Artikel='')  
	    
	    
	ORDER BY "Auftragskopf.AuftragsNr", "PositionsNr"]]></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, 
		0 As "Abzugstyp.Nr",
		"" As "Abzugstyp.Text",
		Artikelcode, 
		AnzahlGebinde, 
		AnzahlGedruckteGebinde, 
		AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelgruppenNr",
		"" AS "Artikel.Artikeltext",
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenMenge) As "Artikel.FormatMenge", 
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenPreis) As "Artikel.FormatPreis",
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr", 
		Artikel->OrderNr As "Artikel.OrderNr", 
		Artikel->Bemerkung As "Artikel.Bemerkung", 
		Produktionsart->PositionsNr As "Produktionsart.Nr",
		"" As "Produktionsart.Text",
		Artikelcode, 
		BestellNr, 
		PositionsNr, 
		BestellteMenge, 
		BetragExklMwst, 
		BetragExklMwstFW, 
		BetragInklMwstFW, 
		BetragInklMwst, 
		ChargenNrMan,
		DetailText, 
		Gebinde, 
		GewichtBrutto, 
		GewichtNetto,
		"" As GebindeBezeichnung, 
		GewichtTara, 
		HauptGebinde, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		"" As "Herkunft.Text",
		Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
		Lagerstatus, 
		Lieferant->Adressnummer As "Lieferant.AdressNr", 
		Lieferant->Name As "Lieferant.Name",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort",
		Lieferdatum, 
		Menge,  
		"" AS Mengeneinheit, 
		Mwst, 
		MwstBetrag, 
		MwstBetragFW, 
		MwstSatz, 
		MwstSatzExport,
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
		Qualitaet->PositionsNr As "Qualitaet.Nr",
		"" As "Qualitaet.Text",
		Charge->PositionsNr AS "Charge.Nummer",
		DBAgrofresh.Auftragspos_GetGebindePreisByDet(%ID) AS GebindePreis,
		Gebinde->GewichtJeGebinde AS GebindeGewicht,
	    SpezPreis->KundenSpezArtNr AS "KundenspezArtNr",
		SpezPreis->Barcode As Barcode,
		
		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",
		CASE WHEN Auftragskopf->Mitarbeiter = '' THEN
			Auftragskopf->Besteller
		ELSE
			DBAdressen.Adresse_GetName(2, Auftragskopf->Mitarbeiter->Name, Auftragskopf->Mitarbeiter->Vorname,:firstVorname) 
		END   							AS "Auftragskopf.Besteller",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragEWExklMwst", 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)}  AS "Auftragskopf.BetragEWInklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragExklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWExklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWInklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwstFW",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GebindeSaldo",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GebindeMwstBetrag",
		Auftragskopf->Lieferdatum  		AS "Auftragskopf.Lieferdatum",
		Auftragskopf->LieferscheinNr  	AS "Auftragskopf.LieferscheinNr",
		Auftragskopf->Lieferzeit  		AS "Auftragskopf.Lieferzeit",
		Auftragskopf->RechnungsNr  		AS "Auftragskopf.RechnungsNr",
		Auftragskopf->Rechnungsdatum 	AS "Auftragskopf.Rechnungsdatum",
		Auftragskopf->Skonto  				AS "Auftragskopf.Skonto",
		{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(Auftragskopf), 0) + NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(Auftragskopf), 0)  + NVL(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(Auftragskopf), 0) - NVL(Auftragskopf->Skonto,0) , SQL_DOUBLE)} AS "Auftragskopf.TotalMitGebinde",
		Auftragskopf->VerteillisteNr 	AS "Auftragskopf.VerteillisteNr",
		Auftragskopf->Vertreter 		AS "Auftragskopf.Vertreter",
		Auftragskopf->Waehrung 			AS "Auftragskopf.Waehrung",
		Auftragskopf->Zahladresse->Adresse->Adressnummer 	AS "Auftragskopf.RAdresse.Adressnummer", 
		Auftragskopf->Zahladresse->Adresse->Anrede 			AS "Auftragskopf.RAdresse.Anrede",
		Auftragskopf->Zahladresse->Adresse->Name			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  || ' ' || Auftragskopf->Zahladresse->Adresse->Hausnummer 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
					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"
		
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->RechnungsNr = :RgNr AND Auftragskopf->Mandant=:MandantOid Group by Auftragskopf->AuftragsNr
	    ORDER BY Auftragskopf->AuftragsNr]]></SqlQuery>
</Query>

<Query name="ListeByVerteillisteDruck">
<Type>%SQLQuery</Type>
<FormalSpec>VlNr:%Integer,MandantOid:%String,Lang:%String,firstVorname:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Auftragskopf,		
		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",
		CASE WHEN Auftragskopf->Mitarbeiter <> '' THEN
			DBAdressen.Adresse_GetName(2, Auftragskopf->Mitarbeiter->Name, Auftragskopf->Mitarbeiter->Vorname,:firstVorname) 
		ELSE
			Auftragskopf->Besteller
		END   							AS "Auftragskopf.Besteller",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragEWExklMwst", 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)}  AS "Auftragskopf.BetragEWInklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragExklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWExklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWInklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwstFW",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwst",
		{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(Auftragskopf), 0) - NVL(DBAgrofresh.Auftragskopf_GetWarenaufwandByAuftrClass(Auftragskopf), 0) , SQL_DOUBLE)} 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",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GebindeSaldo",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtBruttoClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GewichtBrutto",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtNettoClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GewichtNetto",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtTaraClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GewichtTara",
		Auftragskopf->Kurs  			AS "Auftragskopf.Kurs",
		Auftragskopf->Kurseinheit  		AS "Auftragskopf.Kurseinheit",
		Auftragskopf->Lieferart->PositionsNr AS "Auftragskopf.Lieferart.Nr", 
		DBAgrofresh_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",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetWarenaufwandByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.Warenaufwand",
		Auftragskopf->Zahladresse->Adresse->Adressnummer 	AS "Auftragskopf.RAdresse.Adressnummer", 
		Auftragskopf->Zahladresse->Adresse->Anrede 			AS "Auftragskopf.RAdresse.Anrede",
		Auftragskopf->Zahladresse->Adresse->Name			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  || ' ' || Auftragskopf->Zahladresse->Adresse->Hausnummer 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
					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",
		Artikel->Lagerplatz As "Artikel.Lagerplatz", 
		1 AS "Auftragskopf.AuftragHasDetails",
		0 AS GebindeLieferungMenge,
		0 AS GebindeRetourenMenge
		
		
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->VerteillisteNr = :VlNr AND Auftragskopf->Mandant=:MandantOid Group by Auftragskopf->AuftragsNr
	    ORDER BY Auftragskopf->RechnungsNr]]></SqlQuery>
</Query>

<Query name="ListeBySRProfDruck">
<Type>%SQLQuery</Type>
<FormalSpec>VlNr:%Integer,MandantOid:%String,Lang:%String,firstVorname:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode, 
		Sum(AnzahlGebinde) AS AnzahlGebinde, 
		Sum(AnzahlGedruckteGebinde) AS AnzahlGedruckteGebinde, 
		Sum(AnzahlHauptGebinde) AS AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelgruppenNr",
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenMenge) As "Artikel.FormatMenge", 
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenPreis) As "Artikel.FormatPreis", 
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr", 
		Artikel->OrderNr As "Artikel.OrderNr", 
		Artikel->Lagerplatz As "Artikel.Lagerplatz", 
		Artikel->Bemerkung As "Artikel.Bemerkung", 
		Produktionsart->PositionsNr As "Produktionsart.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, Auftragskopf->Mandant, :Lang) As "Produktionsart.Text",
		Artikelcode, 
		BestellNr, 
		PositionsNr, 
		Sum(BestellteMenge) AS BestellteMenge, 
		Sum(BetragExklMwst) AS BetragExklMwst, 
		Sum(BetragExklMwstFW) AS BetragExklMwstFW, 
		SUM(BetragInklMwstFW) AS BetragInklMwstFW, 
		SUM(BetragInklMwst) AS BetragInklMwst,
		ChargenNrMan,
		DetailText, 
		Gebinde, 
		SUM(GewichtBrutto) AS GewichtBrutto, 
		SUM(GewichtNetto) AS GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		SUM(GewichtTara) AS GewichtNetto,
		HauptGebinde, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBAgrofresh_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",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort",
		Lieferdatum, 
		SUM(Menge) AS Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		SUM(MwstBetrag) AS MwstBetrag, 
		SUM(MwstBetragFW) AS MwstBetragFW, 
		MwstSatz, 
		MwstSatzExport,
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		Sum(RabattBetrag) AS RabattBetrag,
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
		Qualitaet->PositionsNr As "Qualitaet.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) As "Qualitaet.Text",
		Charge->PositionsNr AS "Charge.Nummer",
		DBAgrofresh.Auftragspos_GetGebindePreisByDet(%ID) AS GebindePreis,
		Gebinde->GewichtJeGebinde AS GebindeGewicht,
	    SpezPreis->KundenSpezArtNr AS "KundenspezArtNr",
		
		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",
		CASE WHEN Auftragskopf->Mitarbeiter <> '' THEN
			DBAdressen.Adresse_GetName(2, Auftragskopf->Mitarbeiter->Name, Auftragskopf->Mitarbeiter->Vorname,:firstVorname) 
		ELSE
			Auftragskopf->Besteller
		END   							AS "Auftragskopf.Besteller",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragEWExklMwst", 
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)}  AS "Auftragskopf.BetragEWInklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragExklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWExklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragInklMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragFWInklMwst",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstFWClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwstFW",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetBetragMwstByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.BetragMwst",
		{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetBetragEWExklMwstByAuftrClass(Auftragskopf), 0) - NVL(DBAgrofresh.Auftragskopf_GetWarenaufwandByAuftrClass(Auftragskopf), 0) , SQL_DOUBLE)} 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",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GebindeSaldo",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtBruttoClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GewichtBrutto",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtNettoClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GewichtNetto",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetGewichtTaraClass(Auftragskopf), SQL_DOUBLE)} AS "Auftragskopf.GewichtTara",
		Auftragskopf->Kurs  			AS "Auftragskopf.Kurs",
		Auftragskopf->Kurseinheit  		AS "Auftragskopf.Kurseinheit",
		Auftragskopf->Lieferart->PositionsNr AS "Auftragskopf.Lieferart.Nr", 
		DBAgrofresh_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",
		{fn CONVERT(DBAgrofresh.Auftragskopf_GetWarenaufwandByAuftrClass(Auftragskopf), SQL_DOUBLE)} 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  || ' ' || Auftragskopf->Zahladresse->Adresse->Hausnummer 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",
		1 AS "Auftragskopf.AuftragHasDetails",
		0 AS GebindeLieferungMenge,
		0 AS GebindeRetourenMenge
		
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->VerteillisteNr = :VlNr AND Auftragskopf->Mandant=:MandantOid   Group by Artikel
	    ORDER BY Auftragskopf->RechnungsNr, Auftragspos.PositionsNr]]></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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String,VonVertreter:%Integer=0,BisVertreter:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", "Datum", "Jahr", "Vorjahr"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	    AND (NVL(Auftragskopf->Adresse->Adresse->Vertretercode->Code,0) Between :VonVertreter AND :BisVertreter OR :BisVertreter = 0)
	    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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   	AND (NVL(Auftragskopf->Adresse->Adresse->Vertretercode->Code,0) Between :VonVertreter AND :BisVertreter OR :BisVertreter = 0)
	    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 (NVL(Auftragskopf->Auftragsstatus, 0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus, 0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		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="ListeArtikelKundeUmsatz">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,AdresseVon:%Integer,AdresseBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,MinStatus:%Integer,MaxStatus:%Integer,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", "Datum", "Jahr", "Vorjahr"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 :MinStatus < DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()) 
	    	or (Auftragskopf->Rechnungsdatum between {d :DatumVon} AND {d :DatumBis} AND :MinStatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()))
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= :MinStatus)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) <= :MaxStatus)
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,    
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.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 :MinStatus < DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()) 
	    	or (Auftragskopf->Rechnungsdatum between {d :DatumVJVon} AND {d :DatumVJBis} AND :MinStatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()))
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= :MinStatus)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) <= :MaxStatus)
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer
	)
	GROUP BY "Artikel.ArtikelNr", "Adresse.Adressnummer"
	ORDER BY "Artikel.ArtikelNr", "Adresse.Adressnummer"]]></SqlQuery>
</Query>

<Query name="ListeKundeUmsatz">
<Type>%SQLQuery</Type>
<FormalSpec>AdresseVon:%Integer,AdresseBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", "Adresse.KundengruppeCode", "Adresse.KundengruppeText"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,

		Auftragskopf->Adresse->Adresse->Kundengruppe->Code as "Adresse.KundengruppeCode",
		DBAdressen_SD.Kundengruppe_GetKundengruppentextClass(Auftragskopf->Adresse->Adresse->Kundengruppe, :MandantOid, :Lang) as "Adresse.KundengruppeText",
		
		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 DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	    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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		
		Auftragskopf->Adresse->Adresse->Kundengruppe->Code as "Adresse.KundengruppeCode",
		DBAdressen_SD.Kundengruppe_GetKundengruppentextClass(Auftragskopf->Adresse->Adresse->Kundengruppe, :MandantOid, :Lang) as "Adresse.KundengruppeText",
		
		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 DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   	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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (NVL(Auftragskopf->Verbucht,0) = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer
	)
	GROUP BY "Adresse.Adressnummer"
	ORDER BY "Adresse.Adressnummer"]]></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,MinStatus:%Integer,MaxStatus:%Integer,OnlyVerbucht:%Boolean,Herkunft:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"
		
		
	FROM DBAgrofresh.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 :MinStatus < DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()) 
	    	or (Auftragskopf->Rechnungsdatum between {d :DatumVon} AND {d :DatumBis} AND :MinStatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()))
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= :MinStatus)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) <= :MaxStatus)
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND ((:Herkunft = "") OR (Herkunft = :Herkunft))
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"
		
	FROM DBAgrofresh.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 :MinStatus < DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()) 
	    	or (Auftragskopf->Rechnungsdatum between {d :DatumVJVon} AND {d :DatumVJBis} AND :MinStatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift()))
	   	AND (NVL(Auftragskopf->Auftragsstatus,0) >= :MinStatus)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) <= :MaxStatus)
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND ((:Herkunft = "") OR (Herkunft = :Herkunft))
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr
	)
	GROUP BY "Artikel.ArtikelNr"
	ORDER BY "Artikel.ArtikelNr"]]></SqlQuery>
</Query>

<Query name="ListeKundeArtUmsatzSelektion">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ProdArtVon:%Integer,ProdArtBis:%Integer,AufberArtVon:%Integer,AufberArtBis:%Integer,HerkunftVon:%Integer,HerkunftBis:%Integer,QualiVon:%Integer,QualiBis:%Integer,AdresseVon:%Integer,AdresseBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, 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(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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 DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	    AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	  	0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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 DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   	AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		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="ListeArtUmsatzSelektion">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ProdArtVon:%Integer,ProdArtBis:%Integer,AufberArtVon:%Integer,AufberArtBis:%Integer,HerkunftVon:%Integer,HerkunftBis:%Integer,QualiVon:%Integer,QualiBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"
		
		
	FROM DBAgrofresh.Auftragspos 
	    WHERE (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"		
		
	FROM DBAgrofresh.Auftragspos 
	    WHERE (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr
	)
	GROUP BY "Artikel.ArtikelNr"
	ORDER BY "Artikel.ArtikelNr"]]></SqlQuery>
</Query>

<Query name="ListeArtKundeUmsatzSelektion">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ProdArtVon:%Integer,ProdArtBis:%Integer,AufberArtVon:%Integer,AufberArtBis:%Integer,HerkunftVon:%Integer,HerkunftBis:%Integer,QualiVon:%Integer,QualiBis:%Integer,AdresseVon:%Integer,AdresseBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, 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(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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 DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	    AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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 DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   	AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer
	)
	GROUP BY "Artikel.ArtikelNr", "Adresse.Adressnummer"
	ORDER BY "Artikel.ArtikelNr", "Adresse.Adressnummer"]]></SqlQuery>
</Query>

<Query name="ListeArtikelStatSpez">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,OnlyLiefer:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(Nettobetrag2ExklMwstEW) As Betrag,
		SUM(Menge) As Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		
		CASE WHEN Artikel->Mengeneinheit->PositionsNr <> 1 THEN SUM(Menge) * Artikel->Einzelgewicht ELSE 0 END AS CalcMenge,
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		
		DBAgrofresh_SD.StatGrp_GetBezeichnungClass(DBAgrofresh_SD.StatGrp_GetIdByNummer(:MandantOid, SUBSTRING(Artikel->ArtikelNr,0,7)), :MandantOid, :Lang) as "StatGrpText",
		SUBSTRING(Artikel->ArtikelNr,0,7) AS "StatGrpNummer"
		
	FROM DBAgrofresh.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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR :OnlyLiefer = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY SUBSTRING(Artikel->ArtikelNr,0,7)]]></SqlQuery>
</Query>

<Query name="ListeArtikelGebindeUmsatz">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", SUM(AnzahlGebinde) AS AnzahlGebinde, SUM(AnzahlGebindeVorjahr) AS AnzahlGebindeVorjahr,
		GebindeNr, GebindeBezeichnung, "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		SUM(AnzahlGebinde) AS AnzahlGebinde, 
		0 AS AnzahlGebindeVorjahr, 
		Gebinde->GebindeNr AS GebindeNr,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"
		
		
	FROM DBAgrofresh.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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Gebinde->GebindeNr
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		0 AS AnzahlGebinde, 
		SUM(AnzahlGebinde) AS AnzahlGebindeVorjahr, 
		Gebinde->GebindeNr AS GebindeNr,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"
		
	FROM DBAgrofresh.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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Gebinde->GebindeNr
	)
	GROUP BY "Artikel.ArtikelNr", "GebindeNr"
	ORDER BY "Artikel.ArtikelNr", "GebindeNr"]]></SqlQuery>
</Query>

<Query name="ListeArtGebindeUmsatzSelektion">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ProdArtVon:%Integer,ProdArtBis:%Integer,AufberArtVon:%Integer,AufberArtBis:%Integer,HerkunftVon:%Integer,HerkunftBis:%Integer,QualiVon:%Integer,QualiBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", SUM(AnzahlGebinde) AS AnzahlGebinde, SUM(AnzahlGebindeVorjahr) AS AnzahlGebindeVorjahr,
		GebindeNr, GebindeBezeichnung, "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		SUM(AnzahlGebinde) AS AnzahlGebinde, 
		0 AS AnzahlGebindeVorjahr, 
		Gebinde->GebindeNr AS GebindeNr,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"
				
	FROM DBAgrofresh.Auftragspos 
	    WHERE (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
 	 	AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Gebinde->GebindeNr
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		0 AS AnzahlGebinde, 
		SUM(AnzahlGebinde) AS AnzahlGebindeVorjahr, 
		Gebinde->GebindeNr AS GebindeNr,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText"		
		
	FROM DBAgrofresh.Auftragspos 
	    WHERE (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis)
	    AND ((Artikel->Produktionsart->PositionsNr BETWEEN :ProdArtVon AND :ProdArtBis) OR (:ProdArtBis = 0))
	   	AND ((Artikel->Herkunft->PositionsNr BETWEEN :HerkunftVon AND :HerkunftBis) OR (:HerkunftBis = 0))
	    AND ((Artikel->Qualitaetsklasse->PositionsNr BETWEEN :QualiVon AND :QualiBis) OR (:QualiBis = 0))
	    AND ((Artikel->Aufbereitungsart->PositionsNr BETWEEN :AufberArtVon AND :AufberArtBis) OR (:AufberArtBis = 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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
        AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Gebinde->GebindeNr
	)
	GROUP BY "Artikel.ArtikelNr", "GebindeNr"
	ORDER BY "Artikel.ArtikelNr", "GebindeNr"]]></SqlQuery>
</Query>

<Query name="ListeArtikelGebindeStatSpez">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		
		CASE WHEN Artikel->Mengeneinheit->PositionsNr <> 1 THEN SUM(Menge) * Artikel->Einzelgewicht ELSE 0 END AS CalcMenge,
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		
		SUM(AnzahlGebinde) AS AnzahlGebinde, 
		Gebinde->GebindeNr AS GebindeNr,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		
		DBAgrofresh_SD.StatGrp_GetBezeichnungClass(DBAgrofresh_SD.StatGrp_GetIdByNummer(:MandantOid, SUBSTRING(Artikel->ArtikelNr,0,7)), :MandantOid, :Lang) as "StatGrpText",
		SUBSTRING(Artikel->ArtikelNr,0,7) AS "StatGrpNummer"
		
	FROM DBAgrofresh.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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY SUBSTRING(Artikel->ArtikelNr,0,7), Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="DruckBestellliste">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%String,ArtGrpBis:%String,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,Status:%Integer,Lang:%String,Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT	Artikel->ArtikelNr as ArtikelNr,
  			DBAgrofresh.Artikel_GetArtikeltextClass(Artikel, :Mandant, :Lang) As Bezeichnung, 
  			SUM(Menge) As Anzahl,
 			DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, :Mandant, :Lang) As Einheit
	FROM DBAgrofresh.Auftragspos
	WHERE NVL(Auftragskopf->Auftragsstatus,0) <= :Status
  		AND Auftragskopf->Mandant = :Mandant 	 
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (Artikel->Lieferant1->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		AND (Auftragskopf->Auftragsdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
	GROUP BY Artikel
	ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="DruckBestelllisteDetArtLief">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,Lang:%String,Mandant:%String,LagerortOid:%String,Status:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT	Artikel->ArtikelNr as ArtikelNr,
  			DBAgrofresh.Artikel_GetArtikeltextClass(Artikel, :Mandant, :Lang) As Bezeichnung, 
  			SUM(Menge) As Anzahl,
 			DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, :Mandant, :Lang) As Einheit,
  			Auftragskopf->Adresse->Adresse->Adressnummer as Adressnummer,
			NVL(Artikel->Lieferant1->Name, "")			AS "Lieferant.Name", 
			NVL(DBAdressen.Adresse_GetZusatz1(Artikel->Lieferant1->Adresscode, Artikel->Lieferant1->VornameZusatz1), "")
														AS "Lieferant.Adresszeile1", 
			NVL(Artikel->Lieferant1->Plz, "")			AS "Lieferant.Plz",  
			NVL(Artikel->Lieferant1->Ort, "") 			AS "Lieferant.Ort"
	FROM DBAgrofresh.Auftragspos
	WHERE NVL(Auftragskopf->Auftragsstatus, 0) < :Status
  		AND Auftragskopf->Mandant = :Mandant
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (Artikel->Lieferant1->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		AND (Auftragskopf->Auftragsdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
		AND (NVL(:LagerortOid,'') = '' OR Lagerort = :LagerortOid)
		AND NVL(BestelllistenNr,0) = 0
	GROUP BY Artikel
	ORDER BY Artikel->Lieferant1->Adressnummer, Artikel->Artikelgruppe->ArtikelgruppenNr]]></SqlQuery>
</Query>

<Query name="DruckBestelllisteDet">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,Lang:%String,Mandant:%String,LagerortOid:%String,Status:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT	Artikel->ArtikelNr as ArtikelNr,
  			DBAgrofresh.Artikel_GetArtikeltextClass(Artikel, :Mandant, :Lang) As Bezeichnung, 
  			Menge As Anzahl,
   			AnzahlGebinde,
    		AnzahlJeGebinde,
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, :Mandant, :Lang) As Abzugstyp, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :Mandant, :Lang) As "GebindeBezeichnung",
 			DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, :Mandant, :Lang) As Einheit,
  			Auftragskopf->Adresse->Adresse->Adressnummer as Adressnummer,
			NVL(Auftragskopf->Adresse->Adresse->Name,"")	AS "Lieferant.Name", 
			NVL(DBAdressen.Adresse_GetZusatz1(Auftragskopf->Adresse->Adresse->Adresscode, Auftragskopf->Adresse->Adresse->VornameZusatz1),"") 
															AS "Lieferant.Adresszeile1", 
			NVL(Auftragskopf->Adresse->Adresse->Plz,"")		AS "Lieferant.Plz",  
			NVL(Auftragskopf->Adresse->Adresse->Ort,"")		AS "Lieferant.Ort"
	FROM DBAgrofresh.Auftragspos
	WHERE NVL(Auftragskopf->Auftragsstatus,0) < :Status
  		AND Auftragskopf->Mandant = :Mandant
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (Auftragskopf->Adresse->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		AND (Auftragskopf->Auftragsdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
		AND (NVL(:LagerortOid,'') = '' OR Lagerort = :LagerortOid)
		AND NVL(BestelllistenNr,0) = 0]]></SqlQuery>
</Query>

<Query name="ListeByCharge">
<Type>%SQLQuery</Type>
<FormalSpec>ChargeOid:%String,Mandant:%String,ChargeNrMan:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Lieferdatum, Auftragskopf AS Auftrag, Auftragskopf->AuftragsNr, Auftragskopf->Adresse->Adresse AS Kunde, Menge
	From DBAgrofresh.Auftragspos
	WHERE Charge->Charge = :ChargeOid OR (Auftragskopf->Mandant = :Mandant AND ChargenNrMan LIKE :ChargeNrMan)]]></SqlQuery>
</Query>

<Query name="ListeForMwstCodeChange">
<Type>%SQLQuery</Type>
<FormalSpec>vonAuftrag:%Integer,bisAuftag:%Integer,alteMwstOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	From DBAgrofresh.Auftragspos
	WHERE Auftragskopf->AuftragsNr between :vonAuftrag and :bisAuftag  And Mwst= :alteMwstOid]]></SqlQuery>
</Query>

<Query name="VbPositionenZuRg">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,RgNr:%Integer,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT ID, 
    Artikelcode,
    Mwst,
    Auftragskopf,
    PositionsNr,
    Preis,
    RabattBetrag,
    Auftragskopf->RechnungsNr AS AuftragskopfRechnungsNr, 
    Auftragskopf->AuftragsNr AS AuftragskopfAuftragsNr,
    Auftragskopf->Auftragsdatum AS AuftragskopfAuftragsdatum,
    Auftragskopf->LieferscheinNr AS AuftragskopfLieferscheinNr,
    Auftragskopf->Lieferdatum AS AuftragskopfLieferdatum,
    Auftragskopf->Rechnungsdatum AS AuftragskopfRechnungsdatum,
    Auftragskopf->ZahlAdresse->Adresse AS AuftragskopfZahlAdresseAdresse,
    Auftragskopf->ZahlAdresse->Adresse->Adressnummer AS AuftragskopfZahlAdresseAdresseAdressnummer,
    Auftragskopf->ZahlAdresse->Adresse->Name AS AuftragskopfZahlAdresseAdresseName,
    Auftragskopf->ZahlAdresse->Adresse->Plz AS AuftragskopfZahlAdresseAdressePlz,
    Auftragskopf->ZahlAdresse->Adresse->Ort AS AuftragskopfZahlAdresseAdresseOrt,
    Auftragskopf->Adresse->Adresse AS AuftragskopfLieferadresseAdresse,
	Auftragskopf->Adresse->Adresse->Adressnummer AS AuftragskopfLieferadresseAdresseAdressnummer,
	Auftragskopf->Name AS AuftragskopfLieferadresseAdresseName,
	Auftragskopf->Plz AS AuftragskopfLieferadresseAdressePlz,
	Auftragskopf->Ort AS AuftragskopfLieferadresseAdresseOrt,
 	Auftragskopf->Waehrung AS AuftragskopfWaehrung,
    Auftragskopf->Waehrung->FWCode AS AuftragskopfWaehrungFWCode,
    Auftragskopf->Waehrung->ISOSWIFTCode AS AuftragskopfWaehrungISOSWIFTCode,
    Auftragskopf->Waehrung->Waehrung AS AuftragskopfWaehrungWaehrung,
    Auftragskopf->ZahlAdresse->FibuKonto->KontoNr AS AuftragskopfZahlAdresseFibuKontoKontoNr,
    Auftragskopf->CodeMwst AS AuftragskopfCodeMwst,
    Auftragskopf->Skonto AS AuftragskopfSkonto,
    Auftragskopf->Kurseinheit AS Kurseinheit,
    Auftragskopf->Kurs AS Kurs,
    Artikel AS ArtikelID,
    Artikel->ArtikelNr AS ArtikelArtikelNr,
    Artikel->FibuKontoVK AS ArtikelFibuKontoVK,
    Artikel->FibuKontoVK->KontoNr AS ArtikelFibuKontoVKKontoNr,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelArtikelgruppenNr,
    DetailText,
    Menge,
    Mengeneinheit->CodeEinheit AS MengeneinheitCodeEinheit,
    DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :lang) AS MengeneinheitText,
    MwstSatz,
    MwstSatzExport,
    Mwst->MwstCode AS MwstMwstCode,
    Gebinde,
    Abzugstyp,
    AnzahlGebinde,
    AnzahlJeGebinde,
    Charge->Charge->Lieferant->Adresse->Kundenkategorie->Code As LieferantKundenkatCode,
    Charge->Charge->Lieferant->Adresse->Kundenkategorie->VKFibuKonto As LieferantFibuKontoOid,
    Charge->Charge->Lieferant->Adresse->Kundenkategorie->VKFibuKonto->KontoNr As LieferantFibuKontoNr,
   	{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(Auftragskopf),0), SQL_DOUBLE)} AS AuftragskopfGebindeSaldo,
    Nettobetrag2ExklMwstEW,
    Nettobetrag2ExklMwstFW,
    Nettobetrag2MwstbetragEW,
    Nettobetrag2MwstbetragFW,
	{fn CONVERT(NVL(DBAgrofresh.Auftragskopf_GetGebindeSaldoByAuftrClass(Auftragskopf),0) + NVL(DBAgrofresh.Auftragskopf_GetGebindeMwstByAuftrClass(Auftragskopf),0) + NVL(DBAgrofresh.Auftragskopf_GetBetragEWInklMwstByAuftrClass(Auftragskopf),0) - Auftragskopf->Skonto, SQL_DOUBLE)} AS TotalMitGebinde,
    Auftragskopf->IsStorno AS "Storno"
   FROM DBAgrofresh.Auftragspos 
    WHERE Auftragskopf->Rechnungsnr=:RgNr AND 
                   Auftragskopf->Mandant=:MandantOid]]></SqlQuery>
</Query>

<Query name="ListeByAuftragVonBis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonAuftrag:%Integer,bisAuftrag:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	From DBAgrofresh.Auftragspos
	WHERE Auftragskopf->AuftragsNr between :vonAuftrag and :bisAuftrag AND Auftragskopf->Mandant =:MandantOid]]></SqlQuery>
</Query>

<UDLText name="T">
<Content><![CDATA[
//Query ListeByDatumVonBis(MandantOid As %String, vonDatum As %Date, bisDatum As %Date, filterHerkunft As %Boolean, herkunft As %String, filterKunde As %Boolean, kundenkatEinkauf As %String, KundeAdrOid As %String, Lang As %String, BisArtGrp As %Integer) As %SQLQuery

]]></Content>
</UDLText>

<Query name="ListePreisberechnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonDatum:%Date,bisDatum:%Date,filterHerkunft:%Boolean,herkunft:%String,filterKunde:%Boolean,kundenkatEinkauf:%String,KundeAdrOid:%String,Lang:%String,BisArtGrp:%Integer,Jahr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
	'' as PosID,
	Artikel AS Artikel, 
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS Artikeltext,
	Mengeneinheit AS Mengeneinheit,
	Qualitaet as Qualitaet,
	Produktionsart AS Produktionsart,
	0 AS VMenge,
	0 AS KorrMenge,
	0 AS VP,
	0 AS VBetrag,
	SUM(Menge) AS EMenge
	From DBAgrofreshEK.Bestellungspos
	WHERE Bestellungskopf->Annahmedatum between {d :vonDatum} and {d :bisDatum} 
	AND Bestellungskopf->Mandant =:MandantOid
	AND Artikel IS NOT NULL
	AND Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp
	AND	(:filterHerkunft = 0 OR (:filterHerkunft = 1 AND Herkunft = :herkunft)) 
	AND ((:Jahr = 0) OR ((Charge->OriginalCharge is null) AND(Charge->Jahr = :Jahr)) OR ((Charge->OriginalCharge is not null) AND (Charge->OriginalCharge->Jahr = :Jahr)))
	AND Bestellungskopf->Adresse->Adresse->Kundenkategorie = :kundenkatEinkauf
	GROUP BY Artikel, Produktionsart, Qualitaet
	UNION ALL
	SELECT
	ID as PosID,
	Artikel AS Artikel, 
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS Artikeltext,
	Mengeneinheit AS Mengeneinheit,
	Qualitaet as Qualitaet,
	Produktionsart AS Produktionsart,
	Menge AS VMenge,
	NVL(Charge->GewichtsKorrekturAnteil,0) AS KorrMenge,
	Preis AS VP,
	BetragExklMwst AS VBetrag,
	0 AS EMenge
	From DBAgrofresh.Auftragspos
	WHERE Auftragskopf->Lieferdatum between {d :vonDatum} and {d :bisDatum} 
	AND Auftragskopf->Mandant =:MandantOid
	AND Artikel IS NOT NULL
	AND Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp
	AND	(:filterHerkunft = 0 OR (:filterHerkunft = 1 AND Charge->Charge->Herkunft = :herkunft)) 
	AND Charge->Charge->Lieferant->Adresse->Kundenkategorie = :kundenkatEinkauf
	AND ((:Jahr = 0) OR ((Charge->Charge->OriginalCharge is null) AND (Charge->Charge->Jahr = :Jahr)) OR ((Charge->Charge->OriginalCharge is not null) AND (Charge->Charge->OriginalCharge->Jahr = :Jahr)))
	AND (:filterKunde = 0 OR (:filterKunde = 1 AND Charge->Charge->Lieferant->Adresse->ID = :KundeAdrOid))]]></SqlQuery>
</Query>

<Query name="ListeIventar">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonDatum:%Date,bisDatum:%Date,lagerort:%String,abteilung:%String,Lang:%String,BisArtGrp:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Artikel, ArtikelNr, Artikeltext, Mengeneinheit, Qualitaet, Gebinde, Abzugstyp, Produktionsart,
	Abteilung, Lagerort, SUM(Vortrag) AS Vortrag, SUM(VMenge) AS VMenge, SUM(EMenge) AS EMenge
	FROM(
		SELECT 
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS Artikeltext,
		Mengeneinheit,
		Qualitaet,
		Gebinde,
		Abzugstyp,
		Produktionsart,
		Bestellungskopf->Abteilung,
		Lagerort,
		0 AS Vortrag,
		0 AS VMenge,
		AnzahlGebinde AS EMenge
		From DBAgrofreshEK.Bestellungspos
		WHERE Bestellungskopf->Annahmedatum > {d :vonDatum} and Bestellungskopf->Annahmedatum <= {d :bisDatum} 
		AND Bestellungskopf->Mandant =:MandantOid
		AND Artikel IS NOT NULL
		AND Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Bestellungskopf->Abteilung = :abteilung OR :abteilung = "")
		UNION ALL
		SELECT
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS Artikeltext,
		Mengeneinheit,
		Qualitaet,
		Gebinde,
		Abzugstyp,
		Produktionsart,
		Auftragskopf->Abteilung AS Abteilung,
		Lagerort,
		0 AS Vortrag,
		AnzahlGebinde AS VMenge,
		0 AS EMenge
		From DBAgrofresh.Auftragspos
		WHERE Auftragskopf->Lieferdatum > {d :vonDatum} and Auftragskopf->Lieferdatum <= {d :bisDatum} 
		AND Auftragskopf->Mandant =:MandantOid
		AND Artikel IS NOT NULL
		AND Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Auftragskopf->Abteilung = :abteilung OR :abteilung = "")
		UNION ALL
		SELECT 
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Artikel->Mandant, :Lang) AS Artikeltext,
		Einheit AS Mengeneinheit,
		Qualitaet,
		Gebinde,
		Abzugstyp,
		Produktionsart,
		Abteilung,
		Lagerort,
		Bestand AS Vortrag,
		0 AS VMenge,
		0 AS EMenge
		From DBAgrofresh.ArtikelInventar 
		WHERE Artikel->Mandant = :MandantOid
		AND PerDatum = {d :vonDatum}
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Abteilung = :abteilung OR :abteilung = "")
	) GROUP BY Artikel, Mengeneinheit, Gebinde, Qualitaet, Abzugstyp, Produktionsart, Lagerort, Abteilung]]></SqlQuery>
</Query>

<Query name="ListeIventarDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,vonDatum:%Date,bisDatum:%Date,lagerort:%String,abteilung:%String,Lang:%String,BisArtGrp:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Artikel, ArtikelNr, 
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel, :MandantOid, :Lang) AS Artikeltext, 
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS Mengeneinheit, 
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, :MandantOid, :Lang) AS Qualitaet, 
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) As Gebinde, 
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, :MandantOid, :Lang) As Abzugstyp, 
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Lagerort, :MandantOid, :Lang) AS Lagerort, 
	DBCore.Abteilung_GetBezeichnungClass(Abteilung, :MandantOid, :Lang) AS Abteilung,
	SUM(Vortrag) AS Vortrag, SUM(VMenge) AS VMenge, SUM(EMenge) AS EMenge
	FROM(
		SELECT 
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Bestellungskopf->Mandant, :Lang) AS Artikeltext,
		Mengeneinheit,
		Qualitaet,
		Gebinde,
		Abzugstyp,
		Produktionsart,
		Bestellungskopf->Abteilung,
		Lagerort,
		0 AS Vortrag,
		0 AS VMenge,
		AnzahlGebinde AS EMenge
		From DBAgrofreshEK.Bestellungspos
		WHERE Bestellungskopf->Annahmedatum > {d :vonDatum} and Bestellungskopf->Annahmedatum <= {d :bisDatum} 
		AND Bestellungskopf->Mandant =:MandantOid
		AND Artikel IS NOT NULL
		AND Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Bestellungskopf->Abteilung = :abteilung OR :abteilung = "")
		UNION ALL
		SELECT
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS Artikeltext,
		Mengeneinheit,
		Qualitaet,
		Gebinde,
		Abzugstyp,
		Produktionsart,
		Auftragskopf->Abteilung AS Abteilung,
		Lagerort,
		0 AS Vortrag,
		AnzahlGebinde AS VMenge,
		0 AS EMenge
		From DBAgrofresh.Auftragspos
		WHERE Auftragskopf->Lieferdatum > {d :vonDatum} and Auftragskopf->Lieferdatum <= {d :bisDatum} 
		AND Auftragskopf->Mandant =:MandantOid
		AND Artikel IS NOT NULL
		AND Artikel->Artikelgruppe->ArtikelgruppenNr <= :BisArtGrp
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Auftragskopf->Abteilung = :abteilung OR :abteilung = "")
		UNION ALL
		SELECT 
		Artikel, 
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Artikel->Mandant, :Lang) AS Artikeltext,
		Einheit AS Mengeneinheit,
		Qualitaet,
		Gebinde,
		Abzugstyp,
		Produktionsart,
		Abteilung,
		Lagerort,
		Bestand AS Vortrag,
		0 AS VMenge,
		0 AS EMenge
		From DBAgrofresh.ArtikelInventar 
		WHERE Artikel->Mandant = :MandantOid
		AND PerDatum = {d :vonDatum}
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Abteilung = :abteilung OR :abteilung = "")
	) GROUP BY Artikel, Mengeneinheit, Gebinde, Qualitaet, Abzugstyp, Produktionsart, Lagerort, Abteilung]]></SqlQuery>
</Query>

<Query name="ListeSearchAbzugsarten">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,vonArtikelNr:%String,bisArtikelNr:%String,vonDatum:%Date,bisDatum:%Date,vonAbzug:%Integer,bisAbzug:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,Auftragskopf->AuftragsNr AS AuftragsNr,
	 	Abzugstyp->PositionsNr AS AbzugNr, DBAgrofresh_SD.Abzugstyp_GetTextClass(Abzugstyp, Auftragskopf->Mandant, :Lang) AS Abzugstext,
		Artikel->ArtikelNr AS ArtikelNr,DetailText AS Artikeltext
	From DBAgrofresh.Auftragspos
	WHERE NVL(Abzugstyp->PositionsNr,0) between :vonAbzug and :bisAbzug AND Auftragskopf->Mandant =:MandantOid
		AND Artikel->ArtikelNr between :vonArtikelNr and :bisArtikelNr
		AND Auftragskopf->Lieferdatum between {d :vonDatum} and {d :bisDatum}
	ORDER BY Auftragskopf->AuftragsNr, PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeByLSDatumAdresseVonBis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,vonDatum:%Date,bisDatum:%Date,vonAdresse:%Integer,bisAdresse:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT
	ID as PosID,
	Auftragskopf->AuftragsNr as AuftragsNr,
	PositionsNr AS PositionsNr,
	Auftragskopf->LieferscheinNr  as LieferscheinNr,
	Auftragskopf->Lieferdatum  as Lieferdatum,
	Auftragskopf->Adresse->Adresse->Adressnummer as LieferantNr,
	Auftragskopf->Adresse->Adresse->Name as LieferantName,
	Lieferant->Adressnummer as ProduzentNr,
	Lieferant->Name as ProduzentName,
	Artikel AS Artikel, 
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS Artikeltext,
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS Mengeneinheit, 
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) As Gebinde, 
	AnzahlGebinde AS AnzGebinde,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	Menge AS MengeTotal,
	Preis AS Preis,
	Menge * Preis AS Betrag,
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, :MandantOid, :Lang) As Abzugstyp,
	GrammJeEinheit AS GrammJeEinheit,
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, :MandantOid, :Lang) AS Qualitaet, 
	Herkunft->PositionsNr As "HerkunftNr",
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, Auftragskopf->Mandant, :Lang) As "HerkunftText",
	Herkunft->IsoKennzeichen As "HerkunftIsoKennzeichen",
	DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As Produktionsart,
	Charge->Charge->PositionsNr As "ChargenNr",
	Charge->Charge->Jahr As "ChargenJahr",
	Charge->Charge->Lieferant->Adresse->AdressNummer As "ChargenProduzentNr"
	
	From DBAgrofresh.Auftragspos
	WHERE Auftragskopf->Lieferdatum between {d :vonDatum} and {d :bisDatum}
	AND Auftragskopf->Adresse->Adresse->Adressnummer between :vonAdresse and :bisAdresse
	AND Auftragskopf->Mandant =:MandantOid]]></SqlQuery>
</Query>

<Query name="ListeForRuestscheinNachTouren">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,perDatum:%Date,vonTourNr:%Integer,bisTourNr:%Integer,mitRZ:%Boolean,ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
		Artikelcode, 
		Artikel->ArtikelNr AS "ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikeltext",
		Artikel->Lieferant1 AS "Lieferant.Oid",
		Artikel->Lieferant1->Adressnummer AS "Lieferant.Nr",
		Artikel->Lieferant1->Name AS "Lieferant.Name",
		Artikel->Lieferant1->Strasse || ' ' || NVL(Artikel->Lieferant1->Hausnummer,'') AS "Lieferant.Strasse",
		Artikel->Lieferant1->PLZ || ' ' || Artikel->Lieferant1->Ort AS "Lieferant.PLZOrt",
		DetailText, 
		Gebinde, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As "GebindeBezeichnung",
		Artikel->Lagerplatz As "Herkunft",
		Herkunft->IsoKennzeichen As "HerkunftIso",
		AnzahlJeGebinde, 
		AnzahlGebinde,
		Menge,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS "Mengeneinheit",
		Preis, 
		PreisFW,
		Auftragskopf,
		Auftragskopf->Gebietscode->Code AS "GebietsCode"
		FROM DBAgrofresh.Auftragspos
		WHERE Auftragskopf->Mandant = :MandantOid 
		AND Auftragskopf->Lieferdatum = {d :perDatum}
      	AND Auftragskopf->Gebietscode->Code BETWEEN :vonTourNr AND :bisTourNr
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (NVL(Auftragskopf->Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusRuestzettel() OR (NVL(Auftragskopf->Auftragsstatus,0) = DBAgrofresh.Konst_AuftragstatusRuestzettel() AND :mitRZ = 1))
		ORDER BY Auftragskopf->AuftragsNr, PositionsNr]]></SqlQuery>
</Query>

<Query name="ListePosChargenaufteilung">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,PositionsNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID FROM DBAgrofresh.Auftragspos
	WHERE Auftragskopf->ID = :AuftragOid AND PositionsNr = :PositionsNr AND NVL(ZusatztextID,0) = 0
	ORDER BY ZusatzChargenID]]></SqlQuery>
</Query>

<Query name="ListeChargekontrolle">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Auftragskopf->Auftragsdatum,		
		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->Lieferart->PositionsNr AS "Auftragskopf.Lieferart.Nr", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Auftragskopf->Lieferart, :MandantOid, :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->Sachbearbeiter->Benutzer->Benutzername AS "Auftragskopf.SachbearbeiterBenutzername",
		Auftragskopf->Sachbearbeiter->Name	AS "Auftragskopf.SachbearbeiterName",
		Auftragskopf->Sachbearbeiter->Nummer  	AS "Auftragskopf.SachbearbeiterNr",
		Auftragskopf->Sachbearbeiter->Vorname	AS "Auftragskopf.SachbearbeiterVorname",
		Abzugstyp AS AbzugstypId,
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, :MandantOid, :Lang) As "Abzugstyp.Text",
		AnzahlGebinde, 
		AnzahlGedruckteGebinde, 
		AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel,
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext,
		Artikel->DezFormatMenge As FormatMenge, 
		Artikel->DezFormatPreis As FormatPreis,
		BestellNr, 
		BestellteMenge, 
		DetailText, 
		Gebinde, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung, 
		Lieferant, 
		Lieferdatum, 
		Menge,  
		Mengeneinheit AS MengeneinheitId,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, :MandantOid, :Lang) AS Mengeneinheit, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) AS "Produktionsart.Text", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) AS "Herkunft.Text", 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, :MandantOid, :Lang) AS "Qualitaet.Text", 
		PositionsNr, 
		Preis, 
		PreisFW, 
		DetailPreis,
		RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
		Charge->Charge->PositionsNr AS "Charge.Nummer"
	FROM DBAgrofresh.Auftragspos pos
	WHERE Auftragskopf->Mandant = :MandantOid AND Auftragskopf->Auftragsdatum between {d :vonDatum} AND {d :bisDatum} AND Artikel is not null AND Charge->Charge is null
	
	ORDER BY Auftragskopf->AuftragsNr, pos.PositionsNr]]></SqlQuery>
</Query>

<Query name="DruckVergleichEinkauf">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,NurDiffernez:%Boolean,Lang:%String,Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT ArtikelNr AS "Artikel.ArtikelNr", DBAgrofresh.Artikel_GetArtikeltextClass(ArtikelID, :Mandant, :Lang) As "Artikel.Bezeichnung", 
           DBAgrofresh_SD.Hilfstexte_GetTextClass(MengeneinheitId, :Mandant, :Lang) AS "Artikel.Mengeneinheit", AdressId AS Adresse,
           ArtGrpNr AS "Artikel.ArtikelGrpNr", DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(ArtGrpID,:Mandant, :Lang) AS "Artikel.ArtikelGrpText",
           AdressId, AdressNr, MengeVerkauf, BetragVerkauf, MengeEinkauf, BetragEinkauf 
    FROM(
	    Select ArtikelNr, ArtikelID, MengeneinheitId, AdressId, ArtGrpNr, ArtGrpID, AdressNr, 
	           SUM(MengeVerkauf) AS MengeVerkauf, SUM(BetragVerkauf) AS BetragVerkauf, SUM(MengeEinkauf) AS MengeEinkauf, SUM(BetragEinkauf) AS BetragEinkauf
	    FROM(
		    SELECT Artikel->ArtikelNr as ArtikelNr,
		           Artikel->ID as ArtikelID,
		           Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtGrpNr,
		           Artikel->Artikelgruppe->ID AS ArtGrpID,
		           Auftragskopf->Adresse->Adresse->ID AS AdressId,
		           Auftragskopf->Adresse->Adresse->Adressnummer AS AdressNr,
		           Mengeneinheit AS MengeneinheitId,
		           Menge As MengeVerkauf,
		           BetragExklMwst AS BetragVerkauf,
		           0 AS MengeEinkauf,
		           0 AS BetragEinkauf
		    FROM DBAgrofresh.Auftragspos
		    WHERE Auftragskopf->Mandant = :Mandant
		       AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		       AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		       AND (Auftragskopf->Adresse->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		       AND (Auftragskopf->Lieferdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
		    UNION ALL 
		    SELECT Artikel->ArtikelNr as ArtikelNr,
		           Artikel->ID as ArtikelID,
		           Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtGrpNr,
		           Artikel->Artikelgruppe->ID AS ArtGrpID,
		           Bestellungskopf->Abnehmner->Adresse->ID AS AdressId,
		           Bestellungskopf->Abnehmner->Adresse->Adressnummer AS AdressNr,
		           Mengeneinheit AS MengeneinheitId,
		           0 As MengeVerkauf,
		           0 AS BetragVerkauf,
		           Menge AS MengeEinkauf,
		    	   CASE WHEN Bestellungskopf->CodeMwst = DBCore.Konst_MWSTSTEUERUNGEXKL() THEN BetragExklMwst ELSE BetragInklMwst END AS BetragEinkauf
			FROM DBAgrofreshEK.Bestellungspos
		    WHERE Bestellungskopf->Mandant = :Mandant
		       AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		       AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		       AND (Bestellungskopf->Abnehmner->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		       AND (Bestellungskopf->Annahmedatum BETWEEN {d :VonDatum} AND {d :BisDatum})
    
	    )
	    GROUP BY AdressId, ArtikelNr
    )
    WHERE ((MengeVerkauf <> MengeEinkauf) OR (BetragVerkauf <> BetragEinkauf) OR (:NurDiffernez = 0))
    ORDER BY AdressNr, "Artikel.ArtikelGrpNr", "Artikel.ArtikelNr"]]></SqlQuery>
</Query>

<Query name="DruckVergleichEinkaufDet">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,NurDiffernez:%Boolean,Lang:%String,Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ArtikelNr AS "Artikel.ArtikelNr", DBAgrofresh.Artikel_GetArtikeltextClass(ArtikelID, :Mandant, :Lang) As "Artikel.Bezeichnung", 
	DBAgrofresh_SD.Hilfstexte_GetTextClass(MengeneinheitId, :Mandant, :Lang) AS "Artikel.Mengeneinheit", AdressId AS Adresse,
	AdressId, AdressNr, MengeVerkauf, MengeEinkauf, AuftragsNr, BestellNr
	FROM(
		Select ArtikelNr, ArtikelID, SUM(AuftragsNr) AS AuftragsNr, MengeneinheitId, AdressId, BestellNr, AdressNr, 
		SUM(MengeVerkauf) AS MengeVerkauf, SUM(MengeEinkauf) AS MengeEinkauf
		FROM(
			SELECT Artikel->ArtikelNr as ArtikelNr,
			Artikel->ID as ArtikelID,
			Auftragskopf->AuftragsNr,
			Auftragskopf->BestellNr,
			Auftragskopf->Adresse->Adresse->ID AS AdressId,
			Auftragskopf->Adresse->Adresse->Adressnummer AS AdressNr,
			Mengeneinheit AS MengeneinheitId,
			Menge As MengeVerkauf,
			0 AS MengeEinkauf
			FROM DBAgrofresh.Auftragspos
			WHERE Auftragskopf->Mandant = :Mandant
			AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
			AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
			AND (Auftragskopf->Adresse->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
			AND (Auftragskopf->Lieferdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
			UNION ALL 
			SELECT Artikel->ArtikelNr as ArtikelNr,
			Artikel->ID as ArtikelID,
			0 AS AuftragsNr,
			Bestellungskopf->BestellNrAbnehmer,
			Bestellungskopf->Abnehmner->Adresse->ID AS AdressId,
			Bestellungskopf->Abnehmner->Adresse->Adressnummer AS AdressNr,
			Mengeneinheit AS MengeneinheitId,
			0 As MengeVerkauf,
			Menge AS MengeEinkauf
			FROM DBAgrofreshEK.Bestellungspos
			WHERE Bestellungskopf->Mandant = :Mandant
			AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
			AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
			AND (Bestellungskopf->Abnehmner->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
			AND (Bestellungskopf->Annahmedatum BETWEEN {d :VonDatum} AND {d :BisDatum})

		)
		GROUP BY BestellNr, ArtikelID
	)
	WHERE ((MengeVerkauf <> MengeEinkauf) OR (:NurDiffernez = 0))
	ORDER BY AuftragsNr, "Artikel.ArtikelNr"]]></SqlQuery>
</Query>

<Query name="DruckVergleichEKPreis">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,Lang:%String,Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select ArtikelNr,
		ArtikelText,
		BestellNrAbnehmer,
		EKPreis,
		VKPreis,
		BestellungsNr,
		AuftragsNr
	 FROM(
		Select e.Artikel->ArtikelNr, e.Artikel AS ArtikelText, e.Bestellungskopf->BestellNrAbnehmer, e.Preis AS EKPreis, 
			(SELECT v.Preis FROM DBAgrofresh.Auftragspos as v where v.Artikel = e.Artikel AND v.Auftragskopf->BestellNr = e.Bestellungskopf->BestellNrAbnehmer) AS VKPreis,
			e.Bestellungskopf->BestellungsNr,
			(SELECT v.Auftragskopf->BestellNr FROM DBAgrofresh.Auftragspos as v where v.Artikel = e.Artikel AND v.Auftragskopf->BestellNr = e.Bestellungskopf->BestellNrAbnehmer) AS AuftragsNr
		FROM DBAgrofreshEK.Bestellungspos as e
		WHERE Bestellungskopf->Mandant = :Mandant
			AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
			AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
			AND (Bestellungskopf->Abnehmner->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
			AND (Bestellungskopf->Annahmedatum BETWEEN {d :VonDatum} AND {d :BisDatum})
		UNION SELECT 
			v.Artikel->ArtikelNr, v.Artikel AS ArtikelText, v.Auftragskopf->BestellNr, 
			0 AS EKPreis,
			v.Preis AS VKPreis, 
			0 AS BestellungsNr,
			v.Auftragskopf->AuftragsNr 
		FROM DBAgrofresh.Auftragspos as v
		WHERE v.Auftragskopf->Mandant = :Mandant
			AND (v.Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
			AND (v.Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
			AND (v.Auftragskopf->Adresse->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
			AND (v.Auftragskopf->Lieferdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
			AND  NVL((SELECT COUNT(ID) FROM DBAgrofreshEK.Bestellungspos e where v.Artikel = e.Artikel AND v.Auftragskopf->BestellNr = e.Bestellungskopf->BestellNrAbnehmer),0) = 0
	) WHERE EKPreis<>VKPREIS]]></SqlQuery>
</Query>

<Query name="DruckVergleichEKBestellNr">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,Lang:%String,Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select ArtikelNr, ArtikelID, MengeneinheitId, AdressId, ArtGrpNr, ArtGrpID, AdressNr, BestNr, MengeVerkauf, BetragVerkauf, MengeEinkauf,BetragEinkauf, AuftragNr FROM(
		Select ArtikelNr, ArtikelID, MengeneinheitId, AdressId, ArtGrpNr, ArtGrpID, AdressNr, BestNr,
	    SUM(MengeVerkauf) AS MengeVerkauf, SUM(BetragVerkauf) AS BetragVerkauf, SUM(MengeEinkauf) AS MengeEinkauf, SUM(BetragEinkauf) AS BetragEinkauf, MAX(AuftragNr) AS AuftragNr
	    FROM(
			SELECT Artikel->ArtikelNr as ArtikelNr,
		           Artikel->ID as ArtikelID,
		           Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtGrpNr,
		           Artikel->Artikelgruppe->ID AS ArtGrpID,
		           Auftragskopf->Adresse->Adresse->ID AS AdressId,
		           Auftragskopf->Adresse->Adresse->Adressnummer AS AdressNr,
		           Mengeneinheit AS MengeneinheitId,
		           Menge As MengeVerkauf,
		           BetragExklMwst AS BetragVerkauf,
		           0 AS MengeEinkauf,
		           0 AS BetragEinkauf,
				   Auftragskopf->BestellNr AS BestNr,
				   Auftragskopf->AuftragsNr AS AuftragNr
		    FROM DBAgrofresh.Auftragspos
		     WHERE Auftragskopf->Mandant = :Mandant
		       AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		       AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		       AND (Auftragskopf->Adresse->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		       AND (Auftragskopf->Lieferdatum BETWEEN {d :VonDatum} AND {d :BisDatum})
		    UNION ALL 
		    SELECT Artikel->ArtikelNr as ArtikelNr,
		           Artikel->ID as ArtikelID,
		           Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtGrpNr,
		           Artikel->Artikelgruppe->ID AS ArtGrpID,
		           Bestellungskopf->Abnehmner->Adresse->ID AS AdressId,
		           Bestellungskopf->Abnehmner->Adresse->Adressnummer AS AdressNr,
		           Mengeneinheit AS MengeneinheitId,
		           0 As MengeVerkauf,
		           0 AS BetragVerkauf,
		           Menge AS MengeEinkauf,
		           CASE WHEN Bestellungskopf->CodeMwst = DBCore.Konst_MWSTSTEUERUNGEXKL() THEN BetragExklMwst ELSE BetragInklMwst END AS BetragEinkauf,
				   Bestellungskopf->BestellNrAbnehmer AS BestNr,
				   0 AS AuftragNr
		    FROM DBAgrofreshEK.Bestellungspos
		    WHERE Bestellungskopf->Mandant = :Mandant
		       AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		       AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		       AND (Bestellungskopf->Abnehmner->Adresse->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		       AND (Bestellungskopf->Annahmedatum BETWEEN {d :VonDatum} AND {d :BisDatum})
    
	    ) GROUP BY BestNr, ArtikelID
	) WHERE (MengeVerkauf <> MengeVerkauf) OR (BetragVerkauf <> BetragEinkauf)
	ORDER BY BestNr, ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragTransportDispo">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Artikel,
		Artikel->ArtikelNr AS ArtikelNr,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS Artikeltext,
		GewichtBrutto, 
		GewichtNetto,
		GewichtTara, 
		AnzahlGebinde, 
		Gebinde,
		Gebinde->Stellplatz AS Stellplatz,
		Gebinde->AnzahlJePalette AS AnzJePallette, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung,
		CEILING(AnzahlGebinde / NVL(Gebinde->AnzahlJePalette, 1)) AS AnzahlPaletten,
		PositionsNr,
		"" AS Preis 
		FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf = :Auftrag AND Artikel is not NULL
	    ORDER BY Auftragspos.PositionsNr, ZusatztextID, ZusatzChargenID]]></SqlQuery>
</Query>

<Query name="ListeByVetreterMitVj">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String,VonVertreter:%Integer=0,BisVertreter:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Adresse.VerteterOid", "Adresse.VerteterCode",
		"Artikel.ArtikelNr", "Artikel.Artikeltext", DBAdressen_SD.Vertreter_GetNameClass("Adresse.VerteterOid", :MandantOid, :Lang) AS "Adresse.VerteterName"
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		
		Auftragskopf->Adresse->Adresse->Vertretercode AS "Adresse.VerteterOid", 
		Auftragskopf->Adresse->Adresse->Vertretercode->Code AS "Adresse.VerteterCode",
		
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext"
				
	FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   	AND (NVL(Auftragskopf->Adresse->Adresse->Vertretercode->Code,0) Between :VonVertreter AND :BisVertreter OR :BisVertreter = 0)
	    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 (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus,0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY NVL(Auftragskopf->Adresse->Adresse->Vertretercode->Code,0), Artikel->ArtikelNr
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr, 
		
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		
		Auftragskopf->Adresse->Adresse->Vertretercode AS "Adresse.VerteterOid", 
		Auftragskopf->Adresse->Adresse->Vertretercode->Code AS "Adresse.VerteterCode",
		
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext"
		
	FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf->Adresse->Adresse->Adressnummer >= :AdresseVon AND Auftragskopf->Adresse->Adresse->Adressnummer <= :AdresseBis
	   	AND (NVL(Auftragskopf->Adresse->Adresse->Vertretercode->Code,0) Between :VonVertreter AND :BisVertreter OR :BisVertreter = 0)
	    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 (NVL(Auftragskopf->Auftragsstatus, 0) >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (NVL(Auftragskopf->Auftragsstatus, 0) >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY NVL(Auftragskopf->Adresse->Adresse->Vertretercode->Code,0), Artikel->ArtikelNr
	)
	GROUP BY "Adresse.VerteterCode", "Artikel.ArtikelNr"
	ORDER BY "Adresse.VerteterCode", "Artikel.ArtikelNr"]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.BenAbzuegeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61290,61238.421168</TimeCreated>

<Query name="ListeByArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Artikel:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, Menge, AbDatum,
		   Abteilung->Abteilungnr As Abteilungnr, DBCore.Abteilung_GetBezeichnungClass(Abteilung->%ID, :Lang) As AbteilungBez
	       FROM DBAgrofresh.BenAbzuege WHERE Artikel = :Artikel Order by Artikel->ArtikelNr, Abteilung->Abteilungnr, AbDatum]]></SqlQuery>
</Query>

<Query name="ListeByArtikelAndAbteilung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Artikel:%String,Abteilung:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel, Menge, AbDatum,
		   Abteilung->Abteilungnr As Abteilungnr, DBCore.Abteilung_GetBezeichnungClass(Abteilung->%ID, :Lang) As AbteilungBez
	       FROM DBAgrofresh.BenAbzuege WHERE Artikel = :Artikel AND Abteilung = :Abteilung Order by Artikel->ArtikelNr, Abteilung->Abteilungnr, AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.GebDetailAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61333,66378.708617</TimeCreated>

<Query name="ListeByAuftrag">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,AdressId:%String,MandantOid:%String,Lang:%String,WithPrposed:%Boolean,FibuMandOid:%String,Datum:%Date=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		GebKontr->Gebinde->GebindeNr AS GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung, 
		GebKontr->Gebinde AS GebindeOid,
		Verrechnet, 
		LieferungMenge, 
		RetourenMenge, 
		GebindePreis, 
		NVL(GebindeMiete,0) As GebindeMiete, 
		NVL(GebindeAdminKosten,0) As GebindeAdminKosten, 
		GebindePreisFW, 
		{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwstFW,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwst,
		DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID) AS GebindeSaldoMenge, 
		GebindeSaldoVortrag, 
		Datum, 
		AdminKostenJeLadung
	    FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag
	
	UNION SELECT "" AS ID, 
		GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung, 
		%ID AS GebindeOid,
		0 AS Verrechnet, 
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 As GebindePreis, 
		0 As GebindeMiete, 
		0 As GebindeAdminKosten, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst,
		0 AS GebindeSaldoBetragExklMwstFW, 
		0 AS GebindeSaldoBetragMwst,
		DBAgrofresh.GebKontr_GebindeSaldoVorByGebAdrAuftr(%ID, :AdressId, :Auftrag) AS GebindeSaldoMenge, 
		DBAgrofresh.GebKontr_GebindeSaldoVorByGebAdrAuftr(%ID, :AdressId, :Auftrag) As GebindeSaldoVortrag, 
		CURRENT_DATE AS Datum, 
		0 AS AdminKostenJeLadung
	FROM DBAgrofresh_SD.Gebinde 
	Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
	(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag)
			
	 ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByKunde">
<Type>%SQLQuery</Type>
<FormalSpec>Kunde:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, GebKontr->Gebinde->GebindeNr GebindeNr,  DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, LieferungMenge, RetourenMenge, GebindePreisTotal, GebindePreisFW, GebindeSaldoBetragExklMwst, GebindeSaldoBetragExklMwstFW, GebindeSaldoMenge, Datum,
	    Auftrag->RechnungsNr AS RechnungsNr, Auftrag->LieferscheinNr AS LieferscheinNr, Auftrag->AuftragsNr AS AuftragsNr, GebindeSaldoVortrag 
	    FROM DBAgrofresh.GebDetail WHERE GebKontr->Kunde = :Kunde ORDER BY GebKontr->Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeKundeByDatumOrderGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>Kunde:%String,VonDatum:%Date,BisDatum:%Date,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, GebKontr->Gebinde->GebindeNr GebindeNr,  DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, LieferungMenge, RetourenMenge, Datum, GebindePreis,
	    Auftrag->RechnungsNr AS RechnungsNr, Auftrag->LieferscheinNr AS LieferscheinNr, Auftrag->AuftragsNr AS AuftragsNr 
	    FROM DBAgrofresh.GebDetail WHERE GebKontr->Kunde = :Kunde AND Datum <= {d :BisDatum} AND Datum >= {d :VonDatum} ORDER BY GebKontr->Gebinde->GebindeNr, Datum desc, LieferscheinNr desc]]></SqlQuery>
</Query>

<Query name="ListeKundeByDatumOrderDatum">
<Type>%SQLQuery</Type>
<FormalSpec>Kunde:%String,VonDatum:%Date,BisDatum:%Date,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, GebKontr->Gebinde->GebindeNr GebindeNr,  DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, LieferungMenge, RetourenMenge, Datum, GebindePreis,
	    Auftrag->RechnungsNr AS RechnungsNr, Auftrag->LieferscheinNr AS LieferscheinNr, Auftrag->AuftragsNr AS AuftragsNr 
	    FROM DBAgrofresh.GebDetail WHERE GebKontr->Kunde = :Kunde AND Datum <= {d :BisDatum} AND Datum >= {d :VonDatum} ORDER BY Datum desc, LieferscheinNr desc, GebKontr->Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeKundeByDateGebOrdGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>Kunde:%String,VonDatum:%Date,BisDatum:%Date,Gebinde:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, GebKontr->Gebinde->GebindeNr GebindeNr,  DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, LieferungMenge, RetourenMenge, Datum, GebindePreis,
	    Auftrag->RechnungsNr AS RechnungsNr, Auftrag->LieferscheinNr AS LieferscheinNr, Auftrag->AuftragsNr AS AuftragsNr 
	    FROM DBAgrofresh.GebDetail WHERE GebKontr->Kunde = :Kunde AND GebKontr->Gebinde = :Gebinde AND Datum <= {d :BisDatum} AND Datum >= {d :VonDatum} ORDER BY GebKontr->Gebinde->GebindeNr, Datum desc, LieferscheinNr desc]]></SqlQuery>
</Query>

<Query name="ListeKundeByDateGebOrdDatum">
<Type>%SQLQuery</Type>
<FormalSpec>Kunde:%String,VonDatum:%Date,BisDatum:%Date,Gebinde:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, GebKontr->Gebinde->GebindeNr GebindeNr,  DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, LieferungMenge, RetourenMenge, Datum, GebindePreis,
	    Auftrag->RechnungsNr AS RechnungsNr, Auftrag->LieferscheinNr AS LieferscheinNr, Auftrag->AuftragsNr AS AuftragsNr 
	    FROM DBAgrofresh.GebDetail WHERE GebKontr->Kunde = :Kunde AND GebKontr->Gebinde = :Gebinde AND Datum <= {d :BisDatum} AND Datum >= {d :VonDatum} ORDER BY Datum desc, LieferscheinNr desc, GebKontr->Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruck">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,MandantOid:%String,FibuMandOid:%String,Lang:%String,nurVer:%Boolean,AdressId:%String,WithPrposed:%Boolean,forceVortrag:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		GebKontr->Gebinde->GebindeNr AS GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, 
		GebindePreisFW, 
		{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwstFW,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwstFW,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwstFW,
		LieferungMenge, 
		RetourenMenge, 
		{fn CONVERT(NVL(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(%ID),0), SQL_DOUBLE)} AS GebindeSaldoMenge, 
		Datum, 
		GebKontr->Gebinde AS GebindeOid, 
		{fn CONVERT(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragClass(%ID, :forceVortrag),0), SQL_INTEGER)} AS GebindeSaldoVortrag, 
		MwstSatz
	    FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag AND (:nurVer <>1 OR NVL(DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID), 0)<>0) 
	    
	
	UNION SELECT "" AS ID, 
		GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung,
		0 AS Verrechnet, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst, 
		0 AS GebindeSaldoBetragExklMwstFW,
		0 AS GebindeSaldoBetragInklMwstFW, 
		0 AS GebindeSaldoBetragMwst, 
		0 AS GebindeSaldoBetragMwstFW,
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 AS GebindeSaldoMenge, 
		CURRENT_DATE AS Datum, 
		%ID AS GebindeOid, 
		{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoByGebAuftrClass(%ID, :Auftrag), SQL_DOUBLE)} AS GebindeSaldoVortrag, 
		0 AS MwstSatz
	FROM DBAgrofresh_SD.Gebinde 
	Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
	(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0))
	
	ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruckIfcoGroup">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,MandantOid:%String,FibuMandOid:%String,Lang:%String,nurVer:%Boolean,AdressId:%String,WithPrposed:%Boolean,forceVortrag:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			0 AS GebindeNr, 
			'Ifco' AS Bezeichnung,
			Verrechnet, 
			GebindePreisFW, 
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
			SUM(LieferungMenge) AS LieferungMenge, 
			SUM(RetourenMenge) AS RetourenMenge, 
			SUM(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID)) AS GebindeSaldoMenge, 
			Datum, 
			GebKontr->Gebinde AS GebindeOid, 
			SUM(DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum))))AS GebindeSaldoVortrag,
			MwstSatz
	    FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) like 'IF'
		Group by SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2)
		
	UNION
	SELECT %ID, 
		GebKontr->Gebinde->GebindeNr AS GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Verrechnet, 
		GebindePreisFW, 
		{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwstFW,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwstFW,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwst,
		{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwstFW,
		LieferungMenge, 
		RetourenMenge,
		DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID) AS GebindeSaldoMenge, 
		Datum, 
		GebKontr->Gebinde AS GebindeOid, 
		{fn CONVERT(DBAgrofresh.GebDetail_GebindeSaldoVortragClass(%ID, :forceVortrag), SQL_INTEGER)} AS GebindeSaldoVortrag, 
		MwstSatz
	    FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2)<>'IF'
	    
	UNION SELECT %ID, 
		GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung,
		0 AS Verrechnet, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst, 
		0 AS GebindeSaldoBetragExklMwstFW,
		0 AS GebindeSaldoBetragInklMwstFW, 
		0 AS GebindeSaldoBetragMwst, 
		0 AS GebindeSaldoBetragMwstFW,
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 AS GebindeSaldoMenge, 
		CURRENT_DATE AS Datum, 
		%ID AS GebindeOid, 
		0 AS GebindeSaldoVortrag, 
		0 AS MwstSatz
	FROM DBAgrofresh_SD.Gebinde 
	Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
	(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag = :Auftrag AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0))
	  
	ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeKontr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,firstVorname:%Boolean,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,selIfco:%Boolean,gebindeOid:%String,ohneVortrag:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID								AS "GebDetail.ID", 
			GebKontr->Kunde->ID				AS "GebDetail.GebKontr.Kunde.ID",
			Auftrag->Lieferdatum			AS "GebDetail.Auftrag.Lieferdatum",
			Auftrag->AuftragsNr				AS "GebDetail.Auftrag.AuftragsNr",
			Auftrag->LieferscheinNr			AS "GebDetail.Auftrag.LieferscheinNr",
			Auftrag->RechnungsNr			AS "GebDetail.Auftrag.RechnungsNr",
			GebKontr->Gebinde->GebindeNr 	AS "GebDetail.GebKontr.Gebinde.Nr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) 
											AS "GebDetail.GebKontr.Gebinde.Bezeichnung",
			Verrechnet						AS "GebDetail.Verrechnet", 
			LieferungMenge	 				AS "GebDetail.LieferungMenge",
			RetourenMenge					AS "GebDetail.RetourenMenge", 
			(GebindePreis + NVL(GebindeMiete,0) + NVL(GebindeAdminKosten,0)) AS "GebDetail.GebindePreisTotal", 
			GebindePreisFW					AS "GebDetail.GebindePreisFW", 
			CASE WHEN :ohneVortrag = 1 THEN (NVL(DBAgrofresh.GebDetail_GebindeSaldoPerDatClass(%ID, :vonDatum),0)+ NVL(LieferungMenge,0) - NVL(RetourenMenge,0)) ELSE
			(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragClass(%ID, 1),0)+ NVL(LieferungMenge,0) - NVL(RetourenMenge,0))  END
											AS "GebDetail.GebindeSaldoMenge", 
			Datum							AS "GebDetail.Datum",
			GebKontr->ID				 	AS "GebDetail.GebKontrID"
	    FROM DBAgrofresh.GebDetail as d
	    WHERE GebKontr->Mandant = :MandantOid AND
	    	GebKontr->Kunde->Adressnummer>=:vonAdressnr AND
	    	GebKontr->Kunde->Adressnummer<=:bisAdressnr AND
	    	Datum>={d :vonDatum} AND Datum<={d :bisDatum} AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (GebKontr->Gebinde->Id = :gebindeOid))AND
	    	(NVL(LieferungMenge,0) <> 0 OR NVL(RetourenMenge,0) <> 0)
	    	
	    ORDER BY GebKontr->Gebinde->GebindeNr, Datum, Auftrag->AuftragsNr]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeKontrIfcoGroup">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,firstVorname:%Boolean,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,selIfco:%Boolean,gebindeOid:%String,ohneVortrag:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID								AS "GebDetail.ID", 
			GebKontr->Kunde->ID				AS "GebDetail.GebKontr.Kunde.ID",
			Auftrag->Lieferdatum			AS "GebDetail.Auftrag.Lieferdatum",
			Auftrag->AuftragsNr				AS "GebDetail.Auftrag.AuftragsNr",
			Auftrag->LieferscheinNr			AS "GebDetail.Auftrag.LieferscheinNr",
			Auftrag->RechnungsNr			AS "GebDetail.Auftrag.RechnungsNr",
			0 								AS "GebDetail.GebKontr.Gebinde.Nr", 
			'Ifco'							AS "GebDetail.GebKontr.Gebinde.Bezeichnung",
			Verrechnet						AS "GebDetail.Verrechnet", 
			SUM(LieferungMenge)	 			AS "GebDetail.LieferungMenge",
			SUM(RetourenMenge)				AS "GebDetail.RetourenMenge", 
			(GebindePreis + NVL(GebindeMiete,0) + NVL(GebindeAdminKosten,0)) AS "GebDetail.GebindePreisTotal", 
			GebindePreisFW					AS "GebDetail.GebindePreisFW", 
			CASE WHEN :ohneVortrag = 1 THEN (NVL(DBAgrofresh.GebDetail_GebindeSaldoPerDatIFCOClass(%ID, :Lang, :vonDatum),0)+ SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0))) ELSE
			(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragIFCOClass(%ID, :Lang, 1),0)+ SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0))) END
											AS "GebDetail.GebindeSaldoMenge", 
			Datum							AS "GebDetail.Datum",
			'ifco'						 	AS "GebDetail.GebKontrID"
	    FROM DBAgrofresh.GebDetail as d
	    WHERE GebKontr->Mandant = :MandantOid AND
	    	GebKontr->Kunde->Adressnummer>=:vonAdressnr AND
	    	GebKontr->Kunde->Adressnummer<=:bisAdressnr AND
	    	Datum>={d :vonDatum} AND Datum<={d :bisDatum} AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (GebKontr->Gebinde->Id = :gebindeOid))AND
	    	(NVL(LieferungMenge,0) <> 0 OR NVL(RetourenMenge,0) <> 0) AND
	    	SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) like 'IF' 
	    GROUP BY SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2), Datum
	    	
	UNION
	SELECT %ID								AS "GebDetail.ID", 
			GebKontr->Kunde->ID				AS "GebDetail.GebKontr.Kunde.ID",
			Auftrag->Lieferdatum			AS "GebDetail.Auftrag.Lieferdatum",
			Auftrag->AuftragsNr				AS "GebDetail.Auftrag.AuftragsNr",
			Auftrag->LieferscheinNr			AS "GebDetail.Auftrag.LieferscheinNr",
			Auftrag->RechnungsNr			AS "GebDetail.Auftrag.RechnungsNr",
			GebKontr->Gebinde->GebindeNr 	AS "GebDetail.GebKontr.Gebinde.Nr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) 
											AS "GebDetail.GebKontr.Gebinde.Bezeichnung",
			Verrechnet						AS "GebDetail.Verrechnet", 
			LieferungMenge	 				AS "GebDetail.LieferungMenge",
			RetourenMenge					AS "GebDetail.RetourenMenge", 
			(GebindePreis + NVL(GebindeMiete,0) + NVL(GebindeAdminKosten,0)) AS "GebDetail.GebindePreisTotal", 
			GebindePreisFW					AS "GebDetail.GebindePreisFW", 
			CASE WHEN :ohneVortrag = 1 THEN (NVL(DBAgrofresh.GebDetail_GebindeSaldoPerDatClass(%ID, :vonDatum),0)+ NVL(LieferungMenge,0) - NVL(RetourenMenge,0)) ELSE
			(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragClass(%ID, 1),0)+ NVL(LieferungMenge,0) - NVL(RetourenMenge,0))  END
											AS "GebDetail.GebindeSaldoMenge", 
			Datum							AS "GebDetail.Datum",
			GebKontr->ID				 	AS "GebDetail.GebKontrID"
	    FROM DBAgrofresh.GebDetail as d
	    WHERE GebKontr->Mandant = :MandantOid AND
	    	GebKontr->Kunde->Adressnummer>=:vonAdressnr AND
	    	GebKontr->Kunde->Adressnummer<=:bisAdressnr AND
	    	Datum>={d :vonDatum} AND Datum<={d :bisDatum} AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (GebKontr->Gebinde->Id = :gebindeOid))AND
	    	(NVL(LieferungMenge,0) <> 0 OR NVL(RetourenMenge,0) <> 0) AND
	    	SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) <> 'IF' 
	    	
	    		
	    ORDER BY "GebDetail.GebKontr.Gebinde.Nr", "GebDetail.Datum", "GebDetail.Auftrag.AuftragsNr"]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeKontrOrdDatum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,firstVorname:%Boolean,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,selIfco:%Boolean,gebindeOid:%String,ohneVortrag:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID								AS "GebDetail.ID", 
			GebKontr->Kunde->ID				AS "GebDetail.GebKontr.Kunde.ID",
			Auftrag->Lieferdatum			AS "GebDetail.Auftrag.Lieferdatum",
			Auftrag->AuftragsNr				AS "GebDetail.Auftrag.AuftragsNr",
			Auftrag->LieferscheinNr			AS "GebDetail.Auftrag.LieferscheinNr",
			Auftrag->RechnungsNr			AS "GebDetail.Auftrag.RechnungsNr",
			GebKontr->Gebinde->GebindeNr 	AS "GebDetail.GebKontr.Gebinde.Nr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) 
											AS "GebDetail.GebKontr.Gebinde.Bezeichnung",
			Verrechnet						AS "GebDetail.Verrechnet", 
			LieferungMenge	 				AS "GebDetail.LieferungMenge",
			RetourenMenge					AS "GebDetail.RetourenMenge", 
			(GebindePreis + NVL(GebindeMiete,0) + NVL(GebindeAdminKosten,0)) AS "GebDetail.GebindePreisTotal", 
			GebindePreisFW					AS "GebDetail.GebindePreisFW", 
			CASE WHEN :ohneVortrag = 1 THEN (NVL(DBAgrofresh.GebDetail_GebindeSaldoPerDatClass(%ID, :vonDatum),0)+ NVL(LieferungMenge,0) - NVL(RetourenMenge,0)) ELSE
			(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragClass(%ID, 1),0)+ NVL(LieferungMenge,0) - NVL(RetourenMenge,0))  END
											AS "GebDetail.GebindeSaldoMenge", 
			Datum							AS "GebDetail.Datum", 
			GebKontr->ID				 	AS "GebDetail.GebKontrID"
	    FROM DBAgrofresh.GebDetail as d
	    WHERE GebKontr->Mandant = :MandantOid AND
	    	GebKontr->Kunde->Adressnummer>=:vonAdressnr AND
	    	GebKontr->Kunde->Adressnummer<=:bisAdressnr AND
	    	Datum>={d :vonDatum} AND Datum<={d :bisDatum} AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (GebKontr->Gebinde->Id = :gebindeOid)) AND
	    	(NVL(LieferungMenge,0) <> 0 OR NVL(RetourenMenge,0) <> 0)
	    		
	    ORDER BY Datum, Auftrag->AuftragsNr, GebKontr->Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeKontrODIfGroup">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,firstVorname:%Boolean,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,selIfco:%Boolean,gebindeOid:%String,ohneVortrag:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID								AS "GebDetail.ID", 
			GebKontr->Kunde->ID				AS "GebDetail.GebKontr.Kunde.ID",
			Auftrag->Lieferdatum			AS "GebDetail.Auftrag.Lieferdatum",
			Auftrag->AuftragsNr				AS "GebDetail.Auftrag.AuftragsNr",
			Auftrag->LieferscheinNr			AS "GebDetail.Auftrag.LieferscheinNr",
			Auftrag->RechnungsNr			AS "GebDetail.Auftrag.RechnungsNr",
			0							 	AS "GebDetail.GebKontr.Gebinde.Nr", 
			'Ifco'							AS "GebDetail.GebKontr.Gebinde.Bezeichnung",
			Verrechnet						AS "GebDetail.Verrechnet", 
			SUM(LieferungMenge)	 			AS "GebDetail.LieferungMenge",
			SUM(RetourenMenge)				AS "GebDetail.RetourenMenge", 
			(GebindePreis + NVL(GebindeMiete,0) + NVL(GebindeAdminKosten,0)) AS "GebDetail.GebindePreisTotal", 
			GebindePreisFW					AS "GebDetail.GebindePreisFW", 
			CASE WHEN :ohneVortrag = 1 THEN (NVL(DBAgrofresh.GebDetail_GebindeSaldoPerDatIFCOClass(%ID, :Lang, :vonDatum),0)+ SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0))) ELSE
			(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragIFCOClass(%ID, :Lang, 1),0)+ SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0)))  END
											AS "GebDetail.GebindeSaldoMenge", 
			Datum							AS "GebDetail.Datum",
			'ifco'						 	AS "GebDetail.GebKontrID"
	    FROM DBAgrofresh.GebDetail as d
	    WHERE GebKontr->Mandant = :MandantOid AND
	    	GebKontr->Kunde->Adressnummer>=:vonAdressnr AND
	    	GebKontr->Kunde->Adressnummer<=:bisAdressnr AND
	    	Datum>={d :vonDatum} AND Datum<={d :bisDatum} AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (GebKontr->Gebinde->Id = :gebindeOid))AND
	    	(NVL(LieferungMenge,0) <> 0 OR NVL(RetourenMenge,0) <> 0) AND
	    	SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) like 'IF' 
	    GROUP BY SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2), Datum, Auftrag->LieferscheinNr, GebKontr->Kunde->Adressnummer
	    	
	UNION
	SELECT %ID								AS "GebDetail.ID", 
			GebKontr->Kunde->ID				AS "GebDetail.GebKontr.Kunde.ID",
			Auftrag->Lieferdatum			AS "GebDetail.Auftrag.Lieferdatum",
			Auftrag->AuftragsNr				AS "GebDetail.Auftrag.AuftragsNr",
			Auftrag->LieferscheinNr			AS "GebDetail.Auftrag.LieferscheinNr",
			Auftrag->RechnungsNr			AS "GebDetail.Auftrag.RechnungsNr",
			GebKontr->Gebinde->GebindeNr 	AS "GebDetail.GebKontr.Gebinde.Nr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) 
											AS "GebDetail.GebKontr.Gebinde.Bezeichnung",
			Verrechnet						AS "GebDetail.Verrechnet", 
			LieferungMenge	 				AS "GebDetail.LieferungMenge",
			RetourenMenge					AS "GebDetail.RetourenMenge", 
			(GebindePreis + NVL(GebindeMiete,0) + NVL(GebindeAdminKosten,0)) AS "GebDetail.GebindePreisTotal", 
			GebindePreisFW					AS "GebDetail.GebindePreisFW", 
			CASE WHEN :ohneVortrag = 1 THEN (NVL(DBAgrofresh.GebDetail_GebindeSaldoPerDatClass(%ID, :vonDatum),0)+ SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0))) ELSE
			(NVL(DBAgrofresh.GebDetail_GebindeSaldoVortragClass(%ID, 1),0)+ SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0)))  END
											AS "GebDetail.GebindeSaldoMenge", 
			Datum							AS "GebDetail.Datum",
			GebKontr->ID				 	AS "GebDetail.GebKontrID"
	    FROM DBAgrofresh.GebDetail as d
	    WHERE GebKontr->Mandant = :MandantOid AND
	    	GebKontr->Kunde->Adressnummer>=:vonAdressnr AND
	    	GebKontr->Kunde->Adressnummer<=:bisAdressnr AND
	    	Datum>={d :vonDatum} AND Datum<={d :bisDatum} AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (GebKontr->Gebinde->Id = :gebindeOid))AND
	    	(NVL(LieferungMenge,0) <> 0 OR NVL(RetourenMenge,0) <> 0) AND
	    	SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) <> 'IF' 
	    	GROUP BY Datum, Auftrag->AuftragsNr, GebKontr->Gebinde->GebindeNr
	    	
	    	
	ORDER BY "GebDetail.Datum", "GebDetail.Auftrag.LieferscheinNr", "GebDetail.GebKontr.Gebinde.Nr"]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeschein">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Auftrag:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 'L' As "Art", 
			Auftrag AS "Auftragskopf",
			GebKontr->Gebinde->Gebindenr As "GebindeNr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) 
											AS "Bezeichnung",
			LieferungMenge As "Menge" 
	FROM DBAgrofresh.GebDetail 
	Where Auftrag=:Auftrag  AND 
			LieferungMenge<>0
	UNION SELECT 'R', 
			Auftrag AS "Auftragskopf",
			GebKontr->Gebinde->Gebindenr, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),
			RetourenMenge 
	FROM DBAgrofresh.GebDetail 
	Where Auftrag=:Auftrag AND 
			RetourenMenge<>0
	ORDER BY Art, GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruckSR">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String,FibuMandOid:%String,Lang:%String,nurVer:%Boolean,AdressId:%String,WithPrposed:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			GebKontr->Gebinde->GebindeNr GebindeNr, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
			Verrechnet, 
			SUM(NVL(LieferungMenge,0)) AS LieferungMenge, 
			SUM(NVL(RetourenMenge,0)) AS RetourenMenge, 
			NVL(GebindePreisFW,0) AS GebindePreisFW, 
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
			SUM(NVL(LieferungMenge,0) - NVL(RetourenMenge,0)) AS GebindeSaldoMenge, 
			Datum, 
			GebKontr->Gebinde GebindeOid, 
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum)))AS GebindeSaldoVortrag,
			MwstSatz
		FROM DBAgrofresh.GebDetail WHERE Auftrag->RechnungsNr=:RgNr AND Auftrag->Mandant=:MandantOid AND
	    		Auftrag->Mandant=:MandantOid AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) 
	    GROUP BY GebKontr, GebindePreisTotal, NVL(GebindePreisFW,0)
	    
	
	UNION SELECT %ID, 
		GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung,
		0 AS Verrechnet,
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst, 
		0 AS GebindeSaldoBetragExklMwstFW,
		0 AS GebindeSaldoBetragInklMwstFW, 
		0 AS GebindeSaldoBetragMwst, 
		0 AS GebindeSaldoBetragMwstFW,
		0 AS GebindeSaldoMenge, 
		CURRENT_DATE AS Datum, 
		%ID AS GebindeOid, 
		0 AS GebindeSaldoVortrag, 
		0 AS MwstSatz
	FROM DBAgrofresh_SD.Gebinde 
	Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
	(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag->RechnungsNr=:RgNr AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0))
	
	ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruckSRIfcoGroup">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String,FibuMandOid:%String,Lang:%String,nurVer:%Boolean,AdressId:%String,WithPrposed:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			GebKontr->Gebinde->GebindeNr GebindeNr, 
			'Ifco' AS Bezeichnung,
			Verrechnet, 
			SUM(LieferungMenge) AS LieferungMenge, 
			SUM(RetourenMenge) AS RetourenMenge, 
			NVL(GebindePreisFW,0) AS GebindePreisFW, 
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
			SUM(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID)) AS GebindeSaldoMenge, 
			Datum, 
			GebKontr->Gebinde GebindeOid, 
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum)))AS GebindeSaldoVortrag,
			MwstSatz
	    FROM DBAgrofresh.GebDetail 
	    WHERE Auftrag->RechnungsNr=:RgNr AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) like 'IF' AND 
	    		Auftrag->Mandant=:MandantOid AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) 
	    GROUP BY SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2), GebindePreisTotal, NVL(GebindePreisFW,0)
		
	    UNION     
		SELECT %ID, 
				GebKontr->Gebinde->GebindeNr GebindeNr, 
				DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
				Verrechnet, 
				SUM(LieferungMenge) AS LieferungMenge, 
				SUM(RetourenMenge) AS RetourenMenge, 
				GebindePreisFW, 
				{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
				SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
				SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
				SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
				SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
				SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
				SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
				SUM(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID)) AS GebindeSaldoMenge, 
				Datum, 
				GebKontr->Gebinde GebindeOid, 
				DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum)))AS GebindeSaldoVortrag,
				MwstSatz
		    FROM DBAgrofresh.GebDetail 
		    WHERE Auftrag->RechnungsNr=:RgNr AND Auftrag->Mandant=:MandantOid AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) 
		     	  AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) <> 'IF'
		    GROUP BY GebKontr, GebindePreisTotal, NVL(GebindePreisFW,0)
	
	UNION SELECT %ID, 
		GebindeNr, 
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung,
		0 AS Verrechnet,
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst, 
		0 AS GebindeSaldoBetragExklMwstFW,
		0 AS GebindeSaldoBetragInklMwstFW, 
		0 AS GebindeSaldoBetragMwst, 
		0 AS GebindeSaldoBetragMwstFW,
		0 AS GebindeSaldoMenge, 
		CURRENT_DATE AS Datum, 
		%ID AS GebindeOid, 
		0 AS GebindeSaldoVortrag, 
		0 AS MwstSatz
	FROM DBAgrofresh_SD.Gebinde 
	Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
	(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag->RechnungsNr=:RgNr AND (:nurVer <>1 OR  DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0))
	
	ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByVerteillisteDruckIfcoGr">
<Type>%SQLQuery</Type>
<FormalSpec>VlNr:%Integer,MandantOid:%String,FibuMandOid:%String,Lang:%String,NurVer:%Boolean,AdressId:%String,WithPrposed:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			0 AS GebindeNr, 
			'Ifco' AS Bezeichnung,
			Verrechnet, 
			SUM(LieferungMenge) AS LieferungMenge, 
			SUM(RetourenMenge) AS RetourenMenge, 
			GebindePreisFW, 
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
			SUM(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID)) AS GebindeSaldoMenge, 
			Datum, 
			GebKontr->Gebinde GebindeOid, 
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum)))AS GebindeSaldoVortrag,
			MwstSatz
		FROM DBAgrofresh.GebDetail 
		WHERE Auftrag->VerteillisteNr=:VlNr AND Auftrag->Mandant=:MandantOid AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) like 'IF' AND 
	    		((:NurVer=1 AND DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) OR :NurVer<>1)
	    GROUP BY SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2), GebindePreisTotal, NVL(GebindePreisFW,0)
	UNION
	SELECT %ID, 
			GebKontr->Gebinde->GebindeNr GebindeNr, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
			Verrechnet, 
			SUM(LieferungMenge) AS LieferungMenge, 
			SUM(RetourenMenge) AS RetourenMenge, 
			NVL(GebindePreisFW,0) AS GebindePreisFW, 
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
			SUM(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID)) AS GebindeSaldoMenge, 
			Datum, 
			GebKontr->Gebinde GebindeOid, 
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum)))AS GebindeSaldoVortrag,
			MwstSatz
		FROM DBAgrofresh.GebDetail 
		WHERE Auftrag->VerteillisteNr=:VlNr AND Auftrag->Mandant=:MandantOid AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang),1,2) <> 'IF' AND 
	    		((:NurVer=1 AND DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) OR :NurVer<>1)
	    GROUP BY GebKontr, GebindePreisTotal, NVL(GebindePreisFW,0)
	
	UNION SELECT %ID, GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung,
		0 AS Verrechnet,
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst, 
		0 AS GebindeSaldoBetragExklMwstFW,
		0 AS GebindeSaldoBetragInklMwstFW, 
		0 AS GebindeSaldoBetragMwst, 
		0 AS GebindeSaldoBetragMwstFW,
		0 AS GebindeSaldoMenge, 
		CURRENT_DATE AS Datum, 
		%ID AS GebindeOid, 
		0 AS GebindeSaldoVortrag, 
		0 AS MwstSatz
	FROM DBAgrofresh_SD.Gebinde 
	Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
	(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag->VerteillisteNr=:VlNr AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0))
	
	 ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByVerteillisteDruck">
<Type>%SQLQuery</Type>
<FormalSpec>VlNr:%Integer,MandantOid:%String,FibuMandOid:%String,Lang:%String,NurVer:%Boolean,AdressId:%String,WithPrposed:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
			GebKontr->Gebinde->GebindeNr GebindeNr, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
			Verrechnet, 
			SUM(LieferungMenge) AS LieferungMenge, 
			SUM(RetourenMenge) AS RetourenMenge, 
			NVL(GebindePreisFW,0) AS GebindePreisFW, 
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragExklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragInklMwstFW,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwst,
			SUM({fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)}) AS GebindeSaldoBetragMwstFW,
			SUM(DBAgrofresh.GebDetail_GebindeSaldoMengeClass(ID)) AS GebindeSaldoMenge, 
			Datum, 
			GebKontr->Gebinde GebindeOid,
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(GebKontr, TO_DATE(MIN(Datum)))AS GebindeSaldoVortrag, 
			MwstSatz
		FROM DBAgrofresh.GebDetail 
		WHERE Auftrag->VerteillisteNr=:VlNr AND Auftrag->Mandant=:MandantOid AND 
	    		((:NurVer=1 AND DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0) OR :NurVer<>1)
	    GROUP BY GebKontr, GebindePreisTotal, NVL(GebindePreisFW,0)
	    
	UNION SELECT %ID, GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) AS Bezeichnung,
		0 AS Verrechnet,
		0 AS LieferungMenge, 
		0 AS RetourenMenge, 
		0 AS GebindePreisFW, 
		0 AS GebindePreisTotal, 
		0 AS GebindeSaldoBetragExklMwst, 
		0 AS GebindeSaldoBetragInklMwst, 
		0 AS GebindeSaldoBetragExklMwstFW,
		0 AS GebindeSaldoBetragInklMwstFW, 
		0 AS GebindeSaldoBetragMwst, 
		0 AS GebindeSaldoBetragMwstFW,
		0 AS GebindeSaldoMenge,
		CURRENT_DATE AS Datum, 
		%ID AS GebindeOid, 
		0 AS GebindeSaldoVortrag, 
		0 AS MwstSatz
		FROM DBAgrofresh_SD.Gebinde 
		Where :WithPrposed<>0 AND DBAgrofresh.GebPreis_HasToBeProposed(:FibuMandOid, :AdressId, %ID)= 1 AND %ID NOT IN 
		(SELECT GebKontr->Gebinde FROM DBAgrofresh.GebDetail WHERE Auftrag->VerteillisteNr=:VlNr AND (:nurVer <>1 OR DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)<>0))
	
	   ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeByGesamtScheinDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,LSNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[                SELECT Bestellung->Adresse->Adresse->Adressnummer As AdressNr,
                    DBAdressen.Adresse_GetName(Bestellung->Adresse->Adresse->Adresscode, Bestellung->Adresse->Adresse->Name, Bestellung->Adresse->Adresse->VornameZusatz1, 0) AS Lieferant,
                    Bestellung->AnnahmeNr AS AuftragNr,
                    SUM(DBAgrofreshEK.GebDetail_GebindeSaldoMengeClass(ID)) AS Menge
                    FROM DBAgrofreshEK.GebDetail 
                    WHERE Bestellung->AnnahmeNr between (:LSNr*100) AND (:LSNr*100+99) 
                    AND Bestellung->Mandant = :MandantOid 
                    AND GebKontr->Gebinde->GebindeNr <= 60
                                AND DBAgrofreshEK.GebDetail_GebindeSaldoMengeClass(ID) <> 0
                    GROUP BY Bestellung->Adresse->Adresse->Adressnummer
                    ORDER BY Bestellung->Adresse->Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="VbGebindedetails">
<Type>%SQLQuery</Type>
<FormalSpec>RgNr:%Integer,MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
			{fn CONVERT(DBAgrofresh.GebDetail_GebindePreisTotalClass(ID), SQL_DOUBLE)} AS GebindePreisTotal, 
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragExklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwst,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwst,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetExklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragExklMwstFW,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetInklMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragInklMwstFW,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMwstClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwst,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetMwstFWClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMwstFW,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragMieteClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragMiete,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragAdminClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragAdmin,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindeSaldoBetragBetragClass(ID)), SQL_DOUBLE)} AS GebindeSaldoBetragBetrag,
			{fn CONVERT(DBUtils.NumberUtils_RoundGemEinst(:MandantOid,DBAgrofresh.GebDetail_GebindePreisTotalClass(ID)), SQL_DOUBLE)} AS GebindePreisTotal,
			GebindePreis,
			GebKontr->Gebinde->FibuKontoEK AS GebKontrGebindeFibuKontoEK,
			GebKontr->Gebinde->FibuKontoVK AS GebKontrGebindeFibuKontoVK,
			GebKontr->Gebinde->FibuKontoMiete AS GebKontrGebindeFibuKontoMiete,
			GebKontr->Gebinde->FibuKontoMieteAufw AS GebKontrGebindeFibuKontoMieteAufw,
			GebKontr->Gebinde->FibuKontoAdminkosten AS GebKontrGebindeFibuKontoAdminkosten,
			GebKontr->Gebinde->MwstMieteAufw AS GebKontrGebindeMwstMieteAufw,
			GebKontr->Gebinde->MwstMieteErl AS GebKontrGebindeMwstMieteErl,
			GebKontr->Gebinde->MwstAdminkosten AS GebKontrGebindeMwstAdminkosten,
			{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFakturierungClass(GebKontr->Gebinde->MwstMieteAufw, Datum), SQL_DOUBLE)}  AS GebKontrGebindeMwstSatzMieteAufw,
			{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFakturierungClass(GebKontr->Gebinde->MwstMieteErl, Datum), SQL_DOUBLE)}  AS GebKontrGebindeMwstSatzMieteErl,
			{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFakturierungClass(GebKontr->Gebinde->MwstAdminkosten, Datum), SQL_DOUBLE)}  AS GebKontrGebindeMwstSatzAdminkosten,
			GebKontr->Gebinde->MwstEK AS GebKontrGebindeMwstEK,
          	{fn CONVERT(DBFibu_SD.Mwst_GetMwstSatzFakturierungClass(GebKontr->Gebinde->MwstEK, Datum), SQL_DOUBLE)}  AS GebKontrGebindeMwstSatzEK,
          	Mwst,
			MwstSatz,
          	Auftrag->IsStorno AS "Storno",
          	DBAgrofresh.Auftragspos_AuftragHasArtikel(Auftrag) AS "HasArtikel",
          	GebKontr->Gebinde->GebindeNr AS GebKontrGebindeNr						
	FROM DBAgrofresh.GebDetail 
	WHERE Auftrag->RechnungsNr=:RgNr AND 
			Auftrag->Mandant=:MandantOid AND
			DBAgrofresh.GebDetail_GebindeSaldoBetragInklMwstClass(ID)<>0]]></SqlQuery>
</Query>

<Query name="ListeGesamtByKunde">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonAdrNr:%Integer,BisAdrNr:%Integer,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Bestellung->Adresse->Adresse->Adressnummer As "Lieferant.AdressNr",
		DBAdressen.Adresse_GetName(Bestellung->Zahladresse->Adresse->Adresscode, Bestellung->Zahladresse->Adresse->Name, Bestellung->Zahladresse->Adresse->VornameZusatz1, 0) AS "Lieferant.Name",
		Bestellung->Zahladresse->Adresse->Strasse AS "Lieferant.Strasse",
		Bestellung->Zahladresse->Adresse->PLZ AS "Lieferant.PLZ",
		Bestellung->Zahladresse->Adresse->Ort AS "Lieferant.Ort",

		Bestellung->Adresse->Adresse->Adressnummer As "BestAdresse.AdressNr",
		DBAdressen.Adresse_GetName(Bestellung->Adresse->Adresse->Adresscode, Bestellung->Adresse->Adresse->Name, Bestellung->Adresse->Adresse->VornameZusatz1, 0) AS "BestAdresse.Name",
		Bestellung->Adresse->Adresse->Strasse AS "BestAdresse.Strasse",
		Bestellung->Adresse->Adresse->PLZ AS "BestAdresse.PLZ",
		Bestellung->Adresse->Adresse->Ort AS "BestAdresse.Ort",

		Bestellung->Abnehmner->Adresse->Adressnummer AS "Abnehmer.AdressNr",
		DBAdressen.Adresse_GetName(Bestellung->Abnehmner->Adresse->Adresscode, Bestellung->Abnehmner->Adresse->Name, Bestellung->Abnehmner->Adresse->VornameZusatz1, 0) AS "Abnehmer.Name",
		Bestellung->Abnehmner->Adresse->PLZ AS "Abnehmer.PLZ",
		Bestellung->Abnehmner->Adresse->Ort AS "Abnehmer.Ort",
		Bestellung->Abnehmner->Adresse->Strasse AS "Abnehmer.Strasse",
		SUM(DBAgrofreshEK.GebDetail_GebindeSaldoMengeClass(ID)) AS Menge
		FROM DBAgrofreshEK.GebDetail 
		WHERE Bestellung->Abnehmner->Adresse->Adressnummer BETWEEN :VonAdrNr AND :BisAdrNr
		AND Bestellung->Annahmedatum BETWEEN {d :VonDatum} and {d :BisDatum}
		AND Bestellung->Mandant = :MandantOid 
		AND GebKontr->Gebinde->GebindeNr <= 60
		AND DBAgrofreshEK.GebDetail_GebindeSaldoMengeClass(ID) <> 0
		GROUP BY Bestellung->Abnehmner->Adresse->Adressnummer, Bestellung->Adresse->Adresse->Adressnummer
		ORDER BY Bestellung->Abnehmner->Adresse->Adressnummer, Bestellung->Adresse->Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeGesamtByLieferant">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonDatum:%Date,BisDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[                SELECT Bestellung->Adresse->Adresse->Adressnummer As "Lieferant.AdressNr",
                    DBAdressen.Adresse_GetName(Bestellung->Zahladresse->Adresse->Adresscode, Bestellung->Zahladresse->Adresse->Name, Bestellung->Zahladresse->Adresse->VornameZusatz1, 0) AS "Lieferant.Name",
                    Bestellung->Zahladresse->Adresse->Strasse AS "Lieferant.Strasse",
                    Bestellung->Zahladresse->Adresse->PLZ AS "Lieferant.PLZ",
                    Bestellung->Zahladresse->Adresse->Ort AS "Lieferant.Ort",
                    
                    Bestellung->Adresse->Adresse->Adressnummer As "BestAdresse.AdressNr",
                    DBAdressen.Adresse_GetName(Bestellung->Adresse->Adresse->Adresscode, Bestellung->Adresse->Adresse->Name, Bestellung->Adresse->Adresse->VornameZusatz1, 0) AS "BestAdresse.Name",
                    Bestellung->Adresse->Adresse->Strasse AS "BestAdresse.Strasse",
                    Bestellung->Adresse->Adresse->PLZ AS "BestAdresse.PLZ",
                    Bestellung->Adresse->Adresse->Ort AS "BestAdresse.Ort",
                    
                    SUM(DBAgrofreshEK.GebDetail_GebindeSaldoMengeClass(ID)) AS Menge
                    FROM DBAgrofreshEK.GebDetail as Data
                    WHERE Bestellung->Annahmedatum BETWEEN {d :VonDatum} and {d :BisDatum}
                    AND Bestellung->Mandant = :MandantOid 
                    AND GebKontr->Gebinde->GebindeNr <= 60
                                AND DBAgrofreshEK.GebDetail_GebindeSaldoMengeClass(ID) <> 0
                    GROUP BY Bestellung->Adresse->Adresse->Adressnummer
                    ORDER BY Bestellung->Adresse->Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeInventar">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonDatum:%Date,BisDatum:%Date,lagerort:%String,abteilung:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, Gebinde, GebindeNr, Bezeichnung AS GebindeText, Lagerort, Abteilung, SUM(Vortrag) AS Vortrag, SUM(Ausgang) AS Ausgang, SUM(Eingang) AS Eingang
	FROM(
	SELECT %ID, GebKontr->Gebinde AS Gebinde, GebKontr->Gebinde->GebindeNr GebindeNr,  
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Auftrag->Lagerort AS Lagerort,
		Auftrag->Abteilung AS Abteilung,
		0 AS Vortrag,
		LieferungMenge AS Ausgang, 
		RetourenMenge AS Eingang
	    FROM DBAgrofresh.GebDetail 
	    WHERE Auftrag->Mandant = :MandantOid 
	    AND Datum <= {d :BisDatum} AND Datum > {d :VonDatum}
	    AND	(Auftrag->Lagerort = :lagerort OR :lagerort = "")
		AND	(Auftrag->Abteilung = :abteilung OR :abteilung = "")
	UNION ALL
	SELECT %ID, GebKontr->Gebinde AS Gebinde, GebKontr->Gebinde->GebindeNr GebindeNr,  
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Bestellung->Lagerort AS Lagerort,
		Bestellung->Abteilung AS Abteilung,
		0 AS Vortrag,
		AuslieferungMenge AS Ausgang, 
		AnlieferungMenge AS Eingang
	    FROM DBAgrofreshEK.GebDetail 
	    WHERE Bestellung->Mandant = :MandantOid 
	    AND Datum <= {d :BisDatum} AND Datum > {d :VonDatum}
	    AND	(Bestellung->Lagerort = :lagerort OR :lagerort = "")
		AND	(Bestellung->Abteilung = :abteilung OR :abteilung = "")
   UNION ALL
   SELECT %ID, Gebinde, Gebinde->GebindeNr GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) AS Bezeichnung,
   		Lagerort AS Lagerort,
		Abteilung AS Abteilung,
   		Bestand AS Vortrag,
		0 AS Ausgang, 
		0 AS Eingang
   		FROM DBAgrofresh.Gebindeinventar
   		WHERE Gebinde->Mandant = :MandantOid
   		AND PerDatum = {d :VonDatum}
		AND	(Lagerort = :lagerort OR :lagerort = "")
		AND	(Abteilung = :abteilung OR :abteilung = "")
	) GROUP BY Gebinde, Lagerort, Abteilung]]></SqlQuery>
</Query>

<Query name="ListeAuftragVonBis">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragVon:%Integer,AuftragBis:%Integer,MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	FROM DBAgrofresh.GebDetail 
	WHERE Auftrag->AuftragsNr BETWEEN :AuftragVon AND :AuftragBis
	AND Auftrag->Mandant = :MandantOid]]></SqlQuery>
</Query>

<Query name="ListeIdsByAuftrag">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID
	FROM DBAgrofresh.GebDetail 
	WHERE Auftrag=:AuftragOid</SqlQuery>
</Query>

<Query name="ListeCheckVerrechnet">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT GebKontr->Gebinde AS Gebinde, GebKontr->Gebinde->GebindeNr GebindeNr,  
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, :MandantOid, 'de') AS Bezeichnung,
		Auftrag->AuftragsNr AS Auftrag
	FROM DBAgrofresh.GebDetail 
	WHERE Auftrag->Mandant = :MandantOid AND Auftrag->Auftragsstatus>= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() 
	AND Auftrag->GebindeVerrechnung >= 3  AND NVL(Verrechnet,0)<>1 AND NVL(NieVerrechnen, 0) = 0
	AND DBAgrofresh.Auftragskopf_IsStatusGedruckt(Auftrag->BearbeitungsstatusRG) = 1
	Order By Auftrag->AuftragsNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.GebKontrAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61340,60977.024142</TimeCreated>

<Query name="ListeByKunde">
<Type>%SQLQuery</Type>
<FormalSpec>Kunde:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gebinde->GebindeNr GebindeNr,  DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) AS Bezeichnung,
		Lieferung, Retouren, Anfangsbestand, DatumAnfangsbestand, AuslieferungAbgerechnet, AnlieferungAbgerechnet, GebindeSaldo 
	    FROM DBAgrofresh.GebKontr WHERE Kunde = :Kunde ORDER BY Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeKontr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,selIfco:%Boolean,gebindeOid:%String,ohneVortrag:%Boolean,alleDrucken:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID						AS "GebKontr.ID", 
			Kunde->ID               AS "GebKontr.Kunde.ID",
			Gebinde->GebindeNr 		AS "GebKontr.Gebinde.Nr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) 
									AS "GebKontr.Gebinde.Bezeichnung",
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(ID, {d :vonDatum})
									AS "GebKontr.Anfangsbestand",
			CASE WHEN :ohneVortrag = 1 THEN  DBAgrofresh.GebKontr_GebindeSaldoVonBis(ID, {d :vonDatum} , {d :bisDatum}) ELSE
			DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum}) END
									AS "GebKontr.GebindeSaldo",
			(Select SUM(NVL(LieferungMenge,0)) FROM DBAgrofresh.GebDetail 
				WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}) AS "GebKontr.Liefermenge",
			(Select SUM(NVL(RetourenMenge,0)) FROM DBAgrofresh.GebDetail 
				WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}) AS "GebKontr.Retourenmenge"
									
	    FROM DBAgrofresh.GebKontr kopf
	    WHERE Mandant = :MandantOid AND 
	    	Kunde->Adressnummer>=:vonAdressnr AND
	    	Kunde->Adressnummer<=:bisAdressnr AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (Gebinde->Id = :gebindeOid)) AND
	    	Gebinde->GebindeNr < DBAgrofresh.Konst_GebindeFirstNichtVerrechenbar() AND
	    	(NVL((Select SUM(NVL(LieferungMenge,0)) FROM DBAgrofresh.GebDetail WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}),0) <>0 OR
	    	NVL((Select SUM(NVL(RetourenMenge,0)) FROM DBAgrofresh.GebDetail WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}),0) <>0 OR
	    	NVL(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :vonDatum}), 0) <>0 OR
	    	NVL(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum}), 0) <> 0) AND
	    	(:alleDrucken = 1 OR(CASE WHEN :ohneVortrag = 1 THEN  DBAgrofresh.GebKontr_GebindeSaldoVonBis(ID, {d :vonDatum} , {d :bisDatum}) ELSE
			DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum}) END<>0 OR Anfangsbestand<>0))
	    ORDER BY Kunde->Adressnummer, Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeDruckGebindeKontrIfcoGroup">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,selIfco:%Boolean,gebindeOid:%String,ohneVortrag:%Boolean,alleDrucken:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 'ifco'					AS "GebKontr.ID", 
			Kunde->Adressnummer     AS "Adressnummer",
			Kunde->ID               AS "GebKontr.Kunde.ID",
			0				 		AS "GebKontr.Gebinde.Nr", 
			'Ifco'					AS "GebKontr.Gebinde.Bezeichnung",
			DBAgrofresh.GebKontr_GebindeSaldoIFCOPer({d :vonDatum}, :MandantOid, :Lang, Kunde)
									AS "GebKontr.Anfangsbestand",
			CASE WHEN :ohneVortrag = 1 THEN DBAgrofresh.GebKontr_GebindeSaldoIFCOVonBis({d :vonDatum}, {d :bisDatum}, :MandantOid, :Lang, Kunde) ELSE
											DBAgrofresh.GebKontr_GebindeSaldoIFCOPer({d :bisDatum}, :MandantOid, :Lang, Kunde) END
									AS "GebKontr.GebindeSaldo",
			SUM((Select SUM(NVL(LieferungMenge,0)) FROM DBAgrofresh.GebDetail 
				WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum})) AS "GebKontr.Liefermenge",
			SUM((Select SUM(NVL(RetourenMenge,0)) FROM DBAgrofresh.GebDetail 
				WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum})) AS "GebKontr.Retourenmenge"
									
	    FROM DBAgrofresh.GebKontr kopf
	    WHERE Mandant = :MandantOid AND
	    	Kunde->Adressnummer>=:vonAdressnr AND
	    	Kunde->Adressnummer<=:bisAdressnr AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (Gebinde->Id = :gebindeOid)) AND
	    	(NVL((Select SUM(LieferungMenge) FROM DBAgrofresh.GebDetail WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}),0) <>0 OR
	    	NVL((Select SUM(RetourenMenge) FROM DBAgrofresh.GebDetail WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}),0) <>0 OR
	    	((:selIfco=0) OR (NVL(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :vonDatum}), 0) <>0 OR
	    	NVL(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum}), 0) <> 0))) AND
	    	SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang),1,2) like 'IF' 
	    GROUP BY SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang),1,2), Kunde->Adressnummer
	   
	UNION 
	SELECT %ID						AS "GebKontr.ID", 
			Kunde->Adressnummer     AS "Adressnummer",
			Kunde->ID               AS "GebKontr.Kunde.ID",
			Gebinde->GebindeNr 		AS "GebKontr.Gebinde.Nr", 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) 
									AS "GebKontr.Gebinde.Bezeichnung",
			DBAgrofresh.GebKontr_GebindeAnfangsbestandPer(ID, {d :vonDatum})
									AS "GebKontr.Anfangsbestand",
			CASE WHEN :ohneVortrag = 1 THEN DBAgrofresh.GebKontr_GebindeSaldoVonBis(ID, {d :vonDatum} , {d :bisDatum}) ELSE
											DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum}) END
									AS "GebKontr.GebindeSaldo",
			(Select SUM(NVL(LieferungMenge,0)) FROM DBAgrofresh.GebDetail 
				WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}) AS "GebKontr.Liefermenge",
			(Select SUM(NVL(RetourenMenge,0)) FROM DBAgrofresh.GebDetail 
				WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}) AS "GebKontr.Retourenmenge"
									
	    FROM DBAgrofresh.GebKontr kopf
	    WHERE Mandant = :MandantOid AND
	    	(:alleDrucken = 1 OR(GebindeSaldo<>0 OR Anfangsbestand<>0)) AND
	    	Kunde->Adressnummer>=:vonAdressnr AND
	    	Kunde->Adressnummer<=:bisAdressnr AND
	    	((:selIfco=0) OR (DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) LIKE 'IF%')) AND
	    	((NVL(:gebindeOid,'') = '') OR (Gebinde->Id = :gebindeOid)) AND
	    	Gebinde->GebindeNr < DBAgrofresh.Konst_GebindeFirstNichtVerrechenbar() AND
	    	(NVL((Select SUM(NVL(LieferungMenge,0)) FROM DBAgrofresh.GebDetail WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}),0) <>0 OR
	    	NVL((Select SUM(NVL(RetourenMenge,0)) FROM DBAgrofresh.GebDetail WHERE GebKontr=kopf.%ID AND Datum <= {d :bisDatum} AND Datum >= {d :vonDatum}),0) <>0 OR
	    	NVL(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :vonDatum}), 0) <>0 OR
	    	NVL(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum}), 0) <> 0) AND
	    	SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang),1,2)<>'IF'
	
	ORDER BY "Adressnummer", "GebKontr.Gebinde.Nr"]]></SqlQuery>
</Query>

<Query name="ListeDruckAdressen">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,firstVorname:%Boolean,vonDatum:%Date,bisDatum:%Date,vonAdressnr:%Integer,bisAdressnr:%Integer,ohneVortrag:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT Kunde->ID		AS "Adresse.ID", 
			Kunde->Adressnummer 	AS "Adresse.Adressnummer",
			DBAdressen.Adresse_GetName(Kunde->Adresscode, Kunde->Name, Kunde->VornameZusatz1, :firstVorname) 
							AS "Adresse.Name", 
			Kunde->Plz 			AS "Adresse.Plz",
			Kunde->Ort 			AS "Adresse.Ort"
	    FROM DBAgrofresh.GebKontr 
	    WHERE Mandant = :MandantOid AND 
	    	Kunde->Adressnummer>=:vonAdressnr AND
	    	Kunde->Adressnummer<=:bisAdressnr AND
	    	((SELECT (SUM(NVL(LieferungMenge,0)) + SUM(NVL(RetourenMenge,0))) AS bewegungen
	    		FROM DBAgrofresh.GebDetail 
	    		WHERE DBAgrofresh.GebDetail.GebKontr=DBAgrofresh.GebKontr.ID AND
	    				GebKontr->Gebinde->GebindeNr < DBAgrofresh.Konst_GebindeFirstNichtVerrechenbar() AND
	    				DBAgrofresh.GebDetail.Datum>={d :vonDatum} AND 
	    				DBAgrofresh.GebDetail.Datum<={d :bisDatum})>0 OR
	    	(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :vonDatum})<>0 AND :ohneVortrag = 0) OR 
	    	(DBAgrofresh.GebKontr_GebindeSaldoPer(ID, {d :bisDatum})<>0 AND :ohneVortrag = 0))
	    GROUP BY Kunde->ID 
	    ORDER BY Kunde->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeGebindeSaldoCheck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	Select ID,
	(Select SUM(NVL(LieferungMenge,0)) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id) AS CalcLieferung,
	(Select SUM(NVL(RetourenMenge,0)) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id) AS CalcRetouren
	FROM DBAgrofresh.GebKontr kontr
	WHERE Lieferung  <> (Select NVL(SUM(NVL(LieferungMenge,0)),0) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id) OR
	Retouren  <> (Select NVL(SUM(NVL(RetourenMenge,0)),0) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id) AND
	Mandant = :MandantOid]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.GebPreisAF">
<Super>%SerialObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61570,42680.337919</TimeCreated>

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

<Query name="ListeKundenGebPreisNachGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>GebindeOid:%String,KundenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Kunde->Adresse As Adresse, 
			Gebinde, Verrechnen, AbDatum, 
			Preis, Zusatzpreis, Miete, NurSaldoFuehren
	FROM DBAgrofresh.KundenGebPreis
	WHERE Gebinde = :GebindeOid AND Kunde->Adresse = :KundenOid
	ORDER BY AbDatum desc]]></SqlQuery>
</Query>

<Query name="ListeKGGebPreisNachGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>GebindeOid:%String,GruppenOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gruppe->ID As KundenGg, 
			Gebinde, Verrechnen, AbDatum, 
			Preis, Zusatzpreis, Miete, NurSaldoFuehren
	FROM DBAgrofresh.KGGebPreis
	WHERE Gebinde = :GebindeOid AND Gruppe = :GruppenOid
	ORDER BY AbDatum desc]]></SqlQuery>
</Query>

<Query name="ListeKundenGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>KundenOid:%String,GruppenOid:%String,MandantOid:%String,Lang:%String,withKg:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gebinde, Gebinde->GebindeNr AS GebNr, 0 AS isGruppenpreis, 
	Gebinde->GebindeNr AS GebindeNr,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->%ID, :MandantOid, :Lang) As GebindeBezeichnung,
	DBAgrofresh_SD.GebindePreis_GetPreisPerDatum(Gebinde->%ID, CURRENT_DATE) As GebindePreis, 
	DBAgrofresh_SD.GebindePreis_GetZusatzPreisPerDatum(Gebinde->%ID, CURRENT_DATE) As GebindeZusatzpreis,
	NurSaldoFuehren
	FROM DBAgrofresh.KundenGebPreis
	WHERE Kunde->Adresse = :KundenOid Group by Gebinde
	UNION
	SELECT %ID, Gebinde, Gebinde->GebindeNr AS GebNr, 1 AS isGruppenpreis,
	Gebinde->GebindeNr AS GebindeNr,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->%ID, :MandantOid, :Lang) As GebindeBezeichnung,
	DBAgrofresh_SD.GebindePreis_GetPreisPerDatum(Gebinde->%ID, CURRENT_DATE) As GebindePreis, 
	DBAgrofresh_SD.GebindePreis_GetZusatzPreisPerDatum(Gebinde->%ID, CURRENT_DATE) As GebindeZusatzpreis,
	NurSaldoFuehren
	FROM DBAgrofresh.KGGebPreis
	WHERE Gruppe = :GruppenOid AND :withKg = 1 AND Gebinde not in (SELECT Gebinde
	FROM DBAgrofresh.KundenGebPreis
	WHERE Kunde->Adresse = :KundenOid) Group by Gebinde
	
	ORDER BY GebNr]]></SqlQuery>
</Query>

<Query name="ListeKGGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>GruppenOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gruppe As Kundengruppe, Gebinde, 
	Gebinde->GebindeNr AS GebindeNr,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->%ID, :MandantOid, :Lang) As GebindeBezeichnung,
	DBAgrofresh_SD.GebindePreis_GetPreisPerDatum(Gebinde->%ID, CURRENT_DATE) As GebindePreis, 
	DBAgrofresh_SD.GebindePreis_GetZusatzPreisPerDatum(Gebinde->%ID, CURRENT_DATE) As GebindeZusatzpreis,
	NurSaldoFuehren
	FROM DBAgrofresh.KGGebPreis
	WHERE Gruppe = :GruppenOid Group by Gebinde
	ORDER BY Gebinde->GebindeNr]]></SqlQuery>
</Query>

<Storage name="Default">
<Type>%Library.CacheSerialState</Type>
<StreamLocation>^DBAgrofresh.AF.GebPreisAFS</StreamLocation>
</Storage>
</Class>


<Class name="DBAgrofresh.AF.GebindeInventarAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61909,38720.447787</TimeCreated>

<Query name="ListeByDatum">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,PerDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gebinde, Lagerort, Abteilung, Vortrag, Eingang, Ausgang, Bestand,
	      Gebinde->GebindeNr GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) AS Gebindetext
	       FROM DBAgrofresh.GebindeInventar WHERE Gebinde->Mandant = :MandantOid AND PerDatum = {d :PerDatum}]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.KGPreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62438,57873.449853</TimeChanged>
<TimeCreated>61478,40189.192331</TimeCreated>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNrVon:%Integer,ArtGrpNrBis:%Integer,ArtNrVon:%String,ArtNrBis:%String,KgNrVon:%Integer=0,KgNrBis:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			Artikel,
			 Artikel->ArtikelNr AS "Artikel.ArtikelNr",
			DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS  "Artikel.Artikeltext", 
			Abzugstyp->PositionsNr AS "Abzugstyp.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "Abzugstyp.Text", 
	       	AnzahlJeGebinde,
	       	Barcode,
	       	DetailPreis,
	       	EngrosPreis,
	       	AnbruchsPreis,
	       	Gebinde->GebindeNr As "Gebinde.Nr", 
	       	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As "Gebinde.Text", 
	        KundenSpezArtNr,
	 		ArtikelAktiv, 
			Herkunft->PositionsNr As "Herkunft.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	Produktionsart->PositionsNr As "Produktionsart.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As "Produktionsart.Text",
	       	MargeInProzent,
	       	Lieferant->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant->Name As "Lieferant1.Name",
			Menge->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBAgrofresh_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 DBAgrofresh.KGPreis
	WHERE Artikel->Mandant = :MandantOid
		AND (Artikel->ArtikelNr BETWEEN :ArtNrVon AND :ArtNrBis OR :ArtNrVon = '')
	    AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis OR :ArtGrpNrVon = 0)
	    AND (Gruppe->Code BETWEEN :KgNrVon AND :KgNrBis OR :KgNrBis = 0)
	ORDER BY Gruppe->Code]]></SqlQuery>
</Query>

<Query name="ListeIDsByKG">
<Type>%SQLQuery</Type>
<FormalSpec>KGOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	FROM DBAgrofresh.KGPreis
	WHERE Gruppe = :KGOid
	Order by Artikel->Artikelgruppe->ArtikelgruppenNr, Artikel->ArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.KundenPreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62438,60609.780209</TimeChanged>
<TimeCreated>61478,31112.587695</TimeCreated>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNrVon:%Integer,ArtGrpNrBis:%Integer,ArtNrVon:%String,ArtNrBis:%String,AdrNrVon:%Integer=0,AdrNrBis:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID,
			Artikel,
			Artikel->ArtikelNr AS "Artikel.ArtikelNr",
			DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS  "Artikel.Artikeltext", 
			Abzugstyp->PositionsNr AS "Abzugstyp.Nr", 
	       	DBAgrofresh_SD.Abzugstyp_GetTextClass(Abzugstyp, :MandantOid, :Lang) AS "Abzugstyp.Text", 
	       	AnzahlJeGebinde,
	       	Barcode,
	       	DetailPreis,
	       	EngrosPreis,
	       	AnbruchsPreis,
	       	Gebinde->GebindeNr As "Gebinde.Nr", 
	       	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As "Gebinde.Text", 
	        KundenSpezArtNr,
	 		ArtikelAktiv, 
			Herkunft->PositionsNr As "Herkunft.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Herkunft, :MandantOid, :Lang) As "Herkunft.Text",
			Herkunft->IsoKennzeichen As "Herkunft.IsoKennzeichen",
	       	Produktionsart->PositionsNr As "Produktionsart.Nr",
			DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, :MandantOid, :Lang) As "Produktionsart.Text",
	       	MargeInProzent,
	       	Lieferant->Adressnummer As "Lieferant1.AdressNr", 
			Lieferant->Name As "Lieferant1.Name",
			Menge->PositionsNr AS "Mengeneinheit.Nr", 
	       	DBAgrofresh_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 DBAgrofresh.KundenPreis
	WHERE Artikel->Mandant = :MandantOid
		AND (Artikel->ArtikelNr BETWEEN :ArtNrVon AND :ArtNrBis OR :ArtNrVon = '')
	    AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpNrVon AND :ArtGrpNrBis OR :ArtGrpNrVon = 0)
	    AND (Kunde->Adresse->Adressnummer BETWEEN :AdrNrVon AND :AdrNrBis OR :AdrNrBis = 0)
	ORDER BY Kunde->Adresse->Adressnummer]]></SqlQuery>
</Query>

<Query name="ListeIDsByAdresse">
<Type>%SQLQuery</Type>
<FormalSpec>AdressOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	FROM DBAgrofresh.KundenPreis
	WHERE Kunde->Adresse = :AdressOid
	Order by Artikel->Artikelgruppe->ArtikelgruppenNr, Artikel->ArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.LagerbewAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61466,50062.69959</TimeCreated>

<Query name="ListeVonBisDatum">
<Type>%SQLQuery</Type>
<FormalSpec>vonDatum:%Date,bisDatum:%Date,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		ID,
		ArtikelNr, 
		DBAgrofresh.Artikel_GetArtikeltextClass(ID, :mandantOid, :lang) AS Artikeltext,
		DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :mandantOid, :lang) As Mengeneinheit,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :mandantOid, :lang) As Gebinde,
		AnzahlJeGebinde,
		NVL(DBAgrofresh.Lagerbew_GetBestandPerDatum(ID, :vonDatum, LagerLagerbestand),0) As Anfang,
		NVL(DBAgrofresh.Lagerbew_GetMenge(ID, 1, :vonDatum, :bisDatum),0) As Zugang,
		NVL(DBAgrofresh.Lagerbew_GetMenge(ID, 2, :vonDatum, :bisDatum),0) As Abgang,
		NVL(DBAgrofresh.Lagerbew_GetBestandPerDatum(ID, :bisDatum, LagerLagerbestand),0) As Ende
	FROM DBAgrofresh.Artikel
	WHERE 
		Mandant = :mandantOid AND
		NVL(DBAgrofresh.Lagerbew_GetBestandPerDatum(ID, :vonDatum, LagerLagerbestand),0) <> 0 OR
		NVL(DBAgrofresh.Lagerbew_GetMenge(ID, 1, :vonDatum, :bisDatum),0) <> 0 OR
		NVL(DBAgrofresh.Lagerbew_GetMenge(ID, 2, :vonDatum, :bisDatum),0) <> 0 OR
		NVL(DBAgrofresh.Lagerbew_GetBestandPerDatum(ID, :bisDatum, LagerLagerbestand),0) <> 0]]></SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>lagerort:%String,vonDatum:%Date,bisDatum:%Date,vonArtNr:%String,bisArtNr:%String,vonArtGrp:%Integer,bisArtGrp:%Integer,eingangDrucken:%Boolean,ausgangDrucken:%Boolean,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge,
		PreisEW, PreisFW, BetragEW, BetragFW, Kurseinheit, Kurs, Waehrung->ISOSWIFTCode Waehrung,
		KundeLieferant->Kurzname AS KundeKurzname, KundeLieferant->Adressnummer AS KundeNr, 
		KundeLieferant->Plz || ' ' || KundeLieferant->Ort  AS PlzOrt, KundeLieferant->Ort As Ort,
		CASE WHEN Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() THEN Bestelldet->Bestellungskopf->AnnahmeNr ELSE Auftragsdet->Auftragskopf->LieferscheinNr END AS LSANNr,
		CASE WHEN Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() THEN Bestelldet->Bestellungskopf->BestellungsNr ELSE Auftragsdet->Auftragskopf->AuftragsNr END AS AuftragNr,
		KundeLieferant->Name || ' ' || KundeLieferant->VornameZusatz1 AS Name, KundeLieferant->ID AS KundeLieferantID,
		Artikel->ID AS ArtikelId, Artikel->ArtikelNr, Artikel->AnzahlJeGebinde,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		DBAgrofresh_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, :mandantOid, :lang) As Mengeneinheit,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Artikel->Gebinde, :mandantOid, :lang) As Gebinde,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (:lagerort = '' OR Lagerort->ID = :lagerort) AND
		(Buchungsdatum >= {d :vonDatum} AND Buchungsdatum <= {d :bisDatum}) AND
		((Artikel->ArtikelNr between :vonArtNr AND :bisArtNr) OR (:vonArtNr = '' AND :bisArtNr = '')) AND
		((Artikel->Artikelgruppe->ArtikelgruppenNr  between :vonArtGrp AND :bisArtGrp) OR (:vonArtGrp = 0 AND :bisArtGrp = 0)) AND
		((Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() AND :eingangDrucken=1) OR 
		(Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeAbgang() AND :ausgangDrucken=1))
	ORDER BY JournalNr]]></SqlQuery>
</Query>

<Query name="ListeDruckArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>lagerort:%String,vonDatum:%Date,bisDatum:%Date,vonArtNr:%String,bisArtNr:%String,vonArtGrp:%Integer,bisArtGrp:%Integer,eingangDrucken:%Boolean,ausgangDrucken:%Boolean,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge,
		PreisEW, PreisFW, BetragEW, BetragFW, Kurseinheit, Kurs, Waehrung->ISOSWIFTCode Waehrung,
		KundeLieferant->Kurzname AS KundeKurzname, KundeLieferant->Adressnummer AS KundeNr,  
		KundeLieferant->Plz || ' ' || KundeLieferant->Ort  AS PlzOrt, KundeLieferant->Ort As Ort,
		CASE WHEN Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() THEN Bestelldet->Bestellungskopf->AnnahmeNr ELSE Auftragsdet->Auftragskopf->LieferscheinNr END AS LSANNr,
		CASE WHEN Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() THEN Bestelldet->Bestellungskopf->BestellungsNr ELSE Auftragsdet->Auftragskopf->AuftragsNr END AS AuftragNr,
		KundeLieferant->Name || ' ' || KundeLieferant->VornameZusatz1 AS Name, KundeLieferant->ID AS KundeLieferantID,
		Artikel->ID AS ArtikelId, Artikel->ArtikelNr, Artikel->AnzahlJeGebinde,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		DBAgrofresh_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, :mandantOid, :lang) As Mengeneinheit,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Artikel->Gebinde, :mandantOid, :lang) As Gebinde,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (:lagerort = '' OR Lagerort->ID = :lagerort) AND
		(Buchungsdatum >= {d :vonDatum} AND Buchungsdatum <= {d :bisDatum}) AND
		((Artikel->ArtikelNr between :vonArtNr AND :bisArtNr) OR (:vonArtNr = '' AND :bisArtNr = '')) AND
		((Artikel->Artikelgruppe->ArtikelgruppenNr  between :vonArtGrp AND :bisArtGrp) OR (:vonArtGrp = 0 AND :bisArtGrp = 0)) AND
		((Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() AND :eingangDrucken=1) OR 
		(Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeAbgang() AND :ausgangDrucken=1))
	ORDER BY Artikel->ArtikelNr, JournalNr]]></SqlQuery>
</Query>

<Query name="ListeDruckLieferant">
<Type>%SQLQuery</Type>
<FormalSpec>lagerort:%String,vonDatum:%Date,bisDatum:%Date,vonArtNr:%String,bisArtNr:%String,vonArtGrp:%Integer,bisArtGrp:%Integer,vonAdrNr:%Integer,bisAdrNr:%Integer,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge,
		PreisEW, PreisFW, BetragEW, BetragFW, Kurseinheit, Kurs, Waehrung->ISOSWIFTCode Waehrung,
		KundeLieferant->Kurzname AS KundeKurzname, KundeLieferant->Adressnummer AS KundeNr, 
		KundeLieferant->Name || ' ' || KundeLieferant->VornameZusatz1 AS Name, KundeLieferant->ID AS KundeLieferantID,
		Artikel->ID AS ArtikelId, Artikel->ArtikelNr, Artikel->AnzahlJeGebinde,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		DBAgrofresh_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, :mandantOid, :lang) As Mengeneinheit,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Artikel->Gebinde, :mandantOid, :lang) As Gebinde,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (:lagerort = '' OR Lagerort->ID = :lagerort) AND
		(Buchungsdatum >= {d :vonDatum} AND Buchungsdatum <= {d :bisDatum}) AND
		((Artikel->ArtikelNr between :vonArtNr AND :bisArtNr) OR (:vonArtNr = '' AND :bisArtNr = '')) AND
		((KundeLieferant->Adressnummer between :vonAdrNr AND :bisAdrNr) OR (:vonAdrNr = 0 AND :bisAdrNr = 0)) AND
		((Artikel->Artikelgruppe->ArtikelgruppenNr  between :vonArtGrp AND :bisArtGrp) OR (:vonArtGrp = 0 AND :bisArtGrp = 0)) AND
		Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang()
	ORDER BY KundeLieferant->Adressnummer, JournalNr]]></SqlQuery>
</Query>

<Query name="ListeDruckKunden">
<Type>%SQLQuery</Type>
<FormalSpec>lagerort:%String,vonDatum:%Date,bisDatum:%Date,vonArtNr:%String,bisArtNr:%String,vonArtGrp:%Integer,bisArtGrp:%Integer,vonAdrNr:%Integer,bisAdrNr:%Integer,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge,
		PreisEW, PreisFW, BetragEW, BetragFW, Kurseinheit, Kurs, Waehrung->ISOSWIFTCode Waehrung,
		KundeLieferant->Kurzname AS KundeKurzname, KundeLieferant->Adressnummer AS KundeNr, 
		KundeLieferant->Name || ' ' || KundeLieferant->VornameZusatz1 AS Name, KundeLieferant->ID AS KundeLieferantID,
		Artikel->ID AS ArtikelId, Artikel->ArtikelNr, Artikel->AnzahlJeGebinde,
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		DBAgrofresh_SD.Mengencode_GetTextClass(Artikel->Mengeneinheit, :mandantOid, :lang) As Mengeneinheit,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Artikel->Gebinde, :mandantOid, :lang) As Gebinde,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (:lagerort = '' OR Lagerort->ID = :lagerort) AND
		((KundeLieferant->Adressnummer between :vonAdrNr AND :bisAdrNr) OR (:vonAdrNr = 0 AND :bisAdrNr = 0)) AND
		(Buchungsdatum >= {d :vonDatum} AND Buchungsdatum <= {d :bisDatum}) AND
		((Artikel->ArtikelNr between :vonArtNr AND :bisArtNr) OR (:vonArtNr = '' AND :bisArtNr = '')) AND
		((Artikel->Artikelgruppe->ArtikelgruppenNr  between :vonArtGrp AND :bisArtGrp) OR (:vonArtGrp = 0 AND :bisArtGrp = 0)) AND
		Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeAbgang()
	ORDER BY KundeLieferant->Adressnummer, JournalNr]]></SqlQuery>
</Query>

<Query name="ListeAnsichtArtikel">
<Type>%SQLQuery</Type>
<FormalSpec>artOid:%String,lagerort:%String,vonDatum:%Date,bisDatum:%Date,eingangDrucken:%Boolean,ausgangDrucken:%Boolean,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge, KundeLieferant,
		Artikel->ArtikelNr AS ArtikelNr, DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (NVL(:lagerort,'') = '' OR Lagerort->ID = :lagerort) AND
		(Buchungsdatum between {d :vonDatum} AND {d :bisDatum}) AND
		(Artikel = :artOid) AND
		((Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() AND :eingangDrucken=1) OR 
		(Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeAbgang() AND :ausgangDrucken=1))
	ORDER BY Buchungsdatum DESC, JournalNr]]></SqlQuery>
</Query>

<Query name="ListeAnsichtLieferant">
<Type>%SQLQuery</Type>
<FormalSpec>adrOid:%String,lagerort:%String,vonDatum:%Date,bisDatum:%Date,eingangDrucken:%Boolean,ausgangDrucken:%Boolean,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge, KundeLieferant,
		Artikel->ArtikelNr AS ArtikelNr, DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (NVL(:lagerort,'') = '' OR Lagerort->ID = :lagerort) AND
		(Buchungsdatum between {d :vonDatum} AND {d :bisDatum}) AND
		(KundeLieferant = :adrOid) AND
		((Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() AND :eingangDrucken=1) OR 
		(Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeAbgang() AND :ausgangDrucken=1))
	ORDER BY Buchungsdatum DESC, JournalNr]]></SqlQuery>
</Query>

<Query name="ListeAnsichtJournal">
<Type>%SQLQuery</Type>
<FormalSpec>topAnz:%Integer,lagerort:%String,vonDatum:%Date,bisDatum:%Date,eingangDrucken:%Boolean,ausgangDrucken:%Boolean,mandantOid:%String,lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT TOP :topAnz ID,
		JournalNr, Buchungsdatum, Buchungscode, Referenz, BelegNr, Status, Belegtext, Menge, KundeLieferant,
		Artikel->ArtikelNr AS ArtikelNr, DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :mandantOid, :lang) AS Artikeltext,
		ChargenEingang->PositionsNr AS ChargenNr
	FROM DBAgrofresh.Lagerbew bew
	WHERE 
		 Artikel->Mandant = :mandantOid AND
		 (NVL(:lagerort,'') = '' OR Lagerort->ID = :lagerort) AND
		(Buchungsdatum between {d :vonDatum} AND {d :bisDatum}) AND
		((Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeZugang() AND :eingangDrucken=1) OR 
		(Buchungscode = DBAgrofresh.Konst_LagerBuchungscodeAbgang() AND :ausgangDrucken=1))
	ORDER BY Buchungsdatum DESC, JournalNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.PKPreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62256,38632.911131</TimeCreated>

<Query name="ListeIDsByPK">
<Type>%SQLQuery</Type>
<FormalSpec>PKOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID
	FROM DBAgrofresh.PKPreis
	WHERE Kategorie = :PKOid
	Order by Artikel->Artikelgruppe->ArtikelgruppenNr, Artikel->ArtikelNr]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.PreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61282,43170.818333</TimeCreated>

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

<Query name="ListeKundenPreis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenOid:%String,filterAktiv:%Boolean,VonGrpNr:%Integer=0,BisGrpNr:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Kunde->Adresse As Adresse, Artikel, ArtikelAktiv, Preislisten,
    EngrosPreis, DetailPreis, AnbruchsPreis, 
    EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, 
    DatumPreisaenderung, MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet, Verarbeitungsverlust,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.KundenPreis
    WHERE Artikel->Mandant = :MandantOid AND Kunde->Adresse = :KundenOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND (:BisGrpNr = 0 OR Artikel->Artikelgruppe->ArtikelgruppenNr between :VonGrpNr AND :BisGrpNr)
    ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeKGPreis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GruppenOid:%String,filterAktiv:%Boolean,VonGrpNr:%Integer=0,BisGrpNr:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Gruppe, Artikel, ArtikelAktiv, Preislisten,
    EngrosPreis, DetailPreis, AnbruchsPreis, EngrosPreisAbDatum, 
    DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
    MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet, Verarbeitungsverlust,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.KGPreis
    WHERE Artikel->Mandant = :MandantOid
    AND Gruppe = :GruppenOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND (:BisGrpNr = 0 OR Artikel->Artikelgruppe->ArtikelgruppenNr between :VonGrpNr AND :BisGrpNr)
    ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeKundenPreisKText">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenOid:%String,filterAktiv:%Boolean,VonGrpNr:%Integer=0,BisGrpNr:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Kunde->Adresse As Adresse, Artikel, ArtikelAktiv, Preislisten, EngrosPreis, DetailPreis, AnbruchsPreis, 
    EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
    MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr,Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet, Verarbeitungsverlust,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.KundenPreis
    WHERE Artikel->Mandant = :MandantOid
    AND Kunde->Adresse = :KundenOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND (:BisGrpNr = 0 OR Artikel->Artikelgruppe->ArtikelgruppenNr between :VonGrpNr AND :BisGrpNr)
    ORDER BY Artikel->Kurztext]]></SqlQuery>
</Query>

<Query name="ListeKGPreisKText">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GruppenOid:%String,filterAktiv:%Boolean,VonGrpNr:%Integer=0,BisGrpNr:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Gruppe, Artikel, ArtikelAktiv, Preislisten, EngrosPreis, DetailPreis, AnbruchsPreis, 
    EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
    MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde,Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet, Verarbeitungsverlust,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.KGPreis
    WHERE Artikel->Mandant = :MandantOid
    AND Gruppe = :GruppenOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND (:BisGrpNr = 0 OR Artikel->Artikelgruppe->ArtikelgruppenNr between :VonGrpNr AND :BisGrpNr)
    ORDER BY Artikel->Kurztext]]></SqlQuery>
</Query>

<Query name="ListePKPreis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KategorieOid:%String,filterAktiv:%Boolean,VonGrpNr:%Integer=0,BisGrpNr:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Kategorie, Artikel, ArtikelAktiv, Preislisten,
    EngrosPreis, DetailPreis, AnbruchsPreis, EngrosPreisAbDatum, 
    DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
    MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet, Verarbeitungsverlust,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.PKPreis
    WHERE Artikel->Mandant = :MandantOid
    AND Kategorie = :KategorieOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND (:BisGrpNr = 0 OR Artikel->Artikelgruppe->ArtikelgruppenNr between :VonGrpNr AND :BisGrpNr)
    ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePKPreisKText">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KategorieOid:%String,filterAktiv:%Boolean,VonGrpNr:%Integer=0,BisGrpNr:%Integer=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Kategorie, Artikel, ArtikelAktiv, Preislisten, EngrosPreis, DetailPreis, AnbruchsPreis, 
    EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, DatumPreisaenderung,
    MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde,Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet, Verarbeitungsverlust,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.PKPreis
    WHERE Artikel->Mandant = :MandantOid
    AND Kategorie = :KategorieOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND (:BisGrpNr = 0 OR Artikel->Artikelgruppe->ArtikelgruppenNr between :VonGrpNr AND :BisGrpNr)
    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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.KGPreis
	WHERE Artikel->Mandant = :MandantOid 
	AND Gruppe->Code >= :GruppeVon AND Gruppe->Code <= :GruppeBis
	ORDER BY ZusatzArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePreislisteByKG">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GruppeVon:%Integer,GruppeBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Artikel->Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Menge->ID, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	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 EngrosPreis,
	CASE WHEN ((TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (DatumPreisaenderung > CAST(CURRENT_DATE AS Date)))  THEN  DetailPreis ELSE DetailPreisAbDatum END AS DetailPreis,
	CASE WHEN ((TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (DatumPreisaenderung > CAST(CURRENT_DATE AS Date)))  THEN  AnbruchsPreis ELSE AnbruchsPreisAbDatum END AS AnbruchsPreis
	FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid  AND Preislisten = 1
	AND Gruppe->Code >= :GruppeVon AND Gruppe->Code <= :GruppeBis
	ORDER BY ArtikelGruppe, Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePreislisteByAdrNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,AdrNrVon:%Integer,AdrNrBis:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Artikel->Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Menge->ID, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	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 EngrosPreis,
	CASE WHEN ((TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (DatumPreisaenderung >= CAST(CURRENT_DATE AS Date)))  THEN  DetailPreis ELSE DetailPreisAbDatum END AS DetailPreis,
	CASE WHEN ((TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (DatumPreisaenderung >= CAST(CURRENT_DATE AS Date)))  THEN  AnbruchsPreis ELSE AnbruchsPreisAbDatum END AS AnbruchsPreis
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid  AND Preislisten = 1
	AND Kunde->Adresse->Adressnummer >= :AdrNrVon AND Kunde->Adresse->Adressnummer <= :AdrNrBis
	ORDER BY ArtikelGruppe, Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePreislisteByKunde">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenGrpOid:%String,AdressOid:%Integer,PerDatum:%Date,VonArtGrp:%Integer,BisArtGrp:%Integer,onlyPreisliste:%Boolean=1,sortBez:%Boolean=0,basispreise:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT %ID, +:AdressOid AS AdressOid,
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Artikel->Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Menge->ID, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	1 AS IsKundenSpez,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  0 ELSE 1 END AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang)  ELSE Artikel->ArtikelNr END AS sort2,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END AS EngrosPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  DetailPreis ELSE DetailPreisAbDatum END AS DetailPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  AnbruchsPreis ELSE AnbruchsPreisAbDatum END AS AnbruchsPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END * (1 - (NVL(CASE WHEN RabattAktiv=1  THEN RabattProzent ELSE DBAgrofresh_SD.ArtGrKundeRabatt_GetRabatt(Artikel->Artikelgruppe, :AdressOid) END,0) / 100)) AS NettoPreis,
	CAST(NVL(DBAgrofresh.PreisAktion_GetPreisByPreisDatum(ID, {d :PerDatum}), 0) AS DECIMAL) AS AktionsPreis,
	Artikel->Bemerkung AS Bemerkung,
	DBAgrofresh.PreisAktion_IsArtikelAktion(ID, {d :PerDatum}) AS IsAktion
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid
	AND ArtikelAktiv=1 AND (Preislisten=1 OR :onlyPreisliste = 0)
	AND Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp

UNION

SELECT  %ID, +:AdressOid AS AdressOid,
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Artikel->Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Menge->ID, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	0 AS IsKundenSpez,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  0 ELSE 1 END AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang)  ELSE Artikel->ArtikelNr END AS sort2,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END AS EngrosPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  DetailPreis ELSE DetailPreisAbDatum END AS DetailPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  AnbruchsPreis ELSE AnbruchsPreisAbDatum END AS AnbruchsPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END * (1 - (NVL(CASE WHEN RabattAktiv=1  THEN RabattProzent ELSE DBAgrofresh_SD.ArtGrKundeRabatt_GetRabatt(Artikel->Artikelgruppe, :AdressOid) END,0) / 100)) AS NettoPreis,
	CAST(NVL(DBAgrofresh.PreisAktion_GetPreisByPreisDatum(ID, {d :PerDatum}), 0) AS DECIMAL) AS AktionsPreis,
	Artikel->Bemerkung AS Bemerkung,
	DBAgrofresh.PreisAktion_IsArtikelAktion(ID, {d :PerDatum}) AS IsAktion
	FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe->ID = :KundenGrpOid
	AND Artikel->ArtikelNr 
	NOT IN (SELECT  Artikel->ArtikelNr AS ArtikelNr 
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid)
	AND ArtikelAktiv=1 AND (Preislisten=1 OR :onlyPreisliste = 0)
	AND Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp

UNION

SELECT  %ID, +:AdressOid AS AdressOid,
	ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	0 AS IsKundenSpez,
	0 AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang)  ELSE ArtikelNr END AS sort2,
	Basispreis AS EngrosPreis,
	Basispreis AS DetailPreis,
	Basispreis AS AnbruchsPreis,
	Basispreis AS NettoPreis,
	CAST(0 AS DECIMAL) AS AktionsPreis,
	Bemerkung AS Bemerkung,
	0 AS IsAktion	
	FROM DBAgrofresh.Artikel Preis
	WHERE NVL(:basispreise,0) = 1 AND 
	Mandant = :MandantOid
	AND ArtikelNr 
	NOT IN (SELECT  Artikel->ArtikelNr AS ArtikelNr 
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid
	UNION 
	SELECT  Artikel->ArtikelNr AS ArtikelNr FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe->ID = :KundenGrpOid)
	AND ArtikelAktiv=1 AND (Preisliste=1 OR :onlyPreisliste = 0)
	AND Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp
	
ORDER BY ArtikelGruppe, sort2]]></SqlQuery>
</Query>

<Query name="ListeSpezPreislisteByKG">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenGrpOid:%String,EigeneAdressOid:%Integer,PerDatum:%Date,VonArtGrp:%Integer,BisArtGrp:%Integer,onlyPreisliste:%Boolean=1,sortBez:%Boolean=0,basispreise:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT  %ID, +:EigeneAdressOid AS AdressOid,
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Artikel->Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Menge->ID, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	0 AS IsKundenSpez,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  0 ELSE 1 END AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang)  ELSE Artikel->ArtikelNr END AS sort2,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END AS EngrosPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  DetailPreis ELSE DetailPreisAbDatum END AS DetailPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  AnbruchsPreis ELSE AnbruchsPreisAbDatum END AS AnbruchsPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END * (1 - (NVL(CASE WHEN RabattAktiv=1  THEN RabattProzent ELSE DBAgrofresh_SD.ArtGrKundeRabatt_GetRabatt(Artikel->Artikelgruppe, :AdressOid) END,0) / 100)) AS NettoPreis,
	CAST(NVL(DBAgrofresh.PreisAktion_GetPreisByPreisDatum(ID, {d :PerDatum}), 0) AS DECIMAL) AS AktionsPreis,
	Artikel->Bemerkung AS Bemerkung,
	DBAgrofresh.PreisAktion_IsArtikelAktion(ID, {d :PerDatum}) AS IsAktion
	FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe->ID = :KundenGrpOid
	AND ArtikelAktiv=1 AND (Preislisten=1 OR :onlyPreisliste = 0)
	AND Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp

UNION

SELECT  %ID, +:AdressOid AS AdressOid,
	ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	0 AS IsKundenSpez,
	0 AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang)  ELSE ArtikelNr END AS sort2,
	Basispreis AS EngrosPreis,
	Basispreis AS DetailPreis,
	Basispreis AS AnbruchsPreis,
	Basispreis AS NettoPreis,
	CAST(0 AS DECIMAL) AS AktionsPreis,
	Bemerkung AS Bemerkung,
	DBAgrofresh.PreisAktion_IsArtikelAktion(ID, {d :PerDatum}) AS IsAktion
	FROM DBAgrofresh.Artikel Preis
	WHERE NVL(:basispreise,0) = 1 AND 
	Mandant = :MandantOid
	AND ArtikelNr 
	NOT IN (SELECT  Artikel->ArtikelNr AS ArtikelNr 
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid
	UNION 
	SELECT  Artikel->ArtikelNr AS ArtikelNr FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe->ID = :KundenGrpOid)
	AND ArtikelAktiv=1 AND (Preisliste=1 OR :onlyPreisliste = 0)
	AND Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp
	
ORDER BY ArtikelGruppe, sort2]]></SqlQuery>
</Query>

<Query name="ListeSpezPreislisteByPK">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,PKOid:%String,AdressOid:%String,PerDatum:%Date,VonArtGrp:%Integer,BisArtGrp:%Integer,onlyPreisliste:%Boolean=1,sortBez:%Boolean=0,basispreise:%Boolean=0</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT  %ID, +:AdressOid AS AdressOid,
	Artikel->ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikel->Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Artikel->Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Menge->ID, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	0 AS IsKundenSpez,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  0 ELSE 1 END AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang)  ELSE Artikel->ArtikelNr END AS sort2,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END AS EngrosPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  DetailPreis ELSE DetailPreisAbDatum END AS DetailPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  AnbruchsPreis ELSE AnbruchsPreisAbDatum END AS AnbruchsPreis,
	CASE WHEN ((DatumPreisaenderung IS NULL) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') =(TO_DATE(0,'YYYY-MM-DD'))) OR (TO_DATE(DatumPreisaenderung,'YYYY-MM-DD') > TO_DATE(:PerDatum,'YYYY-MM-DD'))) THEN  EngrosPreis ELSE EngrosPreisAbDatum END * (1 - (NVL(CASE WHEN RabattAktiv=1  THEN RabattProzent ELSE DBAgrofresh_SD.ArtGrKundeRabatt_GetRabatt(Artikel->Artikelgruppe, :AdressOid) END,0) / 100)) AS NettoPreis,
	CAST(NVL(DBAgrofresh.PreisAktion_GetPreisByPreisDatum(ID, {d :PerDatum}), 0) AS DECIMAL) AS AktionsPreis,
	Artikel->Bemerkung AS Bemerkung,
	DBAgrofresh.PreisAktion_IsArtikelAktion(ID, {d :PerDatum}) AS IsAktion
	FROM DBAgrofresh.PKPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kategorie->ID = :PKOid
	AND ArtikelAktiv=1 AND (Preislisten=1 OR :onlyPreisliste = 0)
	AND Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp

UNION

SELECT  %ID, +:AdressOid AS AdressOid,
	ArtikelNr AS ArtikelNr,
	DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang) AS Artikeltext, 
	Artikelgruppe->ArtikelgruppenNr AS ArtikelGruppe,
	DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext,
	DBAgrofresh_SD.Herkunft_GetTextClass(Herkunft->ID, :MandantOid, :Lang) As Herkunft,
	Herkunft->IsoKennzeichen As HerkunftCode,
	DBAgrofresh_SD.Produktionsart_GetTextClass(Produktionsart->ID, :MandantOid, :Lang) As Produktionsart,
	DBAgrofresh_SD.Qualitaetsklasse_GetTextClass(Qualitaetsklasse->ID, :MandantOid, :Lang) As Qualitaet,
	DBAgrofresh_SD.Mengencode_GetTextClass(Mengeneinheit, :MandantOid, :Lang) As Mengeneinheit,
	DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) As GebindeBezeichnung,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	0 AS IsKundenSpez,
	0 AS IsPreisAbDatum,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(ID, :MandantOid, :Lang)  ELSE ArtikelNr END AS sort2,
	Basispreis AS EngrosPreis,
	Basispreis AS DetailPreis,
	Basispreis AS AnbruchsPreis,
	Basispreis AS NettoPreis,
	CAST(0 AS DECIMAL) AS AktionsPreis,
	Bemerkung AS Bemerkung,
	0 AS  IsAktion
	FROM DBAgrofresh.Artikel Preis
	WHERE NVL(:basispreise,0) = 1 AND 
	Mandant = :MandantOid
	AND ArtikelNr 
	NOT IN (SELECT  Artikel->ArtikelNr AS ArtikelNr 
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid
	UNION 
	SELECT  Artikel->ArtikelNr AS ArtikelNr FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe->ID = :KundenGrpOid)
	AND ArtikelAktiv=1 AND (Preisliste=1 OR :onlyPreisliste = 0)
	AND Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp
	
ORDER BY ArtikelGruppe, sort2]]></SqlQuery>
</Query>

<Query name="ListeKPreisIdsByArtKunde">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtikelOid:%String,VonKundeAdrNr:%Integer,BisKundeAdrNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Artikel, ZusatzArtikelNr, KundenSpezArtNr
    FROM DBAgrofresh.KundenPreis
    WHERE Artikel->Mandant = :MandantOid 
    AND Artikel = :ArtikelOid
    AND Kunde->Adresse->Adressnummer BETWEEN :VonKundeAdrNr AND :BisKundeAdrNr
    ORDER BY ZusatzArtikelNr]]></SqlQuery>
</Query>

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

<Query name="ListePKPreisIdsByKatNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,ArtikelOid:%String,VonGrpNr:%Integer,BisGrpNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID, Artikel, ZusatzArtikelNr, KundenSpezArtNr
    FROM DBAgrofresh.PKPreis
    WHERE Artikel->Mandant = :MandantOid 
    AND Artikel = :ArtikelOid
    AND Kategorie->Code BETWEEN :VonGrpNr AND :BisGrpNr
    ORDER BY ZusatzArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeKundenKGPreis">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenOid:%String,KGOid:%String,filterAktiv:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, 
		Adresse, 
		Artikel, 
		ArtikelNr, 
		ArtikelAktiv, 
		Preislisten,
    	EngrosPreis, 
    	DetailPreis, 
    	AnbruchsPreis, 
    	Mengeneinheit,
    	EngrosPreisAbDatum, 
    	DetailPreisAbDatum, 
    	AnbruchsPreisAbDatum, 
    	DatumPreisaenderung, 
    	MinMarge, 
    	MaxMarge, 
    	MargeInProzent, 
    	KundenSpezArtNr,
    	Gebinde, 
    	Menge, 
    	ZusatzArtikelNr, 
    	Produktionsart, 
    	Herkunft, 
    	Barcode, 
    	Abzugstyp,
    	RabattProzent, 
    	AnzahlJeGebinde, 
    	ArtikelgruppeOid,
    	ArtikelgruppenNr,
   		Qualitaet,
    	Artikelgruppentext
    
     from (

    SELECT %ID, Kunde->Adresse As Adresse, Artikel, Artikel->ArtikelNr AS ArtikelNr, ArtikelAktiv, Preislisten,
    EngrosPreis, DetailPreis, AnbruchsPreis, Artikel->Mengeneinheit,
    EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, 
    DatumPreisaenderung, MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge, ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.KundenPreis
    WHERE Artikel->Mandant = :MandantOid AND Kunde->Adresse = :KundenOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    
   UNION 
   
   SELECT  %ID, Gruppe As Adresse, Artikel, Artikel->ArtikelNr AS ArtikelNr, ArtikelAktiv, Preislisten,
    EngrosPreis, DetailPreis, AnbruchsPreis, Artikel->Mengeneinheit,
    EngrosPreisAbDatum, DetailPreisAbDatum, AnbruchsPreisAbDatum, 
    DatumPreisaenderung, MinMarge, MaxMarge, MargeInProzent, KundenSpezArtNr,
    Gebinde, Menge,ZusatzArtikelNr, Produktionsart, Herkunft, Barcode, Abzugstyp,
    RabattProzent, AnzahlJeGebinde, Artikel->Artikelgruppe As ArtikelgruppeOid,
    Artikel->Artikelgruppe->ArtikelgruppenNr As ArtikelgruppenNr,
    Artikel->Qualitaetsklasse As Qualitaet,
    DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe, :MandantOid, :Lang) As Artikelgruppentext
    FROM DBAgrofresh.KGPreis
    WHERE Artikel->Mandant = :MandantOid AND Gruppe = :KGOid
    AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv))
    AND Artikel->ArtikelNr NOT IN (SELECT Artikel->ArtikelNr  AS ArtikelNr FROM DBAgrofresh.KundenPreis  
	WHERE Artikel->Mandant = :MandantOid AND Kunde->Adresse = :KundenOid
	AND (:filterAktiv = 0 OR (:filterAktiv = 1 AND ArtikelAktiv = :filterAktiv)))
    )
    ORDER BY ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePreiseHogaSyncByArtGr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonArtGrp:%Integer,BisArtGrp:%Integer,selPreislisten:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID FROM DBAgrofresh.Preis p
    WHERE  Artikel->Mandant = :MandantOid AND
    Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :VonArtGrp AND :BisArtGrp AND
    (Preislisten = 1 OR NVL(:selPreislisten,0) = 0) AND
    Artikel in (SELECT Artikel FROM DBAgrofresh.ArtikelHoga WHERE not GroupObj is NULL AND not MainGroupObj is NULL AND not UnderGroupObj is NULL AND NVL(DeleteInShop,0) = 0) AND
    ID not in (SELECT ID fROM DBAgrofresh.KundenPreis WHERE NVL(Kunde->HogaShopAktiv, 0) = 0)    
    
    ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListePreiseHogaSyncByArtNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonArtNr:%String,BisArtNr:%String,selPreislisten:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT %ID FROM DBAgrofresh.Preis 
    WHERE  Artikel->Mandant = :MandantOid AND
    Artikel->ArtikelNr BETWEEN :VonArtNr AND :BisArtNr AND
    (Preislisten = 1 OR NVL(:selPreislisten,0) = 0) AND
    Artikel in (SELECT Artikel FROM DBAgrofresh.ArtikelHoga WHERE not GroupObj is NULL AND not MainGroupObj is NULL AND not UnderGroupObj is NULL AND NVL(DeleteInShop,0) = 0) AND
    ID not in (SELECT ID fROM DBAgrofresh.KundenPreis WHERE NVL(Kunde->HogaShopAktiv, 0) = 0)    
    
    ORDER BY Artikel->ArtikelNr]]></SqlQuery>
</Query>

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

<Query name="ListeAuftragserfassung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,KundenGrpOid:%String,AdressOid:%Integer,sortBez:%Boolean=0,onylAktArtikel:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[SELECT %ID, Artikel,
	Artikel->Artikelgruppe AS ArtikelGruppe,
	ArtikelAktiv,
	Menge As MengeneinheitId,
	Gebinde,
	Herkunft,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang)  ELSE Artikel->ArtikelNr END AS sort2,
	1 AS IsKundenSpez
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid
	AND ((ArtikelAktiv=:onylAktArtikel) OR (:onylAktArtikel = 0))

UNION

SELECT  %ID, Artikel,
	Artikel->Artikelgruppe AS ArtikelGruppe,
	ArtikelAktiv,
	Menge As MengeneinheitId,
	Gebinde,
	Herkunft,
	AnzahlJeGebinde AS AnzahlJeGebinde,
	CASE :sortBez WHEN 1 THEN DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang)  ELSE Artikel->ArtikelNr END AS sort2,
	0 AS IsKundenSpez
	FROM DBAgrofresh.KGPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Gruppe->ID = :KundenGrpOid
	AND Artikel->ArtikelNr 
	NOT IN (SELECT  Artikel->ArtikelNr AS ArtikelNr 
	FROM DBAgrofresh.KundenPreis Preis
	WHERE Artikel->Mandant = :MandantOid
	AND Kunde->Adresse->ID = :AdressOid)
	AND ((ArtikelAktiv=:onylAktArtikel) OR (:onylAktArtikel = 0))

ORDER BY ArtikelGruppe, sort2]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.PreisAktionAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62438,65656.401751</TimeChanged>
<TimeCreated>62173,40363.451175</TimeCreated>

<Query name="ListeDetails">
<Type>%SQLQuery</Type>
<FormalSpec>PreisOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, AktionVon, AktionBis, Preis, SpezPreis AS SpezPreisID
	FROM DBAgrofresh.PreisAktion
	WHERE SpezPreis = :PreisOid
	Order By AktionVon</SqlQuery>
</Query>

<Query name="ListeDetailsAbDatum">
<Type>%SQLQuery</Type>
<FormalSpec>PreisOid:%String,AbDatum:%Date</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID, AktionVon, AktionBis, Preis, SpezPreis AS SpezPreisID
	FROM DBAgrofresh.PreisAktion
	WHERE SpezPreis = :PreisOid AND AktionBis >= {d :AbDatum}
	Order By AktionVon]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.RueckvergAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61385,39962.972803</TimeCreated>

<Query name="ListeDatumByKunde">
<Type>%SQLQuery</Type>
<FormalSpec>KundeOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, GueltigAbDatum FROM DBAgrofresh.KundenRueckverg
	WHERE Kunde = :KundeOid</SqlQuery>
</Query>

<Query name="ListeDatumByKg">
<Type>%SQLQuery</Type>
<FormalSpec>KgOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, GueltigAbDatum FROM DBAgrofresh.KGRueckverg
	WHERE Gruppe = :KgOid</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.RuestlisteAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62336,38502.058826</TimeCreated>

<Query name="DruckNachProdukt">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonLZeit:%Decimal,BisLZeit:%Decimal,PerDatum:%Date,Lang:%String,Mandant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT	Artikel->ArtikelNr as ArtikelNr,
  			DBAgrofresh.Artikel_GetArtikeltextClass(Artikel, :Mandant, :Lang) As Bezeichnung, 
  			Menge,
   			AnzahlGebinde,
    		AnzahlJeGebinde,
    		Preis,
    		Auftragskopf->Lieferzeit,
    		Charge->Charge->PositionsNr AS "ChargeNummer",
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :Mandant, :Lang) As "GebindeBezeichnung",
 			DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, :Mandant, :Lang) As Einheit,
  			Auftragskopf->Adresse->Adresse->Adressnummer as "Kunde.Adressnummer",
			NVL(Auftragskopf->Adresse->Adresse->Name,"")	AS "Kunde.Name", 
			NVL(DBAdressen.Adresse_GetZusatz1(Auftragskopf->Adresse->Adresse->Adresscode, Auftragskopf->Adresse->Adresse->VornameZusatz1),"") 
															AS "Kunde.Adresszeile1", 
			NVL(Auftragskopf->Adresse->Adresse->Plz,"")		AS "Kunde.Plz",  
			NVL(Auftragskopf->Adresse->Adresse->Ort,"")		AS "Kunde.Ort"
	FROM DBAgrofresh.Auftragspos
	WHERE NVL(Auftragskopf->Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusLieferschein()
  		AND Auftragskopf->Mandant = :Mandant
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (Auftragskopf->Lieferzeit BETWEEN :VonLZeit AND :BisLZeit)
		AND (Auftragskopf->Ruestdatum = {d :PerDatum})
	ORDER BY Artikel->ArtikelNr, Auftragskopf->Lieferzeit]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.AbzugstypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61263,38697.608467</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 
		%ID, 
		PositionsNr, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
		(PositionsNr || ' - ' || DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang)) As DisplayText,
		Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Abzugstyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ArtGrPreisKatRabattAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61639,52615.473752</TimeCreated>

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


<Class name="DBAgrofresh.AF.SD.ArtGrpKGMargeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61723,59008.69048</TimeCreated>

<Query name="ListeByArtikelgruppe">
<Type>%SQLQuery</Type>
<FormalSpec>ArtGrOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT (SELECT MargeProzent FROM DBAgrofresh_SD.ArtGrpKGMarge WHERE Kundengruppe = Kundengruppe.ID AND Artikelgruppe = :ArtGrOid) As MargeProzent,
			(SELECT Kleinmengenzuschlag FROM DBAgrofresh_SD.ArtGrpKGMarge WHERE Kundengruppe = Kundengruppe.ID AND Artikelgruppe = :ArtGrOid) As Kleinmengenzuschlag,
			(SELECT DetailMarge FROM DBAgrofresh_SD.ArtGrpKGMarge WHERE Kundengruppe = Kundengruppe.ID AND Artikelgruppe = :ArtGrOid) As DetailMarge,
			(SELECT ID FROM DBAgrofresh_SD.ArtGrpKGMarge WHERE Kundengruppe = Kundengruppe.ID AND Artikelgruppe = :ArtGrOid) As MargeID,
			ID, Code, DBAdressen_SD.Kundengruppe_GetKundengruppentextClass(ID, :MandantOid, :Lang) AS Kundengruppentext 
			FROM DBAdressen_SD.Kundengruppe Kundengruppe WHERE AktMandant = :MandantOid</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ArtikelgruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61256,42637.868146</TimeCreated>

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

<Query name="ListeGesamtNumOrder">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, ArtikelgruppenNr, DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, 
	Mandant
	FROM DBAgrofresh_SD.Artikelgruppe
	WHERE Mandant = :MandantOid ORDER BY SUBSTRING(%String(ArtikelgruppenNr), 1, 2), ArtikelgruppenNr</SqlQuery>
</Query>

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

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

<Query name="GetEntryByNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,ArtGrpNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ArtikelgruppenNr, DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBAgrofresh_SD.Artikelgruppe
	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, DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBAgrofresh_SD.Artikelgruppe
	WHERE Mandant = :MandantOid
	AND DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :Bezeichnung
	ORDER BY Bezeichnung</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.AufbereitungsartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31223.274443</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.Aufbereitungsart 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Aufbereitungsart 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.BestellartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61289,29234.829889</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Bestellart 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ChauffeurAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31022.461346</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Chauffeur 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.DrucktypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61353,47586.630363</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 	%ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
			Mandant, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypOF()) AS FormularOF, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypAU()) AS FormularAU, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypRZ()) AS FormularRZ, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypLS()) AS FormularLS, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypGS()) AS FormularGS, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypRG()) AS FormularRG, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypBZ()) AS FormularBZ, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypGU()) AS FormularGU, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypMA()) AS FormularMA, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypSR()) AS FormularSR, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypSRV()) AS FormularSRV, 
			DBAgrofresh_SD.DTypFormular_GetFormularNrByDrucktyp(ID, DBAgrofresh.Konst_FormularTypSRP()) AS FormularSRP
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Drucktyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.FahrzeugAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62300,36769.107978</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Kennzeichen, Kurzbezeichnung, Bezeichnung, AnzPaletten, Ladehoehe, MaximalGewicht, Transporteur
	FROM DBAgrofresh_SD.Fahrzeug 
	WHERE Mandant = :MandantOid ORDER BY Kurzbezeichnung</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.FormGebFussAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61719,34141.525248</TimeCreated>

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

<Query name="ListeNurVerrechenbare">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[      SELECT %ID, Nummer, DBAgrofresh_SD.FormGebFuss_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant, DruckAlsFusszeile, AbstandOben
      FROM DBAgrofresh_SD.FormGebFuss 
      WHERE Mandant = :MandantOid AND Verrechnung >= DBAgrofresh.Konst_GebindeVerrechnen() ORDER BY Nummer]]></SqlQuery>
</Query>

<Query name="ListeNurNichtVerrechenbare">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[      SELECT %ID, Nummer, DBAgrofresh_SD.FormGebFuss_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant, DruckAlsFusszeile, AbstandOben
      FROM DBAgrofresh_SD.FormGebFuss 
      WHERE Mandant = :MandantOid AND Verrechnung < DBAgrofresh.Konst_GebindeVerrechnen() ORDER BY Nummer]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.FormGebFussEAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61719,34159.325996</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>FormGebFussOid:%String,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[                SELECT  %ID, Nummer, Aktiv, Index, Breite, Ausrichtung, 
                                               FontName, FontSize, FontBold, FontItalic, FontStrikeout, FontUnderline, FontColor,
                                               DBAgrofresh_SD.FormGebFussE_GetTextClass(%ID, :MandantOid, :Lang) As Text,
                                               RahmenAktivLinks, RahmenAktivRechts, RahmenAktivOben, RahmenAktivUnten,
                                               RahmenAbstandLinks, RahmenAbstandRechts, RahmenAbstandOben, RahmenAbstandUnten,
                                               RahmenBreiteLinks, RahmenBreiteRechts, RahmenBreiteOben, RahmenBreiteUnten,
                                               DetailFontName, DetailFontSize, DetailFontBold, DetailFontItalic, DetailFontStrikeout, DetailFontUnderline, DetailFontColor,
                                               DetailRahmenAktivLinks, DetailRahmenAktivRechts, DetailRahmenAktivOben, DetailRahmenAktivUnten,
                                               DetailRahmenAbstandLinks, DetailRahmenAbstandRechts, DetailRahmenAbstandOben, DetailRahmenAbstandUnten,
                                               DetailRahmenBreiteLinks, DetailRahmenBreiteRechts, DetailRahmenBreiteOben, DetailRahmenBreiteUnten,
                                               FormularGebindeFuss->Verrechnung As Verrechnung,
                                               FormatAnzDezStellen, FormatEinheit, FormatKeineAusgabe, FormatTotalisieren
                FROM DBAgrofresh_SD.FormGebFussE 
                WHERE FormularGebindeFuss->ID=:FormGebFussOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.FormularAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61352,31327.386725</TimeCreated>

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


<Class name="DBAgrofresh.AF.SD.FusstextAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61255,36067.501298</TimeCreated>

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


<Class name="DBAgrofresh.AF.SD.GebAdimKostenAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61791,66798.845228</TimeCreated>

<Query name="ListeByGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>Gebinde:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, KostenJeGeb, KostenJeLadung, GebindeAnzahl, Miete, KostenJeGebEK, KostenJeLadungEK, GebindeAnzahlEK, MieteEK, AbDatum
	       FROM DBAgrofresh_SD.GebAdminKosten WHERE Gebinde = :Gebinde Order by Gebinde->GebindeNr, AbDatum]]></SqlQuery>
</Query>

<Query name="ListeByGebindeKundenKat">
<Type>%SQLQuery</Type>
<FormalSpec>Gebinde:%String,KundenKat:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, KostenJeGeb, KostenJeLadung, GebindeAnzahl, Miete, KostenJeGebEK, KostenJeLadungEK, GebindeAnzahlEK, MieteEK, AbDatum
	       FROM DBAgrofresh_SD.GebAdminKosten WHERE Gebinde = :Gebinde AND Kundenkategorie = :KundenKat Order by Gebinde->GebindeNr, AbDatum]]></SqlQuery>
</Query>

<Query name="ListeByGebindeKundenKatEmpty">
<Type>%SQLQuery</Type>
<FormalSpec>Gebinde:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, KostenJeGeb, KostenJeLadung, GebindeAnzahl, Miete, KostenJeGebEK, KostenJeLadungEK, GebindeAnzahlEK, MieteEK, AbDatum
	       FROM DBAgrofresh_SD.GebAdminKosten WHERE Gebinde = :Gebinde AND Kundenkategorie is null Order by Gebinde->GebindeNr, AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.GebindeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61243,38218.996109</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[ 
	SELECT %ID, GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	trim((str(GebindeNr) ||' - ' || DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang))) As DisplayText,
	DBAgrofresh_SD.GebindePreis_GetPreisPerDatum(%ID, CURRENT_DATE) As Verrechnungspreis,
	AnzGebJeHauptGeb, GewichtJeGebinde, Stellplatz,
	Mengenerfassung, Hauptgebinde, Hauptgebinde->GebindeNr As HauptgebindeNr, 
	FibuKontoVK, FibuKontoVK->KontoNr As KontoNrVK,FibuKontoEK,
	FibuKontoEK->KontoNr As KontoNrEK, MwstVK, 
	MwstVK->MwstCode As MwstCodeVK,MwstEK, 
	MwstEK->MwstCode As MwstCodeEK, Mandant, AnzahlJePalette
	FROM DBAgrofresh_SD.Gebinde 
	WHERE Mandant = :MandantOid ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeDruckJahr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,MandJahrOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[ 
	SELECT %ID, 
			GebindeNr, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
			DBAgrofresh_SD.GebindePreis_GetPreisPerDatum(%ID, CURRENT_DATE) As Verrechnungspreis,
			AnzGebJeHauptGeb, 
			GewichtJeGebinde,
			Mengenerfassung, 
			Hauptgebinde,
			Stellplatz,
			Hauptgebinde->GebindeNr As HauptgebindeNr, 
			DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Hauptgebinde->ID, :MandantOid, :Lang) As HauptgebindeBezeichnung,
			FibuKontoVK, 
			FibuKontoVK->KontoNr As KontoNrVK,
			DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid,FibuKontoVK) As KontoBezeichnungVK,
			FibuKontoEK,
			FibuKontoEK->KontoNr As KontoNrEK,
			DBFibu.Konto_GetKontoBezeichnungClass(:MandJahrOid,FibuKontoEK) As KontoBezeichnungEK, 
			MwstVK, 
			MwstVK->MwstCode As MwstCodeVK, 
			MwstEK, 
			MwstEK->MwstCode As MwstCodeEK, 
			Mandant
	FROM DBAgrofresh_SD.Gebinde
	WHERE Mandant = :MandantOid ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="ListeNachCode">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GebindeNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[ 
	SELECT %ID, GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung,
	DBAgrofresh_SD.GebindePreis_GetPreisPerDatum(%ID, CURRENT_DATE) As Verrechnungspreis,
	AnzGebJeHauptGeb, GewichtJeGebinde, Stellplatz,
	Mengenerfassung, Hauptgebinde, Hauptgebinde->GebindeNr As HauptgebindeNr, 
	FibuKontoVK, 
	FibuKontoVK->KontoNr As KontoNrVK,
	FibuKontoEK,
	FibuKontoEK->KontoNr As KontoNrEK, 
	MwstVK, 
	MwstVK->MwstCode As MwstCodeVK,MwstEK, 
	MwstEK->MwstCode As MwstCodeEK, Mandant
	FROM DBAgrofresh_SD.Gebinde 
	WHERE Mandant = :MandantOid AND GebindeNr = :GebindeNr 
	ORDER BY GebindeNr]]></SqlQuery>
</Query>

<Query name="GetEntryByGebNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,GebindeNr:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBAgrofresh_SD.Gebinde
	WHERE Mandant = :MandantOid
	AND GebindeNr %StartsWith :GebindeNr</SqlQuery>
</Query>

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

<Query name="ListeVonBisNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonGebindeNr:%Integer,BisGebindeNr:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBAgrofresh_SD.Gebinde
	WHERE Mandant = :MandantOid
	AND GebindeNr BETWEEN :VonGebindeNr AND :BisGebindeNr
	ORDER BY GebindeNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.GebindePreisAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61648,54802.779214</TimeCreated>

<Query name="ListeByGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>Gebinde:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Preis, AbDatum
	       FROM DBAgrofresh_SD.GebindePreis WHERE Gebinde = :Gebinde Order by Gebinde->GebindeNr, AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.GebindeTransportAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61311,40763.882085</TimeCreated>

<Query name="ListeByGebiet">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Gebiet:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gebiet, Kosten, AbDatum,
		   Gebiet->Code As GebietCode, DBAdressen_SD.Gebiet_GetGebietstextClass(:Gebiet, :MandantOid, :Lang) As Gebietstext,
		   DBCore.Abteilung_GetBezeichnungClass(Abteilung->%ID, :MandantOid, :Lang) As AbteilungBez
	       FROM DBAgrofresh_SD.GebTransKosten WHERE Gebiet = :Gebiet Order by Gebiet->Code, Abteilung->Abteilungnr, AbDatum]]></SqlQuery>
</Query>

<Query name="ListeByAbteilung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Abteilung:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gebiet, Kosten, AbDatum,
		   Gebiet->Code As GebietCode, DBAdressen_SD.Gebiet_GetGebietstextClass(Gebiet, :MandantOid, :Lang) As Gebietstext,
		   DBCore.Abteilung_GetBezeichnungClass(Abteilung->%ID, :MandantOid, :Lang) As AbteilungBez
	       FROM DBAgrofresh_SD.GebTransKosten WHERE Abteilung = :Abteilung Order by Abteilung->Abteilungnr, Gebiet->Code, AbDatum]]></SqlQuery>
</Query>

<Query name="ListeByAbteilungAndGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Abteilung:%String,Gebinde:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Gebiet, Kosten, AbDatum,
		   Gebiet->Code As GebietCode, DBAdressen_SD.Gebiet_GetGebietstextClass(Gebiet, :MandantOid, :Lang) As Gebietstext,
		   DBCore.Abteilung_GetBezeichnungClass(Abteilung->%ID, :MandantOid, :Lang) As AbteilungBez
	       FROM DBAgrofresh_SD.GebTransKosten WHERE Abteilung = :Abteilung and Gebinde = :Gebinde Order by Abteilung->Abteilungnr, Gebiet->Code, AbDatum]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.HerkunftAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,30863.709901</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, IsoKennzeichen As Kennzeichen
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert2, 
	Mandant,IsoKennzeichen As Wert1
	FROM DBAgrofresh_SD.Herkunft 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.HogaGrpAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61940,57837.689204</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, HogaHauptGrp
	FROM DBAgrofresh_SD.HogaGrp
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant, HogaHauptGrp
	FROM DBAgrofresh_SD.HogaGrp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

<Query name="ListeByHauptGruppe">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,HauptGruppe:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, HogaHauptGrp
	FROM DBAgrofresh_SD.HogaGrp
	WHERE Mandant = :MandantOid AND HogaHauptGrp = :HauptGruppe ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.HogaHauptGrpAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61940,57817.498958</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.HogaHauptGrp
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.HogaHauptGrp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.HogaUnterGrpAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62055,53090.523717</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, HogaGrp
	FROM DBAgrofresh_SD.HogaUnterGrp
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant, HogaGrp
	FROM DBAgrofresh_SD.HogaUnterGrp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>

<Query name="ListeByGruppe">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Gruppe:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, HogaGrp
	FROM DBAgrofresh_SD.HogaUnterGrp
	WHERE Mandant = :MandantOid AND HogaGrp = :Gruppe ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.InhaltAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,33659.937713</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, DBAgrofresh_SD.Inhalt_GetKurzcodeClass(%ID, :MandantOid, :Lang) As Kurzcode,
	Menge
	FROM DBAgrofresh_SD.Inhalt 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert2, 
	Mandant, DBAgrofresh_SD.Inhalt_GetKurzcodeClass(%ID, :MandantOid, :Lang) As Wert1, Menge
	FROM DBAgrofresh_SD.Inhalt 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.KombiGebindeAF">
<Description>
</Description>
<Super>%RegisteredObject,%XML.Adaptor</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62391,58572.212306</TimeCreated>
<Inheritance>right</Inheritance>

<Query name="ListeNachGebinde">
<Type>%SQLQuery</Type>
<FormalSpec>GebindeOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID
	FROM DBAgrofresh_SD.KombiGebinde
	WHERE HauptGebinde = :GebindeOid</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.LagerortAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61350,38949.505648</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Lagerort 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.LieferartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31498.296038</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, Transporteur
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant, Transporteur
	FROM DBAgrofresh_SD.Lieferart 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.MengencodeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31396.398097</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	trim((str(PositionsNr) ||' - ' ||  DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang))) As DisplayText,
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Mengencode 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.PLDataEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61707,43316.412794</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>PlKopfOid:%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,
			DBAgrofresh_SD.PLDataEntry_GetFormatTextFallsLeerClass(%ID, :MandantOid, :Lang) As FormatTextFallsLeer
	FROM DBAgrofresh_SD.PLDataEntry 
	WHERE Preislistenkopf->ID=:PlKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.PLFormularAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61707,33026.560687</TimeCreated>

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


<Class name="DBAgrofresh.AF.SD.PLGrupKopfEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61714,55102.83971</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>PlKopfOid:%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,
			DBAgrofresh_SD.PLGrupKopfEntry_GetFormatTextFallsLeerClass(%ID, :MandantOid, :Lang) As FormatTextFallsLeer
	FROM DBAgrofresh_SD.PLGrupKopfEntry 
	WHERE Preislistenkopf->ID=:PlKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.PLKopfAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61700,38753.603168</TimeCreated>

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


<Class name="DBAgrofresh.AF.SD.PLKopfEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61707,42561.067186</TimeCreated>

<Query name="ListeAktive">
<Type>%SQLQuery</Type>
<FormalSpec>PlKopfOid:%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,
			DBAgrofresh_SD.PLKopfEntry_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 DBAgrofresh_SD.PLKopfEntry 
	WHERE Preislistenkopf->ID=:PlKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.PLPreislistenTypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61700,38841.03206</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT 	%ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
			Mandant
	FROM DBAgrofresh_SD.PLPreislistenTyp 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.PLPreislistenTyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ParzelleAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62089,66345.185345</TimeCreated>

<Query name="ListeByLieferant">
<Type>%SQLQuery</Type>
<FormalSpec>Lieferant:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, ParzellenCode, Flaeche, Bezeichnung FROM DBAgrofresh_SD.Parzelle
	WHERE Lieferant = :Lieferant ORDER BY ParzellenCode</SqlQuery>
</Query>

<Query name="ListeDruck">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,VonLieferant:%Integer,BisLieferant:%Integer,VonDatum:%Date,BisDatum:%Date,VonParzelle:%String,BisParzelle:%String,VonArtikel:%String,BisArtikel:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[    SELECT ID, 
       Parzelle->ParzellenCode As "Parzelle.Code",
       Parzelle->Bezeichnung As "Parzelle.Bezeichnung", 
       Artikel->ArtikelNr As "Artikel.ArtikelNr",
       DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, :MandantOid, :Lang) As "Artikel.Bezeichnung",
       Bestellungskopf->AnnahmeNr As "Kopf.AnnahmeNr",
       Bestellungskopf->Annahmedatum As "Kopf.Annahmedatum",
       AnzahlGebinde As "Pos.AnzahlGebinde",
       DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde, :MandantOid, :Lang) As "Pos.GebindeBezeichnung",
       Menge As "Pos.Menge",
       Bestellungskopf->Adresse->Adresse->Adressnummer As "Kopf.Lieferant.Adressnummer",
       Bestellungskopf->Adresse->Adresse->Name As "Kopf.Lieferant.Name",
       Bestellungskopf->Adresse->Adresse->PLZ As "Kopf.Lieferant.PLZ",
       Bestellungskopf->Adresse->Adresse->Ort As "Kopf.Lieferant.Ort",
       Preis As "Pos.Preis"
    FROM DBAgrofreshEK.Bestellungspos
    WHERE Parzelle <> ''
       AND Bestellungskopf->Mandant = :MandantOid
       AND Bestellungskopf->Adresse->Adresse->Adressnummer BETWEEN :VonLieferant AND :BisLieferant
       AND Bestellungskopf->Annahmedatum BETWEEN :VonDatum AND :BisDatum
       AND Parzelle->ParzellenCode BETWEEN :VonParzelle AND :BisParzelle
       AND Artikel->ArtikelNr BETWEEN :VonArtikel AND :BisArtikel
    ORDER BY Lieferant->Adressnummer, Parzelle->ParzellenCode, Artikel->ArtikelNr]]></SqlQuery>
</Query>

<Query name="ListeDruck2">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,VonAdresse:%Integer,BisAdresse:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT ID,
		ParzellenCode,
		Bezeichnung,
		Flaeche,
		Lieferant As "Lieferant.ID",
		Lieferant->Adressnummer As "Lieferant.Adressnummer",
		Lieferant->Name As "Lieferant.Name",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort"
	FROM DBAgrofresh_SD.Parzelle
	WHERE Lieferant->Mandant = :MandantOid
	AND Lieferant->Adressnummer BETWEEN :VonAdresse AND :BisAdresse
	ORDER BY Lieferant->Adressnummer, ParzellenCode]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.PreisetiketteAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31879.731877</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, DBAgrofresh_SD.Preisetikette_GetKurzcodeClass(%ID, :MandantOid, :Lang) As Kurzcode,
	Menge
	FROM DBAgrofresh_SD.Preisetikette 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert2,  
	Mandant, DBAgrofresh_SD.Preisetikette_GetKurzcodeClass(%ID, :MandantOid, :Lang) As Wert1, Menge
	FROM DBAgrofresh_SD.Preisetikette 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.PreislisteAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31535.367671</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Preisliste 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ProduktgruppeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61590,57367.043936</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2 FROM DBAgrofresh_SD.Produktgruppe WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ProduktionsartAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,28430.987087</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.Produktionsart
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Produktionsart 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.ProduktionscodeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,30015.686023</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.Produktionscode 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Produktionscode 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.QSDiversesAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62159,56681.992121</TimeCreated>

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


<Class name="DBAgrofresh.AF.SD.QSLieferberAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61693,56891.921996</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.QSLieferber
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.QSLieferber 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.QSMeldTypAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61667,30272.852898</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.QSMeldTyp 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.QSQualitaetAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61693,56892.055461</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.QSQualitaet 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.QSQualitaet 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.QSTransportAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61693,56892.169754</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.QSTransport 
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.QSTransport 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.QualitaetsklasseAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31262.927516</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, (PositionsNr || ' - ' || DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang)) As DisplayText,
	Mandant
	FROM DBAgrofresh_SD.Qualitaetsklasse 
	WHERE Mandant = :MandantOid AND LENGTH(DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Qualitaetsklasse 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.RuestlinieAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61611,39935.130217</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.Ruestlinie
	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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.Ruestlinie 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.StatGrpAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61793,36585.33177</TimeCreated>

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

<Query name="GetEntryByNr">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Nummer:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT ID, Nummer, DBAgrofresh_SD.StatGrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBAgrofresh_SD.StatGrp
	WHERE Mandant = :MandantOid
	AND Nummer %StartsWith :Nummer</SqlQuery>
</Query>

<Query name="GetEntryByBezeichnung">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String,Bezeichnung:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT TOP 1 ID, Nummer, DBAgrofresh_SD.StatGrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung
	FROM DBAgrofresh_SD.StatGrp
	WHERE Mandant = :MandantOid
	AND DBAgrofresh_SD.StatGrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :Bezeichnung
	ORDER BY Bezeichnung</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.SteuerungAuftragsbearbAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,31146.331827</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant
	FROM DBAgrofresh_SD.StrgAuftrag 
	WHERE Mandant = :MandantOid AND LENGTH(DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert1, '' As Wert2, 
	Mandant
	FROM DBAgrofresh_SD.StrgAuftrag 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblDataEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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,
			DBAgrofresh_SD.TblDataEntry_GetFormatTextFallsLeerClass(%ID, :MandantOid, :Lang) As Format_TextFallsLeer
	FROM DBAgrofresh_SD.TblDataEntry 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblFussAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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, DBAgrofresh_SD.TblFuss_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant
	FROM DBAgrofresh_SD.TblFuss 
	WHERE Mandant = :MandantOid ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblFussEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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,
			DBAgrofresh_SD.TblFussEntry_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,
			DBAgrofresh_SD.TblFussEntry_GetTotalTextClass(%ID, :MandantOid, :Lang) As TotalText
	FROM DBAgrofresh_SD.TblFussEntry 
	WHERE Tabellenfuss->ID=:TblFussOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblFussSkontoEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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,
			DBAgrofresh_SD.TblFussSkntE_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 DBAgrofresh_SD.TblFussSkntE 
	WHERE Tabellenfuss->ID=:TblFussOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresFB01.TblFussSkonCFB8D</DataLocation>
<DefaultData>TblFussSkontoEntryAFDefaultData</DefaultData>
<IdLocation>^DBAgrofresFB01.TblFussSkonCFB8D</IdLocation>
<IndexLocation>^DBAgrofresFB01.TblFussSkonCFB8I</IndexLocation>
<StreamLocation>^DBAgrofresFB01.TblFussSkonCFB8S</StreamLocation>
<Data name="TblFussSkontoEntryAFDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.AF.SD.TblKopfAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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, DBAgrofresh_SD.TblKopf_GetBezeichnungClass(%ID, :MandantOid, :Lang) As Bezeichnung, Mandant
	FROM DBAgrofresh_SD.TblKopf 
	WHERE Mandant = :MandantOid ORDER BY Nummer</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblKopfEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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,
			DBAgrofresh_SD.TblKopfEntry_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 DBAgrofresh_SD.TblKopfEntry
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblSREntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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,
			DBAgrofresh_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 DBAgrofresh_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, 
			DBAgrofresh_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, DBAgrofresh_SD.TblSREntry_GetDetFormatTextFallsLeerClass(%ID, :MandantOid, :Lang) As Format_TextFallsLeer
	FROM DBAgrofresh_SD.TblSREntry 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblSRgfEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61819,57034.191359</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,
			DBAgrofresh_SD.TblSRgfEntry_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 DBAgrofresh_SD.TblSRgfEntry 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblSRgkEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</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,
			DBAgrofresh_SD.TblSRgkEntry_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 DBAgrofresh_SD.TblSRgkEntry 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.TblSRvlEntryAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61812,50065.638821</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,
			DBAgrofresh_SD.TblSRvlEntry_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 DBAgrofresh_SD.TblSRvlEntry 
	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, 
			DBAgrofresh_SD.TblSRvlEntry_GetTextClass(%ID, :MandantOid, :Lang) As Text,
			DBAgrofresh_SD.TblSRvlEntry_GetTotalTextClass(%ID, :MandantOid, :Lang) As TotalText,
			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, DBAgrofresh_SD.TblSRvlEntry_GetFormatTextFallsLeerClass(%ID, :MandantOid, :Lang) As Format_TextFallsLeer,
			TotalFont_Name AS TotalFont_Name, TotalFont_Size AS TotalFont_Size, TotalFont_Bold AS TotalFont_Bold, TotalFont_Italic AS TotalFont_Italic, 
			TotalFont_Strikeout AS TotalFont_Strikeout, TotalFont_Underline AS TotalFont_Underline, TotalFont_Color AS TotalFont_Color
	FROM DBAgrofresh_SD.TblSRvlEntry 
	WHERE Tabellenkopf->ID=:TblKopfOid AND Aktiv=1 ORDER BY Index]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.SD.VerpackungAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61248,33825.425117</TimeCreated>

<Query name="ListeGesamt">
<Type>%SQLQuery</Type>
<FormalSpec>MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, PositionsNr, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Text, 
	Mandant, DBAgrofresh_SD.Verpackung_GetKurzcodeClass(%ID, :MandantOid, :Lang) As Kurzcode,
	Menge
	FROM DBAgrofresh_SD.Verpackung 
	WHERE Mandant = :MandantOid AND LENGTH(DBAgrofresh_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, DBAgrofresh_SD.Hilfstexte_GetTextClass(%ID, :MandantOid, :Lang) As Wert2,  
	Mandant, DBAgrofresh_SD.Verpackung_GetKurzcodeClass(%ID, :MandantOid, :Lang) As Wert1, Menge
	FROM DBAgrofresh_SD.Verpackung 
	WHERE Mandant = :MandantOid ORDER BY PositionsNr</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.StatistikDetailiertAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61808,55819.129879</TimeCreated>

<Query name="ListeArtikelUmsatzWoche">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,MandantOid:%String,Lang:%String,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean,DayDiff:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText", Woche, Jahr, Vorjahr
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		CASE WHEN DATEPART(DAY, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) > 1 THEN
		DATEPART(WEEK,DATEADD(DAY, :DayDiff, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)) ELSE
		1 END
		AS Woche,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum))
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,   
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		DATEPART(WEEK,DATEADD(DAY, :DayDiff,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)) AS Woche,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum))
	)
	GROUP BY "Artikel.ArtikelNr", Jahr, Woche
	ORDER BY "Artikel.ArtikelNr", Jahr, Woche]]></SqlQuery>
</Query>

<Query name="ListeArtikelUmsatzMonat">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,MandantOid:%String,Lang:%String,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText", Monat, Jahr, Vorjahr
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		DATEPART(MONTH,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Monat,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, DATEPART(MONTH,Auftragskopf->Lieferdatum)
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		DATEPART(MONTH,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Monat,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, DATEPART(MONTH,Auftragskopf->Lieferdatum)
	)
	GROUP BY "Artikel.ArtikelNr", Jahr, Monat
	ORDER BY "Artikel.ArtikelNr", Jahr, Monat]]></SqlQuery>
</Query>

<Query name="ListeArtikelUmsatzTag">
<Type>%SQLQuery</Type>
<FormalSpec>ArtikelVon:%String,ArtikelBis:%String,ArtGrpVon:%Integer,ArtGrpBis:%Integer,DatumVon:%Date,DatumBis:%Date,DatumVJVon:%Date,DatumVJBis:%Date,MandantOid:%String,Lang:%String,OnlyLiefer:%Boolean,OnlyVerbucht:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText", Datum, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Lieferdatum
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,   
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(Artikel->Artikelgruppe->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.ArtikelGrpText",
		CAST(DATEADD(YEAR, 1, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS DATE) AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
	    AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Lieferdatum
	)
	GROUP BY "Artikel.ArtikelNr", Datum
	ORDER BY "Artikel.ArtikelNr", Datum]]></SqlQuery>
</Query>

<Query name="ListeArtikelKundeUmsatzTag">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", Datum, CAST(DATEPART(DAY,Datum) As VARCHAR(2)) || '.'||CAST(DATEPART(MONTH,Datum) As VARCHAR(2))|| '.'  AS DetText, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer, Auftragskopf->Lieferdatum
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,   
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CAST(DATEADD(YEAR, 1, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS DATE) AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer, Auftragskopf->Lieferdatum
	)
	GROUP BY "Artikel.ArtikelNr", "Adresse.Adressnummer", Datum
	ORDER BY "Artikel.ArtikelNr", "Adresse.Adressnummer", Datum]]></SqlQuery>
</Query>

<Query name="ListeArtikelKundeUmsatzWoche">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String,DayDiff:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", Datum, String(Woche)|| ' ' AS DetText, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		CASE WHEN DATEPART(DAY, AUFTRAGSKOPF->LIEFERDATUM) > 1 THEN
		DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum)) ELSE
		1 END AS Woche,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer, DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum))
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,   
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		CASE WHEN DATEPART(DAY, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) > 1 THEN
		DATEPART(WEEK,DATEADD(DAY, :DayDiff, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)) ELSE
		1 END AS Woche,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer, DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum))
	)
	GROUP BY "Artikel.ArtikelNr", "Adresse.Adressnummer", Woche
	ORDER BY "Artikel.ArtikelNr", "Adresse.Adressnummer", Woche]]></SqlQuery>
</Query>

<Query name="ListeArtikelKundeUmsatzMonat">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", String(Monat)|| ' ' AS DetText, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		DATEPART(MONTH,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Monat,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) -1) AS Vorjahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer, DATEPART(MONTH,Auftragskopf->Lieferdatum)
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		DATEPART(MONTH,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Monat,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Artikel->ArtikelNr, Auftragskopf->Adresse->Adresse->Adressnummer, DATEPART(MONTH,Auftragskopf->Lieferdatum)
	)
	GROUP BY "Artikel.ArtikelNr", "Adresse.Adressnummer", "Monat"
	ORDER BY "Artikel.ArtikelNr", "Adresse.Adressnummer", "Monat"]]></SqlQuery>
</Query>

<Query name="ListeKundeArtikelUmsatzTag">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", Datum, CAST(DATEPART(DAY,Datum) As VARCHAR(2)) || '.'||CAST(DATEPART(MONTH,Datum) As VARCHAR(2))|| '.'  AS DetText, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END AS Datum,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr, Auftragskopf->Lieferdatum
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,    
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		CAST(DATEADD(YEAR, 1, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS DATE) AS Datum,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr, Auftragskopf->Lieferdatum
	)
	GROUP BY "Adresse.Adressnummer", "Artikel.ArtikelNr", Datum
	ORDER BY "Adresse.Adressnummer", "Artikel.ArtikelNr", Datum]]></SqlQuery>
</Query>

<Query name="ListeKundeArtikelUmsatzWoche">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String,DayDiff:%Integer</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", Datum, String(Woche)|| ' ' AS DetText, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		Auftragskopf->Lieferdatum AS Datum,
		CASE WHEN DATEPART(DAY, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) > 1 THEN
		DATEPART(WEEK,DATEADD(DAY, :DayDiff, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)) ELSE
		1 END AS Woche,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr, DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum))
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,    
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		Auftragskopf->Lieferdatum AS Datum,
		CASE WHEN DATEPART(DAY, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) > 1 THEN
		DATEPART(WEEK,DATEADD(DAY, :DayDiff, CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)) ELSE
		1 END AS Woche,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr, DATEPART(WEEK,DATEADD(DAY, :DayDiff, Auftragskopf->Lieferdatum))
	)
	GROUP BY "Adresse.Adressnummer", "Artikel.ArtikelNr", Woche
	ORDER BY "Adresse.Adressnummer", "Artikel.ArtikelNr", Woche]]></SqlQuery>
</Query>

<Query name="ListeKundeArtikelUmsatzMonat">
<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,OnlyVerbucht:%Boolean,MandantOid:%String,Lang:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT 
		SUM(BetragInkl) AS BetragInkl, SUM(BetragExkl) AS BetragExkl, SUM(Menge) AS Menge, SUM(BetragVorjahrInkl) AS BetragVorjahrInkl,  SUM(BetragVorjahrExkl) AS BetragVorjahrExkl, SUM(MengeVorjahr) AS MengeVorjahr,
		MengeneinheitArtikel, Mengeneinheit, "Artikel.ArtikelNr", "Artikel.Artikeltext", "Artikel.ArtikelGrpNr", "Artikel.ArtikelGrpText",
		"Adresse.Adressnummer", "Adresse.Name", "Adresse.Strasse", "Adresse.Plz", "Adresse.Ort", String(Monat)|| ' ' AS DetText, Vorjahr, Jahr 
	FROM (
	SELECT 
		SUM(Nettobetrag2InklMwstEW) As BetragInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragExkl,
		SUM(Menge) As Menge,  
		0 As BetragVorjahrInkl,
		0 As BetragVorjahrExkl,
		0 As MengeVorjahr,
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		DATEPART(MONTH,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Monat,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Jahr,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)-1) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr, DATEPART(MONTH,Auftragskopf->Lieferdatum)
	 
	 UNION ALL
	    SELECT 
	    0 As BetragInkl,
	    0 As BetragExkl,
		0 As Menge,
		SUM(Nettobetrag2InklMwstEW) As BetragVorjahrInkl,
		SUM(Nettobetrag2ExklMwstEW) As BetragVorjahrExkl,
		SUM(Menge) As MengeVorjahr,   
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Artikel->Mengeneinheit, Artikel->Mandant, :Lang) AS MengeneinheitArtikel, 
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelGrpNr",
		DBAgrofresh_SD.Artikelgruppe_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",
		DATEPART(MONTH,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Monat,
		(DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END)+1) AS Jahr,
		DATEPART(YEAR,CASE WHEN :OnlyLiefer = 1 THEN
		Auftragskopf->Lieferdatum ELSE
		Auftragskopf->Rechnungsdatum END) AS Vorjahr
		
		
	FROM DBAgrofresh.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 (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusRechnungGutschrift() OR :OnlyLiefer = 1)
	    AND (Auftragskopf->Auftragsstatus >= DBAgrofresh.Konst_AuftragstatusLieferschein() OR (:OnlyLiefer = 0 AND :OnlyVerbucht = 0))
	    AND (Auftragskopf->Verbucht = 1 OR :OnlyVerbucht = 0)
		AND Auftragskopf->Mandant=:MandantOid 
	    GROUP BY Auftragskopf->Adresse->Adresse->Adressnummer, Artikel->ArtikelNr, DATEPART(MONTH,Auftragskopf->Lieferdatum)
	)
	GROUP BY "Adresse.Adressnummer", "Artikel.ArtikelNr", "Monat"
	ORDER BY "Adresse.Adressnummer", "Artikel.ArtikelNr", "Monat"]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.StrgAbzuegeAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>61724,37741.193513</TimeCreated>

<Query name="ListeByStrg">
<Type>%SQLQuery</Type>
<FormalSpec>Strg:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery>	SELECT %ID, Abzug1, Abzug2, Abzug3, AbDatum
	       FROM DBAgrofresh.StrgAbzuege WHERE Steuerung = :Strg Order by AbDatum</SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.AF.TransportPosAF">
<Super>%RegisteredObject</Super>
<TimeChanged>62417,31057</TimeChanged>
<TimeCreated>62300,52913.544638</TimeCreated>

<Query name="ListeByAuftrag">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Auftragspos, TransportKopf, TransportKopf->Fahrzeug, TransportKopf->Chauffeur, TransportKopf->TeilTransportNr, TransportKopf->BearbeitungsstatusTL, AnzPaletten, AnzStellPlaetze, AnzGebinde
	FROM DBAgrofresh.TransportPos
	WHERE TransportKopf->Auftragskopf = :AuftragOid ORDER BY Auftragspos->PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragFahrzeug">
<Type>%SQLQuery</Type>
<FormalSpec>AuftragOid:%String,FahrzeugOid:%String</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, Auftragspos, TransportKopf->Fahrzeug, AnzPaletten, AnzStellPlaetze, AnzGebinde
	FROM DBAgrofresh.TransportPos 
	WHERE TransportKopf->Auftragskopf = :AuftragOid  AND TransportKopf->Fahrzeug = :FahrzeugOid 
	ORDER BY TransportKopf->TeilTransportNr, Auftragspos->PositionsNr]]></SqlQuery>
</Query>

<Query name="ListeByAuftragDruck">
<Type>%SQLQuery</Type>
<FormalSpec>Auftrag:%String,Lang:%String,PrintZeroPositions:%Boolean=1</FormalSpec>
<SqlProc>1</SqlProc>
<SqlQuery><![CDATA[	SELECT %ID, 
		Abzugstyp->PositionsNr As "Abzugstyp.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Abzugstyp->ID, Auftragskopf->Mandant, :Lang) As "Abzugstyp.Text",
		Artikelcode, 
		AnzahlGebinde AS AnzahlGebinde, 
		AnzahlGedruckteGebinde AS AnzahlGedruckteGebinde, 
		AnzahlHauptGebinde AS AnzahlHauptGebinde, 
		AnzahlJeGebinde, 
		Artikel->ArtikelNr AS "Artikel.ArtikelNr",
		Artikel->Artikelgruppe->ArtikelgruppenNr AS "Artikel.ArtikelgruppenNr",
		DBAgrofresh.Artikel_GetArtikeltextClass(Artikel->ID, Auftragskopf->Mandant, :Lang) AS "Artikel.Artikeltext",
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenMenge) As "Artikel.FormatMenge", 
		DBAgrofresh.Artikel_GetLLFormatClass(Artikel->DezStellenPreis) As "Artikel.FormatPreis", 
		Artikel->Herkunftsart As "Artikel.Herkunftsart",
		Artikel->EUZolltarifNr As "Artikel.EUZolltarifNr",
		Artikel->OrderNr As "Artikel.OrderNr",   
		Artikel->Lagerplatz As "Artikel.Lagerplatz", 
		Artikel->Bemerkung As "Artikel.Bemerkung", 
		Produktionsart->PositionsNr As "Produktionsart.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Produktionsart, Auftragskopf->Mandant, :Lang) As "Produktionsart.Text",
		Artikelcode, 
		ChargenNrMan,
		BestellNr, 
		PositionsNr, 
		BestellteMenge AS BestellteMenge, 
		BetragExklMwst AS BetragExklMwst, 
		BetragExklMwstFW AS BetragExklMwstFW, 
		BetragInklMwstFW AS BetragInklMwstFW, 
		BetragInklMwst AS BetragInklMwst, 
		DetailText, 
		Gebinde, 
		GewichtBrutto AS GewichtBrutto, 
		GewichtNetto AS GewichtNetto,
		DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, Auftragskopf->Mandant, :Lang) As GebindeBezeichnung, 
		GewichtTara AS MwstBetrag, 
		HauptGebinde, 
		Herkunft->PositionsNr As "Herkunft.Nr",
		DBAgrofresh_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",
		Lieferant->PLZ As "Lieferant.PLZ",
		Lieferant->Ort As "Lieferant.Ort",
		Lieferdatum, 
		Menge AS Menge,  
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Mengeneinheit, Auftragskopf->Mandant, :Lang) AS Mengeneinheit, 
		Mwst, 
		MwstBetrag AS MwstBetrag, 
		MwstBetragFW AS MwstBetragFW, 
		MwstSatz, 
		MwstSatzExport,
		ParzellenNr, 
		PositionsNr, 
		Preis, 
		PreisFW,
		DetailPreis,
		RabattBetrag AS RabattBetrag,	
		RabattProzent, 
		Auftragskopf,
		MargeProzent,
	    Qualitaet->PositionsNr As "Qualitaet.Nr",
		DBAgrofresh_SD.Hilfstexte_GetTextClass(Qualitaet, Auftragskopf->Mandant, :Lang) As "Qualitaet.Text",
		{fn CONVERT(Charge->Charge->PositionsNr, SQL_VARCHAR)} AS "Charge.Nummer",
		DBAgrofresh.Auftragspos_GetGebindePreisByDet(%ID) AS GebindePreis,
		Gebinde->GewichtJeGebinde AS GebindeGewicht
	    FROM DBAgrofresh.Auftragspos 
	    WHERE Auftragskopf = :Auftrag AND
	    ((Artikelcode <> DBAgrofresh.Konst_ArtCodeMengePreis() OR Menge <> 0 OR AnzahlGebinde <> 0) OR :PrintZeroPositions = 1)
	    ORDER BY Auftragspos.PositionsNr, ZusatztextID, ZusatzChargenID]]></SqlQuery>
</Query>
</Class>


<Class name="DBAgrofresh.Abzuege">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57334.270111</TimeChanged>
<TimeCreated>61286,53090.029425</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>DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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}("DBAgrofresh.SD.Abzugstyp.Abzuege")</DataLocation>
<DefaultData>AbzuegeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.AbzugstypC("Abzuege")</IdLocation>
<IndexLocation>^DBAgrofresh.AbzuegeI</IndexLocation>
<StreamLocation>^DBAgrofresh.AbzuegeS</StreamLocation>
<Data name="AbzuegeDefaultData">
<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>Menge</Value>
</Value>
<Value name="6">
<Value>ArtikelNr</Value>
</Value>
</Data>
<Property name="Abzugscode"/>
<Property name="Abzugstyp"/>
<Property name="ArtikelNr"/>
<Property name="Bezugsart"/>
<Property name="Menge"/>
<Property name="PosNummer"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBAgrofresh.AktionspreisDet">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61885,31551.799674</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Kopf">
<Type>DBAgrofresh.AktionspreisKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>Aktionspreise</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Kopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="AktionVon">
<Description>
Beginn der Aktion</Description>
<Type>%Date</Type>
<Required>1</Required>
</Property>

<Property name="AktionBis">
<Description>
Ende der Aktion</Description>
<Type>%Date</Type>
<Required>1</Required>
</Property>

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

<Method name="GetIdByIdentDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,KundeOid:%String,ArtikelOid:%String,AktionVon:%Date,AktionBis:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	
	set retval = ""
	
	set strSQL = "SELECT ID FROM DBAgrofresh.AktionspreisDet WHERE Kopf->Mandant = '"_MandantOid_"' AND Kopf->Kunde = '"_KundeOid_"' AND Kopf->Artikel = '"_ArtikelOid_"' AND AktionVon = TO_DATE("_AktionVon_") AND AktionBis = TO_DATE("_AktionBis_")"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set retval = rs.Data("ID")
		}
	}
	
	Quit retval
]]></Implementation>
</Method>

<Method name="GetIdByDatumBereichDotNet">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,KundeOid:%String,ArtikelOid:%String,Lieferdatum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	
	set retval = ""
	
	set strSQL = "SELECT TOP 1 ID FROM DBAgrofresh.AktionspreisDet WHERE Kopf->Mandant = '"_MandantOid_"' AND Kopf->Kunde = '"_KundeOid_"' AND Kopf->Artikel = '"_ArtikelOid_"' AND TO_DATE("_Lieferdatum_") BETWEEN AktionVon AND AktionBis ORDER BY ID DESC"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set retval = rs.Data("ID")
		}
	}
	
	Quit retval
]]></Implementation>
</Method>

<Method name="IsArtikelAktion">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,KundeOid:%String,ArtikelOid:%String,PerDatum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set aktion = 0
	set aktionsPreis = 0
	&sql(SELECT TOP 1 Preis into :aktionsPreis FROM DBAgrofresh.AktionspreisDet WHERE Kopf->Mandant = :MandantOid AND Kopf->Kunde = :KundeOid AND Kopf->Artikel = :ArtikelOid AND TO_DATE(:PerDatum) BETWEEN AktionVon AND AktionBis ORDER BY AktionVon DESC)
	if (SQLCODE '= 0) {
		set aktionsPreis = 0
	} else {
		set aktion = 1
	}
	quit aktion
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Aktionspreise")</DataLocation>
<DefaultData>AktionspreisDetDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.AktionspreisKopfC("Aktionspreise")</IdLocation>
<IndexLocation>^DBAgrofresh.AktionspreisDetI</IndexLocation>
<StreamLocation>^DBAgrofresh.AktionspreisDetS</StreamLocation>
<Data name="AktionspreisDetDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AktionVon</Value>
</Value>
<Value name="3">
<Value>AktionBis</Value>
</Value>
<Value name="4">
<Value>Preis</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AktionBis">
</Property>
<Property name="AktionVon">
</Property>
<Property name="Kopf">
</Property>
<Property name="Preis">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.AktionspreisKopf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61885,31398.883801</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Aktionspreise">
<Type>DBAgrofresh.AktionspreisDet</Type>
<Cardinality>children</Cardinality>
<Inverse>Kopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Kunde">
<Type>DBDebiKredi.Debitor</Type>
<Cardinality>one</Cardinality>
<Inverse>AktionspreisKopf</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>

<Property name="Artikel">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>AktionspreisKopf</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="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="Ident">
<PrimaryKey>1</PrimaryKey>
<Properties>Mandant,Kunde,Artikel</Properties>
<Unique>1</Unique>
</Index>

<Method name="GetIdByIdent">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,KundeOid:%String,ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	
	set retval = ""
	set strSQL = "SELECT ID FROM DBAgrofresh.AktionspreisKopf WHERE Mandant = '"_MandantOid_"' AND Kunde = '"_KundeOid_"' AND Artikel = '"_ArtikelOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set retval = rs.Data("ID")
		}
	}
	Quit retval
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.AktionspreisKopfD</DataLocation>
<DefaultData>AktionspreisKopfDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.AktionspreisKopfD</IdLocation>
<IndexLocation>^DBAgrofresh.AktionspreisKopfI</IndexLocation>
<StreamLocation>^DBAgrofresh.AktionspreisKopfS</StreamLocation>
<Data name="AktionspreisKopfDefaultData">
<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>Mandant</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikel">
</Property>
<Property name="Kunde">
</Property>
<Property name="Mandant">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtAufwand">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57205.378985</TimeChanged>
<TimeCreated>62048,38110.121976</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">
<Type>%Integer</Type>
</Property>

<Property name="Artikel">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtAufwand</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="AufwArtikel">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>AufwArtVorschlag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="AufwArtikel"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AufwArtikelIndex">
<Properties>AufwArtikel</Properties>
</Index>

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

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

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

<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 DBAgrofresh.ArtAufwand WHERE PositionsNr = :PosNr AND Artikel = :ArtikelOid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.ArtAufwand
			WHERE Artikel = :ArtikelOid)
	Quit:(SQLCODE'=0) 1
	Quit nr + 1
]]></Implementation>
</Method>

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

<Method name="DeleteAufwandByArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	&sql(Delete FROM DBAgrofresh.ArtAufwand 
			WHERE Artikel = :ArtikelOid)
	Quit:(SQLCODE'=0) 0
	Quit 1
]]></Implementation>
</Method>

<Method name="ArtikelSetDefault">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,VerarbTyp:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	do ##class(DBAgrofresh.ArtAufwand).DeleteAufwandByArtikel(ArtikelOid)
	&sql(Insert into DBAgrofresh.ArtAufwand(PositionsNr, Artikel, Bezug, AufwArtikel) 
		SELECT PosNummer, :ArtikelOid, Bezugsart, Artikel
		FROM DBAgrofreshEK.Verarbeitung WHERE Verarbeitungstyp = :VerarbTyp)
	Quit:(SQLCODE'=0) 0
	Quit 1
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtAufwandD</DataLocation>
<DefaultData>ArtAufwandDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtAufwandD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtAufwandI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtAufwandS</StreamLocation>
<Data name="ArtAufwandDefaultData">
<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>AufwArtikel</Value>
</Value>
<Value name="5">
<Value>Bezug</Value>
</Value>
<Value name="6">
<Value>MengeVorschlag</Value>
</Value>
<Value name="7">
<Value>Bemerkung</Value>
</Value>
</Data>
<Property name="Artikel"/>
<Property name="AufwArtikel"/>
<Property name="Bemerkung"/>
<Property name="Bezug"/>
<Property name="MengeVorschlag"/>
<Property name="PositionsNr"/>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtPreisDatum">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57298.592991</TimeChanged>
<TimeCreated>61325,40108.767304</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>DBAgrofresh.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>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	if (Artikel ="") {
		quit 0
	}
	set Preis = 0
	
	&sql(SELECT TOP 1 Preis INTO :Preis FROM DBAgrofresh.ArtPreisDatum
		WHERE  Artikel=:Artikel AND AbDatum <= :Datum Order by AbDatum desc)
	Quit:(SQLCODE'=0) 0
	quit +Preis
]]></Implementation>
</Method>

<Method name="PreisPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##Class(DBAgrofresh.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 DBAgrofresh.ArtPreisDatum
	     WHERE  Artikel= :Artikel AND AbDatum = To_Date(:Datum))
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.ArtPreisDatum
		WHERE  Artikel=:Artikel AND AbDatum <= To_Date(:Datum) Order by AbDatum desc)
	Quit:(SQLCODE'=0) 0
	quit dat
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.ArtVerarb">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57205.538127</TimeChanged>
<TimeCreated>61550,29932.240506</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">
<Type>%Integer</Type>
</Property>

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

<Index name="GebindeIndex">
<Properties>Gebinde</Properties>
</Index>

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

<Property name="Qualitaet">
<Type>DBAgrofresh.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>DBAgrofresh.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>

<Property name="Mischposten">
<Description>
Originale Charge aus welcher die Verarbeitung entstand</Description>
<Type>%String</Type>
</Property>

<ForeignKey name="FKMischposten">
<Description>
Fremdschlüssel zur originalen Charge</Description>
<Properties>Mischposten</Properties>
<ReferencedClass>DBAgrofreshEK.ChargenEingang</ReferencedClass>
<ReferencedKey>ChargenIdIndex</ReferencedKey>
</ForeignKey>

<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 DBAgrofresh.ArtVerarb WHERE PositionsNr = :PosNr AND Artikel = :ArtikelOid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.ArtVerarb
			WHERE Artikel = :ArtikelOid)
	Quit:(SQLCODE'=0) 1
	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 DBAgrofresh.ArtVerarb 
			WHERE Artikel = :ArtikelOid)
	if (ret > 0) {
		set ret = 1
	}
	Quit:(SQLCODE'=0) 0
	Quit +ret
]]></Implementation>
</Method>

<Method name="GetIdByArtVerarbArtQualGeb">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,VerarbArtikel:%String,QualitaetOid:%String,GebindeOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.ArtVerarb WHERE Artikel = :ArtikelOid
			AND VerarbArtikel = :VerarbArtikel AND (Qualitaet = :QualitaetOid OR (NVL(:QualitaetOid, '') = '' AND Qualitaet is NULL)) AND (Gebinde = :GebindeOid OR (NVL(:GebindeOid, '') = '' AND Gebinde is NULL)))
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByArtVerArtQualGebAbzAnJe">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,VerarbArtikel:%String,QualitaetOid:%String,GebindeOid:%String,AbzugOid:%String,AnzJeGeb:%Decimal</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.ArtVerarb WHERE Artikel = :ArtikelOid
			AND VerarbArtikel = :VerarbArtikel AND (Qualitaet = :QualitaetOid OR (NVL(:QualitaetOid, '') = '' AND Qualitaet is NULL)) AND (Gebinde = :GebindeOid OR (NVL(:GebindeOid, '') = '' 
			AND Gebinde is NULL)) AND (Abzugstyp = :AbzugOid OR (NVL(:AbzugOid, '') = '' AND Abzugstyp is NULL)) AND NVL(AnzahlJeGebinde, 0) = :AnzJeGeb)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.ArtZusatzInfo">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57205.667718</TimeChanged>
<TimeCreated>61947,62281.443486</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>DBAgrofresh.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>ZusatzInfo</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="Typ">
<Type>%Integer</Type>
</Property>

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

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

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

<Property name="DateiEndung">
<Type>%String</Type>
<Parameter name="MAXLEN" value="10"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtZusatzInfoD</DataLocation>
<DefaultData>ArtZusatzInfoDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtZusatzInfoD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtZusatzInfoI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtZusatzInfoS</StreamLocation>
<Data name="ArtZusatzInfoDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Typ</Value>
</Value>
<Value name="3">
<Value>Artikel</Value>
</Value>
<Value name="4">
<Value>Lang</Value>
</Value>
<Value name="5">
<Value>DataStream</Value>
</Value>
<Value name="6">
<Value>Sprache</Value>
</Value>
<Value name="7">
<Value>DateiName</Value>
</Value>
<Value name="8">
<Value>DateiEndung</Value>
</Value>
</Data>
<Property name="Artikel"/>
<Property name="DataStream"/>
<Property name="DateiEndung"/>
<Property name="DateiName"/>
<Property name="Sprache"/>
<Property name="Typ"/>
</Storage>
</Class>


<Class name="DBAgrofresh.Artikel">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62430,50692.984209</TimeChanged>
<TimeCreated>61101,56047.816571</TimeCreated>
<Inheritance>right</Inheritance>

<Index name="ArtikelIdIndex">
<Properties>StrId</Properties>
<Unique>1</Unique>
</Index>

<Property name="StrId">
<Type>%String</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {StrId}={ID} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<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="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="EUZolltarifNr">
<Description>
EU-Zolltarif-Nr</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

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

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

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

<Property name="Artikelgruppe">
<Type>DBAgrofresh.SD.Artikelgruppe</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(DBAgrofresh.Artikel).GetArtGrpNr({Artikelgruppe}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="FibuKontoVK">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelFibuKontoVK</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>ArtikelFibuKontoEK</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>ArtikelMwstEK</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>ArtikelMwstVK</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>DBAgrofresh.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="Produktionsart">
<Type>DBAgrofresh.SD.Produktionsart</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelProduktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Produktionsart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ProduktionsartIndex">
<Properties>Produktionsart</Properties>
</Index>

<Property name="Aufbereitungsart">
<Type>DBAgrofresh.SD.Aufbereitungsart</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelAufbereitungsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Aufbereitungsart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AufbereitungsartIndex">
<Properties>Aufbereitungsart</Properties>
</Index>

<Property name="Qualitaetsklasse">
<Type>DBAgrofresh.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>

<Property name="Inhalt">
<Type>DBAgrofresh.SD.Inhalt</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelInhalt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Inhalt"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="InhaltIndex">
<Properties>Inhalt</Properties>
</Index>

<Property name="Verpackung">
<Type>DBAgrofresh.SD.Verpackung</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelVerpackung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Verpackung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="VerpackungIndex">
<Properties>Verpackung</Properties>
</Index>

<Property name="Preisetikette">
<Type>DBAgrofresh.SD.Preisetikette</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelPreisetikette</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Preisetikette"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="PreisetiketteIndex">
<Properties>Preisetikette</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>ArtikelLieferant1</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>ArtikelLieferant2</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>ArtikelLieferant3</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="VPreis">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

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

<Property name="Abzugstyp">
<Type>DBAgrofresh.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="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebindeIndex">
<Properties>Gebinde</Properties>
</Index>

<Property name="Mengeneinheit">
<Type>DBAgrofresh.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>

<Property name="Marge">
<Type>DBAgrofreshEK.SD.Marge</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelMarge</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Marge"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="MargeIndex">
<Properties>Marge</Properties>
</Index>

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

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

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

<Property name="BenAbzug">
<Type>DBAgrofresh.BenAbzuege</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtPreisDatum">
<Type>DBAgrofresh.ArtPreisDatum</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</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(DBAgrofresh.Artikel).GetDispFormatClass({DezStellenMenge}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Index name="DezFormatMengeIdx">
<Description>
Index für Dezimalformat</Description>
<Properties>DezFormatMenge</Properties>
</Index>

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

<Index name="DezFormatPreisIdx">
<Description>
Index für PreisFormat</Description>
<Properties>DezFormatPreis</Properties>
</Index>

<Property name="LagerLagerbestand">
<Description>
LagerLagerbestand</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerLagerbestand}=##class(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.Artikel).GetLagerBestVorschlagClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="LagerLagerbestandGeb">
<Description>
LagerLagerbestandGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerLagerbestandGeb}=##class(DBAgrofresh.Artikel).GetLagerBestandGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerReservationGeb">
<Description>
LagerReservationGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerReservationGeb}=##class(DBAgrofresh.Artikel).GetLagerReservationGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerOffeneBestGeb">
<Description>
LagerOffeneBestGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerOffeneBestGeb}=##class(DBAgrofresh.Artikel).GetLagerOffeneBestGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerVerfuegbarGeb">
<Description>
LagerVerfuegbarGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerVerfuegbarGeb}=##class(DBAgrofresh.Artikel).GetLagerVerfuegbarGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerMinBestandGeb">
<Description>
LagerMinBestandGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerMinBestandGeb}=##class(DBAgrofresh.Artikel).GetLagerMinBestandGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerBestMengeGeb">
<Description>
LagerBestMengeGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerBestMengeGeb}=##class(DBAgrofresh.Artikel).GetLagerBestMengeGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="LagerBestVorschlagGeb">
<Description>
LagerBestVorschlagGeb</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {LagerBestVorschlagGeb}=##class(DBAgrofresh.Artikel).GetLagerBestVorschlagGebClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

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

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

<Property name="EkDetPos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Index name="AbzugstypArtikelbezIndex">
<Properties>AbzugstypArtikelbez</Properties>
</Index>

<Property name="EKPreisArtikel">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenEingangArtikel">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgangArtikel">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="LagerAufnahmeArtikel">
<Type>DBAgrofreshEK.LagerAufnahme</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbeitungArt">
<Type>DBAgrofreshEK.Verarbeitung</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbeitungsTyp">
<Type>DBAgrofreshEK.SD.Verarbeitungstyp</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelVorschlag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="VerarbeitungsTyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="VerarbeitungsTypIndex">
<Properties>VerarbeitungsTyp</Properties>
</Index>

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

<Property name="ArtAufwand">
<Type>DBAgrofresh.ArtAufwand</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

<Property name="Lagerplatz">
<Description>
Lagerplatz</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="10"/>
</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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.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 DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerBestandGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(LagerbestandGebinde) INTO :menge FROM DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerReservationGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(ReservationGebinde) INTO :menge FROM DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerOffeneBestGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(OffeneBestellungenGebinde) INTO :menge FROM DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerVerfuegbarGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(VerfuegbarGebindeCalc) INTO :menge FROM DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerMinBestandGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(MindestbestandGebinde) INTO :menge FROM DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerBestMengeGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(OptimaleBestellmengeGebinde) INTO :menge FROM DBAgrofresh.ArtikelLager WHERE Artikel = :artOid)
	Quit:(SQLCODE'=0) 0
	quit menge
]]></Implementation>
</Method>

<Method name="GetLagerBestVorschlagGebClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>artOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = ""
	&sql(SELECT SUM(BestellvorschlagGebinde) INTO :menge FROM DBAgrofresh.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>
<SqlProc>1</SqlProc>
<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"
	  } elseif (+stellen = 4) {
		 set format = "#,###,##0.0000;'-'#,###,##0.0000"
	 }
	 quit format
]]></Implementation>
</Method>

<Method name="GetLLFormatClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>stellen:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	 set format = ""
	 if (+stellen = 0) {
		 set format = "-,---,--&"
	 } elseif (+stellen = 1) {
		 set format = "-,---,--&.&"
	 } elseif (+stellen = 2) {
		 set format = "-,---,--&.&&"
	 } elseif (+stellen = 3) {
		 set format = "-,---,--&.&&&"
	 } elseif (+stellen = 4) {
		 set format = "-,---,--&.&&&&"
	 } else {
		 set format = "-,---,--&.&&"
	 }
	 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 DBAgrofresh.Artikel
	     WHERE Mandant = :MandantOid
	     ORDER BY ArtikelNr)
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.Artikel
	     WHERE Mandant = :MandantOid
	     ORDER BY ArtikelNr DESC)
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.Artikel
	     WHERE Mandant = :MandantOid AND ArtikelAktiv = 1
	     ORDER BY ArtikelNr)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetArtikelNrByOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set art = ##class(DBAgrofresh.Artikel).%OpenId(ArtOid)
	if (art="") {
		Quit ""
	} else {
		Quit art.ArtikelNr
	}
]]></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>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	Set rs=##Class(DBAgrofresh.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>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	Set rs=##Class(DBAgrofresh.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(DBAgrofresh.Artikel).%OpenId(myID)
		if ((rs '= $c(0)) && (rs '= "")) {
			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(DBAgrofresh.Artikel).%OpenId(myID)
		if ((rs '= $c(0)) && (rs '= "")) {
			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 DBAgrofresh.Artikel
	     WHERE Mandant = :MandantOid AND ArtikelNr = :ArtNr)
	Quit:(SQLCODE'=0) 0
	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 ID INTO :id FROM DBAgrofresh.Artikel
		 WHERE Mandant = :MandantOid AND ArtikelNr = :ArtNr)
	Quit:(SQLCODE'=0) ""
	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(^DBAgrofresh.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,""),1)
	if (art '= ""){
		set id = $Order(^DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,""),-1)
	if (art '= ""){
		set id = $Order(^DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang," "_aktArtikelNr))
	if (nextArt '= "") {
		set res = $Order(^DBAgrofresh.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,nextArt,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang," "_aktArtikelNr),-1)
	if (prevArt '= "") {
		set res = $Order(^DBAgrofresh.ArtikelI("ArtikelNrMoveIndex",MandantOid,Lang,prevArt,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikeltextIndex",MandantOid,Lang,""),1)
	if (art '= ""){
		set id = $Order(^DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikeltextIndex",MandantOid,Lang,""),-1)
	if (art '= ""){
		set id = $Order(^DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikeltextIndex",MandantOid,Lang,aktArtikelText))
	if (nextArt '= "") {
		set res = $Order(^DBAgrofresh.ArtikelI("ArtikeltextIndex",MandantOid,Lang,nextArt,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.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(^DBAgrofresh.ArtikelI("ArtikeltextIndex",MandantOid,Lang,aktArtikelText),-1)
	if (prevArt '= "") {
		set res = $Order(^DBAgrofresh.ArtikelI("ArtikeltextIndex",MandantOid,Lang,prevArt,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.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(DBAgrofresh.Artikel).%OpenId(oid)
	Set newObj = srcArtikel.%ConstructClone(-1)
	Set newObj.ArtikelNr = dstNr
	Set newObj.Kurztext = dstBez
	do newObj.SetArtikeltext(srcArtikel.Mandant,"de",dstBez)
	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 DBAgrofresh.Artikel
			SET Herkunftsart= :Herkunftsart
			WHERE Artikelgruppe->ArtikelgruppenNr >= :GrpVon 
			AND Artikelgruppe->ArtikelgruppenNr <= :GrpBis
		)
]]></Implementation>
</Method>

<Method name="GetPreiseCount">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,NurAktive:%Boolean,Kunde:%String="",Gruppe:%String=""</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set count = 0
	if ((Kunde '= "") || (Gruppe '= "")) {
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		// Select string
		set str = "SELECT "
		
		if ((Kunde '= "")) {
			// Anzahl von Kundenpreise Selektionieren
			set str = str_"(SELECT COUNT(*) "_
			   "FROM DBAgrofresh.KundenPreis "_
			   "WHERE DBAgrofresh.Artikel.ID = Artikel "_
			   "AND Kunde = "_Kunde_") "
			   
			   // Falls auch Gruppenpreise vorhanden + machen sonst abschliessen
				if ((Kunde '= "") && (Gruppe '= "")) {
					set str = str_"+ "
				} else{
					set str = str_" AS CountPreise "
				}
		}
		if ((Gruppe '= "")) {
			// Anzahl von Gruppenpreise Selektionieren
		       set str = str_"(SELECT COUNT(*) "_
			   "FROM DBAgrofresh.KGPreis "_
			   "WHERE DBAgrofresh.Artikel.ID = Artikel "_
			   "AND Gruppe = "_Gruppe_")"_" AS CountPreise "
		}
		// From und Where clausel
		set str = str_"FROM DBAgrofresh.Artikel "_
			"WHERE ID = "_ArtOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		// Resultat abfüllen
		Do rs.Prepare(str)
		Set sc = rs.Execute()
		if (sc '= $$$OK) {
			Quit 0
		} else {
			if (rs.Next(.sc)) {
				set count = rs.Data("CountPreise")
				w rs.Data("CountPreise")
			}
		}
	}
	Quit +count
]]></Implementation>
</Method>

<Method name="FillArtikel">
<Description>
return temporary sql string, there is a bug with sql.statement and .net</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtGrpOid:%String,Lang:%String,NurAktive:%Boolean,OrderBy:%String,Kunde:%String="",Gruppe:%String=""</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	//set tStatement = ##class(%SQL.Statement).%New()
	
	//Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	set str = ""
	if ((Kunde = "") && (Gruppe = "")) {

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

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

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

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

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

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

		set str = "SELECT ID, ArtikelNr, Kurztext, ArtikelAktiv, "_
	       "DBAgrofresh.Artikel_GetArtikeltextClass(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext, "_ 
	       "DBAgrofresh.Artikel_GetArtikeltext2Class(%ID, "_MandantOid_", '"_Lang_"') As Artikeltext2, "_ 
	       "Artikelgruppe, "_
	       "Mengeneinheit, "_
	       "NVL((SELECT COUNT(ID) "_
		   "FROM DBAgrofreshEK.LieferantenPreis "_
		   "WHERE DBAgrofresh.Artikel.ID = Artikel "_
		   "AND Lieferant = "_Kunde_"),0) "_"+ "_
	       "NVL((SELECT COUNT(ID) "_
		   "FROM DBAgrofreshEK.KGPreis "_
		   "WHERE DBAgrofresh.Artikel.ID = Artikel "_
		   "AND Gruppe = "_Gruppe_"),0) AS CountPreise "_
		"FROM DBAgrofresh.Artikel "_
		"WHERE Mandant = "_MandantOid_" AND Artikelgruppe = "_ArtGrpOid_" "
		if (NurAktive) {
			set str = str_" AND ArtikelAktiv = 1 "
		}
		set str = str_"ORDER BY "_OrderBy
	
	} elseif ((Kunde '= "")) {

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

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

<Method name="SetHerkunftsartByArt">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Herkunftsart:%Integer,ArtVon:%String,ArtBis:%String</FormalSpec>
<Implementation><![CDATA[

	&sql(UPDATE DBAgrofresh.Artikel
			SET Herkunftsart= :Herkunftsart
			WHERE ArtikelNr >= :ArtVon 
			AND ArtikelNr <= :ArtBis
		)
]]></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 DBAgrofresh.Artikel WHERE ID=:artId)
		if (SQLCODE'=0) {
			Set ^ArtikelOldArtikelNr(artId) = oldArtNr
		} else {
			Set ^ArtikelOldArtikelNr(artId) = ""
		}
	}
	
	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 DBAgrofresh.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 DBAgrofresh.Artikel WHERE ID=:artId)
	if (SQLCODE'=0) {
		Set ^ArtikelOldArtikelNr(artId) = oldArtNr
	} else {
		Set ^ArtikelOldArtikelNr(artId) = ""
	}]]></Code>
<Event>UPDATE</Event>
</Trigger>

<Trigger name="trgAfterSave">
<Code>	new chk
	new art
	// Verweiste Artikelnummern in DBAgrofresh.Abzuege nachführen
	set chk = ..checkUpdate({ID*N})
	if ('chk) {
		Set $ECODE = ##class(DBCore.ErrorCodes).ABZUGNICHTNACHGEFUEHRTCODE()
	}
	
	// Modified aktualisieren
	set art = ##class(DBAgrofresh.Artikel).%OpenId({ID*N})
	if (art '= "") {
		do art.%Save()
		kill art		
	}</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 DBAgrofresh.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 DBAgrofresh.Preis 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[
	
	set myID = ObjectId
	set artnr = ""
	set abz = ""
	set mand = ""

	&sql(SELECT ArtikelNr,Mandant INTO :artnr,:mand FROM DBAgrofresh.Artikel WHERE ID = :myID)
	
	//hier muss Dynamic SQL angewendet werden, da embedded nicht funktioniert
	Set strSQL="SELECT ID FROM DBAgrofresh.Abzuege WHERE Abzugstyp->Mandant = "_mand_" AND ArtikelNr = "_artnr
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	set state = 1
	While rs.Next(.sc) {
		set state = 0
		Quit
	}
	Quit state
]]></Implementation>
</Method>

<Method name="checkUpdate">
<Description>
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ObjectId:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ObjectId
	set artnr = ""
	set mand = ""
	
	&sql(SELECT ArtikelNr,Mandant INTO :artnr,:mand FROM DBAgrofresh.Artikel WHERE ID = :id)
	
	set oldArtnr = $GET(^ArtikelOldArtikelNr(id))
	KILL ^ArtikelOldArtikelNr(id)
	
	if ((oldArtnr '="") && (artnr '= "")) {
		Set strSQL="UPDATE DBAgrofresh.Abzuege SET ArtikelNr = '"_artnr_"' WHERE Abzugstyp->Mandant = "_mand_" AND ArtikelNr = "_oldArtnr
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
	
		if (sc '= $$$OK) {
			Quit 0
		}
	}
	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 DBAgrofresh.Artikel WHERE ID = :ArtikelOid)
		if (id '= "") {
			&sql(SELECT DBAgrofresh_SD.Mengencode_GetTextClass(:id, :MandantOid, :Lang) INTO :ret
					FROM DBAgrofresh_SD.Mengencode WHERE ID = :id)	
		}
	}
	Quit:(SQLCODE'=0) ""
	Quit ret
]]></Implementation>
</Method>

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

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

<Property name="AufwArtVorschlag">
<Type>DBAgrofresh.ArtAufwand</Type>
<Cardinality>many</Cardinality>
<Inverse>AufwArtikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Produktgruppe">
<Type>DBAgrofresh.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="VerarbProv">
<Type>DBAgrofreshEK.VerarbProv</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbAufwand">
<Type>DBAgrofreshEK.VerarbAufwand</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Ruestlinie">
<Type>DBAgrofresh.SD.Ruestlinie</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelRuestlinie</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Ruestlinie"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="RuestlinieIndex">
<Properties>Ruestlinie</Properties>
</Index>

<Property name="Lieferanteil">
<Type>DBPlattform.Lieferanteil</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<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="ArtikelHoga">
<Type>DBAgrofresh.ArtikelHoga</Type>
<Cardinality>children</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PlattformBestPos">
<Type>DBPlattform.BestPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Angebot">
<Type>DBPlattform.AngebotsPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PlattformAuftragsPos">
<Type>DBPlattform.AuftragsPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AktionspreisKopf">
<Type>DBAgrofresh.AktionspreisKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Modified">
<Type>%TimeStamp</Type>
<InitialExpression>$ZDT($ZUTIL(188),3)</InitialExpression>
</Property>

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

<Property name="ZusatzInfo">
<Type>DBAgrofresh.ArtZusatzInfo</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PlattformBudget">
<Type>DBPlattform.Budget</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="GetreideArtikelLager">
<Type>DBSpezial.Getr.SD.Getrsorte</Type>
<Cardinality>many</Cardinality>
<Inverse>ArtikelLager</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

<Method name="OutputZusatzInfoStream">
<FormalSpec>Typ:%Integer,Sprache:%String</FormalSpec>
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set myId = ..%Id()
	Set sID = ""
	Set Ret=""
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBAgrofresh.ArtZusatzInfo 
		     WHERE Artikel->ID=:myId AND Sprache=:Sprache AND Typ = :Typ)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBAgrofresh.ArtZusatzInfo  
				 WHERE Artikel->ID=:myId AND 
				       Sprache=:Sprache AND Typ = :Typ)
			Set s=##Class(DBAgrofresh.ArtZusatzInfo).%OpenId(sID)
			Set Size=s.DataStream.Size
			Set Ret=tmpStream.CopyFromAndSave(s.DataStream)
		}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="GetZusatzInfoObj">
<FormalSpec>Typ:%Integer,Sprache:%String</FormalSpec>
<ReturnType>DBAgrofresh.ArtZusatzInfo</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(DBAgrofresh.ArtZusatzInfo).%New()
	Set myId = ..%Id()
	Set sID = ""
	Set Ret=""
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBAgrofresh.ArtZusatzInfo 
		     WHERE Artikel->ID=:myId AND Sprache=:Sprache AND Typ = :Typ)
		     
		If ((SQLCODE=0) && (Cnt>0)) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBAgrofresh.ArtZusatzInfo  
				 WHERE Artikel->ID=:myId AND 
				       Sprache=:Sprache AND Typ = :Typ)
			If (SQLCODE=0) {
				Set tmpStream=##Class(DBAgrofresh.ArtZusatzInfo).%OpenId(sID)
			}
		}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="InputZusatzInfoStream">
<FormalSpec>Stream:%Library.GlobalBinaryStream,Typ:%Integer,Sprache:%String,Dateiname:%String,DateiEndung:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res=0
	Set myId = ..%Id()
	Set sID = ""
	If (myId'="") {
		Set Cnt=0
		
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBAgrofresh.ArtZusatzInfo
		     WHERE Artikel->ID=:myId AND Sprache=:Sprache AND Typ = :Typ)
		
		If ((SQLCODE'=0) || (Cnt=0)) {
			Set myId=..%Id()			
			Set n=##Class(DBAgrofresh.ArtZusatzInfo).%New()
			Set n.Sprache = Sprache
			Set n.Typ = Typ
			set n.DateiName = Dateiname
			Set n.DateiEndung = DateiEndung
			Set n.Artikel = ##Class(DBAgrofresh.Artikel).%OpenId(myId)
			Set Ret=n.%Save()
			Set n=""
			Set res=(Ret=1)
			Quit:'res res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBAgrofresh.ArtZusatzInfo 
		     WHERE Artikel->ID=:myId AND 
		           Sprache=:Sprache AND Typ = :Typ)
		If (SQLCODE=0) {
			Set s=##Class(DBAgrofresh.ArtZusatzInfo).%OpenId(sID)
			set s.DateiName = Dateiname
			Set s.DateiEndung = DateiEndung
			Set Ret=s.DataStream.CopyFromAndSave(Stream)
			Set RetS = s.%Save()
		
			Set res=((Ret=1) && (RetS=1))
		}
	}
	Quit res
]]></Implementation>
</Method>

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

<Property name="MuehleMengenrabatt">
<Type>DBSpezial.Getr.SD.Mengenrabatt</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="MuehleAbholrabatt">
<Type>DBSpezial.Getr.SD.Abholrabatt</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="MuehleLoserrabatt">
<Type>DBSpezial.Getr.SD.Loserrabatt</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="MuehleRabattSumArt">
<Type>DBSpezial.Getr.SD.RabattSumArt</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="FaktorProdLager">
<Description>
Faktor Produzentenlager</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Method name="GetAnburchPreisstaffelClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,KeyAPreisstaffel:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	Set rs=##Class(DBAgrofresh.Artikel).%OpenId(myID)
	Quit rs.AnburchsPreisstaffel.GetAt(KeyAPreisstaffel)
]]></Implementation>
</Method>

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

<Method name="%OnAddToSaveSet">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%AddToSaveSet</METHOD> method to 
provide notification that the current object is being included in a SaveSet, either
because %Save() was invoked on this object or an object that references this object.

<P>If this method returns an error status then %Save() will fail and the transaction
will be rolled back.]]></Description>
<FormalSpec>depth:%Integer=3,insert:%Integer=0,callcount:%Integer=0</FormalSpec>
<Private>1</Private>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set ..Modified = $ZDT($ZUTIL(188),3)
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="CheckArtikelisUsed">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	// Auftragspos
	set fehler = ""
	Set strSQL="SELECT Auftragskopf->AuftragsNr AS AuftragsNr FROM DBAgrofresh.Auftragspos WHERE Artikel = "_ArtikelOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	While rs.Next(.sc) {
		if (fehler = "") {
			set fehler = "Der Artikel wird noch in folgenden Aufträgen verwendet: "
		} else {
			set fehler = fehler_", "
		}
		set fehler = fehler_rs.Data("AuftragsNr")
	}
	// Bestpos
	Set strSQL="SELECT Bestellungskopf->BestellungsNr AS BestNr FROM DBAgrofreshEK.Bestellungspos WHERE Artikel = "_ArtikelOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if rs.Next(.sc) {
		if (fehler = "") {
			set fehler = "Der Artikel wird noch in folgenden Bestellungen verwendet: "
		} else {
			set fehler = fehler_" zusätzlich noch in folgenden Bestellungen: "
		}
		set fehler = fehler_rs.Data("BestNr")
	}
	While rs.Next(.sc) {
		set fehler = fehler_", "
		set fehler = fehler_rs.Data("BestNr")
	}
	// KundenSpezPreise
	Set strSQL="SELECT Kunde->Adresse->Adressnummer AS AdrNr FROM DBAgrofresh.KundenPreis WHERE Artikel = "_ArtikelOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if rs.Next(.sc) {
		if (fehler = "") {
			set fehler = "Der Artikel wird noch auf folgenden Kundenspezifischen Preisen (KundenNr) verwendet: "
		} else {
			set fehler = fehler_" zusätzlich noch auf folgenden Kundenspezifischen Preisen (KundenNr): "
		}
		set fehler = fehler_rs.Data("AdrNr")
	}
	While rs.Next(.sc) {
		set fehler = fehler_", "
		set fehler = fehler_rs.Data("AdrNr")
	}
	// KundenGrSpezPreise
	Set strSQL="SELECT Gruppe->Code AS GruppenNr FROM DBAgrofresh.KGPreis WHERE Artikel = "_ArtikelOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if rs.Next(.sc) {
		if (fehler = "") {
			set fehler = "Der Artikel wird noch auf folgenden Kundengruppenspezifischen Preisen (Kunden Gruppen Nr) verwendet: "
		} else {
			set fehler = fehler_" zusätzlich noch auf folgenden Kundengruppenspezifischen Preisen (Kunden Gruppen Nr): "
		}
		set fehler = fehler_rs.Data("GruppenNr")
	}
	While rs.Next(.sc) {
		set fehler = fehler_", "
		set fehler = fehler_rs.Data("GruppenNr")
	}
	// KundenSpezPreise EK
	Set strSQL="SELECT Lieferant->Adresse->Adressnummer AS AdrNr FROM DBAgrofreshEK.LieferantenPreis WHERE Artikel = "_ArtikelOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if rs.Next(.sc) {
		if (fehler = "") {
			set fehler = "Der Artikel wird noch auf folgenden Lieferantenspezifischen Preisen (KundenNr) verwendet: "
		} else {
			set fehler = fehler_" zusätzlich noch auf folgenden Lieferantenspezifischen Preisen (KundenNr): "
		}
		set fehler = fehler_rs.Data("AdrNr")
	}
	While rs.Next(.sc) {
		set fehler = fehler_", "
		set fehler = fehler_rs.Data("AdrNr")
	}
	// KundenGrSpezPreise
	Set strSQL="SELECT Gruppe->Code AS GruppenNr FROM DBAgrofreshEK.KGPreis WHERE Artikel = "_ArtikelOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if rs.Next(.sc) {
		if (fehler = "") {
			set fehler = "Der Artikel wird noch auf folgenden Lieferantgruppenspezifischen Preisen (Kunden Gruppen Nr) verwendet: "
		} else {
			set fehler = fehler_" zusätzlich noch auf folgenden Lieferantgruppenspezifischen Preisen (Kunden Gruppen Nr): "
		}
		set fehler = fehler_rs.Data("GruppenNr")
	}
	While rs.Next(.sc) {
		set fehler = fehler_", "
		set fehler = fehler_rs.Data("GruppenNr")
	}
	quit fehler
]]></Implementation>
</Method>

<Method name="GetPreisByPreisKatClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,KeyPreiskat:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = 0
	if ((myID '= $c(0)) && (myID '= "")) {
		Set rs=##Class(DBAgrofresh.Artikel).%OpenId(myID)
		if ((rs '= $c(0)) && (rs '= "")) {
			if ((KeyPreiskat '= $c(0)) && (KeyPreiskat '= 0)) {
				set preis = rs.Preisstaffel.GetAt(KeyPreiskat)
			}
			if (+preis = 0) {
				set preis = rs.Basispreis
			}
		}
	}
	quit preis
]]></Implementation>
</Method>

<Property name="InactiveArticlesWeb">
<Type>DBPlattform.InactiveArticlesWeb</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

<Property name="MuehleRabattgruppe">
<Type>DBSpezial.Getr.SD.Rabattgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>Artikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="EinkaufsArtikel">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>Verkaufsartikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="EinkaufsArtikelIndex">
<Properties>Mandant,EinkaufsArtikel</Properties>
</Index>

<Property name="Verkaufsartikel">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>EinkaufsArtikel</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtikelD</DataLocation>
<DefaultData>ArtikelDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtikelI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtikelS</StreamLocation>
<Data name="AnburchsPreisstaffel">
<Attribute>AnburchsPreisstaffel</Attribute>
<Structure>subnode</Structure>
<Subscript>"AnburchsPreisstaffel"</Subscript>
</Data>
<Data name="ArtikelDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Aktion</Value>
</Value>
<Value name="3">
<Value>AktionBisDatum</Value>
</Value>
<Value name="4">
<Value>AktionVonDatum</Value>
</Value>
<Value name="5">
<Value>Aktionspreis</Value>
</Value>
<Value name="6">
<Value>AktionspreisAnbruch</Value>
</Value>
<Value name="7">
<Value>ArtikelAktiv</Value>
</Value>
<Value name="8">
<Value>ArtikelNr</Value>
</Value>
<Value name="9">
<Value>Artikelcode</Value>
</Value>
<Value name="10">
<Value>Artikelgruppe</Value>
</Value>
<Value name="11">
<Value>Artikeltext</Value>
</Value>
<Value name="12">
<Value>Artikeltext2</Value>
</Value>
<Value name="13">
<Value>Aufbereitungsart</Value>
</Value>
<Value name="14">
<Value>Bemerkung</Value>
</Value>
<Value name="15">
<Value>Bestellvorschlag</Value>
</Value>
<Value name="16">
<Value>DatumLetzteBewegung</Value>
</Value>
<Value name="17">
<Value>DurchschnittlicherEKP</Value>
</Value>
<Value name="18">
<Value>EUZolltarivNr</Value>
</Value>
<Value name="19">
<Value>EinkaufBetragVorjahr</Value>
</Value>
<Value name="20">
<Value>EinkaufMengeVorjahr</Value>
</Value>
<Value name="21">
<Value>Einzelgewicht</Value>
</Value>
<Value name="22">
<Value>FibuKontoEinkauf</Value>
</Value>
<Value name="23">
<Value>FibuKontoVerkauf</Value>
</Value>
<Value name="24">
<Value>Herkunft</Value>
</Value>
<Value name="25">
<Value>Herkunftsart</Value>
</Value>
<Value name="26">
<Value>Inhalt</Value>
</Value>
<Value name="27">
<Value>InventarBestand</Value>
</Value>
<Value name="28">
<Value>InventarBewertungspreis</Value>
</Value>
<Value name="29">
<Value>InventarLagerberichtigung</Value>
</Value>
<Value name="30">
<Value>Kurztext</Value>
</Value>
<Value name="31">
<Value>LagerAktiv</Value>
</Value>
<Value name="32">
<Value>Lagerbestand</Value>
</Value>
<Value name="33">
<Value>Lagerort</Value>
</Value>
<Value name="34">
<Value>LetzterEKP</Value>
</Value>
<Value name="35">
<Value>Lieferant1</Value>
</Value>
<Value name="36">
<Value>Lieferant1ArtNr</Value>
</Value>
<Value name="37">
<Value>Lieferant1LetzterEKP</Value>
</Value>
<Value name="38">
<Value>Lieferant2</Value>
</Value>
<Value name="39">
<Value>Lieferant2ArtNr</Value>
</Value>
<Value name="40">
<Value>Lieferant2LetzterEKP</Value>
</Value>
<Value name="41">
<Value>Lieferant3</Value>
</Value>
<Value name="42">
<Value>Lieferant3ArtNr</Value>
</Value>
<Value name="43">
<Value>Lieferant3LetzterEKP</Value>
</Value>
<Value name="44">
<Value>Mandant</Value>
</Value>
<Value name="45">
<Value>Marge</Value>
</Value>
<Value name="46">
<Value>MargeProzent</Value>
</Value>
<Value name="47">
<Value>Mengeneinheit</Value>
</Value>
<Value name="48">
<Value>Mindestbestand</Value>
</Value>
<Value name="49">
<Value>MwstEinkauf</Value>
</Value>
<Value name="50">
<Value>MwstVerkauf</Value>
</Value>
<Value name="51">
<Value>OffeneBestellungen</Value>
</Value>
<Value name="52">
<Value>OptimaleBestellmenge</Value>
</Value>
<Value name="53">
<Value>OrderNr</Value>
</Value>
<Value name="54">
<Value>Parzelle</Value>
</Value>
<Value name="55">
<Value>Preiseinheit</Value>
</Value>
<Value name="56">
<Value>Preisetikette</Value>
</Value>
<Value name="57">
<Value>Preisliste</Value>
</Value>
<Value name="58">
<Value>Produktionsart</Value>
</Value>
<Value name="59">
<Value>Qualitaetsklasse</Value>
</Value>
<Value name="60">
<Value>Reservation</Value>
</Value>
<Value name="61">
<Value>UmsatzBetragVorjahr</Value>
</Value>
<Value name="62">
<Value>UmsatzMengeVorjahr</Value>
</Value>
<Value name="63">
<Value>Verpackung</Value>
</Value>
<Value name="64">
<Value>Vertreterumsatz</Value>
</Value>
<Value name="65">
<Value>Abzugstyp</Value>
</Value>
<Value name="66">
<Value>Gebinde</Value>
</Value>
<Value name="67">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="68">
<Value>Basispreis</Value>
</Value>
<Value name="69">
<Value>EKMengeVorjahr</Value>
</Value>
<Value name="70">
<Value>EKBetragVorjahr</Value>
</Value>
<Value name="71">
<Value>FibuKontoVK</Value>
</Value>
<Value name="72">
<Value>FibuKontoEK</Value>
</Value>
<Value name="73">
<Value>MwstEK</Value>
</Value>
<Value name="74">
<Value>MwstVK</Value>
</Value>
<Value name="75">
<Value>GewichJePal</Value>
</Value>
<Value name="76">
<Value>DezStellenMenge</Value>
</Value>
<Value name="77">
<Value>DezStellenPreis</Value>
</Value>
<Value name="78">
<Value>AbzugstypArtikelbez</Value>
</Value>
<Value name="79">
<Value>BasisArtikelEK</Value>
</Value>
<Value name="80">
<Value>VerarbeitungsTyp</Value>
</Value>
<Value name="81">
<Value>Waageneinstellungen</Value>
</Value>
<Value name="82">
<Value>WaageNachkommastellen</Value>
</Value>
<Value name="83">
<Value>WaagenTaraAbziehen</Value>
</Value>
<Value name="84">
<Value>Produktgruppe</Value>
</Value>
<Value name="85">
<Value>Ruestlinie</Value>
</Value>
<Value name="86">
<Value>GewichtJePal</Value>
</Value>
<Value name="87">
<Value>EANCode1</Value>
</Value>
<Value name="88">
<Value>EANCode2</Value>
</Value>
<Value name="89">
<Value>PreisNeu</Value>
</Value>
<Value name="90">
<Value>PreisNeuAbDatum</Value>
</Value>
<Value name="91">
<Value>Modified</Value>
</Value>
<Value name="92">
<Value>EUZolltarifNr</Value>
</Value>
<Value name="93">
<Value>Lagerplatz</Value>
</Value>
<Value name="94">
<Value>MinMarge</Value>
</Value>
<Value name="95">
<Value>MaxMarge</Value>
</Value>
<Value name="96">
<Value>MuehleMengenrabatt</Value>
</Value>
<Value name="97">
<Value>MuehleAbholrabatt</Value>
</Value>
<Value name="98">
<Value>MuehleLoserrabatt</Value>
</Value>
<Value name="99">
<Value>MuehleRabattSumArt</Value>
</Value>
<Value name="100">
<Value>FaktorProdLager</Value>
</Value>
<Value name="101">
<Value>VerlustEinkauf</Value>
</Value>
<Value name="102">
<Value>VerlustVerkauf</Value>
</Value>
<Value name="103">
<Value>MuehleRabattgruppe</Value>
</Value>
<Value name="104">
<Value>EinkaufsArtikel</Value>
</Value>
</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>
<Property name="AnzahlJeGebinde">
</Property>
<Property name="ArtGrpNrCalc">
</Property>
<Property name="ArtikelAktiv">
</Property>
<Property name="ArtikelNr">
</Property>
<Property name="Artikelcode">
</Property>
<Property name="Artikelgruppe">
</Property>
<Property name="Artikeltext">
</Property>
<Property name="Artikeltext2">
</Property>
<Property name="Aufbereitungsart">
</Property>
<Property name="BasisArtikelEK"/>
<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="EKBetragVorjahr"/>
<Property name="EKMengeVorjahr"/>
<Property name="EUZolltarifNr">
</Property>
<Property name="EUZolltarivNr"/>
<Property name="EinkaufsArtikel">
</Property>
<Property name="Einzelgewicht">
</Property>
<Property name="FaktorProdLager">
</Property>
<Property name="FibuKontoEK">
</Property>
<Property name="FibuKontoVK">
</Property>
<Property name="Gebinde">
</Property>
<Property name="GewichJePal"/>
<Property name="GewichtJePal">
</Property>
<Property name="Herkunft">
</Property>
<Property name="Herkunftsart">
</Property>
<Property name="Inhalt">
</Property>
<Property name="InventarBestand">
</Property>
<Property name="InventarBewertungspreis">
</Property>
<Property name="InventarLagerberichtigung">
</Property>
<Property name="Kurztext">
</Property>
<Property name="LagerAktiv">
</Property>
<Property name="LagerBestMenge">
</Property>
<Property name="LagerBestMengeGeb">
</Property>
<Property name="LagerBestVorschlag">
</Property>
<Property name="LagerBestVorschlagGeb">
</Property>
<Property name="LagerLagerbestand">
</Property>
<Property name="LagerLagerbestandGeb">
</Property>
<Property name="LagerMinBestand">
</Property>
<Property name="LagerMinBestandGeb">
</Property>
<Property name="LagerOffeneBest">
</Property>
<Property name="LagerOffeneBestGeb">
</Property>
<Property name="LagerReservation">
</Property>
<Property name="LagerReservationGeb">
</Property>
<Property name="LagerVerfuegbar">
</Property>
<Property name="LagerVerfuegbarGeb">
</Property>
<Property name="Lagerplatz">
</Property>
<Property name="LetzterEKP">
</Property>
<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>
<Property name="MargeProzent">
</Property>
<Property name="MaxMarge">
</Property>
<Property name="Mengeneinheit">
</Property>
<Property name="MinMarge">
</Property>
<Property name="Modified">
</Property>
<Property name="MuehleAbholrabatt">
</Property>
<Property name="MuehleLoserrabatt">
</Property>
<Property name="MuehleMengenrabatt">
</Property>
<Property name="MuehleRabattSumArt">
</Property>
<Property name="MuehleRabattgruppe">
</Property>
<Property name="MwstEK">
</Property>
<Property name="MwstVK">
</Property>
<Property name="OrderNr">
</Property>
<Property name="Parzelle">
</Property>
<Property name="PreisNeu">
</Property>
<Property name="PreisNeuAbDatum">
</Property>
<Property name="Preiseinheit">
</Property>
<Property name="Preisetikette">
</Property>
<Property name="Preisliste">
</Property>
<Property name="Produktgruppe">
</Property>
<Property name="Produktionsart">
</Property>
<Property name="Qualitaetsklasse">
</Property>
<Property name="Ruestlinie">
</Property>
<Property name="StrId">
</Property>
<Property name="UmsatzBetragVorjahr"/>
<Property name="UmsatzMengeVorjahr"/>
<Property name="VerarbeitungsTyp">
</Property>
<Property name="VerlustEinkauf">
</Property>
<Property name="VerlustVerkauf">
</Property>
<Property name="Verpackung">
</Property>
<Property name="Vertreterumsatz">
</Property>
<Property name="WaageNachkommastellen">
</Property>
<Property name="WaagenTaraAbziehen">
</Property>
<Property name="Waageneinstellungen">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtikelHoga">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57298.789641</TimeChanged>
<TimeCreated>61695,33057.867281</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="Supplier">
<Description>
Hersteller</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

<Property name="MainGroupObj">
<Description>
Hauptkategorie</Description>
<Type>DBAgrofresh.SD.HogaHauptGrp</Type>
<Cardinality>one</Cardinality>
<Inverse>HogaArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="MainGroupObj"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="MainGroupIndex">
<Properties>MainGroupObj</Properties>
</Index>

<Property name="GroupObj">
<Description>
kategorie </Description>
<Type>DBAgrofresh.SD.HogaGrp</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelHoga</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="GroupObj"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GroupIndex">
<Properties>GroupObj</Properties>
</Index>

<Property name="UnderGroupObj">
<Description>
Unterkategorie</Description>
<Type>DBAgrofresh.SD.HogaUnterGrp</Type>
<Cardinality>one</Cardinality>
<Inverse>HogaArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="UnderGroupObj"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="UnderGroupIndex">
<Properties>GroupObj</Properties>
</Index>

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

<Property name="ProductType">
<Description>
Produkttyp</Description>
<Type>%Integer</Type>
</Property>

<Property name="NumberOfPieces">
<Description>
Stückzahlen</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Length">
<Description>
Länge des Produkts</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Width">
<Description>
Breite des Produkts</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Height">
<Description>
Höhe des Produkts</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Diameter">
<Description>
Durchmesser des Produkts</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Netto">
<Description>
Nettogewicht des  Produkts</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Property name="CustomNumber">
<Description>
Werte die das Produkt näher spezifizieren</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="HTML">
<Description>
HTML Beschreibung</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="32765"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="Assignable">
<Description>
Sichtbarkeit für bestimme Kunden</Description>
<Type>%Integer</Type>
</Property>

<Property name="ValidFromOnsale">
<Description>
Datum von dem an der Verkaufspreis gültig ist</Description>
<Type>%Date</Type>
</Property>

<Property name="Novelty">
<Description>
Markierung für Neuheiten</Description>
<Type>%Integer</Type>
</Property>

<Property name="ValidToNovelty">
<Description>
Datum bis zu dem ein Produkt als Neuheit markiert ist</Description>
<Type>%Date</Type>
</Property>

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

<Property name="LastOrderTime">
<Description>
Liefertage</Description>
<Type>%Time</Type>
</Property>

<Property name="DaysToDeliver">
<Description>
Lieferzeit des Anbieters</Description>
<Type>%Integer</Type>
</Property>

<Property name="HideFromCustomers">
<Description>
Produktsichtbarkeit Kunden</Description>
<Type>%Integer</Type>
</Property>

<Property name="HTMLEN">
<Description>
HTML Beschreibung Englisch</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="32765"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="HTMLFR">
<Description>
HTML Beschreibung Französisch</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="32765"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Property name="HTMLIT">
<Description>
HTML Beschreibung Italienisch</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="32765"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Property name="Artikel">
<Description>
Artikel</Description>
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>ArtikelHoga</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="DeleteInShop">
<Description>
Delete in shop</Description>
<Type>%Integer</Type>
</Property>

<Property name="DaysToDeliver2">
<Description>
Lieferzeit des Anbieters</Description>
<Type>%Integer</Type>
</Property>

<Property name="ProductWithoutPrice">
<Description>
Product without price</Description>
<Type>%Integer</Type>
</Property>

<Property name="Modified">
<Type>%TimeStamp</Type>
<InitialExpression>$ZDT($ZUTIL(188),3)</InitialExpression>
</Property>

<Property name="LastUploaded">
<Type>%TimeStamp</Type>
</Property>

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

<Index name="AlternativEinheitIndex">
<Properties>AlternativEinheit</Properties>
</Index>

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

<Method name="GetIdByArtikelOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.ArtikelHoga WHERE Artikel = :ArtikelOid)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="%OnAddToSaveSet">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%AddToSaveSet</METHOD> method to 
provide notification that the current object is being included in a SaveSet, either
because %Save() was invoked on this object or an object that references this object.

<P>If this method returns an error status then %Save() will fail and the transaction
will be rolled back.]]></Description>
<FormalSpec>depth:%Integer=3,insert:%Integer=0,callcount:%Integer=0</FormalSpec>
<Private>1</Private>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	if ('insert) {
		set exists = $GET(^DBAgrofresh.ArtikelHogaFlagModify(..%Id()))
		if (exists) {
			set ..Modified = $ZDT($ZUTIL(188),3)
		}
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgAfterSave">
<Code>	new art
	// Modified aktualisieren
	set art = ##class(DBAgrofresh.ArtikelHoga).%OpenId({ID*N})
	if (art '= "") {
		do art.%Save()
		kill art		
	}</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
</Trigger>

<Method name="SetFlagModified">
<ClassMethod>1</ClassMethod>
<FormalSpec>HogaOid:%String,notSetModified:%Boolean</FormalSpec>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	if (notSetModified) {
		set ^DBAgrofresh.ArtikelHogaFlagModify(HogaOid) = notSetModified
	} else {
		kill ^DBAgrofresh.ArtikelHogaFlagModify(HogaOid)
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtikelHogaD</DataLocation>
<DefaultData>ArtikelHogaDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelHogaD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtikelHogaI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtikelHogaS</StreamLocation>
<Data name="ArtikelHogaDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Supplier</Value>
</Value>
<Value name="3">
<Value>Currency</Value>
</Value>
<Value name="4">
<Value>MainGroup</Value>
</Value>
<Value name="5">
<Value>Group</Value>
</Value>
<Value name="6">
<Value>SubGroup</Value>
</Value>
<Value name="7">
<Value>OnsalePrice</Value>
</Value>
<Value name="8">
<Value>ActiveAction</Value>
</Value>
<Value name="9">
<Value>ValidToAction</Value>
</Value>
<Value name="10">
<Value>ProductType</Value>
</Value>
<Value name="11">
<Value>NumberOfPieces</Value>
</Value>
<Value name="12">
<Value>Packing</Value>
</Value>
<Value name="13">
<Value>Length</Value>
</Value>
<Value name="14">
<Value>Width</Value>
</Value>
<Value name="15">
<Value>Height</Value>
</Value>
<Value name="16">
<Value>Diameter</Value>
</Value>
<Value name="17">
<Value>Netto</Value>
</Value>
<Value name="18">
<Value>Brutto</Value>
</Value>
<Value name="19">
<Value>CustomNumber</Value>
</Value>
<Value name="20">
<Value>Available</Value>
</Value>
<Value name="21">
<Value>HTML</Value>
</Value>
<Value name="22">
<Value>Assignable</Value>
</Value>
<Value name="23">
<Value>PictureFile</Value>
</Value>
<Value name="24">
<Value>ValidFromOnsale</Value>
</Value>
<Value name="25">
<Value>Novelty</Value>
</Value>
<Value name="26">
<Value>ValidToNovelty</Value>
</Value>
<Value name="27">
<Value>NewPrice</Value>
</Value>
<Value name="28">
<Value>ValidFromNewPrice</Value>
</Value>
<Value name="29">
<Value>Calorie</Value>
</Value>
<Value name="30">
<Value>LastOrderTime</Value>
</Value>
<Value name="31">
<Value>DaysToDeliver</Value>
</Value>
<Value name="32">
<Value>HideFromCustomers</Value>
</Value>
<Value name="33">
<Value>HTMLEN</Value>
</Value>
<Value name="34">
<Value>HTMLFR</Value>
</Value>
<Value name="35">
<Value>HTMLIT</Value>
</Value>
<Value name="36">
<Value>FileDE</Value>
</Value>
<Value name="37">
<Value>FileEN</Value>
</Value>
<Value name="38">
<Value>FileFR</Value>
</Value>
<Value name="39">
<Value>FileIT</Value>
</Value>
<Value name="40">
<Value>StockAmount</Value>
</Value>
<Value name="41">
<Value>InternalPrice</Value>
</Value>
<Value name="42">
<Value>Artikel</Value>
</Value>
<Value name="43">
<Value>MainGroupObj</Value>
</Value>
<Value name="44">
<Value>GroupObj</Value>
</Value>
<Value name="45">
<Value>DeleteInShop</Value>
</Value>
<Value name="46">
<Value>DaysToDeliver2</Value>
</Value>
<Value name="47">
<Value>ProductWithoutPrice</Value>
</Value>
<Value name="48">
<Value>Modified</Value>
</Value>
<Value name="49">
<Value>LastUploaded</Value>
</Value>
<Value name="50">
<Value>UnderGroup</Value>
</Value>
<Value name="51">
<Value>UnderGroupObj</Value>
</Value>
<Value name="52">
<Value>AlternativEinheit</Value>
</Value>
</Data>
<Property name="ActiveAction"/>
<Property name="AlternativEinheit"/>
<Property name="Artikel"/>
<Property name="Assignable"/>
<Property name="Available"/>
<Property name="Brutto"/>
<Property name="Calorie"/>
<Property name="Currency"/>
<Property name="CustomNumber"/>
<Property name="DaysToDeliver"/>
<Property name="DaysToDeliver2"/>
<Property name="DeleteInShop"/>
<Property name="Diameter"/>
<Property name="FileDE"/>
<Property name="FileEN"/>
<Property name="FileFR"/>
<Property name="FileIT"/>
<Property name="Group"/>
<Property name="GroupObj"/>
<Property name="HTML"/>
<Property name="HTMLEN"/>
<Property name="HTMLFR"/>
<Property name="HTMLIT"/>
<Property name="Height"/>
<Property name="HideFromCustomers"/>
<Property name="InternalPrice"/>
<Property name="LastOrderTime"/>
<Property name="LastUploaded"/>
<Property name="Length"/>
<Property name="MainGroup"/>
<Property name="MainGroupObj"/>
<Property name="Modified"/>
<Property name="Netto"/>
<Property name="NewPrice"/>
<Property name="Novelty"/>
<Property name="NumberOfPieces"/>
<Property name="OnsalePrice"/>
<Property name="Packing"/>
<Property name="PictureFile"/>
<Property name="ProductType"/>
<Property name="ProductWithoutPrice"/>
<Property name="StockAmount"/>
<Property name="SubGroup"/>
<Property name="Supplier"/>
<Property name="UnderGroup"/>
<Property name="UnderGroupObj"/>
<Property name="ValidFromNewPrice"/>
<Property name="ValidFromOnsale"/>
<Property name="ValidToAction"/>
<Property name="ValidToNovelty"/>
<Property name="Width"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtikelInventar">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57205.780388</TimeChanged>
<TimeCreated>61907,51269.886219</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>DBAgrofresh.Artikel</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</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="Einheit">
<Type>DBAgrofresh.SD.Mengencode</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Einheit"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Produktionsart">
<Type>DBAgrofresh.SD.Produktionsart</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Produktionsart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Qualitaet">
<Type>DBAgrofresh.SD.Qualitaetsklasse</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</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>

<Property name="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Abzugstyp">
<Type>DBAgrofresh.SD.Abzugstyp</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</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="Lagerort">
<Type>DBAgrofresh.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lagerort"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Abteilung">
<Type>DBCore.Abteilung</Type>
<Cardinality>one</Cardinality>
<Inverse>InventarArtikel</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="PerDatum">
<Type>%Date</Type>
</Property>

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

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

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

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

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

<Method name="GetLastDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lagerort:%String,Abteilung:%String</FormalSpec>
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[

	set datum = ""
	&sql(SELECT TOP 1 PerDatum INTO :datum FROM DBAgrofresh.ArtikelInventar WHERE Artikel->Mandant = :MandantOid AND (Lagerort = :Lagerort OR :Lagerort = "")  AND (Abteilung = :Abteilung OR :Abteilung = "") ORDER BY PerDatum DESC)
	Quit datum
]]></Implementation>
</Method>

<Method name="GetSaldoVortrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,EinheitOid:%String,Produktionsart:%String,Qualitaet:%String,Gebinde:%String,Abzug:%String,Lagerort:%String,Abteilung:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set vortrag = 0
	&sql(SELECT TOP 1 Vortrag INTO :vortrag FROM DBAgrofresh.ArtikelInventar 
	WHERE Artikel = :ArtikelOid AND Einheit = :EinheitOid AND Qualitaet = :Qualitaet AND Gebinde = :Gebinde 
	AND Abzugstyp = :Abzug AND Lagerort = :Lagerort AND Abteilung = :Abteilung AND Produktionsart = :Produktionsart
	ORDER BY PerDatum DESC)
	Quit vortrag
]]></Implementation>
</Method>

<Method name="DeleteAllByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE DBAgrofresh.ArtikelInventar WHERE Artikel->Mandant = :MandantOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtikelInventarD</DataLocation>
<DefaultData>ArtikelInventarDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelInventarD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtikelInventarI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtikelInventarS</StreamLocation>
<Data name="ArtikelInventarDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikel</Value>
</Value>
<Value name="3">
<Value>Einheit</Value>
</Value>
<Value name="4">
<Value>Produktionsart</Value>
</Value>
<Value name="5">
<Value>Qualitaet</Value>
</Value>
<Value name="6">
<Value>Gebinde</Value>
</Value>
<Value name="7">
<Value>Abzugstyp</Value>
</Value>
<Value name="8">
<Value>Lagerort</Value>
</Value>
<Value name="9">
<Value>Abteilung</Value>
</Value>
<Value name="10">
<Value>PerDatum</Value>
</Value>
<Value name="11">
<Value>Vortrag</Value>
</Value>
<Value name="12">
<Value>Eingang</Value>
</Value>
<Value name="13">
<Value>Ausgang</Value>
</Value>
<Value name="14">
<Value>Bestand</Value>
</Value>
<Value name="15">
<Value>Korrektur</Value>
</Value>
</Data>
<Property name="Abteilung"/>
<Property name="Abzugstyp"/>
<Property name="Artikel"/>
<Property name="Ausgang"/>
<Property name="Bestand"/>
<Property name="Eingang"/>
<Property name="Einheit"/>
<Property name="Gebinde"/>
<Property name="Korrektur"/>
<Property name="Lagerort"/>
<Property name="PerDatum"/>
<Property name="Produktionsart"/>
<Property name="Qualitaet"/>
<Property name="Vortrag"/>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtikelLager">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61350,46454.314505</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>DBAgrofresh.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>DBAgrofresh.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="LagerbestandGebinde">
<Description>
LagerbestandGebinde</Description>
<Type>%Integer</Type>
</Property>

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

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

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

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

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

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

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

<Property name="OptimaleBestellmengeGebinde">
<Description>
Optimale Bestellmenge Gebinde</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="OffeneBestellungenGebinde">
<Description>
Offene Bestellungen Gebinde</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="VerfuegbarGebindeCalc">
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {VerfuegbarGebindeCalc}=##class(DBAgrofresh.ArtikelLager).GetVerfuegbarGebinde({LagerbestandGebinde},{ReservationGebinde}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="VerfuegbarCalc">
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {VerfuegbarCalc}=##class(DBAgrofresh.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="GetVerfuegbarGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>Lagerbestand:%Integer,Reservation:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<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 DBAgrofresh.ArtikelLager
		 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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

<Method name="AddLager">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,ArtOid:%String,LagerortOid:%String,anzGeb:%Integer,menge:%Decimal(SCALE=5),lagerSet:%Boolean,reservSet:%Boolean,bestelltSet:%Boolean</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	// Lagerort prüfen
	if ('##class(DBAgrofresh.SD.Lagerort).%ExistsId(LagerortOid)) {
		set LagerortOid = ##Class(DBAgrofresh.SD.Lagerort).GetIdByPosNrOnMandant(MandantOid, 1)
	}
	// wenn ungültige Daten quit
	if (LagerortOid = "") || ('##class(DBAgrofresh.SD.Lagerort).%ExistsId(LagerortOid)) || ('##class(DBAgrofresh.Artikel).%ExistsId(ArtOid)) {
		quit 0
	}
	
	quit ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(ArtOid, LagerortOid, anzGeb, menge, lagerSet, reservSet, bestelltSet)
]]></Implementation>
</Method>

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtikelLagerD</DataLocation>
<DefaultData>ArtikelLagerDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelLagerD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtikelLagerI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>
<Value name="9">
<Value>LagerbestandGebinde</Value>
</Value>
<Value name="10">
<Value>ReservationGebinde</Value>
</Value>
<Value name="11">
<Value>MindestbestandGebinde</Value>
</Value>
<Value name="12">
<Value>BestellvorschlagGebinde</Value>
</Value>
<Value name="13">
<Value>OptimaleBestellmengeGebinde</Value>
</Value>
<Value name="14">
<Value>OffeneBestellungenGebinde</Value>
</Value>
<Value name="15">
<Value>VerkaufAnzGebinde</Value>
</Value>
<Value name="16">
<Value>VerkaufMenge</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Artikel">
</Property>
<Property name="Bestellvorschlag">
</Property>
<Property name="BestellvorschlagGebinde">
</Property>
<Property name="Lagerbestand">
</Property>
<Property name="LagerbestandGebinde">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Mindestbestand">
</Property>
<Property name="MindestbestandGebinde">
</Property>
<Property name="OffeneBestellungen">
</Property>
<Property name="OffeneBestellungenGebinde">
</Property>
<Property name="OptimaleBestellmenge">
</Property>
<Property name="OptimaleBestellmengeGebinde">
</Property>
<Property name="Reservation">
</Property>
<Property name="ReservationGebinde">
</Property>
<Property name="VerfuegbarCalc">
</Property>
<Property name="VerfuegbarGebindeCalc">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtikelTagesLager">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57299.210225</TimeChanged>
<TimeCreated>62291,34478.595371</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>DBAgrofresh.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtikelTagesLager</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>DBAgrofresh.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>ArtikelTagesLager</Inverse>
<Relationship>1</Relationship>
</Property>

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

<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="LagerbestandGebinde">
<Description>
Lagerbestand</Description>
<Type>%Integer</Type>
</Property>

<Property name="ReservationGebinde">
<Description>
Reservation</Description>
<Type>%Integer</Type>
</Property>

<Property name="MindestbestandGebinde">
<Description>
Mindestbestand</Description>
<Type>%Integer</Type>
</Property>

<Property name="BestellvorschlagGebinde">
<Description>
Bestellvorschlag</Description>
<Type>%Integer</Type>
</Property>

<Property name="OptimaleBestellmengeGebinde">
<Description>
optimale Bestellmenge</Description>
<Type>%Integer</Type>
</Property>

<Property name="OffeneBestellungenGebinde">
<Description>
Offene Bestellungen</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="VerfuegbarGebindeCalc">
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {VerfuegbarGebindeCalc}=##class(DBAgrofresh.ArtikelTagesLager).GetVerfuegbarGebinde({LagerbestandGebinde},{ReservationGebinde}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

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

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

<Index name="TagesLagerIdx">
<Properties>Datum,Artikel,Lagerort</Properties>
</Index>

<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="GetVerfuegbarGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>Lagerbestand:%Integer,Reservation:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[	Quit Lagerbestand-Reservation
]]></Implementation>
</Method>

<Method name="GetIdByArtikelOrtDatum">
<Description>
Gibt die ID des letzten Datums vor dem übergebenen auf Artikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.ArtikelTagesLager
		 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid AND Datum <= TO_DATE(:Datum) ORDER BY Datum DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByArtikelOrtDatumExakt">
<Description>
Gibt die exakte ID des übergebenen Datums auf Artikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.ArtikelTagesLager
		 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetBestandByArtOrtDatumExakt">
<Description>
Gibt die exakte Menge des übergebenen Datums auf Artikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set best = ""
	if ((LagerortOid '= "") && (LagerortOid '= $$$NULLOREF) && (LagerortOid '= $c(0))) {
		&sql(SELECT TOP 1 Lagerbestand INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	} else {
		&sql(SELECT SUM(Lagerbestand) INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Datum = TO_DATE(:Datum))
	}
	Quit:(SQLCODE'=0) ""
	Quit best
]]></Implementation>
</Method>

<Method name="GetBestandGebByArtOrtDatumExakt">
<Description>
Gibt die exakte Menge des übergebenen Datums auf Artikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set best = ""
	if ((LagerortOid '= "") && (LagerortOid '= $$$NULLOREF) && (LagerortOid '= $c(0))) {
		&sql(SELECT TOP 1 LagerbestandGebinde INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	} else {
		&sql(SELECT SUM(LagerbestandGebinde) INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Datum = TO_DATE(:Datum))
	}
	Quit:(SQLCODE'=0) ""
	Quit best
]]></Implementation>
</Method>

<Method name="GetBestandByArtEKOrtDat">
<Description>
Gibt die exakte Menge des übergebenen Datums auf Artikel und allen VerkaufsArtikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set best = ""
	if ((LagerortOid '= "") && (LagerortOid '= $$$NULLOREF) && (LagerortOid '= $c(0))) {
		&sql(SELECT TOP 1 Lagerbestand INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE (Artikel = :ArtOid OR Artikel->Einkaufsartikel = :ArtOid) AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	} else {
		&sql(SELECT SUM(Lagerbestand) INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE (Artikel = :ArtOid OR Artikel->Einkaufsartikel = :ArtOid) AND Datum = TO_DATE(:Datum))
	}
	Quit:(SQLCODE'=0) ""
	Quit best
]]></Implementation>
</Method>

<Method name="GetBestandGebByArtEKfOrtDat">
<Description>
Gibt die exakte Menge des übergebenen Datums auf Artikel und allen VerkaufsArtikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set best = ""
	if ((LagerortOid '= "") && (LagerortOid '= $$$NULLOREF) && (LagerortOid '= $c(0))) {
		&sql(SELECT TOP 1 LagerbestandGebinde INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE  (((Artikel = :ArtOid) AND (Artikel->Einkaufsartikel = "")) OR Artikel->Einkaufsartikel = :ArtOid) AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	} else {
		&sql(SELECT SUM(LagerbestandGebinde) INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE (((Artikel = :ArtOid) AND (Artikel->Einkaufsartikel = "")) OR Artikel->Einkaufsartikel = :ArtOid) AND Datum = TO_DATE(:Datum))
	}
	Quit:(SQLCODE'=0) ""
	Quit best
]]></Implementation>
</Method>

<Method name="DeleteBestandByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE DBAgrofresh.ArtikelTagesLager WHERE Artikel->Mandant = :MandantOid )
]]></Implementation>
</Method>

<Method name="GetVKMengeByArtOrtDatumExakt">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set best = ""
	if ((LagerortOid '= "") && (LagerortOid '= $$$NULLOREF) && (LagerortOid '= $c(0))) {
		&sql(SELECT TOP 1 VerkaufMenge INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	} else {
		&sql(SELECT SUM(VerkaufMenge) INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Datum = TO_DATE(:Datum))
	}
	Quit:(SQLCODE'=0) ""
	Quit best
]]></Implementation>
</Method>

<Method name="GetVKAnzGebByArtOrtDatumExakt">
<Description>
Gibt die exakte Menge des übergebenen Datums auf Artikel und Lagerort bezogen</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtOid:%String,LagerortOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set best = ""
	if ((LagerortOid '= "") && (LagerortOid '= $$$NULLOREF) && (LagerortOid '= $c(0))) {
		&sql(SELECT TOP 1 VerkaufAnzGebinde INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Lagerort = :LagerortOid AND Datum = TO_DATE(:Datum))
	} else {
		&sql(SELECT SUM(VerkaufAnzGebinde) INTO :best FROM DBAgrofresh.ArtikelTagesLager
			 WHERE Artikel = :ArtOid AND Datum = TO_DATE(:Datum))
	}
	Quit:(SQLCODE'=0) ""
	Quit best
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("ArtikelTagesLager")</DataLocation>
<DefaultData>ArtikelTagesLagerDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelC("ArtikelTagesLager")</IdLocation>
<IndexLocation>^DBAgrofresh.ArtikelTagesLagerI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtikelTagesLagerS</StreamLocation>
<Data name="ArtikelTagesLagerDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Lagerort</Value>
</Value>
<Value name="3">
<Value>Datum</Value>
</Value>
<Value name="4">
<Value>Lagerbestand</Value>
</Value>
<Value name="5">
<Value>Reservation</Value>
</Value>
<Value name="6">
<Value>Mindestbestand</Value>
</Value>
<Value name="7">
<Value>Bestellvorschlag</Value>
</Value>
<Value name="8">
<Value>OptimaleBestellmenge</Value>
</Value>
<Value name="9">
<Value>OffeneBestellungen</Value>
</Value>
<Value name="10">
<Value>LagerbestandGebinde</Value>
</Value>
<Value name="11">
<Value>ReservationGebinde</Value>
</Value>
<Value name="12">
<Value>MindestbestandGebinde</Value>
</Value>
<Value name="13">
<Value>BestellvorschlagGebinde</Value>
</Value>
<Value name="14">
<Value>OptimaleBestellmengeGebinde</Value>
</Value>
<Value name="15">
<Value>OffeneBestellungenGebinde</Value>
</Value>
<Value name="16">
<Value>VerkaufAnzGebinde</Value>
</Value>
<Value name="17">
<Value>VerkaufMenge</Value>
</Value>
</Data>
<Property name="Artikel"/>
<Property name="Bestellvorschlag"/>
<Property name="BestellvorschlagGebinde"/>
<Property name="Datum"/>
<Property name="Lagerbestand"/>
<Property name="LagerbestandGebinde"/>
<Property name="Lagerort"/>
<Property name="Mindestbestand"/>
<Property name="MindestbestandGebinde"/>
<Property name="OffeneBestellungen"/>
<Property name="OffeneBestellungenGebinde"/>
<Property name="OptimaleBestellmenge"/>
<Property name="OptimaleBestellmengeGebinde"/>
<Property name="Reservation"/>
<Property name="ReservationGebinde"/>
<Property name="VerfuegbarCalc"/>
<Property name="VerfuegbarGebindeCalc"/>
<Property name="VerkaufAnzGebinde"/>
<Property name="VerkaufMenge"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBAgrofresh.ArtikelZusatztext">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57299.382823</TimeChanged>
<TimeCreated>61107,29730.497216</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>DBAgrofresh.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(DBAgrofresh.ArtikelZusatztext).%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 DBAgrofresh.ArtikelZusatztext
	     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 DBAgrofresh.ArtikelZusatztext
	     WHERE Artikel = :ArtikelOid AND LaufNr = :LaufNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.ArtikelZusatztextD</DataLocation>
<DefaultData>ArtikelZusatztextDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelZusatztextD</IdLocation>
<IndexLocation>^DBAgrofresh.ArtikelZusatztextI</IndexLocation>
<StreamLocation>^DBAgrofresh.ArtikelZusatztextS</StreamLocation>
<Data name="ArtikelZusatztextDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikel</Value>
</Value>
<Value name="3">
<Value>LaufNr</Value>
</Value>
</Data>
<Data name="Zusatztext">
<Attribute>Zusatztext</Attribute>
<Structure>subnode</Structure>
<Subscript>"Zusatztext"</Subscript>
</Data>
<Property name="Artikel"/>
<Property name="LaufNr"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBAgrofresh.AuftrStrg">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61107,33276.446858</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="Abzug2">
<Description>
Abzug2</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug3">
<Description>
Abzug3</Description>
<Type>%Integer</Type>
</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="TestGebinderetouren">
<Description>
Test Gebinderetouren</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>AuftragsSteuerungAbzug1</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>AuftragsSteuerungAbzug2</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>AuftragsSteuerungAbzug3</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>DBAgrofresh.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>DBAgrofresh.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>DBAgrofresh.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>DBAgrofresh.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungOffertenFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="AuftragsbestDrucktyp">
<Type>DBAgrofresh.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>DBAgrofresh.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungAuftragsbestFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="RuestscheinDrucktyp">
<Type>DBAgrofresh.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>DBAgrofresh.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungRuestscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="LieferscheinDrucktyp">
<Type>DBAgrofresh.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>DBAgrofresh.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungLieferscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="RechnungDrucktyp">
<Type>DBAgrofresh.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>DBAgrofresh.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungRechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="SammelrechnungDrucktyp">
<Type>DBAgrofresh.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>DBAgrofresh.SD.Fusstext</Type>
<Cardinality>one</Cardinality>
<Inverse>SteuerungSammelrechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="BarzahlungDrucktyp">
<Type>DBAgrofresh.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>DBAgrofresh.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="IsLagerortInaktiv">
<Description>
Lagerort Inaktiv</Description>
<Type>%Boolean</Type>
</Property>

<Property name="OfferteGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASOfferteGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="OfferteGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="OfferteGebFussIndex">
<Properties>OfferteGebFuss</Properties>
</Index>

<Property name="AuftragsbestGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASAuftragsbestGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="AuftragsbestGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AuftragsbestGebFussIndex">
<Properties>AuftragsbestGebFuss</Properties>
</Index>

<Property name="RuestscheinGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASRuestscheinGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="RuestscheinGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="RuestscheinGebFussIndex">
<Properties>RuestscheinGebFuss</Properties>
</Index>

<Property name="LieferscheinGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASLieferscheinGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="LieferscheinGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="LieferscheinGebFussIndex">
<Properties>LieferscheinGebFuss</Properties>
</Index>

<Property name="RechnungGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASRechnungGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="RechnungGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="RechnungGebFussIndex">
<Properties>RechnungGebFuss</Properties>
</Index>

<Property name="SammelrechnungGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASSammelrechnungGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="SammelrechnungGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="SammelrechnungGebFussIndex">
<Properties>SammelrechnungGebFuss</Properties>
</Index>

<Property name="BarzahlungGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASBarzahlungGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="BarzahlungGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="BarzahlungGebFussIndex">
<Properties>BarzahlungGebFuss</Properties>
</Index>

<Property name="GebindescheinAnzKopien">
<Description>
Gebindeschein_Anzahl_Kopien</Description>
<Type>%Integer</Type>
</Property>

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

<Index name="GebindescheinDrucktypIndex">
<Properties>GebindescheinDrucktyp</Properties>
</Index>

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

<Index name="GebindescheinFusstextIndex">
<Properties>GebindescheinFusstext</Properties>
</Index>

<Property name="GebindescheinGebFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>one</Cardinality>
<Inverse>ASGebindescheinGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="GebindescheinGebFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebindescheinGebFussIndex">
<Properties>GebindescheinGebFuss</Properties>
</Index>

<Property name="VorschlagLieferart">
<Type>DBAgrofresh.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>AuftrStrgVorschlag</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>DBAgrofresh.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="PreislistenTyp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragsStrgPreislistenTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Preislistentyp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="PreislistenTypIndex">
<Properties>PreislistenTyp</Properties>
</Index>

<Property name="Abzug1Bio">
<Description>
Abzug1 Bio</Description>
<Type>%Boolean</Type>
</Property>

<Property name="Abzug2Bio">
<Description>
Abzug2 Bio</Description>
<Type>%Boolean</Type>
</Property>

<Property name="Abzug3Bio">
<Description>
Abzug3 Bio</Description>
<Type>%Boolean</Type>
</Property>

<Property name="AbzuegeDatum">
<Type>DBAgrofresh.StrgAbzuege</Type>
<Cardinality>many</Cardinality>
<Inverse>Steuerung</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Index name="GesamtGebScheinDrucktypIndex">
<Properties>GesamtGebindeScheinDrucktyp</Properties>
</Index>

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

<Index name="FehlmengenlisteDrucktypIndex">
<Properties>FehlmengenlisteDrucktyp</Properties>
</Index>

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

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

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

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

<Method name="SaveAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>steuerung:DBAgrofresh.AuftrStrg,typOid:%String,KundeOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set status = ""
	set spez = steuerung
	if (KundeOid = "") && (typOid '= "") {
	//	set spez = ##Class(DBAgrofresh.TypStrg).DeleteAuftragsSteuerung(typOid)
		if ('##Class(DBAgrofresh.TypStrg).ExistsAuftragsSteuerung(typOid)) {
			set spez = ##Class(DBAgrofresh.TypStrg).GetAuftragsSteuerung(typOid)
			set spez = steuerung.%ConstructClone()
			set typ = ##class(DBAgrofresh.SD.Hilfstexte).%OpenId(typOid)
			set spez.Typ = typ
		}
		
	} elseif (typOid = "") && (KundeOid '= "") {
	//	set spez = ##Class(DBAgrofresh.KundenStrg).DeleteAuftragsSteuerung(KundeOid)
		if ('##Class(DBAgrofresh.KundenStrg).ExistsAuftragsSteuerung(KundeOid)) {
			set spez = ##Class(DBAgrofresh.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 DBAgrofresh.AuftrStrg 
	     WHERE Mandant=:Mand)
	quit (id '= "")
]]></Implementation>
</Method>

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

<Method name="GebindeVerrechnen">
<FormalSpec>IsInSR:%Boolean,IsInBZ:%Boolean</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set verrechnen = 0
	/* Es muss nur noch auf den RG Fuss geprüft werden da wenn dieser auf Verrechenen ist die anderen
	auch verrechnet werden müssen. dh gem AW 16.01.2010
	// wenn nicht in SR, nicht in BZ und GebindeFuss auf Rechnung "Verrechnen"
	if (('IsInSR) && ('IsInBZ) && (..RechnungGebFuss '= "")) {
		set verrechnen = (..RechnungGebFuss.Verrechnung = ##class(DBAgrofresh.Konst).GebindeVerrechnen())
	// wenn in BZ und GebindeFuss BZ = Verrechnen
	} elseif (('IsInSR) && (IsInBZ) && (..BarzahlungGebFuss '= "")) {
		set verrechnen = (..BarzahlungGebFuss.Verrechnung = ##class(DBAgrofresh.Konst).GebindeVerrechnen())
	// wenn in SR und GebindeFuss SR >= Verrechnen (Je nach dem noch Verrechnen je Auftrag...)
	} elseif ((IsInSR) && ('IsInBZ) && (..SammelrechnungGebFuss '= "")) {
		set verrechnen = (..SammelrechnungGebFuss.Verrechnung >= ##class(DBAgrofresh.Konst).GebindeVerrechnen())
	}*/
	if ((..RechnungGebFuss '= "")) {
		set verrechnen = (..RechnungGebFuss.Verrechnung >= ##class(DBAgrofresh.Konst).GebindeVerrechnen())
	}
	quit verrechnen
]]></Implementation>
</Method>

<Method name="GetGebindeVerrechnenByAdr">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set steuerung = ""
	set verrechArt = 0
	set existKundenStrg = ##class(DBAgrofresh.KundenStrg).ExistsAuftragsSteuerung(AdrOid)
	
	w "existKundenStrg:"_existKundenStrg,!
	// KundenSTeuerung
	if (existKundenStrg '= 0) {
		set steuerung = ##class(DBAgrofresh.KundenStrg).GetAuftragsSteuerung(AdrOid)
	
	} else {
		// Typen Steuerung
		set typ = 0
		&sql(SELECT TOP 1 VerkSteuerungstyp INTO :typ FROM DBAdressen.Adresse
		     WHERE ID=:AdrOid)
		w "typ:"_typ,!
		if ((typ '= 0) && (typ '= "")) {
			w "ste",!
			set steuerung = ##Class(DBAgrofresh.TypStrg).GetAuftragsSteuerung(+typ)
		} else {
			// STandard Steuerung
			w "STandard Steuerung",!
			set mandOid = ""
			&sql(SELECT TOP 1 Mandant INTO :mandOid FROM DBAdressen.Adresse
			     WHERE ID=:AdrOid)
			
			set steuerung = ##Class(DBAgrofresh.AuftrStrg).GetAuftragsSteuerung(mandOid)
		}
	}
	if (steuerung '= "" && steuerung.RechnungGebFuss '= "") {
		set verrechArt = steuerung.RechnungGebFuss.Verrechnung
	}
	quit verrechArt
]]></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 id = $lg(oid,1)
	do ..DeleteStrgAbzuege(id)
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgBeforeDelete">
<Code>	do ..DeleteStrgAbzuege({ID*O})</Code>
<Event>DELETE</Event>
</Trigger>

<Method name="DeleteStrgAbzuege">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftrStrgOid:%String</FormalSpec>
<Implementation><![CDATA[
	if (AuftrStrgOid '= "") {
		
		set strSQL="SELECT ID FROM DBAgrofresh.StrgAbzuege WHERE Steuerung = '"_AuftrStrgOid_"'"
		set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		do rs.Prepare(strSQL)
		set sc=rs.Execute()
		if $$$ISOK(sc) {
			if rs.Next(.sc) {
				set abzId =rs.Data("ID")
				do ##class(DBAgrofresh.StrgAbzuege).%DeleteId(abzId)
			}
		}
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.AuftrStrgD</DataLocation>
<DefaultData>AuftrStrgDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.AuftrStrgD</IdLocation>
<IndexLocation>^DBAgrofresh.AuftrStrgI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>OfferteGebinde</Value>
</Value>
<Value name="4">
<Value>AuftragsbestAnzKopien</Value>
</Value>
<Value name="5">
<Value>AuftragsbestGebinde</Value>
</Value>
<Value name="6">
<Value>RuestscheinAnzKopien</Value>
</Value>
<Value name="7">
<Value>RuestscheinGebinde</Value>
</Value>
<Value name="8">
<Value>LieferscheinAnzKopien</Value>
</Value>
<Value name="9">
<Value>LieferscheinGebinde</Value>
</Value>
<Value name="10">
<Value>LieferscheinExportFuss</Value>
</Value>
<Value name="11">
<Value>LieferscheinSpezEinst</Value>
</Value>
<Value name="12">
<Value>RechnungAnzKopien</Value>
</Value>
<Value name="13">
<Value>RechnungGebinde</Value>
</Value>
<Value name="14">
<Value>RechnungSpezEinst</Value>
</Value>
<Value name="15">
<Value>SammelrechnungAnzKopien</Value>
</Value>
<Value name="16">
<Value>SammelrechnungGebinde</Value>
</Value>
<Value name="17">
<Value>SammelrechnungSpezEinst</Value>
</Value>
<Value name="18">
<Value>BestellNr</Value>
</Value>
<Value name="19">
<Value>Herkunft</Value>
</Value>
<Value name="20">
<Value>Abzug1</Value>
</Value>
<Value name="21">
<Value>Abzug1Prozent</Value>
</Value>
<Value name="22">
<Value>Abzug2</Value>
</Value>
<Value name="23">
<Value>Abzug2Prozent</Value>
</Value>
<Value name="24">
<Value>Abzug3</Value>
</Value>
<Value name="25">
<Value>Abzug3Prozent</Value>
</Value>
<Value name="26">
<Value>Abzug1Text</Value>
</Value>
<Value name="27">
<Value>Abzug2Text</Value>
</Value>
<Value name="28">
<Value>Abzug3Text</Value>
</Value>
<Value name="29">
<Value>GenerierungOPText</Value>
</Value>
<Value name="30">
<Value>LieferZeit</Value>
</Value>
<Value name="31">
<Value>RechnungExportFuss</Value>
</Value>
<Value name="32">
<Value>EngrosPreisMutieren</Value>
</Value>
<Value name="33">
<Value>AnbruchtsPreisMutieren</Value>
</Value>
<Value name="34">
<Value>DetailPreisMutieren</Value>
</Value>
<Value name="35">
<Value>BarzahlungAnzKopien</Value>
</Value>
<Value name="36">
<Value>BarzahlungGebinde</Value>
</Value>
<Value name="37">
<Value>BarzahlungSpezEinst</Value>
</Value>
<Value name="38">
<Value>TestGebinderetouren</Value>
</Value>
<Value name="39">
<Value>EinstellungenMutieren</Value>
</Value>
<Value name="40">
<Value>TextOP</Value>
</Value>
<Value name="41">
<Value>Abzug1FibuKonto</Value>
</Value>
<Value name="42">
<Value>Abzug2FibuKonto</Value>
</Value>
<Value name="43">
<Value>Abzug3FibuKonto</Value>
</Value>
<Value name="44">
<Value>ExportTyp</Value>
</Value>
<Value name="45">
<Value>Preisliste</Value>
</Value>
<Value name="46">
<Value>OfferteDrucktyp</Value>
</Value>
<Value name="47">
<Value>OfferteFusstext</Value>
</Value>
<Value name="48">
<Value>AuftragsbestDrucktyp</Value>
</Value>
<Value name="49">
<Value>AuftragsbestFusstext</Value>
</Value>
<Value name="50">
<Value>RuestscheinDrucktyp</Value>
</Value>
<Value name="51">
<Value>RuestscheinFusstext</Value>
</Value>
<Value name="52">
<Value>LieferscheinDrucktyp</Value>
</Value>
<Value name="53">
<Value>LieferscheinFusstext</Value>
</Value>
<Value name="54">
<Value>RechnungDrucktyp</Value>
</Value>
<Value name="55">
<Value>RechnungFusstext</Value>
</Value>
<Value name="56">
<Value>SammelrechnungDrucktyp</Value>
</Value>
<Value name="57">
<Value>SammelrechnungFusstext</Value>
</Value>
<Value name="58">
<Value>BarzahlungDrucktyp</Value>
</Value>
<Value name="59">
<Value>BarzahlungFusstext</Value>
</Value>
<Value name="60">
<Value>Mandant</Value>
</Value>
<Value name="61">
<Value>IsAuftragDatumInaktiv</Value>
</Value>
<Value name="62">
<Value>IsLieferDatumInaktiv</Value>
</Value>
<Value name="63">
<Value>IsRabattInaktiv</Value>
</Value>
<Value name="64">
<Value>IsMwstInaktiv</Value>
</Value>
<Value name="65">
<Value>IsVertreterInaktiv</Value>
</Value>
<Value name="66">
<Value>IsBearbeiterInaktiv</Value>
</Value>
<Value name="67">
<Value>IsKonditionenInaktiv</Value>
</Value>
<Value name="68">
<Value>IsLieferartInaktiv</Value>
</Value>
<Value name="69">
<Value>IsGebietInaktiv</Value>
</Value>
<Value name="70">
<Value>IsBestellartInaktiv</Value>
</Value>
<Value name="71">
<Value>IsBestellNrInaktiv</Value>
</Value>
<Value name="72">
<Value>IsBestellertInaktiv</Value>
</Value>
<Value name="73">
<Value>IsReferenzInaktiv</Value>
</Value>
<Value name="74">
<Value>IsSkontoInaktiv</Value>
</Value>
<Value name="75">
<Value>IsBestellerInaktiv</Value>
</Value>
<Value name="76">
<Value>IsLieferzeitInaktiv</Value>
</Value>
<Value name="77">
<Value>OfferteGebFuss</Value>
</Value>
<Value name="78">
<Value>AuftragsbestGebFuss</Value>
</Value>
<Value name="79">
<Value>RuestscheinGebFuss</Value>
</Value>
<Value name="80">
<Value>LieferscheinGebFuss</Value>
</Value>
<Value name="81">
<Value>RechnungGebFuss</Value>
</Value>
<Value name="82">
<Value>SammelrechnungGebFuss</Value>
</Value>
<Value name="83">
<Value>BarzahlungGebFuss</Value>
</Value>
<Value name="84">
<Value>GebindescheinAnzKopien</Value>
</Value>
<Value name="85">
<Value>GebindescheinDrucktyp</Value>
</Value>
<Value name="86">
<Value>GebindescheinFusstext</Value>
</Value>
<Value name="87">
<Value>GebindescheinGebFuss</Value>
</Value>
<Value name="88">
<Value>VorschlagLieferart</Value>
</Value>
<Value name="89">
<Value>VorschlagGebiet</Value>
</Value>
<Value name="90">
<Value>VorschlagBestellart</Value>
</Value>
<Value name="91">
<Value>VorschlagBestellNr</Value>
</Value>
<Value name="92">
<Value>VorschlagBesteller</Value>
</Value>
<Value name="93">
<Value>VorschlagLieferzeit</Value>
</Value>
<Value name="94">
<Value>VorschlagReferenz</Value>
</Value>
<Value name="95">
<Value>Preislistentyp</Value>
</Value>
<Value name="96">
<Value>PreislistenTyp</Value>
</Value>
<Value name="97">
<Value>IsLagerortInaktiv</Value>
</Value>
<Value name="98">
<Value>Abzug1Bio</Value>
</Value>
<Value name="99">
<Value>Abzug2Bio</Value>
</Value>
<Value name="100">
<Value>Abzug3Bio</Value>
</Value>
<Value name="101">
<Value>GesamtGebindeScheinDrucktyp</Value>
</Value>
<Value name="102">
<Value>FehlmengenlisteDrucktyp</Value>
</Value>
<Value name="103">
<Value>GesamtGebindeScheinAnzKopien</Value>
</Value>
<Value name="104">
<Value>FehlmengenlisteAnzKopien</Value>
</Value>
<Value name="105">
<Value>SRIntervallArt</Value>
</Value>
<Value name="106">
<Value>RuestdatumAktiv</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abzug1">
</Property>
<Property name="Abzug1Bio">
</Property>
<Property name="Abzug1FibuKonto">
</Property>
<Property name="Abzug1Prozent"/>
<Property name="Abzug1Text">
</Property>
<Property name="Abzug2">
</Property>
<Property name="Abzug2Bio">
</Property>
<Property name="Abzug2FibuKonto">
</Property>
<Property name="Abzug2Prozent"/>
<Property name="Abzug2Text">
</Property>
<Property name="Abzug3">
</Property>
<Property name="Abzug3Bio">
</Property>
<Property name="Abzug3FibuKonto">
</Property>
<Property name="Abzug3Prozent"/>
<Property name="Abzug3Text">
</Property>
<Property name="AnbruchtsPreisMutieren">
</Property>
<Property name="AuftragsbestAnzKopien">
</Property>
<Property name="AuftragsbestDrucktyp">
</Property>
<Property name="AuftragsbestFusstext">
</Property>
<Property name="AuftragsbestGebFuss">
</Property>
<Property name="BarzahlungAnzKopien">
</Property>
<Property name="BarzahlungDrucktyp">
</Property>
<Property name="BarzahlungFusstext">
</Property>
<Property name="BarzahlungGebFuss">
</Property>
<Property name="BarzahlungSpezEinst">
</Property>
<Property name="BestellNr"/>
<Property name="DetailPreisMutieren">
</Property>
<Property name="EinstellungenMutieren">
</Property>
<Property name="EngrosPreisMutieren">
</Property>
<Property name="ExportTyp">
</Property>
<Property name="FehlmengenlisteAnzKopien">
</Property>
<Property name="FehlmengenlisteDrucktyp">
</Property>
<Property name="GebindescheinAnzKopien">
</Property>
<Property name="GebindescheinDrucktyp">
</Property>
<Property name="GebindescheinFusstext">
</Property>
<Property name="GebindescheinGebFuss">
</Property>
<Property name="GenerierungOPText">
</Property>
<Property name="GesamtGebindeScheinAnzKopien">
</Property>
<Property name="GesamtGebindeScheinDrucktyp">
</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="IsGebietInaktiv">
</Property>
<Property name="IsKonditionenInaktiv">
</Property>
<Property name="IsLagerortInaktiv">
</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>
<Property name="LieferscheinSpezEinst">
</Property>
<Property name="Mandant">
</Property>
<Property name="OfferteAnzKopien">
</Property>
<Property name="OfferteDrucktyp">
</Property>
<Property name="OfferteFusstext">
</Property>
<Property name="OfferteGebFuss">
</Property>
<Property name="Preisliste">
</Property>
<Property name="PreislistenTyp">
</Property>
<Property name="RechnungAnzKopien">
</Property>
<Property name="RechnungDrucktyp">
</Property>
<Property name="RechnungExportFuss">
</Property>
<Property name="RechnungFusstext">
</Property>
<Property name="RechnungGebFuss">
</Property>
<Property name="RechnungSpezEinst">
</Property>
<Property name="RuestdatumAktiv">
</Property>
<Property name="RuestscheinAnzKopien">
</Property>
<Property name="RuestscheinDrucktyp">
</Property>
<Property name="RuestscheinFusstext">
</Property>
<Property name="RuestscheinGebFuss">
</Property>
<Property name="SRIntervallArt">
</Property>
<Property name="SammelrechnungAnzKopien">
</Property>
<Property name="SammelrechnungDrucktyp">
</Property>
<Property name="SammelrechnungFusstext">
</Property>
<Property name="SammelrechnungGebFuss">
</Property>
<Property name="SammelrechnungSpezEinst">
</Property>
<Property name="TestGebinderetouren">
</Property>
<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="DBAgrofresh.Auftragskopf">
<Description>
</Description>
<Super>%Persistent,%Populate,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62430,55661.589718</TimeChanged>
<TimeCreated>61100,57425.536517</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>

<Index name="MandantAuftragNrIndex">
<Description>
Auftrags-Nummer eingültig auf Mandant</Description>
<Properties>Mandant,AuftragsNr</Properties>
<Unique>1</Unique>
</Index>

<Index name="TreeViewIndex">
<Type>bitmap</Type>
<Properties>Mandant,Auftragsstatus,Rechnungsdatum,Lieferdatum,AuftragsNr</Properties>
</Index>

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

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

<Index name="MandLieferscheinNrIndex">
<Properties>Mandant,LieferscheinNr</Properties>
</Index>

<Index name="MandRechnungsNrIndex">
<Properties>Mandant,RechnungsNr</Properties>
</Index>

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

<Index name="AuftragsdatumIndex">
<Properties>Auftragsdatum</Properties>
</Index>

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

<Index name="LieferdatumIndex">
<Properties>Lieferdatum</Properties>
</Index>

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

<Index name="RechnungsdatumIndex">
<Properties>Rechnungsdatum</Properties>
</Index>

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

<Index name="MandantBestellNrIndex">
<Description>
BestellNr auf Mandant</Description>
<Properties>Mandant,BestellNr</Properties>
</Index>

<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="GDAuftrag">
<Type>DBAgrofresh.GebDetail</Type>
<Cardinality>many</Cardinality>
<Inverse>Auftrag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Property name="Zahlungskondition">
<Type>DBDebiKredi.SD.DZahlungskond</Type>
<Cardinality>one</Cardinality>
<Inverse>AKZahlungskondition</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>DBAgrofresh.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>DBAgrofresh.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>

<Property name="SachbearbeiterNr">
<Type>%Library.Integer</Type>
</Property>

<Property name="Fusstext">
<Type>DBAgrofresh.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>AKAdresse</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>AKZahlAdresse</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>AKWaehrung</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 + GebindeMwstBetrag + BetragEWInklMwst - Skonto</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalMitGebinde}={GebindeSaldo} + {GebindeMwstBetrag} + {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}-{Skonto}-{BetragAbzug1EWExkl}-{BetragAbzug2EWExkl}-{BetragAbzug3EWExkl} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Vertreter">
<Type>DBAdressen.SD.Vertreter</Type>
<Cardinality>one</Cardinality>
<Inverse>AgrofreshAuftrag</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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.Auftragskopf).GetWarenaufwandByAuftrClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Property name="Gebietscode">
<Type>DBAdressen.SD.Gebiet</Type>
<Cardinality>one</Cardinality>
<Inverse>AgrofreshAuftrag</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="GebindeVerrechnungAktiv">
<Description>
GebindeVerrechnungAktiv</Description>
<Type>%Boolean</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.OPDebi</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragAgrofresh</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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.Auftragskopf).GetBetragMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

<Property name="Abteilung">
<Type>DBCore.Abteilung</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragAbteilung</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="GebindeMwstBetrag">
<Description>
GebindeMwstBetrag</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeMwstBetrag}=##class(DBAgrofresh.Auftragskopf).GetGebindeMwstByAuftrClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

<Property name="Abzug1Typ">
<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="Abzug1Text">
<Description>
Abzug1_Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Index name="Abzug1MwstIndex">
<Properties>Abzug1Mwst</Properties>
</Index>

<Property name="Abzug1MwstSatz">
<Description>
Abzung1 MwstSatz</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug1MwstSatzExport">
<Description>
Abzung1 MwstSatzExport</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug2Typ">
<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="Abzug2Text">
<Description>
Abzug2_Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Index name="Abzug2MwstIndex">
<Properties>Abzug2Mwst</Properties>
</Index>

<Property name="Abzug2MwstSatz">
<Description>
Abzug2 MwstSatz</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug2MwstSatzExport">
<Description>
Abzug2 MwstSatzExport</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug3Typ">
<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="Abzug3Text">
<Description>
Abzug3_Text</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Index name="Abzug3MwstIndex">
<Properties>Abzug3Mwst</Properties>
</Index>

<Property name="Abzug3MwstSatz">
<Description>
Abzug3 MwstSatz</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug3MwstSatzExport">
<Description>
Abzug3 MwstSatzExport</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Abzug1FibuKonto">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragskopfAbzug1</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>AuftragskopfAbzug2</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>AuftragskopfAbzug3</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="BetragAbzug1EWInkl">
<Description>
BetragAbzug1EWInkl</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {BetragAbzug1EWInkl}=##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWInklClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="TotalMitGebMitAbzug">
<Description>
GebindeSaldo + Nettobetrag2InklMwstEW - Abzuege 1-3</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalMitGebMitAbzug}={GebindeSaldo} + {GebindeMwstBetrag} + {BetragEWInklMwst}-{Skonto}-{BetragAbzug1EWInkl}-{BetragAbzug2EWInkl}-{BetragAbzug3EWInkl} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="TotalMitGebMitAbzugFW">
<Description>
GebindeSaldoFW + BetragEWInklMwstFW + MWST Gebinde - Abzuege 1-3</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalMitGebMitAbzugFW}={GebindeSaldoFW}+{GebindeMwstBetragFW}+{BetragFWInklMwst}-{SkontoFW}-{BetragAbzug1FWInkl}-{BetragAbzug2FWInkl}-{BetragAbzug3FWInkl}  </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="TotalOhneGebMitAbzugInkl">
<Description>
Nettobetrag2InklMwstEW - Abzuege 1-3</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalOhneGebMitAbzugInkl}={BetragEWInklMwst}-{Skonto}-{BetragAbzug1EWInkl}-{BetragAbzug2EWInkl}-{BetragAbzug3EWInkl} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="TotalOhneGebMitAbzugExkl">
<Description>
Nettobetrag2ExklMwstEW - Abzuege 1-3</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalOhneGebMitAbzugExkl}={BetragEWExklMwst}-{Skonto}-{BetragAbzug1EWExkl}-{BetragAbzug2EWExkl}-{BetragAbzug3EWExkl} </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="TotalOhneGebMitAbzugFWInkl">
<Description>
BetragEWInklMwstFW - Abzuege 1-3</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalOhneGebMitAbzugFWInkl}={BetragFWInklMwst}-{SkontoFW}-{BetragAbzug1FWInkl}-{BetragAbzug2FWInkl}-{BetragAbzug3FWInkl}  </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="TotalOhneGebMitAbzugFWExkl">
<Description>
BetragExklMwstFW - Abzuege 1-3</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {TotalOhneGebMitAbzugFWExkl}={BetragFWExklMwst}-{SkontoFW}-{BetragAbzug1FWExkl}-{BetragAbzug2FWExkl}-{BetragAbzug3FWExkl}  </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Lagerort">
<Type>DBAgrofresh.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>VorschlagAuftrag</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="GebindeVerrechnung">
<Description>
Einstellung von Auftragssteuerung ob Gebinde mit Saldovortrag oder verrechnen....</Description>
<Type>%Integer</Type>
</Property>

<Property name="Abzug1Bio">
<Description>
Abzug1 Bio</Description>
<Type>%Boolean</Type>
</Property>

<Property name="Abzug2Bio">
<Description>
Abzug2 Bio</Description>
<Type>%Boolean</Type>
</Property>

<Property name="Abzug3Bio">
<Description>
Abzug3 Bio</Description>
<Type>%Boolean</Type>
</Property>

<Property name="InEdit">
<Description>
true, wenn Details oder Kopf editiert werden</Description>
<Type>%Boolean</Type>
<InitialExpression>0</InitialExpression>
</Property>

<Property name="PlattformAuftrag">
<Description>
Verweis auf provisorischen Auftrag in der Plattform
Clientname gesetzt, weil beim Löschen der prov. Auftrag nicht gelöscht werden darf!</Description>
<Type>DBPlattform.AuftragsKopf</Type>
<Cardinality>many</Cardinality>
<ClientName>PlattformAuftrag</ClientName>
<Inverse>DefinitiverAuftrag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="LieferscheinPDF">
<Type>DBAgrofresh.PDFStream</Type>
<Cardinality>one</Cardinality>
<Inverse>Lieferschein</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="LieferscheinPDFIndex">
<Properties>LieferscheinPDF</Properties>
<Unique>1</Unique>
</Index>

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

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

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

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

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

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

<Property name="GebindescheinPDF">
<Type>DBAgrofresh.PDFStream</Type>
<Cardinality>one</Cardinality>
<Inverse>Gebindeschein</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="FehlmengenPDF">
<Type>DBAgrofresh.PDFStream</Type>
<Cardinality>one</Cardinality>
<Inverse>Fehlmengen</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

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

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

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

<Index name="TeillieferungIndex">
<Data>%%ID,AuftragsNr</Data>
<Properties>Mandant,HauptlieferungNr,TeillieferungNr</Properties>
</Index>

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

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

<Property name="HogaAuftrag">
<Type>DBAgrofresh.HogaAuftrag</Type>
<Cardinality>children</Cardinality>
<Inverse>Auftrag</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

<Property name="TransportKopf">
<Description>
Transport Dispo, Wieviel von der Auftragsposition mit welchem Fahrzeug geliefert wird</Description>
<Type>DBAgrofresh.TransportKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Auftragskopf</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

<Method name="GetBetragAbzug1EWInklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugEWInklMwstClass(Oid)
		if ((auftrag.Abzug1Typ = 1) || (auftrag.Abzug1Typ = 3)) {
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug1Prozent / 100)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug1EWExklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugEWExklMwstClass(Oid)
		if ((auftrag.Abzug1Typ = 1) || (auftrag.Abzug1Typ = 3)) {
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug1Prozent / 100)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug1EWMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	
	set ak = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExkl(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWExklClass(Oid),ak.Abzug1MwstSatz)
	} else {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromInkl(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWInklClass(Oid),ak.Abzug1MwstSatz)
	}
	//if (##class(DBAgrofresh.Auftragskopf).%ExistsId(Oid)) {
	//	set betragInkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWInklClass(Oid)
	//	set betragExkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWExklClass(Oid)
	//	set betragAbzug = betragInkl - betragExkl
	//}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug1FWInklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugInklMwstFWClass(Oid)
		if ((auftrag.Abzug1Typ = 1) || (auftrag.Abzug1Typ = 3)) {
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug1Prozent / 100, 2)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug1FWExklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugExklMwstFWClass(Oid)
		if ((auftrag.Abzug1Typ = 1) || (auftrag.Abzug1Typ = 3)) {
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug1Prozent / 100,2)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug1FWMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	
	set ak = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWExklClass(Oid),ak.Abzug1MwstSatz)
	} elseif (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXPORT()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWExklClass(Oid),ak.Abzug1MwstSatzExport)
	} else {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromInklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWInklClass(Oid),ak.Abzug1MwstSatz)
	}
	//if (##class(DBAgrofresh.Auftragskopf).%ExistsId(Oid)) {
	//	set betragInkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWInklClass(Oid)
	//	set betragExkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWExklClass(Oid)
	//	set betragAbzug = betragInkl - betragExkl
	//}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug2EWInklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugEWInklMwstClass(Oid)
		if (auftrag.Abzug2Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWInklClass(Oid)
		}
		if ((auftrag.Abzug2Typ = 1) || (auftrag.Abzug2Typ = 3)) {
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug2Prozent / 100)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug2EWExklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugEWExklMwstClass(Oid)
		if (auftrag.Abzug2Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWExklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug2Prozent / 100)
		} elseif (auftrag.Abzug2Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug2Prozent / 100)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug2EWMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	
	set ak = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExkl(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2EWExklClass(Oid),ak.Abzug2MwstSatz)
	} else {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromInkl(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2EWInklClass(Oid),ak.Abzug2MwstSatz)
	}
	
	//if (##class(DBAgrofresh.Auftragskopf).%ExistsId(Oid)) {
	//	set betragInkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2EWInklClass(Oid)
	//	set betragExkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2EWExklClass(Oid)
	//	set betragAbzug = betragInkl - betragExkl
	//}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug2FWInklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugInklMwstFWClass(Oid)
		if (auftrag.Abzug2Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWInklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug2Prozent / 100, 2)
		} elseif(auftrag.Abzug2Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug2Prozent / 100, 2)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug2FWExklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugExklMwstFWClass(Oid)
		if (auftrag.Abzug2Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWExklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug2Prozent / 100, 2)
		} elseif(auftrag.Abzug2Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug2Prozent / 100, 2)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug2FWMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	
	set ak = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWExklClass(Oid),ak.Abzug2MwstSatz)
	} elseif (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXPORT()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWExklClass(Oid),ak.Abzug2MwstSatzExport)
	} else {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromInklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWInklClass(Oid),ak.Abzug2MwstSatz)
	}
	//if (##class(DBAgrofresh.Auftragskopf).%ExistsId(Oid)) {
	//	set betragInkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWInklClass(Oid)
	//	set betragExkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWExklClass(Oid)
	//	set betragAbzug = betragInkl - betragExkl
	//}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug3EWInklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugEWInklMwstClass(Oid)
		if (auftrag.Abzug3Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWInklClass(Oid) - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2EWInklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug3Prozent / 100)
		} elseif (auftrag.Abzug3Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug3Prozent / 100)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug3EWExklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugEWExklMwstClass(Oid)
		if (auftrag.Abzug3Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1EWExklClass(Oid) - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2EWExklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug3Prozent / 100)
		} elseif (auftrag.Abzug3Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).RoundGemEinst(auftrag.Mandant, betragNetto * auftrag.Abzug3Prozent / 100)	
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug3EWMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	
	set ak = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExkl(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3EWExklClass(Oid),ak.Abzug3MwstSatz)
	} else {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromInkl(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3EWInklClass(Oid),ak.Abzug3MwstSatz)
	}
	//if (##class(DBAgrofresh.Auftragskopf).%ExistsId(Oid)) {
	//	set betragInkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3EWInklClass(Oid)
	//	set betragExkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3EWExklClass(Oid)
	//	set betragAbzug = betragInkl - betragExkl
	//}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug3FWInklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugInklMwstFWClass(Oid)
		if (auftrag.Abzug3Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWInklClass(Oid) - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWInklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug3Prozent / 100, 2)
		} elseif (auftrag.Abzug3Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug3Prozent / 100, 2)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug3FWExklClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (auftrag '= "") {
		set betragNetto = ##class(DBAgrofresh.Auftragskopf).GetBetrAbzugExklMwstFWClass(Oid)
		if (auftrag.Abzug3Typ = 1) {
			set betragNetto = betragNetto - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug1FWExklClass(Oid) - ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug2FWExklClass(Oid)
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug3Prozent / 100,2)
		} elseif (auftrag.Abzug3Typ = 3) {
			set betragAbzug = ##class(DBUtils.NumberUtils).Round(betragNetto * auftrag.Abzug3Prozent / 100, 2)
		}
		k auftrag
	}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetBetragAbzug3FWMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betragAbzug = 0
	
	set ak = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	if (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3FWExklClass(Oid),ak.Abzug3MwstSatz)
	} elseif (ak.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXPORT()) {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromExklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3FWExklClass(Oid),ak.Abzug3MwstSatzExport)
	} else {
		set betragAbzug = ##class(DBAgrofresh.Auftragskopf).CalcAbzugMwstBetragFromInklFW(ak.Mandant,##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3FWInklClass(Oid),ak.Abzug3MwstSatz)
	}
	//if (##class(DBAgrofresh.Auftragskopf).%ExistsId(Oid)) {
	//	set betragInkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3FWInklClass(Oid)
	//	set betragExkl = ##class(DBAgrofresh.Auftragskopf).GetBetragAbzug3FWExklClass(Oid)
	//	set betragAbzug = betragInkl - betragExkl
	//}
	quit betragAbzug
]]></Implementation>
</Method>

<Method name="GetGewichtNettoClass">
<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(GewichtNetto) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGewichtTaraClass">
<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(GewichtTara) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGewichtBruttoClass">
<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(GewichtBrutto) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragskopf
	     WHERE Adresse->Adresse = :AdrOid ORDER BY AuftragsNr DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByDebiDatumClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>DebiOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.Auftragskopf
	     WHERE Adresse = :DebiOid AND Lieferdatum = :Datum ORDER BY AuftragsNr DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetPreLastIDByAdrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	set lastId = ##class(DBAgrofresh.Auftragskopf).GetLastIDByAdrClass(AdrOid)
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.Auftragskopf
	     WHERE Adresse->Adresse = :AdrOid AND not ID = :lastId ORDER BY AuftragsNr DESC)
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetWarenaufwandByAuftrClass">
<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(Warenaufwand) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal())
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGebindeSaldoByAuftrClass">
<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(GebindeSaldoBetragExklMwst) INTO :betrag FROM DBAgrofresh.GebDetail
	     WHERE Auftrag = :Oid)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGebindeMwstFWByAuftrClass">
<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(GebindeSaldoBetragMwstFW) INTO :betrag FROM DBAgrofresh.GebDetail
	     WHERE Auftrag = :Oid)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGebindeMwstByAuftrClass">
<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(GebindeSaldoBetragMwst) INTO :betrag FROM DBAgrofresh.GebDetail
	     WHERE Auftrag = :Oid)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetGebindeSaldoFWByAuftrClass">
<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(GebindeSaldoBetragExklMwstFW) INTO :betrag FROM DBAgrofresh.GebDetail
	     WHERE Auftrag = :Oid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragskopf
	     WHERE ID = :Oid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid
		 AND AuftragsNr = :AuftragNr)
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid
		 AND LieferscheinNr = :LieferscheinNr)
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid
		 AND RechnungsNr = :RechnungsNr)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByBestellNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BestellNr:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid
		 AND BestellNr like :BestellNr)
	Quit:(SQLCODE'=0) ""
	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 ^AuftragskopfIsDeleting(myId) = 1
	d ##class(DBUtils.ClassHelper).DeleteManyRelations("DBAgrofresh.Auftragskopf", myId)
	
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(myId)
	if (auftrag.LieferscheinPDF '= "") {
		set fileOid = auftrag.LieferscheinPDF.%Id()
		Set ^LieferscheinFileOid(myId) = fileOid
	}
	if (auftrag.GebindescheinPDF '= "") {
		set fileOid = auftrag.GebindescheinPDF.%Id()
		Set ^GebindescheinFileOid(myId) = fileOid
	}
	if (auftrag.FehlmengenPDF '= "") {
		set fileOid = auftrag.FehlmengenPDF.%Id()
		Set ^FehlmengenFileOid(myId) = fileOid
	}
	kill auftrag
		
	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)
	if ($GET(^LieferscheinFileOid(myId)) '= "") {
		set oldFileOid = ^LieferscheinFileOid(myId)
		KILL ^LieferscheinFileOid(myId)
		set status = ##Class(DBAgrofresh.PDFStream).%DeleteId(oldFileOid)
	}
	if ($GET(^GebindescheinFileOid(myId)) '= "") {
		set oldFileOid = ^GebindescheinFileOid(myId)
		KILL ^GebindescheinFileOid(myId)
		set status = ##Class(DBAgrofresh.PDFStream).%DeleteId(oldFileOid)
	}
	if ($GET(^FehlmengenFileOid(myId)) '= "") {
		set oldFileOid = ^FehlmengenFileOid(myId)
		KILL ^FehlmengenFileOid(myId)
		set status = ##Class(DBAgrofresh.PDFStream).%DeleteId(oldFileOid)
	}
	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 DBAgrofresh.Auftragskopf
	     WHERE Mandant = :Mandant)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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(DBAgrofresh.Auftragskopf).%DeleteId(rs.Data("ID"))
		}
		set okAuftr = 1
		
	} else {
		set okAuftr = 0	
	}
	
	//Bestellungen löschen
	Set strSQL="DELETE FROM DBAgrofreshEK.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 DBAgrofreshEK.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="GetFirstAuftragsOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set myId = ""
	&sql(SELECT TOP 1 %ID Into :myId FROM DBAgrofresh.Auftragskopf WHERE Mandant=:MandantOid)
	Quit:(SQLCODE'=0) ""
	Quit myId
]]></Implementation>
</Method>

<Trigger name="trgDelete">
<Code>	w !,"in Delete Trigger Auftragskopf",!
	new myId
	set myId = {ID*O}
	do ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(myId, 1)
	Quit ##class(DBUtils.ClassHelper).DeleteManyRelations("DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.Konst).BearbeitungsstatusMutiert())
	}
	Quit res
]]></Implementation>
</Method>

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

<Method name="SetBStatusMutiert">
<Implementation><![CDATA[
	set exists = $GET(^AuftragskopfNotSetStatusMutiert(..%Id()))
	set existsDeleting = $GET(^AuftragskopfIsDeleting(..%Id()))
	if ((('exists) || ('^AuftragskopfNotSetStatusMutiert(..%Id())))) {
		if ((('existsDeleting) || ('^AuftragskopfIsDeleting(..%Id())))) {
			set check = 0
			if (##class(DBAgrofresh.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusOF)) {
				set ..BearbeitungsstatusOF = ##class(DBAgrofresh.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBAgrofresh.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusAU)) {
				set ..BearbeitungsstatusAU = ##class(DBAgrofresh.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBAgrofresh.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusRZ)) {
				set ..BearbeitungsstatusRZ = ##class(DBAgrofresh.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBAgrofresh.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusLS)) {
				set ..BearbeitungsstatusLS = ##class(DBAgrofresh.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBAgrofresh.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusRG)) {
				set ..BearbeitungsstatusRG = ##class(DBAgrofresh.Konst).BearbeitungsstatusMutiert()
				set check = 1
			}
			if (##class(DBAgrofresh.Auftragskopf).IsStatusGedruckt(..BearbeitungsstatusBZ)) {
				set ..BearbeitungsstatusBZ = ##class(DBAgrofresh.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()	
	}
	d ##class(DBAgrofresh.Auftragskopf).UpdateLsDatum(..%Id(), ..Lieferdatum)
	
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="Update">
<Code>	do ##class(DBAgrofresh.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 ^AuftragskopfNotSetStatusMutiert(kopfId) = notAutoMutiert
	} else {
		kill ^AuftragskopfNotSetStatusMutiert(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 DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid)
	if (maxauftr'="") {
		set id = ##class(DBAgrofresh.Auftragskopf).GetIdByAuftragNr(MandantOid, maxauftr)
	}
	Quit:(SQLCODE'=0) ""
	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 DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid)
	Set maxJnr = maxJnr + 1
	Quit:(SQLCODE'=0) 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,rueckstand:%Boolean=0,bestMengeGebinde:%Boolean=0</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set faktor = 1
	if (storno) {
		set faktor = -1
	}
	
	set user = ##class(DBCore.Mitarbeiter).%OpenId(MitarbeiterOid)
	
	set sAuf = ##class(DBAgrofresh.Auftragskopf).%OpenId(AuftragOid)
	set dAuf = ##class(DBAgrofresh.Auftragskopf).%New()
	
	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
		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
		
		set debi = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, kunde)
		
		if (debi '= "") {
			set debitor = ##class(DBDebiKredi.Debitor).%OpenId(debi)
			set dAuf.Adresse = debitor
			set dAuf.ZahlAdresse = debitor.Zahladresse
		}
	}
	set dAuf.Abteilung = sAuf.Abteilung
	set dAuf.Abzug1Bio = sAuf.Abzug1Bio
	set dAuf.Abzug1FibuKonto = sAuf.Abzug1FibuKonto
	set dAuf.Abzug1Prozent = sAuf.Abzug1Prozent
	set dAuf.Abzug1Text = sAuf.Abzug1Text
	set dAuf.Abzug1Typ = sAuf.Abzug1Typ
	set dAuf.Abzug2Bio = sAuf.Abzug2Bio
	set dAuf.Abzug2FibuKonto = sAuf.Abzug2FibuKonto
	set dAuf.Abzug2Prozent = sAuf.Abzug2Prozent
	set dAuf.Abzug2Text = sAuf.Abzug2Text
	set dAuf.Abzug2Typ = sAuf.Abzug2Typ
	set dAuf.Abzug3Bio = sAuf.Abzug3Bio
	set dAuf.Abzug3FibuKonto = sAuf.Abzug3FibuKonto
	set dAuf.Abzug3Prozent = sAuf.Abzug3Prozent
	set dAuf.Abzug3Text = sAuf.Abzug3Text
	set dAuf.Abzug3Typ = sAuf.Abzug3Typ
	if (storno = 0) {
		set dAuf.Auftragsdatum = +$H
	} else {
		set dAuf.Auftragsdatum = sAuf.Auftragsdatum
	}
	set dAuf.AuftragsNr = nextAuftragsNr
	set dAuf.Auftragsstatus = 0
	set dAuf.AuftragValidiert = 0
	set dAuf.BearbeitungsstatusAU = ##class(DBAgrofresh.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusBZ = ##class(DBAgrofresh.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusLS = ##class(DBAgrofresh.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusOF = ##class(DBAgrofresh.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusRG = ##class(DBAgrofresh.Konst).BearbeitungsstatusNichtGedruckt()
	set dAuf.BearbeitungsstatusRZ = ##class(DBAgrofresh.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.GebindeVerrechnung = sAuf.GebindeVerrechnung
	set dAuf.GebindeVerrechnungAktiv = sAuf.GebindeVerrechnungAktiv
	set dAuf.Kurs = sAuf.Kurs
	set dAuf.Kurseinheit = sAuf.Kurseinheit
	 if (rueckstand = 1) {
		set sAuf.TeillieferungNr =  sAuf.TeillieferungNr + 1
		set dAuf.TeillieferungNr = sAuf.TeillieferungNr
		if ((sAuf.HauptlieferungNr '= 0) && (sAuf.HauptlieferungNr '= "")) {
			set dAuf.HauptlieferungNr = sAuf.HauptlieferungNr
		} else {
			set dAuf.HauptlieferungNr = sAuf.AuftragsNr
		}
	 } else {
		set dAuf.TeillieferungNr = 0
		set dAuf.HauptlieferungNr = 0
	 }
	set dAuf.Lagerort = sAuf.Lagerort
	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 = ##class(DBAgrofresh.Konst).StatusAutoLaufKeinStatus()
	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
	if (storno = 1) {
		set dAuf.IsStorno = 1
	}
	
	set scAuf = dAuf.%Save()
	
	if ((rueckstand = 1) && ((sAuf.HauptlieferungNr = 0) || (sAuf.HauptlieferungNr = ""))) {
		set sAuf.IsHauptlieferung = 1
		d sAuf.%Save()
	}
	
	if ($$$ISOK(scAuf)) {
		Set strSQL="SELECT ID FROM DBAgrofresh.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(DBAgrofresh.Auftragspos).%OpenId(rs.Data("ID"))
		    if ((rueckstand = 0) || (sPos.AnzahlGebinde < sPos.BestellteGebinde)) {
				set dPos = ##class(DBAgrofresh.Auftragspos).%New()
			
				set dPos.Abzugstyp = sPos.Abzugstyp
				set dPos.AnzahlGebinde = (faktor * sPos.AnzahlGebinde)
				set dPos.AnzahlJeGebinde =  sPos.AnzahlJeGebinde
				set dPos.AnzahlGedruckteGebinde = 0
				set dPos.AnzahlHauptGebinde = (faktor * sPos.AnzahlHauptGebinde)
				set dPos.Preis = sPos.Preis
				 if (rueckstand = 1) {
					set dPos.Menge = sPos.BestellteMenge - sPos.Menge
					if (dPos.AnzahlJeGebinde '= 0) {
						set dPos.AnzahlGebinde = dPos.Menge / dPos.AnzahlJeGebinde
					} else {
						set dPos.AnzahlGebinde = dPos.Menge
					}
					set dPos.BestellteMenge = dPos.Menge
					set dPos.BestellteGebinde = dPos.AnzahlGebinde
				 } else {
					set dPos.BestellteMenge = (faktor * sPos.BestellteMenge)
					set dPos.BestellteGebinde = (faktor * sPos.BestellteGebinde)
					set dPos.AnzahlGebinde = (faktor * sPos.AnzahlGebinde)
					set dPos.Menge = (faktor * sPos.Menge)
					set dPos.BetragExklMwst = (faktor * sPos.BetragExklMwst)
					set dPos.BetragInklMwst = (faktor * sPos.BetragInklMwst)
				 }
				set dPos.Artikel = sPos.Artikel
				set dPos.Artikelcode = sPos.Artikelcode
				set dPos.Auftragskopf = dAuf
				set dPos.Artikelrabatt1InProzent = sPos.Artikelrabatt1InProzent
				set dPos.Artikelrabatt1ExklMwstEW = (faktor * sPos.Artikelrabatt1ExklMwstEW)
				set dPos.Artikelrabatt1ExklMwstFW = (faktor * sPos.Artikelrabatt1ExklMwstFW)
				set dPos.Artikelrabatt1InklMwstEW = (faktor * sPos.Artikelrabatt1InklMwstEW)
				set dPos.Artikelrabatt1InklMwstFW = (faktor * sPos.Artikelrabatt1InklMwstFW)
				set dPos.Artikelrabatt2InProzent = sPos.Artikelrabatt2InProzent
				set dPos.Artikelrabatt2ExklMwstEW = (faktor * sPos.Artikelrabatt2ExklMwstEW)
				set dPos.Artikelrabatt2ExklMwstFW = (faktor * sPos.Artikelrabatt2ExklMwstFW)
				set dPos.Artikelrabatt2InklMwstEW = (faktor * sPos.Artikelrabatt2InklMwstEW)
				set dPos.Artikelrabatt2InklMwstFW = (faktor * sPos.Artikelrabatt2InklMwstFW)
				set dPos.BestellNr = sPos.BestellNr
				set dPos.Bemerkung = sPos.Bemerkung
				set dPos.BetragExklMwstFW = (faktor * sPos.BetragExklMwstFW)
				set dPos.BetragInklMwstFW = (faktor * sPos.BetragInklMwstFW)
			
				if (((chargenAusgang = 1) || (storno = 1)) && (sPos.Charge'="")) {
					set sCharge = ##class(DBAgrofreshEK.ChargenAusgang).%OpenId(sPos.Charge.%Id())
					set dCharge = ##class(DBAgrofreshEK.ChargenAusgang).%New()
					set dCharge.AnzahlEtiketten = sCharge.AnzahlEtiketten
					set dCharge.AnzahlEtikettenGedruckt = 0
					set dCharge.AnzahlGebinde = (faktor * sCharge.AnzahlGebinde)
					set dCharge.Artikel = sCharge.Artikel
					set dCharge.AusgangsDatum = sCharge.AusgangsDatum
					set dCharge.Belegnummer = sCharge.Belegnummer
					set dCharge.Belegtext = sCharge.Belegtext
					set dCharge.Betrag = (faktor * sCharge.Betrag)
					// Chargeneingang nur bei Storno zuweisen. Bei Kopieren muss der Eingang neu zugewiesen werden (dh 29.12.2010 gem. AW)
					if (storno = 1) {
						set dCharge.Charge = sCharge.Charge
					}
					set dCharge.Einzelgewicht = sCharge.Einzelgewicht
					set dCharge.Gebinde = sCharge.Gebinde
					set dCharge.Herkunft = sCharge.Herkunft
					set dCharge.Kunde = dAuf.Adresse
					set dCharge.MengeAusgang = (faktor * sCharge.MengeAusgang)
					set dCharge.MengeJeGebinde = sCharge.MengeJeGebinde
					if (sCharge.Charge '= "") {	
						set dCharge.PositionsNr = ##class(DBAgrofreshEK.ChargenAusgang).GetNewPosNr(sCharge.Charge.%Id())
					}
					set dCharge.Preis = sCharge.Preis
					set dCharge.TageVerfall = sCharge.TageVerfall
					set dCharge.ZeitAbgang = sCharge.ZeitAbgang
					set dCharge.Abzugstyp = sCharge.Abzugstyp
					set dCharge.Abteilung = sCharge.Abteilung
					set dCharge.Qualitaet = sCharge.Qualitaet
					set dCharge.Produktionsart = sCharge.Produktionsart
					set dCharge.Lagerort = sCharge.Lagerort
					set scCharge = dCharge.%Save()
				
					if ($$$ISOK(scCharge)) {
						set dPos.Charge = dCharge
					} else {
						w "Fehler beim Chargenausgang: "_scCharge
					}
					set dPos.ChargenNrMan = sPos.ChargenNrMan
			    } elseif (rueckstand = 1) {
				    set dPos.Charge = sPos.Charge
					set dPos.ChargenNrMan = sPos.ChargenNrMan
			    } else {
					set dPos.Charge = ""
					set dPos.ChargenNrMan = ""
			    }
				set dPos.DetailPreis = sPos.DetailPreis
				set dPos.DetailText = sPos.DetailText
				set dPos.EPProvisorisch = sPos.EPProvisorisch
				set dPos.Gebinde = sPos.Gebinde
				set dPos.GewichtBrutto = sPos.GewichtBrutto
				set dPos.GewichtNetto = sPos.GewichtNetto
				set dPos.GewichtTara = sPos.GewichtTara
				set dPos.GrammJeEinheit = sPos.GrammJeEinheit
				set dPos.GrammJeLaufmeter = sPos.GrammJeLaufmeter
				set dPos.HauptGebinde = sPos.HauptGebinde
				set dPos.Herkunft = sPos.Herkunft
				set dPos.KorrekturMwst = (faktor * sPos.KorrekturMwst)
				set dPos.Lagerort = sPos.Lagerort
				set dPos.Lagerstatus = ##class(DBAgrofresh.Konst).LagerstatusKeinLager()
				set dPos.Lieferant = sPos.Lieferant
				set dPos.Lieferdatum = sPos.Lieferdatum
				set dPos.MargeProzent = sPos.MargeProzent
				set dPos.Mengeneinheit = sPos.Mengeneinheit
				set dPos.Mwst = sPos.Mwst
				set dPos.MwstBetrag = (faktor * sPos.MwstBetrag)
				set dPos.MwstBetragFW = (faktor * sPos.MwstBetragFW)
				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.PreisFW = sPos.PreisFW
				set dPos.Produktionsart = sPos.Produktionsart
				set dPos.Qualitaet = sPos.Qualitaet
				set dPos.RabattBetrag = (faktor * sPos.RabattBetrag)
				set dPos.RabattBetragFW = (faktor * sPos.RabattBetragFW)
				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.ZusatzChargenID = sPos.ZusatzChargenID
			
				set scPos = dPos.%Save()
			
				if ($$$ISERR(scPos)) {
					w "Fehler bei der Detailposition: "_scPos
				}
				
				if (rueckstand = 1) {
					set sPos.BestellteMenge = sPos.Menge
					set sPos.BestellteGebinde = sPos.AnzahlGebinde
					 
					 set ssPos = sPos.%Save()
					 w "Source Position Menge: ", sPos.BestellteMenge, !
					 if (sPos.BestellteMenge = 0) {
						 set id = sPos.%Id()
						 w "Lösche Position: ", id, !
						 k sPos
						 d ##class(DBAgrofresh.Auftragskopf).%DeleteId(id)
					 }
			
					if ($$$ISERR(ssPos)) {
						w "Fehler bei der Detailposition (Original): "_ssPos
					}
				 }
		    }
	    }
	    
	    Set strSQL="SELECT ID FROM DBAgrofresh.GebDetail WHERE Auftrag="_AuftragOid
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set sGeb = ##class(DBAgrofresh.GebDetail).%OpenId(rs.Data("ID"))
		    set dGeb = ""
		    
		    set dGebOid = ##class(DBAgrofresh.GebDetail).GetIdByAuftragGebinde(dAuf.%Id(),sGeb.GebKontr.Gebinde.%Id())
		    if (dGebOid'="") {
			    set dGeb = ##class(DBAgrofresh.GebDetail).%OpenId(dGebOid)
		    } else {
			    set dGeb = ##class(DBAgrofresh.GebDetail).%New()
				set dGeb.Auftrag = dAuf
				set gebKtrId = ##class(DBAgrofresh.GebKontr).GetIdByGebAdr(sGeb.GebKontr.Gebinde.%Id(), dAuf.Adresse.Adresse.%Id())
				if (gebKtrId '= "") {
					set gebKontr = ##class(DBAgrofresh.GebKontr).%OpenId(gebKtrId)
					set dGeb.GebKontr = gebKontr
				} else {
					set gebKontr = ##class(DBAgrofresh.GebKontr).%New()
					set gebKontr.Gebinde = sGeb.GebKontr.Gebinde
					set gebKontr.Kunde = dAuf.Adresse.Adresse
					set gebKontr.DatumAnfangsbestand = +$H
					set gebKontr.Mandant = dAuf.Mandant
					set scGebKontr = gebKontr.%Save()
					if ($$$ISERR(scGebKontr)) {
						w "Fehler bei der GebKontr: "_scGebKontr
					}
					
					set dGeb.GebKontr = gebKontr
				}
		    }
			set dGeb.Datum = dAuf.Lieferdatum
		    set dGeb.GebindePreis = sGeb.GebindePreis
		    set dGeb.Verrechnet = 0
		    set dGeb.AdminKostenJeLadung = sGeb.AdminKostenJeLadung
		    set dGeb.GebindeMiete = sGeb.GebindeMiete
		    set dGeb.GebindeAdminKosten = sGeb.GebindeAdminKosten
		    set dGeb.LieferungMenge = (faktor * sGeb.LieferungMenge)
			set dGeb.RetourenMenge = (faktor * sGeb.RetourenMenge)
			if (sGeb.Mwst '= "") {
				set dGeb.Mwst = sGeb.Mwst
			}
			set dGeb.MwstSatz = sGeb.MwstSatz
			set scGeb = dGeb.%Save()  
			
			if ($$$ISERR(scGeb)) {
				w "Fehler bei der GebDetail: "_scGeb
			}
	    }
	    
    } 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 DBAgrofresh.Auftragskopf WHERE RechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragskopf WHERE RechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragskopf WHERE RechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit:(SQLCODE'=0) 0
	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 DBAgrofresh.Auftragskopf WHERE RechnungsNr=:RgNr AND Mandant = :MandantOid)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetTotalMitGebindeByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String,AbzugBisArtGr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	
	Set rs = ##class(%Library.ResultSet).%New("DBAgrofresh.AF.AuftragsKopfAF.ListeMwstCodesSammelrechnung")
	Set sc=rs.Execute(RgNr,MandantOid,"de", AbzugBisArtGr)
	
	if ($$$ISOK(sc)) {
		while (rs.Next(.sc)) {
			set betrag = (betrag + rs.Data("MwstBetrag") + rs.Data("MwstBetragExkl") + rs.Data("Gebinde"))
			//w "MwstBetrag: "_rs.Data("MwstBetrag"),!
			//w "MwstBetragExkl: "_rs.Data("MwstBetragExkl"),!
			//w "GebindeBetrag: "_rs.Data("Gebinde"),!
			//w "Betrag: "_betrag,!
		}
	}
	
	
	Quit ##class(DBUtils.NumberUtils).RoundGemEinst(MandantOid,betrag)
]]></Implementation>
</Method>

<Method name="PositionenSortieren">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,DefPosNrSchrit:%Integer,SortierArt:%Integer</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	Set strSQL = "SELECT ID, PositionsNr, NVL(ZusatztextId,0) As ZusatztextId, "
	
	if (SortierArt = ##class(DBAgrofresh.Konst).SortierungArtikelNr()) {
		set strSQL = strSQL_"CASE NVL(ZusatztextId,0) WHEN 0 THEN Artikel->ArtikelNr ELSE "
		set strSQL = strSQL_"(SELECT Artikel->ArtikelNr FROM DBAgrofresh.Auftragspos pos WHERE pos.Auftragskopf='"_AuftragOid_"' AND pos.PositionsNr=t.PositionsNr) END As ArtikelNr "
		Set strSQL = strSQL_"FROM DBAgrofresh.Auftragspos t WHERE Auftragskopf = '"_AuftragOid_"' "
		set strSQL = strSQL_"order by ArtikelNr, PositionsNr, ZusatztextId"
	} elseif (SortierArt = ##class(DBAgrofresh.Konst).SortierungArtikelKurztext()) {
		set strSQL = strSQL_"CASE NVL(ZusatztextId,0) WHEN 0 THEN Artikel->Kurztext ELSE "
		set strSQL = strSQL_"(SELECT Artikel->Kurztext FROM DBAgrofresh.Auftragspos pos WHERE pos.Auftragskopf='"_AuftragOid_"' AND pos.PositionsNr=t.PositionsNr) END As ArtikelKurztext "
		Set strSQL = strSQL_"FROM DBAgrofresh.Auftragspos t WHERE Auftragskopf = '"_AuftragOid_"' "
		set strSQL = strSQL_"order by ArtikelKurztext, PositionsNr, ZusatztextId"
	} elseif (SortierArt = ##class(DBAgrofresh.Konst).SortierungArtikelText()) {
		set strSQL = strSQL_"CASE NVL(ZusatztextId,0) WHEN 0 THEN DetailText ELSE "
		set strSQL = strSQL_"(SELECT DetailText FROM DBAgrofresh.Auftragspos pos WHERE pos.Auftragskopf='"_AuftragOid_"' AND pos.PositionsNr=t.PositionsNr) END As DetText "
		Set strSQL = strSQL_"FROM DBAgrofresh.Auftragspos t WHERE Auftragskopf = '"_AuftragOid_"' "
		set strSQL = strSQL_"order by DetText, PositionsNr, ZusatztextId"
	} elseif (SortierArt = ##class(DBAgrofresh.Konst).SortierungArtikelGrText()) {
		set strSQL = strSQL_"CASE NVL(ZusatztextId,0) WHEN 0 THEN Artikel->Artikelgruppe->ArtikelgruppenNr ELSE "
		set strSQL = strSQL_"(SELECT Artikel->Artikelgruppe->ArtikelgruppenNr FROM DBAgrofresh.Auftragspos pos WHERE pos.Auftragskopf='"_AuftragOid_"' AND pos.PositionsNr=t.PositionsNr) END As ArtikelgruppenNr, "
		set strSQL = strSQL_"CASE NVL(ZusatztextId,0) WHEN 0 THEN DetailText ELSE "
		set strSQL = strSQL_"(SELECT DetailText FROM DBAgrofresh.Auftragspos pos WHERE pos.Auftragskopf='"_AuftragOid_"' AND pos.PositionsNr=t.PositionsNr) END As DetText "
		Set strSQL = strSQL_"FROM DBAgrofresh.Auftragspos t WHERE Auftragskopf = '"_AuftragOid_"' "
		set strSQL = strSQL_"order by ArtikelgruppenNr, DetText, 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(DBAgrofresh.Auftragspos).%OpenId(posId)
			if (detPos '= "") {
				set detPos.PositionsNr = posNr
				d detPos.%Save()
				k detPos
			}
		}
	}
	
	Quit sc
]]></Implementation>
</Method>

<Method name="SearchWithFreeSelektion">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,vonDatum:%Date,bisDatum:%Date,nachStatus:%Boolean,auftragStatus:%Integer,nurVerbuchte:%Boolean,nurBarzahlungen:%Boolean,nurNichtAusgelieferte:%Boolean,nurAusgelieferte:%Boolean,Lagerort:%String</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_"GebindeSaldo, TotalMitGebinde, Verbucht, AuftragValidiert, RetourenErfasst, "
	Set strSQL = strSQL_"BearbeitungsstatusAU, BearbeitungsstatusBZ, BearbeitungsstatusLS, "
	Set strSQL = strSQL_"BearbeitungsstatusOF, BearbeitungsstatusRG, BearbeitungsstatusRZ "
	Set strSQL = strSQL_"FROM DBAgrofresh.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 NVL(Auftragsstatus,0) = "_auftragStatus_" "
	}
	if (nurBarzahlungen) {
		Set strSQL = strSQL_"AND BearbeitungsstatusBZ = DBAgrofresh.Konst_BearbeitungsstatusGedruckt() "
	}
	if (nurNichtAusgelieferte) {
		Set strSQL = strSQL_"AND (NVL(Auftragsstatus,0) < 4 OR Auftragsstatus IS NULL OR (Auftragsstatus = 4 AND BearbeitungsstatusLS = DBAgrofresh.Konst_BearbeitungsstatusMutiert())) "
	}
	if (nurAusgelieferte) {
		Set strSQL = strSQL_"AND NVL(Auftragsstatus,0) >= 4 "
	}
	if (nurVerbuchte) {
		Set strSQL = strSQL_"AND Verbucht = 0 "
	}
	if ((Lagerort '= "") && (Lagerort '= $c(0))) {
		Set strSQL = strSQL_"AND Lagerort = "_Lagerort_" "
	}
	
	Set strSQL = strSQL_"ORDER BY Auftragsstatus, Rechnungsdatum DESC, RechnungsNr DESC, Lieferdatum DESC, LieferscheinNr DESC, Auftragsdatum DESC, AuftragsNr DESC"
	
	w "SearchStatment: "_strSQL,!
	
	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="RecalcAllMwst">
<ClassMethod>1</ClassMethod>
<FormalSpec>vonAuftragNr:%Integer,bisAuftragNr:%Integer</FormalSpec>
<Implementation><![CDATA[
	//Letze Korrektur zurücksetzen
	Set strSQL="SELECT ID FROM DBAgrofresh.Auftragskopf WHERE AuftragsNr BETWEEN "_vonAuftragNr_" AND "_bisAuftragNr_" AND NVL(Verbucht,0) = 0"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    if ($$$ISERR(sc)) {
		w "DBAgrofresh.Auftragspos.RecalcAllMwst - Fehler bei SQL-Statement für Reset",!
	}
	While (rs.Next()) {
		Set auftragOid = rs.Data("ID")
		d ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(auftragOid,1)
		DO ##Class(DBAgrofresh.Auftragspos).RecalcMwst(auftragOid)
		d ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(auftragOid,0)
	}
]]></Implementation>
</Method>

<Method name="ResetRgNummer">
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
	Set strSQL="UPDATE DBAgrofresh.Auftragskopf SET RechnungsNr = null  WHERE (Verbucht = 0 or Verbucht is Null) and RechnungsNr = 0 AND DBAgrofresh.AuftragsKopf_IsStatusGedruckt(BearbeitungsstatusRG) = 0 AND DBAgrofresh.AuftragsKopf_IsStatusMutiert(BearbeitungsstatusRG) = 0"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    if ($$$ISERR(sc)) {
		w "DBAgrofresh.Auftragspos.ResetRgNummer - Fehler bei SQL-Statement für Reset",!
	}
]]></Implementation>
</Method>

<Method name="OutputLieferscheinStream">
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set f = ..LieferscheinPDF
	Set Ret=""
	If (f'="") {
		Set Size=f.DataStream.Size
		Set Ret=tmpStream.CopyFromAndSave(f.DataStream)
	}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="InputLieferscheinStream">
<FormalSpec><![CDATA[&Stream:%Library.GlobalBinaryStream]]></FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	Set res=0
	Set fid = ""
	if (..LieferscheinPDFGetObjectId() '= "") {
		Set fid = ..LieferscheinPDFGetObjectId()
	}
	Set sID = ""
	
		Set Cnt=0
		if (fid'="") {
			&sql(SELECT count(*) INTO :Cnt
		     	FROM DBAgrofresh.PDFStream
		     	WHERE ID = :fid)
		}
		If (Cnt=0) {
			w "in cnt0",!
			Set myId=..%Id()
			Set v=##Class(DBAgrofresh.Auftragskopf).%OpenId(myId)
			Set n=##Class(DBAgrofresh.PDFStream).%New()
			Set Ret=n.%Save()
			Set v.LieferscheinPDF=n
			Set Ret=v.%Save()
			if (Ret=1) {
				do n.DataStream.CopyFromAndSave(Stream)
				Set Ret=n.%Save()
			}
			Set n=""
			set v = ""
			Set res=(Ret=1)
			Quit res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBAgrofresh.PDFStream
		     WHERE ID = :fid)
		     
		Set s=##Class(DBAgrofresh.PDFStream).%OpenId(sID)
		set Ret = s.DataStream.CopyFromAndSave(Stream)
		
		Set RetS = s.%Save()
		Set res=((Ret=1) && (RetS=1))
		set s = ""
		
	Quit res
]]></Implementation>
</Method>

<Method name="OutputGebindescheinStream">
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set f = ..GebindescheinPDF
	Set Ret=""
	If (f'="") {
		Set Size=f.DataStream.Size
		Set Ret=tmpStream.CopyFromAndSave(f.DataStream)
	}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="InputGebindescheinStream">
<FormalSpec><![CDATA[&Stream:%Library.GlobalBinaryStream]]></FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res=0
	Set fid = ""
	if (..GebindescheinPDF '= "") {
		Set fid = ..GebindescheinPDF.%Id()
	}
	Set sID = ""
	
		Set Cnt=0
		if (fid'="") {
			&sql(SELECT count(*) INTO :Cnt
		     	FROM DBAgrofresh.PDFStream
		     	WHERE ID = :fid)
		}
		If (Cnt=0) {
			Set myId=..%Id()
			Set v=##Class(DBAgrofresh.Auftragskopf).%OpenId(myId)
			Set n=##Class(DBAgrofresh.PDFStream).%New()
			Set Ret=n.%Save()
			Set v.GebindescheinPDF=n
			Set Ret=v.%Save()
			if (Ret=1) {
				do n.DataStream.CopyFromAndSave(Stream)
				Set Ret=n.%Save()
			}
			Set n=""
			Set v = ""
			Set res=(Ret=1)
			Quit res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBAgrofresh.PDFStream
		     WHERE ID = :fid)
		     
		Set s=##Class(DBAgrofresh.PDFStream).%OpenId(sID)
		Set Ret=s.DataStream.CopyFromAndSave(Stream)
		Set RetS = s.%Save()
		Set s = ""
		Set res=((Ret=1) && (RetS=1))
	
	Quit res
]]></Implementation>
</Method>

<Method name="OutputFehlmengenStream">
<ReturnType>%Library.GlobalBinaryStream</ReturnType>
<Implementation><![CDATA[
	Set tmpStream=##class(%Library.GlobalBinaryStream).%New()
	Set f = ..FehlmengenPDF
	Set Ret=""
	If (f'="") {
		Set Size=f.DataStream.Size
		Set Ret=tmpStream.CopyFromAndSave(f.DataStream)
	}
	Quit tmpStream
]]></Implementation>
</Method>

<Method name="InputFehlmengenStream">
<FormalSpec><![CDATA[&Stream:%Library.GlobalBinaryStream]]></FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set res=0
	Set fid = ""
	if (fid '= ..FehlmengenPDF) {
		Set fid = ..FehlmengenPDF.%Id()
	}
	Set sID = ""
	
		Set Cnt=0
		if (fid'="") {
			&sql(SELECT count(*) INTO :Cnt
		     	FROM DBAgrofresh.PDFStream
		     	WHERE ID = :fid)
		}
		If (Cnt=0) {
			Set myId=..%Id()
			Set v=##Class(DBAgrofresh.Auftragskopf).%OpenId(myId)
			Set n=##Class(DBAgrofresh.PDFStream).%New()
			Set Ret=n.%Save()
			Set v.FehlmengenPDF=n
			Set Ret=v.%Save()
			if (Ret=1) {
				do n.DataStream.CopyFromAndSave(Stream)
				Set Ret=n.%Save()
			}
			Set n=""
			Set v = ""
			Set res=(Ret=1)
			Quit res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBAgrofresh.PDFStream
		     WHERE ID = :fid)
		     
		Set s=##Class(DBAgrofresh.PDFStream).%OpenId(sID)
		Set Ret=s.DataStream.CopyFromAndSave(Stream)
		Set RetS = s.%Save()
		Set s = ""
		Set res=((Ret=1) && (RetS=1))
	
	Quit res
]]></Implementation>
</Method>

<Method name="GetBetrAbzugEWInklMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	set mandId = kopf.Mandant
	set bisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandId, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())
  	if (bisGr = 0) || (bisGr = "") {
    	Quit ##class(DBAgrofresh.Auftragskopf).GetBetragEWInklMwstByAuftrClass(Oid)
  	}
	&sql(SELECT SUM(Nettobetrag2InklMwstEW) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal() AND
          		Artikel->Artikelgruppe->ArtikelgruppenNr <= :bisGr)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetrAbzugEWExklMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	set mandId = kopf.Mandant
	set bisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandId, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())
	if (bisGr = 0) || (bisGr = "") {
  		Quit ##class(DBAgrofresh.Auftragskopf).GetBetragEWExklMwstByAuftrClass(Oid)
  	}
	&sql(SELECT SUM(Nettobetrag2ExklMwstEW) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal() AND
          		Artikel->Artikelgruppe->ArtikelgruppenNr <= :bisGr)
	Quit:(SQLCODE'=0) 0
	
    Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetrAbzugInklMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	set mandId = kopf.Mandant
	set bisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandId, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())
  	if (bisGr = 0) || (bisGr = "") {
   		Quit ##class(DBAgrofresh.Auftragskopf).GetBetragInklMwstFWClass(Oid)
  	}
	&sql(SELECT SUM(Nettobetrag2InklMwstFW) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal() AND
          		Artikel->Artikelgruppe->ArtikelgruppenNr <= :bisGr)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetrAbzugExklMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	set mandId = kopf.Mandant
	set bisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandId, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())
  	if (bisGr = 0) || (bisGr = "") {
    	Quit ##class(DBAgrofresh.Auftragskopf).GetBetragExklMwstFWClass(Oid)
  	}
	&sql(SELECT SUM(Nettobetrag2ExklMwstFW) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal() AND
          		Artikel->Artikelgruppe->ArtikelgruppenNr <= :bisGr)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetrAbzugMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	set mandId = kopf.Mandant
	set bisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandId, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())

  	if (bisGr = 0) || (bisGr = "") {
	  	Quit ##class(DBAgrofresh.Auftragskopf).GetBetragMwstFWClass(Oid)
  	}
	&sql(SELECT SUM(Nettobetrag2MwstBetragFW) INTO :betrag FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid AND 
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal() AND
          		Artikel->Artikelgruppe->ArtikelgruppenNr <= :bisGr)
	Quit:(SQLCODE'=0) 0
	Quit betrag
]]></Implementation>
</Method>

<Method name="GetBetrAbzugMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(Oid)
	set mandId = kopf.Mandant
	set bisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandId, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())
  	if (bisGr = 0) || (bisGr = "") {
	   Quit ##class(DBAgrofresh.Auftragskopf).GetBetragMwstByAuftrClass(Oid)
	} else {
  		&sql(SELECT SUM(Nettobetrag2MwstBetragEW) INTO :betrag FROM DBAgrofresh.Auftragspos
  	     WHERE Auftragskopf = :Oid AND 
  	     		Artikelcode<>DBAgrofresh.Konst_AcRabattZwischentotal() AND
  	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotal() AND
  	     		Artikelcode<>DBAgrofresh.Konst_AcZwischentotalVorRabatt() AND
  	     		Artikelcode<>DBAgrofresh.Konst_AcRabattGesamttotal() AND
  	     		Artikelcode<>DBAgrofresh.Konst_AcGesamttotal() AND
            	Artikel->Artikelgruppe->ArtikelgruppenNr <= :bisGr)
		Quit:(SQLCODE'=0) ""
  	}
	Quit betrag
]]></Implementation>
</Method>

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

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

<Method name="ChangeMwstCodesAufDet">
<ClassMethod>1</ClassMethod>
<FormalSpec>vonAuftrag:%Integer,bisAuftag:%Integer,alteMwstOid:%String,neueMwstOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set anz = 0
	set id = ""
	//Letze Korrektur zurücksetzen
	Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE Auftragskopf->AuftragNr between = "_vonAuftrag_" and "_bisAuftag_" And Mwst= '"_alteMwstOid _"'"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
	while (rs.Next()) {
		 Set id = rs.Data("ID")
	}
	Quit +anz
]]></Implementation>
</Method>

<Method name="GetFirstAuftragOidByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,RgNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT ID INTO :oid FROM DBAgrofresh.Auftragskopf WHERE Mandant=:MandantOid AND Rechnungsnr=:RgNr ORDER BY AuftragsNr)
	Quit:(SQLCODE'=0) ""
	Quit oid
]]></Implementation>
</Method>

<Method name="AuftragHasRueckstand">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set count = 0
	&sql(SELECT COUNT(ID) INTO :count FROM DBAgrofresh.Auftragspos where Auftragskopf = :Oid and AnzahlGebinde < BestellteMenge)
	Quit:(SQLCODE'=0) 0
	if (count = 0) {
		quit 0
	} else {
		quit 1
	}
]]></Implementation>
</Method>

<Method name="CountAuftragByBestellNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BestellNr:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set anz = 0
	Set strSQL="SELECT COUNT(1) As Cnt FROM DBAgrofresh.AuftragsKopf WHERE BestellNr = '"_BestellNr_"' AND Mandant = '"_MandantOid_"'"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
	while (rs.Next()) {
		 set anz = rs.Data("Cnt")
	}
	Quit +anz
]]></Implementation>
</Method>

<Method name="GetExportMwstSatzPositionen">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set satz = 0
	&sql(SELECT TOP 1 DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Auftragskopf->Lieferdatum) INTO :satz FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :Oid and Mwst is not null AND DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Auftragskopf->Lieferdatum) > 0)
	Quit:(SQLCODE'=0) 0
	Quit satz
]]></Implementation>
</Method>

<Method name="GetExportMwstSatzGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set satz = 0
	&sql(SELECT TOP 1 DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Auftrag->Lieferdatum) INTO :satz FROM DBAgrofresh.GebDetail
	     WHERE Auftrag = :Oid and Mwst is not null AND DBFibu_SD.Mwst_GetMwstSatzExportClass(Mwst, Auftrag->Lieferdatum) > 0)
	Quit:(SQLCODE'=0) 0
	Quit satz
]]></Implementation>
</Method>

<Method name="RecalcGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String,VonGebinde:%Integer=0,BisGebinde:%Integer=0</FormalSpec>
<Implementation><![CDATA[
	DO ##class(DBAgrofresh.GebDetail).DeleteVerBarPositonsByAuftrag(Oid)
	Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE Auftragskopf="_Oid
	if ((VonGebinde '= 0) || (BisGebinde'= 0)) {
		Set strSQL = strSQL_" AND GebKontr->Gebinde->GebindeNr between "_VonGebinde_" AND "_BisGebinde
	}
	w strSQL, !
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	while (rs.Next()) {
		set sPos = ##class(DBAgrofresh.Auftragspos).%OpenId(rs.Data("ID"))
		if (sPos.Gebinde '= "") && (sPos.AnzahlGebinde '= 0) && (sPos.AnzahlGebinde '= "") {
			set geb = sPos.Gebinde.%Id()
			set kopf = sPos.Auftragskopf.%Id()
			set anzGeb = sPos.AnzahlGebinde
			k sPos
			do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(geb, kopf, anzGeb, 0, 1)
		}    
	}
]]></Implementation>
</Method>

<Method name="RecalcGebindePrices">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String,VonGebinde:%Integer=0,BisGebinde:%Integer=0</FormalSpec>
<Implementation><![CDATA[
	Set strSQL="SELECT ID FROM DBAgrofresh.GebDetail WHERE Auftrag="_Oid
	if ((VonGebinde '= 0) || (BisGebinde'= 0)) {
		Set strSQL = strSQL_" AND GebKontr->Gebinde->GebindeNr between "_VonGebinde_" AND "_BisGebinde
	}
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
 	Set sc=rs.Execute()
 	while (rs.Next()) {
  		set gebDetail = ##class(DBAgrofresh.GebDetail).%OpenId(rs.Data("ID"))
		set isSpezpreis = 0
		set nurSaldo = 0
  		set gebPreis = ##class(DBAgrofresh.GebPreis).GetPreisDetByAuftrag(Oid, gebDetail.GebKontr.Gebinde.%Id(), .isSpezpreis, .nurSaldo) 
  		if ((gebDetail.Auftrag.Waehrung.FWCode = 1) || (isSpezpreis = 0)) {
   			set gebDetail.GebindePreis = gebPreis
   			//set gebDetail.GebindePreisFW = ##class(DBUtils.NumberUtils).GetBetragFWbyWaehrung(gebPreis, auftrag.Waehrung)
  		} else {
   			set gebDetail.GebindePreisFW = gebPreis
   			set gebDetail.GebindePreis = ##class(DBUtils.NumberUtils).RoundGemEinst(gebDetail.Auftrag.Mandant, ##class(DBUtils.NumberUtils).GetBetragEWbyWaehrung(gebPreis, gebDetail.Auftrag.Waehrung))
  		}
		set gebDetail.NieVerrechnen = nurSaldo
		if ((nurSaldo = 1) && (gebDetail.Verrechnet = 1)) {
			set gebDetail.Verrechnet = 0
		}
		
		set kundenKatOid = ""
		if ((gebDetail.Auftrag.ZahlAdresse.Adresse.Kundenkategorie '= "") && (gebDetail.Auftrag.ZahlAdresse.Adresse.Kundenkategorie '= $c(0))) {
			// nicht Liefer sondern Zahladresse ist entscheidend
			//set kundenKatOid = gebDetail.GebKontr.Kunde.Kundenkategorie.%Id()
			set kundenKatOid = gebDetail.Auftrag.ZahlAdresse.Adresse.Kundenkategorie.%Id()
		}
		//if ((gebDetail.GebindeAdminKosten = 0) || (gebDetail.GebindeAdminKosten = "") || (gebDetail.GebindeAdminKosten = $c(0))) {
			// Saldo menge heir fest auf 1 da Preis ab Ladung nicht berücksichtigt werden soll.
			if (gebDetail.AdminKostenJeLadung) {
				set gebDetail.GebindeAdminKosten  = ##class(DBAgrofresh.SD.GebAdminKosten).GetKostenVKLadungByGebindeDatum(gebDetail.GebKontr.Gebinde.%Id(), kundenKatOid ,gebDetail.Datum)
			} else {
				set gebDetail.GebindeAdminKosten  = ##class(DBAgrofresh.SD.GebAdminKosten).GetKostenVKByGebindeDatum(gebDetail.GebKontr.Gebinde.%Id(), kundenKatOid ,gebDetail.Datum,1)
			}
		//} 
		//if ((gebDetail.GebindeMiete = 0) || (gebDetail.GebindeMiete ="") || (gebDetail.GebindeMiete =$c(0))) {
			set gebDetail.GebindeMiete  = ##class(DBAgrofresh.SD.GebAdminKosten).GetMieteVKByGebindeDatum(gebDetail.GebKontr.Gebinde.%Id(), kundenKatOid, gebDetail.Datum)
		//}
		// Wenn eingestellt nur für gewisse Selektion verrechnen auf diese prüfen
		if (gebDetail.GebKontr.Gebinde.Selektion2 '= "") {
			set sel2 = gebDetail.GebKontr.Gebinde.Selektion2.%Id()
			set sel2ZahlAdr = ""
			if (gebDetail.GebKontr.Kunde.FreieSelektion2 '= "") {
				set sel2ZahlAdr = gebDetail.GebKontr.Kunde.FreieSelektion2.%Id()
			}
			if (sel2 '= sel2ZahlAdr) {
				set gebDetail.GebindeMiete = 0
				set gebDetail.GebindePreisFW = 0
				set gebDetail.GebindePreis = 0
			}
		}
  		d gebDetail.%Save()
  		k gebDetail
 	}
]]></Implementation>
</Method>

<Method name="SetFreigabeRG">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,VonKunde:%Integer,BisKunde:%Integer,BisDatum:%Date,stufenKleinere:%Boolean</FormalSpec>
<Implementation><![CDATA[
	//Set strSQL="Update DBAgrofresh.Auftragskopf SET StatusAutoVerarbeitung = DBAgrofresh.Konst_StatusAutoLaufFreigabeRG() WHERE Mandant = "_MandantOid_"  AND "
	set strSQL = "Select ID FROM  DBAgrofresh.Auftragskopf "
	Set strSQL=strSQL_"WHERE Mandant = "_MandantOid_"  AND "
	Set strSQL=strSQL_"Adresse->Adresse->Adressnummer between "_VonKunde_" AND "_BisKunde_" AND "
    Set strSQL=strSQL_"Lieferdatum <=TO_DATE("_BisDatum_") AND "
    Set strSQL=strSQL_"(NVL(Auftragsstatus,0) = DBAgrofresh.Konst_AuftragstatusLieferschein() OR "
    Set strSQL=strSQL_"("_stufenKleinere_" = 1 AND (NVL(Auftragsstatus,0) <= DBAgrofresh.Konst_AuftragstatusLieferschein()))) AND "
    Set strSQL=strSQL_"NVL(Verbucht, 0) = 0"
   
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
	while (rs.Next()) {
		set currId = rs.Data("ID")
		do ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(currId, 1)
		set kopf = ##class(DBAgrofresh.Auftragskopf).%OpenId(currId)
		set kopf.StatusAutoVerarbeitung = ##class(DBAgrofresh.Konst).StatusAutoLaufFreigabeRG()
		d kopf.%Save()
		do ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(currId, 0)
	}
    if ($$$ISERR(sc)) {
		w "DBAgrofresh.Auftragskopf.SetFreigabeRG - Fehler bei SQL-Statement für Reset",strSQL,!
	}
]]></Implementation>
</Method>

<Method name="CalcAbzugMwstBetragFromInkl">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,mwstSatz:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,(betrag / (100+mwstSatz) * mwstSatz))

	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzugMwstBetragFromExkl">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,mwstSatz:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,(betrag / 100 * mwstSatz))

	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzugMwstBetragFromExklFW">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,mwstSatz:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	set retval = ##class(DBUtils.NumberUtils).Round(betrag / 100 * mwstSatz,2)

	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzugMwstBetragFromInklFW">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,mwstSatz:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	set retval = ##class(DBUtils.NumberUtils).Round((betrag / (100+mwstSatz) * mwstSatz), 2)

	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzug1Betrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,abzugProzent1:%Decimal,abzug1Typ:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	if ((abzug1Typ =##class(DBAgrofresh.Konst).AbzugNettoProzent()) || (abzug1Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent())) {
		Set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,(betrag * abzugProzent1 / 100))
	} 
	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzug1BetragFW">
<ClassMethod>1</ClassMethod>
<FormalSpec>betrag:%Decimal,abzugProzent1:%Decimal,abzug1Typ:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	if ((abzug1Typ =##class(DBAgrofresh.Konst).AbzugNettoProzent()) || (abzug1Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent())) {
		Set retval = ##class(DBUtils.NumberUtils).Round((betrag * abzugProzent1 / 100), 2)
	} 
	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzug2Betrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,abzugProzent1:%Decimal,abzugProzent2:%Decimal,abzug1Typ:%Integer,abzug2Typ:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	if (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) {
		Set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag) * abzugProzent1 / 100 * -1))
		Set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag+retval) * abzugProzent2 / 100))
		
	} elseif (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent()) {
		Set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag) * abzugProzent2 / 100))
	}
	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzug2BetragFW">
<ClassMethod>1</ClassMethod>
<FormalSpec>betrag:%Decimal,abzugProzent1:%Decimal,abzugProzent2:%Decimal,abzug1Typ:%Integer,abzug2Typ:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	if (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) {
		Set retval = retval + ##class(DBUtils.NumberUtils).Round(((betrag) * abzugProzent1 / 100 * -1), 2)
		Set retval = ##class(DBUtils.NumberUtils).Round(((betrag+retval) * abzugProzent2 / 100), 2)
		
	} elseif (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent()) {
		Set retval = ##class(DBUtils.NumberUtils).Round(((betrag) * abzugProzent2 / 100), 2)
	}
	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzug3Betrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,betrag:%Decimal,abzugProzent1:%Decimal,abzugProzent2:%Decimal,abzugProzent3:%Decimal,abzug1Typ:%Integer,abzug2Typ:%Integer,abzug3Typ:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	if (abzug3Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) {
		if ((abzug1Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) || (abzug1Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent())) {
			Set retval = retval + ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag) * abzugProzent1 / 100 * -1))
		} 
		if (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) {
			Set retval = retval + ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag+retval) * abzugProzent2 / 100 * -1))
		} elseif (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent()) {
			Set retval = retval + ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag) * abzugProzent2 / 100 * -1))
		}
	
		Set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag+retval) * abzugProzent3 / 100))
		
	} elseif (abzug3Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent()) {
		Set retval = ##class(DBUtils.NumberUtils).RoundGemEinst(mandantOid,((betrag) * abzugProzent3 / 100))
	}
	quit retval
]]></Implementation>
</Method>

<Method name="CalcAbzug3BetragFW">
<ClassMethod>1</ClassMethod>
<FormalSpec>betrag:%Decimal,abzugProzent1:%Decimal,abzugProzent2:%Decimal,abzugProzent3:%Decimal,abzug1Typ:%Integer,abzug2Typ:%Integer,abzug3Typ:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	Set retval = 0
	
	if (abzug3Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) {
	
		if ((abzug1Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) || (abzug1Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent())) {
			Set retval = retval + ##class(DBUtils.NumberUtils).Round(((betrag) * abzugProzent1 / 100 * -1), 2)
		} 
		if (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugNettoProzent()) {
			Set retval = retval + ##class(DBUtils.NumberUtils).Round(((betrag+retval) * abzugProzent2 / 100 * -1), 2)
		} elseif (abzug2Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent()) {
			Set retval = retval + ##class(DBUtils.NumberUtils).Round(((betrag) * abzugProzent2 / 100 * -1), 2)
		}
		Set retval = ##class(DBUtils.NumberUtils).Round(((betrag+retval) * abzugProzent3 / 100), 2)
		
	} elseif (abzug3Typ = ##class(DBAgrofresh.Konst).AbzugBruttoProzent()) {
		Set retval = ##class(DBUtils.NumberUtils).Round(((betrag) * abzugProzent3 / 100), 2)
	}
	quit retval
]]></Implementation>
</Method>

<Method name="UpdateLsDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>auftragOid:%String,newDatum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set glbBevor = $GET(^AufDetStopTrg(auftragOid))
	Set ^AufDetStopTrg(auftragOid) = 1
	
	set strSQL = "Select ID FROM DBAgrofresh.Auftragspos "
	set strSQL = strSQL_"WHERE Auftragskopf = "_auftragOid_" AND not Lieferdatum = TO_DATE("_newDatum_")"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
	while (rs.Next()) {
		set detId = rs.Data("ID")
		set chargenId = ""
		
		if (detId '= "") {
			set pos = ##class(DBAgrofresh.Auftragspos).%OpenId(detId)
			set pos.Lieferdatum = newDatum
			if ((pos.Charge '= "") && (pos.Charge '= $c(0))) {
				set chargenId = pos.Charge.%Id()
			}
			set state = pos.%Save()
			k pos
		}
		if ((chargenId '= "") && (chargenId '= $c(0))) {
			set charge = ##class(DBAgrofreshEK.ChargenAusgang).%OpenId(chargenId)
			set charge.AusgangsDatum = newDatum
			set state = charge.%Save()
			k charge
		}
	}
	if (glbBevor = "") {
		Kill ^AufDetStopTrg(auftragOid)
	}
	Quit 1
]]></Implementation>
</Method>

<Method name="GenerateInvoice">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragskopfOid:%String,IsGutschrift:%Boolean,HeaderSenderId:%String,HeaderRecipientId:%String,ESR:%String,Test:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set ClassName = "Alliance.Agris.Logic.InvoiceGenerator"
    set ClassmethodName = "Generate"
    quit $CLASSMETHOD(ClassName, ClassmethodName, AuftragskopfOid, IsGutschrift, HeaderSenderId, HeaderRecipientId, ESR, Test)
]]></Implementation>
</Method>

<Method name="GetMaxRechnungsdatumByJnr">
<ClassMethod>1</ClassMethod>
<FormalSpec>mandantOid:%String,journalnummer:%Integer</FormalSpec>
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[
	set datum = 0
	&sql(SELECT MAX(Rechnungsdatum) INTO :datum FROM DBAgrofresh.Auftragskopf WHERE Mandant=:mandantOid AND VerbuchungsjournalNr=:journalnummer)
	if (SQLCODE = 0) {
		quit datum
	} else {
		quit ""
	}
]]></Implementation>
</Method>

<Method name="GetTotalOhneGebindeByRgNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>RgNr:%Integer,MandantOid:%String,AbzugBisArtGr:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
    set betrag = 0
    
    Set rs = ##class(%Library.ResultSet).%New("DBAgrofresh.AF.AuftragsKopfAF.ListeMwstCodesSammelrechnung")
    Set sc=rs.Execute(RgNr,MandantOid,"de", AbzugBisArtGr)
    
    if ($$$ISOK(sc)) {
		while (rs.Next(.sc)) {
			set betrag = (betrag + rs.Data("MwstBetrag") + rs.Data("MwstBetragExkl"))
		}
    }
    
    Quit ##class(DBUtils.NumberUtils).RoundGemEinst(MandantOid,betrag)
]]></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).FormNrAgrofreshAuftrag()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(AuftragsNr) into :nr FROM DBAgrofresh.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(DBAgrofresh.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).FormNrAgrofreshLieferung()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(LieferscheinNr) into :nr FROM DBAgrofresh.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(DBAgrofresh.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).FormNrAgrofreshRechnung()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(RechnungsNr) into :nr FROM DBAgrofresh.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(DBAgrofresh.Auftragskopf).GetIdByRechnungsNr(MandantOid, nr) '= "") {
		SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	}
	Quit nr
]]></Implementation>
</Method>

<Method name="GetNextVerteillNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	set typ = ##class(DBCore.FormularNr).FormNrAgrofreshVerteilliste()
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^FormularNr(MandantOid, typ)) = "") {
		&sql(SELECT MAX(VerteillisteNr) into :nr FROM DBAgrofresh.Auftragskopf WHERE Mandant = :MandantOid)
		if (SQLCODE = 0) {
			SET ^FormularNr(MandantOid, typ) = nr	
		}
	}
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	Quit nr
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.AuftragskopfD</DataLocation>
<DefaultData>AuftragskopfDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.AuftragskopfD</IdLocation>
<IndexLocation>^DBAgrofresh.AuftragskopfI</IndexLocation>
<StreamLocation>^DBAgrofresh.AuftragskopfS</StreamLocation>
<Data name="AuftragskopfDefaultData">
<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>CodeVerarbeitung</Value>
</Value>
<Value name="11">
<Value>CodeMwst</Value>
</Value>
<Value name="12">
<Value>Besteller</Value>
</Value>
<Value name="13">
<Value>Referenz</Value>
</Value>
<Value name="14">
<Value>BestellNr</Value>
</Value>
<Value name="15">
<Value>Fusstext1</Value>
</Value>
<Value name="16">
<Value>Fusstext2</Value>
</Value>
<Value name="17">
<Value>Fusstext3</Value>
</Value>
<Value name="18">
<Value>Fusstext4</Value>
</Value>
<Value name="19">
<Value>Anrede</Value>
</Value>
<Value name="20">
<Value>Name</Value>
</Value>
<Value name="21">
<Value>Adresszeile1</Value>
</Value>
<Value name="22">
<Value>Adresszeile2</Value>
</Value>
<Value name="23">
<Value>Adresszeile3</Value>
</Value>
<Value name="24">
<Value>Plz</Value>
</Value>
<Value name="25">
<Value>PlzZusatz</Value>
</Value>
<Value name="26">
<Value>Ort</Value>
</Value>
<Value name="27">
<Value>StatusOfferte</Value>
</Value>
<Value name="28">
<Value>StatusAuftragsbestaetigung</Value>
</Value>
<Value name="29">
<Value>StatusLieferschein</Value>
</Value>
<Value name="30">
<Value>StatusRuestzettel</Value>
</Value>
<Value name="31">
<Value>StatusRechnung</Value>
</Value>
<Value name="32">
<Value>StatusBarzahlung</Value>
</Value>
<Value name="33">
<Value>StatusMahnung</Value>
</Value>
<Value name="34">
<Value>RabattProzent</Value>
</Value>
<Value name="35">
<Value>Kurs</Value>
</Value>
<Value name="36">
<Value>Kurseinheit</Value>
</Value>
<Value name="37">
<Value>BetragFW</Value>
</Value>
<Value name="38">
<Value>BetragEWInklMwst</Value>
</Value>
<Value name="39">
<Value>BetragMwst</Value>
</Value>
<Value name="40">
<Value>BetragEWExklMwst</Value>
</Value>
<Value name="41">
<Value>MwstSatz1</Value>
</Value>
<Value name="42">
<Value>MwstBetrag1</Value>
</Value>
<Value name="43">
<Value>MwstBetragExkl1</Value>
</Value>
<Value name="44">
<Value>MwstSatz2</Value>
</Value>
<Value name="45">
<Value>MwstBetrag2</Value>
</Value>
<Value name="46">
<Value>MwstBetragExkl2</Value>
</Value>
<Value name="47">
<Value>MwstSatz3</Value>
</Value>
<Value name="48">
<Value>MwstBetrag3</Value>
</Value>
<Value name="49">
<Value>MwstBetragExkl3</Value>
</Value>
<Value name="50">
<Value>MwstSatz4</Value>
</Value>
<Value name="51">
<Value>MwstBetrag4</Value>
</Value>
<Value name="52">
<Value>MwstBetragExkl4</Value>
</Value>
<Value name="53">
<Value>WIRAnteil</Value>
</Value>
<Value name="54">
<Value>Warenaufwand</Value>
</Value>
<Value name="55">
<Value>Lieferzeit</Value>
</Value>
<Value name="56">
<Value>RetourenErfasst</Value>
</Value>
<Value name="57">
<Value>AuftragValidiert</Value>
</Value>
<Value name="58">
<Value>GebindeSaldo</Value>
</Value>
<Value name="59">
<Value>VerteillisteNr</Value>
</Value>
<Value name="61">
<Value>SkontoBetrag1</Value>
</Value>
<Value name="62">
<Value>MwstSkonto1</Value>
</Value>
<Value name="63">
<Value>SkontoBetrag2</Value>
</Value>
<Value name="64">
<Value>MwstSkonto2</Value>
</Value>
<Value name="65">
<Value>SkontoBetrag3</Value>
</Value>
<Value name="66">
<Value>MwstSkonto3</Value>
</Value>
<Value name="67">
<Value>SkontoBetrag4</Value>
</Value>
<Value name="68">
<Value>MwstSkonto4</Value>
</Value>
<Value name="69">
<Value>Skonto</Value>
</Value>
<Value name="70">
<Value>GewichtNetto</Value>
</Value>
<Value name="71">
<Value>GewichtTara</Value>
</Value>
<Value name="72">
<Value>GewichtBrutto</Value>
</Value>
<Value name="73">
<Value>Zahlungskondition</Value>
</Value>
<Value name="74">
<Value>Lieferart</Value>
</Value>
<Value name="75">
<Value>Bestellart</Value>
</Value>
<Value name="76">
<Value>SachbearbeiterNr</Value>
</Value>
<Value name="77">
<Value>SachbearbeiterBenutzername</Value>
</Value>
<Value name="78">
<Value>SachbearbeiterVorname</Value>
</Value>
<Value name="79">
<Value>SachbearbeiterName</Value>
</Value>
<Value name="80">
<Value>VertreterNr</Value>
</Value>
<Value name="81">
<Value>VertreterBenutzername</Value>
</Value>
<Value name="82">
<Value>VertreterVorname</Value>
</Value>
<Value name="83">
<Value>VertreterName</Value>
</Value>
<Value name="84">
<Value>Fusstext</Value>
</Value>
<Value name="85">
<Value>Adresse</Value>
</Value>
<Value name="86">
<Value>ZahlAdresse</Value>
</Value>
<Value name="87">
<Value>Waehrung</Value>
</Value>
<Value name="88">
<Value>Mwst1</Value>
</Value>
<Value name="89">
<Value>Mwst2</Value>
</Value>
<Value name="90">
<Value>Mwst3</Value>
</Value>
<Value name="91">
<Value>Mwst4</Value>
</Value>
<Value name="92">
<Value>Vertreter</Value>
</Value>
<Value name="93">
<Value>Gebietscode</Value>
</Value>
<Value name="94">
<Value>BearbeitungsstatusOF</Value>
</Value>
<Value name="95">
<Value>BearbeitungsstatusAU</Value>
</Value>
<Value name="96">
<Value>BearbeitungsstatusRZ</Value>
</Value>
<Value name="97">
<Value>BearbeitungsstatusLS</Value>
</Value>
<Value name="98">
<Value>BearbeitungsstatusRG</Value>
</Value>
<Value name="99">
<Value>BearbeitungsstatusBZ</Value>
</Value>
<Value name="100">
<Value>GebindeVerrechnungAktiv</Value>
</Value>
<Value name="101">
<Value>Verbucht</Value>
</Value>
<Value name="102">
<Value>VerbuchungsjournalNr</Value>
</Value>
<Value name="103">
<Value>OP</Value>
</Value>
<Value name="104">
<Value>SkontoFW</Value>
</Value>
<Value name="105">
<Value>Abteilung</Value>
</Value>
<Value name="106">
<Value>Mandant</Value>
</Value>
<Value name="107">
<Value>Abzug1Typ</Value>
</Value>
<Value name="108">
<Value>Abzug1Prozent</Value>
</Value>
<Value name="109">
<Value>Abzug1Text</Value>
</Value>
<Value name="110">
<Value>Abzug2Typ</Value>
</Value>
<Value name="111">
<Value>Abzug2Prozent</Value>
</Value>
<Value name="112">
<Value>Abzug2Text</Value>
</Value>
<Value name="113">
<Value>Abzug3Typ</Value>
</Value>
<Value name="114">
<Value>Abzug3Prozent</Value>
</Value>
<Value name="115">
<Value>Abzug3Text</Value>
</Value>
<Value name="116">
<Value>Abzug1FibuKonto</Value>
</Value>
<Value name="117">
<Value>Abzug2FibuKonto</Value>
</Value>
<Value name="118">
<Value>Abzug3FibuKonto</Value>
</Value>
<Value name="119">
<Value>Lagerort</Value>
</Value>
<Value name="120">
<Value>GebindeVerrechnung</Value>
</Value>
<Value name="121">
<Value>Abzug1Bio</Value>
</Value>
<Value name="122">
<Value>Abzug2Bio</Value>
</Value>
<Value name="123">
<Value>Abzug3Bio</Value>
</Value>
<Value name="124">
<Value>InEdit</Value>
</Value>
<Value name="125">
<Value>LieferscheinPDF</Value>
</Value>
<Value name="126">
<Value>GebindescheinPDF</Value>
</Value>
<Value name="127">
<Value>FehlmengenPDF</Value>
</Value>
<Value name="128">
<Value>Mitarbeiter</Value>
</Value>
<Value name="129">
<Value>IsHauptlieferung</Value>
</Value>
<Value name="130">
<Value>TeillieferungNr</Value>
</Value>
<Value name="131">
<Value>HauptlieferungNr</Value>
</Value>
<Value name="132">
<Value>IsStorno</Value>
</Value>
<Value name="133">
<Value>Abzug1MwstCode</Value>
</Value>
<Value name="134">
<Value>Abzug1MwstSatz</Value>
</Value>
<Value name="135">
<Value>Abzug1MwstSatzExport</Value>
</Value>
<Value name="136">
<Value>Abzug2MwstCode</Value>
</Value>
<Value name="137">
<Value>Abzug2MwstSatz</Value>
</Value>
<Value name="138">
<Value>Abzug2MwstSatzExport</Value>
</Value>
<Value name="139">
<Value>Abzug3MwstCode</Value>
</Value>
<Value name="140">
<Value>Abzug3MwstSatz</Value>
</Value>
<Value name="141">
<Value>Abzug3MwstSatzExport</Value>
</Value>
<Value name="142">
<Value>Abzug1Mwst</Value>
</Value>
<Value name="143">
<Value>Abzug2Mwst</Value>
</Value>
<Value name="144">
<Value>Abzug3Mwst</Value>
</Value>
<Value name="145">
<Value>InvoiceId</Value>
</Value>
<Value name="146">
<Value>KassenBon</Value>
</Value>
<Value name="147">
<Value>Ruestdatum</Value>
</Value>
<Value name="148">
<Value>Sachbearbeiter</Value>
</Value>
</Data>
<Data name="MwstBetrag">
<Attribute>MwstBetrag</Attribute>
<Structure>subnode</Structure>
<Subscript>"MwstBetrag"</Subscript>
</Data>
<Data name="MwstBetragExkl">
<Attribute>MwstBetragExkl</Attribute>
<Structure>subnode</Structure>
<Subscript>"MwstBetragExkl"</Subscript>
</Data>
<Data name="MwstSatz">
<Attribute>MwstSatz</Attribute>
<Structure>subnode</Structure>
<Subscript>"MwstSatz"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abteilung">
</Property>
<Property name="Abzug1Bio">
</Property>
<Property name="Abzug1FibuKonto">
</Property>
<Property name="Abzug1Mwst">
</Property>
<Property name="Abzug1MwstSatz">
</Property>
<Property name="Abzug1MwstSatzExport">
</Property>
<Property name="Abzug1Prozent">
</Property>
<Property name="Abzug1Text">
</Property>
<Property name="Abzug1Typ">
</Property>
<Property name="Abzug2Bio">
</Property>
<Property name="Abzug2FibuKonto">
</Property>
<Property name="Abzug2Mwst">
</Property>
<Property name="Abzug2MwstSatz">
</Property>
<Property name="Abzug2MwstSatzExport">
</Property>
<Property name="Abzug2Prozent">
</Property>
<Property name="Abzug2Text">
</Property>
<Property name="Abzug2Typ">
</Property>
<Property name="Abzug3Bio">
</Property>
<Property name="Abzug3FibuKonto">
</Property>
<Property name="Abzug3Mwst">
</Property>
<Property name="Abzug3MwstSatz">
</Property>
<Property name="Abzug3MwstSatzExport">
</Property>
<Property name="Abzug3Prozent">
</Property>
<Property name="Abzug3Text">
</Property>
<Property name="Abzug3Typ">
</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="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="BetragAbzug1EWExkl">
</Property>
<Property name="BetragAbzug1EWInkl">
</Property>
<Property name="BetragAbzug1EWMwst">
</Property>
<Property name="BetragAbzug1FWExkl">
</Property>
<Property name="BetragAbzug1FWInkl">
</Property>
<Property name="BetragAbzug1FWMwst">
</Property>
<Property name="BetragAbzug2EWExkl">
</Property>
<Property name="BetragAbzug2EWInkl">
</Property>
<Property name="BetragAbzug2EWMwst">
</Property>
<Property name="BetragAbzug2FWExkl">
</Property>
<Property name="BetragAbzug2FWInkl">
</Property>
<Property name="BetragAbzug2FWMwst">
</Property>
<Property name="BetragAbzug3EWExkl">
</Property>
<Property name="BetragAbzug3EWInkl">
</Property>
<Property name="BetragAbzug3EWMwst">
</Property>
<Property name="BetragAbzug3FWExkl">
</Property>
<Property name="BetragAbzug3FWInkl">
</Property>
<Property name="BetragAbzug3FWMwst">
</Property>
<Property name="BetragEWExklMwst">
</Property>
<Property name="BetragEWInklMwst">
</Property>
<Property name="BetragFW"/>
<Property name="BetragFWExklMwst">
</Property>
<Property name="BetragFWInklMwst">
</Property>
<Property name="BetragForAbzugEWExklMwst">
</Property>
<Property name="BetragForAbzugEWInklMwst">
</Property>
<Property name="BetragForAbzugFWExklMwst">
</Property>
<Property name="BetragForAbzugFWInklMwst">
</Property>
<Property name="BetragForAbzugFWMwst">
</Property>
<Property name="BetragForAbzugMwst">
</Property>
<Property name="BetragMwst">
</Property>
<Property name="BetragMwstFW">
</Property>
<Property name="BruttoGewinn">
</Property>
<Property name="CodeMwst">
</Property>
<Property name="CodeVerarbeitung"/>
<Property name="FehlmengenPDF">
</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>
<Property name="GebindeMwstBetragFW">
</Property>
<Property name="GebindeSaldo">
</Property>
<Property name="GebindeSaldoFW">
</Property>
<Property name="GebindeVerrechnung">
</Property>
<Property name="GebindeVerrechnungAktiv">
</Property>
<Property name="GebindescheinPDF">
</Property>
<Property name="GewichtBrutto">
</Property>
<Property name="GewichtNetto">
</Property>
<Property name="GewichtTara">
</Property>
<Property name="HauptlieferungNr">
</Property>
<Property name="InEdit">
</Property>
<Property name="InvoiceId">
</Property>
<Property name="IsHauptlieferung">
</Property>
<Property name="IsStorno">
</Property>
<Property name="KassenBon">
</Property>
<Property name="Kurs">
</Property>
<Property name="Kurseinheit">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Lieferart">
</Property>
<Property name="Lieferdatum">
</Property>
<Property name="LieferscheinNr">
</Property>
<Property name="LieferscheinPDF">
</Property>
<Property name="Lieferzeit">
</Property>
<Property name="Mandant">
</Property>
<Property name="Mitarbeiter">
</Property>
<Property name="Mwst1"/>
<Property name="Mwst2"/>
<Property name="Mwst3"/>
<Property name="Mwst4"/>
<Property name="MwstSkonto1"/>
<Property name="MwstSkonto2"/>
<Property name="MwstSkonto3"/>
<Property name="MwstSkonto4"/>
<Property name="Name">
</Property>
<Property name="OP">
</Property>
<Property name="Ort">
</Property>
<Property name="Plz">
</Property>
<Property name="PlzZusatz">
</Property>
<Property name="RabattProzent">
</Property>
<Property name="RechnungsNr">
</Property>
<Property name="Rechnungsdatum">
</Property>
<Property name="Referenz">
</Property>
<Property name="RetourenErfasst">
</Property>
<Property name="Ruestdatum">
</Property>
<Property name="Sachbearbeiter">
</Property>
<Property name="SachbearbeiterBenutzername"/>
<Property name="SachbearbeiterName"/>
<Property name="SachbearbeiterNr">
</Property>
<Property name="SachbearbeiterVorname"/>
<Property name="Skonto">
</Property>
<Property name="SkontoBetrag1"/>
<Property name="SkontoBetrag2"/>
<Property name="SkontoBetrag3"/>
<Property name="SkontoBetrag4"/>
<Property name="SkontoFW">
</Property>
<Property name="StatusAutoVerarbeitung">
</Property>
<Property name="TeillieferungNr">
</Property>
<Property name="TotalMitGebMitAbzug">
</Property>
<Property name="TotalMitGebMitAbzugFW">
</Property>
<Property name="TotalMitGebinde">
</Property>
<Property name="TotalMitGebindeFW">
</Property>
<Property name="TotalOhneGebMitAbzugExkl">
</Property>
<Property name="TotalOhneGebMitAbzugFWExkl">
</Property>
<Property name="TotalOhneGebMitAbzugFWInkl">
</Property>
<Property name="TotalOhneGebMitAbzugInkl">
</Property>
<Property name="Verbucht">
</Property>
<Property name="VerbuchungsjournalNr">
</Property>
<Property name="VerteillisteNr">
</Property>
<Property name="Vertreter">
</Property>
<Property name="WIRAnteil"/>
<Property name="Waehrung">
</Property>
<Property name="Warenaufwand">
</Property>
<Property name="WarenaufwandProv"/>
<Property name="ZahlAdresse">
</Property>
<Property name="Zahlungskondition">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.Auftragspos">
<Super>%Persistent,%Populate,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61339,60450.156386</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="AnzahlGebinde">
<Description>
Anzahl Gebinde</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnzahlGedruckteGebinde">
<Description>
Anzahl gedruckte Gebinde</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="AnzahlHauptGebinde">
<Description>
Anzahl Hauptgebinde</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="BestellteGebinde">
<Description>
Anzahl bestellte Gebinde</Description>
<Type>%Integer</Type>
</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="DetailPreis">
<Description>
DetailPreis</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="GrammJeEinheit">
<Description>
Gramm je Einheit</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GrammJeLaufmeter">
<Description>
Gramm je Laufmeter</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Auftragskopf">
<Type>DBAgrofresh.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>DBAgrofresh.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>DBAgrofresh.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>DBAgrofresh.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="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragspositionGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebindeIndex">
<Properties>Gebinde</Properties>
</Index>

<Property name="HauptGebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragspositionHauptGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="HauptGebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="HauptGebindeIndex">
<Properties>HauptGebinde</Properties>
</Index>

<Property name="Mwst">
<Type>DBFibu.SD.Mwst</Type>
<Cardinality>one</Cardinality>
<Inverse>AuftragspositionMwst</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>AuftragspositionMwstExport</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>DBAgrofresh.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>AgrofreshDetail</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>AuftragspositionLieferant</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>DBAgrofresh.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>DBAgrofresh.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>DBAgrofresh.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="Produktionsart">
<Type>DBAgrofresh.SD.Produktionsart</Type>
<Cardinality>one</Cardinality>
<Inverse>ADetProdart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Produktionsart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ProduktionsartIndex">
<Properties>Produktionsart</Properties>
</Index>

<Property name="Charge">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>one</Cardinality>
<Inverse>APChargenAusgang</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Charge"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ChargeIndex">
<Properties>Charge</Properties>
</Index>

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

<Index name="Arlrab1MwstbetragEWIndex">
<Description>
Index für Artikelrabatt1MwstbetragEW</Description>
<Properties>Artikelrabatt1MwstbetragEW</Properties>
</Index>

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

<Index name="Nettobetrag1ExklMwstEWIndex">
<Description>
Index für Artikelrabatt1MwstbetragEW</Description>
<Properties>Nettobetrag1ExklMwstEW</Properties>
</Index>

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

<Index name="Nettobetrag1InklMwstEWIndex">
<Description>
Index für Artikelrabatt1MwstbetragEW</Description>
<Properties>Nettobetrag1InklMwstEW</Properties>
</Index>

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

<Index name="Nettobetrag1MwstbetragEWIndex">
<Description>
Index für Nettobetrag1MwstbetragEW</Description>
<Properties>Nettobetrag1MwstbetragEW</Properties>
</Index>

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

<Index name="Artikelrabatt2MwstbetragEWIndex">
<Description>
Index für Artikelrabatt2MwstbetragEW</Description>
<Properties>Artikelrabatt2MwstbetragEW</Properties>
</Index>

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

<Index name="Nettobetrag2ExklMwstEWIndex">
<Description>
Index für Nettobetrag2ExklMwstEW</Description>
<Properties>Nettobetrag2ExklMwstEW</Properties>
</Index>

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

<Index name="Nettobetrag2InklMwstEWIndex">
<Description>
Index für Nettobetrag2InklMwstEW</Description>
<Properties>Nettobetrag2InklMwstEW</Properties>
</Index>

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

<Index name="Nettobetrag2MwstbetragEWIndex">
<Description>
Index für Nettobetrag2InklMwstEW</Description>
<Properties>Nettobetrag2MwstbetragEW</Properties>
</Index>

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

<Index name="Artikelrabatt1MwstbetragFWIndex">
<Description>
Index für Artikelrabatt1MwstbetragFW</Description>
<Properties>Artikelrabatt1MwstbetragFW</Properties>
</Index>

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

<Index name="Nettobetrag1ExklMwstFWIndex">
<Description>
Index für Nettobetrag1ExklMwstFW</Description>
<Properties>Nettobetrag1ExklMwstFW</Properties>
</Index>

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

<Index name="Nettobetrag1InklMwstFWIndex">
<Description>
Index für Nettobetrag1InklMwstFW</Description>
<Properties>Nettobetrag1InklMwstFW</Properties>
</Index>

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

<Index name="Nettobetrag1MwstbetragFWIndex">
<Description>
Index für Nettobetrag1MwstbetragFW</Description>
<Properties>Nettobetrag1MwstbetragFW</Properties>
</Index>

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

<Index name="Artikelrabatt2MwstbetragFWIndex">
<Description>
Index für Artikelrabatt2MwstbetragFW</Description>
<Properties>Artikelrabatt2MwstbetragFW</Properties>
</Index>

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

<Index name="Nettobetrag2ExklMwstFWIndex">
<Description>
Index für Nettobetrag2ExklMwstFW</Description>
<Properties>Nettobetrag2ExklMwstFW</Properties>
</Index>

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

<Index name="Nettobetrag2InklMwstFWIndex">
<Description>
Index für Nettobetrag2InklMwstFW</Description>
<Properties>Nettobetrag2InklMwstFW</Properties>
</Index>

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

<Index name="Nettobetrag2MwstbetragFWIndex">
<Description>
Index für Nettobetrag2MwstbetragFW</Description>
<Properties>Nettobetrag2MwstbetragFW</Properties>
</Index>

<Property name="QsMeldung">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>VkDetailpos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Lagerbewegung">
<Type>DBAgrofresh.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="MargeProzent">
<Description>
Marge in Prozent</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

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

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

<Property name="PlattformAuftragsPos">
<Type>DBPlattform.AuftragsPos</Type>
<Cardinality>many</Cardinality>
<ClientName>PlattformAuftragsPos</ClientName>
<Inverse>DefinitiveAuftragsPos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

<Property name="ZusatzChargenID">
<Description>
ZusatzChargen ID</Description>
<Type>%Integer</Type>
</Property>

<Property name="TransportPos">
<Description>
Transport Dispo, Wieviel von der Auftragsposition mit welchem Fahrzeug geliefert wird</Description>
<Type>DBAgrofresh.TransportPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Auftragspos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="AuftragHasDetails">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID InTo :id FROM DBAgrofresh.Auftragspos
         WHERE  Auftragskopf =:AuftragOid)
	Quit:(SQLCODE'=0) 0
	Quit id '= ""
]]></Implementation>
</Method>

<Method name="AuftragHasArtikel">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID InTo :id FROM DBAgrofresh.Auftragspos
         WHERE  Auftragskopf =:AuftragOid AND Not Artikel='')
	/*Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.Auftragspos "_
	           "WHERE  Auftragskopf ='"_AuftragOid_"' AND Not Artikel = ''"
	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:(SQLCODE'=0) 0
	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 DBAgrofresh.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="VerteillisteHasDetails">
<ClassMethod>1</ClassMethod>
<FormalSpec>VlNr:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.Auftragspos WHERE  Auftragskopf->VerteillisteNr='"_VlNr_"'"
	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="GebindeMutationAllowed">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,GebindeOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set retval = 1
	Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE  Auftragskopf ='"_AuftragOid_"'"_
				" AND Gebinde = '"_GebindeOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		If (rs.Next(.sc)) {
			//Datensatz gefunden -> Gebinde öffnen und schauen, ob Manuelle Mutation erlaubt ist
			set geb = ##class(DBAgrofresh.SD.Gebinde).%OpenId(GebindeOid)
			if (geb '= "") {
				set retval = '(geb.ManuelleGebindemutSperren)
			} 
			
		}
	}
	Quit retval
]]></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 DBAgrofresh.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 DBAgrofresh.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="GetOidByAuftragArtikelClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,Artikel:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.Auftragspos
	     WHERE Auftragskopf = :AuftragOid AND Artikel = :Artikel)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></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 DBAgrofresh.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 st = 1
	Set strSQL="SELECT ID FROM DBAgrofresh.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")
			//Bei Nachbestellung muss Charge gelöst werden und nicht gelöscht
			set pos = ##class(DBAgrofresh.Auftragspos).%OpenId(id)
			if (pos.Auftragskopf.TeillieferungNr > 0) {
				set pos.Charge = ""
				d pos.%Save()
			}
			set pos = ""
			kill pos
			
			set state = ##class(DBAgrofresh.Auftragspos).%DeleteId(id)		
			set st = $$$ISOK(st)
			if (st = 0) {
				Quit	
			}
		}
	}
	Quit st
	//Set strSQL="DELETE FROM DBAgrofresh.Auftragspos 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="UpdateLieferdatumByAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,NewDatum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set sqlDate = $ZDate(NewDatum,3)
	Set strSQL="UPDATE DBAgrofresh.Auftragspos (Lieferdatum) VALUES ({d '"_sqlDate_"'}) WHERE  Auftragskopf ='"_AuftragOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	Set strSQL="UPDATE DBAgrofresh.GebDetail (Datum) VALUES ({d '"_sqlDate_"'}) WHERE  Auftrag ='"_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,ZusatzNr:%Integer,ZusatzChargenID:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set check = 0	
	Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE  Auftragskopf ="_AuftragOid_" AND PositionsNr = "_PosNr_
			" AND ("_ZusatzNr_" = 0 OR NVL(ZusatztextID,0) = "_ZusatzNr_") AND NVL(ZusatzChargenID,0)="_ZusatzChargenID
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		while (rs.Next(.sc)) {
			set status = ##class(DBAgrofresh.Auftragspos).%DeleteId(rs.Data("ID"))
			set check = $$$ISOK(status)
		}
	}
	
	Quit check
]]></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",!
	
	// Gebinde Nachführen
	set anzahlGeb = 0
	set auftragId = ""
	set gebId = ""
	
	Set strSQL="SELECT  AnzahlGebinde, Auftragskopf->ID AS auftragId, Gebinde->ID as gebId FROM DBAgrofresh.Auftragspos WHERE ID='"_myId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		if rs.Next(.sc) {
			Set auftragId=rs.Data("auftragId")
			Set anzahlGeb=rs.Data("AnzahlGebinde")
			Set gebId=rs.Data("gebId")
		}
	}
	
	if ((gebId '= "") && (auftragId '= "") && (gebId '= "0") && (auftragId '= "0")) {
		do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(gebId, auftragId, anzahlGeb, 1)
	}
	
	set auftragId = ""
	
	Set strSQL="SELECT Auftragskopf->ID AS auftragId FROM DBAgrofresh.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 ^AufDetOldValues(myId, 4) = auftragId
	
	do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass(auftragId)
	
	d ..CheckForReservation(myId)
	
	set auf = ##class(DBAgrofresh.Auftragspos).%OpenId(myId)
	if ((auf.Charge '= $c(0)) && (auf.Charge '= "")) {
		Set ^ChargenId(myId, 1) = auf.Charge.%Id()
	} else {
		Set ^ChargenId(myId, 1) = ""
	}
	set auf = ""
	KILL auf

	//Lagerbewegungen lösen
	d ##class(DBAgrofresh.Auftragspos).ReleaseLagerBew(myId)
	
	set st = ##class(DBUtils.ClassHelper).DeleteManyRelations("DBAgrofresh.Auftragspos", myId)
	
	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 chargenId = $Get(^ChargenId(myId, 1))
	d ..DeleteChargen(chargenId)
	
	KILL ^ChargenId(myId,1)
	
	Set auftragId = $Get(^AufDetOldValues(myId, 4))
	
	Set ^AufDetStopTrg(auftragId) = 1
	
	Set status = ##class(DBAgrofresh.Auftragspos).RecalcRabattTotal(auftragId)
	if ($$$ISERR(status)) {
		w "DBAgrofresh.Auftragspos.%OnDelete - Fehler bei RabattTotal-Berechnung",!
		w status,!
	}
	
	Set status = ##class(DBAgrofresh.Auftragspos).RecalcMwst(auftragId)
	if ($$$ISERR(status)) {
		w "DBAgrofresh.Auftragspos.%OnDelete - Fehler bei RecalcMwst",!
		w status,!
	}
	
	Kill ^AufDetStopTrg(auftragId)
	Kill ^AufDetOldValues(myId,4)
	
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="CheckForReservation">
<ClassMethod>1</ClassMethod>
<FormalSpec>myId:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set detPos = ##class(DBAgrofresh.Auftragspos).%OpenId(myId)
	
	if (+detPos.Lagerstatus = ##class(DBAgrofresh.Konst).LagerstatusReserviert()) {
		if (detPos.Artikel '= $$$NULLOREF) {
			if (detPos.Artikel.LagerAktiv = 1) {
				set lagerOid = ""
				if (detPos.Lagerort '= $$$NULLOREF) {
					set lagerOid = detPos.Lagerort.%Id()
				}
				d ##class(DBAgrofresh.ArtikelLager).AddLager(detPos.Artikel.Mandant, detPos.Artikel.%Id(),lagerOid,(-1) * +detPos.AnzahlGebinde, (-1) * +detPos.Menge, 0, 1, 0)
			}
		}
	} 
	k detPos
]]></Implementation>
</Method>

<Method name="ReleaseLagerBew">
<ClassMethod>1</ClassMethod>
<FormalSpec>detailId:%String</FormalSpec>
<Implementation><![CDATA[
	//W "ReleaseLagerBew: "_detailId,!
	Set strSQL="SELECT ID FROM DBAgrofresh.LagerBew WHERE Auftragsdet = '"_detailId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF $$$ISOK(sc) {
		While rs.Next(.sc) {
			Set lbId = rs.Data("ID")
			Set bew = ##class(DBAgrofresh.Lagerbew).%OpenId(lbId)
			Set bew.Auftragsdet = ""
			w bew.%Save()
			KILL 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(DBAgrofresh.Auftragspos).%OpenId(##class(DBAgrofresh.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="%OnBeforeSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	If (($GET(^AufDetStopTrg(..Auftragskopf.%Id()))="")&& ('Insert)) {
		//w "DBAgrofresh.Auftragspos.%OnBeforeSave",!
		set myId = ..%Id()
		set anzahlGeb = 0
		set auftragId = 0
		set gebId = 0
	
		Set strSQL="SELECT  AnzahlGebinde, Auftragskopf->ID AS auftragId, Gebinde->Id as GebindeId FROM DBAgrofresh.Auftragspos WHERE ID='"_myId_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		IF $$$ISOK(sc) {
			if rs.Next(.sc) {
				Set auftragId=rs.Data("auftragId")
				Set anzahlGeb=rs.Data("AnzahlGebinde")
				Set gebId=rs.Data("GebindeId")
			}
		}
		//w " %OnBeforeSave mit ", anzahlGeb, " Gebinde von Oid ", gebId,!
		//Lock ^AufDetOldValues(myId,1)
		//Lock ^AufDetOldValues(myId,2)
		//Lock ^AufDetOldValues(myId,3)
	
	
		Set ^AufDetOldValues(myId, 1) = anzahlGeb
		Set ^AufDetOldValues(myId, 2) = auftragId
		Set ^AufDetOldValues(myId, 3) = gebId
	}
	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[
	//w "DBAgrofresh.Auftragspos.%OnAfterSave",$GET(^AufDetStopTrg(..Auftragskopf.%Id())),!
	If ($GET(^AufDetStopTrg(..Auftragskopf.%Id()))="") {
		//w "DBAgrofresh.Auftragspos.%OnAfterSave2",!
	
		Set ^AufDetStopTrg(..Auftragskopf.%Id()) = 1
	
		set detId = ..%Id()
	
		If ('Insert) {
		
			Set anzahlGeb = $Get(^AufDetOldValues(detId, 1))
			Set auftragId = $Get(^AufDetOldValues(detId, 2))
			Set gebId = $Get(^AufDetOldValues(detId, 3))
			
			//Lock -^AufDetOldValues(detId,1)
			//Lock -^AufDetOldValues(detId,2)
			//Lock -^AufDetOldValues(detId,3)
		
			if (auftragId '= "") && (gebId '= "") {
				do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(gebId, auftragId, anzahlGeb, 1)
			}
		}
		if (..Gebinde '= "") {
			do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(..Gebinde.%Id(), ..Auftragskopf.%Id(), ..AnzahlGebinde, 0)
		}
		do ..Auftragskopf.SetBStatusMutiert()
	
		//KILL ^AufDetOldValues(detId)
	
		Set status = ##class(DBAgrofresh.Auftragspos).RecalcRabattTotal(..Auftragskopf.%Id())
		if ($$$ISERR(status)) {
			w "DBAgrofresh.Auftragspos.%OnAfterSave - Fehler bei RabattTotal-Berechnung",!
			w status,!
		}
		
		Set status = ##class(DBAgrofresh.Auftragspos).RecalcMwst(..Auftragskopf.%Id())
		if ($$$ISERR(status)) {
			w "DBAgrofresh.Auftragspos.%OnAfterSave - Fehler bei RecalcMwst-Berechnung",!
			w status,!
		}
		
		Kill ^AufDetStopTrg(..Auftragskopf.%Id())
		Kill ^AufDetOldValues(..%Id(),1)
		Kill ^AufDetOldValues(..%Id(),2)
		Kill ^AufDetOldValues(..%Id(),3)
		
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="RecalcRabattTotal">
<ClassMethod>1</ClassMethod>
<FormalSpec>auftragskopfOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	// Wird falsch korrigiert, da unterscheidung ob Inkl/Exkl nicht gemacht wird.
	// Zudem in meinen Augen überflüssig, da bei Inkl: Exkl + Mwst in RecalcMwst neu berechnet werden
	// und bei exkl umgekehrt. dh 14.10.2010
	//Letze Korrektur zurücksetzen
	//Set strSQL="SELECT ID From DBAgrofresh.Auftragspos WHERE Auftragskopf="_auftragskopfOid_" and KorrekturMwst is not null and KorrekturMwst <> 0"
    //Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    //Do rs.Prepare(strSQL)
    //Set sc=rs.Execute()
    //if ($$$ISERR(sc)) {
	//	w "DBAgrofresh.Auftragspos.RecalcMwst - Fehler bei SQL-Statement für Reset",!
	//}
	//While (rs.Next()) {
	//	 Set posOid = rs.Data("ID")
	//	 set pos = ##class(DBAgrofresh.Auftragspos).%OpenId(posOid)
	//	 if (pos '= "") {
	//		//w "Reset Pos "_posOid,!
	//		Set pos.MwstBetrag = pos.MwstBetrag - pos.KorrekturMwst
	//		Set pos.BetragInklMwst = pos.BetragInklMwst - pos.KorrekturMwst
	//		Set pos.KorrekturMwst = 0
	//		DO pos.%Save()
	//	 }
				
	//}
	
	
    set status = $$$OK
    // sobald jemand im Agrofresh damit arbeitet kann man es von mir aus wieder einkommentieren.
    // Gründe zum auskommentieren:
    // - Machts langsam
    // - verursacht fehler bei Agrofresh zurücksetzen
    // dh 06.05.2011
    /*Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE Auftragskopf="_auftragskopfOid_" ORDER BY PositionsNr DESC"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    if ($$$ISERR(sc)) {
       w "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei SQL-Statement",!
       w sc,!
   }

    Set zwischenRabatt = 0
    Set gesamtRabatt = 0
    Set letzteZeileRabatt = 0
    while (rs.Next()) {
       Set id = rs.Data("ID")
       Set pos = ##class(DBAgrofresh.Auftragspos).%OpenId(id)

       if (pos.Artikelcode = ##class(DBAgrofresh.Konst).AcRabattZwischentotal()) {
           Set zwischenRabatt = pos.RabattProzent
           Set letzteZeileRabatt = 1
           
       } elseif (pos.Artikelcode = ##class(DBAgrofresh.Konst).AcRabattGesamttotal()) {
           Set gesamtRabatt = pos.RabattProzent
           //Set letzteZeileRabatt = 1
           
       } elseif (pos.Artikelcode = ##class(DBAgrofresh.Konst).AcZwischentotalVorRabatt()) {
           
           
       } elseif (pos.Artikelcode = ##class(DBAgrofresh.Konst).AcZwischentotal()) {
           if (letzteZeileRabatt = 0) {
                           Set zwischenRabatt = 0
           } else {
                           Set letzteZeileRabatt = 0
           }
       } elseif (pos.Artikelcode = ##class(DBAgrofresh.Konst).AcGesamttotal()) {
           Set gesamtRabatt = 0
           
       } else {
           set mandOid = pos.Auftragskopf.Mandant
           Set pos.Artikelrabatt1InProzent = zwischenRabatt
           Set pos.Artikelrabatt2InProzent = gesamtRabatt

           Set pos.Artikelrabatt1ExklMwstEW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, pos.BetragExklMwst,pos.Artikelrabatt1InProzent)
           Set pos.Artikelrabatt1InklMwstEW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, pos.BetragInklMwst,pos.Artikelrabatt1InProzent)

           Set pos.Artikelrabatt2ExklMwstEW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1ExklMwstEW,pos.Artikelrabatt2InProzent)
           Set pos.Artikelrabatt2InklMwstEW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, pos.Nettobetrag1InklMwstEW,pos.Artikelrabatt2InProzent)

           Set pos.Artikelrabatt1ExklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(pos.BetragExklMwstFW,pos.Artikelrabatt1InProzent)
           Set pos.Artikelrabatt1InklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(pos.BetragInklMwstFW,pos.Artikelrabatt1InProzent)

           Set pos.Artikelrabatt2ExklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(pos.Nettobetrag1ExklMwstFW,pos.Artikelrabatt2InProzent)
           Set pos.Artikelrabatt2InklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(pos.Nettobetrag1InklMwstFW,pos.Artikelrabatt2InProzent)

           Set status = pos.%Save()
           if ($$$ISERR(status)) {
                           w "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei Rabattberechnung",!
                           w status,!
           }

           Set letzteZeileRabatt = 0
       }                                             
    }

    Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE Auftragskopf="_auftragskopfOid_" ORDER BY PositionsNr"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    if ($$$ISERR(sc)) {
       w "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei SQL-Statement",!
    }

	Set zwischenTotalNAbzugExkl = 0
    Set zwischenTotalNAbzugExklFW = 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
    while (rs.Next()) {
       Set id = rs.Data("ID")
       Set pos = ##class(DBAgrofresh.Auftragspos).%OpenId(id)

       if (pos.Artikelcode = ##class(DBAgrofresh.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 "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei Zwischentotal-Berechnung",!
                           w status,!
           }
       
       } elseif (pos.Artikelcode = ##class(DBAgrofresh.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 "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei ZwischentotalVorRabatt-Berechnung",!
                           w status,!
           }
           
       } elseif (pos.Artikelcode = ##class(DBAgrofresh.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 "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei Gesamttotal-Berechnung",!
                           w status,!
           }

       } elseif (pos.Artikelcode = ##class(DBAgrofresh.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(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalMwst,pos.RabattProzent)
               Set pos.MwstBetragFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW((-1)*zwischenTotalMwstFW,pos.RabattProzent)
               if (pos.Auftragskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
                              Set pos.BetragExklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalExkl,pos.RabattProzent)
                               Set pos.BetragExklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW((-1)*zwischenTotalExklFW,pos.RabattProzent)
               } else {
                              Set pos.BetragInklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalInkl,pos.RabattProzent)
                              Set pos.BetragInklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW((-1)*zwischenTotalInklFW,pos.RabattProzent)
               }
           } else {
               Set pos.MwstBetragFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW((-1)*zwischenTotalRMwstFW,pos.RabattProzent)
               Set pos.MwstBetrag = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalRMwst,pos.RabattProzent)
               if (pos.Auftragskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
                              Set pos.BetragExklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalRExkl,pos.RabattProzent)
                              Set pos.BetragExklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW((-1)*zwischenTotalRExklFW,pos.RabattProzent)
               } else {
                              Set pos.BetragInklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, (-1)*zwischenTotalRInkl,pos.RabattProzent)
                              Set pos.BetragInklMwstFW = ##class(DBAgrofresh.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 "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei Zwischentotal-Berechnung",!
                           w status,!
           }
			//Korrektur
			set betragNachRabatt = pos.Preis + pos.BetragExklMwst
			if (zwischenTotalNAbzugExkl '= +betragNachRabatt) {
				//w "-------------------------------------------------",!
				//w "Abzweichung von Beträgen "_zwischenTotalNAbzugExkl_" zu "_betragNachRabatt,!
				set korrBetrag = betragNachRabatt - zwischenTotalNAbzugExkl
				set korrPos = ##class(DBAgrofresh.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(DBAgrofresh.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 = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, gesamtTotalMwst,pos.RabattProzent)
               Set pos.MwstBetragFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(gesamtTotalMwstFW,pos.RabattProzent)
               if (pos.Auftragskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
                  Set pos.BetragExklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, gesamtTotalExkl,pos.RabattProzent)
                  Set pos.BetragExklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(gesamtTotalExklFW,pos.RabattProzent)
               } else {
                  Set pos.BetragInklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, gesamtTotalInkl,pos.RabattProzent)
                  Set pos.BetragInklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(gesamtTotalInklFW,pos.RabattProzent)
               }
           } else {
               Set pos.MwstBetrag = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, gesamtTotalRMwst,pos.RabattProzent)
               Set pos.MwstBetragFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(gesamtTotalRMwstFW,pos.RabattProzent)
               if (pos.Auftragskopf.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXKL()) {
                  Set pos.BetragExklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, gesamtTotalRExkl,pos.RabattProzent)
                  Set pos.BetragExklMwstFW = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabattFW(gesamtTotalRExklFW,pos.RabattProzent)
               } else {
                  Set pos.BetragInklMwst = ##class(DBAgrofresh.Auftragspos).CalcArtikelrabatt(mandOid, gesamtTotalRInkl,pos.RabattProzent)
                  Set pos.BetragInklMwstFW = ##class(DBAgrofresh.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 "DBAgrofresh.Auftragspos.RecalcRabattTotal - Fehler bei Gesamttotal-Berechnung",!
               w status,!
           }
           Set letzteZeileTotal = 0
           
           Set gesamtTotalExkl = gesamtTotalExkl - pos.BetragExklMwst
           Set gesamtTotalInkl = gesamtTotalInkl - pos.BetragInklMwst
           Set gesamtTotalMwst = gesamtTotalMwst - pos.MwstBetrag
           
           Set gesamtTotalExklFW = gesamtTotalExklFW - pos.BetragExklMwstFW
           Set gesamtTotalInklFW = gesamtTotalInklFW - pos.BetragInklMwstFW
           Set gesamtTotalMwstFW = gesamtTotalMwstFW - pos.MwstBetragFW
           
       } else {
           Set letzteZeileTotal = 0
           Set zwischenTotalExkl = zwischenTotalExkl + pos.BetragExklMwst
           Set zwischenTotalInkl = zwischenTotalInkl + pos.BetragInklMwst
           Set zwischenTotalMwst = zwischenTotalMwst + pos.MwstBetrag

           Set zwischenTotalExklFW = zwischenTotalExklFW + pos.BetragExklMwstFW
           Set zwischenTotalInklFW = zwischenTotalInklFW + pos.BetragInklMwstFW
           Set zwischenTotalMwstFW = zwischenTotalMwstFW + pos.MwstBetragFW

           Set gesamtTotalExkl = gesamtTotalExkl + pos.BetragExklMwst
           Set gesamtTotalInkl = gesamtTotalInkl + pos.BetragInklMwst
           Set gesamtTotalMwst = gesamtTotalMwst + pos.MwstBetrag
           
           Set gesamtTotalExklFW = gesamtTotalExklFW + pos.BetragExklMwstFW
           Set gesamtTotalInklFW = gesamtTotalInklFW + pos.BetragInklMwstFW
           Set gesamtTotalMwstFW = gesamtTotalMwstFW + pos.MwstBetragFW
			
			Set zwischenTotalNAbzugExkl = zwischenTotalNAbzugExkl + pos.Nettobetrag2ExklMwstEW
			Set zwischenTotalNAbzugExklFW = zwischenTotalNAbzugExklFW + pos.Nettobetrag2ExklMwstFW
           
			if (pos.BetragExklMwst > lastKorrBetrag) {
				Set lastKorrOid = pos.%Id()
				Set lastKorrBetrag = pos.BetragExklMwst
			}
       }
       KILL pos      
    }
	*/
   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><![CDATA[	If ($GET(^AufDetStopTrg({Auftragskopf*O}))="") {
		// Gebinde nachführen
		new anzahlGeb
		new auftragId
		new gebId
		new status
	
		set anzahlGeb = {AnzahlGebinde*O}
		set auftragId = {Auftragskopf*O}
		set gebId = {Gebinde*O}
	
	
		if (auftragId '= "") && (gebId '= "") {
			do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(gebId, auftragId, anzahlGeb, 1)
		}
	
		set anzahlGeb = {AnzahlGebinde*N}
		set auftragId = {Auftragskopf*N}
		set gebId = {Gebinde*N}
	
		if (auftragId '= "") && (gebId '= "") {
			do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(gebId, auftragId, anzahlGeb, 0)
		}
	
		do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass({Auftragskopf*N})
	
		Set status = ##class(DBAgrofresh.Auftragspos).RecalcRabattTotal({Auftragskopf*N})
		if ($$$ISERR(status)) {
			w "DBAgrofresh.Auftragspos.Update - Fehler bei RabattTotal-Berechnung",!
			w status,!
		}
	}]]></Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="Insert">
<Code><![CDATA[	
	// Gebinde Position nachführen
	new anzahlGeb
	new auftragId
	new gebId
	new status
	
	set anzahlGeb = {AnzahlGebinde*N}
	set auftragId = {Auftragskopf*N}
	set gebId = {Gebinde*N}
	
	if ((gebId '= "") && (auftragId '= "")) {
		do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(gebId, auftragId, anzahlGeb, 0)
	}
	
	do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass({Auftragskopf*N})
	
	Set status = ##class(DBAgrofresh.Auftragspos).RecalcRabattTotal(auftragId)
	if ($$$ISERR(status)) {
		w "DBAgrofresh.Auftragspos.Insert - Fehler bei RabattTotal-Berechnung",!
		w status,!
	}]]></Code>
<Event>INSERT</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="trgAfterDelete">
<Code><![CDATA[	//w !,"Trigger After Del Auftragspos",!
	new myId
	new chargenId
	new status
	set myId = {ID*O}
	
	// Gebinde Position nachführen
	new anzahlGeb
	new auftragId
	new gebId
	
	set anzahlGeb = {AnzahlGebinde*O}
	set auftragId = {Auftragskopf*O}
	set gebId = {Gebinde*O}
	
	if ((gebId '= "") && (auftragId '= "")) {
		do ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(gebId, auftragId, anzahlGeb, 1)
	}
	set chargenId = ^ChargenId(myId, 1)
	d ..DeleteChargen(chargenId)
	
	KILL ^ChargenId(myId)
	
	Set status = ##class(DBAgrofresh.Auftragspos).RecalcRabattTotal(auftragId)
	if ($$$ISERR(status)) {
		w "DBAgrofresh.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(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass({Auftragskopf*N})
	
	d ..CheckForReservation(myId)
	
	set auf = ##class(DBAgrofresh.Auftragspos).%OpenId(myId)
	if ((auf.Charge '= $c(0)) && (auf.Charge '= "")) {
		Set ^ChargenId(myId, 1) = auf.Charge.%Id()
	} else {
		Set ^ChargenId(myId, 1) = ""
	}
	set auf = ""
	KILL auf
	
	set res = ##class(DBUtils.ClassHelper).DeleteManyRelations("DBAgrofresh.Auftragspos", myId)
	
	Quit res]]></Code>
<Event>DELETE</Event>
<Foreach>row</Foreach>
</Trigger>

<Method name="GetGebindePreisByDet">
<ClassMethod>1</ClassMethod>
<FormalSpec>detId:%String</FormalSpec>
<ReturnType>%Double</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = 0
	set detpos = ##class(DBAgrofresh.Auftragspos).%OpenId(detId)
	if ((detpos '= "") && (detpos.Gebinde '= "")) {
		set auftragInEW = (detpos.Auftragskopf.Kurs = 0)
		set gebId = ##class(DBAgrofresh.GebDetail).GetIdByAuftragGebinde(detpos.Auftragskopf.%Id(), detpos.Gebinde.%Id())
		if (gebId '= "") {
			set gebdet = ##class(DBAgrofresh.GebDetail).%OpenId(gebId)
			if (gebdet '= "") {
				if (auftragInEW) {
					set preis = gebdet.GebindePreisTotal
				} else {
					set preis = gebdet.GebindePreisFW
				}
			}
		}
	}
	Quit preis
]]></Implementation>
</Method>

<Method name="AddGebToGebPos">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebindeId:%String,auftragId:%String,oldLieferung:%Decimal(SCALE=5),storno:%Boolean,isRecalc:%Boolean=0</FormalSpec>
<Implementation><![CDATA[

	set ^GebindeSet(gebindeId) = 1
	do ##class(DBAgrofresh.Auftragspos).CheckHauptGebinde(gebindeId, auftragId, oldLieferung, storno)
	do ##class(DBAgrofresh.Auftragspos).CheckPallette(gebindeId, auftragId, oldLieferung, storno)
	KILL ^GebindeSet(gebindeId)

	// wenn storno wert invertieren
	if storno {
		set oldLieferung = ((-1)*oldLieferung)
	}
	// prüfen ob schon Detailposition vorhanden
	set gebId = ##class(DBAgrofresh.GebDetail).GetIdByAuftragGebinde(auftragId, gebindeId)
	set gebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(gebindeId)
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(auftragId)
	//GebDetail nur anlegen, wenn Gebinde verrechenbar ist
	//gem. AW 10.08.09
	if ((gebinde '= "") && (gebinde.GebindeNr < ##class(DBAgrofresh.Konst).GebindeFirstNichtVerrechenbar())) {

		//w !,"Aktueller bestand auslesen",!
		set dbLieferung = 0	
		Set strSQL="SELECT LieferungMenge as menge FROM DBAgrofresh.GebDetail WHERE Auftrag->ID ="_auftragId_" AND GebKontr->Gebinde->ID="_gebindeId
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		IF $$$ISOK(sc) {
			While rs.Next(.sc) {
				Set dbLieferung=rs.Data("menge")
			}
		}
	
		// Neue Menge berrechnen 
		set newLieferung = dbLieferung + oldLieferung
		//w "Alter Bestand: ",dbLieferung, " Neuer Bestand: ", newLieferung, !

		if (gebId = "") {
			//w "Gebindepos wird erstellt", !
			set gebPos = ##class(DBAgrofresh.GebDetail).%New()
			set gebPos.Auftrag = auftrag
			set gebKtrId = ""
			set gebKtrId = ##class(DBAgrofresh.GebKontr).GetIdByGebAdr(gebindeId, auftrag.Adresse.Adresse.%Id())
			if (gebKtrId '= "") {
				set gebKontr = ##class(DBAgrofresh.GebKontr).%OpenId(gebKtrId)
				set gebPos.GebKontr = gebKontr
			} else {
				set gebKontr = ##class(DBAgrofresh.GebKontr).%New()
				set gebKontr.Gebinde = gebinde
				set gebKontr.Kunde = auftrag.Adresse.Adresse
				set gebKontr.DatumAnfangsbestand = +$H
				set gebKontr.Mandant = auftrag.Mandant
				do gebKontr.%Save()
				set gebPos.GebKontr = gebKontr
			}
			set status = gebPos.%Save()
			//w "Status gebPos.%Save: ",status,!
			set gebId = gebPos.%Id()
			k gebPos
			k gebKontr
		}
		// Werte auf gebindeposition speichern
		set gebDetail = ##class(DBAgrofresh.GebDetail).%OpenId(gebId)

		if (auftrag.Lieferdatum '= 0 && auftrag.Lieferdatum '="") {
			set gebDetail.Datum = auftrag.Lieferdatum
		} else {
			set gebDetail.Datum = auftrag.Auftragsdatum
		}
		if ((gebinde '= "") && (gebinde.MwstVK '= "")) {
			//w !,"MWST überprüfung wegen Inkl /Exkl...",!
			//w "gebDetail.Auftrag.CodeMwst:",gebDetail.Auftrag.CodeMwst,!
			//w "gebinde.MwstVK.%Id():", gebinde.MwstVK.%Id(),!
			//w "gebinde.Mandant:",gebinde.Mandant,!
			
			set mwstOid = ##class(DBFibu.SD.Mwst).GetOidByStrgForOrderMgmt(gebDetail.Auftrag.CodeMwst, gebinde.MwstVK.%Id(), gebinde.Mandant, 1)
			
			//w !,"TEst",!
			
			set newMwst = ##class(DBFibu.SD.Mwst).%OpenId(mwstOid)
			set gebDetail.Mwst = newMwst
			k newMwst
			if (gebDetail.Mwst '= "") {
				// Wenn GebindeMwst Inkl und Auftrag Exkl
				//w "Bei Get für Mwst "_gebDetail.Mwst, " Datum: ", gebDetail.Datum, !
				set gebDetail.MwstSatz = ##class(DBFibu.SD.Mwst).GetMwstSatzFakturierungClass(gebDetail.Mwst.%Id(), gebDetail.Datum)
				//w "Satz = ", gebDetail.MwstSatz, !
					// wenn Auftrag Export
				if (gebDetail.Auftrag.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGEXPORT()) {
					set gebDetail.MwstSatz = ##class(DBFibu.SD.Mwst).GetMwstSatzExportClass(gebinde.MwstVK.%Id(), gebDetail.Datum)
				}
			} else {
				set gebDetail.MwstSatz = 0
			}
		} else {
			set gebDetail.MwstSatz = 0
		}
		set gebDetail.LieferungMenge = newLieferung
		
		if ((+gebDetail.GebindePreis = 0) && (auftrag.GebindeVerrechnungAktiv)) {
			//w "Preis wird berechnet", !
			set isSpezpreis = 0
			set nurSaldo = 0
            set gebPreis = ##class(DBAgrofresh.GebPreis).GetPreisDetByAuftrag(auftragId, gebinde.%Id(), .isSpezpreis, .nurSaldo)

			//w "Preis: ", gebPreis, !
			if ((gebDetail.Auftrag.Waehrung.FWCode = 1)) {
				set gebDetail.GebindePreis = gebPreis
				// Fremdwaehrung und Kundenspez = Preis in FW
			} elseif ((gebDetail.Auftrag.Waehrung.FWCode '= 1) && (isSpezpreis = 1)) {
				set gebDetail.GebindePreisFW = gebPreis
				set gebDetail.GebindePreis = ##class(DBUtils.NumberUtils).RoundGemEinst(gebDetail.Auftrag.Mandant, ##class(DBUtils.NumberUtils).GetBetragEWbyWaehrung(gebPreis, auftrag.Waehrung))
				// Fremdwaehrung,Preis= Preis in EW
			} elseif ((gebDetail.Auftrag.Waehrung.FWCode '= 1)) {
				set gebDetail.GebindePreisFW = ##class(DBUtils.NumberUtils).Round(##class(DBUtils.NumberUtils).GetBetragFWbyWaehrung(gebPreis, auftrag.Waehrung), 2)
				set gebDetail.GebindePreis = gebPreis
			}
			set gebDetail.NieVerrechnen = nurSaldo
		}
		
		set kundenKatOid = ""
		if ((gebDetail.GebKontr.Kunde.Kundenkategorie '= "") && (gebDetail.GebKontr.Kunde.Kundenkategorie '= $c(0))) {
			set kundenKatOid = gebDetail.GebKontr.Kunde.Kundenkategorie.%Id()
		}
		if ((gebDetail.GebindeAdminKosten = 0) || (gebDetail.GebindeAdminKosten = $c(0))) {
			if (gebDetail.AdminKostenJeLadung) {
				set gebDetail.GebindeAdminKosten  = ##class(DBAgrofresh.SD.GebAdminKosten).GetKostenVKLadungByGebindeDatum(gebinde.%Id(), kundenKatOid ,gebDetail.Datum,gebDetail.GebindeSaldoMenge)
			} else {
				if (isRecalc) {
					// Bei Recalc als menge immer 1 übergeben, da er den Ladungspreis nicht berücksichtigen soll falls er zuvor auf nein war
					set gebDetail.GebindeAdminKosten  = ##class(DBAgrofresh.SD.GebAdminKosten).GetKostenVKByGebindeDatum(gebinde.%Id(), kundenKatOid ,gebDetail.Datum,1)
				} else {
					set gebDetail.GebindeAdminKosten  = ##class(DBAgrofresh.SD.GebAdminKosten).GetKostenVKByGebindeDatum(gebinde.%Id(), kundenKatOid ,gebDetail.Datum,gebDetail.GebindeSaldoMenge)
				}
			}
		}
		if ((gebDetail.GebindeMiete = 0) ||(gebDetail.GebindeMiete = $c(0))) {
			set gebDetail.GebindeMiete  = ##class(DBAgrofresh.SD.GebAdminKosten).GetMieteVKByGebindeDatum(gebinde.%Id(), kundenKatOid, gebDetail.Datum)
		}
		// Wenn eingestellt nur für gewisse Selektion verrechnen auf diese prüfen
		if (gebDetail.GebKontr.Gebinde.Selektion2 '= "") {
			set sel2 = gebDetail.GebKontr.Gebinde.Selektion2.%Id()
			set sel2ZahlAdr = ""
			if (gebDetail.GebKontr.Kunde.FreieSelektion2 '= "") {
				set sel2ZahlAdr = gebDetail.GebKontr.Kunde.FreieSelektion2.%Id()
			}
			if (sel2 '= sel2ZahlAdr) {
				set gebDetail.GebindeMiete = 0
				set gebDetail.GebindePreisFW = 0
				set gebDetail.GebindePreis = 0
			}
		}
		
		//w !,"Speicher Gebindedetail ",!, " Gebinde Oid: ", gebDetail.GebKontr.Gebinde.%Id(), !, " Gebinde Code: ", gebDetail.GebKontr.Gebinde.GebindeNr, !
		d gebDetail.%Save()
		
		// prüfen ob noch Gebindedetails vorhanden
		// Abfrage
    	Set strSQL="SELECT NVL(sum(LieferungMenge),0) + NVL(sum(RetourenMenge),0) AS anz, ID AS ID FROM DBAgrofresh.GebDetail WHERE Auftrag->ID ="_auftragId_" AND GebKontr->Gebinde->ID="_gebindeId
    	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    	Do rs.Prepare(strSQL)
    	Set sc=rs.Execute()
    	// Result prüfen
    	if (rs.Next()) {
		    if (+rs.Data("anz") = 0) {
		    	Set strSQL="DELETE FROM DBAgrofresh.GebDetail WHERE ID='"_rs.Data("ID")_"'"
		    	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		    	Do rs.Prepare(strSQL)
		    	Set sc=rs.Execute()
	    	} 
    	}
	}
]]></Implementation>
</Method>

<Method name="CheckHauptGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebindeId:%String,auftragId:%String,oldLieferung:%Decimal(SCALE=5),storno:%Boolean</FormalSpec>
<Implementation><![CDATA[
	// prüfung ob Hauptgebinde eingetragen
	set gebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(gebindeId)
	set hauptgebindeId = ""
	if (gebinde.Hauptgebinde '= "") {
		set hauptgebindeId = gebinde.Hauptgebinde.%Id()
	}
	// Anzahl Gebinde je Hauptgebinde ausrechnen
	set anzJeGeb = gebinde.AnzGebJeHauptGeb
	kill gebinde
	
	if ((hauptgebindeId '= "") && ($Get(^GebindeSet(hauptgebindeId))'= 1) && (anzJeGeb '= 0)) {
		// Anzahl Hauptgebinde ausrechnen
		set anzHG = (oldLieferung / anzJeGeb)
		set anzHGRound = ##class(DBUtils.NumberUtils).Round(anzHG, 0)
		if (anzHG < 1) {
			set anzHGRound = 1
		}elseif (anzHG > anzHGRound) {
			set anzHGRound = anzHGRound +1
		}
		d ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(hauptgebindeId, auftragId, +anzHGRound, storno)
	}
	// prüfung ob Untergebinde vorhanden
	set unterGebinde = ""
	set faktor = 0
	&sql(Select Top 1 ID, AnzGebJeHauptGeb INTO unterGebinde, faktor FROM DBAgrofresh_SD.Gebinde WHERE Hauptgebinde->Id = :gebindeId)
	
	if ((SQLCODE=0) && (unterGebinde '= "") && ($Get(^GebindeSet(unterGebinde))'= 1)) {
		set anzUG = (oldLieferung * +faktor)
		d ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(unterGebinde, auftragId, +anzUG, storno)
	}
]]></Implementation>
</Method>

<Method name="CheckPallette">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebindeId:%String,auftragId:%String,oldLieferung:%Decimal(SCALE=5),storno:%Boolean</FormalSpec>
<Implementation><![CDATA[
	// Init
	set gebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(gebindeId)
	set anzJeGeb = 0
	set mandId = gebinde.Mandant
	set palOid = ##class(DBCore.MandantEinstellung).GetStringEinst(mandId, ##class(DBCore.Konst).AGROFRESHGEBTYPPALLETTE())
	set einst = ##class(DBCore.MandantEinstellung).GetShortEinst(mandId, ##class(DBCore.Konst).AGROFRESHAUTOPALCALC())
	
	// prüfung ob Pallettenerfassung aktiv
	// Wenn keine Berechnung aktiv verlassen
	if ((einst = ##class(DBAgrofresh.Konst).AutoCalcPalNein()) || (palOid = "") || ($Get(^GebindeSet(palOid))= 1) || (palOid =gebindeId) || (anzJeGeb = 0)) {
		kill gebinde
		Quit
		
	// Wenn optimierte Berechnung aktiv die maximale Anzahl als Faktor
	} elseif (einst = ##class(DBAgrofresh.Konst).AutoCalcPalOptimiert()) {
		set anzJeGeb = gebinde.MaxAnzahlJePalette
		
	// Wenn optimierte Berechnung aktiv die Anzahl als Faktor
	} elseif (einst = ##class(DBAgrofresh.Konst).AutoCalcPalStandard()) {
		set anzJeGeb = gebinde.AnzahlJePalette
	}
	kill gebinde
	
	// Anzahl Pallette ausrechnen
	set anzHG = (oldLieferung / anzJeGeb)
	set anzHGRound = ##class(DBUtils.NumberUtils).Round(anzHG, 0)
	if (anzHG < 1) {
		set anzHGRound = 1
	}elseif (anzHG > anzHGRound) {
		set anzHGRound = anzHGRound +1
	}
	d ##class(DBAgrofresh.Auftragspos).AddGebToGebPos(palOid, auftragId, +anzHGRound, storno)
]]></Implementation>
</Method>

<Method name="SetGedruckteGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>PosOid:%String</FormalSpec>
<Implementation><![CDATA[
	set pos = ##class(DBAgrofresh.Auftragspos).%OpenId(PosOid)
	if ((pos '= "") && (pos '= $c(0))) {
		set kopfOid = pos.Auftragskopf.%Id()
		Set ^AufDetStopTrg(kopfOid) = 1
		set pos.AnzahlGedruckteGebinde = pos.AnzahlGebinde
		set state = pos.%Save()
		Kill ^AufDetStopTrg(kopfOid)
		Kill pos
	}
]]></Implementation>
</Method>

<Method name="DeleteChargen">
<ClassMethod>1</ClassMethod>
<FormalSpec>chargenOid:%String</FormalSpec>
<Implementation><![CDATA[	&sql(DELETE FROM DBAgrofreshEK.ChargenAusgang WHERE ID = :chargenOid)
]]></Implementation>
</Method>

<Method name="ChangeLagerort">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<Implementation><![CDATA[
	
	Set ^AufDetStopTrg(AuftragOid) = 1
	Set strSQL="Update DBAgrofresh.Auftragspos Set Lagerort=Auftragskopf->Lagerort WHERE Auftragskopf->ID ='"_AuftragOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	Kill ^AufDetStopTrg(AuftragOid)
]]></Implementation>
</Method>

<Method name="RecalcMwst">
<ClassMethod>1</ClassMethod>
<FormalSpec>auftragskopfOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	//w "Start RecalcMwst AuftragOid "_auftragskopfOid,!

	//Letze Korrektur zurücksetzen
	&sql(Declare c1 CURSOR FOR 
		SELECT ID into :myId From DBAgrofresh.Auftragspos WHERE Auftragskopf=:auftragskopfOid and not NVL(KorrekturMwst,0) = 0)
	&sql(OPEN c1)
	&sql(FETCH c1)
	//W "CODE for WHILE ", SQLCODE,!
	While (SQLCODE = 0) {
		Set posOid = myId
		//w "Zurücksetzen für "_posOid, !
		set pos = ##class(DBAgrofresh.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())) {
				//w "Reset BetragExklMwst "_pos.BetragExklMwst, " um ", pos.KorrekturMwst, !
				Set pos.BetragExklMwst = (pos.BetragExklMwst + pos.KorrekturMwst)
			}
			Set pos.KorrekturMwst = 0
			DO pos.%Save()
		}       
		&sql(FETCH c1)      
	}
	&sql(CLOSE c1)
	set status = $$$OK

	Set strSQL="SELECT ID From DBAgrofresh.Auftragspos WHERE Auftragskopf="_auftragskopfOid_" AND BetragExklMwst <> 0"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if ($$$ISERR(sc)) {
		w "DBAgrofresh.Auftragspos.RecalcMwst - Fehler bei SQL-Statement für DetailIds",!
	}
	
	While (rs.Next()) {
		Set posOid = rs.Data("ID")
		set pos = ##class(DBAgrofresh.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()
				}
			}
		}             
	}
	// MWST Sätze auslesen
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(auftragskopfOid)
	set mandant = auftrag.Mandant
	set abzugBisGr = ##class(DBCore.MandantEinstellung).GetIntEinst(mandant, ##class(DBCore.Konst).AGROFRESHABZUGBISAGR())

	Set rset = ##class(%ResultSet).%New("DBAgrofresh.AF.AuftragsKopfAF.ListeMwstByCodesForRecalc")
	Do rset.Execute(auftragskopfOid, mandant, abzugBisGr)
	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")
		if ((mwstSatz '= 0) || (mwstSatz '= "") || (mwstSatz '= $c(0))) {
			//w "-------------------------------------------------",!
			//w "MwstCode: "_mwstCode_" berechnung OID "_mwstOid,! 
			// Pro validen MWST Satz betrag auslesen
			Set calcMwstBetrag = rset.Data("MwstBetragCalc")
			
   			// Wenn abweichungen vorhanden sind, diese korrigieren
			if (calcMwstBetrag '= myMwstBetrag) {
				//w "Abweichung von Beträgen "_calcMwstBetrag_" zu "_myMwstBetrag,!
				set korrBetrag = calcMwstBetrag - myMwstBetrag
  
				Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.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 "DBAgrofresh.Auftragspos.RecalcMwst - Fehler bei SQL-Statement",!
				}
				if (rs.Next()) {
					Set oidPos = rs.Data("ID")
					set korrPos = ##class(DBAgrofresh.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 "Betrag Exkl "_korrPos.BetragExklMwst_" Betrag Inkl "_korrPos.BetragInklMwst,!
	  				}
				}
			}
		//w "-------------------------------------------------",!
		}
	}
	Quit status
]]></Implementation>
</Method>

<Method name="ResetStopTriger">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<Implementation><![CDATA[	Kill ^AufDetStopTrg(AuftragOid)
]]></Implementation>
</Method>

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

<Method name="UpdateBestelllistenNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpVon:%Integer,ArtGrpBis:%Integer,ArtikelVon:%String,ArtikelBis:%String,VonAdr:%Integer,BisAdr:%Integer,VonDatum:%Date,BisDatum:%Date,ListenNr:%Integer,Mandant:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set sqlDateVon = $ZDate(VonDatum,3)
	Set sqlDateBis = $ZDate(BisDatum,3)
	&SQL(UPDATE	DBAgrofresh.Auftragspos Set BestelllistenNr = :ListenNr
	WHERE Auftragskopf->Mandant = :Mandant 	 
  		AND (Artikel->ArtikelNr BETWEEN :ArtikelVon AND :ArtikelBis OR NVL(:ArtikelVon, '') = '')
		AND (Artikel->Artikelgruppe->ArtikelgruppenNr BETWEEN :ArtGrpVon AND :ArtGrpBis OR NVL(:ArtGrpVon,0) = 0)
		AND (Artikel->Lieferant1->Adressnummer BETWEEN :VonAdr AND :BisAdr)
		AND (Auftragskopf->Auftragsdatum BETWEEN {d :sqlDateVon} AND {d :sqlDateBis})
		AND NVL(BestelllistenNr,0) = 0)
	
	Quit (SQLCODE = 0)
]]></Implementation>
</Method>

<Method name="GetAktZusatzChargeByPosNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,aktPos:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set pos = ""
	&sql(SELECT Max(ZusatzChargenID) Into :pos FROM DBAgrofresh.Auftragspos WHERE  Auftragskopf->ID =:AuftragOid AND PositionsNr = :aktPos)
	Quit:(SQLCODE'=0) 0
	Quit +pos
]]></Implementation>
</Method>

<Method name="GetLetzterVP">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,AdressOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set preis = 0
	&sql(SELECT TOP 1 Preis Into :preis FROM DBAgrofresh.Auftragspos WHERE  Auftragskopf->Adresse->Adresse =:AdressOid AND Artikel = :ArtikelOid ORDER BY Lieferdatum DESC)
	Quit:(SQLCODE'=0) 0
	Quit +preis
]]></Implementation>
</Method>

<Method name="GetMengeByArtikelDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,Datum:%Date,MinStatus:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set menge = 0
	&sql(SELECT SUM(Menge) Into :menge FROM DBAgrofresh.Auftragspos 
	WHERE  Auftragskopf->Lieferdatum =:Datum AND Artikel = :ArtikelOid AND Auftragskopf->Auftragsstatus >= :MinStatus)
	Quit:(SQLCODE'=0) 0
	Quit menge
]]></Implementation>
</Method>

<Method name="GetAnzGebindeByArtikelDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,Datum:%Date,MinStatus:%Integer</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = 0
	&sql(SELECT SUM(AnzahlGebinde) Into :menge FROM DBAgrofresh.Auftragspos 
	WHERE  Auftragskopf->Lieferdatum =:Datum AND Artikel = :ArtikelOid AND Auftragskopf->Auftragsstatus >= :MinStatus)
	Quit:(SQLCODE'=0) 0
	Quit menge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Auftragspos")</DataLocation>
<DefaultData>AuftragsposDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.AuftragskopfC("Auftragspos")</IdLocation>
<IndexLocation>^DBAgrofresh.AuftragsposI</IndexLocation>
<StreamLocation>^DBAgrofresh.AuftragsposS</StreamLocation>
<Data name="AuftragsposDefaultData">
<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>Rechnungsdatum</Value>
</Value>
<Value name="5">
<Value>Lagerstatus</Value>
</Value>
<Value name="6">
<Value>Lieferantencode</Value>
</Value>
<Value name="7">
<Value>BestellNr</Value>
</Value>
<Value name="8">
<Value>DetailText</Value>
</Value>
<Value name="9">
<Value>AnzahlGebinde</Value>
</Value>
<Value name="10">
<Value>AnzahlGedruckteGebinde</Value>
</Value>
<Value name="11">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="12">
<Value>AnzahlHauptGebinde</Value>
</Value>
<Value name="13">
<Value>Menge</Value>
</Value>
<Value name="14">
<Value>BestellteMenge</Value>
</Value>
<Value name="15">
<Value>Preis</Value>
</Value>
<Value name="16">
<Value>PreisFW</Value>
</Value>
<Value name="17">
<Value>RabattProzent</Value>
</Value>
<Value name="18">
<Value>RabattBetrag</Value>
</Value>
<Value name="19">
<Value>MwstSatz</Value>
</Value>
<Value name="20">
<Value>MwstSatzExport</Value>
</Value>
<Value name="21">
<Value>MwstBetrag</Value>
</Value>
<Value name="22">
<Value>BetragExklMwst</Value>
</Value>
<Value name="23">
<Value>BetragInklMwst</Value>
</Value>
<Value name="24">
<Value>BetragFW</Value>
</Value>
<Value name="25">
<Value>Warenaufwand</Value>
</Value>
<Value name="26">
<Value>GewichtNetto</Value>
</Value>
<Value name="27">
<Value>ParzellenNr</Value>
</Value>
<Value name="29">
<Value>GewichtTara</Value>
</Value>
<Value name="30">
<Value>GewichtBrutto</Value>
</Value>
<Value name="31">
<Value>ZusatztextID</Value>
</Value>
<Value name="32">
<Value>Artikel</Value>
</Value>
<Value name="33">
<Value>Herkunft</Value>
</Value>
<Value name="34">
<Value>Mengeneinheit</Value>
</Value>
<Value name="35">
<Value>Gebinde</Value>
</Value>
<Value name="36">
<Value>HauptGebinde</Value>
</Value>
<Value name="37">
<Value>Mwst</Value>
</Value>
<Value name="38">
<Value>MwstExport</Value>
</Value>
<Value name="39">
<Value>Artikelcode</Value>
</Value>
<Value name="40">
<Value>Abzugstyp</Value>
</Value>
<Value name="41">
<Value>Vertreter</Value>
</Value>
<Value name="42">
<Value>Lieferant</Value>
</Value>
<Value name="43">
<Value>Qualitaet</Value>
</Value>
<Value name="44">
<Value>Lagerort</Value>
</Value>
<Value name="45">
<Value>SpezPreis</Value>
</Value>
<Value name="46">
<Value>GrammJeEinheit</Value>
</Value>
<Value name="47">
<Value>GrammJeLaufmeter</Value>
</Value>
<Value name="48">
<Value>Produktionsart</Value>
</Value>
<Value name="49">
<Value>Charge</Value>
</Value>
<Value name="50">
<Value>BetragInklMwstFW</Value>
</Value>
<Value name="51">
<Value>MwstBetragFW</Value>
</Value>
<Value name="52">
<Value>BetragExklMwstFW</Value>
</Value>
<Value name="53">
<Value>RabattBetragFW</Value>
</Value>
<Value name="54">
<Value>Artikelrabatt1exklMwstEW</Value>
</Value>
<Value name="55">
<Value>Artikelrabatt1inklMwstEW</Value>
</Value>
<Value name="56">
<Value>Artikelrabatt1MwstbetragEW</Value>
</Value>
<Value name="57">
<Value>Artikelrabatt1inProzent</Value>
</Value>
<Value name="58">
<Value>Nettobetrag1exklMwstEW</Value>
</Value>
<Value name="59">
<Value>Nettobetrag1inklMwstEW</Value>
</Value>
<Value name="60">
<Value>Nettobetrag1MwstbetragEW</Value>
</Value>
<Value name="61">
<Value>Artikelrabatt1exk2MwstEW</Value>
</Value>
<Value name="62">
<Value>Artikelrabatt2inklMwstEW</Value>
</Value>
<Value name="63">
<Value>Artikelrabatt2MwstbetragEW</Value>
</Value>
<Value name="64">
<Value>Artikelrabatt2inProzent</Value>
</Value>
<Value name="65">
<Value>Nettobetrag2exklMwstEW</Value>
</Value>
<Value name="66">
<Value>Nettobetrag2inklMwstEW</Value>
</Value>
<Value name="67">
<Value>Nettobetrag2MwstbetragEW</Value>
</Value>
<Value name="68">
<Value>Artikelrabatt2exklMwstEW</Value>
</Value>
<Value name="69">
<Value>Artikelrabatt1exklMwstFW</Value>
</Value>
<Value name="70">
<Value>Artikelrabatt1inklMwstFW</Value>
</Value>
<Value name="71">
<Value>Artikelrabatt1MwstbetragFW</Value>
</Value>
<Value name="72">
<Value>Artikelrabatt2exklMwstFW</Value>
</Value>
<Value name="73">
<Value>Artikelrabatt2inklMwstFW</Value>
</Value>
<Value name="74">
<Value>Artikelrabatt2MwstbetragFW</Value>
</Value>
<Value name="75">
<Value>Artikelrabatt1ExklMwstEW</Value>
</Value>
<Value name="76">
<Value>Artikelrabatt1InklMwstEW</Value>
</Value>
<Value name="77">
<Value>Artikelrabatt1InProzent</Value>
</Value>
<Value name="78">
<Value>Artikelrabatt2ExklMwstEW</Value>
</Value>
<Value name="79">
<Value>Artikelrabatt2InklMwstEW</Value>
</Value>
<Value name="80">
<Value>Artikelrabatt2InProzent</Value>
</Value>
<Value name="81">
<Value>Artikelrabatt1ExklMwstFW</Value>
</Value>
<Value name="82">
<Value>Artikelrabatt1InklMwstFW</Value>
</Value>
<Value name="83">
<Value>Artikelrabatt2ExklMwstFW</Value>
</Value>
<Value name="84">
<Value>Artikelrabatt2InklMwstFW</Value>
</Value>
<Value name="85">
<Value>QsText</Value>
</Value>
<Value name="86">
<Value>QsMeldung</Value>
</Value>
<Value name="87">
<Value>Abteilung</Value>
</Value>
<Value name="88">
<Value>SachbearbeiterNr</Value>
</Value>
<Value name="89">
<Value>SachbearbeiterBenutzername</Value>
</Value>
<Value name="90">
<Value>SachbearbeiterVorname</Value>
</Value>
<Value name="91">
<Value>SachbearbeiterName</Value>
</Value>
<Value name="92">
<Value>EPProvisorisch</Value>
</Value>
<Value name="93">
<Value>DetailPreis</Value>
</Value>
<Value name="94">
<Value>MargeProzent</Value>
</Value>
<Value name="95">
<Value>ChargenNrMan</Value>
</Value>
<Value name="96">
<Value>Bemerkung</Value>
</Value>
<Value name="97">
<Value>KorrekturMwst</Value>
</Value>
<Value name="98">
<Value>Erstbestellmenge</Value>
</Value>
<Value name="99">
<Value>BestelllistenNr</Value>
</Value>
<Value name="100">
<Value>ZusatzChargenID</Value>
</Value>
<Value name="101">
<Value>BestellteGebinde</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Abteilung"/>
<Property name="Abzugstyp">
</Property>
<Property name="AnzahlGebinde">
</Property>
<Property name="AnzahlGedruckteGebinde">
</Property>
<Property name="AnzahlHauptGebinde">
</Property>
<Property name="AnzahlJeGebinde">
</Property>
<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="Bemerkung">
</Property>
<Property name="BestellNr">
</Property>
<Property name="BestelllistenNr">
</Property>
<Property name="BestellteGebinde">
</Property>
<Property name="BestellteMenge">
</Property>
<Property name="BetragExklMwst">
</Property>
<Property name="BetragExklMwstFW">
</Property>
<Property name="BetragFW"/>
<Property name="BetragInklMwst">
</Property>
<Property name="BetragInklMwstFW">
</Property>
<Property name="Charge">
</Property>
<Property name="ChargenNrMan">
</Property>
<Property name="DetailPreis">
</Property>
<Property name="DetailText">
</Property>
<Property name="EPProvisorisch">
</Property>
<Property name="Erstbestellmenge">
</Property>
<Property name="Gebinde">
</Property>
<Property name="GewichtBrutto">
</Property>
<Property name="GewichtNetto">
</Property>
<Property name="GewichtTara">
</Property>
<Property name="GrammJeEinheit">
</Property>
<Property name="GrammJeLaufmeter">
</Property>
<Property name="HauptGebinde">
</Property>
<Property name="Herkunft">
</Property>
<Property name="KorrekturMwst">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Lagerstatus">
</Property>
<Property name="Lieferant">
</Property>
<Property name="Lieferantencode"/>
<Property name="Lieferdatum">
</Property>
<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="ParzellenNr">
</Property>
<Property name="PositionsNr">
</Property>
<Property name="Preis">
</Property>
<Property name="PreisFW">
</Property>
<Property name="Produktionsart">
</Property>
<Property name="QsMeldung"/>
<Property name="QsText"/>
<Property name="Qualitaet">
</Property>
<Property name="RabattBetrag">
</Property>
<Property name="RabattBetragFW">
</Property>
<Property name="RabattProzent">
</Property>
<Property name="Rechnungsdatum"/>
<Property name="Ruestdatum"/>
<Property name="SachbearbeiterBenutzername"/>
<Property name="SachbearbeiterName"/>
<Property name="SachbearbeiterNr"/>
<Property name="SachbearbeiterVorname"/>
<Property name="SpezPreis">
</Property>
<Property name="Vertreter">
</Property>
<Property name="Warenaufwand">
</Property>
<Property name="ZusatzChargenID">
</Property>
<Property name="ZusatztextID">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.BenAbzuege">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57300.419575</TimeChanged>
<TimeCreated>61290,36527.807747</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="Abteilung">
<Type>DBCore.Abteilung</Type>
<Cardinality>one</Cardinality>
<Inverse>AbteilungAbzug</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="AbDatum">
<Description>
AbDatum welches Preis gütlig ist</Description>
<Type>%Date</Type>
</Property>

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

<Index name="AbteilungDatum">
<Data>%%ID,Abteilung,AbDatum,Menge</Data>
<Properties>Abteilung,AbDatum</Properties>
</Index>

<Property name="Artikel">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>parent</Cardinality>
<Inverse>BenAbzug</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="GetPreisPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Abteilung:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	if (Artikel ="") {
		quit 0
	}
	set menge = 0
	
	&sql(SELECT TOP 1 Menge INTO :menge FROM DBAgrofresh.BenAbzuege 
		WHERE  Artikel=:Artikel AND Abteilung = :Abteilung AND AbDatum <= :Datum Order by AbDatum desc)
		
	if (+menge = 0) {
		set abzug = ##class(Abzuege).%OpenId(AbzugsId)
		set menge = abzug.Menge
	}
	
	quit +menge
]]></Implementation>
</Method>

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

<Method name="GetOidByAbteilungDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Artikel:%String,Abteilung:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.BenAbzuege
	     WHERE  Artikel= :Artikel AND AbDatum = :Datum AND Abteilung = :Abteilung)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("BenAbzug")</DataLocation>
<DefaultData>BenAbzuegeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.ArtikelC("BenAbzug")</IdLocation>
<IndexLocation>^DBAgrofresh.BenAbzuegeI</IndexLocation>
<StreamLocation>^DBAgrofresh.BenAbzuegeS</StreamLocation>
<Data name="BenAbzuegeDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Abteilung</Value>
</Value>
<Value name="3">
<Value>AbDatum</Value>
</Value>
<Value name="4">
<Value>Menge</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.GebDetail">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61102,37876.666847</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="Datum">
<Description>
Datum</Description>
<Type>%Date</Type>
</Property>

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

<Index name="VerrechnetIndex">
<Properties>Verrechnet</Properties>
</Index>

<Property name="LieferungMenge">
<Description>
Lieferung Menge</Description>
<Type>%Integer</Type>
</Property>

<Property name="RetourenMenge">
<Description>
Retouren Mengen</Description>
<Type>%Integer</Type>
</Property>

<Property name="GebindePreis">
<Description>
Preis des Gebinde zum Lieferzeitpunkt</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoMenge">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoMenge}=##class(DBAgrofresh.GebDetail).GebindeSaldoMengeClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Property name="GebindeSaldoBetragExklMwst">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragExklMwst}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetragExklMwstClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebKontr">
<Type>DBAgrofresh.GebKontr</Type>
<Cardinality>parent</Cardinality>
<Inverse>GebDetail</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="GebKontr"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebKontrIndex">
<Properties>GebKontr</Properties>
</Index>

<Property name="Auftrag">
<Description>
 Auftrag</Description>
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>one</Cardinality>
<Inverse>GDAuftrag</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="GebindeSaldoBetragInklMwst">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragInklMwst}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetragInklMwstClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragMwst">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragMwst}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetragMwstClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="Mwst">
<Type>DBFibu.SD.Mwst</Type>
<Cardinality>one</Cardinality>
<Inverse>GebDetailMwst</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="MwstSatz">
<Description>
Mwst-Satz</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragExklMwstFW">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragExklMwstFW}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetExklMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragInklMwstFW">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragInklMwstFW}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetInklMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragMwstFW">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragMwstFW}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetMwstFWClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindePreisFW">
<Description>
Preis des Gebinde zum Lieferzeitpunkt</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeMiete">
<Description>
Preis des Gebinde Miete zum Annahmezeitpunkt</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeAdminKosten">
<Description>
Preis der Gebinde Administrationskosten zum Annahmezeitpunkt</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragMiete">
<Description>
Saldo</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragMiete}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetragMieteClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragAdmin">
<Description>
Saldo</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragAdmin}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetragAdminClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindePreisTotal">
<Description>
Preis des Gebinde inkl Miete und Administrationskosten</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindePreisTotal}=##class(DBAgrofresh.GebDetail).GebindePreisTotalClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GebindeSaldoBetragBetrag">
<Description>
Saldo</Description>
<Type>%Decimal</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoBetragBetrag}=##class(DBAgrofresh.GebDetail).GebindeSaldoBetragBetragClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
<Parameter name="SCALE" value="5"/>
</Property>

<UDLText name="T">
<Content><![CDATA[
//Adminkosten je Ladung

]]></Content>
</UDLText>

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

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

<Method name="DeletePositonsByAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	/*Set strSQL="DELETE FROM DBAgrofresh.GebDetail WHERE Auftrag ='"_AuftragOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()*/
	//w "Delete GebindePositions by Auftrag Status = "_sc,!
	
	// Da mehrere Kunden Probleme beim löschen hatten, neuer Versuch so zu löschen
	set st = 1
	Set strSQL="SELECT ID FROM DBAgrofresh.GebDetail WHERE Auftrag = "_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")
			set state = ##class(DBAgrofresh.GebDetail).%DeleteId(id)		
			set st = $$$ISOK(st)
			if (st = 0) {
				Quit
			}
		}
	}
	Quit st
]]></Implementation>
</Method>

<Method name="DeleteVerBarPositonsByAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	Set strSQL="DELETE FROM DBAgrofresh.GebDetail WHERE Auftrag ='"_AuftragOid_"' AND GebKontr->Gebinde->GebindeNr <= DBAgrofresh.Konst_GebindeFirstNichtVerrechenbar()"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	//w "Delete GebindePositions by Auftrag Status = "_sc,!
	Quit $$$ISOK(sc)
]]></Implementation>
</Method>

<Method name="GetIdByAuftragGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,GebindeOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set MyId = ""
	set strSQL ="SELECT ID FROM DBAgrofresh.GebDetail WHERE Auftrag = "_AuftragOid_" AND GebKontr->Gebinde = "_GebindeOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		IF rs.Next(.sc) {
			Set MyId=rs.Data("ID")
		}
    }
	Quit MyId
]]></Implementation>
</Method>

<Method name="GebindeSaldoMengeClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set menge = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			// Wenn gebinde mit Saldovortrag oder Gebinde Verrechnen (nicht je auftrag) muss der Vortrag mitgerechnet werden
			if ((obj.Auftrag '= "") && ((obj.NieVerrechnen = 1) || (obj.Auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeMitSaldovortrag()))) {
				set menge = (obj.GebindeSaldoVortrag + obj.LieferungMenge - obj.RetourenMenge)
			} else {
				set menge = (obj.LieferungMenge - obj.RetourenMenge)
			}
		}
	}
	Quit menge
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetragExklMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			/*if (obj.Auftrag.CodeMwst '= ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) {
				set betrag = ##class(DBAgrofresh.GebDetail).BetragInklAdminMieteClass(ID)
			} else {
				set betrag = obj.GebindeSaldoBetragInklMwst - obj.GebindeSaldoBetragMwst
			}*/
			set betrag = ##class(DBAgrofresh.GebDetail).BetragInklAdminMieteClass(ID)
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetragInklMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			/*if (obj.Auftrag.CodeMwst '= ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) {
				set betrag = obj.GebindeSaldoBetragExklMwst + obj.GebindeSaldoBetragMwst
			} else {
				set betrag = ##class(DBAgrofresh.GebDetail).BetragInklAdminMieteClass(ID)
			}*/
			set betrag = obj.GebindeSaldoBetragExklMwst + obj.GebindeSaldoBetragMwst
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetragMwstClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set betrag = ##class(DBAgrofresh.GebDetail).BetragInklAdminMieteClass(ID)
			if (obj.Auftrag.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGKEINE()) {
				set betrag = 0
			/*} elseif (obj.Auftrag.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) {
				set betrag = betrag - (betrag / (1+ (obj.MwstSatz / 100)))
				set betrag = ##class(DBUtils.NumberUtils).RoundGemEinst(obj.GebKontr.Gebinde.Mandant,betrag)*/
			} else {
				set betrag = (betrag / 100 * obj.MwstSatz)
				set betrag = ##class(DBUtils.NumberUtils).RoundGemEinst(obj.GebKontr.Gebinde.Mandant,betrag)
			}
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetExklMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set menge = obj.GebindeSaldoMenge
			if (obj.Auftrag.CodeMwst '= ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) {
				set betrag = (menge * obj.GebindePreisFW)
			} else {
				set betrag = obj.GebindeSaldoBetragInklMwstFW - obj.GebindeSaldoBetragMwstFW
			}
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetInklMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set menge = obj.GebindeSaldoMenge
			if (obj.Auftrag.CodeMwst '= ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) {
				set betrag = obj.GebindeSaldoBetragExklMwstFW + obj.GebindeSaldoBetragMwstFW
			} else {
				set betrag = (menge * obj.GebindePreisFW)
			}
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetMwstFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set betrag = (obj.GebindeSaldoMenge * obj.GebindePreisFW)
			if (obj.Auftrag.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGKEINE()) {
				set betrag = 0
			} elseif (obj.Auftrag.CodeMwst = ##class(DBCore.Konst).MWSTSTEUERUNGINKL()) {
				set betrag = betrag - (betrag / (1+ (obj.MwstSatz / 100)))
			} else {
				set betrag = (betrag / 100 * obj.MwstSatz)
			}
			set betrag = $NORMALIZE(betrag,2)
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindePreisFWClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	// Nicht mehr Aktiv, da der Preis genau gespeichert werden muss, da sonst rundungsdifferenzen 
	// wenn von FW ausgeganen wird und in EW umgerechnet wird
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set betrag = obj.GebindePreis
			set kurs = obj.Auftrag.Kurs
			set kursEinheit = obj.Auftrag.Kurseinheit
			if (+kursEinheit <= 0) {
				set kursEinheit=1
			}
			if (+kurs = 0) {
				set betrag = 0
			} else {
				set betrag = (betrag / kurs * kursEinheit)
				set betrag = $NORMALIZE(betrag,2)
			}
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetragMieteClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set menge = obj.LieferungMenge
			set betrag = (menge * obj.GebindeMiete)
			k obj
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetragBetragClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set menge = obj.GebindeSaldoMenge 
			set betrag = (menge * obj.GebindePreis)
			k obj
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoBetragAdminClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set menge = obj.LieferungMenge
			set betrag = (menge * obj.GebindeAdminKosten)
			k obj
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="BetragInklAdminMieteClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set betrag = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			set menge = obj.GebindeSaldoMenge
			set betrag = (menge * obj.GebindePreis)
			set mengeR = obj.LieferungMenge
			set adminBetrag = 0
			set mieteBetrag = 0
			set orderHasDet = ##class(DBAgrofresh.Auftragspos).AuftragHasDetails(obj.Auftrag.%Id())
			if ((mengeR '= 0) && (orderHasDet = 0)) {
				set adminBetrag = (mengeR * obj.GebindeAdminKosten)
				set mieteBetrag = (mengeR * obj.GebindeMiete)
			}
			set betrag = betrag + mieteBetrag + adminBetrag
			set betrag = ##class(DBUtils.NumberUtils).RoundGemEinst(obj.Auftrag.Mandant, betrag)
			k obj
		}
	}
	Quit betrag
]]></Implementation>
</Method>

<Method name="GebindePreisTotalClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set preis = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		if (obj '= "") {
			if (obj.GebindePreis '= $c(0)) {
				set preis = (preis + obj.GebindePreis)
			}
			set orderHasDet = ##class(DBAgrofresh.Auftragspos).AuftragHasDetails(obj.Auftrag.%Id())
			if ((obj.LieferungMenge '= 0) && (orderHasDet=0)) {
				if (obj.GebindeAdminKosten '= $c(0)) {
					set preis = (preis + obj.GebindeAdminKosten)
				}
				if (obj.GebindeMiete '= $c(0)) {
					set preis = (preis + obj.GebindeMiete)
				}
			}
			//set preis = ((+obj.GebindePreis) + (+obj.GebindeMiete) + (+obj.GebindeAdminKosten))
			k obj
		}
	}
	Quit preis
]]></Implementation>
</Method>

<Method name="%OnBeforeSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	If (Insert=0) {
		set gebindeId = ..%Id()
		set oldRetouren = 0
		set oldLieferung = 0
		set gebKopfId = 0
		set gebAbgerechnet = 0
		
		
		Set strSQL="SELECT  RetourenMenge, LieferungMenge, GebKontr->ID GebindeKopf, Verrechnet FROM DBAgrofresh.GebDetail WHERE ID='"_gebindeId_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
		IF $$$ISOK(sc) {
			if rs.Next(.sc) {
				Set oldRetouren=rs.Data("RetourenMenge")
				Set oldLieferung=rs.Data("LieferungMenge")
				Set gebKopfId=rs.Data("GebindeKopf")
				Set gebAbgerechnet=rs.Data("Verrechnet")
			}
		}
		
		Set ^GebDetOldValues(gebindeId, 1) = oldRetouren
		Set ^GebDetOldValues(gebindeId, 2) = oldLieferung
		Set ^GebDetOldValues(gebindeId, 3) = gebKopfId
		Set ^GebDetOldValues(gebindeId, 4) = gebAbgerechnet
	}
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="%OnAfterSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set gebindeId = ..%Id()
	Set oldLieferung = 0
	If (Insert=0) {
		Set oldRetouren = ^GebDetOldValues(gebindeId, 1)
		Set oldLieferung = ^GebDetOldValues(gebindeId, 2)
		Set gebKopfId = ^GebDetOldValues(gebindeId, 3)
		Set gebAbgerechnet = ^GebDetOldValues(gebindeId, 4)
		do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(gebKopfId, oldLieferung, oldRetouren, gebAbgerechnet, 1)
	}
		
	// nicht mutiert setzen wenn Gebinde retouren oder nur Gebinde wegen Lagerghetto
	// bei lieferung ändern jedoch schon.
	// dh nach Absprache mit AW 10.03.2011, und doch mutieret setzten wenn Rechnung dh gem AW 13.04.2011
	if ((oldLieferung '= ..LieferungMenge) || (..Auftrag.Auftragsstatus >= ##class(DBAgrofresh.Konst).AuftragstatusRechnungGutschrift())) {
		do ..Auftrag.SetBStatusMutiert()
	}
	do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(..GebKontr.%Id(), ..LieferungMenge, ..RetourenMenge, ..Verrechnet, 0)
	
	KILL ^GebDetOldValues(gebindeId)
	
	Quit $$$OK
]]></Implementation>
</Method>

<Method name="%OnDelete">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%ObjectIdentity</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set myId = $lg(oid,1)
	
	set oldRetouren = 0
	set oldLieferung = 0
	set gebKopfId = 0
	set gebAbgerechnet = 0
	set auftragId = ""
	
	Set strSQL="SELECT  RetourenMenge, LieferungMenge, GebKontr->ID GebindeKopf, Verrechnet, Auftrag->ID auftragId FROM DBAgrofresh.GebDetail WHERE ID='"_myId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	IF ($$$ISOK(sc)) {
		if (rs.Next(.sc)) {
			Set oldRetouren=rs.Data("RetourenMenge")
			Set oldLieferung=rs.Data("LieferungMenge")
			Set gebKopfId=rs.Data("GebindeKopf")
			Set gebAbgerechnet=rs.Data("Verrechnet")
			Set auftragId=rs.Data("auftragId")
		}
	}
	
	do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(gebKopfId, oldLieferung, oldRetouren, gebAbgerechnet, 1)
	do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass(auftragId)
	
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="InsertGebDetail">
<Code>	
	new newRetouren
	new newLieferung
	new gebKopfId
	
	set gebKopfId = {GebKontr*N}
	set newRetouren = {RetourenMenge*N}
	set newLieferung = {LieferungMenge*N}
		
	// nicht mutiert setzen wenn Gebinde retouren oder nur Gebinde wegen Lagerghetto
	// bei lieferung ändern jedoch schon.
	// dh nach Absprache mit AW 10.03.2011
	if (+newLieferung '= 0) {
		do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass({Auftrag*N})
	}
	do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(gebKopfId, newLieferung, newRetouren, 0, 0)</Code>
<Event>INSERT</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="UpdateGebDetail">
<Code>	new gebKopfId
	new abgerechnet
	new oldRetouren
	new newRetouren
	new oldLieferung
	new newLieferung
	
	set gebKopfId = {GebKontr*N}
	set abgerechnet = {Verrechnet*O}
	set oldRetouren = {RetourenMenge*O}
	set oldLieferung = {LieferungMenge*O}
	do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(gebKopfId, oldLieferung, oldRetouren, abgerechnet, 1)
	
	set abgerechnet = {Verrechnet*N}
	set newRetouren = {RetourenMenge*N}
	set newLieferung = {LieferungMenge*N}
	
	// nicht mutiert setzen wenn Gebinde retouren oder nur Gebinde wegen Lagerghetto
	// bei lieferung ändern jedoch schon.
	// dh nach Absprache mit AW 10.03.2011
	if (oldLieferung '= newLieferung) {
		do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass({Auftrag*N})
	}
	
	do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(gebKopfId, newLieferung, newRetouren, abgerechnet, 0)</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Trigger name="DeleteGebDetail">
<Code>	do ##class(DBAgrofresh.Auftragskopf).SetBStatusMutiertClass({Auftrag*N})
	
	new newRetouren
	new newLieferung
	new gebKopfId
	new abgerechnet
	set abgerechnet = {Verrechnet*O}
	
	set gebKopfId = {GebKontr*O}
	set newRetouren = {RetourenMenge*O}
	set newLieferung = {LieferungMenge*O}
		
	do ##class(DBAgrofresh.GebDetail).AddBetragToSaldo(gebKopfId, newLieferung, newRetouren, abgerechnet, 1)</Code>
<Event>DELETE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Method name="AddBetragToSaldo">
<ClassMethod>1</ClassMethod>
<FormalSpec>kopfId:%String,oldLieferung:%Decimal(SCALE=5),oldRetouren:%Decimal(SCALE=5),abgerechnet:%Boolean,storno:%Boolean</FormalSpec>
<Implementation><![CDATA[
	if (storno = 1) {
		set oldLieferung = ((-1)*oldLieferung)
		set oldRetouren = ((-1)*oldRetouren)
	}
	
	Set kontr = ##class(DBAgrofresh.GebKontr).%OpenId(kopfId)
	if ((kontr '= $c(0)) && (kontr '= "")) {
		if (abgerechnet = 1) {
			set kontr.AuslieferungAbgerechnet = kontr.AuslieferungAbgerechnet + oldLieferung
			set kontr.AnlieferungAbgerechnet = kontr.AnlieferungAbgerechnet + oldRetouren
		
		} else {
			set kontr.Lieferung = kontr.Lieferung + oldLieferung
			set kontr.Retouren = kontr.Retouren + oldRetouren	
		}
		do kontr.%Save()
	}
	
	
	// prüfen ob noch Gebindedetails vorhanden
	// Abfrage
    Set strSQL="SELECT NVL(count(ID),0) AS anz FROM DBAgrofresh.GebDetail WHERE GebKontr="_kopfId
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    // Result prüfen
    if (rs.Next()) {
	    if (+rs.Data("anz") = 0) {
		    Set strSQL="DELETE FROM DBAgrofresh.GebKontr WHERE ID="_kopfId
		    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		    Do rs.Prepare(strSQL)
		    Set sc=rs.Execute(kopfId)
	    } 
    }
]]></Implementation>
</Method>

<Property name="GebindeSaldoVortrag">
<Description>
SaldoVortrag</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldoVortrag}=##class(DBAgrofresh.GebDetail).GebindeSaldoVortragClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Method name="GebindeSaldoVortragClass">
<Description>
forceVortrag nimmt auch den Saldovortrag mit wenn es auf dem Auftrag nicht eingestellt ist (Bsp. Gebindekontrolle)</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String,forceVortrag:%Boolean=0</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set vortrag = 0
    if (ID'="") {
    	set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
                
        if ((obj.NieVerrechnen = 1) || (forceVortrag=1) || ((obj.Auftrag '= "") && (obj.Auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeMitSaldovortrag()))) {
        	set LsNr = +obj.Auftrag.LieferscheinNr
			set Datum = obj.Datum
			if (Datum = "") {
		    	set Datum = obj.Auftrag.Lieferdatum
		   	}
		   	set GebKontr = obj.GebKontr.%Id()
		   	set Saldo = obj.GebKontr.GebindeSaldo
		   	// Wenn Lieferschein vorhanden nach LS gehen
		   	if (obj.Auftrag.Auftragsstatus >= ##class(DBAgrofresh.Konst).AuftragstatusLieferschein()) {
			   	&sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :vortrag FROM DBAgrofresh.GebDetail WHERE (Datum> TO_DATE(:Datum) OR (Datum= TO_DATE(:Datum) AND  ((:LsNr <> 0 AND Auftrag->Lieferscheinnr>=:LsNr) OR NVL(Auftrag->Lieferscheinnr,0) = 0))) AND GebKontr=:GebKontr AND (NVL(Verrechnet,0)<>1 OR NVL(NieVerrechnen,0)=1))
			   	if (SQLCODE '= 0) {
				   	set vortrag = 0
			   	}
			   	//w " GebindeSaldoVortragClass in if Saldo: ",Saldo, "Vortrag: ", vortrag, !
			   	// Wenn noch kein LS den Saldo vom Letzten LS holen
		   	} else {
			   	// dh Alle die noch unter status LS sind abziehen vom Momentanen Saldo
			   	&sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :vortrag FROM DBAgrofresh.GebDetail WHERE NVL(Auftrag->Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusLieferschein() AND NVL(Auftrag->Lieferscheinnr,0)=0 AND GebKontr=:GebKontr AND (NVL(Verrechnet,0)<>1 OR NVL(NieVerrechnen,0)=1))
			   	if (SQLCODE '= 0) {
				   	set vortrag = 0
			   	}
			   	//w " GebindeSaldoVortragClass in Else Saldo: ",Saldo, "Vortrag: ", vortrag, !
		   	}
	        set vortrag = Saldo - vortrag
	    }
	}
    Quit vortrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoPerDatClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String,PerDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set vortrag = 0
	if (ID'="") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		
		set LsNr = +obj.Auftrag.LieferscheinNr
		set Datum = obj.Datum
		if (Datum = "") {
			set Datum = obj.Auftrag.Lieferdatum
		}
		set GebKontr = obj.GebKontr.%Id()
		&sql(SELECT(SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :vortrag FROM DBAgrofresh.GebDetail WHERE (Datum< TO_DATE(:Datum) OR (Datum= TO_DATE(:Datum) AND (:LsNr = 0 OR Auftrag->Lieferscheinnr<:LsNr))) AND Datum >= TO_DATE(:PerDatum) AND GebKontr=:GebKontr AND NVL(Verrechnet,0)<>1)
		if (SQLCODE '= 0) {
			set vortrag = 0
	   	}
	}
	Quit vortrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoPerDatIFCOClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String,Lang:%String,PerDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set vortrag = 0
	if (ID'="") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		
			set adrOid = obj.Auftrag.Adresse.%Id()
			set Datum = obj.Datum
			if (Datum = "") {
				set Datum = obj.Auftrag.Lieferdatum
			}
			set mandantOid = obj.Auftrag.Mandant
			set strSQL = "SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) AS Vortrag FROM DBAgrofresh.GebDetail WHERE Datum < TO_DATE("_Datum_") AND Datum >= '"_PerDatum_"' AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, "_mandantOid_", '"_Lang_"'),1,2) like 'IF' AND Auftrag->Adresse ="_adrOid_" AND NVL(Verrechnet,0)<>1"
			Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
			Do rs.Prepare(strSQL)
			Set sc=rs.Execute()
	        IF ($$$ISOK(sc)) {
				IF (rs.Next(.sc)) {
					Set vortrag=rs.Data("Vortrag")
				}
	        }
	}
	Quit vortrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoVortragIFCOClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String,Lang:%String,forceVortrag:%Boolean=0</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set vortrag = 0
	if (ID'="") {
		set obj = ##class(DBAgrofresh.GebDetail).%OpenId(ID)
		
		if ((forceVortrag=1) || ((obj.Auftrag '= "") && (obj.Auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeMitSaldovortrag()))) {

			set adrOid = obj.Auftrag.Adresse.%Id()
			set Datum = obj.Datum
			if (Datum = "") {
				set Datum = obj.Auftrag.Lieferdatum
			}
			set mandantOid = obj.Auftrag.Mandant
			set strSQL = "SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) AS Vortrag FROM DBAgrofresh.GebDetail WHERE Datum < TO_DATE("_Datum_") AND SUBSTRING(DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde, "_mandantOid_", '"_Lang_"'),1,2) like 'IF' AND Auftrag->Adresse ="_adrOid_" AND NVL(Verrechnet,0)<>1"
			Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
			Do rs.Prepare(strSQL)
			Set sc=rs.Execute()
	        IF ($$$ISOK(sc)) {
				IF (rs.Next(.sc)) {
					Set vortrag=rs.Data("Vortrag")
				}
	        }
		}
	}
	Quit vortrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoByGebAuftrClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>GebID:%String,Auftrag:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set vortrag = 0
	if ((GebID'="") && (Auftrag '= "")) {
		set auftr = ##class(DBAgrofresh.Auftragskopf).%OpenId(Auftrag)
		
		set LsNr = +auftr.LieferscheinNr
		set adrOid = auftr.Adresse.Adresse.%Id()
		set Datum = auftr.Lieferdatum
		set mandantOid = auftr.Mandant
		set GebKontr = ##class(DBAgrofresh.GebKontr).GetIdByGebAdr(GebID, adrOid)
		if ((GebKontr '= "") && (GebKontr '= $c(0))) {
			&sql(SELECT(SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :vortrag FROM DBAgrofresh.GebDetail WHERE (Datum< TO_DATE(:Datum) OR (Datum= TO_DATE(:Datum) AND  Auftrag->Lieferscheinnr<:LsNr)) AND GebKontr=:GebKontr AND NVL(Verrechnet,0)<>1)
			if (SQLCODE '= 0) {
				set vortrag = 0
		   	}
		}
	}
	Quit vortrag
]]></Implementation>
</Method>

<Method name="SetGebindeVerrechnet">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
    set strSQL = "UPDATE DBAgrofresh.GebDetail SET Verrechnet=1 WHERE Auftrag="_AuftragOid_" And NVL(NieVerrechnen,0) = 0"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute()
    Quit sc
]]></Implementation>
</Method>

<Method name="SetGebindeNichtVerrechnet">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	set strSQL = "UPDATE DBAgrofresh.GebDetail SET Verrechnet=0 WHERE Auftrag="_AuftragOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    Quit sc
]]></Implementation>
</Method>

<Method name="GetGebindedetailOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,GebindeOid:%String,AdressOid:%String,MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set myId=""
	
	set strSQL = "SELECT ID FROM DBAgrofresh.GebDetail WHERE Auftrag="_AuftragOid_" AND GebKontr->Kunde="_AdressOid_" AND GebKontr->Gebinde="_GebindeOid_" AND GebKontr->Mandant="_MandantOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		IF rs.Next(.sc) {
			Set myId=rs.Data("ID")
		}
    }
	        
	Quit myId
]]></Implementation>
</Method>

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

<Method name="ResetGebDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	// Datums fehlen oder sind völlig falsch
	set strSQL = "SELECT ID FROM DBAgrofresh.GebDetail WHERE Auftrag->Mandant="_MandOid
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	if ($$$ISOK(sc)) {
		while (rs.Next(.sc)) {
			Set myId=rs.Data("ID")
			set gebDet = ##class(DBAgrofresh.GebDetail).%OpenId(myId)
			if (gebDet '= "") {
				// Automutiert Flag
				d ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(gebDet.Auftrag.%Id(), 1)
				
				if ((gebDet.Auftrag.Lieferdatum '= 0) && (gebDet.Auftrag.Lieferdatum '= "")) {
					set gebDet.Datum = gebDet.Auftrag.Lieferdatum
				}
				// prüfung ob Verrechnet Flag fälschlicherweise nicht gesetzt
				if ((+gebDet.Auftrag.Auftragsstatus>=##class(DBAgrofresh.Konst).AuftragstatusRechnungGutschrift()) &&
					(+gebDet.Auftrag.GebindeVerrechnung >= 3) &&
					(+gebDet.NieVerrechnen = 0)) {
					//&&(##class(DBAgrofresh.AuftragsKopf).IsStatusGedruckt(gebDet.Auftrag.BearbeitungsstatusRG) = 1)
					set gebDet.Verrechnet = 1
				}
				
				// prüfung ob Flag fälschlicherweise gesetzt
				if ((+gebDet.NieVerrechnen = 0) && (+gebDet.Verrechnet = 1)) {
					set gebDet.Verrechnet = 0
				}
				set state = gebDet.%Save()
				// Automutiert Flag zurücksetzen
				d ##class(DBAgrofresh.Auftragskopf).SetFlagAutoMutiert(gebDet.Auftrag.%Id(), 0)
				k gebDet
			}
		}
	}
	Quit sc
]]></Implementation>
</Method>

<Method name="ResetGebPreis">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,vonAdrNr:%Integer,bisAdrNr:%Integer,vonDatum:%Date,bisDatum:%Date,vonGebindeNr:%Integer,bisGebindeNr:%Integer,rg:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	// Datums fehlen auch manchmal sollte zwar nicht mehr vorkommen
	set strSQL = "UPDATE DBAgrofresh.GebDetail SET Datum=Auftrag->Lieferdatum WHERE Auftrag->Mandant='"_MandOid_"' AND Auftrag->Verbucht=0 AND Datum=0"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	// Auf manchen Gebkontrollen fehlt noch der Mandant
	set strSQL = "UPDATE DBAgrofresh.GebKontr SET Mandant='"_MandOid_"' WHERE Gebinde->Mandant='"_MandOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	// Auf Äufträgen die Verrechnungsart von der Auftragssteuerung eintragen lassen
	// Auslessen und setzen der Art
	set strSQL = "UPDATE DBAgrofresh.Auftragskopf SET GebindeVerrechnung=DBAgrofresh.AuftrStrg_GetGebindeVerrechnenByAdr(Adresse->Adresse->ID) "
	// prüfung Datum
	set strSQL = strSQL_"WHERE Lieferdatum>= TO_DATE("_vonDatum_") AND Lieferdatum<= TO_DATE("_bisDatum_") AND NVL(Verbucht,0)=0 AND "
	// prüfung AdressNr nur falls bisAdrNr nicht 0
	if (bisAdrNr '= 0) {
		set strSQL = strSQL_"Adresse->Adresse->Adressnummer >= "_vonAdrNr_" AND Adresse->Adresse->Adressnummer <= "_bisAdrNr_" AND "
	}
	// prüfung ob bereits gedruckte Rechnungen auch
	if (rg = 0) {
		set strSQL = strSQL_"NVL(BearbeitungsstatusRG,0) = 0 AND "
	}
	// prüfung Mandant
	set strSQL = strSQL_"Mandant = '"_MandOid_"'"
	//w "Statement Auftrag: "_strSQL, !
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	
	// Preise neu berrechnen lassen
	set strSQL = "UPDATE DBAgrofresh.GebDetail SET GebindePreis=DBAgrofresh.GebPreis_GetPreisDetByAuftrag(Auftrag->ID, GebKontr->Gebinde->ID) "
	set strSQL = strSQL_", GebindePreisFW=DBUtils.NumberUtils_GetBetragFW(GebindePreis ,Auftrag->Kurs, Auftrag->Kurseinheit) "
	
	// prüfung Mandant, verbuchung
	set strSQL = strSQL_"WHERE Auftrag->Mandant='"_MandOid_"' AND NVL(Auftrag->Verbucht,0)=0"
	// prüfung auf Datum
	set strSQL = strSQL_" AND Datum>= TO_DATE("_vonDatum_") AND Datum<= TO_DATE("_bisDatum_") "
	// prüfung Gebinde nur falls bis Gebinde nicht 0
	if (bisGebindeNr '= 0) {
		set strSQL = strSQL_" AND GebKontr->Gebinde->GebindeNr >="_vonGebindeNr_" AND GebKontr->Gebinde->GebindeNr <="_bisGebindeNr_""
	}
	// prüfung ob bereits gedruckte Rechnungen auch
	if (rg = 0) {
		set strSQL = strSQL_" AND NVL(Auftrag->BearbeitungsstatusRG,0) = 0"
	}
	// prüfung AdressNr nur falls bisAdrNr nicht 0
	if (bisAdrNr '= 0) {
		set strSQL = strSQL_" AND Auftrag->Adresse->Adresse->Adressnummer >= "_vonAdrNr_" AND Auftrag->Adresse->Adresse->Adressnummer <= "_bisAdrNr_""
	}
	//w "Statement Gebinde: "_strSQL, !
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    Quit sc
]]></Implementation>
</Method>

<Method name="ResetGebPreisByAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	
	// Preise neu berrechnen lassen
	set strSQL = "UPDATE DBAgrofresh.GebDetail SET GebindePreis=DBAgrofresh.GebPreis_GetPreisDetByAuftrag(Auftrag->ID, GebKontr->Gebinde->ID) "
	// prüfung Mandant, verbuchung
	set strSQL = strSQL_"WHERE Auftrag='"_AuftragOid_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    Quit sc
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("GebDetail")</DataLocation>
<DefaultData>GebDetailDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.GebKontrC("GebDetail")</IdLocation>
<IndexLocation>^DBAgrofresh.GebDetailI</IndexLocation>
<StreamLocation>^DBAgrofresh.GebDetailS</StreamLocation>
<Data name="GebDetailDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Datum</Value>
</Value>
<Value name="3">
<Value>Verrechnet</Value>
</Value>
<Value name="4">
<Value>LieferungMenge</Value>
</Value>
<Value name="6">
<Value>RetourenMenge</Value>
</Value>
<Value name="8">
<Value>GebindePreis</Value>
</Value>
<Value name="9">
<Value>Auftrag</Value>
</Value>
<Value name="10">
<Value>Mwst</Value>
</Value>
<Value name="11">
<Value>MwstSatz</Value>
</Value>
<Value name="12">
<Value>GebindeFWPreis</Value>
</Value>
<Value name="13">
<Value>GebindePreisFW</Value>
</Value>
<Value name="14">
<Value>GebindeMiete</Value>
</Value>
<Value name="15">
<Value>GebindeAdminKosten</Value>
</Value>
<Value name="16">
<Value>AdminKostenJeLadung</Value>
</Value>
<Value name="17">
<Value>GebindeSaldoMenge</Value>
</Value>
<Value name="18">
<Value>GebindeSaldoBetragExklMwst</Value>
</Value>
<Value name="19">
<Value>GebindeSaldoBetragInklMwst</Value>
</Value>
<Value name="20">
<Value>GebindeSaldoBetragMwst</Value>
</Value>
<Value name="21">
<Value>GebindeSaldoBetragExklMwstFW</Value>
</Value>
<Value name="22">
<Value>GebindeSaldoBetragInklMwstFW</Value>
</Value>
<Value name="23">
<Value>GebindeSaldoBetragMwstFW</Value>
</Value>
<Value name="24">
<Value>GebindeSaldoBetragMiete</Value>
</Value>
<Value name="25">
<Value>GebindeSaldoBetragAdmin</Value>
</Value>
<Value name="26">
<Value>GebindePreisTotal</Value>
</Value>
<Value name="27">
<Value>GebindeSaldoBetragBetrag</Value>
</Value>
<Value name="28">
<Value>NieVerrechnen</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AdminKostenJeLadung">
</Property>
<Property name="Auftrag">
</Property>
<Property name="Datum">
</Property>
<Property name="GebKontr">
</Property>
<Property name="GebindeAdminKosten">
</Property>
<Property name="GebindeMiete">
</Property>
<Property name="GebindePreis">
</Property>
<Property name="GebindePreisFW">
</Property>
<Property name="GebindePreisTotal">
</Property>
<Property name="GebindeSaldoBetrag"/>
<Property name="GebindeSaldoBetragAdmin">
</Property>
<Property name="GebindeSaldoBetragBetrag">
</Property>
<Property name="GebindeSaldoBetragExklMwst">
</Property>
<Property name="GebindeSaldoBetragExklMwstFW">
</Property>
<Property name="GebindeSaldoBetragInklMwst">
</Property>
<Property name="GebindeSaldoBetragInklMwstFW">
</Property>
<Property name="GebindeSaldoBetragMiete">
</Property>
<Property name="GebindeSaldoBetragMwst">
</Property>
<Property name="GebindeSaldoBetragMwstFW">
</Property>
<Property name="GebindeSaldoMenge">
</Property>
<Property name="GebindeSaldoVortrag">
</Property>
<Property name="LieferungBetrag"/>
<Property name="LieferungMenge">
</Property>
<Property name="Mwst">
</Property>
<Property name="MwstSatz">
</Property>
<Property name="NieVerrechnen">
</Property>
<Property name="RetourenBetrag"/>
<Property name="RetourenMenge">
</Property>
<Property name="Verrechnet">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.GebKontr">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61102,38178.734514</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="DatumAnfangsbestand">
<Description>
Datum (Anfangsbestand)</Description>
<Type>%Date</Type>
</Property>

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

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

<Property name="Anfangsbestand">
<Description>
Anfangbestand</Description>
<Type>%Integer</Type>
</Property>

<Property name="AuslieferungAbgerechnet">
<Description>
Auslieferung abgerechnet</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnlieferungAbgerechnet">
<Description>
Anlieferung abgerechnet</Description>
<Type>%Integer</Type>
</Property>

<Property name="GebDetail">
<Type>DBAgrofresh.GebDetail</Type>
<Cardinality>children</Cardinality>
<Inverse>GebKontr</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Kunde">
<Description>
Kunde</Description>
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>GKKunde</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>

<Property name="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>GKGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebindeIndex">
<Properties>Gebinde</Properties>
</Index>

<Property name="Mandant">
<Description>
Mandant muss gelinkt werden wegen Fremdmandant (Abfragen auf Mandant dürfen nicht über Kunde gehen!)</Description>
<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="GebindeSaldo">
<Description>
Saldo(Lieferungen - Retouren)</Description>
<Type>%Integer</Type>
<Calculated>1</Calculated>
<SqlComputeCode> Set {GebindeSaldo}=##class(DBAgrofresh.GebKontr).GebindeSaldoClass({ID}) </SqlComputeCode>
<SqlComputed>1</SqlComputed>
</Property>

<Method name="GebindeSaldoClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>ID:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set menge = 0
	if (ID '= "") {
		set obj = ##class(DBAgrofresh.GebKontr).%OpenId(ID)
		if (obj '= "") {
			set menge = (obj.Anfangsbestand + obj.Lieferung - obj.Retouren)
		}
	}
	Quit menge
]]></Implementation>
</Method>

<Method name="GetIdByGebAdr">
<ClassMethod>1</ClassMethod>
<FormalSpec>GebindeOid:%String,AdresseOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID into :id FROM DBAgrofresh.GebKontr WHERE Gebinde->ID =:GebindeOid AND Kunde=:AdresseOid)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GebindeAnfangsbestandPer">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebKontrOid:%String,perDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	// AnfangsSaldo enstspricht dem Bestand vom Vortag.
	set datum = $ZD(perDatum)
	set date1 = ##class(DBUtils.DateUtils).DayAdd(datum, -1)
	Quit ##class(DBAgrofresh.GebKontr).GebindeSaldoPer(gebKontrOid, $zdh(date1))
]]></Implementation>
</Method>

<Method name="GebindeSaldoByGebAdrDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>GebindeOid:%String,AdresseOid:%String,perDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set saldo = 0
	set id = ##class(DBAgrofresh.GebKontr).GetIdByGebAdr(GebindeOid, AdresseOid)
	if (id '= "") {
		set saldo = ##class(DBAgrofresh.GebKontr).GebindeSaldoPer(id, perDatum)
	}
	Quit saldo
]]></Implementation>
</Method>

<Method name="GebindeSaldoVorByGebAdrAuftr">
<ClassMethod>1</ClassMethod>
<FormalSpec>GebindeOid:%String,AdresseOid:%String,AuftragOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	//w "GebindeSaldoVorByGebAdrAuftr", !
	set saldoVortrag = 0
	set gebKontrOid = ##class(DBAgrofresh.GebKontr).GetIdByGebAdr(GebindeOid, AdresseOid)
	if (gebKontrOid '= "") {
		//w "gebKontrOid:",gebKontrOid, !
		set auftragStatus = 0
		set lsDatum = $H
		&sql(SELECT NVL(Auftragsstatus,0), Lieferdatum into :auftragStatus, :lsDatum FROM DBAgrofresh.Auftragskopf WHERE ID = :AuftragOid)
		   	if (SQLCODE '= 0) {
		   	set auftragStatus = 0
	   	}
		if (auftragStatus >= ##class(DBAgrofresh.Konst).AuftragstatusLieferschein()) {
			set saldoVortrag = ##class(DBAgrofresh.GebKontr).GebindeSaldoPer(gebKontrOid, lsDatum)
			//w "saldoVortrag:",saldoVortrag, !
		} else {
			//w "in Else", !
			set saldo = 0
			&sql(SELECT GebindeSaldo into :saldo FROM DBAgrofresh.GebKontr WHERE ID = :gebKontrOid)
		   	if (SQLCODE '= 0) {
			   	set saldo = 0
		   	}
			//w "saldo:",saldo, !
			set vortrag = 0
		   	// dh Alle die noch unter status LS sind abziehen vom Momentanen Saldo
		   	&sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :vortrag FROM DBAgrofresh.GebDetail WHERE NVL(Auftrag->Auftragsstatus,0) < DBAgrofresh.Konst_AuftragstatusLieferschein() AND NVL(Auftrag->Lieferscheinnr,0)=0 AND GebKontr=:gebKontrOid AND (NVL(Verrechnet,0)<>1 OR NVL(NieVerrechnen,0)=1))
		   	if (SQLCODE '= 0) {
			   	set vortrag = 0
		   	}
		   	set saldoVortrag = saldo - vortrag
			//w "saldoVortrag",saldoVortrag, !
		}
	}
	Quit saldoVortrag
]]></Implementation>
</Method>

<Method name="GebindeSaldoPer">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebKontrOid:%String,perDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set saldo = 0
	&sql(SELECT GebindeSaldo into :saldo FROM DBAgrofresh.GebKontr WHERE ID=:gebKontrOid)
	if (SQLCODE'=0) {
		set saldo = 0
	}
    
	set diff = 0	
    &sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :diff FROM DBAgrofresh.GebDetail WHERE Datum> TO_DATE(:perDatum) AND GebKontr=:gebKontrOid AND NVL(Verrechnet,0)<>1)
	if (SQLCODE'=0) {
		set diff = 0
	}
	  
   	Quit (saldo-diff)
]]></Implementation>
</Method>

<Method name="GebindeSaldoVonBis">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebKontrOid:%String,vonDatum:%Date,bisDatum:%Date</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set saldo = 0
    &sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :saldo FROM DBAgrofresh.GebDetail WHERE Datum>= TO_DATE(:vonDatum) AND Datum<= TO_DATE(:bisDatum) AND GebKontr->ID=:gebKontrOid AND NVL(Verrechnet,0)<>1)
    Quit:(SQLCODE '= 0) 0
   	Quit saldo
]]></Implementation>
</Method>

<Method name="GebindeSaldoIFCOPer">
<ClassMethod>1</ClassMethod>
<FormalSpec>perDatum:%Date,MandantOid:%String,Lang:%String,Kunde:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set saldo = 0
    &sql(SELECT SUM(NVL(GebindeSaldo,0)) into :saldo FROM DBAgrofresh.GebKontr WHERE DBAgrofresh_SD.Gebinde_GetBezeichnungClass(Gebinde->ID, :MandantOid, :Lang) LIKE 'IF%' AND Kunde->ID = :Kunde AND Mandant = :MandantOid)
    if (SQLCODE '= 0) {
	    set saldo = 0
    }
    set diff = 0
    &sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :diff FROM DBAgrofresh.GebDetail WHERE Datum> TO_DATE(:perDatum) AND DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde->ID, :MandantOid, :Lang) LIKE 'IF%' AND NVL(Verrechnet,0)<>1 AND GebKontr->Kunde->ID = :Kunde AND GebKontr->Mandant = :MandantOid)
    if (SQLCODE '= 0) {
	    set diff = 0
    }
   	Quit (saldo-diff)
]]></Implementation>
</Method>

<Method name="GebindeSaldoIFCOVonBis">
<ClassMethod>1</ClassMethod>
<FormalSpec>vonDatum:%Date,bisDatum:%Date,MandantOid:%String,Lang:%String,Kunde:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set saldo = 0
    &sql(SELECT (SUM(NVL(LieferungMenge,0))-SUM(NVL(RetourenMenge,0))) into :saldo FROM DBAgrofresh.GebDetail WHERE Datum>= TO_DATE(:vonDatum) AND Datum <= TO_DATE(:bisDatum) AND DBAgrofresh_SD.Gebinde_GetBezeichnungClass(GebKontr->Gebinde->ID, :MandantOid, :Lang) LIKE 'IF%' AND NVL(Verrechnet,0)<>1 AND GebKontr->Kunde->ID = :Kunde AND GebKontr->Mandant = :MandantOid)
    Quit:(SQLCODE '= 0) 0
   	Quit saldo
]]></Implementation>
</Method>

<Method name="GetAnzDetPosByKopfId">
<ClassMethod>1</ClassMethod>
<FormalSpec>gebKontrOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set count = 0
	&sql(SELECT Count(ID) Into :count FROM DBAgrofresh.GebDetail WHERE GebKontr->ID =:gebKontrOid)
	Quit:(SQLCODE'=0) 0
	Quit +count
]]></Implementation>
</Method>

<Method name="RecalcAllGebindeSaldo">
<ClassMethod>1</ClassMethod>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	&sql(UPDATE DBAgrofresh.GebKontr kontr SET Lieferung = (Select NVL(SUM(NVL(LieferungMenge,0)),0) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id),
		Retouren = (Select NVL(SUM(NVL(RetourenMenge,0)),0) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id)
		WHERE Lieferung  <> (Select NVL(SUM(NVL(LieferungMenge,0)),0) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id) OR
		Retouren  <> (Select NVL(SUM(NVL(RetourenMenge,0)),0) FROM DBAgrofresh.GebDetail det WHERE NVL(Verrechnet,0) = 0 AND GebKontr = kontr.Id))
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.GebKontrD</DataLocation>
<DefaultData>GebKontrDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.GebKontrD</IdLocation>
<IndexLocation>^DBAgrofresh.GebKontrI</IndexLocation>
<StreamLocation>^DBAgrofresh.GebKontrS</StreamLocation>
<Data name="GebKontrDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>DatumAnfangsbestand</Value>
</Value>
<Value name="3">
<Value>Lieferung</Value>
</Value>
<Value name="4">
<Value>Retouren</Value>
</Value>
<Value name="5">
<Value>Anfangsbestand</Value>
</Value>
<Value name="6">
<Value>AuslieferungAbgerechnet</Value>
</Value>
<Value name="7">
<Value>AnlieferungAbgerechnet</Value>
</Value>
<Value name="8">
<Value>Kunde</Value>
</Value>
<Value name="9">
<Value>Gebinde</Value>
</Value>
<Value name="10">
<Value>Mandant</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Anfangsbestand">
</Property>
<Property name="AnlieferungAbgerechnet">
</Property>
<Property name="AuslieferungAbgerechnet">
</Property>
<Property name="DatumAnfangsbestand">
</Property>
<Property name="Gebinde">
</Property>
<Property name="GebindeSaldo">
</Property>
<Property name="Kunde">
</Property>
<Property name="Lieferung">
</Property>
<Property name="Mandant">
</Property>
<Property name="Retouren">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.GebPreis">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57205.915144</TimeChanged>
<TimeCreated>61570,35564.416218</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="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>VPreis</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebindeIndex">
<Properties>Gebinde</Properties>
</Index>

<Property name="AbDatum">
<Description>
AbDatum welches Preis gütlig ist</Description>
<Type>%Date</Type>
</Property>

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

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

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

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

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

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

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

<Method name="HasToBeProposed">
<ClassMethod>1</ClassMethod>
<FormalSpec>FibuMandOid:%String,AdressOid:%String,GebindeOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set propose = 0
	set found = 0
	
	set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
	set debOid = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, AdressOid)
	
	set kundGrpNr = ""
	set kundGrpOid = ""
	
	if ((adr '= "") && (adr.Kundengruppe '= "")) {
		set kundGrpOid = adr.Kundengruppe.%Id()
		set kundGrpNr = adr.Kundengruppe.Code	
	}
		
	// suche Nach Kundenspezifischem
	Set strSQL="SELECT Top 1 ImmerVorschlagen, NurSaldoFuehren FROM DBAgrofresh.KundenGebPreis "_
	 			"WHERE Kunde = '"_debOid_"' "_
	 			"AND Gebinde = '"_GebindeOid_"' "_
	 			"AND AbDatum <= CURRENT_DATE "_
	 			"ORDER BY AbDatum desc"
	 			
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		While rs.Next(.sc) {
	   		set found = 1
			Set propose=rs.Data("ImmerVorschlagen")
			if (propose = 0) {
				Set propose=rs.Data("NurSaldoFuehren")
			}
			Quit
		}
    }
    
    // Suche Nach Gruppensepzifischem
    if ((found = 0) && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart()) && (kundGrpNr '= "")) {
	   set preistyp = 2
		Set strSQL="SELECT Top 1 ImmerVorschlagen, NurSaldoFuehren FROM DBAgrofresh.KGGebPreis "_
		 			"WHERE Gruppe = '"_kundGrpOid_"' "_
		 			"AND Gebinde = '"_GebindeOid_"' "_
		 			"AND AbDatum <= CURRENT_DATE "_
		 			"ORDER BY AbDatum desc"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			If (rs.Next(.sc)) {
	   			set found = 1
				Set propose=rs.Data("ImmerVorschlagen")
				if (propose = 0) {
					Set propose=rs.Data("NurSaldoFuehren")
				}
			}
        } 
    }
    
    // Suche Nach Grundpreis
    if (found = 0) {
		set gebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(GebindeOid)
		if (gebinde '= "") {
			set propose = gebinde.ImmerVorschlagen
		}
    }
       
	Quit propose
]]></Implementation>
</Method>

<Method name="existsPreisKundenspez">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,GebindeOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set isKundenSpez = 0
	set preis = 0
	set found = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(AuftragOid)
	if ((auftrag '= "") && ((auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeVerrechnen()) || (auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeVerrechnenJeAuftrag()) || (auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeBarzahlung())))  {
		// prüfung falls keine Kundengruppe erfasst
		if ((auftrag.Adresse = "") ||(auftrag.Adresse = $c(0)) || (auftrag.Adresse.Adresse = "") || (auftrag.Adresse.Adresse = $c(0))  || (auftrag.Adresse.Adresse.Kundengruppe = "")  || (auftrag.Adresse.Adresse.Kundengruppe = $c(0))) {
			quit 0
		}
		set AdressOid = auftrag.Adresse.Adresse.%Id()
		set Datum = auftrag.Lieferdatum
		if (Datum = "") {
			set Datum = auftrag.Auftragsdatum
		}
	
		set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
		set debOid = auftrag.Adresse.%Id()
	
		set kundGrpOid = auftrag.Adresse.Adresse.Kundengruppe.%Id()
		set kundGrpNr = auftrag.Adresse.Adresse.Kundengruppe.Code
		
		// suche Nach Kundenspezifischem
		Set strSQL="SELECT Top 1 Preis FROM DBAgrofresh.KundenGebPreis "_
		 			"WHERE Kunde = '"_debOid_"' "_
		 			"AND Gebinde = '"_GebindeOid_"' "_
		 			"AND AbDatum <= '"_$ZDate(Datum,3)_"' "_
		 			"ORDER BY AbDatum desc"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
	    IF $$$ISOK(sc) {
			While rs.Next(.sc) {
				set isKundenSpez = 1
		   		set found = 1
				Set preis=rs.Data("Preis")
				Quit
			}
	    }
    
	    // Suche Nach Gruppensepzifischem
	    if ((found = 0) && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart()) && (kundGrpNr '= "")) {
		   set preistyp = 2
			Set strSQL="SELECT Top 1 Preis FROM DBAgrofresh.KGGebPreis "_
			 			"WHERE Gruppe = '"_kundGrpOid_"' "_
			 			"AND Gebinde = '"_GebindeOid_"' "_
		 				"AND AbDatum <= '"_$ZDate(Datum,3)_"' "_
			 			"ORDER BY AbDatum desc"
			Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
			Do rs.Prepare(strSQL)
			Set sc=rs.Execute()
	        IF $$$ISOK(sc) {
				If (rs.Next(.sc)) {
					set isKundenSpez = 1
		   			set found = 1
					Set preis=rs.Data("Preis")
				}
	        } 
	    }
	}
	Quit isKundenSpez
]]></Implementation>
</Method>

<Method name="GetPreisDetByAuftrag">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String,GebindeOid:%String,isKundenSpez:%Boolean=0,NurSaldoFuehren:%Boolean=0</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = 0
	set found = 0
	set auftrag = ##class(DBAgrofresh.Auftragskopf).%OpenId(AuftragOid)
	if ((auftrag '= "") && ((auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeVerrechnen()) || (auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeVerrechnenJeAuftrag()) || (auftrag.GebindeVerrechnung = ##class(DBAgrofresh.Konst).GebindeBarzahlung())))  {
		// prüfung falls keine Kundengruppe erfasst direkt Grundpreis
		set Datum = auftrag.Lieferdatum
		if ((Datum = $c(0)) || (Datum = 0) || (Datum = "")) {
			set Datum = auftrag.Auftragsdatum
		}
		if ((auftrag.Adresse '= "") && (auftrag.Adresse '= $c(0)) && (auftrag.Adresse.Adresse '= "") && (auftrag.Adresse.Adresse '= $c(0))  && (auftrag.Adresse.Adresse.Kundengruppe '= "")  && (auftrag.Adresse.Adresse.Kundengruppe '= $c(0))) {

			set AdressOid = auftrag.Adresse.Adresse.%Id()
		
			set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
			set debOid = auftrag.Adresse.%Id()
			set kundGrpOid = auftrag.Adresse.Adresse.Kundengruppe.%Id()
			set kundGrpNr = auftrag.Adresse.Adresse.Kundengruppe.Code
		
			// suche Nach Kundenspezifischem
			Set strSQL="SELECT Top 1 Preis, NVL(NurSaldoFuehren,0) AS NurSaldoFuehren FROM DBAgrofresh.KundenGebPreis "_
			 			"WHERE Kunde = '"_debOid_"' "_
			 			"AND Gebinde = '"_GebindeOid_"' "_
			 			"AND AbDatum <= '"_$ZDate(Datum,3)_"' "_
			 			"ORDER BY AbDatum desc"
			Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
			Do rs.Prepare(strSQL)
			Set sc=rs.Execute()
		    IF $$$ISOK(sc) {
				While rs.Next(.sc) {
					set isKundenSpez = 1
			   		set found = 1
					Set preis=rs.Data("Preis")
					Set NurSaldoFuehren=rs.Data("NurSaldoFuehren")
					Quit
				}
		    }
	    	// Suche Nach Gruppensepzifischem
		    if ((found = 0) && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart()) && (kundGrpNr '= "")) {
			   set preistyp = 2
				Set strSQL="SELECT Top 1 Preis, NVL(NurSaldoFuehren,0) AS NurSaldoFuehren FROM DBAgrofresh.KGGebPreis "_
				 			"WHERE Gruppe = '"_kundGrpOid_"' "_
				 			"AND Gebinde = '"_GebindeOid_"' "_
			 				"AND AbDatum <= '"_$ZDate(Datum,3)_"' "_
				 			"ORDER BY AbDatum desc"
				Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
				Do rs.Prepare(strSQL)
				Set sc=rs.Execute()
		        IF $$$ISOK(sc) {
					If (rs.Next(.sc)) {
						set isKundenSpez = 1
			   			set found = 1
						Set preis=rs.Data("Preis")
						Set NurSaldoFuehren=rs.Data("NurSaldoFuehren")
					}
		        } 
		    }
		}
	    // Suche Nach Grundpreis
		set gebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(GebindeOid)
		if (gebinde '= "") {
	    	if (found = 0) {
				set isKundenSpez = 0
				set preis = ##class(DBAgrofresh.SD.GebindePreis).GetPreisPerDatum(GebindeOid, Datum)
			
			}
       			
			// Wenn eingestellt nur für gewisse Selektion verrechnen auf diese prüfen
			if (gebinde.Selektion2 '= "") {
				set kundenKat = gebinde.Selektion2.%Id()
				set kundenkatZahlAdr = ""
				if (adr.FreieSelektion2 '= "") {
					set kundenkatZahlAdr = adr.FreieSelektion2.%Id()
				}
				if (kundenKat '= kundenkatZahlAdr) {
					set preis = 0
				}
			}
	    }
	}
	Quit preis
]]></Implementation>
</Method>

<Method name="GetPreis">
<Description><![CDATA[
Methode gibt den Preis anhand des Mandanten, Adresse und Gebinde 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>FibuMandOid:%String,AdressOid:%String,GebindeOid:%String,onlyGroup:%Boolean,onlyKunde:%Boolean,otherKGOid:%String=""</FormalSpec>
<ReturnType>DBAgrofresh.GebPreis</ReturnType>
<Implementation><![CDATA[
	
	set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
	set debOid = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, AdressOid)
	set geb = ##class(DBAgrofresh.SD.Gebinde).%OpenId(GebindeOid)
	set gebGrpOid = ""
	set kundGrpOid = ""
	set kundGrpNr = ""
	// 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	
		}
	}
	set onlyGroup = onlyGroup && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart())

	// wenn Oids nicht übergeben wurden -> Quit
	if ((FibuMandOid = "") || ((otherKGOid="") && (AdressOid = "")) || (GebindeOid = "")) {
		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 Top 1 ID FROM DBAgrofresh.KundenGebPreis "_
		 			"WHERE Kunde = '"_debOid_"' "_
		 			"AND Gebinde = '"_GebindeOid_"' "_
		 			"AND AbDatum <= CURRENT_DATE "_
		 			"ORDER BY AbDatum desc"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
        IF $$$ISOK(sc) {
			While rs.Next(.sc) {
				Set id=rs.Data("ID")
				Quit
			}
        }
		
	} // wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (onlyKunde = 0) && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		Set strSQL="SELECT ID FROM DBAgrofresh.KGGebPreis "_
		 			"WHERE Gruppe = '"_kundGrpOid_"' "_
		 			"AND Gebinde = '"_GebindeOid_"' "_
		 			"AND AbDatum <= CURRENT_DATE "_
		 			"ORDER BY AbDatum desc"
		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(DBAgrofresh.KundenGebPreis).%OpenId(id)	
		} elseif (preistyp = 2) {
			Quit ##class(DBAgrofresh.KGGebPreis).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Method name="DeleteAllByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	Set strSQL="DELETE FROM DBAgrofresh.KundenGebPreis "_
			"WHERE Gebinde->Mandant = '"_MandantOid_"'"
			
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		Set strSQL="DELETE FROM DBAgrofresh.KGGebPreis "_
				"WHERE Gebinde->Mandant = '"_MandantOid_"'"
			
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		Do rs.Prepare(strSQL)
		Set sc=rs.Execute()
    }
	quit sc
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.GebPreisD</DataLocation>
<DefaultData>GebPreisDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.GebPreisD</IdLocation>
<IndexLocation>^DBAgrofresh.GebPreisI</IndexLocation>
<StreamLocation>^DBAgrofresh.GebPreisS</StreamLocation>
<Data name="GebPreisDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Gebinde</Value>
</Value>
<Value name="3">
<Value>AbDatum</Value>
</Value>
<Value name="4">
<Value>Preis</Value>
</Value>
<Value name="5">
<Value>Verrechnen</Value>
</Value>
<Value name="6">
<Value>Zusatzpreis</Value>
</Value>
<Value name="7">
<Value>Miete</Value>
</Value>
<Value name="8">
<Value>EanCode</Value>
</Value>
<Value name="9">
<Value>ImmerVorschlagen</Value>
</Value>
<Value name="10">
<Value>NurSaldoFuehren</Value>
</Value>
</Data>
<Property name="AbDatum"/>
<Property name="EanCode"/>
<Property name="Gebinde"/>
<Property name="ImmerVorschlagen"/>
<Property name="Miete"/>
<Property name="NurSaldoFuehren"/>
<Property name="Preis"/>
<Property name="Verrechnen"/>
<Property name="Zusatzpreis"/>
</Storage>
</Class>


<Class name="DBAgrofresh.GebindeInventar">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57206.009849</TimeChanged>
<TimeCreated>61909,31239.642565</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="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeInventar</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Abteilung">
<Type>DBCore.Abteilung</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeInventar</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="Lagerort">
<Type>DBAgrofresh.SD.Lagerort</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeInventar</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Lagerort"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

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

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

<Method name="GetLastDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lagerort:%String,Abteilung:%String</FormalSpec>
<ReturnType>%Date</ReturnType>
<Implementation><![CDATA[

	set datum = ""
	&sql(SELECT TOP 1 PerDatum INTO :datum FROM DBAgrofresh.GebindeInventar WHERE Gebinde->Mandant = :MandantOid AND (Lagerort = :Lagerort OR :Lagerort = "")  AND (Abteilung = :Abteilung OR :Abteilung = "") ORDER BY PerDatum DESC)
	Quit datum
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.GebindeInventarD</DataLocation>
<DefaultData>GebindeInventarDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.GebindeInventarD</IdLocation>
<IndexLocation>^DBAgrofresh.GebindeInventarI</IndexLocation>
<StreamLocation>^DBAgrofresh.GebindeInventarS</StreamLocation>
<Data name="GebindeInventarDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Gebinde</Value>
</Value>
<Value name="3">
<Value>Abteilung</Value>
</Value>
<Value name="4">
<Value>PerDatum</Value>
</Value>
<Value name="5">
<Value>Vortrag</Value>
</Value>
<Value name="6">
<Value>Eingang</Value>
</Value>
<Value name="7">
<Value>Ausgang</Value>
</Value>
<Value name="8">
<Value>Bestand</Value>
</Value>
<Value name="9">
<Value>Lagerort</Value>
</Value>
</Data>
<Property name="Abteilung"/>
<Property name="Ausgang"/>
<Property name="Bestand"/>
<Property name="Eingang"/>
<Property name="Gebinde"/>
<Property name="Lagerort"/>
<Property name="PerDatum"/>
<Property name="Vortrag"/>
</Storage>
</Class>


<Class name="DBAgrofresh.HogaAuftrag">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57300.781771</TimeChanged>
<TimeCreated>62139,39347.073606</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="Auftrag">
<Description>
Auftragskopf</Description>
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>HogaAuftrag</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>

<Property name="ImportZeitpunkt">
<Description>
Datum, Zeit vom Import</Description>
<Type>%TimeStamp</Type>
</Property>

<Property name="ImportProtokollNr">
<Description>
Protokollnr vom Import</Description>
<Type>%Integer</Type>
</Property>

<Property name="Bestaetigt">
<Description>
Bestätigung geschickt</Description>
<Type>%Boolean</Type>
</Property>

<Property name="Bestaetigungsdatum">
<Description>
Datum der Bestätigung</Description>
<Type>%Date</Type>
</Property>

<Property name="LieferantID">
<Description>
Lieferanten Nr </Description>
<Type>%Integer</Type>
</Property>

<Property name="BestellNr">
<Description>
Bestell Nr </Description>
<Type>%Integer</Type>
</Property>

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

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

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

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

<Method name="GetIdByAuftragOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>AuftragOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.HogaAuftrag WHERE Auftrag = :AuftragOid)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetNextProtokollNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 0
	set typ = ##class(DBCore.FormularNr).FormNrAgrofreshHogaImpProtokoll()
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^FormularNr(MandantOid, typ))
	Quit nr
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("HogaAuftrag")</DataLocation>
<DefaultData>HogaAuftragDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.AuftragskopfC("HogaAuftrag")</IdLocation>
<IndexLocation>^DBAgrofresh.HogaAuftragI</IndexLocation>
<StreamLocation>^DBAgrofresh.HogaAuftragS</StreamLocation>
<Data name="HogaAuftragDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>ImportZeitpunkt</Value>
</Value>
<Value name="3">
<Value>ImportProtokollNr</Value>
</Value>
<Value name="4">
<Value>Bestaetigt</Value>
</Value>
<Value name="5">
<Value>Bestaetigungsdatum</Value>
</Value>
<Value name="6">
<Value>LieferantID</Value>
</Value>
<Value name="7">
<Value>BestellNr</Value>
</Value>
<Value name="8">
<Value>KundenId</Value>
</Value>
<Value name="9">
<Value>Kostenstelle</Value>
</Value>
<Value name="10">
<Value>Betrieb</Value>
</Value>
<Value name="11">
<Value>Lieferadresse</Value>
</Value>
</Data>
<Property name="Auftrag"/>
<Property name="Bestaetigt"/>
<Property name="Bestaetigungsdatum"/>
<Property name="BestellNr"/>
<Property name="Betrieb"/>
<Property name="ImportProtokollNr"/>
<Property name="ImportZeitpunkt"/>
<Property name="Kostenstelle"/>
<Property name="KundenId"/>
<Property name="Lieferadresse"/>
<Property name="LieferantID"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBAgrofresh.KGGebPreis">
<Super>DBAgrofresh.GebPreis,%XML.Adaptor</Super>
<TimeChanged>61595,41749.117847</TimeChanged>
<TimeCreated>61570,35564.578801</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Gruppe">
<Type>DBAdressen.SD.Kundengruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>GruppenGebPreis</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>

<Method name="GetPreisIdPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gruppe:%String,Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	if (Gruppe ="") {
		quit ""
	}
	if (Gebinde ="") {
		quit ""
	}
	set id = ""
	
	//&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.KGGebPreis
	//	WHERE  Gruppe=:Gruppe AND Gebinde=:Gebinde AND AbDatum <= {d :Datum} Order by AbDatum desc)
	
	Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.KGGebPreis "_
			"WHERE Gebinde->ID= '"_Gebinde_"' "_
			"AND Gruppe->ID = '"_Gruppe_"' "_
			"AND AbDatum <= TO_DATE('"_Datum_"', 'DD.MM.yy') "_
			"Order by AbDatum desc"
	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="PreisPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gruppe:%String,Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##Class(DBAgrofresh.KGGebPreis).GetOidByKundeGebindeDatum(Gruppe, Gebinde, Datum)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetOidByKundeGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gruppe:%String,Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	w Datum,!
	set id = ""
	//&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.KGGebPreis
	//     WHERE  Gebinde= :Gebinde AND AbDatum = {d :Datum} AND Gruppe = :Gruppe)
	
	Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.KGGebPreis "_
			"WHERE Gebinde->ID= '"_Gebinde_"' "_
			"AND Gruppe->ID = '"_Gruppe_"' "_
			"AND AbDatum = TO_DATE('"_Datum_"', 'DD.MM.yy')"
	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>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KGGebPreisDefaultData</DefaultData>
<Data name="KGGebPreisDefaultData">
<Structure>listnode</Structure>
<Subscript>"KGGebPreis"</Subscript>
<Value name="1">
<Value>Gruppe</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.KGPreis">
<Description>
</Description>
<Super>DBAgrofresh.Preis,%XML.Adaptor</Super>
<TimeChanged>62172,59513.955015</TimeChanged>
<TimeCreated>61102,57877.638666</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Gruppe">
<Type>DBAdressen.SD.Kundengruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>GruppenPreis</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 = ""
	if (zusatzNr = "") {
		set zusatzNr = 0
	}
	&sql(SELECT ID into :id FROM DBAgrofresh.KGPreis WHERE Gruppe = :KgOid AND Artikel = :ArtikelOid And +NVL(ZusatzArtikelNr,0) = :zusatzNr)
	quit:(SQLCODE'=0) ""
	//if (id = "") && (zusatzNr = "") {
	//	&sql(SELECT TOP 1 ID into :id FROM DBAgrofresh.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 DBAgrofresh.KGPreis
		 WHERE Artikel = :ArtikelOid AND Gruppe = :KGOid
		 AND ZusatzArtikelNr = :ZusatzArtikelNr)
	quit:(SQLCODE'=0) 0
	if (res = 0) {
		Quit 0	
	} else {
		Quit 1	
	}
]]></Implementation>
</Method>

<Method name="SetMargeOnKGArtGr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelGrOid:%String,KGOid:%String,Marge:%Decimal</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	&sql(UPDATE DBAgrofresh.KGPreis SET MargeInProzent = :Marge
		 WHERE Artikel->Artikelgruppe = :ArtikelGrOid AND Gruppe = :KGOid)
	Quit (SQLCODE'=0)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KGPreisDefaultData</DefaultData>
<Data name="KGPreisDefaultData">
<Subscript>"KGPreis"</Subscript>
<Value name="1">
<Value>Gruppe</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.KGRabatt">
<Description>
</Description>
<Super>DBAgrofresh.Rabatt,%XML.Adaptor</Super>
<TimeChanged>61417,35576</TimeChanged>
<TimeCreated>61107,29324.499907</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Gruppe">
<Type>DBAdressen.SD.Kundengruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>KGRabattGruppe</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>

<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="DBAgrofresh.KGRueckverg">
<Super>DBAgrofresh.Rueckverg</Super>
<TimeChanged>61417,35576</TimeChanged>
<TimeCreated>61395,32051.670055</TimeCreated>

<Property name="Gruppe">
<Type>DBAdressen.SD.Kundengruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>GruppenRueckverg</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 DBAgrofresh.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 DBAgrofresh.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="DBAgrofresh.Konst">
<Super>%RegisteredObject</Super>
<TimeChanged>62305,56802.588395</TimeChanged>
<TimeCreated>61331,61481.007834</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>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

<Method name="LagerstatusReserviert">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<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>
<SqlProc>1</SqlProc>
<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="AcRabattZwischentotal">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	
	Quit 65
]]></Implementation>
</Method>

<Method name="AcLastArtikel">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	
	Quit 8
]]></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="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="GebindeFirstNichtVerrechenbar">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 61
]]></Implementation>
</Method>

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

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

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

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

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

<Method name="GebindeBarzahlung">
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 5
]]></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="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="FormularTypSRV">
<Description>
Formulartyp Sammelrechnung Verteilliste</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 9
]]></Implementation>
</Method>

<Method name="FormularTypSRP">
<Description>
Formulartyp Sammelrechung Proforma</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 10
]]></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="FormularTypGGS">
<Description>
Formulartyp Gesamtgebindeschein</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 13
]]></Implementation>
</Method>

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

<Method name="FormularTypTLS">
<Description>
Formulartyp Lieferschein</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 15
]]></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="StatusAutoLaufKeinStatus">
<Description>
-------------------------
Status Autoverarbeitung
-------------------------</Description>
<ClassMethod>1</ClassMethod>
<ReturnType>%Integer</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[	Quit 0
]]></Implementation>
</Method>

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

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

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

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

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

<UDLText name="T">
<Content><![CDATA[
//ClassMethod StatusAutoLaufAuftragGesperrtSD() As %Integer [ SqlProc ]

]]></Content>
</UDLText>

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

]]></Content>
</UDLText>

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

]]></Content>
</UDLText>

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

]]></Content>
</UDLText>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


<Class name="DBAgrofresh.KundenGebPreis">
<Super>DBAgrofresh.GebPreis,%XML.Adaptor</Super>
<TimeChanged>61595,41830.722621</TimeChanged>
<TimeCreated>61570,35564.695343</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Kunde">
<Type>DBDebiKredi.Debitor</Type>
<Cardinality>one</Cardinality>
<Inverse>KundenGebPreis</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="GetPreisIdPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Kunde:%String,Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	if (Kunde ="") {
		quit ""
	}
	if (Gebinde ="") {
		quit ""
	}
	set id = ""
	
	//&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.KundenGebPreis
	//	WHERE  Kunde=:Kunde AND Gebinde=:Gebinde AND AbDatum <= {d :Datum} Order by AbDatum desc)
	
	Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.KundenGebPreis "_
			"WHERE Gebinde->ID= '"_Gebinde_"' "_
			"AND Kunde->Adresse->ID = '"_Kunde_"' "_
			"AND AbDatum <= TO_DATE('"_Datum_"', 'DD.MM.yy') "_
			"Order by AbDatum desc"
	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="PreisPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>Kunde:%String,Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##Class(DBAgrofresh.KundenGebPreis).GetOidByKundeGebindeDatum(Kunde, Gebinde, Datum)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetOidByKundeGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Kunde:%String,Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	//&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.KundenGebPreis
	//     WHERE  Gebinde= :Gebinde AND AbDatum = {d :Datum} AND Kunde = :Kunde)
	
	Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.KundenGebPreis "_
			"WHERE Gebinde->ID= '"_Gebinde_"' "_
			"AND Kunde->Adresse->ID = '"_Kunde_"' "_
			"AND AbDatum = TO_DATE('"_Datum_"', 'DD.MM.yy')"
	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>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KundenGebPreisDefaultData</DefaultData>
<Data name="KundenGebPreisDefaultData">
<Structure>listnode</Structure>
<Subscript>"KundenGebPreis"</Subscript>
<Value name="1">
<Value>Kunde</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.KundenPreis">
<Description>
</Description>
<Super>DBAgrofresh.Preis,%XML.Adaptor</Super>
<TimeChanged>62172,59333.031471</TimeChanged>
<TimeCreated>61102,57830.310719</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Kunde">
<Type>DBDebiKredi.Debitor</Type>
<Cardinality>one</Cardinality>
<Inverse>KundenPreis</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="GetOidByKunde">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdressOid:%String,ArtikelOid:%String,zusatzNr:%String=""</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	if ((zusatzNr = "") || (zusatzNr = $c(0))) {
		set zusatzNr = 0
	}
		
	&sql(SELECT ID into :id FROM DBAgrofresh.KundenPreis WHERE Kunde->Adresse = :AdressOid AND Artikel = :ArtikelOid And +NVL(ZusatzArtikelNr,0) = :zusatzNr)
	
	quit:(SQLCODE '= 0) ""
	quit id
]]></Implementation>
</Method>

<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 DBAgrofresh.KundenPreis
		 WHERE Artikel = :ArtikelOid AND Kunde = :debOid
		 AND +NVL(ZusatzArtikelNr,0) = :ZusatzArtikelNr)
	quit:(SQLCODE '= 0) 0
	if (res = 0) {
		Quit 0	
	} else {
		Quit 1	
	}
]]></Implementation>
</Method>

<Method name="GetAdressOidFromFirstEntry">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(SELECT TOP 1 Kunde->Adresse->ID INTO :oid FROM DBAgrofresh.KundenPreis
		 WHERE Artikel->Mandant = :MandantOid)
	quit:(SQLCODE '= 0) ""
	Quit oid
]]></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="DBAgrofresh.KundenRabatt">
<Description>
</Description>
<Super>DBAgrofresh.Rabatt,%XML.Adaptor</Super>
<TimeChanged>61417,35576</TimeChanged>
<TimeCreated>61107,29426.779572</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>KundenRabattKunde</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="DBAgrofresh.KundenRueckverg">
<Super>DBAgrofresh.Rueckverg</Super>
<TimeChanged>61417,35576</TimeChanged>
<TimeCreated>61395,32508.438465</TimeCreated>

<Property name="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>KundenRueckverg</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 DBAgrofresh.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 DBAgrofresh.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="DBAgrofresh.KundenStrg">
<Super>DBAgrofresh.AuftrStrg,%XML.Adaptor</Super>
<TimeChanged>61417,35576</TimeChanged>
<TimeCreated>61339,61177.132111</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>KundenStrgKunde</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 DBAgrofresh.KundenStrg 
	     WHERE Kunde=:AdrOid)
	quit (id '= "")
]]></Implementation>
</Method>

<Method name="GetAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>AdrOid:%String</FormalSpec>
<ReturnType>DBAgrofresh.AuftrStrg</ReturnType>
<Implementation><![CDATA[
	set steuerung = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.KundenStrg 
	     WHERE Kunde=:AdrOid)
	if (id '= "") {
		set steuerung = ##Class(DBAgrofresh.KundenStrg).%OpenId(id)
	} else {
		set steuerung = ##Class(DBAgrofresh.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 DBAgrofresh.KundenStrg 
	     WHERE Kunde=:AdrOid)
	if (id '= "") {
		set status = ##Class(DBAgrofresh.AuftrStrg).%DeleteId(id)
	}
	quit status
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>KundenStrgDefaultData</DefaultData>
<StreamLocation>^DBAgrofresh.KundenStrgS</StreamLocation>
<Data name="KundenStrgDefaultData">
<Structure>listnode</Structure>
<Subscript>"KundenStrg"</Subscript>
<Value name="1">
<Value>Kunde</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.Lagerbew">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61107,53465.196911</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>

<Index name="JournalNrIndex">
<Properties>JournalNr</Properties>
</Index>

<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="AnzahlGebinde">
<Description>
Anzahl Gebinde</Description>
<Type>%Integer</Type>
</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>LagerbewKundeLieferant</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>DBAgrofresh.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>LagerbewWaehrung</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>DBAgrofresh.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>DBAgrofresh.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="Bestelldet">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>one</Cardinality>
<Inverse>Lagerbewegung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Bestelldet"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="BestelldettIndex">
<Properties>Bestelldet</Properties>
</Index>

<Property name="Bewegungstyp">
<Description>
Bewegungstyp - Bewegung aus Einkauf, Verkauf oder durch Umpacken (Charge)</Description>
<Type>%Integer</Type>
</Property>

<Property name="ChargenEingang">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>one</Cardinality>
<Inverse>LagerBew</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="ChargenEingang"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Method name="GetAktPosNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = 1
	// Falls Global noch nicht gesetzt höchste vorhanden Nummer setzen
	if ($GET(^LagerBewJournalNr(MandOid)) = "") {
		&sql(SELECT MAX(JournalNr) into :nr FROM DBAgrofresh.Lagerbew WHERE Artikel->Mandant = :MandOid)
		if (SQLCODE = 0) {
			SET ^LagerBewJournalNr(MandOid) = nr	
		}
	}
	// Neue Nummer auslessen
	SET nr=$INCREMENT(^LagerBewJournalNr(MandOid))
	// Prüfen ob noch keine Lagerbew mit Nummer vorhanden
	while (##class(DBAgrofresh.Lagerbew).GetIdByJournalNr(MandOid, nr) '= "") {
		SET nr=$INCREMENT(^LagerBewJournalNr(MandOid))
	}
		
	Quit nr
]]></Implementation>
</Method>

<Method name="GetIdByJournalNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,JournalNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.Lagerbew WHERE Artikel->Mandant = :MandantOid
		 AND JournalNr = :JournalNr)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></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 DBAgrofresh.Lagerbew 
			WHERE Artikel=:artikelOid AND
				Buchungsdatum>={d :perDatum} AND
				Buchungscode=2)
	set:(SQLCODE'=0) mengeVK = 0
			
	&sql(SELECT SUM(Menge) INTO :mengeEK 
			FROM DBAgrofresh.Lagerbew 
			WHERE Artikel=:artikelOid AND
				Buchungsdatum>={d :perDatum} AND
				Buchungscode=1)
	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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.Lagerbew where Artikel = :ArtOid)
]]></Implementation>
</Method>

<Method name="%OnBeforeSave">
<FormalSpec>Insert:%Boolean</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	If ('Insert) {
		set lagerBewId = ..%Id()
		
		set oldLieferungGeb = 0
		set oldLieferung = 0
		set artikelId = 0
		set lagerortId = 0
		
		&Sql(SELECT  AnzahlGebinde, Menge, Artikel->ID, Lagerort->ID into :oldLieferungGeb, :oldLieferung, :artikelId, :lagerortId FROM DBAgrofresh.Lagerbew WHERE ID=:lagerBewId)
		
		if (SQLCODE = 0) {

			Set ^LagerBewOldValues(lagerBewId, 1) = oldLieferung
			Set ^LagerBewOldValues(lagerBewId, 2) = lagerortId
			Set ^LagerBewOldValues(lagerBewId, 3) = artikelId
			Set ^LagerBewOldValues(lagerBewId, 4) = oldLieferungGeb
			//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(DBAgrofresh.Konst).LagerBuchungscodeZugang()
	
	If ('Insert) {
		Set oldLieferung = $Get(^LagerBewOldValues(lagerBewId, 1))
		Set lagerortId = $Get(^LagerBewOldValues(lagerBewId, 2))
		Set artikelId = $Get(^LagerBewOldValues(lagerBewId, 3))
		Set oldLieferungGeb = $Get(^LagerBewOldValues(lagerBewId, 4))
		if (isZugang) {
			do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1)*+oldLieferungGeb, (-1)*+oldLieferung, 1, 0, 0)
		} else {
			do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, +oldLieferungGeb, +oldLieferung, 1, 0, 0)
		}
	}
	if (isZugang) {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(..Artikel.%Id(), ..Lagerort.%Id(), +..AnzahlGebinde, +..Menge, 1, 0, 0)
	} else {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(..Artikel.%Id(), ..Lagerort.%Id(), (-1)*+..AnzahlGebinde, (-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
	set oldLieferungGeb = 0
	
	&Sql(SELECT  AnzahlGebinde, Menge, Artikel->ID, Lagerort->ID, Buchungscode into :oldLieferungGeb, :oldLieferung, :artikelId, :lagerortId, :buchungscode FROM DBAgrofresh.Lagerbew WHERE ID=:lagerBewId)
	
	set isZugang = buchungscode = ##class(DBAgrofresh.Konst).LagerBuchungscodeZugang()
	
	if (SQLCODE = 0) {
		//w "Delete LagerBew mit ", oldLieferung, " IsZugang: ", isZugang, !
		if (isZugang) {
			do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1)* +oldLieferungGeb,  (-1) * +oldLieferung, 1, 0, 0)
		} else {
			do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, +oldLieferungGeb, +oldLieferung, 1, 0, 0)
		}
	}
	
	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 newLieferungGeb = {AnzahlGebinde*N}
	set buchungscode = {Buchungscode*N}
		
	set isZugang = buchungscode = ##class(DBAgrofresh.Konst).LagerBuchungscodeZugang()
	if (isZugang) {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, +newLieferungGeb, +newLieferung, 1, 0, 0)
	} else {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * +newLieferungGeb, (-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 oldLieferungGeb = {AnzahlGebinde*O}
	
	set isZugang = buchungscode = ##class(DBAgrofresh.Konst).LagerBuchungscodeZugang()
	if (isZugang) {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1)* +oldLieferungGeb,(-1) * +oldLieferung, 1, 0, 0)
	} else {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, +oldLieferungGeb, +oldLieferung, 1, 0, 0)
	}
	set newLieferung = {Menge*N}
	set newLieferungGeb = {AnzahlGebinde*N}
	
	if (isZugang) {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, +newLieferungGeb, +newLieferung, 1, 0, 0)
	} else {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * +newLieferungGeb, (-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 oldLieferung = {Menge*O}
	set oldLieferungGeb = {AnzahlGebinde*O}
	set buchungscode = {Buchungscode*O}
	
	set isZugang = buchungscode = ##class(DBAgrofresh.Konst).LagerBuchungscodeZugang()
	//w "Trg Delete LagerBew mit ", newLieferung, " IsZugang: ", isZugang, !
	if (isZugang) {	
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, (-1) * +oldLieferungGeb, (-1) * +oldLieferung, 1, 0, 0)
	} else {
		do ##class(DBAgrofresh.ArtikelLager).AddLagerDirekt(artikelId, lagerortId, +oldLieferungGeb, +oldLieferung, 1, 0, 0)
	}</Code>
<Event>DELETE</Event>
<Time>AFTER</Time>
<Foreach>row</Foreach>
</Trigger>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.LagerbewD</DataLocation>
<DefaultData>LagerbewDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.LagerbewD</IdLocation>
<IndexLocation>^DBAgrofresh.LagerbewI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>Kunde</Value>
</Value>
<Value name="17">
<Value>Lieferant</Value>
</Value>
<Value name="18">
<Value>Artikel</Value>
</Value>
<Value name="19">
<Value>Waehrung</Value>
</Value>
<Value name="20">
<Value>Zugang</Value>
</Value>
<Value name="21">
<Value>Lagerort</Value>
</Value>
<Value name="22">
<Value>KundeLieferant</Value>
</Value>
<Value name="23">
<Value>Auftragsdet</Value>
</Value>
<Value name="24">
<Value>Bestelldet</Value>
</Value>
<Value name="25">
<Value>Bewegungstyp</Value>
</Value>
<Value name="26">
<Value>Charge</Value>
</Value>
<Value name="27">
<Value>AnzahlGebinde</Value>
</Value>
<Value name="28">
<Value>ChargenEingang</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AnzahlGebinde">
</Property>
<Property name="Artikel">
</Property>
<Property name="Auftragsdet">
</Property>
<Property name="BelegNr">
</Property>
<Property name="Belegtext">
</Property>
<Property name="Bestelldet">
</Property>
<Property name="BetragEW">
</Property>
<Property name="BetragFW">
</Property>
<Property name="Bewegungstyp">
</Property>
<Property name="Buchungscode">
</Property>
<Property name="Buchungsdatum">
</Property>
<Property name="ChargenEingang">
</Property>
<Property name="JournalNr">
</Property>
<Property name="Kunde"/>
<Property name="KundeLieferant">
</Property>
<Property name="Kurs">
</Property>
<Property name="Kurseinheit">
</Property>
<Property name="Lagerort">
</Property>
<Property name="Lieferant"/>
<Property name="Menge">
</Property>
<Property name="PreisEW">
</Property>
<Property name="PreisFW">
</Property>
<Property name="Referenz">
</Property>
<Property name="Status">
</Property>
<Property name="Waehrung">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.PDFStream">
<Super>%Persistent</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61823,36621.093676</TimeCreated>

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

<Property name="Lieferschein">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>LieferscheinPDF</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Gebindeschein">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>GebindescheinPDF</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Fehlmengen">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>FehlmengenPDF</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.PDFStreamD</DataLocation>
<DefaultData>PDFStreamDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.PDFStreamD</IdLocation>
<IndexLocation>^DBAgrofresh.PDFStreamI</IndexLocation>
<StreamLocation>^DBAgrofresh.PDFStreamS</StreamLocation>
<Data name="PDFStreamDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>DataStream</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="DataStream">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.PKPreis">
<Description>
</Description>
<Super>DBAgrofresh.Preis,%XML.Adaptor</Super>
<TimeChanged>62257,62122.632796</TimeChanged>
<TimeCreated>62231,35059.936782</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Kategorie">
<Type>DBAdressen.SD.Preiskategorie</Type>
<Cardinality>one</Cardinality>
<Inverse>KategoriePreis</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="KategorieIdx">
<Properties>Kategorie</Properties>
</Index>

<Index name="KategorieArtikelIdx">
<Properties>Artikel,ZusatzArtikelNr,Kategorie</Properties>
<Unique>1</Unique>
</Index>

<Method name="GetOidByKategorie">
<ClassMethod>1</ClassMethod>
<FormalSpec>PKOid:%String,ArtikelOid:%String,zusatzNr:%String=""</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	if (zusatzNr = "") {
		set zusatzNr = 0
	}
	&sql(SELECT ID into :id FROM DBAgrofresh.PKPreis WHERE Kategorie = :PKOid AND Artikel = :ArtikelOid And +NVL(ZusatzArtikelNr,0) = :zusatzNr)
	quit:(SQLCODE'=0) ""
	//if (id = "") && (zusatzNr = "") {
	//	&sql(SELECT TOP 1 ID into :id FROM DBAgrofresh.KGPreis WHERE Gruppe = :KgOid AND Artikel = :ArtikelOid ORDER BY ZusatzArtikelNr)
	//}
	quit id
]]></Implementation>
</Method>

<Method name="IsZusatzNrVergeben">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelOid:%String,PKOid:%String,ZusatzArtikelNr:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[

	set res = 0
	&sql(SELECT COUNT(*) INTO :res FROM DBAgrofresh.PKPreis
		 WHERE Artikel = :ArtikelOid AND Kategorie = :PKOid
		 AND ZusatzArtikelNr = :ZusatzArtikelNr)
	quit:(SQLCODE'=0) 0
	if (res = 0) {
		Quit 0	
	} else {
		Quit 1	
	}
]]></Implementation>
</Method>

<Method name="SetMargeOnPKArtGr">
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtikelGrOid:%String,PKOid:%String,Marge:%Decimal</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	&sql(UPDATE DBAgrofresh.PKPreis SET MargeInProzent = :Marge
		 WHERE Artikel->Artikelgruppe = :ArtikelGrOid AND Kategorie = :PKOid)
	Quit (SQLCODE'=0)
]]></Implementation>
</Method>

<Method name="GetPreisPK">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AdressOid:%String,ArtikelOid:%String,zusatzNr:%String="",chkAktiv:%Boolean=1</FormalSpec>
<ReturnType>DBAgrofresh.Preis</ReturnType>
<Implementation><![CDATA[
	set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
	set pk = adr.PreiskategorieGetObjectId()
	if ((pk = "") || (pk = $$$NULLOREF)) {
		Quit ""
	}
	set preisId = ##class(DBAgrofresh.PKPreis).GetOidByKategorie(pk, ArtikelOid, zusatzNr)
	
	if ((preisId = "") || (preisId = $$$NULLOREF)) {
		Quit ""
	}
	Quit ##class(DBAgrofresh.PKPreis).%OpenId(preisId)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>PKPreisDefaultData</DefaultData>
<Data name="PKPreisDefaultData">
<Structure>listnode</Structure>
<Subscript>"PKPreis"</Subscript>
<Value name="1">
<Value>Kategorie</Value>
</Value>
</Data>
</Storage>
</Class>


<Project name="DBAgrofresh" Target="##class(DBAgrofresh.Preis).GetPreis(&quot;1&quot;, &quot;1&quot;, &quot;116&quot;, &quot;27&quot;, 0, 0)" TargetType="2">
  <Items>
    <ProjectItem name="DBAgrofresh.AF.AbzuegeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.AktionspreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtAufwandAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtPreisDatumAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtVerarbAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtZusatzInfoAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtZusatztextAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtikelAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtikelHogaAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.ArtikelInventarAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.AuftragsKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.AuftragspositionAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.BenAbzuegeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.GebDetailAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.GebKontrAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.GebPreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.GebindeInventarAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.KGPreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.KundenPreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.LagerbewAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.PKPreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.PreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.PreisAktionAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.RueckvergAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.RuestlisteAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.AbzugstypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ArtGrPreisKatRabattAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ArtGrpKGMargeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ArtikelgruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.AufbereitungsartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.BestellartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ChauffeurAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.DrucktypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.FahrzeugAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.FormGebFussAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.FormGebFussEAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.FormularAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.FusstextAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.GebAdimKostenAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.GebindeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.GebindePreisAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.GebindeTransportAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.HerkunftAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.HogaGrpAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.HogaHauptGrpAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.HogaUnterGrpAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.InhaltAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.KombiGebindeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.LagerortAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.LieferartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.MengencodeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PLDataEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PLFormularAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PLGrupKopfEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PLKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PLKopfEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PLPreislistenTypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ParzelleAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PreisetiketteAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.PreislisteAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ProduktgruppeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ProduktionsartAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.ProduktionscodeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.QSDiversesAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.QSLieferberAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.QSMeldTypAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.QSQualitaetAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.QSTransportAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.QualitaetsklasseAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.RuestlinieAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.StatGrpAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.SteuerungAuftragsbearbAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblDataEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblFussAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblFussEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblFussSkontoEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblKopfAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblKopfEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblSREntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblSRgfEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblSRgkEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.TblSRvlEntryAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.SD.VerpackungAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.StatistikDetailiertAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.StrgAbzuegeAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AF.TransportPosAF" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Abzuege" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AktionspreisDet" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AktionspreisKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtAufwand" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtPreisDatum" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtVerarb" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtZusatzInfo" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Artikel" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtikelHoga" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtikelInventar" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtikelLager" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtikelTagesLager" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.ArtikelZusatztext" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.AuftrStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Auftragskopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Auftragspos" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.BenAbzuege" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.GebDetail" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.GebKontr" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.GebPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.GebindeInventar" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.HogaAuftrag" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KGGebPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KGPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KGRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KGRueckverg" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Konst" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KundenGebPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KundenPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KundenRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KundenRueckverg" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.KundenStrg" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Lagerbew" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.PDFStream" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.PKPreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Preis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.PreisAktion" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Rabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.Rueckverg" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Abzugstyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.ArtGrKundeRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.ArtGrPreisKatRabatt" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.ArtGrpKGMarge" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Artikelgruppe" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Aufbereitungsart" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Bestellart" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Chauffeur" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.DTypFormular" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.DTypRepHeader" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.DTypTblFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.DTypTblKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Drucktyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Fahrzeug" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.FormDrucker" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.FormDruckerBen" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.FormGebFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.FormGebFussE" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Formular" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Fusstext" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.GebAdminKosten" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.GebTransKosten" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Gebinde" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.GebindePreis" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Herkunft" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Hilfstexte" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.HogaGrp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.HogaHauptGrp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.HogaUnterGrp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Inhalt" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.KombiGebinde" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Lagerort" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Lieferart" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Mengencode" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.PLDataEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.PLFormular" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.PLGrupKopfEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.PLKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.PLKopfEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.PLPreislistenTyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Parzelle" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Preisetikette" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Preisliste" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Produktgruppe" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Produktionsart" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Produktionscode" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.QSDiverses" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.QSLieferber" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.QSMeldTyp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.QSQualitaet" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.QSTransport" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Qualitaetsklasse" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Ruestlinie" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.StatGrp" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.StrgAuftrag" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblDataEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblFuss" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblFussEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblFussSkntE" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblKopfEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblSREntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblSRgfEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblSRgkEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.TblSRvlEntry" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.SD.Verpackung" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.StrgAbzuege" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.TransportKopf" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.TransportPos" type="CLS"></ProjectItem>
    <ProjectItem name="DBAgrofresh.TypStrg" type="CLS"></ProjectItem>
  </Items>
</Project>


<Class name="DBAgrofresh.Preis">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61102,42498.23516</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>DBAgrofresh.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>
<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="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>VPreisGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="GebindeIndex">
<Properties>Gebinde</Properties>
</Index>

<Property name="Herkunft">
<Type>DBAgrofresh.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="Produktionsart">
<Type>DBAgrofresh.SD.Produktionsart</Type>
<Cardinality>one</Cardinality>
<Inverse>VPreisProduktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Produktionsart"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ProduktionsartIndex">
<Properties>Produktionsart</Properties>
</Index>

<Property name="Etikettentyp1">
<Type>DBPrint.Etikette</Type>
<Cardinality>one</Cardinality>
<Inverse>VPreisEtikettentyp1</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>VPreisEtikettentyp2</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>VPreisLieferant</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>VPreisProduzent</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>VPreisZulieferant</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>DBAgrofresh.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>DBAgrofresh.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>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>SpezPreis</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="GrammJeEinheit">
<Description>
Gramm je Einheit</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="GrammJeLaufmeter">
<Description>
Gramm je Laufmeter</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Property name="Qualitaetsklasse">
<Type>DBAgrofresh.SD.Qualitaetsklasse</Type>
<Cardinality>one</Cardinality>
<Inverse>PreisQualitaetsklasse</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>

<Property name="Modified">
<Description>
Datum der letzen Änderung für Synchronisation</Description>
<Type>%TimeStamp</Type>
<InitialExpression>$ZDT($ZUTIL(188),3)</InitialExpression>
</Property>

<Property name="LastUploaded">
<Type>%TimeStamp</Type>
</Property>

<Property name="Aktionspreise">
<Type>DBAgrofresh.PreisAktion</Type>
<Cardinality>children</Cardinality>
<Inverse>SpezPreis</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="Verarbeitungsverlust">
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</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
	&SQL(SELECT ID into :id FROM DBAgrofresh.KundenPreis 
		WHERE Kunde = :DebitorOid AND Artikel->ID = :ArtikelOid
		AND +NVL(ZusatzArtikelNr,0) = :zusatzNr)
		
    if (SQLCODE '= 0) {
		set id = ""
    }
        
	// wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		&SQL(SELECT ID into :id FROM DBAgrofresh.KGPreis 
			WHERE Artikel = :ArtikelOid
			AND Gruppe = :kundGrpOid
			AND +NVL(ZusatzArtikelNr,0) = :zusatzNr)
			
	    if (SQLCODE '= 0) {
			set id = ""
	    }
	}

	quit id
]]></Implementation>
</Method>

<Method name="ArtikelHasSpezPreis">
<ClassMethod>1</ClassMethod>
<FormalSpec>DebitorOid:%String,kundGrpOid:%String,ArtikelOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##class(DBAgrofresh.Preis).GetOidForArtikelbaum(DebitorOid, kundGrpOid, ArtikelOid)
	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="",chkAktiv:%Boolean=1</FormalSpec>
<ReturnType>DBAgrofresh.Preis</ReturnType>
<Implementation><![CDATA[
	set adr = ##class(DBAdressen.Adresse).%OpenId(AdressOid)
	set debOid = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, AdressOid)
	set art = ##class(DBAgrofresh.Artikel).%OpenId(ArtikelOid)
	set artGrpOid = ""
	set kundGrpOid = ""
	set kundGrpNr = ""
	// Zusatznummer = 0 wenn keine andere angegeben
	if ((zusatzNr = "") || (zusatzNr = $c(0))) {
		set zusatzNr = 0
	}
	// Kundengruppe der Adresse auswählen
	if ((otherKGOid = "") || (otherKGOid = $c(0))){
		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 onlyGroup = onlyGroup && (kundGrpNr < ##class(DBAgrofresh.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
		 			
		if (chkAktiv = 1) {		 			
			&sql(SELECT ID into :id FROM DBAgrofresh.KundenPreis 
				WHERE Artikel->Mandant = :MandantOid
				AND Kunde = :debOid AND Artikel = :ArtikelOid
			 	AND +NVL(ZusatzArtikelNr,0) = :zusatzNr
			 	AND NVL(ArtikelAktiv,0) = 1)
			 	
		} else {
			&sql(SELECT ID into :id FROM DBAgrofresh.KundenPreis 
				WHERE Artikel->Mandant = :MandantOid
				AND Kunde = :debOid AND Artikel = :ArtikelOid
			 	AND +NVL(ZusatzArtikelNr,0) = :zusatzNr)
		}
		
		if (SQLCODE '= 0) {
			Set id=""
		}
		
	} // wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (onlyKunde = 0) && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		 			
		if (chkAktiv = 1) {				
			&sql(SELECT ID into :id FROM DBAgrofresh.KGPreis 
				WHERE Artikel->Mandant = :MandantOid
			 	AND Gruppe = :kundGrpOid
			 	AND Artikel = :ArtikelOid
			 	AND +NVL(ZusatzArtikelNr,0) = :zusatzNr
			 	AND NVL(ArtikelAktiv,0) = 1)
			 	
		} else {
			&sql(SELECT ID into :id FROM DBAgrofresh.KGPreis 
				WHERE Artikel->Mandant = :MandantOid
			 	AND Gruppe = :kundGrpOid
			 	AND Artikel = :ArtikelOid
			 	AND +NVL(ZusatzArtikelNr,0) = :zusatzNr)
		}
		if (SQLCODE '= 0) {
			set id = ""
		}
	}
	if (id '= "") {
		if (preistyp = 1) {
			Quit ##class(DBAgrofresh.KundenPreis).%OpenId(id)	
		} elseif (preistyp = 2) {
			Quit ##class(DBAgrofresh.KGPreis).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Method name="GetGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandOid:%String,AdressOid:%String,ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = ##class(DBAgrofresh.Preis).GetPreis(MandantOid, FibuMandOid, AdressOid, ArtikelOid, 0, 1, "", "")
	set gebinde = ""
	if (preis '= "") {
		Set gebinde = preis.Gebinde.%Id()
	}
	quit gebinde
]]></Implementation>
</Method>

<Method name="GetAnzJeGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandOid:%String,AdressOid:%String,ArtikelOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = ##class(DBAgrofresh.Preis).GetPreis(MandantOid, FibuMandOid, AdressOid, ArtikelOid, 0, 1, "", "")
	set anzjeGebinde = 0
	if (preis '= "") {
		Set anzjeGebinde = preis.AnzahlJeGebinde
	}
	quit anzjeGebinde
]]></Implementation>
</Method>

<Method name="GetMengeEinheit">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandOid:%String,AdressOid:%String,ArtikelOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = ##class(DBAgrofresh.Preis).GetPreis(MandantOid, FibuMandOid, AdressOid, ArtikelOid, 0, 1, "", "")
	set mengeEinheit = ""
	if (preis '= "") {
		Set mengeEinheit = preis.Menge.%Id()
	}
	quit mengeEinheit
]]></Implementation>
</Method>

<Method name="ClonePreis">
<ClassMethod>1</ClassMethod>
<FormalSpec>srcPreis:DBAgrofresh.Preis</FormalSpec>
<ReturnType>DBAgrofresh.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 DBAgrofresh.KGPreis WHERE Artikel = :Artikel AND Gruppe = :Gruppe)
		if ((+zusatzNr = 0) || (SQLCODE '= 0)) {
			&sql(SELECT COUNT(ZusatzArtikelNr) INTO :count FROM DBAgrofresh.KGPreis WHERE Artikel = :Artikel AND Gruppe = :Gruppe)
			if ((+count = 0) || (SQLCODE '= 0)) {
				set zusatzNr = -1
			}		
		}
	}
	if ((Kunde '= "")) {
		set count2 = 0
		&sql(SELECT MAX(ZusatzArtikelNr) INTO :zusatzNr2 FROM DBAgrofresh.KundenPreis WHERE Artikel = :Artikel AND Kunde->Adresse = :Kunde)
		if ((+zusatzNr2 = 0) || (SQLCODE '= 0)) {
			&sql(SELECT COUNT(ZusatzArtikelNr) INTO :count2 FROM DBAgrofresh.KundenPreis WHERE Artikel = :Artikel AND Kunde->Adresse = :Kunde)
			if ((+count2 = 0) || (SQLCODE '= 0)) {
				set zusatzNr2 = -1
			}		
		}
		
	}
	if (+zusatzNr2 > +zusatzNr) {
		set zusatzNr = zusatzNr2
	}
	
	quit (+zusatzNr)+1
]]></Implementation>
</Method>

<Method name="UpdatePreiseAbDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Alle:%Boolean,KundenGruppen:%Boolean,GruppenNrVon:%Integer,GruppenNrBis:%Integer,Adressen:%Boolean,AdressNrVon:%Integer,AdressNrBis:%Integer,Preiskategorie:%Boolean,PkNrVon:%Integer,PkNrBis:%Integer,AuchNullWerte:%Boolean</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set cnt = 0
	set date = $PIECE($HOROLOG,",",1)
	if (Alle = 1) {
		if (AuchNullWerte = 1) {
			&sql(UPDATE DBAgrofresh.Preis
			SET EngrosPreis = EngrosPreisAbDatum, 
			              DetailPreis = DetailPreisAbDatum,
			              AnbruchsPreis = AnbruchsPreisAbDatum, 
			              EngrosPreisAbDatum = 0,
			              DetailPreisAbDatum = 0, 
			              AnbruchsPreisAbDatum = 0, 
			              DatumPreisaenderung = NULL
			WHERE DatumPreisaenderung <= :date 
			AND not DatumPreisaenderung is null 
			AND Artikel->Mandant = :MandantOid)
		} else {
			&sql(UPDATE DBAgrofresh.Preis 
			SET EngrosPreis = case NVL(EngrosPreisAbDatum,0) when 0 THEN EngrosPreis ELSE EngrosPreisAbDatum END, 
			EngrosPreisAbDatum = 0,
			DetailPreis = case NVL(DetailPreisAbDatum,0) when 0 THEN DetailPreis ELSE DetailPreisAbDatum END, 
			DetailPreisAbDatum = 0,
			AnbruchsPreis = case NVL(AnbruchsPreisAbDatum,0) when 0 THEN AnbruchsPreis ELSE AnbruchsPreisAbDatum END, 
			AnbruchsPreisAbDatum = 0,
			DatumPreisaenderung = NULL 
			WHERE DatumPreisaenderung <= :date 
			AND not DatumPreisaenderung is null
			AND Artikel->Mandant = :MandantOid)
		}
	} else {
		if (KundenGruppen = 1) {
			if (AuchNullWerte = 1) {
				&sql(UPDATE DBAgrofresh.KGPreis
				              SET EngrosPreis = EngrosPreisAbDatum, 
				              DetailPreis = DetailPreisAbDatum,
				              AnbruchsPreis = AnbruchsPreisAbDatum, 
				              EngrosPreisAbDatum = 0,
				              DetailPreisAbDatum = 0, 
				              AnbruchsPreisAbDatum = 0, 
				              DatumPreisaenderung = NULL
				WHERE DatumPreisaenderung <= :date 
				AND Artikel->Mandant = :MandantOid 
				AND not DatumPreisaenderung is null
				AND Gruppe->Code BETWEEN :GruppenNrVon AND :GruppenNrBis)
			} else {
				&sql(UPDATE DBAgrofresh.KGPreis 
				              SET EngrosPreis = case NVL(EngrosPreisAbDatum,0) when 0 THEN EngrosPreis ELSE EngrosPreisAbDatum END,
				              EngrosPreisAbDatum = 0,
				DetailPreis = case NVL(DetailPreisAbDatum,0) when 0 THEN DetailPreis ELSE DetailPreisAbDatum END, 
				DetailPreisAbDatum = 0,
				              AnbruchsPreis = case NVL(AnbruchsPreisAbDatum,0) when 0 THEN AnbruchsPreis ELSE AnbruchsPreisAbDatum END,
				              AnbruchsPreisAbDatum = 0,
				DatumPreisaenderung = NULL 
				WHERE DatumPreisaenderung <= :date 
				AND not DatumPreisaenderung is null
				AND Artikel->Mandant = :MandantOid
				AND Gruppe->Code BETWEEN :GruppenNrVon AND :GruppenNrBis)
			}
		} 
		if (Adressen = 1) {
			if (AuchNullWerte = 1) {
				&sql(UPDATE DBAgrofresh.KundenPreis
				              SET EngrosPreis = EngrosPreisAbDatum, 
				              DetailPreis = DetailPreisAbDatum,
				              AnbruchsPreis = AnbruchsPreisAbDatum, 
				              EngrosPreisAbDatum = 0,
				              DetailPreisAbDatum = 0, 
				              AnbruchsPreisAbDatum = 0, 
				              DatumPreisaenderung = NULL
				WHERE DatumPreisaenderung <= :date 
				AND Artikel->Mandant = :MandantOid 
				AND not DatumPreisaenderung is null
				AND Kunde->Adresse->AdressNummer BETWEEN :AdressNrVon AND :AdressNrBis)
			} else {
				&sql(UPDATE DBAgrofresh.KundenPreis 
				              SET EngrosPreis = case NVL(EngrosPreisAbDatum,0) when 0 THEN EngrosPreis ELSE EngrosPreisAbDatum END, 
				              EngrosPreisAbDatum = 0,
				DetailPreis = case NVL(DetailPreisAbDatum,0) when 0 THEN DetailPreis ELSE DetailPreisAbDatum END,
				DetailPreisAbDatum = 0,
				              AnbruchsPreis = case NVL(AnbruchsPreisAbDatum,0) when 0 THEN AnbruchsPreis ELSE AnbruchsPreisAbDatum END,
				              AnbruchsPreisAbDatum = 0,
				              DatumPreisaenderung = NULL 
				WHERE DatumPreisaenderung <= :date 
				AND not DatumPreisaenderung is null
				AND Artikel->Mandant = :MandantOid
				AND Kunde->Adresse->AdressNummer BETWEEN :AdressNrVon AND :AdressNrBis)
			}
		}
		if (Preiskategorie = 1) {
			if (AuchNullWerte = 1) {
				&sql(UPDATE DBAgrofresh.PKPreis
				              SET EngrosPreis = EngrosPreisAbDatum, 
				              DetailPreis = DetailPreisAbDatum,
				              AnbruchsPreis = AnbruchsPreisAbDatum, 
				              EngrosPreisAbDatum = 0,
				              DetailPreisAbDatum = 0, 
				              AnbruchsPreisAbDatum = 0, 
				              DatumPreisaenderung = NULL
				WHERE DatumPreisaenderung <= :date 
				AND Artikel->Mandant = :MandantOid 
				AND not DatumPreisaenderung is null
				AND Kategorie->Code BETWEEN:PkNrVon AND :PkNrBis)
			} else {
				&sql(UPDATE DBAgrofresh.PKPreis 
				              SET EngrosPreis = case NVL(EngrosPreisAbDatum,0) when 0 THEN EngrosPreis ELSE EngrosPreisAbDatum END, 
				              EngrosPreisAbDatum = 0,
				DetailPreis = case NVL(DetailPreisAbDatum,0) when 0 THEN DetailPreis ELSE DetailPreisAbDatum END,
				DetailPreisAbDatum = 0,
				              AnbruchsPreis = case NVL(AnbruchsPreisAbDatum,0) when 0 THEN AnbruchsPreis ELSE AnbruchsPreisAbDatum END,
				              AnbruchsPreisAbDatum = 0,
				              DatumPreisaenderung = NULL 
				WHERE DatumPreisaenderung <= :date 
				AND not DatumPreisaenderung is null
				AND Artikel->Mandant = :MandantOid
				AND Kategorie->Code BETWEEN :PkNrVon AND :PkNrBis)
			}
		}
	}
	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 DBAgrofresh.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 DBAgrofresh.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 DBAgrofresh.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,chkAktiv:%Boolean=1</FormalSpec>
<ReturnType>DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.Konst).KundenGrpKundenbezStart())
	
	
	set preistyp = 0	
	//wenn Kundenspezifisch
	if (onlyGroup = 0) {
		
		set preistyp = 1
		Set strSQL="SELECT ID FROM DBAgrofresh.KundenPreis "_
		 			"WHERE Kunde = '"_DebiOid_"' "_
		 			"AND KundenSpezArtNr = '"_SpezArtikelNr_"'"
		if (chkAktiv = 1) {		 			
			Set strSQL = strSQL_" AND Artikel->ArtikelAktiv = 1"
		}
		 			
		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(DBAgrofresh.Konst).KundenGrpKundenbezStart())) {
		set preistyp = 2
		Set strSQL="SELECT ID FROM DBAgrofresh.KGPreis "_
		 			"WHERE Gruppe = '"_kundGrpOid_"' "_
		 			"AND KundenSpezArtNr = '"_SpezArtikelNr_"'"
		 			
		if (chkAktiv = 1) {		 			
			Set strSQL = strSQL_" AND Artikel->ArtikelAktiv = 1"
		}

		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(DBAgrofresh.KundenPreis).%OpenId(id)	
		} elseif (preistyp = 2) {
			Quit ##class(DBAgrofresh.KGPreis).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Method name="EngrosPreisPerDatum">
<FormalSpec>Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set engrosPreis = 0
	if ((..DatumPreisaenderung > Datum) || (..DatumPreisaenderung = "") || (..DatumPreisaenderung = 0)) {
		Set engrosPreis = ..EngrosPreis
	} else {
		Set engrosPreis = ..EngrosPreisAbDatum 
	}
	quit engrosPreis
]]></Implementation>
</Method>

<Method name="AnbruchPreisPerDatum">
<FormalSpec>Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set anbruchspreis = 0
	if ((..DatumPreisaenderung > Datum) || (..DatumPreisaenderung = "") || (..DatumPreisaenderung = 0)) {
		Set anbruchspreis = ..AnbruchsPreis
	} else {
		Set anbruchspreis = ..AnbruchsPreisAbDatum 
	}
	quit anbruchspreis
]]></Implementation>
</Method>

<Method name="DetailPreisPerDatum">
<FormalSpec>Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set detPreis = 0
	if ((..DatumPreisaenderung > Datum) || (..DatumPreisaenderung = "") || (..DatumPreisaenderung = 0)) {
		Set detPreis = ..DetailPreis
	} else {
		Set detPreis = ..DetailPreisAbDatum 
	}
	quit detPreis
]]></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 tId = $LG(oid,1)
	// Verknüpfung auf Detailpositionen zurücksetzen
	Set strSQL="UPDATE DBAgrofresh.Auftragspos "_
			"SET SpezPreis = NULL "_
			"WHERE SpezPreis->ID = '"_tId_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
    IF $$$ISOK(sc) {
		Quit $$$OK
    } else {
	    Quit $$$ERROR(##class(DBCore.ErrorCodes).OBJEKTREFSNICHTLOESCHBAR() ,##class(DBCore.ErrorCodes).OBJEKTREFSNICHTLOESCHBARMSG())
    }
]]></Implementation>
</Method>

<Trigger name="trgOnDelete">
<Code>	Set strSQL="SELECT ID FROM DBAgrofresh.Auftragspos WHERE SpezPreis = '"_{ID}_"'"
	Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	Do rs.Prepare(strSQL)
	Set sc=rs.Execute()
	set error = 0
    IF $$$ISOK(sc) {
		while (rs.Next(.sc)) {
			Set id=rs.Data("ID")
			set detpos = ##class(DBAgrofresh.Auftragspos).%OpenId(id)
			if (detpos '= "") {
				set detpos.SpezPreis = ""
				set state = detpos.%Save()
       		 	IF '$$$ISOK(sc) {
	       		 	set error = 1
       		 	}
			}
		}
    }
    if (error = 1) {
	   Set $ECODE = ##class(DBCore.ErrorCodes).OBJEKTREFSNICHTLOESCHBAR()
    }</Code>
<Event>DELETE</Event>
<Foreach>row</Foreach>
</Trigger>

<Method name="GetFirstPreisByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	Set strSQL="SELECT TOP 1 ID FROM DBAgrofresh.Preis "_
	 			"WHERE Artikel->Mandant = '"_MandantOid_"' ORDER BY Artikel->ArtikelNr"
	 			
	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
		}
    }
	quit id
]]></Implementation>
</Method>

<Method name="GetEngrosPreisPerDatumXNetGui">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandOid:%String,AdressOid:%String,ArtikelOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
  
	set engrosPreis = 0
	set isAktion = $$$NO
	//Check auf Aktionen
	set abnehmerOid = ##class(DBDebiKredi.Debitor).GetIdByAdrOid(FibuMandOid, AdressOid)
	if (abnehmerOid '= "") {
		set aktionsId = ##class(DBAgrofresh.AktionspreisDet).GetIdByDatumBereichDotNet(MandantOid, abnehmerOid,ArtikelOid,Datum)
		if (aktionsId '= "") {
			set aktion = ##class(DBAgrofresh.AktionspreisDet).%OpenId(aktionsId)
			if (aktion '= $$$NULLOREF) {
				set engrosPreis = aktion.Preis
				set isAktion = $$$YES
			}
		}
	}
  
	if (isAktion = $$$NO) {
		set preis = ##class(DBAgrofresh.Preis).GetPreis(MandantOid,FibuMandOid, AdressOid, ArtikelOid, 1, 0, "", "")
  
		if (preis '= "") {
			if ((preis.DatumPreisaenderung > Datum) || (preis.DatumPreisaenderung = 0) || (preis.DatumPreisaenderung = $$$NULLOREF)) {
				Set engrosPreis = preis.EngrosPreis
			} else {
				Set engrosPreis = preis.EngrosPreisAbDatum
			}
		}
	}
	quit engrosPreis
]]></Implementation>
</Method>

<Method name="GetDetailPreisPerDatumXNetGui">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandOid:%String,AdressOid:%String,ArtikelOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set preis = ##class(DBAgrofresh.Preis).GetPreis(MandantOid, FibuMandOid, AdressOid, ArtikelOid, 0, 0, "", "")
	set detPreis = 0
	if (preis '= "") {
		if ((preis.DatumPreisaenderung > Datum) || (preis.DatumPreisaenderung = 0) || (preis.DatumPreisaenderung = $$$NULLOREF)) {
			Set detPreis = preis.DetailPreis  
		} else {
			Set detPreis = preis.DetailPreisAbDatum 
		}
	}
	quit detPreis
]]></Implementation>
</Method>

<Method name="UpdateLieferantenPreiseKG">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,FibuMandantOid:%String,VKKundengrpOid:%String,Lieferdatum:%Date</FormalSpec>
<Implementation><![CDATA[
	
	
	Set rs = ##class(%Library.ResultSet).%New("DBAgrofresh.AF.PreisAF:ListeKGPreis")
    Set sc=rs.%Execute(MandantOid, "de", VKKundengrpOid, 1)
    
    while rs.Next(.sc) {
		set id = rs.Data("ID")
		
		set vkPreis = ##class(DBAgrofresh.Preis).%OpenId(id)
		if (vkPreis '= $$$NULLOREF) {
			
			//Parameterwerte setzen
			set artikelId = vkPreis.Artikel.%Id()
			set mandOid = vkPreis.Artikel.Mandant
			set preislisten = vkPreis.Preislisten
			set anzJeGeb = vkPreis.AnzahlJeGebinde
			set kundenSpezArtNr = vkPreis.KundenSpezArtNr
			set barcode = vkPreis.Barcode
			set engrosPreis = vkPreis.EngrosPreis
			set datumPreisAenderung = vkPreis.DatumPreisaenderung
			set engrosAbDatum = vkPreis.EngrosPreisAbDatum
			set gebinde = ""
			if (vkPreis.Gebinde '= $$$NULLOREF) {
				set gebinde = vkPreis.Gebinde.%Id()	
			}
			set herkunft = ""
			if (vkPreis.Herkunft '= $$$NULLOREF) {
				set herkunft = vkPreis.Herkunft.%Id()	
			}
			set prodArt = ""
			if (vkPreis.Produktionsart '= $$$NULLOREF) {
				set prodArt = vkPreis.Produktionsart.%Id()	
			}
			set mengenEinheit = ""
			if (vkPreis.Menge '= $$$NULLOREF) {
				set mengenEinheit = vkPreis.Menge.%Id()	
			}
			set abzugsTyp = ""
			if (vkPreis.Abzugstyp '= $$$NULLOREF) {
				set abzugsTyp = vkPreis.Abzugstyp.%Id()	
			}
	
			//Alle vorhanden spezifischen Artikel updaten auf sämtlichen Lieferanten
			&sql(UPDATE DBAgrofreshEK.LieferantenPreis 
					SET
						Preislisten = :preislisten, AnzahlJeGebinde = :anzJeGeb, 
						LieferantenSpezArtNr = :kundenSpezArtNr,
						Barcode = :barcode, Einstandspreis = :engrosPreis, DatumPreisaenderung = :datumPreisAenderung,
						EinstandspreisAbDatum = :engrosAbDatum, Gebinde = :gebinde, Herkunft = :herkunft,
						Produktionsart = :prodArt, Menge = :mengenEinheit, Abzugstyp = :abzugsTyp
					WHERE Artikel = :artikelId)
			
					
			Set rsLA = ##class(%Library.ResultSet).%New("DBPlattform.AF.LieferanteilAF:ListeLieferantenByArt")
			
    		Set scLA=rsLA.%Execute(MandantOid, vkPreis.Artikel.%Id(), Lieferdatum)
    
    		while rsLA.Next(.scLA) {
				set liefAdrId = rsLA.Data("LieferantAdrOid")
				
				set preisEK = ##class(DBAgrofreshEK.Preis).GetPreis(MandantOid, FibuMandantOid, liefAdrId, vkPreis.Artikel.%Id(), 0, 1)
				if (preisEK = $$$NULLOREF) {
					set preisEK = ##class(DBAgrofreshEK.LieferantenPreis).%New()
					set preisEK.Lieferant = ##class(DBDebiKredi.Kreditor).%OpenId(##class(DBDebiKredi.Kreditor).GetIdByAdrOid(MandantOid, liefAdrId))
				}
				
				if (preisEK '= $$$NULLOREF) {
					
					set preisEK.AbpackdatumTage = vkPreis.AbpackdatumTage
					set preisEK.Abzugstyp = vkPreis.Abzugstyp
					set preisEK.AnzahlEtikettenJeGebinde = vkPreis.AnzahlEtikettenJeGebinde
					set preisEK.AnzahlJeEinheitTyp2 = vkPreis.AnzahlJeEinheitTyp2
					set preisEK.AnzahlJeGebinde = vkPreis.AnzahlJeGebinde
					set preisEK.Artikel = vkPreis.Artikel
					set preisEK.ArtikelAktiv = vkPreis.ArtikelAktiv
					set preisEK.ArtikeltextEtikette = vkPreis.ArtikeltextEtikette
					set preisEK.Barcode = vkPreis.Barcode
					set preisEK.DatumPreisaenderung = vkPreis.DatumPreisaenderung
					set preisEK.Einstandspreis = vkPreis.EngrosPreis
					set preisEK.EinstandspreisAbDatum = vkPreis.EngrosPreisAbDatum
					set preisEK.EtiketteJeGebinde = vkPreis.EtiketteJeGebinde
					set preisEK.Etikettendruck = vkPreis.Etikettendruck
					set preisEK.Etikettentyp1 = vkPreis.Etikettentyp1
					set preisEK.Etikettentyp2 = vkPreis.Etikettentyp2
					set preisEK.Gebinde = vkPreis.Gebinde
					set preisEK.GrammJeEinheit = vkPreis.GrammJeEinheit
					set preisEK.GrammJeLaufmeter = vkPreis.GrammJeLaufmeter
					set preisEK.Herkunft = vkPreis.Herkunft
					set preisEK.LieferantenSpezArtNr = vkPreis.KundenSpezArtNr
					set preisEK.Menge = vkPreis.Menge
					set preisEK.Preislisten = vkPreis.Preislisten
					set preisEK.Produktionsart = vkPreis.Produktionsart
					set preisEK.Produzent = vkPreis.Produzent
					set preisEK.VerfalldatumTage = vkPreis.VerfalldatumTage
					set preisEK.Zulieferant = vkPreis.Zulieferant
					do preisEK.%Save()
				}
								
    		}
			
		}
		
    }
]]></Implementation>
</Method>

<Method name="UpdateLieferantenPreise">
<ClassMethod>1</ClassMethod>
<FormalSpec>FibuMandantOid:%String,AbnehmerOid:%String,Lieferdatum:%Date,SpezPreisId:%String,TriggeredFromDotNet:%Boolean=1</FormalSpec>
<Implementation><![CDATA[
	
	set spezPreis = ##class(DBAgrofresh.Preis).%OpenId(SpezPreisId)
	
	//Parameterwerte setzen
	set artikelId = spezPreis.Artikel.%Id()
	set mandOid = spezPreis.Artikel.Mandant
	set preislisten = spezPreis.Preislisten
	set anzJeGeb = spezPreis.AnzahlJeGebinde
	set kundenSpezArtNr = spezPreis.KundenSpezArtNr
	set barcode = spezPreis.Barcode
	set engrosPreis = spezPreis.EngrosPreis
	set datumPreisAenderung = spezPreis.DatumPreisaenderung
	set engrosAbDatum = spezPreis.EngrosPreisAbDatum
	set gebinde = ""
	if (spezPreis.Gebinde '= $$$NULLOREF) {
		set gebinde = spezPreis.Gebinde.%Id()	
	}
	set herkunft = ""
	if (spezPreis.Herkunft '= $$$NULLOREF) {
		set herkunft = spezPreis.Herkunft.%Id()	
	}
	set prodArt = ""
	if (spezPreis.Produktionsart '= $$$NULLOREF) {
		set prodArt = spezPreis.Produktionsart.%Id()	
	}
	set mengenEinheit = ""
	if (spezPreis.Menge '= $$$NULLOREF) {
		set mengenEinheit = spezPreis.Menge.%Id()	
	}
	set abzugsTyp = ""
	if (spezPreis.Abzugstyp '= $$$NULLOREF) {
		set abzugsTyp = spezPreis.Abzugstyp.%Id()	
	}
	
	//Alle vorhanden spezifischen Artikel updaten auf sämtlichen Lieferanten
	&sql(UPDATE DBAgrofreshEK.LieferantenPreis 
			SET
				Preislisten = :preislisten, AnzahlJeGebinde = :anzJeGeb, 
				LieferantenSpezArtNr = :kundenSpezArtNr,
				Barcode = :barcode, Einstandspreis = :engrosPreis, DatumPreisaenderung = :datumPreisAenderung,
				EinstandspreisAbDatum = :engrosAbDatum, Gebinde = :gebinde, Herkunft = :herkunft,
				Produktionsart = :prodArt, Menge = :mengenEinheit, Abzugstyp = :abzugsTyp
			WHERE Artikel = :artikelId)
	
	
	
	//spez. Artikel anlegen, falls diese für einen Lieferanten, welcher in
	//den Lieferanteilen gelistet ist noch nicht existieren
	if (TriggeredFromDotNet = $$$YES) {
		set rsetLief = ##class(%ResultSet).%New("DBPlattform.AF.LieferanteilAF.ListeLieferantenByArtVZDotNet")
		set scX = rsetLief.Execute(mandOid, artikelId, ##class(DBDebiKredi.Debitor).GetAdrOidById(AbnehmerOid),
							 $zd(Lieferdatum,3))
	} else {
		set rsetLief = ##class(%ResultSet).%New("DBPlattform.AF.LieferanteilAF.ListeLieferantenByArtVZCOS")
		set scX = rsetLief.Execute(mandOid, artikelId, ##class(DBDebiKredi.Debitor).GetAdrOidById(AbnehmerOid),
							 Lieferdatum)
	}
	
	while (rsetLief.Next()) {
		set lieferantAdrId = rsetLief.Data("Lieferant")
		set lieferantId = ##class(DBDebiKredi.Kreditor).GetIdByAdrOid(FibuMandantOid, lieferantAdrId)
	
		set exists = ##class(DBAgrofreshEK.LieferantenPreis).LiefPreisExists(artikelId, lieferantId)
		
		if (exists = 0) {
			
			set nPreis = ##class(DBAgrofreshEK.LieferantenPreis).%New()
			set nPreis.Artikel = ##class(DBAgrofresh.Artikel).%OpenId(artikelId)
			set nPreis.Lieferant = ##class(DBDebiKredi.Kreditor).%OpenId(lieferantId)
			set nPreis.ArtikelAktiv = spezPreis.ArtikelAktiv
			set nPreis.Preislisten = spezPreis.Preislisten
			set nPreis.AnzahlJeGebinde = spezPreis.AnzahlJeGebinde
			set nPreis.LieferantenSpezArtNr = spezPreis.KundenSpezArtNr
			set nPreis.Barcode = spezPreis.Barcode
			set nPreis.Einstandspreis = spezPreis.EngrosPreis
			set nPreis.EinstandspreisAbDatum = spezPreis.EngrosPreisAbDatum
			set nPreis.DatumPreisaenderung = spezPreis.DatumPreisaenderung
			set nPreis.Gebinde = spezPreis.Gebinde
			set nPreis.Herkunft = spezPreis.Herkunft
			set nPreis.Produktionsart = spezPreis.Produktionsart
			set nPreis.Menge = spezPreis.Menge
			set nPreis.Abzugstyp = spezPreis.Abzugstyp
			do nPreis.%Save()
			kill nPreis
		}
		
	} //end while
	
	kill spezPreis
]]></Implementation>
</Method>

<Method name="%OnAddToSaveSet">
<Description><![CDATA[
This callback method is invoked by the <METHOD>%AddToSaveSet</METHOD> method to 
provide notification that the current object is being included in a SaveSet, either
because %Save() was invoked on this object or an object that references this object.

<P>If this method returns an error status then %Save() will fail and the transaction
will be rolled back.]]></Description>
<FormalSpec>depth:%Integer=3,insert:%Integer=0,callcount:%Integer=0</FormalSpec>
<Private>1</Private>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%Status</ReturnType>
<ServerOnly>1</ServerOnly>
<Implementation><![CDATA[
	set ..Modified = $ZDT($ZUTIL(188),3)
	Quit $$$OK
]]></Implementation>
</Method>

<Trigger name="trgAfterSave">
<Code>	// Modified aktualisieren
	new p
	set p = ##class(DBAgrofresh.Preis).%OpenId({ID*N})
	if (p '= "") {
		do p.%Save()
		kill p		
	}</Code>
<Event>UPDATE</Event>
<Time>AFTER</Time>
</Trigger>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.PreisD</DataLocation>
<DefaultData>PreisDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.PreisD</IdLocation>
<IndexLocation>^DBAgrofresh.PreisI</IndexLocation>
<StreamLocation>^DBAgrofresh.PreisS</StreamLocation>
<Data name="PreisDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikel</Value>
</Value>
<Value name="3">
<Value>ArtikelAktiv</Value>
</Value>
<Value name="4">
<Value>Preislisten</Value>
</Value>
<Value name="5">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="6">
<Value>KundenSpezArtNr</Value>
</Value>
<Value name="7">
<Value>Barcode</Value>
</Value>
<Value name="8">
<Value>EngrosPreis</Value>
</Value>
<Value name="9">
<Value>DetailPreis</Value>
</Value>
<Value name="10">
<Value>AnbruchsPreis</Value>
</Value>
<Value name="11">
<Value>RabattProzent</Value>
</Value>
<Value name="12">
<Value>AbpackdatumTage</Value>
</Value>
<Value name="13">
<Value>VerfalldatumTage</Value>
</Value>
<Value name="14">
<Value>AnzahlJeEinheitTyp2</Value>
</Value>
<Value name="15">
<Value>Zusatzsortierung</Value>
</Value>
<Value name="16">
<Value>EngrosPreisAbDatum</Value>
</Value>
<Value name="17">
<Value>DetailPreisAbDatum</Value>
</Value>
<Value name="18">
<Value>AnbruchsPreisAbDatum</Value>
</Value>
<Value name="19">
<Value>DatumPreisaenderung</Value>
</Value>
<Value name="20">
<Value>Kurztext</Value>
</Value>
<Value name="21">
<Value>Etikettendruck</Value>
</Value>
<Value name="22">
<Value>EtiketteJeGebinde</Value>
</Value>
<Value name="23">
<Value>ArtikeltextEtikette</Value>
</Value>
<Value name="24">
<Value>Gebinde</Value>
</Value>
<Value name="25">
<Value>Herkunft</Value>
</Value>
<Value name="26">
<Value>Produktionsart</Value>
</Value>
<Value name="27">
<Value>Etikettentyp1</Value>
</Value>
<Value name="28">
<Value>Etikettentyp2</Value>
</Value>
<Value name="29">
<Value>Lieferant</Value>
</Value>
<Value name="30">
<Value>Produzent</Value>
</Value>
<Value name="31">
<Value>Artikelgruppe</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>AnzahlEtikettenJeGebinde</Value>
</Value>
<Value name="36">
<Value>MinMarge</Value>
</Value>
<Value name="37">
<Value>MaxMarge</Value>
</Value>
<Value name="38">
<Value>MargeInProzent</Value>
</Value>
<Value name="39">
<Value>ZusatzArtikelNr</Value>
</Value>
<Value name="40">
<Value>GrammJeEinheit</Value>
</Value>
<Value name="41">
<Value>GrammJeLaufmeter</Value>
</Value>
<Value name="42">
<Value>ArtikelNrWaage</Value>
</Value>
<Value name="43">
<Value>RabattAktiv</Value>
</Value>
<Value name="44">
<Value>Qualitaetsklasse</Value>
</Value>
<Value name="45">
<Value>Modified</Value>
</Value>
<Value name="46">
<Value>LastUploaded</Value>
</Value>
<Value name="47">
<Value>AnbruchspreisInaktiv</Value>
</Value>
<Value name="48">
<Value>Verarbeitungsverlust</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="AnbruchspreisInaktiv">
</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>
<Property name="GrammJeEinheit">
</Property>
<Property name="GrammJeLaufmeter">
</Property>
<Property name="Herkunft">
</Property>
<Property name="KundenSpezArtNr">
</Property>
<Property name="LastUploaded">
</Property>
<Property name="Lieferant">
</Property>
<Property name="MargeInProzent">
</Property>
<Property name="MaxMarge">
</Property>
<Property name="Menge">
</Property>
<Property name="MinMarge">
</Property>
<Property name="Modified">
</Property>
<Property name="Preislisten">
</Property>
<Property name="Produktionsart">
</Property>
<Property name="Produzent">
</Property>
<Property name="Qualitaetsklasse">
</Property>
<Property name="RabattAktiv">
</Property>
<Property name="RabattProzent">
</Property>
<Property name="Verarbeitungsverlust">
</Property>
<Property name="VerfalldatumTage">
</Property>
<Property name="Zulieferant">
</Property>
<Property name="ZusatzArtikelNr">
</Property>
<Property name="Zusatzsortierung">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.PreisAktion">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62438,42631</TimeChanged>
<TimeCreated>62173,39803.278031</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="SpezPreis">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>parent</Cardinality>
<Inverse>Aktionspreise</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Preis"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="AktionVon">
<Description>
Beginn der Aktion</Description>
<Type>%Date</Type>
</Property>

<Property name="AktionBis">
<Description>
Ende der Aktion</Description>
<Type>%Date</Type>
</Property>

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

<Method name="GetIdByPreisDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>PreisOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set retval = ""
	
	&sql(SELECT ID into :retval FROM DBAgrofresh.PreisAktion WHERE SpezPreis = :PreisOid AND TO_DATE(:Datum) between AktionVon AND AktionBis)
	
	if (SQLCODE '= 0) {
		Set retval = ""
	}
	Quit retval
]]></Implementation>
</Method>

<Method name="GetIdByNewestDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>PreisOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set retval = ""
	
	&sql(SELECT TOP 1 ID into :retval FROM DBAgrofresh.PreisAktion WHERE SpezPreis = :PreisOid ORDER BY AktionBis DESC)
	
	if (SQLCODE '= 0) {
		Set retval = ""
	}
	Quit retval
]]></Implementation>
</Method>

<Method name="GetPreisByPreisDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>PreisOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	set retval = 0
	
	&sql(SELECT Preis into :retval FROM DBAgrofresh.PreisAktion WHERE SpezPreis = :PreisOid AND TO_DATE(:Datum) between AktionVon AND AktionBis)
	
	if (SQLCODE '= 0) {
		Set retval = 0
	}
	Quit retval
]]></Implementation>
</Method>

<Method name="GetIdByIdDatumVonBis">
<ClassMethod>1</ClassMethod>
<FormalSpec>PreisOid:%String,AktionVon:%Date,AktionBis:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set retval = ""
	
	&sql(SELECT ID into :retval FROM DBAgrofresh.PreisAktion WHERE SpezPreis = :PreisOid AND AktionVon = TO_DATE(:AktionVon) AND AktionBis = TO_DATE(:AktionBis))
	
	IF (SQLCODE '= 0) {
		set retval = ""
	}
	
	Quit retval
]]></Implementation>
</Method>

<Method name="IsArtikelAktion">
<ClassMethod>1</ClassMethod>
<FormalSpec>PreisOid:%String,PerDatum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set aktionsPreis = 0
	&sql(SELECT TOP 1 Preis into :aktionsPreis FROM DBAgrofresh.PreisAktion WHERE SpezPreis = :PreisOid AND TO_DATE(:PerDatum) BETWEEN AktionVon AND AktionBis ORDER BY AktionVon DESC)
	if (SQLCODE '= 0) {
		set aktionsPreis = 0
	}
	if (aktionsPreis '= 0) {
		QUIT 1
	} else{
		QUIT 0
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("Aktionspreise")</DataLocation>
<DefaultData>PreisAktionDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.PreisC("Aktionspreise")</IdLocation>
<IndexLocation>^DBAgrofresh.PreisAktionI</IndexLocation>
<StreamLocation>^DBAgrofresh.PreisAktionS</StreamLocation>
<Data name="PreisAktionDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AktionVon</Value>
</Value>
<Value name="3">
<Value>AktionBis</Value>
</Value>
<Value name="4">
<Value>Preis</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AktionBis">
</Property>
<Property name="AktionVon">
</Property>
<Property name="Preis">
</Property>
<Property name="SpezPreis">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.Rabatt">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57206.820159</TimeChanged>
<TimeCreated>61107,29274.875033</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>DBAgrofresh.SD.Artikelgruppe</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>^DBAgrofresh.RabattD</DataLocation>
<DefaultData>RabattDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.RabattD</IdLocation>
<IndexLocation>^DBAgrofresh.RabattI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>
<Property name="Artikelgruppe"/>
<Property name="RabattProzent"/>
</Storage>
</Class>


<Class name="DBAgrofresh.Rueckverg">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57206.901604</TimeChanged>
<TimeCreated>61339,62167.407703</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>DBAgrofresh.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(DBAgrofresh.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	
	if (onlyGroup = 0) {
		set typ = 1
		if (exactDate) {
			set id = ##class(DBAgrofresh.KundenRueckverg).GetOidByExaktKundeDatum(AdressOid, Datum)
		} else {
			set id = ##class(DBAgrofresh.KundenRueckverg).GetOidByKundeDatum(AdressOid, Datum)
		}
		
	} // wenn noch kein Preis gefunden und Kundengrp < 90
	if ((id = "") && (onlyKunde = 0) && (kundGrpNr < ##class(DBAgrofresh.Konst).KundenGrpKundenbezStart())) {
		set typ = 2
		if (exactDate) {
			set id = ##class(DBAgrofresh.KGRueckverg).GetOidByExaktKgDatum(kundGrpOid, Datum)
		} else {
			set id = ##class(DBAgrofresh.KGRueckverg).GetOidByKgDatum(kundGrpOid, Datum)
		}
	}
	
	if (id '= "") {
		if (typ = 1) {
			Quit ##class(DBAgrofresh.KundenRueckverg).%OpenId(id)	
		} elseif (typ = 2) {
			Quit ##class(DBAgrofresh.KGRueckverg).%OpenId(id)
		} else {
			Quit ""	
		}
	} else {
		Quit ""	
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.RueckvergD</DataLocation>
<DefaultData>RueckvergDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.RueckvergD</IdLocation>
<IndexLocation>^DBAgrofresh.RueckvergI</IndexLocation>
<StreamLocation>^DBAgrofresh.RueckvergS</StreamLocation>
<Data name="RueckvergDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AuftrStrg</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>ProzentLaufend</Value>
</Value>
<Value name="14">
<Value>GueltigAbDatum</Value>
</Value>
</Data>
<Property name="AuftrStrg"/>
<Property name="GueltigAbDatum"/>
<Property name="Prozent1"/>
<Property name="Prozent2"/>
<Property name="Prozent3"/>
<Property name="Prozent4"/>
<Property name="Prozent5"/>
<Property name="ProzentLaufend"/>
<Property name="Umsatz1"/>
<Property name="Umsatz2"/>
<Property name="Umsatz3"/>
<Property name="Umsatz4"/>
<Property name="Umsatz5"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Abzugstyp">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61907,51733.831445</TimeChanged>
<TimeCreated>61263,38608.455984</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 DBAgrofresh_SD.Abzugstyp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="ArtikelAbzugstyp">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Abzuege">
<Type>DBAgrofresh.Abzuege</Type>
<Cardinality>children</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AbzugTyp">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreisAbzug">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtikelAbzugstypArtikelbez">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>AbzugstypArtikelbez</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="BestPosAbzugstyp">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EKPreisAbzugstyp">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenEingang">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgang">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbProv">
<Type>DBAgrofreshEK.VerarbProv</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Lieferanteil">
<Type>DBPlattform.LieferanteilDet</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzuege</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtVerarb">
<Type>DBAgrofresh.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Produktionsart">
<Type>DBAgrofresh.SD.Produktionsart</Type>
<Cardinality>many</Cardinality>
<Inverse>Abzugstyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</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="DBAgrofresh.SD.ArtGrKundeRabatt">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57207.005763</TimeChanged>
<TimeCreated>61742,55801.356158</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>DBAgrofresh.SD.Artikelgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>RabattKunde</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="Kunde">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtGrKundeRabatt</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="KundeIndex">
<Properties>Kunde</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 Kunde</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String,Kunde:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set rabatt = 0
	&sql(Select RabattProzent into :rabatt From DBAgrofresh_SD.ArtGrKundeRabatt WHERE Artikelgruppe = :ArtGrpOid AND Kunde = :Kunde)
	quit rabatt
]]></Implementation>
</Method>

<Method name="GetRabattID">
<Description>
Gibt den Rabatt in Prozent zurück mittels Artikelgruppe und Preiskategorie</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String,Kunde:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set oid = ""
	&sql(Select ID into :oid From DBAgrofresh_SD.ArtGrKundeRabatt WHERE Artikelgruppe = :ArtGrpOid AND Kunde = :Kunde)
	quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresCD77.ArtGrKundeR5456D</DataLocation>
<DefaultData>ArtGrKundeRabattDefaultData</DefaultData>
<IdLocation>^DBAgrofresCD77.ArtGrKundeR5456D</IdLocation>
<IndexLocation>^DBAgrofresCD77.ArtGrKundeR5456I</IndexLocation>
<StreamLocation>^DBAgrofresCD77.ArtGrKundeR5456S</StreamLocation>
<Data name="ArtGrKundeRabattDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikelgruppe</Value>
</Value>
<Value name="3">
<Value>Kunde</Value>
</Value>
<Value name="4">
<Value>RabattProzent</Value>
</Value>
</Data>
<Property name="Artikelgruppe"/>
<Property name="Kunde"/>
<Property name="RabattProzent"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.ArtGrPreisKatRabatt">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57207.107254</TimeChanged>
<TimeCreated>61639,34146.177018</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>DBAgrofresh.SD.Artikelgruppe</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>ArtGrPrKatRabatt</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 DBAgrofresh_SD.ArtGrPreisKatRabatt WHERE Artikelgruppe = :ArtGrpOid AND Preiskategorie = :PreisKatOid)
	quit rabatt
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresCD77.ArtGrPreisK915BD</DataLocation>
<DefaultData>ArtGrPreisKatRabattDefaultData</DefaultData>
<IdLocation>^DBAgrofresCD77.ArtGrPreisK915BD</IdLocation>
<IndexLocation>^DBAgrofresCD77.ArtGrPreisK915BI</IndexLocation>
<StreamLocation>^DBAgrofresCD77.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>
<Property name="Artikelgruppe"/>
<Property name="Preiskategorie"/>
<Property name="RabattProzent"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.ArtGrpKGMarge">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57207.211862</TimeChanged>
<TimeCreated>61723,57747.058209</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>DBAgrofresh.SD.Artikelgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtGrpKGMarge</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="Kundengruppe">
<Type>DBAdressen.SD.Kundengruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>ArtGrpKGMarge</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Kundengruppe"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="KundengruppeIndex">
<Properties>Kundengruppe</Properties>
</Index>

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

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

<Property name="DetailMarge">
<Description>
Marge für DetailPreis</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Method name="GetMarge">
<Description>
Gibt die Marge in Prozent zurück mittels Artikelgruppe und Kundengruppe</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String,KGOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set marge = 0
	&sql(SELECT MargeProzent INTO :marge FROM DBAgrofresh_SD.ArtGrpKGMarge 
			WHERE Artikelgruppe = :ArtGrpOid AND Kundengruppe = :KGOid)
	quit marge
]]></Implementation>
</Method>

<Method name="GetKleinmengenzuschlag">
<Description>
Gibt den Kleinmengenzuschlag in Fr. zurück mittels Artikelgruppe und Kundengruppe</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String,KGOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set menge = 0
	&sql(SELECT Kleinmengenzuschlag INTO :menge FROM DBAgrofresh_SD.ArtGrpKGMarge 
			WHERE Artikelgruppe = :ArtGrpOid AND Kundengruppe = :KGOid)
	quit menge
]]></Implementation>
</Method>

<Method name="GetDetailMarge">
<Description>
Gibt die DetailMarge in Prozent zurück mittels Artikelgruppe und Kundengruppe</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>ArtGrpOid:%String,KGOid:%String</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set marge = 0
	&sql(SELECT DetailMarge INTO :marge FROM DBAgrofresh_SD.ArtGrpKGMarge 
			WHERE Artikelgruppe = :ArtGrpOid AND Kundengruppe = :KGOid)
	quit marge
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.ArtGrpKGMargeD</DataLocation>
<DefaultData>ArtGrpKGMargeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.ArtGrpKGMargeD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.ArtGrpKGMargeI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.ArtGrpKGMargeS</StreamLocation>
<Data name="ArtGrpKGMargeDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Artikelgruppe</Value>
</Value>
<Value name="3">
<Value>Kundengruppe</Value>
</Value>
<Value name="4">
<Value>MargeProzent</Value>
</Value>
<Value name="5">
<Value>Kleinmengenzuschlag</Value>
</Value>
<Value name="6">
<Value>DetailMarge</Value>
</Value>
</Data>
<Property name="Artikelgruppe"/>
<Property name="DetailMarge"/>
<Property name="Kleinmengenzuschlag"/>
<Property name="Kundengruppe"/>
<Property name="MargeProzent"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Artikelgruppe">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61101,53652.889043</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>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="RabattKundengruppe">
<Type>DBAgrofresh.Rabatt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="RabattPreiskat">
<Type>DBAgrofresh.SD.ArtGrPreisKatRabatt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="ArtGrpKGMarge">
<Type>DBAgrofresh.SD.ArtGrpKGMarge</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="RabattKunde">
<Type>DBAgrofresh.SD.ArtGrKundeRabatt</Type>
<Cardinality>many</Cardinality>
<Inverse>Artikelgruppe</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PreislisteVonHauptGrp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>VonArtikelHauptGrp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreislisteBisHauptGrp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>BisArtikelHauptGrp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreislisteVonGrp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>VonArtikelGrp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreislisteBisGrp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>BisArtikelGrp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBAgrofresh.SD.Artikelgruppe).%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 DBAgrofresh_SD.Artikelgruppe
	     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 DBAgrofresh_SD.Artikelgruppe
	     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 DBAgrofresh_SD.Artikelgruppe
	     WHERE ArtikelgruppenNr >= 10 AND Mandant = :MandantOid ORDER BY ArtikelgruppenNr DESC)
	Quit id
]]></Implementation>
</Method>

<Method name="GetFirstHauptGrpId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.Artikelgruppe
	     WHERE ArtikelgruppenNr < 10 AND Mandant = :MandantOid ORDER BY ArtikelgruppenNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetLastHauptGrpId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.Artikelgruppe
	     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 DBAgrofresh_SD.Artikelgruppe
	     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(^DBAgrofresh.SD.ArtikelgruppeI("ArtGrpNrIndex",MandantOid,""),1)
	if (grp '= ""){
		set id = $Order(^DBAgrofresh.SD.ArtikelgruppeI("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(^DBAgrofresh.SD.ArtikelgruppeI("ArtGrpNrIndex",MandantOid,""),-1)
	if (grp '= ""){
		set id = $Order(^DBAgrofresh.SD.ArtikelgruppeI("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(^DBAgrofresh.SD.ArtikelgruppeI("ArtGrpNrIndex",MandantOid,AdrNr))
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.ArtikelgruppeI("ArtGrpNrIndex",MandantOid,nextNr,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Artikelgruppe).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(^DBAgrofresh.SD.ArtikelgruppeI("ArtGrpNrIndex",MandantOid,AdrNr),-1)
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.ArtikelgruppeI("ArtGrpNrIndex",MandantOid,nextNr,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Artikelgruppe).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(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set grp = $Order(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,Lang,""),1)
		if (grp '= "") {
			set id = $Order(^DBAgrofresh.SD.ArtikelgruppeI("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(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set grp = $Order(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,Lang,""),-1)
		if (grp '= "") {
			set id = $Order(^DBAgrofresh.SD.ArtikelgruppeI("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(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,Lang,Kurzname))
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,Lang,nextNr,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Artikelgruppe).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(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,Lang,Kurzname),-1)
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.ArtikelgruppeI("BezeichnungIndex",MandantOid,Lang,nextNr,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Artikelgruppe).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 DBAgrofresh_SD.Artikelgruppe 
		 WHERE Mandant = :MandantOid
		 AND DBAgrofresh_SD.Artikelgruppe_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 DBAgrofresh_SD.Artikelgruppe
	     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 DBAgrofresh_SD.Artikelgruppe
	     WHERE Mandant = :MandantOid
	     ORDER BY ArtikelgruppenNr DESC)
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByBezExact">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Bezeichnung:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id 
		 FROM DBAgrofresh_SD.Artikelgruppe 
		 WHERE Mandant = :MandantOid
		 AND DBAgrofresh_SD.Artikelgruppe_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Bezeichnung)
	
	Quit id
]]></Implementation>
</Method>

<Method name="GetGrpNrById">
<ClassMethod>1</ClassMethod>
<FormalSpec>Oid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set nr = ""
	&sql(SELECT TOP 1 ArtikelgruppenNr INTO :nr
	     FROM DBAgrofresh_SD.Artikelgruppe
	     WHERE %ID = :Oid
	     ORDER BY ArtikelgruppenNr DESC)
	Quit nr
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.ArtikelgruppeD</DataLocation>
<DefaultData>ArtikelgruppeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.ArtikelgruppeD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.ArtikelgruppeI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.ArtikelgruppeS</StreamLocation>
<Data name="ArtikelgruppeDefaultData">
<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>
</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>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Aufbereitungsart">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61436,52814.168134</TimeChanged>
<TimeCreated>61101,53273.693009</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="ArtikelAufbereitungsart">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Aufbereitungsart</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 DBAgrofresh_SD.Aufbereitungsart
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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

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


<Class name="DBAgrofresh.SD.Bestellart">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61658,53450.327828</TimeChanged>
<TimeCreated>61100,39419.427538</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="AKBestellart">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Bestellart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AdressVorschlag">
<Type>DBDebiKredi.Debitor</Type>
<Cardinality>many</Cardinality>
<Inverse>Bestellart</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 DBAgrofresh_SD.Bestellart
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="AuftrStrgVorschlag">
<Type>DBAgrofresh.AuftrStrg</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="DBAgrofresh.SD.Chauffeur">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62369,35870.850914</TimeChanged>
<TimeCreated>61101,53273.374203</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="Telefon">
<Description>
Telefon nummer</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

<Property name="Fahrzeug">
<Type>DBAgrofresh.SD.Fahrzeug</Type>
<Cardinality>many</Cardinality>
<Inverse>Chauffeur</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TransportAuftrag">
<Type>DBAgrofresh.TransportKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Chauffeur</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 DBAgrofresh_SD.Chauffeur
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>ChauffeurDefaultData</DefaultData>
<Data name="ChauffeurDefaultData">
<Structure>listnode</Structure>
<Subscript>"Chauffeur"</Subscript>
<Value name="1">
<Value>Telefon</Value>
</Value>
<Value name="2">
<Value>Fax</Value>
</Value>
<Value name="3">
<Value>EMail</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.DTypFormular">
<Super>%Persistent</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61719,33935.378324</TimeCreated>

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

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

<Property name="Formular">
<Type>DBAgrofresh.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 DBAgrofresh_SD.DTypFormular
		 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 DBAgrofresh_SD.DTypFormular
		 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 DBAgrofresh_SD.DTypFormular
		 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 DBAgrofresh_SD.DTypFormular
		 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(DBAgrofresh.SD.DTypFormular).GetFormularOidByDrucktyp(DrucktypOid, FormularTyp)
	Set Ret=""
	If (oid'="") {
		&sql(SELECT count(*) As Cnt INTO :Cnt
		     FROM DBCore.ReportStream 
		     WHERE AgrofreshFormular=:oid AND Sprache=:Sprache)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBCore.ReportStream 
				 WHERE AgrofreshFormular=: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 AgrofreshFormular=:oid AND Sprache=:StdSprache)
			If (Cnt>0) {
				&sql(SELECT %ID INTO :sID 
				     FROM DBCore.ReportStream 
				     WHERE AgrofreshFormular=: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>^DBAgrofresh.SD.DTypFormularD</DataLocation>
<DefaultData>DTypFormularDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.DTypFormularD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.DTypFormularI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.DTypFormularS</StreamLocation>
<Data name="DTypFormularDefaultData">
<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="DBAgrofresh.SD.DTypRepHeader">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61723,33363.334586</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Drucktyp">
<Type>DBAgrofresh.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>DrucktypAgrofresh</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 DBAgrofresh_SD.DTypRepHeader
		 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 DBAgrofresh_SD.DTypRepHeader
		 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 DBAgrofresh_SD.DTypRepHeader
		 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 DBAgrofresh_SD.DTypRepHeader
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp AND SeitenTyp=:seitenTyp)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.DTypRepHeaderD</DataLocation>
<DefaultData>DTypRepHeaderDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.DTypRepHeaderD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.DTypRepHeaderI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.DTypRepHeaderS</StreamLocation>
<Data name="DTypRepHeaderDefaultData">
<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="DBAgrofresh.SD.DTypTblFuss">
<Super>%Persistent</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61718,56211.754536</TimeCreated>

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

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

<Property name="TblFuss">
<Type>DBAgrofresh.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 DBAgrofresh_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 DBAgrofresh_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 DBAgrofresh_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 DBAgrofresh_SD.DTypTblFuss
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.DTypTblFussD</DataLocation>
<DefaultData>DTypTblFussDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.DTypTblFussD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.DTypTblFussI</IndexLocation>
<StreamLocation>^DBAgrofresh.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="DBAgrofresh.SD.DTypTblKopf">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61717,60010.848513</TimeCreated>
<Inheritance>right</Inheritance>

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

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

<Property name="Drucktyp">
<Type>DBAgrofresh.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 DBAgrofresh_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 DBAgrofresh_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 DBAgrofresh_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 DBAgrofresh_SD.DTypTblKopf
		 WHERE Drucktyp=:drucktypOid AND FormularTyp=:formularTyp)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.DTypTblKopfD</DataLocation>
<DefaultData>DTypTblKopfDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.DTypTblKopfD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.DTypTblKopfI</IndexLocation>
<StreamLocation>^DBAgrofresh.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="DBAgrofresh.SD.Drucktyp">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61851,54909.521263</TimeChanged>
<TimeCreated>61353,42739.607854</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>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OfferteDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASAuftragsbestDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AuftragsbestDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASRuestscheinDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RuestscheinDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASLieferscheinDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>LieferscheinDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASRechnungDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RechnungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASSammelrechnungDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>SammelrechnungDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASBarzahlungDrucktyp">
<Type>DBAgrofresh.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 DBAgrofresh_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(DBAgrofresh.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(DBAgrofresh.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>%Boolean</Type>
</Property>

<Property name="ASGebindescheinDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>GebindescheinDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</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>

<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(DBAgrofresh.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[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBAgrofresh.SD.Drucktyp).%OpenId(SrcOid)
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.PositionsNr = newNr
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

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

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

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

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

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

<Property name="ASGesamtGebindeScheinDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>GesamtGebindeScheinDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASFehlmengenlisteDrucktyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>FehlmengenlisteDrucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<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 DBAgrofresh_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>FormularGS</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>FormKopfGS</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>FormGebFussOF</Value>
</Value>
<Value name="24">
<Value>FormGebFussAU</Value>
</Value>
<Value name="25">
<Value>FormGebFussRZ</Value>
</Value>
<Value name="26">
<Value>FormGebFussLS</Value>
</Value>
<Value name="27">
<Value>FormGebFussRG</Value>
</Value>
<Value name="28">
<Value>FormGebFussGS</Value>
</Value>
<Value name="29">
<Value>FormGebFussBZ</Value>
</Value>
<Value name="30">
<Value>FormGebFussMA</Value>
</Value>
<Value name="31">
<Value>FormGebFussSR</Value>
</Value>
<Value name="32">
<Value>FormGebFussSRV</Value>
</Value>
<Value name="33">
<Value>FormGebFussSRP</Value>
</Value>
<Value name="34">
<Value>KopieEindrucken</Value>
</Value>
<Value name="35">
<Value>KopieDrehung</Value>
</Value>
<Value name="36">
<Value>KopieNummer</Value>
</Value>
<Value name="37">
<Value>KopieFontName</Value>
</Value>
<Value name="38">
<Value>KopieFontSize</Value>
</Value>
<Value name="39">
<Value>KopieFontBold</Value>
</Value>
<Value name="40">
<Value>KopieFontItalic</Value>
</Value>
<Value name="41">
<Value>KopieFontStrikeout</Value>
</Value>
<Value name="42">
<Value>KopieFontUnderline</Value>
</Value>
<Value name="43">
<Value>KopieFontColor</Value>
</Value>
<Value name="44">
<Value>KopiePosLinks</Value>
</Value>
<Value name="45">
<Value>KopiePosUnten</Value>
</Value>
<Value name="46">
<Value>KopfSeite1OF</Value>
</Value>
<Value name="47">
<Value>KopfSeite1AU</Value>
</Value>
<Value name="48">
<Value>KopfSeite1RZ</Value>
</Value>
<Value name="49">
<Value>KopfSeite1LS</Value>
</Value>
<Value name="50">
<Value>KopfSeite1RG</Value>
</Value>
<Value name="51">
<Value>KopfSeite1GS</Value>
</Value>
<Value name="52">
<Value>KopfSeite1BZ</Value>
</Value>
<Value name="53">
<Value>KopfSeite1MA</Value>
</Value>
<Value name="54">
<Value>KopfSeite1SR</Value>
</Value>
<Value name="55">
<Value>KopfSeite1SRV</Value>
</Value>
<Value name="56">
<Value>KopfSeite1SRP</Value>
</Value>
<Value name="57">
<Value>KopfFolgeOF</Value>
</Value>
<Value name="58">
<Value>KopfFolgeAU</Value>
</Value>
<Value name="59">
<Value>KopfFolgeRZ</Value>
</Value>
<Value name="60">
<Value>KopfFolgeLS</Value>
</Value>
<Value name="61">
<Value>KopfFolgeRG</Value>
</Value>
<Value name="62">
<Value>KopfFolgeGS</Value>
</Value>
<Value name="63">
<Value>KopfFolgeBZ</Value>
</Value>
<Value name="64">
<Value>KopfFolgeMA</Value>
</Value>
<Value name="65">
<Value>KopfFolgeSR</Value>
</Value>
<Value name="66">
<Value>KopfFolgeSRV</Value>
</Value>
<Value name="67">
<Value>KopfFolgeSRP</Value>
</Value>
<Value name="68">
<Value>KopfKopieSeite1OF</Value>
</Value>
<Value name="69">
<Value>KopfKopieSeite1AU</Value>
</Value>
<Value name="70">
<Value>KopfKopieSeite1RZ</Value>
</Value>
<Value name="71">
<Value>KopfKopieSeite1LS</Value>
</Value>
<Value name="72">
<Value>KopfKopieSeite1RG</Value>
</Value>
<Value name="73">
<Value>KopfKopieSeite1GS</Value>
</Value>
<Value name="74">
<Value>KopfKopieSeite1BZ</Value>
</Value>
<Value name="75">
<Value>KopfKopieSeite1MA</Value>
</Value>
<Value name="76">
<Value>KopfKopieSeite1SR</Value>
</Value>
<Value name="77">
<Value>KopfKopieSeite1SRV</Value>
</Value>
<Value name="78">
<Value>KopfKopieSeite1SRP</Value>
</Value>
<Value name="79">
<Value>KopfKopieFolgeOF</Value>
</Value>
<Value name="80">
<Value>KopfKopieFolgeAU</Value>
</Value>
<Value name="81">
<Value>KopfKopieFolgeRZ</Value>
</Value>
<Value name="82">
<Value>KopfKopieFolgeLS</Value>
</Value>
<Value name="83">
<Value>KopfKopieFolgeRG</Value>
</Value>
<Value name="84">
<Value>KopfKopieFolgeGS</Value>
</Value>
<Value name="85">
<Value>KopfKopieFolgeBZ</Value>
</Value>
<Value name="86">
<Value>KopfKopieFolgeMA</Value>
</Value>
<Value name="87">
<Value>KopfKopieFolgeSR</Value>
</Value>
<Value name="88">
<Value>KopfKopieFolgeSRV</Value>
</Value>
<Value name="89">
<Value>KopfKopieFolgeSRP</Value>
</Value>
<Value name="90">
<Value>FormFussOF</Value>
</Value>
<Value name="91">
<Value>FormFussAU</Value>
</Value>
<Value name="92">
<Value>FormFussRZ</Value>
</Value>
<Value name="93">
<Value>FormFussLS</Value>
</Value>
<Value name="94">
<Value>FormFussRG</Value>
</Value>
<Value name="95">
<Value>FormFussGS</Value>
</Value>
<Value name="96">
<Value>FormFussBZ</Value>
</Value>
<Value name="97">
<Value>FormFussMA</Value>
</Value>
<Value name="98">
<Value>FormFussSR</Value>
</Value>
<Value name="99">
<Value>FormFussSRV</Value>
</Value>
<Value name="100">
<Value>FormFussSRP</Value>
</Value>
<Value name="101">
<Value>EzDrucken</Value>
</Value>
<Value name="102">
<Value>FormularGU</Value>
</Value>
<Value name="103">
<Value>FormKopfGU</Value>
</Value>
<Value name="104">
<Value>KopfSeite1GU</Value>
</Value>
<Value name="105">
<Value>KopfFolgeGU</Value>
</Value>
<Value name="106">
<Value>KopfKopieSeite1GU</Value>
</Value>
<Value name="107">
<Value>KopfKopieFolgeGU</Value>
</Value>
<Value name="108">
<Value>FormFussGU</Value>
</Value>
<Value name="109">
<Value>GenFontName</Value>
</Value>
<Value name="110">
<Value>GenFontSize</Value>
</Value>
<Value name="111">
<Value>GenFontBold</Value>
</Value>
<Value name="112">
<Value>GenFontItalic</Value>
</Value>
<Value name="113">
<Value>GenFontStrikeout</Value>
</Value>
<Value name="114">
<Value>GenFontUnderline</Value>
</Value>
<Value name="115">
<Value>GenRahmenAktivLinks</Value>
</Value>
<Value name="116">
<Value>GenRahmenBreiteLinks</Value>
</Value>
<Value name="117">
<Value>GenRahmenAbstandLinks</Value>
</Value>
<Value name="118">
<Value>GenRahmenAktivOben</Value>
</Value>
<Value name="119">
<Value>GenRahmenBreiteOben</Value>
</Value>
<Value name="120">
<Value>GenRahmenAbstandOben</Value>
</Value>
<Value name="121">
<Value>GenRahmenAktivRechts</Value>
</Value>
<Value name="122">
<Value>GenRahmenBreiteRechts</Value>
</Value>
<Value name="123">
<Value>GenRahmenAbstandRechts</Value>
</Value>
<Value name="124">
<Value>GenRahmenAktivUnten</Value>
</Value>
<Value name="125">
<Value>GenRahmenBreiteUnten</Value>
</Value>
<Value name="126">
<Value>GenRahmenAbstandUnten</Value>
</Value>
<Value name="127">
<Value>GenFontAktiv</Value>
</Value>
<Value name="128">
<Value>GenRahmenAktiv</Value>
</Value>
<Value name="129">
<Value>GenFontColor</Value>
</Value>
<Value name="130">
<Value>KopfSeite1FM</Value>
</Value>
<Value name="131">
<Value>KopfFolgeFM</Value>
</Value>
<Value name="132">
<Value>KopfKopieSeite1FM</Value>
</Value>
<Value name="133">
<Value>KopfKopieFolgeFM</Value>
</Value>
<Value name="134">
<Value>WarenwertTotal</Value>
</Value>
<Value name="135">
<Value>PrintLSwithAU</Value>
</Value>
<Value name="136">
<Value>PrintAUwithLS</Value>
</Value>
</Data>
<Data name="KopieText">
<Attribute>KopieText</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Drucktyp.KopieText"</Subscript>
</Data>
<Data name="TextTotalOhneGebinde">
<Attribute>TextTotalOhneGebinde</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Drucktyp.TextTotalOhneGebinde"</Subscript>
</Data>
<Data name="TextUebertrag">
<Attribute>TextUebertrag</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Drucktyp.TextUebertrag"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Fahrzeug">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57251.091061</TimeChanged>
<TimeCreated>62300,31893.524986</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="Kennzeichen">
<Description>
Autokennzeichen</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

<Property name="AnzPaletten">
<Description>
Anzahl Europal</Description>
<Type>%Integer</Type>
</Property>

<Property name="Ladehoehe">
<Description>
Maximale Ladehöhe in Meter</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Property name="MaximalGewicht">
<Description>
Maximales Gewicht das Beladen werden darf</Description>
<Type>%Integer</Type>
</Property>

<Property name="Transporteur">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>AgrofreshFahrzeug</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="Chauffeur">
<Type>DBAgrofresh.SD.Chauffeur</Type>
<Cardinality>one</Cardinality>
<Inverse>Fahrzeug</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Chauffeur"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="ChauffeurIndex">
<Properties>Chauffeur</Properties>
</Index>

<Property name="TransportKopf">
<Description>
Zuordnungstabelle Transportkopf, Fahrzeug</Description>
<Type>DBAgrofresh.TransportKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Fahrzeug</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.FahrzeugD</DataLocation>
<DefaultData>FahrzeugDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.FahrzeugD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.FahrzeugI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.FahrzeugS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="FahrzeugDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Mandant</Value>
</Value>
<Value name="3">
<Value>Kennzeichen</Value>
</Value>
<Value name="4">
<Value>Kurzbezeichnung</Value>
</Value>
<Value name="5">
<Value>AnzPaletten</Value>
</Value>
<Value name="6">
<Value>Ladehoehe</Value>
</Value>
<Value name="7">
<Value>MaxGewicht</Value>
</Value>
<Value name="8">
<Value>Transporteur</Value>
</Value>
<Value name="9">
<Value>Chauffeur</Value>
</Value>
<Value name="10">
<Value>MaximalGewicht</Value>
</Value>
</Data>
<Property name="AnzPaletten"/>
<Property name="Bezeichnung"/>
<Property name="Chauffeur"/>
<Property name="Kennzeichen"/>
<Property name="Kurzbezeichnung"/>
<Property name="Ladehoehe"/>
<Property name="Mandant"/>
<Property name="MaximalGewicht"/>
<Property name="Transporteur"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.FormDrucker">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61411,29417.252354</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="GgsODruckerSeite1">
<Description>
GesamtGebindeschein Original Drucker Seite 1</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="OFEndlos">
<Description>
Offerte auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="AUEndlos">
<Description>
Auftragsbest auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="RZEndlos">
<Description>
Ruestzettel auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="LSEndlos">
<Description>
Lieferschein auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="GSEndlos">
<Description>
Gebindeschein auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="RGEndlos">
<Description>
Rechnung auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="GUEndlos">
<Description>
Gutschrift auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="BZEndlos">
<Description>
Quittung auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="SREndlos">
<Description>
Sammelrechnung auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Property name="MAEndlos">
<Description>
Gutschrift auf Endlospapier</Description>
<Type>%Boolean</Type>
</Property>

<Method name="GetFormDrucker">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,BenutzerOid:%String</FormalSpec>
<ReturnType>DBAgrofresh.SD.FormDrucker</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.FormDruckerBen
		 WHERE Mandant=:MandantOid AND Benutzer=:BenutzerOid)
	
	if (oid="") {
		&sql(SELECT ID INTO :oid
			 FROM DBAgrofresh_SD.FormDrucker
			 WHERE Mandant=:MandantOid AND ID not in (SELECT ID FROM DBAgrofresh_SD.FormDruckerBen WHERE Mandant=:MandantOid))
	}
	
	set res = ""
	if (oid'="") {
		set res = ##class(DBAgrofresh.SD.FormDrucker).%OpenId(oid)
	} else {
		set res = ##class(DBAgrofresh.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 TOP 1 ID INTO :oid
		 FROM DBAgrofresh_SD.FormDrucker
		 WHERE Mandant=:MandantOid AND ID not in (SELECT ID FROM DBAgrofresh_SD.FormDruckerBen WHERE Mandant=:MandantOid))
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.FormDruckerD</DataLocation>
<DefaultData>FormDruckerDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.FormDruckerD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.FormDruckerI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>GsODruckerSeite1</Value>
</Value>
<Value name="54">
<Value>GsOSchachtSeite1</Value>
</Value>
<Value name="55">
<Value>GsODruckerFolge</Value>
</Value>
<Value name="56">
<Value>GsOSchachtFolge</Value>
</Value>
<Value name="57">
<Value>GsKDruckerSeite1</Value>
</Value>
<Value name="58">
<Value>GsKSchachtSeite1</Value>
</Value>
<Value name="59">
<Value>GsKDruckerFolge</Value>
</Value>
<Value name="60">
<Value>GsKSchachtFolge</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>GuODruckerSeite1</Value>
</Value>
<Value name="98">
<Value>GuOSchachtSeite1</Value>
</Value>
<Value name="99">
<Value>GuODruckerFolge</Value>
</Value>
<Value name="100">
<Value>GuOSchachtFolge</Value>
</Value>
<Value name="101">
<Value>GuKDruckerSeite1</Value>
</Value>
<Value name="102">
<Value>GuKSchachtSeite1</Value>
</Value>
<Value name="103">
<Value>GuKDruckerFolge</Value>
</Value>
<Value name="104">
<Value>GuKSchachtFolge</Value>
</Value>
<Value name="105">
<Value>FaxDrucker</Value>
</Value>
<Value name="106">
<Value>GgsODruckerSeite1</Value>
</Value>
<Value name="107">
<Value>GgsOSchachtSeite1</Value>
</Value>
<Value name="108">
<Value>GgsODruckerFolge</Value>
</Value>
<Value name="109">
<Value>GgsOSchachtFolge</Value>
</Value>
<Value name="110">
<Value>GgsKDruckerSeite1</Value>
</Value>
<Value name="111">
<Value>GgsKSchachtSeite1</Value>
</Value>
<Value name="112">
<Value>GgsKDruckerFolge</Value>
</Value>
<Value name="113">
<Value>GgsKSchachtFolge</Value>
</Value>
<Value name="114">
<Value>FmlODruckerSeite1</Value>
</Value>
<Value name="115">
<Value>FmlOSchachtSeite1</Value>
</Value>
<Value name="116">
<Value>FmlODruckerFolge</Value>
</Value>
<Value name="117">
<Value>FmlOSchachtFolge</Value>
</Value>
<Value name="118">
<Value>FmlKDruckerSeite1</Value>
</Value>
<Value name="119">
<Value>FmlKSchachtSeite1</Value>
</Value>
<Value name="120">
<Value>FmlKDruckerFolge</Value>
</Value>
<Value name="121">
<Value>FmlKSchachtFolge</Value>
</Value>
<Value name="122">
<Value>OFEndlos</Value>
</Value>
<Value name="123">
<Value>AUEndlos</Value>
</Value>
<Value name="124">
<Value>RZEndlos</Value>
</Value>
<Value name="125">
<Value>LSEndlos</Value>
</Value>
<Value name="126">
<Value>GSEndlos</Value>
</Value>
<Value name="127">
<Value>RGEndlos</Value>
</Value>
<Value name="128">
<Value>GUEndlos</Value>
</Value>
<Value name="129">
<Value>BZEndlos</Value>
</Value>
<Value name="130">
<Value>SREndlos</Value>
</Value>
<Value name="131">
<Value>MAEndlos</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AUEndlos">
</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="BZEndlos">
</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="FmlKDruckerFolge">
</Property>
<Property name="FmlKDruckerSeite1">
</Property>
<Property name="FmlKSchachtFolge">
</Property>
<Property name="FmlKSchachtSeite1">
</Property>
<Property name="FmlODruckerFolge">
</Property>
<Property name="FmlODruckerSeite1">
</Property>
<Property name="FmlOSchachtFolge">
</Property>
<Property name="FmlOSchachtSeite1">
</Property>
<Property name="GSEndlos">
</Property>
<Property name="GUEndlos">
</Property>
<Property name="GgsKDruckerFolge">
</Property>
<Property name="GgsKDruckerSeite1">
</Property>
<Property name="GgsKSchachtFolge">
</Property>
<Property name="GgsKSchachtSeite1">
</Property>
<Property name="GgsODruckerFolge">
</Property>
<Property name="GgsODruckerSeite1">
</Property>
<Property name="GgsOSchachtFolge">
</Property>
<Property name="GgsOSchachtSeite1">
</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="LSEndlos">
</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="MAEndlos">
</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="OFEndlos">
</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="RGEndlos">
</Property>
<Property name="RZEndlos">
</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="SREndlos">
</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="DBAgrofresh.SD.FormDruckerBen">
<Description>
</Description>
<Super>DBAgrofresh.SD.FormDrucker,%XML.Adaptor</Super>
<TimeChanged>61436,52816.027683</TimeChanged>
<TimeCreated>61411,29531.53739</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>FormDruckerBenBenutzer</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 DBAgrofresh_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="DBAgrofresh.SD.FormGebFuss">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61368,37406.066436</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="FormularGebindeFussEntry">
<Type>DBAgrofresh.SD.FormGebFussE</Type>
<Cardinality>children</Cardinality>
<Inverse>FormularGebindeFuss</Inverse>
<Relationship>1</Relationship>
</Property>

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

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

<Property name="ASOfferteGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OfferteGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASAuftragsbestGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AuftragsbestGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASRuestscheinGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RuestscheinGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASLieferscheinGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>LieferscheinGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASRechnungGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RechnungGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASSammelrechnungGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>SammelrechnungGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ASBarzahlungGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>BarzahlungGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

<Property name="ASGebindescheinGebFuss">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>GebindescheinGebFuss</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="TotalGebindeRahmenAbstandUnten">
<Type>%Integer</Type>
</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="IfcoGruppieren">
<Type>%Boolean</Type>
</Property>

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

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if (myID '= "") {
		Set rs=##Class(DBAgrofresh.SD.FormGebFuss).%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 DBAgrofresh_SD.FormGebFuss WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

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

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

<Method name="GetTextTotalGebindeClass">
<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(DBAgrofresh.SD.FormGebFuss).%OpenId(myID)
		set text = rs.GetTextTotalGebinde(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

<Method name="CopyFormGebFuss">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBAgrofresh.SD.FormGebFuss).%OpenId(SrcOid)
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.Nummer = newNr
	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 DBAgrofresh_SD.FormGebFussE WHERE FormularGebindeFuss = '"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBAgrofresh.SD.FormGebFussE).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.FormularGebindeFuss=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von FormularGebindeFuss Entrys",  posState, !
				}
				k pos			    
		    }
	    }
	}
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.FormGebFussD</DataLocation>
<DefaultData>FormGebFussDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.FormGebFussD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.FormGebFussI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.FormGebFussS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="FormGebFussDefaultData">
<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>Anordnung</Value>
</Value>
<Value name="5">
<Value>Verrechnung</Value>
</Value>
<Value name="6">
<Value>DruckAlsFusszeile</Value>
</Value>
<Value name="7">
<Value>AbstandOben</Value>
</Value>
<Value name="8">
<Value>NurVerrechnendeDrucken</Value>
</Value>
<Value name="9">
<Value>TotalGebindeFontName</Value>
</Value>
<Value name="10">
<Value>TotalGebindeFontSize</Value>
</Value>
<Value name="11">
<Value>TotalGebindeFontBold</Value>
</Value>
<Value name="12">
<Value>TotalGebindeFontItalic</Value>
</Value>
<Value name="13">
<Value>TotalGebindeFontStrikeout</Value>
</Value>
<Value name="14">
<Value>TotalGebindeFontUnderline</Value>
</Value>
<Value name="15">
<Value>TotalGebindeFontColor</Value>
</Value>
<Value name="16">
<Value>TotalGebindeRahmenAktivLinks</Value>
</Value>
<Value name="17">
<Value>TotalGebindeRahmenBreiteLinks</Value>
</Value>
<Value name="18">
<Value>TotalGebindeRahmenAbstandLinks</Value>
</Value>
<Value name="19">
<Value>TotalGebindeRahmenAktivOben</Value>
</Value>
<Value name="20">
<Value>TotalGebindeRahmenBreiteOben</Value>
</Value>
<Value name="21">
<Value>TotalGebindeRahmenAbstandOben</Value>
</Value>
<Value name="22">
<Value>TotalGebindeRahmenAktivRechts</Value>
</Value>
<Value name="23">
<Value>TotalGebindeRahmenBreiteRechts</Value>
</Value>
<Value name="24">
<Value>TotalGebindeRahmenAbstandRechts</Value>
</Value>
<Value name="25">
<Value>TotalGebindeRahmenAktivUnten</Value>
</Value>
<Value name="26">
<Value>TotalGebindeRahmenBreiteUnten</Value>
</Value>
<Value name="27">
<Value>TotalGebindeRahmenAbstandUnten</Value>
</Value>
<Value name="28">
<Value>GenFontName</Value>
</Value>
<Value name="29">
<Value>GenFontSize</Value>
</Value>
<Value name="30">
<Value>GenFontBold</Value>
</Value>
<Value name="31">
<Value>GenFontItalic</Value>
</Value>
<Value name="32">
<Value>GenFontStrikeout</Value>
</Value>
<Value name="33">
<Value>GenFontUnderline</Value>
</Value>
<Value name="34">
<Value>GenFontColor</Value>
</Value>
<Value name="35">
<Value>GenRahmenAktivLinks</Value>
</Value>
<Value name="36">
<Value>GenRahmenBreiteLinks</Value>
</Value>
<Value name="37">
<Value>GenRahmenAbstandLinks</Value>
</Value>
<Value name="38">
<Value>GenRahmenAktivOben</Value>
</Value>
<Value name="39">
<Value>GenRahmenBreiteOben</Value>
</Value>
<Value name="40">
<Value>GenRahmenAbstandOben</Value>
</Value>
<Value name="41">
<Value>GenRahmenAktivRechts</Value>
</Value>
<Value name="42">
<Value>GenRahmenBreiteRechts</Value>
</Value>
<Value name="43">
<Value>GenRahmenAbstandRechts</Value>
</Value>
<Value name="44">
<Value>GenRahmenAktivUnten</Value>
</Value>
<Value name="45">
<Value>GenRahmenBreiteUnten</Value>
</Value>
<Value name="46">
<Value>GenRahmenAbstandUnten</Value>
</Value>
<Value name="47">
<Value>GenFontAktiv</Value>
</Value>
<Value name="48">
<Value>GenRahmenAktiv</Value>
</Value>
<Value name="49">
<Value>IfcoGruppieren</Value>
</Value>
</Data>
<Data name="TextTotalGebinde">
<Attribute>TextTotalGebinde</Attribute>
<Structure>subnode</Structure>
<Subscript>"TextTotalGebinde"</Subscript>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AbstandOben">
</Property>
<Property name="Anordnung">
</Property>
<Property name="DruckAlsFusszeile">
</Property>
<Property name="GenFontAktiv">
</Property>
<Property name="GenFontBold">
</Property>
<Property name="GenFontColor">
</Property>
<Property name="GenFontItalic">
</Property>
<Property name="GenFontName">
</Property>
<Property name="GenFontSize">
</Property>
<Property name="GenFontStrikeout">
</Property>
<Property name="GenFontUnderline">
</Property>
<Property name="GenRahmenAbstandLinks">
</Property>
<Property name="GenRahmenAbstandOben">
</Property>
<Property name="GenRahmenAbstandRechts">
</Property>
<Property name="GenRahmenAbstandUnten">
</Property>
<Property name="GenRahmenAktiv">
</Property>
<Property name="GenRahmenAktivLinks">
</Property>
<Property name="GenRahmenAktivOben">
</Property>
<Property name="GenRahmenAktivRechts">
</Property>
<Property name="GenRahmenAktivUnten">
</Property>
<Property name="GenRahmenBreiteLinks">
</Property>
<Property name="GenRahmenBreiteOben">
</Property>
<Property name="GenRahmenBreiteRechts">
</Property>
<Property name="GenRahmenBreiteUnten">
</Property>
<Property name="IfcoGruppieren">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
<Property name="NurVerrechnendeDrucken">
</Property>
<Property name="TotalGebindeFontBold">
</Property>
<Property name="TotalGebindeFontColor">
</Property>
<Property name="TotalGebindeFontItalic">
</Property>
<Property name="TotalGebindeFontName">
</Property>
<Property name="TotalGebindeFontSize">
</Property>
<Property name="TotalGebindeFontStrikeout">
</Property>
<Property name="TotalGebindeFontUnderline">
</Property>
<Property name="TotalGebindeRahmenAbstandLinks">
</Property>
<Property name="TotalGebindeRahmenAbstandOben">
</Property>
<Property name="TotalGebindeRahmenAbstandRechts">
</Property>
<Property name="TotalGebindeRahmenAbstandUnten">
</Property>
<Property name="TotalGebindeRahmenAktivLinks">
</Property>
<Property name="TotalGebindeRahmenAktivOben">
</Property>
<Property name="TotalGebindeRahmenAktivRechts">
</Property>
<Property name="TotalGebindeRahmenAktivUnten">
</Property>
<Property name="TotalGebindeRahmenBreiteLinks">
</Property>
<Property name="TotalGebindeRahmenBreiteOben">
</Property>
<Property name="TotalGebindeRahmenBreiteRechts">
</Property>
<Property name="TotalGebindeRahmenBreiteUnten">
</Property>
<Property name="Verrechnung">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.FormGebFussE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61368,37755.98191</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="FontName">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

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

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

<Property name="FormularGebindeFuss">
<Type>DBAgrofresh.SD.FormGebFuss</Type>
<Cardinality>parent</Cardinality>
<Inverse>FormularGebindeFussEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="FormularGebindeFuss"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="RahmenAbstandUnten">
<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="DetailFontName">
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<UDLText name="T">
<Content><![CDATA[
// Format wird für MWST gebraucht

]]></Content>
</UDLText>

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

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

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

<Property name="FormatTotalisieren">
<Type>%Boolean</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(DBAgrofresh.SD.FormGebFussE).%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="GetFormGebFussEOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>FormGebFussOid:%String,FormGebFussENr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.FormGebFussE
		 WHERE Nummer = :FormGebFussENr AND FormularGebindeFuss=:FormGebFussOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("FormularGebindeFussE")</DataLocation>
<DefaultData>FormGebFussEDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.FormGebFussC("FormularGebindeFussE")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.FormGebFussEI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.FormGebFussES</StreamLocation>
<Data name="FormGebFussEDefaultData">
<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>FontName</Value>
</Value>
<Value name="8">
<Value>FontSize</Value>
</Value>
<Value name="9">
<Value>FontBold</Value>
</Value>
<Value name="10">
<Value>FontItalic</Value>
</Value>
<Value name="11">
<Value>FontStrikeout</Value>
</Value>
<Value name="12">
<Value>FontUnderline</Value>
</Value>
<Value name="13">
<Value>FontColor</Value>
</Value>
<Value name="14">
<Value>RahmenAktivLinks</Value>
</Value>
<Value name="15">
<Value>RahmenBreiteLinks</Value>
</Value>
<Value name="16">
<Value>RahmenAbstandLinks</Value>
</Value>
<Value name="17">
<Value>RahmenAktivOben</Value>
</Value>
<Value name="18">
<Value>RahmenBreiteOben</Value>
</Value>
<Value name="19">
<Value>RahmenAbstandOben</Value>
</Value>
<Value name="20">
<Value>RahmenAktivRechts</Value>
</Value>
<Value name="21">
<Value>RahmenBreiteRechts</Value>
</Value>
<Value name="22">
<Value>RahmenAbstandRechts</Value>
</Value>
<Value name="23">
<Value>RahmenAktivUnten</Value>
</Value>
<Value name="24">
<Value>RahmenBreiteUnten</Value>
</Value>
<Value name="25">
<Value>RahmenAbstandUnten</Value>
</Value>
<Value name="26">
<Value>FormatAnzDezStellen</Value>
</Value>
<Value name="27">
<Value>FormatEinheit</Value>
</Value>
<Value name="28">
<Value>FormatKeineAusgabe</Value>
</Value>
<Value name="29">
<Value>FormatDatum</Value>
</Value>
<Value name="30">
<Value>DetailFontName</Value>
</Value>
<Value name="31">
<Value>DetailFontSize</Value>
</Value>
<Value name="32">
<Value>DetailFontBold</Value>
</Value>
<Value name="33">
<Value>DetailFontItalic</Value>
</Value>
<Value name="34">
<Value>DetailFontStrikeout</Value>
</Value>
<Value name="35">
<Value>DetailFontUnderline</Value>
</Value>
<Value name="36">
<Value>DetailFontColor</Value>
</Value>
<Value name="37">
<Value>DetailRahmenAktivLinks</Value>
</Value>
<Value name="38">
<Value>DetailRahmenBreiteLinks</Value>
</Value>
<Value name="39">
<Value>DetailRahmenAbstandLinks</Value>
</Value>
<Value name="40">
<Value>DetailRahmenAktivOben</Value>
</Value>
<Value name="41">
<Value>DetailRahmenBreiteOben</Value>
</Value>
<Value name="42">
<Value>DetailRahmenAbstandOben</Value>
</Value>
<Value name="43">
<Value>DetailRahmenAktivRechts</Value>
</Value>
<Value name="44">
<Value>DetailRahmenBreiteRechts</Value>
</Value>
<Value name="45">
<Value>DetailRahmenAbstandRechts</Value>
</Value>
<Value name="46">
<Value>DetailRahmenAktivUnten</Value>
</Value>
<Value name="47">
<Value>DetailRahmenBreiteUnten</Value>
</Value>
<Value name="48">
<Value>DetailRahmenAbstandUnten</Value>
</Value>
<Value name="49">
<Value>FormatTotalisieren</Value>
</Value>
</Data>
<Data name="FormatTextFallsLeer">
<Attribute>FormatTextFallsLeer</Attribute>
<Structure>subnode</Structure>
<Subscript>"FormatTextFallsLeer"</Subscript>
</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="DetailFontBold">
</Property>
<Property name="DetailFontColor">
</Property>
<Property name="DetailFontItalic">
</Property>
<Property name="DetailFontName">
</Property>
<Property name="DetailFontSize">
</Property>
<Property name="DetailFontStrikeout">
</Property>
<Property name="DetailFontUnderline">
</Property>
<Property name="DetailRahmenAbstandLinks">
</Property>
<Property name="DetailRahmenAbstandOben">
</Property>
<Property name="DetailRahmenAbstandRechts">
</Property>
<Property name="DetailRahmenAbstandUnten">
</Property>
<Property name="DetailRahmenAktivLinks">
</Property>
<Property name="DetailRahmenAktivOben">
</Property>
<Property name="DetailRahmenAktivRechts">
</Property>
<Property name="DetailRahmenAktivUnten">
</Property>
<Property name="DetailRahmenBreiteLinks">
</Property>
<Property name="DetailRahmenBreiteOben">
</Property>
<Property name="DetailRahmenBreiteRechts">
</Property>
<Property name="DetailRahmenBreiteUnten">
</Property>
<Property name="FontBold">
</Property>
<Property name="FontColor">
</Property>
<Property name="FontItalic">
</Property>
<Property name="FontName">
</Property>
<Property name="FontSize">
</Property>
<Property name="FontStrikeout">
</Property>
<Property name="FontUnderline">
</Property>
<Property name="FormatAnzDezStellen">
</Property>
<Property name="FormatEinheit">
</Property>
<Property name="FormatKeineAusgabe">
</Property>
<Property name="FormatTotalisieren">
</Property>
<Property name="FormularGebindeFuss">
</Property>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="RahmenAbstandLinks">
</Property>
<Property name="RahmenAbstandOben">
</Property>
<Property name="RahmenAbstandRechts">
</Property>
<Property name="RahmenAbstandUnten">
</Property>
<Property name="RahmenAktivLinks">
</Property>
<Property name="RahmenAktivOben">
</Property>
<Property name="RahmenAktivRechts">
</Property>
<Property name="RahmenAktivUnten">
</Property>
<Property name="RahmenBreiteLinks">
</Property>
<Property name="RahmenBreiteOben">
</Property>
<Property name="RahmenBreiteRechts">
</Property>
<Property name="RahmenBreiteUnten">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Formular">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</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>AgrofreshFormular</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(DBAgrofresh.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 DBAgrofresh_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 AgrofreshFormular=:oid AND Sprache=:Sprache)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBCore.ReportStream 
				 WHERE AgrofreshFormular=: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 AgrofreshFormular=:oid AND Sprache=:StdSprache)
			If (Cnt>0) {
				&sql(SELECT %ID INTO :sID 
				     FROM DBCore.ReportStream 
				     WHERE AgrofreshFormular=: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 AgrofreshFormular=:oid AND Sprache=:Sprache)
		If (Cnt=0) {
			Set n=##Class(DBCore.ReportStream).%New()
			Set n.Sprache = Sprache
			Set n.AgrofreshFormular = ##Class(DBAgrofresh.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 AgrofreshFormular=: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 DBAgrofresh_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 AgrofreshFormular = :reportOid)
			
	Quit $$$OK
]]></Implementation>
</Method>

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.FormularD</DataLocation>
<DefaultData>FormularDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.FormularD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.FormularI</IndexLocation>
<StreamLocation>^DBAgrofresh.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="DBAgrofresh.SD.Fusstext">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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(DBAgrofresh.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 DBAgrofresh_SD.Fusstext
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr
		 AND (LENGTH(DBAgrofresh_SD.Fusstext_GetText1Class(%ID, :MandantOid, :Lang)) > 0  
		 OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText2Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText3Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText4Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText5Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText6Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText7Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText8Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText9Class(%ID, :MandantOid, :Lang)) > 0
		OR
		LENGTH(DBAgrofresh_SD.Fusstext_GetText10Class(%ID, :MandantOid, :Lang)) > 0))
	Quit id
]]></Implementation>
</Method>

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

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

<Method name="DeleteTextFromId">
<ClassMethod>1</ClassMethod>
<FormalSpec>FusstextOid:%String,Lang:%String</FormalSpec>
<Implementation><![CDATA[
	set obj = ##class(DBAgrofresh.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>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>OfferteFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungAuftragsbestFusstext">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>AuftragsbestFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungRuestscheinFusstext">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RuestscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungLieferscheinFusstext">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>LieferscheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungRechnungFusstext">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>RechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="SteuerungSammelrechnungFusstext">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>SammelrechnungFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="SteuerungGebindescheinFusstext">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>GebindescheinFusstext</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.FusstextD</DataLocation>
<DefaultData>FusstextDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.FusstextD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.FusstextI</IndexLocation>
<StreamLocation>^DBAgrofresh.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="DBAgrofresh.SD.GebAdminKosten">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57207.749871</TimeChanged>
<TimeCreated>61791,65623.215739</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

<Property name="AbDatum">
<Description>
AbDatum welches Preis gütlig ist</Description>
<Type>%Date</Type>
</Property>

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

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

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

<Property name="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeAdminKosten</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

<Index name="KundenkategorieIndex">
<Properties>Kundenkategorie</Properties>
</Index>

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

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

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

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

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

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

<Method name="KostenPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##Class(DBAgrofresh.SD.GebAdminKosten).GetOidByGebindeDatum(Gebinde, KundenKat, Datum)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetOidByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum = :Datum and Kundenkategorie is null)
	} else {
		&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum = :Datum and Kundenkategorie = :KundenKat)
	}
	Quit id
]]></Implementation>
</Method>

<Method name="GetKostenVKByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date,AnzahlGebinde:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kostenJeGebinde = 0
	set kostenJeLadung = 0
	set anzahl = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1  KostenJeGeb, KostenJeLadung, GebindeAnzahl INTO :kostenJeGebinde, :kostenJeLadung, :anzahl FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 KostenJeGeb, KostenJeLadung, GebindeAnzahl INTO :kostenJeGebinde, :kostenJeLadung, :anzahl FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	if ((anzahl '= 0) && (anzahl <= AnzahlGebinde)) {
		Quit +kostenJeLadung
	} else {
		Quit +kostenJeGebinde
	}
]]></Implementation>
</Method>

<Method name="GetKostenVKLadungByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kostenJeLadung = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 KostenJeLadung INTO :kostenJeLadung FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 KostenJeLadung INTO :kostenJeLadung FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	
	Quit +kostenJeLadung
]]></Implementation>
</Method>

<Method name="GetMieteDurchByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set miete = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 MieteDurchschnittsPreis INTO :miete FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 MieteDurchschnittsPreis INTO :miete FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	
	Quit +miete
]]></Implementation>
</Method>

<Method name="GetKostenVKGebByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kostenJeGebinde = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 KostenJeGeb INTO :kostenJeGebinde FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 KostenJeGeb INTO :kostenJeGebinde FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	
	Quit +kostenJeGebinde
]]></Implementation>
</Method>

<Method name="GetMieteVKByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set miete = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 Miete INTO :miete FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 Miete INTO :miete FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	Quit +miete
]]></Implementation>
</Method>

<Method name="GetFirstMieteVKPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	if ((Gebinde = "") || (Gebinde = $C(0))) {
		quit 0
	}
	set Kosten = 0
	
	&sql(SELECT TOP 1 Miete INTO :Kosten FROM DBAgrofresh_SD.GebAdminKosten
		WHERE Gebinde=:Gebinde AND AbDatum <= :Datum Order by AbDatum desc, Kundenkategorie->Code asc)
	
	quit +Kosten
]]></Implementation>
</Method>

<Method name="GetKostenEKByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date,AnzahlGebinde:%Integer</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kostenJeGebinde = 0
	set kostenJeLadung = 0
	set anzahl = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1  KostenJeGebEK, KostenJeLadungEK, GebindeAnzahlEK INTO :kostenJeGebinde, :kostenJeLadung, :anzahl FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 KostenJeGebEK, KostenJeLadungEK, GebindeAnzahlEK INTO :kostenJeGebinde, :kostenJeLadung, :anzahl FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	if ((anzahl '= 0) && (anzahl <= AnzahlGebinde)) {
		Quit +kostenJeLadung
	} else {
		Quit +kostenJeGebinde
	}
]]></Implementation>
</Method>

<Method name="GetKostenEKLadungByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kostenJeLadung = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 KostenJeLadungEK INTO :kostenJeLadung FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 KostenJeLadungEK INTO :kostenJeLadung FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	
	Quit +kostenJeLadung
]]></Implementation>
</Method>

<Method name="GetKostenEKGebByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set kostenJeGebinde = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 KostenJeGebEK INTO :kostenJeGebinde FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum and Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 KostenJeGebEK INTO :kostenJeGebinde FROM DBAgrofresh_SD.GebAdminKosten
	    	 WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	
	Quit +kostenJeGebinde
]]></Implementation>
</Method>

<Method name="GetMieteEKByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,KundenKat:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set miete = 0
	if ((KundenKat = "") || (KundenKat = $C(0))) {
		&sql(SELECT TOP 1 MieteEK INTO :miete FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie is null ORDER BY AbDatum desc)
	} else {
		&sql(SELECT TOP 1 MieteEK INTO :miete FROM DBAgrofresh_SD.GebAdminKosten
		     WHERE  Gebinde= :Gebinde AND AbDatum <= :Datum AND Kundenkategorie = :KundenKat ORDER BY AbDatum desc)
	}
	Quit +miete
]]></Implementation>
</Method>

<Method name="GetFirstMieteEKPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<ReturnTypeParams>SCALE=5</ReturnTypeParams>
<Implementation><![CDATA[
	if ((Gebinde = "") || (Gebinde = $C(0))) {
		quit 0
	}
	set Kosten = 0
	
	&sql(SELECT TOP 1 MieteEK INTO :Kosten FROM DBAgrofresh_SD.GebAdminKosten
		WHERE Gebinde=:Gebinde AND AbDatum <= :Datum Order by AbDatum desc, Kundenkategorie->Code asc)
	
	quit +Kosten
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.GebAdminKostenD</DataLocation>
<DefaultData>GebAdminKostenDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.GebAdminKostenD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.GebAdminKostenI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.GebAdminKostenS</StreamLocation>
<Data name="GebAdminKostenDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>AbDatum</Value>
</Value>
<Value name="3">
<Value>KostenJeGeb</Value>
</Value>
<Value name="4">
<Value>KostenJeLadung</Value>
</Value>
<Value name="5">
<Value>GebindeAnzahl</Value>
</Value>
<Value name="6">
<Value>Gebinde</Value>
</Value>
<Value name="7">
<Value>Kundenkategorie</Value>
</Value>
<Value name="8">
<Value>Miete</Value>
</Value>
<Value name="9">
<Value>KostenJeGebEK</Value>
</Value>
<Value name="10">
<Value>KostenJeLadungEK</Value>
</Value>
<Value name="11">
<Value>GebindeAnzahlEK</Value>
</Value>
<Value name="12">
<Value>MieteEK</Value>
</Value>
<Value name="13">
<Value>MieteDurchschnittsPreis</Value>
</Value>
</Data>
<Property name="AbDatum"/>
<Property name="Gebinde"/>
<Property name="GebindeAnzahl"/>
<Property name="GebindeAnzahlEK"/>
<Property name="KostenJeGeb"/>
<Property name="KostenJeGebEK"/>
<Property name="KostenJeLadung"/>
<Property name="KostenJeLadungEK"/>
<Property name="Kundenkategorie"/>
<Property name="Miete"/>
<Property name="MieteDurchschnittsPreis"/>
<Property name="MieteEK"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.GebTransKosten">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57304.43852</TimeChanged>
<TimeCreated>61339,59671.953469</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="Abteilung">
<Type>DBCore.Abteilung</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeTransport</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="AbDatum">
<Description>
AbDatum welches Preis gütlig ist</Description>
<Type>%Date</Type>
</Property>

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

<Index name="AbteilungDatum">
<Data>%%ID,Abteilung,AbDatum,Kosten</Data>
<Properties>Abteilung,AbDatum</Properties>
</Index>

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

<Property name="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>GebTransKosten</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="FibuKonto">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>GebTransKosten</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>FibuKonto</Properties>
</Index>

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

<Method name="PreisPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebiet:%String,Abteilung:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ##Class(DBAgrofresh.SD.GebTransKosten).GetOidByAbteilungDatum(Gebiet, Abteilung, Datum)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetOidByAbteilungDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebiet:%String,Abteilung:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.GebTransKosten
	     WHERE  Gebiet= :Gebiet AND AbDatum = :Datum AND Abteilung = :Abteilung)
	Quit id
]]></Implementation>
</Method>

<Method name="GetFibukontoPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebiet:%String,Abteilung:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	if (Gebiet ="") {
		quit 0
	}
	set fibuKonto = ""
	
	&sql(SELECT TOP 1 FibuKonto INTO fibuKonto FROM DBAgrofresh_SD.GebTransKosten 
		WHERE  Gebiet=:Gebiet AND Abteilung = :Abteilung AND AbDatum <= :Datum Order by AbDatum desc)
	
	quit fibuKonto
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("GebTransKosten")</DataLocation>
<DefaultData>GebTransKostenDefaultData</DefaultData>
<IdLocation>^DBAdressen.SD.GebietC("GebTransKosten")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.GebTransKostenI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.GebTransKostenS</StreamLocation>
<Data name="GebTransKostenDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Abteilung</Value>
</Value>
<Value name="3">
<Value>AbDatum</Value>
</Value>
<Value name="4">
<Value>Kosten</Value>
</Value>
<Value name="5">
<Value>Gebinde</Value>
</Value>
<Value name="6">
<Value>FibuKonto</Value>
</Value>
</Data>
<Property name="AbDatum"/>
<Property name="Abteilung"/>
<Property name="FibuKonto"/>
<Property name="Gebiet"/>
<Property name="Gebinde"/>
<Property name="Kosten"/>
<Property name="childsub"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Gebinde">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62427,55185.458386</TimeChanged>
<TimeCreated>61101,60903.23306</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="GebindeNr">
<Description>
Gebindenummer</Description>
<Type>%Integer</Type>
</Property>

<Index name="GebindeNrIndex">
<Data>%%ID,GebindeNr</Data>
<Properties>Mandant,GebindeNr</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,GebindeNr,Bezeichnung(KEYS),Bezeichnung(ELEMENTS)</Data>
<Properties>Mandant:Exact,Bezeichnung(KEYS):Exact,Bezeichnung(ELEMENTS):Exact</Properties>
</Index>

<Property name="AnzGebJeHauptGeb">
<Description>
Anzahl Gebinde pro Hauptgebinde</Description>
<Type>%Integer</Type>
</Property>

<UDLText name="T">
<Content><![CDATA[
//Property GebindeVerrechnen As %Boolean;

]]></Content>
</UDLText>

<Property name="GewichtJeGebinde">
<Description>
Gebinde nicht verrechnen
Gewicht je Gebinde</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

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

<Property name="Hauptgebinde">
<Description>
Hauptgebinde</Description>
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>HauptgebindeGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Hauptgebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="HauptgebindeGebinde">
<Description>
HauptgebindeGebinde</Description>
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>many</Cardinality>
<Inverse>Hauptgebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="FibuKontoVK">
<Type>DBFibu.Konto</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeKontoVK</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>GebindeKontoEK</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="MwstVK">
<Type>DBFibu.SD.Mwst</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeMwstVK</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="MwstEK">
<Type>DBFibu.SD.Mwst</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindeMwstEK</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="GKGebinde">
<Type>DBAgrofresh.GebKontr</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VPreisGebinde">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AuftragspositionGebinde">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AuftragspositionHauptGebinde">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>HauptGebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</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="AnzahlJePalette">
<Description>
Anzahl Gebinde je Palette</Description>
<Type>%Integer</Type>
</Property>

<Property name="MaxAnzahlJePalette">
<Description>
Maximale Anzahl je Palette</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="GebTransKosten">
<Type>DBAgrofresh.SD.GebTransKosten</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Index name="FibuKontoMieteAufwIndex">
<Properties>FibuKontoMieteAufw</Properties>
</Index>

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

<Index name="MwstMieteAufwIndex">
<Properties>MwstMieteAufw</Properties>
</Index>

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

<Index name="MwstMieteErlIndex">
<Properties>MwstMieteErl</Properties>
</Index>

<Property name="ArtikelGebinde">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="GKGebindeEK">
<Type>DBAgrofreshEK.GebKontr</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EkDetPos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EKPreisGebinde">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Property name="ChargenEingangGebinde">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgangGebinde">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VPreis">
<Type>DBAgrofresh.GebPreis</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

<Property name="GebindePreisDatum">
<Type>DBAgrofresh.SD.GebindePreis</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="EtiketteJeGebinde">
<Description>
Anzahl je *X* Gebinde</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnzahlEtikettenJeGebinde">
<Description>
Anzahl *X* je Gebinde</Description>
<Type>%Integer</Type>
</Property>

<Property name="GebindeNrAlternativ">
<Description>
Gebindenummer Alternativ</Description>
<Type>%Integer</Type>
</Property>

<Property name="Stellplatz">
<Description>
Stellplatz, für TransportDispo Beerstecher, wenn im Lastwagen 2 Palette aufeinander gelegt werden können ist Stellplatz 0.5
Normalfall ist 1</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</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 '= "") && (myID '= $c(0))) {
		Set rs=##Class(DBAgrofresh.SD.Gebinde).%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="GetNrBezByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,GebCode:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set nr = ""
	set bez = ""
	&sql(SELECT GebindeNr, DBAgrofresh_SD.Gebinde_GetBezeichnungClass(:MandOid, %ID) INTO nr, bez
		 FROM DBAgrofresh_SD.Gebinde 
		 WHERE Mandant = :MandOid AND GebindeNr = :GebCode ORDER BY GebindeNr)
	Quit nr + " " + bez
]]></Implementation>
</Method>

<Method name="GebNrExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,GebCode:%Integer</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id
		 FROM DBAgrofresh_SD.Gebinde 
		 WHERE Mandant = :MandOid AND GebindeNr = :GebCode ORDER BY GebindeNr)
	if (id '= "") {
		Quit 1
	} else {
		Quit 0
	}
]]></Implementation>
</Method>

<Method name="GetOidByCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,GebCode:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""	
	&sql(SELECT ID INTO :id
		 FROM DBAgrofresh_SD.Gebinde 
		 WHERE Mandant = :MandOid AND GebindeNr = :GebCode ORDER BY GebindeNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetOidByAlternativCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String,GebCode:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""	
	&sql(SELECT ID INTO :id
		 FROM DBAgrofresh_SD.Gebinde 
		 WHERE Mandant = :MandOid AND GebindeNrAlternativ = :GebCode ORDER BY GebindeNr)
	Set:(SQLCODE '= 0) id=""
	Quit id
]]></Implementation>
</Method>

<Method name="GetGebNrByOid">
<ClassMethod>1</ClassMethod>
<FormalSpec>GebOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set code = ""	
	&sql(SELECT TOP 1 GebindeNr INTO :code
		 FROM DBAgrofresh_SD.Gebinde 
		 WHERE ID = :GebOid ORDER BY GebindeNr)
	Quit code
]]></Implementation>
</Method>

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

	set id = ""	
	&sql(SELECT Top 1 ID INTO :id
		 FROM DBAgrofresh_SD.Gebinde 
		 WHERE  Mandant = :MandOid AND GebindeNr < DBAgrofresh.Konst_GebindeFirstNichtVerrechenbar() Order by GebindeNr desc)
	Quit id
]]></Implementation>
</Method>

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

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

<Method name="MoveNextOnGebNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AdrNr:%Integer</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextGebNr = $Order(^DBAgrofresh.SD.GebindeI("GebindeNrIndex",MandantOid,AdrNr))
	if (nextGebNr '= "") {
		set res = $Order(^DBAgrofresh.SD.GebindeI("GebindeNrIndex",MandantOid,nextGebNr,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Gebinde).MoveLastOnGebNr(MandantOid)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="MovePrevOnGebNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,AdrNr:%Integer</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextGebNr = $Order(^DBAgrofresh.SD.GebindeI("GebindeNrIndex",MandantOid,AdrNr),-1)
	if (nextGebNr '= "") {
		set res = $Order(^DBAgrofresh.SD.GebindeI("GebindeNrIndex",MandantOid,nextGebNr,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Gebinde).MoveFirstOnGebNr(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(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set gebinde = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,""),1)
		if (gebinde '= "") {
			set id = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,gebinde,""),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(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set gebinde = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,""),-1)
		if (gebinde '= "") {
			set id = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,gebinde,""),-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 nextAdrNr = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,Kurzname))
	if (nextAdrNr '= "") {
		set res = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,nextAdrNr,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Gebinde).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 nextAdrNr = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,Kurzname),-1)
	if (nextAdrNr '= "") {
		set res = $Order(^DBAgrofresh.SD.GebindeI("BezeichnungIndex",MandantOid,Lang,nextAdrNr,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.Gebinde).MoveFirstOnBezeichnung(MandantOid,Lang)
	}
	
	Quit list
]]></Implementation>
</Method>

<Method name="GetGebindeIdByBezeichnung">
<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 DBAgrofresh_SD.Gebinde 
		 WHERE Mandant = :MandantOid
		 AND DBAgrofresh_SD.Gebinde_GetBezeichnungClass(%ID, :MandantOid, :Lang) LIKE :bez)
	
	if (id '= "") {
		Quit id
		
		// keine Daten gefunden
	} else {
		Quit ""
	}
]]></Implementation>
</Method>

<Method name="CopyGebinde">
<ClassMethod>1</ClassMethod>
<FormalSpec>oid:%String,dstNr:%Integer,dstBez:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set srcGebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(oid)
	set newObj = srcGebinde.%ConstructClone(-1)
	Set newObj.GebindeNr = dstNr
	
	Do ##class(DBUtils.StringUtils).SetText(newObj.Bezeichnung, dstBez, Lang, srcGebinde.Mandant)
	
	set status = newObj.%Save()
	quit newObj.%Id()
]]></Implementation>
</Method>

<Method name="CopyGebindeOnExisting">
<ClassMethod>1</ClassMethod>
<FormalSpec>srcOid:%String,dstOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set srcGebinde = ##class(DBAgrofresh.SD.Gebinde).%OpenId(srcOid)
	set newObj = ##class(DBAgrofresh.SD.Gebinde).%OpenId(dstOid)
	set gebNr = newObj.GebindeNr
	
	
	Set Gebinde=##class(%Dictionary.ClassDefinition).%OpenId("DBAgrofresh.SD.Gebinde")
	
	Set nPrp=Gebinde.Properties.Count()
	For I=1:1:nPrp {
		set name = Gebinde.Properties.GetAt(I).Name
		set tmp = $PROPERTY(srcGebinde ,name)
		set $PROPERTY(newObj ,name) = tmp
		
		set newObj.GebindeNr = gebNr
	}
	
	
	set status = newObj.%Save()
	quit dstOid
]]></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)
	Quit ..DeleteRelations(myId)
]]></Implementation>
</Method>

<Trigger name="trgDelete">
<Code>	Set myId={ID}
    Set res=..DeleteRelations(myId)</Code>
<Event>DELETE</Event>
<Foreach>row</Foreach>
</Trigger>

<Method name="DeleteRelations">
<ClassMethod>1</ClassMethod>
<FormalSpec>myId:%String</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	
	// prüfen ob noch Gebindedetails vorhanden
	// Abfrage
    Set strSQL="SELECT count(*) AS anz FROM DBAgrofresh.GebDetail WHERE GebKontr->Gebinde=?"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute(myId)
    // Result prüfen
    if (rs.Next()) {
	    if (+rs.Data("anz") = 0) {
		    Set strSQL="DELETE FROM DBAgrofresh.GebKontr WHERE (Gebinde=?)"
		    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		    Do rs.Prepare(strSQL)
		    Set sc=rs.Execute(myId)
	    } else {
		    Quit $$$ERROR($$$GeneralError,"Failure: Gebinde Detailpositionen vorhanden")
	    }
    }
    
	// prüfen ob noch EK Gebindedetails vorhanden
	// Abfrage
    Set strSQL="SELECT count(*) AS anz FROM DBAgrofreshEK.GebDetail WHERE GebKontr->Gebinde=?"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute(myId)
    // Result prüfen
    if (rs.Next()) {
	    if (+rs.Data("anz") = 0) {
		    Set strSQL="DELETE FROM DBAgrofreshEK.GebKontr WHERE (Gebinde=?)"
		    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
		    Do rs.Prepare(strSQL)
		    Set sc=rs.Execute(myId)
	    } else {
		    Quit $$$ERROR($$$GeneralError,"Failure: Gebinde Detailpositionen vorhanden")
	    }
    }
	
    Set strSQL="DELETE FROM DBAgrofresh_SD.GebindeMiete WHERE (Gebinde=?)"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute(myId)
    
    Set strSQL="DELETE FROM DBAgrofresh_SD.GebTransKosten WHERE (Gebinde=?)"
    Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
    Do rs.Prepare(strSQL)
    Set sc=rs.Execute(myId)
    
    Quit sc
]]></Implementation>
</Method>

<Property name="ArtVerarb">
<Type>DBAgrofresh.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbProv">
<Type>DBAgrofreshEK.VerarbProv</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EKPreis">
<Type>DBAgrofreshEK.GebPreis</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Index name="Selektion2Index">
<Properties>Selektion2</Properties>
</Index>

<Property name="PlattformAuftragsPos">
<Type>DBPlattform.AuftragsPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PlattformBestPos">
<Type>DBPlattform.BestPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="GebindeAdminKosten">
<Type>DBAgrofresh.SD.GebAdminKosten</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Index name="EtikttentypIndex">
<Properties>Etikttentyp</Properties>
</Index>

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

<Index name="FibuKontoAdminkostenIndex">
<Properties>FibuKontoAdminkosten</Properties>
</Index>

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

<Index name="MwstAdminkostenIndex">
<Properties>MwstAdminkosten</Properties>
</Index>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="GebindeInventar">
<Type>DBAgrofresh.GebindeInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Gebinde</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<ForeignKey name="FKArtikel">
<Properties>Artikel</Properties>
<ReferencedClass>DBAgrofresh.Artikel</ReferencedClass>
<ReferencedKey>ArtikelIdIndex</ReferencedKey>
</ForeignKey>

<Property name="KombiHauptGebinde">
<Type>DBAgrofresh.SD.KombiGebinde</Type>
<Cardinality>many</Cardinality>
<Inverse>HauptGebinde</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="KombiZusatzGebinde">
<Type>DBAgrofresh.SD.KombiGebinde</Type>
<Cardinality>many</Cardinality>
<Inverse>ZusatzGebinde</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.GebindeD</DataLocation>
<DefaultData>GebindeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.GebindeD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.GebindeI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.GebindeS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="GebindeDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>GebindeNr</Value>
</Value>
<Value name="3">
<Value>Verrechnungspreis</Value>
</Value>
<Value name="4">
<Value>AnzahlJeGebinde</Value>
</Value>
<Value name="5">
<Value>GebindeVerrechnen</Value>
</Value>
<Value name="6">
<Value>GewichtJeGebinde</Value>
</Value>
<Value name="7">
<Value>Mengenerfassung</Value>
</Value>
<Value name="8">
<Value>Hauptgebinde</Value>
</Value>
<Value name="9">
<Value>FibuKontoVK</Value>
</Value>
<Value name="10">
<Value>FibuKontoEK</Value>
</Value>
<Value name="11">
<Value>MwstVK</Value>
</Value>
<Value name="12">
<Value>MwstEK</Value>
</Value>
<Value name="13">
<Value>Mandant</Value>
</Value>
<Value name="14">
<Value>AnzahlJePalette</Value>
</Value>
<Value name="15">
<Value>MaxAnzahlJePalette</Value>
</Value>
<Value name="16">
<Value>Gebindemiete</Value>
</Value>
<Value name="17">
<Value>FibuKontoMiete</Value>
</Value>
<Value name="18">
<Value>FibuKontoMieteAufw</Value>
</Value>
<Value name="19">
<Value>MwstMieteAufw</Value>
</Value>
<Value name="20">
<Value>MwstMieteErl</Value>
</Value>
<Value name="21">
<Value>NurProduzentenVerrechnen</Value>
</Value>
<Value name="22">
<Value>Zusatzpreis</Value>
</Value>
<Value name="23">
<Value>ManuelleGebindemutSperren</Value>
</Value>
<Value name="24">
<Value>EanCode</Value>
</Value>
<Value name="25">
<Value>ImmerVorschlagen</Value>
</Value>
<Value name="26">
<Value>AnzGebJeHauptGeb</Value>
</Value>
<Value name="27">
<Value>Kundenkategorie</Value>
</Value>
<Value name="28">
<Value>Selektion2</Value>
</Value>
<Value name="29">
<Value>EtiketteJeGebinde</Value>
</Value>
<Value name="30">
<Value>AnzahlEtikettenJeGebinde</Value>
</Value>
<Value name="31">
<Value>Etikttentyp</Value>
</Value>
<Value name="32">
<Value>FibuKontoAdminkosten</Value>
</Value>
<Value name="33">
<Value>MwstAdminkosten</Value>
</Value>
<Value name="34">
<Value>Artikel</Value>
</Value>
<Value name="35">
<Value>GebindeNrAlternativ</Value>
</Value>
<Value name="36">
<Value>Stellplatz</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AnzGebJeHauptGeb">
</Property>
<Property name="AnzahlEtikettenJeGebinde">
</Property>
<Property name="AnzahlJeGebinde"/>
<Property name="AnzahlJePalette">
</Property>
<Property name="Artikel">
</Property>
<Property name="EanCode">
</Property>
<Property name="EtiketteJeGebinde">
</Property>
<Property name="Etikttentyp">
</Property>
<Property name="FibuKontoAdminkosten">
</Property>
<Property name="FibuKontoEK">
</Property>
<Property name="FibuKontoMiete">
</Property>
<Property name="FibuKontoMieteAufw">
</Property>
<Property name="FibuKontoVK">
</Property>
<Property name="GebindeNr">
</Property>
<Property name="GebindeNrAlternativ">
</Property>
<Property name="GebindeVerrechnen"/>
<Property name="Gebindemiete"/>
<Property name="GewichtJeGebinde">
</Property>
<Property name="Hauptgebinde">
</Property>
<Property name="ImmerVorschlagen">
</Property>
<Property name="Kundenkategorie"/>
<Property name="Mandant">
</Property>
<Property name="ManuelleGebindemutSperren">
</Property>
<Property name="MaxAnzahlJePalette">
</Property>
<Property name="Mengenerfassung">
</Property>
<Property name="MwstAdminkosten">
</Property>
<Property name="MwstEK">
</Property>
<Property name="MwstMieteAufw">
</Property>
<Property name="MwstMieteErl">
</Property>
<Property name="MwstVK">
</Property>
<Property name="NurProduzentenVerrechnen"/>
<Property name="Selektion2">
</Property>
<Property name="Stellplatz">
</Property>
<Property name="Verrechnungspreis"/>
<Property name="Zusatzpreis"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.GebindePreis">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62438,42631</TimeChanged>
<TimeCreated>61648,53636.409014</TimeCreated>
<Inheritance>right</Inheritance>

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

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

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

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

<Property name="AbDatum">
<Description>
AbDatum welches Preis gütlig ist</Description>
<Type>%Date</Type>
</Property>

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

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

<Property name="Gebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>GebindePreisDatum</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Gebinde"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Property name="Kalkulation">
<Type>%Decimal</Type>
</Property>

<Property name="MitWaschen">
<Type>%Decimal</Type>
</Property>

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

<Method name="SetPreisPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,Datum:%Date,Preis:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	if (Gebinde ="") {
		quit 0
	}
	set Kosten = 0
	set state = ""
	
	&sql(SELECT TOP 1 Preis INTO :Kosten FROM DBAgrofresh_SD.GebindePreis 
		WHERE Gebinde=:Gebinde AND AbDatum <= :Datum Order by AbDatum desc)
	
	if (+Kosten '= +Preis) {
		set oid = ##class(DBAgrofresh.SD.GebindePreis).GetOidByGebindeDatum(Gebinde, Datum)
		
		if (oid = "") {
			set preis = ##Class(DBAgrofresh.SD.GebindePreis).%New()
			set preis.AbDatum = Datum
			set preis.Preis = Preis
			set geb = ##class(DBAgrofresh.SD.Gebinde).%OpenId(Gebinde)
			set preis.Gebinde = geb
			k geb
			set state = preis.%Save()
		} else {
			set preis = ##class(DBAgrofresh.SD.GebindePreis).%OpenId(oid)
			set preis.Preis = Preis
			set state = preis.%Save()
		}
	}
	
	quit state
]]></Implementation>
</Method>

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

<Method name="GetOidByGebindeDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.GebindePreis
	     WHERE  Gebinde= :Gebinde AND AbDatum = :Datum)
	Quit id
]]></Implementation>
</Method>

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

<Method name="SetZusatzPreisPerDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>Gebinde:%String,Datum:%Date,Preis:%Decimal(SCALE=5)</FormalSpec>
<ReturnType>%Status</ReturnType>
<Implementation><![CDATA[
	if (Gebinde ="") {
		quit 0
	}
	set Kosten = 0
	set state = ""
	
	&sql(SELECT TOP 1 ZusatzPreis INTO :Kosten FROM DBAgrofresh_SD.GebindePreis 
		WHERE Gebinde=:Gebinde AND AbDatum <= :Datum Order by AbDatum desc)
	
	if (+Kosten '= +Preis) {
		set oid = ##class(DBAgrofresh.SD.GebindePreis).GetOidByGebindeDatum(Gebinde, Datum)
		
		if (oid = "") {
			set preis = ##Class(DBAgrofresh.SD.GebindePreis).%New()
			set preis.AbDatum = Datum
			set preis.ZusatzPreis = Preis
			set geb = ##class(DBAgrofresh.SD.Gebinde).%OpenId(Gebinde)
			set preis.Gebinde = geb
			k geb
			set state = preis.%Save()
		} else {
			set preis = ##class(DBAgrofresh.SD.GebindePreis).%OpenId(oid)
			set preis.ZusatzPreis = Preis
			set state = preis.%Save()
		}
	}
	
	quit state
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.GebindePreisD</DataLocation>
<DefaultData>GebindePreisDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.GebindePreisD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.GebindePreisI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.GebindePreisS</StreamLocation>
<Data name="GebindePreisDefaultData">
<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>
<Value name="4">
<Value>Gebinde</Value>
</Value>
<Value name="5">
<Value>Zusatzpreis</Value>
</Value>
<Value name="6">
<Value>Kalkulation</Value>
</Value>
<Value name="7">
<Value>MitWaschen</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AbDatum">
</Property>
<Property name="Gebinde">
</Property>
<Property name="Kalkulation">
</Property>
<Property name="MitWaschen">
</Property>
<Property name="Preis">
</Property>
<Property name="Zusatzpreis">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Herkunft">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62047,34012.27126</TimeChanged>
<TimeCreated>61100,39319.946877</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>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VPreisHerkunft">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AuftragspositionHerkunft">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EkDetPos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EKPreisHerkunft">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenEingangHerkunft">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgangHerkunft">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>many</Cardinality>
<Inverse>Herkunft</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbProv">
<Type>DBAgrofreshEK.VerarbProv</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 DBAgrofresh_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 DBAgrofresh_SD.Herkunft
	     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 DBAgrofresh_SD.Herkunft
		 WHERE Mandant = :MandantOid AND DBAgrofresh_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 DBAgrofresh_SD.Herkunft
	     WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	     
	Set code = (+code + 1)
	Quit code
]]></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>
<Data name="Kennzeichen">
<Attribute>Kennzeichen</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Herkunft.Kennzeichen"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Hilfstexte">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61100,39099.499178</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 '= "") && (myID '= $c(0)) && (myID '= "0")) {
		Set rs=##Class(DBAgrofresh.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 DBAgrofresh_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(DBAgrofresh.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>

<Method name="GetPosNrById">
<ClassMethod>1</ClassMethod>
<FormalSpec>HilfstextOid:%String</FormalSpec>
<ReturnType>%Integer</ReturnType>
<Implementation><![CDATA[
	set posnr = 0
	&sql(SELECT PositionsNr INTO :posnr FROM DBAgrofresh_SD.Hilfstexte 
		 WHERE ID = :HilfstextOid)
	if (SQLCODE'=0) {
		set posnr = 0
	}
	Quit posnr
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.HilfstexteD</DataLocation>
<DefaultData>HilfstexteDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.HilfstexteD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.HilfstexteI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.HilfstexteS</StreamLocation>
<Data name="HilfstexteDefaultData">
<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="DBAgrofresh.SD.HogaGrp">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62416,58040.510107</TimeChanged>
<TimeCreated>61940,56376.115474</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="ArtikelHoga">
<Type>DBAgrofresh.ArtikelHoga</Type>
<Cardinality>many</Cardinality>
<Inverse>GroupObj</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Untergruppen">
<Type>DBAgrofresh.SD.HogaUnterGrp</Type>
<Cardinality>many</Cardinality>
<Inverse>HogaGrp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="HogaHauptGrp">
<Type>DBAgrofresh.SD.HogaHauptGrp</Type>
<Cardinality>one</Cardinality>
<Inverse>Gruppen</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="HogaGrp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</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 DBAgrofresh_SD.HogaGrp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteAllKategories">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<Implementation><![CDATA[
	// Relations löschen
	&sql(Update DBAgrofresh.ArtikelHoga art SET MainGroup = NULL, art."Group" = NULL, UnderGroup = NULL, MainGroupObj = NULL,  GroupObj = NULL, UnderGroupObj = NULL WHERE Artikel->Mandant = :MandantOid)
	// Untergruppen zuerst löschen
	&sql(DELETE FROM DBAgrofresh_SD.HogaUnterGrp WHERE Mandant =:MandantOid)
	// Gruppen löschen
	&sql(DELETE FROM DBAgrofresh_SD.HogaGrp WHERE Mandant =:MandantOid)
	// Hauptgruppen löschen
	&sql(DELETE FROM DBAgrofresh_SD.HogaHauptGrp WHERE Mandant =:MandantOid)
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>HogaGrpDefaultData</DefaultData>
<Data name="HogaGrpDefaultData">
<Structure>listnode</Structure>
<Subscript>"HogaGrp"</Subscript>
<Value name="1">
<Value>HogaHauptGrp</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.HogaHauptGrp">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62189,36140.157017</TimeChanged>
<TimeCreated>61940,56371.308928</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="HogaArtikel">
<Type>DBAgrofresh.ArtikelHoga</Type>
<Cardinality>many</Cardinality>
<Inverse>MainGroupObj</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Gruppen">
<Type>DBAgrofresh.SD.HogaGrp</Type>
<Cardinality>many</Cardinality>
<Inverse>HogaHauptGrp</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 DBAgrofresh_SD.HogaHauptGrp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.HogaUnterGrp">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62055,59066.19991</TimeChanged>
<TimeCreated>62055,52637.482944</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="HogaArtikel">
<Type>DBAgrofresh.ArtikelHoga</Type>
<Cardinality>many</Cardinality>
<Inverse>UnderGroupObj</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="HogaGrp">
<Type>DBAgrofresh.SD.HogaGrp</Type>
<Cardinality>one</Cardinality>
<Inverse>Untergruppen</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="HogaGrp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</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 DBAgrofresh_SD.HogaUnterGrp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>HogaUnterGrpDefaultData</DefaultData>
<Data name="HogaUnterGrpDefaultData">
<Structure>listnode</Structure>
<Subscript>"HogaUnterGrp"</Subscript>
<Value name="1">
<Value>HogaGrp</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Inhalt">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61503,40493.510774</TimeChanged>
<TimeCreated>61100,39332.988922</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="Kurzcode">
<Description>
Kurzcode</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Property name="ArtikelInhalt">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Inhalt</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Method name="GetKurzcodeClass">
<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(DBAgrofresh.SD.Inhalt).%OpenId(myID)
		set text = rs.GetKurzcode(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetKurzcode">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Kurzcode, 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 DBAgrofresh_SD.Inhalt
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>InhaltDefaultData</DefaultData>
<Data name="InhaltDefaultData">
<Structure>listnode</Structure>
<Subscript>"Inhalt"</Subscript>
<Value name="1">
<Value>Menge</Value>
</Value>
</Data>
<Data name="Kurzcode">
<Attribute>Kurzcode</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Inhalt.Kurzcode"</Subscript>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.KombiGebinde">
<Description>
</Description>
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57207.968108</TimeChanged>
<TimeCreated>62391,58522.945006</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="HauptGebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>KombiHauptGebinde</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="HauptGebindeIndex">
<Properties>HauptGebinde</Properties>
</Index>

<Property name="ZusatzGebinde">
<Type>DBAgrofresh.SD.Gebinde</Type>
<Cardinality>one</Cardinality>
<Inverse>KombiZusatzGebinde</Inverse>
<Relationship>1</Relationship>
</Property>

<Index name="ZusatzGebindeIndex">
<Properties>ZusatzGebinde</Properties>
</Index>

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

<Index name="NrIndex">
<Properties>HauptGebinde,Nr</Properties>
<Unique>1</Unique>
</Index>

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

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.KombiGebindeD</DataLocation>
<DefaultData>KombiGebindeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.KombiGebindeD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.KombiGebindeI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.KombiGebindeS</StreamLocation>
<Data name="KombiGebindeDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>HauptGebinde</Value>
</Value>
<Value name="3">
<Value>ZusatzGebinde</Value>
</Value>
<Value name="4">
<Value>Nr</Value>
</Value>
<Value name="5">
<Value>Anzahl</Value>
</Value>
<Value name="6">
<Value>Abfuellgewicht</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Lagerort">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62375,31128.284018</TimeChanged>
<TimeCreated>61350,38740.524487</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 DBAgrofresh_SD.Lagerort
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Property name="ArtikelLager">
<Type>DBAgrofresh.ArtikelLager</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Auftragsposition">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtikelTagesLager">
<Type>DBAgrofresh.ArtikelTagesLager</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>DBAgrofresh.Lagerbew</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EkDetPos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Mitarbeiter">
<Type>DBCore.Mitarbeiter</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenEingang">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgang">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VorschlagAuftrag">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VorschlagBest">
<Type>DBAgrofreshEK.BestellungsKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Etikettentyp">
<Type>DBPrint.Etikette</Type>
<Cardinality>one</Cardinality>
<Inverse>LagerortEtikettentyp</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>

<Index name="EtikettentypIndex">
<Properties>Etikettentyp</Properties>
</Index>

<Property name="EtikettenDrucker">
<Type>DBPrint.EtikLagerPrint</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="GebindeInventar">
<Type>DBAgrofresh.GebindeInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Lagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TransportSrc">
<Type>DBPlattform.Transportschein</Type>
<Cardinality>many</Cardinality>
<Inverse>SrcLagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TransportDst">
<Type>DBPlattform.Transportschein</Type>
<Cardinality>many</Cardinality>
<Inverse>DstLagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Adresse">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>Lagerort</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>

<Property name="GetrSorteLagerort">
<Type>DBSpezial.Getr.SD.Getrsorte</Type>
<Cardinality>many</Cardinality>
<Inverse>VorschlagLagerort</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<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>
<Value name="3">
<Value>Etikettentyp</Value>
</Value>
<Value name="4">
<Value>Adresse</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Lieferart">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62090,32685.116125</TimeChanged>
<TimeCreated>61100,39418.430235</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="AKLieferart">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>many</Cardinality>
<Inverse>Lieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Transporteur">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>TransporteurAdresse</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>Lieferart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Verrechnen">
<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 DBAgrofresh_SD.Lieferart
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Property name="AuftrStrgLieferart">
<Type>DBAgrofresh.AuftrStrg</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="DBAgrofresh.SD.Mengencode">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62325,30544.144059</TimeChanged>
<TimeCreated>61101,53270.683191</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="CodeEinheit">
<Type>%Integer</Type>
</Property>

<UDLText name="T">
<Content><![CDATA[
// Code der Mengeneinheit wenn Anbuch 

]]></Content>
</UDLText>

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

<Property name="AuftragspositionMengeneinheit">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreisMenge">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Menge</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EkBestellDetail">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EKPreisMenge">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Menge</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtikelMengeneinheit">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PlattformAuftragsPos">
<Type>DBPlattform.AuftragsPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PlattformBestPos">
<Type>DBPlattform.BestPos</Type>
<Cardinality>many</Cardinality>
<Inverse>Mengeneinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Einheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="HogaAlternativEinheit">
<Type>DBAgrofresh.ArtikelHoga</Type>
<Cardinality>many</Cardinality>
<Inverse>AlternativEinheit</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="AngebotsPosEinheit">
<Type>DBPlattform.AngebotsPos</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 DBAgrofresh_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 DBAgrofresh_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 DBAgrofresh_SD.Mengencode
		 WHERE Mandant = :MandantOid AND DBAgrofresh_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 DBAgrofresh_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>
<Value name="3">
<Value>AlternativEinheit</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.PLDataEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61700,31439.378075</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="Preislistenkopf">
<Type>DBAgrofresh.SD.PLKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>PLDataEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Preislistenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</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">
<Description>
Schrift Einstellungen</Description>
<Type>DBCore.COFont</Type>
</Property>

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

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

<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 '= "") && (myID '= $c(0))) {
		Set rs=##Class(DBAgrofresh.SD.PLDataEntry).%OpenId(myID)
		set text = rs.Format.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="GetPLDataEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>PLKopfOid:%String,PLDataEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.PLDataEntry
		 WHERE Nummer = :PLDataEntryNr AND Preislistenkopf=:PLKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("PLDataEntry")</DataLocation>
<DefaultData>PLDataEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.PLKopfC("PLDataEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.PLDataEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.PLDataEntryS</StreamLocation>
<Data name="FormatTextFallsLeer">
<Attribute>FormatTextFallsLeer</Attribute>
<Structure>subnode</Structure>
<Subscript>"FormatTextFallsLeer"</Subscript>
</Data>
<Data name="PLDataEntryDefaultData">
<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>FontName</Value>
</Value>
<Value name="8">
<Value>FontSize</Value>
</Value>
<Value name="9">
<Value>FontBold</Value>
</Value>
<Value name="10">
<Value>FontItalic</Value>
</Value>
<Value name="11">
<Value>FontStrikeout</Value>
</Value>
<Value name="12">
<Value>FontUnderline</Value>
</Value>
<Value name="13">
<Value>FontColor</Value>
</Value>
<Value name="14">
<Value>RahmenAktivLinks</Value>
</Value>
<Value name="15">
<Value>RahmenBreiteLinks</Value>
</Value>
<Value name="16">
<Value>RahmenAbstandLinks</Value>
</Value>
<Value name="17">
<Value>RahmenAktivOben</Value>
</Value>
<Value name="18">
<Value>RahmenBreiteOben</Value>
</Value>
<Value name="19">
<Value>RahmenAbstandOben</Value>
</Value>
<Value name="20">
<Value>RahmenAktivRechts</Value>
</Value>
<Value name="21">
<Value>RahmenBreiteRechts</Value>
</Value>
<Value name="22">
<Value>RahmenAbstandRechts</Value>
</Value>
<Value name="23">
<Value>RahmenAktivUnten</Value>
</Value>
<Value name="24">
<Value>RahmenBreiteUnten</Value>
</Value>
<Value name="25">
<Value>RahmenAbstandUnten</Value>
</Value>
<Value name="26">
<Value>FormatAnzDezStellen</Value>
</Value>
<Value name="27">
<Value>FormatEinheit</Value>
</Value>
<Value name="28">
<Value>FormatKeineAusgabe</Value>
</Value>
<Value name="29">
<Value>FormatDatum</Value>
</Value>
<Value name="30">
<Value>FormatTotalisieren</Value>
</Value>
<Value name="31">
<Value>Font</Value>
</Value>
<Value name="32">
<Value>Rahmen</Value>
</Value>
<Value name="33">
<Value>Format</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="Preislistenkopf">
</Property>
<Property name="Rahmen">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.PLFormular">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61707,31320.283666</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>PLFormular</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="Drucktyp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>Formular</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Method name="GetBezeichnungClass">
<ClassMethod>1</ClassMethod>
<FormalSpec>myID:%String,MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	set text = ""
	if ((myID '= "") && (myID '= $c(0))) {
		Set rs=##Class(DBAgrofresh.SD.PLFormular).%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 DBAgrofresh_SD.PLFormular 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 PLFormular=:oid AND Sprache=:Sprache)
		If (Cnt>0) {
			&sql(SELECT %ID INTO :sID 
				 FROM DBCore.ReportStream 
				 WHERE PLFormular=: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 PLFormular=:oid AND Sprache=:StdSprache)
			If (Cnt>0) {
				&sql(SELECT %ID INTO :sID 
				     FROM DBCore.ReportStream 
				     WHERE PLFormular=: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 PLFormular=:oid AND Sprache=:Sprache)
		If (Cnt=0) {
			Set n=##Class(DBCore.ReportStream).%New()
			Set n.Sprache = Sprache
			Set n.PLFormular = ##Class(DBAgrofresh.SD.PLFormular).%OpenId(oid)
			Set Ret=n.%Save()
			Set n=""
			Set res=(Ret=1)
			Quit:'res res
		}
		&sql(SELECT ID InTo :sID 
		     FROM DBCore.ReportStream 
		     WHERE PLFormular=: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 DBAgrofresh_SD.PLFormular
		 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 PLFormular = :reportOid)
			
	Quit $$$OK
]]></Implementation>
</Method>

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.PLFormularD</DataLocation>
<DefaultData>PLFormularDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.PLFormularD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.PLFormularI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.PLFormularS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="PLFormularDefaultData">
<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="%%CLASSNAME">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.PLGrupKopfEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61700,33306.048428</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="Preislistenkopf">
<Type>DBAgrofresh.SD.PLKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>PLGrupKopfEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Preislistenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

<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 '= "") && (myID '= $c(0))) {
		Set rs=##Class(DBAgrofresh.SD.PLGrupKopfEntry).%OpenId(myID)
		if (rs.Format '= "") {
			set text = rs.Format.GetFormatTextFallsLeer(MandOid, Lang)
		}
	}
	Quit text
]]></Implementation>
</Method>

<Method name="GetGrupKopfEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>PLKopfOid:%String,PLgkEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.PLGrupKopfEntry
		 WHERE Nummer = :PLgkEntryNr AND Preislistenkopf=:PLKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("PLGrupKopfEntry")</DataLocation>
<DefaultData>PLGrupKopfEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.PLKopfC("PLGrupKopfEntry")</IdLocation>
<IndexLocation>^DBAgrofresCD77.PLGrupKopfE4CE1I</IndexLocation>
<StreamLocation>^DBAgrofresCD77.PLGrupKopfE4CE1S</StreamLocation>
<Data name="FormatTextFallsLeer">
<Attribute>FormatTextFallsLeer</Attribute>
<Structure>subnode</Structure>
<Subscript>"FormatTextFallsLeer"</Subscript>
</Data>
<Data name="PLGrupKopfEntryDefaultData">
<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>FontName</Value>
</Value>
<Value name="8">
<Value>FontSize</Value>
</Value>
<Value name="9">
<Value>FontBold</Value>
</Value>
<Value name="10">
<Value>FontItalic</Value>
</Value>
<Value name="11">
<Value>FontStrikeout</Value>
</Value>
<Value name="12">
<Value>FontUnderline</Value>
</Value>
<Value name="13">
<Value>FontColor</Value>
</Value>
<Value name="14">
<Value>RahmenAktivLinks</Value>
</Value>
<Value name="15">
<Value>RahmenBreiteLinks</Value>
</Value>
<Value name="16">
<Value>RahmenAbstandLinks</Value>
</Value>
<Value name="17">
<Value>RahmenAktivOben</Value>
</Value>
<Value name="18">
<Value>RahmenBreiteOben</Value>
</Value>
<Value name="19">
<Value>RahmenAbstandOben</Value>
</Value>
<Value name="20">
<Value>RahmenAktivRechts</Value>
</Value>
<Value name="21">
<Value>RahmenBreiteRechts</Value>
</Value>
<Value name="22">
<Value>RahmenAbstandRechts</Value>
</Value>
<Value name="23">
<Value>RahmenAktivUnten</Value>
</Value>
<Value name="24">
<Value>RahmenBreiteUnten</Value>
</Value>
<Value name="25">
<Value>RahmenAbstandUnten</Value>
</Value>
<Value name="26">
<Value>FormatAnzDezStellen</Value>
</Value>
<Value name="27">
<Value>FormatEinheit</Value>
</Value>
<Value name="28">
<Value>FormatKeineAusgabe</Value>
</Value>
<Value name="29">
<Value>FormatDatum</Value>
</Value>
<Value name="30">
<Value>FormatTotalisieren</Value>
</Value>
<Value name="31">
<Value>Font</Value>
</Value>
<Value name="32">
<Value>Rahmen</Value>
</Value>
<Value name="33">
<Value>Format</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="Preislistenkopf">
</Property>
<Property name="Rahmen">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.PLKopf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61700,31042.448898</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="AnzahlSpalten">
<Description>
Anzahl Spalten welche das Formular haben soll</Description>
<Type>%Integer</Type>
</Property>

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

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

<Property name="PLKopfEntry">
<Description>
Detail Kopf Einträge</Description>
<Type>DBAgrofresh.SD.PLKopfEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Preislistenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PLDataEntry">
<Description>
Detail Datenzeilen</Description>
<Type>DBAgrofresh.SD.PLDataEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Preislistenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="PLGrupKopfEntry">
<Description>
Detail Gruppenkopf</Description>
<Type>DBAgrofresh.SD.PLGrupKopfEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Preislistenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="AbstandVorAuflistung">
<Description>
DetailZeilen Abstände</Description>
<Type>%Integer</Type>
</Property>

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

<Property name="GKArtGrAktiv">
<Description>
Einstellungen fuer Gruppenkopf</Description>
<Type>%Boolean</Type>
</Property>

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

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

<Property name="GenFont">
<Description>
Standard Schrift für Kopf</Description>
<Type>DBCore.COFont</Type>
</Property>

<Property name="GenRahmen">
<Description>
Standard Rahmen für Kopf</Description>
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="DataGenFont">
<Description>
Standard Schrift für Datenzeilen</Description>
<Type>DBCore.COFont</Type>
</Property>

<Property name="DataGenRahmen">
<Description>
Standard Rahmen für Datenzeilen</Description>
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="AktionFont">
<Description>
Schrift für Aktionspreise</Description>
<Type>DBCore.COFont</Type>
</Property>

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

<Property name="PreislistenTyp">
<Type>DBAgrofresh.SD.PLPreislistenTyp</Type>
<Cardinality>many</Cardinality>
<Inverse>FormKopf</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Method name="GetAktionPreTextClass">
<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(DBAgrofresh.SD.PLKopf).%OpenId(myID)
		set text = rs.GetAktionPreText(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetAktionPreText">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..AktionPreText, Value, Lang, MandOid)
]]></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(DBAgrofresh.SD.PLKopf).%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 DBAgrofresh_SD.PLKopf WHERE Mandant=:MandOid)
	Quit +nr+1
]]></Implementation>
</Method>

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

<Method name="CopyPLKopf">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBAgrofresh.SD.PLKopf).%OpenId(SrcOid)
	
	/// kopieren und Nummer zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.Nummer = newNr
	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 DBAgrofresh_SD.PLKopfEntry WHERE Preislistenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBAgrofresh.SD.PLKopfEntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Preislistenkopf=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 DBAgrofresh_SD.PLDataEntry WHERE Preislistenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBAgrofresh.SD.PLDataEntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Preislistenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Preislisten Detail ",  posState, !
				}
				k pos			    
		    }
		    
	    }
		// Artikel-Gruppenkopf
		Set strSQL="SELECT ID FROM DBAgrofresh_SD.PLGrupKopfEntry WHERE Preislistenkopf='"_SrcOid_"'"
		Set rs = ##class(%Library.ResultSet).%New("%DynamicQuery:SQL")
	    Do rs.Prepare(strSQL)
	    Set sc=rs.Execute()
	    while (rs.Next()) {
		    set pos = ##class(DBAgrofresh.SD.PLGrupKopfEntry).%OpenId(rs.Data("ID"))
		    if (pos '= "") {
			    set newPos = pos.%ConstructClone(-1)
			    set newPos.Preislistenkopf=dstAs
			    set posState = newPos.%Save()
			    
				if ('$$$ISOK(posState)) {
					w "Error in Save von Detail Gruppenkopf ",  posState, !
				}
				k pos			    
		    }
		    
	    }
	}
	set status = dstAs.%Save()
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.PLKopfD</DataLocation>
<DefaultData>PLKopfDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.PLKopfD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.PLKopfI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.PLKopfS</StreamLocation>
<Data name="AktionPreText">
<Attribute>AktionPreText</Attribute>
<Structure>subnode</Structure>
<Subscript>"AktionPreText"</Subscript>
</Data>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="PLKopfDefaultData">
<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>GenFontAktiv</Value>
</Value>
<Value name="5">
<Value>GenFontName</Value>
</Value>
<Value name="6">
<Value>GenFontSize</Value>
</Value>
<Value name="7">
<Value>GenFontBold</Value>
</Value>
<Value name="8">
<Value>GenFontItalic</Value>
</Value>
<Value name="9">
<Value>GenFontStrikeout</Value>
</Value>
<Value name="10">
<Value>GenFontUnderline</Value>
</Value>
<Value name="11">
<Value>GenFontColor</Value>
</Value>
<Value name="12">
<Value>GenRahmenAktiv</Value>
</Value>
<Value name="13">
<Value>GenRahmenAktivLinks</Value>
</Value>
<Value name="14">
<Value>GenRahmenBreiteLinks</Value>
</Value>
<Value name="15">
<Value>GenRahmenAbstandLinks</Value>
</Value>
<Value name="16">
<Value>GenRahmenAktivOben</Value>
</Value>
<Value name="17">
<Value>GenRahmenBreiteOben</Value>
</Value>
<Value name="18">
<Value>GenRahmenAbstandOben</Value>
</Value>
<Value name="19">
<Value>GenRahmenAktivRechts</Value>
</Value>
<Value name="20">
<Value>GenRahmenBreiteRechts</Value>
</Value>
<Value name="21">
<Value>GenRahmenAbstandRechts</Value>
</Value>
<Value name="22">
<Value>GenRahmenAktivUnten</Value>
</Value>
<Value name="23">
<Value>GenRahmenBreiteUnten</Value>
</Value>
<Value name="24">
<Value>GenRahmenAbstandUnten</Value>
</Value>
<Value name="25">
<Value>DataGenFontAktiv</Value>
</Value>
<Value name="26">
<Value>DataGenFontName</Value>
</Value>
<Value name="27">
<Value>DataGenFontSize</Value>
</Value>
<Value name="28">
<Value>DataGenFontBold</Value>
</Value>
<Value name="29">
<Value>DataGenFontItalic</Value>
</Value>
<Value name="30">
<Value>DataGenFontStrikeout</Value>
</Value>
<Value name="31">
<Value>DataGenFontUnderline</Value>
</Value>
<Value name="32">
<Value>DataGenFontColor</Value>
</Value>
<Value name="33">
<Value>DataGenRahmenAktiv</Value>
</Value>
<Value name="34">
<Value>DataGenRahmenAktivLinks</Value>
</Value>
<Value name="35">
<Value>DataGenRahmenBreiteLinks</Value>
</Value>
<Value name="36">
<Value>DataGenRahmenAbstandLinks</Value>
</Value>
<Value name="37">
<Value>DataGenRahmenAktivOben</Value>
</Value>
<Value name="38">
<Value>DataGenRahmenBreiteOben</Value>
</Value>
<Value name="39">
<Value>DataGenRahmenAbstandOben</Value>
</Value>
<Value name="40">
<Value>DataGenRahmenAktivRechts</Value>
</Value>
<Value name="41">
<Value>DataGenRahmenBreiteRechts</Value>
</Value>
<Value name="42">
<Value>DataGenRahmenAbstandRechts</Value>
</Value>
<Value name="43">
<Value>DataGenRahmenAktivUnten</Value>
</Value>
<Value name="44">
<Value>DataGenRahmenBreiteUnten</Value>
</Value>
<Value name="45">
<Value>DataGenRahmenAbstandUnten</Value>
</Value>
<Value name="46">
<Value>AktionFontAktiv</Value>
</Value>
<Value name="47">
<Value>AktionFontName</Value>
</Value>
<Value name="48">
<Value>AktionFontSize</Value>
</Value>
<Value name="49">
<Value>AktionFontBold</Value>
</Value>
<Value name="50">
<Value>AktionFontItalic</Value>
</Value>
<Value name="51">
<Value>AktionFontStrikeout</Value>
</Value>
<Value name="52">
<Value>AktionFontUnderline</Value>
</Value>
<Value name="53">
<Value>AktionFontColor</Value>
</Value>
<Value name="54">
<Value>AktionBackgroundColor</Value>
</Value>
<Value name="55">
<Value>AbstandVorAuflistung</Value>
</Value>
<Value name="56">
<Value>AbstandDetail</Value>
</Value>
<Value name="57">
<Value>AbstandVorGK</Value>
</Value>
<Value name="58">
<Value>AbstandNachGK</Value>
</Value>
<Value name="59">
<Value>AnzahlSpalten</Value>
</Value>
<Value name="60">
<Value>SpaltenAbstand</Value>
</Value>
<Value name="61">
<Value>GenFont</Value>
</Value>
<Value name="62">
<Value>DataGenFont</Value>
</Value>
<Value name="63">
<Value>DataGenRahmen</Value>
</Value>
<Value name="64">
<Value>AktionFont</Value>
</Value>
<Value name="65">
<Value>GenRahmen</Value>
</Value>
<Value name="66">
<Value>GKArtGrAktiv</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AbstandDetail">
</Property>
<Property name="AbstandNachGK">
</Property>
<Property name="AbstandVorAuflistung">
</Property>
<Property name="AbstandVorGK">
</Property>
<Property name="AktionFont">
</Property>
<Property name="AnzahlSpalten">
</Property>
<Property name="DataGenFont">
</Property>
<Property name="DataGenRahmen">
</Property>
<Property name="GKArtGrAktiv">
</Property>
<Property name="GenFont">
</Property>
<Property name="GenRahmen">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
<Property name="SpaltenAbstand">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.PLKopfEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61700,31167.282226</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="Rahmen">
<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="Preislistenkopf">
<Type>DBAgrofresh.SD.PLKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>PLKopfEntry</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Preislistenkopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</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))) {
		Set rs=##Class(DBAgrofresh.SD.PLKopfEntry).%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="GetPLKopfEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>PLKopfOid:%String,PLKopfEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.PLKopfEntry
		 WHERE Nummer = :PLKopfEntryNr AND Preislistenkopf=:PLKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("PLKopfEntry")</DataLocation>
<DefaultData>PLKopfEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.PLKopfC("PLKopfEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.PLKopfEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.PLKopfEntryS</StreamLocation>
<Data name="PLKopfEntryDefaultData">
<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>FontName</Value>
</Value>
<Value name="8">
<Value>FontSize</Value>
</Value>
<Value name="9">
<Value>FontBold</Value>
</Value>
<Value name="10">
<Value>FontItalic</Value>
</Value>
<Value name="11">
<Value>FontStrikeout</Value>
</Value>
<Value name="12">
<Value>FontUnderline</Value>
</Value>
<Value name="13">
<Value>FontColor</Value>
</Value>
<Value name="14">
<Value>RahmenAktivLinks</Value>
</Value>
<Value name="15">
<Value>RahmenBreiteLinks</Value>
</Value>
<Value name="16">
<Value>RahmenAbstandLinks</Value>
</Value>
<Value name="17">
<Value>RahmenAktivOben</Value>
</Value>
<Value name="18">
<Value>RahmenBreiteOben</Value>
</Value>
<Value name="19">
<Value>RahmenAbstandOben</Value>
</Value>
<Value name="20">
<Value>RahmenAktivRechts</Value>
</Value>
<Value name="21">
<Value>RahmenBreiteRechts</Value>
</Value>
<Value name="22">
<Value>RahmenAbstandRechts</Value>
</Value>
<Value name="23">
<Value>RahmenAktivUnten</Value>
</Value>
<Value name="24">
<Value>RahmenBreiteUnten</Value>
</Value>
<Value name="25">
<Value>RahmenAbstandUnten</Value>
</Value>
<Value name="26">
<Value>Font</Value>
</Value>
<Value name="27">
<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="Preislistenkopf">
</Property>
<Property name="Rahmen">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.PLPreislistenTyp">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62388,37402.438919</TimeChanged>
<TimeCreated>61700,31474.835315</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="GenFont">
<Description>
Grundeinstellungen für die Schrift</Description>
<Type>DBCore.COFont</Type>
</Property>

<Property name="GenRahmen">
<Description>
Grundeinstellungen für den Rahmen</Description>
<Type>DBCore.CORahmen</Type>
</Property>

<Property name="FormKopf">
<Description>
Formular Tabellen Kopf</Description>
<Type>DBAgrofresh.SD.PLKopf</Type>
<Cardinality>one</Cardinality>
<Inverse>PreislistenTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="FormKopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="FormKopfIndex">
<Properties>FormKopf</Properties>
</Index>

<Property name="KopfSeite1FM">
<Description>
Formularkopf Fax / Mail</Description>
<Type>DBCore.ReportHeader</Type>
<Cardinality>one</Cardinality>
<Inverse>PLKopfSeite1FM</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Index name="PLKopfSeite1FMIndex">
<Properties>KopfSeite1FM</Properties>
</Index>

<Property name="KopfSeite1">
<Description>
Formularkopf</Description>
<Type>DBCore.ReportHeader</Type>
<Cardinality>one</Cardinality>
<Inverse>PLKopfSeite1</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Index name="PLKopfSeite1Index">
<Properties>KopfSeite1</Properties>
</Index>

<Property name="KopfFolgeFM">
<Description>
Formularkopf Folgeseiten Fax / Mail</Description>
<Type>DBCore.ReportHeader</Type>
<Cardinality>one</Cardinality>
<Inverse>PLKopfFolgeFM</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Index name="PLKopfFolgeFMIndex">
<Properties>KopfFolgeFM</Properties>
</Index>

<Property name="KopfFolge">
<Description>
Formularkopf Folgeseiten Formular</Description>
<Type>DBCore.ReportHeader</Type>
<Cardinality>one</Cardinality>
<Inverse>PLKopfFolge</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Index name="PLKopfFolgeIndex">
<Properties>KopfFolge</Properties>
</Index>

<Property name="Formular">
<Description>
Formular</Description>
<Type>DBAgrofresh.SD.PLFormular</Type>
<Cardinality>one</Cardinality>
<Inverse>Drucktyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Formular"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

<Property name="AuftragsStrgPreislistenTyp">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>PreislistenTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

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

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

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

<Property name="BisArtikelGrp">
<Type>DBAgrofresh.SD.Artikelgruppe</Type>
<Cardinality>one</Cardinality>
<Inverse>PreislisteBisGrp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="VonArtikelGrp"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

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

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

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

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

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

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

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

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

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

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

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

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

<Property name="PreisaenderungNachText">
<Type>%String</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 DBAgrofresh_SD.PLPreislistenTyp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Method name="GetFirstIdByMandant">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.PLPreislistenTyp
		 WHERE Mandant = :MandantOid Order by PositionsNr)
	Quit id
]]></Implementation>
</Method>

<Method name="CopyPreislistentyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>SrcOid:%String,newNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	/// Init
	set status = ""
	set dstAs = ""
	/// Source öffnen
	set srcAs = ##class(DBAgrofresh.SD.PLPreislistenTyp).%OpenId(SrcOid)
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(-1)
	set dstAs.PositionsNr = newNr
	set status = dstAs.%Save()
	set id = dstAs.%Id()
	kill dstAs, srcAs
	quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>PLPreislistenTypDefaultData</DefaultData>
<Data name="PLPreislistenTypDefaultData">
<Subscript>"PLPreislistenTyp"</Subscript>
<Value name="1">
<Value>GenFontAktiv</Value>
</Value>
<Value name="2">
<Value>GenFontName</Value>
</Value>
<Value name="3">
<Value>GenFontSize</Value>
</Value>
<Value name="4">
<Value>GenFontBold</Value>
</Value>
<Value name="5">
<Value>GenFontItalic</Value>
</Value>
<Value name="6">
<Value>GenFontStrikeout</Value>
</Value>
<Value name="7">
<Value>GenFontUnderline</Value>
</Value>
<Value name="8">
<Value>GenFontColor</Value>
</Value>
<Value name="9">
<Value>GenRahmenAktiv</Value>
</Value>
<Value name="10">
<Value>GenRahmenAktivLinks</Value>
</Value>
<Value name="11">
<Value>GenRahmenBreiteLinks</Value>
</Value>
<Value name="12">
<Value>GenRahmenAbstandLinks</Value>
</Value>
<Value name="13">
<Value>GenRahmenAktivOben</Value>
</Value>
<Value name="14">
<Value>GenRahmenBreiteOben</Value>
</Value>
<Value name="15">
<Value>GenRahmenAbstandOben</Value>
</Value>
<Value name="16">
<Value>GenRahmenAktivRechts</Value>
</Value>
<Value name="17">
<Value>GenRahmenBreiteRechts</Value>
</Value>
<Value name="18">
<Value>GenRahmenAbstandRechts</Value>
</Value>
<Value name="19">
<Value>GenRahmenAktivUnten</Value>
</Value>
<Value name="20">
<Value>GenRahmenBreiteUnten</Value>
</Value>
<Value name="21">
<Value>GenRahmenAbstandUnten</Value>
</Value>
<Value name="22">
<Value>GenFont</Value>
</Value>
<Value name="23">
<Value>GenRahmen</Value>
</Value>
<Value name="24">
<Value>FormKopf</Value>
</Value>
<Value name="25">
<Value>KopfSeite1FM</Value>
</Value>
<Value name="26">
<Value>KopfSeite1</Value>
</Value>
<Value name="27">
<Value>KopfFolgeFM</Value>
</Value>
<Value name="28">
<Value>KopfFolge</Value>
</Value>
<Value name="29">
<Value>Formular</Value>
</Value>
<Value name="30">
<Value>UseVonBisHauptgruppe</Value>
</Value>
<Value name="31">
<Value>VonArtikelHauptGrp</Value>
</Value>
<Value name="32">
<Value>BisArtikelHauptGrp</Value>
</Value>
<Value name="33">
<Value>VonArtikelGrp</Value>
</Value>
<Value name="34">
<Value>BisArtikelGrp</Value>
</Value>
<Value name="35">
<Value>SortArtikelBez</Value>
</Value>
<Value name="36">
<Value>NewPricesBold</Value>
</Value>
<Value name="37">
<Value>AktionspreiseMarkieren</Value>
</Value>
<Value name="38">
<Value>AktionsFont</Value>
</Value>
<Value name="39">
<Value>AktionVorgestellterText</Value>
</Value>
<Value name="40">
<Value>AktionHintergrundAktiv</Value>
</Value>
<Value name="41">
<Value>AktionsFarbe</Value>
</Value>
<Value name="42">
<Value>PreisaenderungMarkieren</Value>
</Value>
<Value name="43">
<Value>PreisaenderungFont</Value>
</Value>
<Value name="44">
<Value>PreisaenderungVorText</Value>
</Value>
<Value name="45">
<Value>PreisaenderungFarbeAktiv</Value>
</Value>
<Value name="46">
<Value>PreisaenderungFarbe</Value>
</Value>
<Value name="47">
<Value>AktionNachText</Value>
</Value>
<Value name="48">
<Value>PreisaenderungNachText</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Parzelle">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62416,57208.069671</TimeChanged>
<TimeCreated>62089,64383.838816</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="ParzellenCode">
<Description>
ParzellenCode</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

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

<Property name="Lieferant">
<Type>DBAdressen.Adresse</Type>
<Cardinality>one</Cardinality>
<Inverse>ParzellenEigentuemer</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="Bestellungspos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Parzelle</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Method name="GetIdByParzelleLieferant">
<ClassMethod>1</ClassMethod>
<FormalSpec>Parzellenbez:%String,Lieferant:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh_SD.Parzelle
			WHERE ParzellenCode like :Parzellenbez AND Lieferant->ID = :Lieferant)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetFirstCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set code = ""
	&sql(SELECT TOP 1 ParzellenCode INTO :code FROM DBAgrofresh_SD.Parzelle
			WHERE Lieferant->Mandant = :MandantOid ORDER BY ParzellenCode)
	Quit:(SQLCODE'=0) ""
	Quit code
]]></Implementation>
</Method>

<Method name="GetLastCode">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set code = ""
	&sql(SELECT TOP 1 ParzellenCode INTO :code FROM DBAgrofresh_SD.Parzelle
			WHERE Lieferant->Mandant = :MandantOid ORDER BY ParzellenCode DESC)
	Quit:(SQLCODE'=0) ""
	Quit code
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.ParzelleD</DataLocation>
<DefaultData>ParzelleDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.ParzelleD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.ParzelleI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.ParzelleS</StreamLocation>
<Data name="ParzelleDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>ParzellenCode</Value>
</Value>
<Value name="3">
<Value>Flaeche</Value>
</Value>
<Value name="4">
<Value>Bezeichnung</Value>
</Value>
<Value name="5">
<Value>Lieferant</Value>
</Value>
</Data>
<Property name="Bezeichnung"/>
<Property name="Flaeche"/>
<Property name="Lieferant"/>
<Property name="ParzellenCode"/>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Preisetikette">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61647,28718.561305</TimeChanged>
<TimeCreated>61100,39343.787842</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="Kurzcode">
<Description>
Kurzcode</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Property name="ArtikelPreisetikette">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Preisetikette</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Method name="GetKurzcodeClass">
<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(DBAgrofresh.SD.Preisetikette).%OpenId(myID)
		set text = rs.GetKurzcode(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetKurzcode">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Kurzcode, 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 DBAgrofresh_SD.Preisetikette
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>PreisetiketteDefaultData</DefaultData>
<Data name="Kurzcode">
<Attribute>Kurzcode</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Preisetikette.Kurzcode"</Subscript>
</Data>
<Data name="PreisetiketteDefaultData">
<Structure>listnode</Structure>
<Subscript>"Preisetikette"</Subscript>
<Value name="1">
<Value>Menge</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Preisliste">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62090,32685.36342</TimeChanged>
<TimeCreated>61101,53273.267198</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>DBAgrofresh.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 DBAgrofresh_SD.Preisliste
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

<Property name="BestStrgPreisliste">
<Type>DBAgrofreshEK.BestStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>Preisliste</Inverse>
<Relationship>1</Relationship>
</Property>

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


<Class name="DBAgrofresh.SD.Produktgruppe">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61625,61119.728035</TimeChanged>
<TimeCreated>61100,39359.007596</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 DBAgrofresh_SD.Produktgruppe WHERE Mandant= :MandantOid AND PositionsNr= :PosNr)
	Quit myID
]]></Implementation>
</Method>

<Property name="Artikel">
<Type>DBAgrofresh.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="DBAgrofresh.SD.Produktionsart">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62248,34699.8972</TimeChanged>
<TimeCreated>61101,53273.051452</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="ArtikelProduktionsart">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VPreisProduktionsart">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ADetProdart">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EkDetPos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EKPreisProdArt">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Property name="Abzugstyp">
<Type>DBAgrofresh.SD.Abzugstyp</Type>
<Cardinality>one</Cardinality>
<Inverse>Produktionsart</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="ChargenEingang">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbProv">
<Type>DBAgrofreshEK.VerarbProv</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgang">
<Type>DBAgrofreshEK.ChargenAusgang</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Getreidesorte">
<Type>DBSpezial.Getr.SD.Getrsorte</Type>
<Cardinality>many</Cardinality>
<Inverse>Produktionsart</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 DBAgrofresh_SD.Produktionsart
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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

	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.Produktionsart
		 WHERE Mandant = :MandantOid AND Bio = 1)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>ProduktionsartDefaultData</DefaultData>
<Data name="ProduktionsartDefaultData">
<Subscript>"Produktionsart"</Subscript>
<Value name="1">
<Value>Bio</Value>
</Value>
<Value name="2">
<Value>Abzugstyp</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Produktionscode">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61436,52820.5796</TimeChanged>
<TimeCreated>61101,53273.159002</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 DBAgrofresh_SD.Produktionscode
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.QSDiverses">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62356,35608.415201</TimeChanged>
<TimeCreated>62159,53939.392831</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="QsMeldungEk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>EkQSDiverses</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="QsMeldungVk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>VkQSDiverses</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 DBAgrofresh_SD.QSDiverses
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetLastId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.QSDiverses
			WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.QSLieferber">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62356,35567.057806</TimeChanged>
<TimeCreated>61693,56133.080225</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="QsMeldungEk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>EkQsLieferber</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="QsMeldungVk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>VkQsLieferber</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 DBAgrofresh_SD.QSLieferber
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetLastId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.QSLieferber
			WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.QSMeldTyp">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61665,39893.23418</TimeChanged>
<TimeCreated>61665,39056.712704</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="QsMeldungEk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>EkQsMeldung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="QsMeldungVk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>VkQsMeldung</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 DBAgrofresh_SD.QSMeldTyp
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.QSQualitaet">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62356,35412.018174</TimeChanged>
<TimeCreated>61693,56060.930855</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="QsMeldungEk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>EkQSQualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="QsMeldungVk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>VkQSQualitaet</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 DBAgrofresh_SD.QSQualitaet
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetLastId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.QSQualitaet
			WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.QSTransport">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62356,35589.900616</TimeChanged>
<TimeCreated>61693,56181.318932</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="QsMeldungEk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>EkQsTransport</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="QsMeldungVk">
<Type>DBAgrofreshEK.QSMeldung</Type>
<Cardinality>many</Cardinality>
<Inverse>VkQsTransport</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 DBAgrofresh_SD.QSTransport
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetLastId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.QSTransport
			WHERE Mandant = :MandantOid ORDER BY PositionsNr DESC)
	Quit:(SQLCODE'=0) ""
	Quit id
]]></Implementation>
</Method>

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


<Class name="DBAgrofresh.SD.Qualitaetsklasse">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>62080,59832.491542</TimeChanged>
<TimeCreated>61101,53273.79993</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>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaetsklasse</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="Autragpos">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="EkDetPos">
<Type>DBAgrofreshEK.Bestellungspos</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ArtVerarb">
<Type>DBAgrofresh.ArtVerarb</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenEingang">
<Type>DBAgrofreshEK.ChargenEingang</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="VerarbProv">
<Type>DBAgrofreshEK.VerarbProv</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="InventarArtikel">
<Type>DBAgrofresh.ArtikelInventar</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaet</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreisQualitaetsklasse">
<Type>DBAgrofresh.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaetsklasse</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="PreisEKQualitaetsklasse">
<Type>DBAgrofreshEK.Preis</Type>
<Cardinality>many</Cardinality>
<Inverse>Qualitaetsklasse</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="ChargenAusgang">
<Type>DBAgrofreshEK.ChargenAusgang</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 DBAgrofresh_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 DBAgrofresh_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="DBAgrofresh.SD.Ruestlinie">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61611,48623.039629</TimeChanged>
<TimeCreated>61611,40197.169072</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="ArtikelRuestlinie">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Ruestlinie</Inverse>
<Relationship>1</Relationship>
</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 DBAgrofresh_SD.Ruestlinie
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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

<Property name="AuftragRuestlinie">
<Type>DBAgrofreshEK.VerarbAuftrag</Type>
<Cardinality>many</Cardinality>
<Inverse>Ruestlinie</Inverse>
<Relationship>1</Relationship>
</Property>

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


<Class name="DBAgrofresh.SD.StatGrp">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62416,57253.881405</TimeChanged>
<TimeCreated>61793,36434.334548</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">
<Description>
StatGrpn-Nr</Description>
<Type>%String</Type>
<Parameter name="MAXLEN" value="6"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

<Index name="StatGrpNrIndex">
<Data>%%ID,Nummer</Data>
<Properties>Mandant,Nummer</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,Nummer,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>

<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(DBAgrofresh.SD.StatGrp).%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="StatGruppeExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.StatGrp
	     WHERE Mandant = :MandantOid)
	if (id = "") {
		Quit 0
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Method name="GetFirstStatGrpId">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.StatGrp
	     WHERE Nummer >= 10 AND Mandant = :MandantOid ORDER BY Nummer)
	Quit id
]]></Implementation>
</Method>

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

<Method name="GetIdByNummer">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nummer:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<SqlProc>1</SqlProc>
<Implementation><![CDATA[
	
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh_SD.StatGrp
	     WHERE Nummer = :Nummer 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(^DBAgrofresh.SD.StatGrpI("StatGrpNrIndex",MandantOid,""),1)
	if (grp '= ""){
		set id = $Order(^DBAgrofresh.SD.StatGrpI("StatGrpNrIndex",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(^DBAgrofresh.SD.StatGrpI("StatGrpNrIndex",MandantOid,""),-1)
	if (grp '= ""){
		set id = $Order(^DBAgrofresh.SD.StatGrpI("StatGrpNrIndex",MandantOid,grp,""),-1,list)
	} else {
		Quit ""	
	}
	Quit list
]]></Implementation>
</Method>

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

<Method name="MovePrevOnNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Nummer:%String</FormalSpec>
<ReturnType>%List</ReturnType>
<Implementation><![CDATA[
	set list = $ListBuild()
	set MandantOid = " "_MandantOid
    set nextNr = $Order(^DBAgrofresh.SD.StatGrpI("StatGrpNrIndex",MandantOid,Nummer),-1)
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.StatGrpI("StatGrpNrIndex",MandantOid,nextNr,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.StatGrp).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(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set grp = $Order(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,Lang,""),1)
		if (grp '= "") {
			set id = $Order(^DBAgrofresh.SD.StatGrpI("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(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,""),1)
	if (lang '= ""){
		set grp = $Order(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,Lang,""),-1)
		if (grp '= "") {
			set id = $Order(^DBAgrofresh.SD.StatGrpI("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(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,Lang,Kurzname))
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,Lang,nextNr,""),1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.StatGrp).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(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,Lang,Kurzname),-1)
	if (nextNr '= "") {
		set res = $Order(^DBAgrofresh.SD.StatGrpI("BezeichnungIndex",MandantOid,Lang,nextNr,""),-1,list)
	} else {
		set list = ##class(DBAgrofresh.SD.StatGrp).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 DBAgrofresh_SD.StatGrp 
		 WHERE Mandant = :MandantOid
		 AND DBAgrofresh_SD.StatGrp_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 DBAgrofresh_SD.StatGrp
	     WHERE Mandant = :MandantOid
	     ORDER BY Nummer)
	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 DBAgrofresh_SD.StatGrp
	     WHERE Mandant = :MandantOid
	     ORDER BY Nummer DESC)
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByBezExact">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandantOid:%String,Lang:%String,Bezeichnung:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id 
		 FROM DBAgrofresh_SD.StatGrp 
		 WHERE Mandant = :MandantOid
		 AND DBAgrofresh_SD.StatGrp_GetBezeichnungClass(%ID, :MandantOid, :Lang) = :Bezeichnung)
	
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.StatGrpD</DataLocation>
<DefaultData>StatGrpDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.StatGrpD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.StatGrpI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.StatGrpS</StreamLocation>
<Data name="Bezeichnung">
<Attribute>Bezeichnung</Attribute>
<Structure>subnode</Structure>
<Subscript>"Bezeichnung"</Subscript>
</Data>
<Data name="StatGrpDefaultData">
<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="DBAgrofresh.SD.StrgAuftrag">
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61436,52820.938396</TimeChanged>
<TimeCreated>61339,59672.497165</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>DBAgrofresh.AuftrStrg</Type>
<Cardinality>many</Cardinality>
<Inverse>ExportTyp</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

<Property name="TypAuftragssteuerungTyp">
<Type>DBAgrofresh.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 DBAgrofresh_SD.StrgAuftrag
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

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

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


<Class name="DBAgrofresh.SD.TblDataEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.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="GetTblDataEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblDataEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.TblDataEntry
		 WHERE Nummer = :TblDataEntryNr 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(DBAgrofresh.SD.TblDataEntry).%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>TblDataEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfC("TabellendataEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblDataEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblDataEntryS</StreamLocation>
<Data name="TblDataEntryDefaultData">
<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="DBAgrofresh.SD.TblFuss">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.SD.TblFussEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenfuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenfussSkontoEntry">
<Type>DBAgrofresh.SD.TblFussSkntE</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(DBAgrofresh.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 DBAgrofresh_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 DBAgrofresh_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(DBAgrofresh.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 DBAgrofresh_SD.TblFussEntry 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(DBAgrofresh.SD.TblFussEntry).%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 DBAgrofresh_SD.TblFussSkntE 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(DBAgrofresh.SD.TblFussSkntE).%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>DBAgrofresh.SD.DTypTblFuss</Type>
<Cardinality>many</Cardinality>
<Inverse>TblFuss</Inverse>
<Relationship>1</Relationship>
</Property>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.SD.TblFussD</DataLocation>
<DefaultData>TblFussDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblFussD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblFussI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="GenFont">
</Property>
<Property name="GenRahmen">
</Property>
<Property name="Mandant">
</Property>
<Property name="Nummer">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.TblFussEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.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(DBAgrofresh.SD.TblFussEntry).%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="GetTblFussEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblFussOid:%String,TblFussEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.TblFussEntry
		 WHERE Nummer = :TblFussEntryNr 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(DBAgrofresh.SD.TblFussEntry).%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>TblFussEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblFussC("TabellenfussEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblFussEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblFussEntryS</StreamLocation>
<Data name="TblFussEntryDefaultData">
<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="DBAgrofresh.SD.TblFussSkntE">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.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(DBAgrofresh.SD.TblFussSkntE).%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 DBAgrofresh_SD.TblFussSkntE
		 WHERE Nummer = :TblFussSkontoEntryNr AND Tabellenfuss=:TblFussOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenfussSkontoEntry")</DataLocation>
<DefaultData>TblFussSkntEDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblFussC("TabellenfussSkontoEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblFussSkntEI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblFussSkntES</StreamLocation>
<Data name="TblFussSkntEDefaultData">
<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="DBAgrofresh.SD.TblKopf">
<Super>%Persistent,%XML.Adaptor,DBCore.MandantRel</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.SD.DTypTblKopf</Type>
<Cardinality>many</Cardinality>
<Inverse>TblKopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenkopfEntry">
<Type>DBAgrofresh.SD.TblKopfEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellendataEntry">
<Type>DBAgrofresh.SD.TblDataEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSREntry">
<Type>DBAgrofresh.SD.TblSREntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSRgkEntry">
<Type>DBAgrofresh.SD.TblSRgkEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSRvlEntry">
<Type>DBAgrofresh.SD.TblSRvlEntry</Type>
<Cardinality>children</Cardinality>
<Inverse>Tabellenkopf</Inverse>
<Relationship>1</Relationship>
</Property>

<Property name="TabellenSRgfEntry">
<Type>DBAgrofresh.SD.TblSRgfEntry</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="SrVerteilGenFont">
<Type>DBCore.COFont</Type>
</Property>

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

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

<Property name="SrVerteilGenRahmenDet">
<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(DBAgrofresh.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 DBAgrofresh_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 DBAgrofresh_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(DBAgrofresh.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 DBAgrofresh_SD.TblKopfEntry 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(DBAgrofresh.SD.TblKopfEntry).%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 DBAgrofresh_SD.TblDataEntry 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(DBAgrofresh.SD.TblDataEntry).%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 DBAgrofresh_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(DBAgrofresh.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 DBAgrofresh_SD.TblSRgkEntry 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(DBAgrofresh.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 DBAgrofresh_SD.TblSRvlEntry 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(DBAgrofresh.SD.TblSRvlEntry).%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>^DBAgrofresh.SD.TblKopfD</DataLocation>
<DefaultData>TblKopfDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfD</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblKopfI</IndexLocation>
<StreamLocation>^DBAgrofresh.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>
<Value name="12">
<Value>SrVerteilGenFont</Value>
</Value>
<Value name="13">
<Value>SrVerteilGenFontDet</Value>
</Value>
<Value name="14">
<Value>SrVerteilGenRahmen</Value>
</Value>
<Value name="15">
<Value>SrVerteilGenRahmenDet</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>
<Property name="SrVerteilGenFont">
</Property>
<Property name="SrVerteilGenFontDet">
</Property>
<Property name="SrVerteilGenRahmen">
</Property>
<Property name="SrVerteilGenRahmenDet">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.TblKopfEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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(DBAgrofresh.SD.TblKopfEntry).%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="GetTblKopfEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblKopfEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.TblKopfEntry
		 WHERE Nummer = :TblKopfEntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBAgrofresh.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>TblKopfEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfC("TabellenkopfEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblKopfEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblKopfEntryS</StreamLocation>
<Data name="TblKopfEntryDefaultData">
<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="DBAgrofresh.SD.TblSREntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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 DBAgrofresh_SD.TblSREntry
		 WHERE Nummer = :TblSREntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBAgrofresh.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="DetailFont">
<Type>DBCore.COFont</Type>
</Property>

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

<Property name="DetailFormat">
<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(DBAgrofresh.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="GetDetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[	Quit ##Class(DBUtils.StringUtils).GetText(..DetailFormat.TextFallsLeer, Lang, MandOid)
]]></Implementation>
</Method>

<Method name="GetDetFormatTextFallsLeerClass">
<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(DBAgrofresh.SD.TblSREntry).%OpenId(myID)
		set text = rs.GetDetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

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

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSREntry")</DataLocation>
<DefaultData>TblSREntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfC("TabellenSREntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblSREntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.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 name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenkopf">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.TblSRgfEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</TimeChanged>
<TimeCreated>61819,57034.395961</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>DBAgrofresh.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(DBAgrofresh.SD.TblSRgfEntry).%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(DBAgrofresh.SD.TblSRgfEntry).%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="GetTblSRgfEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSRgfEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.TblSRgfEntry
		 WHERE Nummer = :TblSRgfEntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSRgfEntry")</DataLocation>
<DefaultData>TblSRgfEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfC("TabellenSRgfEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblSRgfEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblSRgfEntryS</StreamLocation>
<Data name="TblSRgfEntryDefaultData">
<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="%%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="DBAgrofresh.SD.TblSRgkEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62423,52815</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>DBAgrofresh.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(DBAgrofresh.SD.TblSRgkEntry).%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(DBAgrofresh.SD.TblSRgkEntry).%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="GetTblSRgkEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSRgkEntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.TblSRgkEntry
		 WHERE Nummer = :TblSRgkEntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>{%%PARENT}("TabellenSRgkEntry")</DataLocation>
<DefaultData>TblSRgkEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfC("TabellenSRgkEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblSRgkEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblSRgkEntryS</StreamLocation>
<Data name="TblSRgkEntryDefaultData">
<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="%%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="DBAgrofresh.SD.TblSRvlEntry">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62438,42631</TimeChanged>
<TimeCreated>61718,30217.450114</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="GetTblSRvlEntryOidByNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>TblKopfOid:%String,TblSREntryNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	Set oid = ""
	&sql(SELECT ID INTO :oid
		 FROM DBAgrofresh_SD.TblSRvlEntry
		 WHERE Nummer = :TblSREntryNr AND Tabellenkopf=:TblKopfOid)
	Quit oid
]]></Implementation>
</Method>

<Property name="Tabellenkopf">
<Type>DBAgrofresh.SD.TblKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TabellenSRvlEntry</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="DetailFormat">
<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="TotalFont">
<Type>DBCore.COFont</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(DBAgrofresh.SD.TblSRvlEntry).%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(..DetailFormat.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(DBAgrofresh.SD.TblSRvlEntry).%OpenId(myID)
		set text = rs.GetFormatTextFallsLeer(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetFormatTextFallsLeer">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..DetailFormat.TextFallsLeer, Value, Lang, MandOid)
]]></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(DBAgrofresh.SD.TblSRvlEntry).%OpenId(myID)
		set text = rs.GetTotalText(MandOid, Lang)
	}
	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}("TabellenSRvlEntry")</DataLocation>
<DefaultData>TblSRvlEntryDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.SD.TblKopfC("TabellenSRvlEntry")</IdLocation>
<IndexLocation>^DBAgrofresh.SD.TblSRvlEntryI</IndexLocation>
<StreamLocation>^DBAgrofresh.SD.TblSRvlEntryS</StreamLocation>
<Data name="TblSRvlEntryDefaultData">
<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>
<Value name="13">
<Value>TotalFont</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="DetailFormat">
</Property>
<Property name="DetailRahmen">
</Property>
<Property name="Font">
</Property>
<Property name="Format"/>
<Property name="Index">
</Property>
<Property name="Nummer">
</Property>
<Property name="Rahmen">
</Property>
<Property name="Tabellenkopf">
</Property>
<Property name="TotalFont">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.SD.Verpackung">
<Description>
</Description>
<Super>DBAgrofresh.SD.Hilfstexte,%XML.Adaptor</Super>
<TimeChanged>61503,40496.884703</TimeChanged>
<TimeCreated>61100,39359.007596</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="Kurzcode">
<Description>
Kurzcode</Description>
<Type>%String</Type>
<Collection>array</Collection>
<Parameter name="MAXLEN" value="255"/>
<Parameter name="TRUNCATE" value="1"/>
</Property>

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

<Property name="ArtikelVerpackung">
<Type>DBAgrofresh.Artikel</Type>
<Cardinality>many</Cardinality>
<Inverse>Verpackung</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLPROJECTION" value="NONE"/>
</Property>

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

<Method name="GetKurzcodeClass">
<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(DBAgrofresh.SD.Verpackung).%OpenId(myID)
		set text = rs.GetKurzcode(MandOid, Lang)
	}
	Quit text
]]></Implementation>
</Method>

<Method name="SetKurzcode">
<FormalSpec>MandOid:%String,Lang:%String,Value:%String</FormalSpec>
<Implementation><![CDATA[	Do ##class(DBUtils.StringUtils).SetText(..Kurzcode, 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 DBAgrofresh_SD.Verpackung
		 WHERE Mandant = :MandantOid AND PositionsNr = :PosNr)
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DefaultData>VerpackungDefaultData</DefaultData>
<Data name="Kurzcode">
<Attribute>Kurzcode</Attribute>
<Structure>subnode</Structure>
<Subscript>"DBAgrofresh.SD.Verpackung.Kurzcode"</Subscript>
</Data>
<Data name="VerpackungDefaultData">
<Structure>listnode</Structure>
<Subscript>"Verpackung"</Subscript>
<Value name="1">
<Value>Menge</Value>
</Value>
</Data>
</Storage>
</Class>


<Class name="DBAgrofresh.StrgAbzuege">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62438,42631</TimeChanged>
<TimeCreated>61724,30501.617569</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="Steuerung">
<Type>DBAgrofresh.AuftrStrg</Type>
<Cardinality>one</Cardinality>
<Inverse>AbzuegeDatum</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Steuerung"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="SteuerungIndex">
<Properties>Steuerung</Properties>
</Index>

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

<Property name="Abzug1">
<Type>%Decimal</Type>
</Property>

<Property name="Abzug2">
<Type>%Decimal</Type>
</Property>

<Property name="Abzug3">
<Type>%Decimal</Type>
</Property>

<Method name="GetOidByStrgDatum">
<ClassMethod>1</ClassMethod>
<FormalSpec>StrgOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.StrgAbzuege
	     WHERE  Steuerung = :StrgOid AND AbDatum <= :Datum Order by AbDatum desc)
	Quit id
]]></Implementation>
</Method>

<Method name="PreisPerDatumExists">
<ClassMethod>1</ClassMethod>
<FormalSpec>StrgOid:%String,Datum:%Date</FormalSpec>
<ReturnType>%Boolean</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.StrgAbzuege
	     WHERE  Steuerung = :StrgOid AND AbDatum = :Datum Order by AbDatum desc)
	if (id = "") {
		Quit 0	
	} else {
		Quit 1
	}
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.StrgAbzuegeD</DataLocation>
<DefaultData>StrgAbzuegeDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.StrgAbzuegeD</IdLocation>
<IndexLocation>^DBAgrofresh.StrgAbzuegeI</IndexLocation>
<StreamLocation>^DBAgrofresh.StrgAbzuegeS</StreamLocation>
<Data name="StrgAbzuegeDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Steuerung</Value>
</Value>
<Value name="3">
<Value>AbDatum</Value>
</Value>
<Value name="4">
<Value>Abzug1</Value>
</Value>
<Value name="5">
<Value>Abzug2</Value>
</Value>
<Value name="6">
<Value>Abzug3</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AbDatum">
</Property>
<Property name="Abzug1">
</Property>
<Property name="Abzug2">
</Property>
<Property name="Abzug3">
</Property>
<Property name="Steuerung">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.TransportKopf">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62438,42631</TimeChanged>
<TimeCreated>62305,30289.746169</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="Auftragskopf">
<Type>DBAgrofresh.Auftragskopf</Type>
<Cardinality>one</Cardinality>
<Inverse>TransportKopf</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>

<Index name="AuftragskopfIndex">
<Properties>Auftragskopf</Properties>
</Index>

<Property name="Fahrzeug">
<Type>DBAgrofresh.SD.Fahrzeug</Type>
<Cardinality>one</Cardinality>
<Inverse>TransportKopf</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Fahrzeug"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="FahrzeugIndex">
<Properties>Fahrzeug</Properties>
</Index>

<Property name="TransportPos">
<Type>DBAgrofresh.TransportPos</Type>
<Cardinality>children</Cardinality>
<Inverse>TransportKopf</Inverse>
<Relationship>1</Relationship>
</Property>

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

<Property name="BearbeitungsstatusTL">
<Description>
BearbeitungsstatusTL der Teillieferung, Codes wie auf Auftragkopf</Description>
<Type>%Integer</Type>
</Property>

<Property name="Chauffeur">
<Type>DBAgrofresh.SD.Chauffeur</Type>
<Cardinality>one</Cardinality>
<Inverse>TransportAuftrag</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Chauffeur"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Method name="GetIdByKopfTeilTransportNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>KopfOid:%String,TeilLsNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.TransportKopf
		 WHERE Auftragskopf = :KopfOid AND TeilTransportNr = :TeilLsNr)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="DeleteAllByAuftragskopf">
<ClassMethod>1</ClassMethod>
<FormalSpec>KopfOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.TransportKopf
		 WHERE Auftragskopf = :KopfOid AND Fahrzeug = :FahrzeugOid)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetFirstFreeFzByKopf">
<ClassMethod>1</ClassMethod>
<FormalSpec>KopfOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh_SD.Fahrzeug WHERE Id not in (SELECT Fahrzeug FROM DBAgrofresh.TransportKopf
		 WHERE Auftragskopf = :KopfOid) ORDER BY Kurzbezeichnung)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetGewichtById">
<ClassMethod>1</ClassMethod>
<FormalSpec>TransKopfOid:%String,gewichtPlatte:%Decimal</FormalSpec>
<ReturnType>%Decimal</ReturnType>
<Implementation><![CDATA[
	set gewicht = 0
	&sql(SELECT SUM(NVL(Auftragspos->GewichtBrutto / Auftragspos->AnzahlGebinde * AnzGebinde + (AnzPaletten * :gewichtPlatte),0)) INTO :gewicht 
		FROM DBAgrofresh.TransportPos
		WHERE TransportKopf = :TransKopfOid)
		 
	Quit:(SQLCODE '= 0) 0
	Quit gewicht
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.TransportKopfD</DataLocation>
<DefaultData>TransportKopfDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.TransportKopfD</IdLocation>
<IndexLocation>^DBAgrofresh.TransportKopfI</IndexLocation>
<StreamLocation>^DBAgrofresh.TransportKopfS</StreamLocation>
<Data name="TransportKopfDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Auftragskopf</Value>
</Value>
<Value name="3">
<Value>Fahrzeug</Value>
</Value>
<Value name="4">
<Value>TeilTransportNr</Value>
</Value>
<Value name="5">
<Value>BearbeitungsstatusTL</Value>
</Value>
<Value name="6">
<Value>Chauffeur</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="Auftragskopf">
</Property>
<Property name="BearbeitungsstatusTL">
</Property>
<Property name="Chauffeur">
</Property>
<Property name="Fahrzeug">
</Property>
<Property name="TeilTransportNr">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.TransportPos">
<Super>%Persistent,%XML.Adaptor</Super>
<TimeChanged>62438,42631</TimeChanged>
<TimeCreated>62300,41209.893147</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="Auftragspos">
<Type>DBAgrofresh.Auftragspos</Type>
<Cardinality>one</Cardinality>
<Inverse>TransportPos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="Auftragspos"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="AuftragsposIndex">
<Properties>Auftragspos</Properties>
</Index>

<Property name="TransportKopf">
<Type>DBAgrofresh.TransportKopf</Type>
<Cardinality>parent</Cardinality>
<Inverse>TransportPos</Inverse>
<Relationship>1</Relationship>
<Parameter name="XMLELEMENTREF" value="1"/>
<Parameter name="XMLNAME" value="TransportKopf"/>
<Parameter name="XMLPROJECTION" value="ATTRIBUTE"/>
<Parameter name="XMLREFERENCE" value="ID"/>
</Property>

<Index name="TransportKopfIndex">
<Properties>TransportKopf</Properties>
</Index>

<Property name="AnzPaletten">
<Description>
Anzahl Paletten</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnzGebinde">
<Description>
Anzahl Gebinde</Description>
<Type>%Integer</Type>
</Property>

<Property name="AnzStellPlaetze">
<Description>
Anzahl Paletten</Description>
<Type>%Decimal</Type>
<Parameter name="SCALE" value="5"/>
</Property>

<Method name="GetIdByTransKopfPosId">
<ClassMethod>1</ClassMethod>
<FormalSpec>KopfOid:%String,PosOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.TransportPos
		 WHERE Auftragspos = :PosOid AND TransportKopf = :KopfOid)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

<Method name="GetIdByPosTeillieferNr">
<ClassMethod>1</ClassMethod>
<FormalSpec>PosOid:%String,TeillieferNr:%Integer</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[

	set id = ""
	&sql(SELECT ID INTO :id FROM DBAgrofresh.TransportPos
		 WHERE Auftragspos = :PosOid AND TransportKopf->TeilTransportNr = :TeillieferNr)
	Quit:(SQLCODE '= 0) ""
	Quit id
]]></Implementation>
</Method>

<Storage name="Default">
<Type>%Library.CacheStorage</Type>
<DataLocation>^DBAgrofresh.TransportPosD</DataLocation>
<DefaultData>TransportPosDefaultData</DefaultData>
<IdLocation>^DBAgrofresh.TransportPosD</IdLocation>
<IndexLocation>^DBAgrofresh.TransportPosI</IndexLocation>
<StreamLocation>^DBAgrofresh.TransportPosS</StreamLocation>
<Data name="TransportPosDefaultData">
<Structure>listnode</Structure>
<Subscript/>
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Auftragspos</Value>
</Value>
<Value name="3">
<Value>Fahrzeug</Value>
</Value>
<Value name="4">
<Value>AnzPaletten</Value>
</Value>
<Value name="5">
<Value>AnzGebinde</Value>
</Value>
<Value name="6">
<Value>AnzStellPlaetze</Value>
</Value>
</Data>
<Property name="%%CLASSNAME">
</Property>
<Property name="AnzGebinde">
</Property>
<Property name="AnzPaletten">
</Property>
<Property name="AnzStellPlaetze">
</Property>
<Property name="Auftragspos">
</Property>
<Property name="TransportKopf">
</Property>
<Property name="childsub">
</Property>
</Storage>
</Class>


<Class name="DBAgrofresh.TypStrg">
<Super>DBAgrofresh.AuftrStrg,%XML.Adaptor</Super>
<TimeChanged>61840,44044.11765</TimeChanged>
<TimeCreated>61339,61177.252422</TimeCreated>
<Inheritance>right</Inheritance>

<Property name="Typ">
<Type>DBAgrofresh.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="FirstTypIdByTyp">
<ClassMethod>1</ClassMethod>
<FormalSpec>MandOid:%String</FormalSpec>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
	set id = ""
	&sql(SELECT TOP 1 Typ INTO :id FROM DBAgrofresh.TypStrg
	     WHERE Mandant=:MandOid AND Typ->PositionsNr>0 ORDER BY Typ->PositionsNr)
	quit id
]]></Implementation>
</Method>

<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 DBAgrofresh.TypStrg
	     WHERE Typ=:TypOid)
	quit (id '= "")
]]></Implementation>
</Method>

<Method name="GetAuftragsSteuerung">
<ClassMethod>1</ClassMethod>
<FormalSpec>TypOid:%String</FormalSpec>
<ReturnType>DBAgrofresh.AuftrStrg</ReturnType>
<Implementation><![CDATA[
	set steuerung = ""
	set id = ""
	&sql(SELECT TOP 1 ID INTO :id FROM DBAgrofresh.TypStrg
	     WHERE Typ=:TypOid)
	if (id '= "") {
		set steuerung = ##Class(DBAgrofresh.TypStrg).%OpenId(id)
	} else {
		set steuerung = ##Class(DBAgrofresh.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 DBAgrofresh.TypStrg
	     WHERE Typ=:TypOid)
	if (id '= "") {
		set status = ##Class(DBAgrofresh.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 DBAgrofresh.TypStrg
	     WHERE Typ=:SrcTypOid)
	if (SrcId '= "") {
		set srcAs = ##Class(DBAgrofresh.TypStrg).%OpenId(SrcId)
	} else {
		quit 100
	}
		
	/// Ziel steuerung öffnen
	if (##Class(DBAgrofresh.TypStrg).ExistsAuftragsSteuerung(DstTypOid)) {
		set DstId = ""
		&sql(SELECT TOP 1 ID INTO :DstId FROM DBAgrofresh.TypStrg
	  	   WHERE Typ=:DstTypOid)
		set dstAs = ##Class(DBAgrofresh.TypStrg).%OpenId(DstId)
	} else {
		set dstAs = ##Class(DBAgrofresh.TypStrg).%New()
	}
	
	/// kopieren und Typ zuweisen
	set dstAs = srcAs.%ConstructClone(0)
	set typ = ##Class(DBAgrofresh.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>
<StreamLocation>^DBAgrofresh.TypStrgS</StreamLocation>
<Data name="TypStrgDefaultData">
<Structure>listnode</Structure>
<Subscript>"TypStrg"</Subscript>
<Value name="1">
<Value>Typ</Value>
</Value>
</Data>
</Storage>
</Class>
</Export>
