#include "stdafx.h"
#include "kosten.h"
#include "datenbank.h"
#include "afxwin.h"
#include <limits> 
using namespace sql;
using namespace std;

kosten::kosten( void) :
                _gruenlandzahl( 0),
                nettoenergieertrag( 0),
                nettonaehrstoffertrag( 0),
                referezertrag( 0),
                ertragdifferenz( 0)
{
}

kosten::~kosten( void)
{
}

double kosten::berechne_weidefutter()
{
    double energie_pro_tag = (massnahmen_besatzdichte / besatzdichte)
            * aufnahmerate;
    const int mvende = 41; //wenn das 41 Monatsviertel erreicht ist, soll keine Beweidung mehr stattfinden.
    int mv_auf_weide = mvende - mv1;
    double tage_auf_weide = mv_auf_weide * 7.5; //Das Monatsvierte wird auf 7,5 Tage gemittel
    double gesammte_energie = tage_auf_weide * energie_pro_tag;
    return gesammte_energie;

}
double kosten::berechne_maehweide(
        double gzertrag,
        double trockenaws,
        double energieaws,
		double trockenheu,
        double energieheu,
		double trockenheu2,
        double energieheu2,
		double ertragsanteil_m1,
		double ertragsanteil_m2,
        int netto_energiekonzentration_aws,
		int netto_energiekonzentration_sonstige,
		vector<verwertbarkeit>& faktorliste)
{
    double netto_energieertrag_ges = 0;
    //Berechnung des Ausgangswertes 1/3 des gesammten Ertrages
    double brutto_frischmasse;
    //Berechnung fuer alle Gruenlandzahlen
    brutto_frischmasse = ertragsanteil_m1 * gzertrag;
    double brutto_trockenmasse;
    brutto_trockenmasse = brutto_frischmasse * 0.2;
    double netto_trockenmasse = brutto_trockenmasse * 0.85;
    //netto_energiekonzentration_heu = 910; die Minderung der Qualität geht direkt in die energiekonzentration ein.
    // Deshalb wird sofort mit absoluten Zahlen gerechne.
	double verwertbarkeit_silage;
	double verwertbarkeit_heu;
	double verwertbarkeit_weide;
	double verwertbarkeit_weide3;

    double netto_naehrstoffertrag; //ist das gleiche wie netto_energiertrag aber in anderer Einheit!
    //netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL
    int energiek =int( (netto_energiekonzentration_aws - (energieaws * netto_energiekonzentration_aws))* 0.61);
	int energiekonz = (energiek/10)*10;
	if(energiekonz < 400)
		energiekonz = 400;
	if(energiekonz > 670)
		energiekonz = 670;
	get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
	/*CString str;
	str.Format(_T("%d"),energiekonz);
	AfxMessageBox(str,MB_YESNO,0);
	str.Format(_T("%.5f"),verwertbarkeit_silage);
	AfxMessageBox(str,MB_YESNO,0);*/

    netto_trockenmasse = netto_trockenmasse + (netto_trockenmasse * trockenaws);
    netto_naehrstoffertrag = netto_trockenmasse
            * (netto_energiekonzentration_aws
                    - (energieaws * netto_energiekonzentration_aws));

	netto_naehrstoffertrag = netto_naehrstoffertrag * verwertbarkeit_silage;

	if(massnahmen_besatzdichte > 60) 
	{
		if(abstand2 == 0)
		{

			double brutto_frischmasse_2 = (gzertrag) * (1-ertragsanteil_m1);
			double brutto_trockenmasse_2;		
			brutto_trockenmasse_2 = brutto_frischmasse_2 * 0.18;
			double netto_trockenmasse_2 = brutto_trockenmasse_2 * 0.80;

			double netto_naehrstoffertrag_2;
			//netto_naehrstoffertrag ist das gleiche wie netto_energiertrag aber in anderer Einheit!
			//netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL


			netto_trockenmasse_2 = netto_trockenmasse_2
					+ (netto_trockenmasse_2 * trockenheu);

			energiek = int((netto_energiekonzentration_sonstige - (energieheu * netto_energiekonzentration_sonstige))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;

			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);


			netto_naehrstoffertrag_2 = netto_trockenmasse_2
					* (netto_energiekonzentration_sonstige
							- (energieheu * netto_energiekonzentration_sonstige));
			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide);
			AfxMessageBox(str,MB_YESNO,0);*/


			netto_naehrstoffertrag_2 = netto_naehrstoffertrag_2 * verwertbarkeit_weide;
			
			 netto_naehrstoffertrag = netto_naehrstoffertrag  + netto_naehrstoffertrag_2 ;

			netto_energieertrag_ges = netto_naehrstoffertrag * 0.61;

			
			
		}
		else
		{
		
			double brutto_frischmasse_2 = (gzertrag) * ertragsanteil_m2;
			double brutto_frischmasse_3 = (gzertrag) * (1-ertragsanteil_m1-ertragsanteil_m2);
			double brutto_trockenmasse_2, brutto_trockenmasse_3;
			brutto_trockenmasse_2 = (brutto_frischmasse_2 * 0.18);
			brutto_trockenmasse_3 = (brutto_frischmasse_3 * 0.18);
			double netto_trockenmasse_2 = brutto_trockenmasse_2 * 0.80;
			double netto_trockenmasse_3 = brutto_trockenmasse_3 * 0.80;

			double netto_naehrstoffertrag_2;
			double netto_naehrstoffertrag_3;
			//netto_naehrstoffertrag ist das gleiche wie netto_energiertrag aber in anderer Einheit!
			//netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL
		
			netto_trockenmasse_2 = netto_trockenmasse_2
					+ (netto_trockenmasse_2 * trockenheu);
			netto_naehrstoffertrag_2 = netto_trockenmasse_2
					* (netto_energiekonzentration_sonstige - (energieheu * netto_energiekonzentration_sonstige));
			
			energiek = int((netto_energiekonzentration_sonstige - (energieheu * netto_energiekonzentration_sonstige))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			//get_verwertbarkeit(energiekonzentration,verwertbarkeit_silage,  verwertbarkeit_heu,verwertbarkeit_weide, verwertbarkeit_weide3);

			netto_naehrstoffertrag_2 = netto_naehrstoffertrag_2 * verwertbarkeit_weide;

			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide);
			AfxMessageBox(str,MB_YESNO,0);*/

			netto_trockenmasse_3 = netto_trockenmasse_3
					+ (netto_trockenmasse_3 * trockenheu2);
			netto_naehrstoffertrag_3 = netto_trockenmasse_3
					* (netto_energiekonzentration_sonstige
							- (energieheu2 * netto_energiekonzentration_sonstige));

			energiek = int((netto_energiekonzentration_sonstige - (energieheu2 * netto_energiekonzentration_sonstige))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;

			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);

			netto_naehrstoffertrag_3 = netto_naehrstoffertrag_3 * verwertbarkeit_weide;

			
			/*str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide);
			AfxMessageBox(str,MB_YESNO,0);*/
			
			netto_naehrstoffertrag = netto_naehrstoffertrag + netto_naehrstoffertrag_2 + netto_naehrstoffertrag_3  ;

			netto_energieertrag_ges = netto_naehrstoffertrag * 0.61;
		}
	}
	if((massnahmen_besatzdichte > 0.4)  && (massnahmen_besatzdichte < 30)) 
	{
		//Berechnung der Energie durch die folgende Beweidung
		double energie_pro_tag = (massnahmen_besatzdichte / besatzdichte)
				* aufnahmerate;
		const int mvende = 41; //wenn das 41 Monatsviertel erreicht ist, soll keine Beweidung mehr stattfinden.
		int mv_auf_weide = mvende - mv1 - abstand; //Die Beweidung findet in der Regel 6 Wochen nach der Mahd statt
		double tage_auf_weide = mv_auf_weide * 7.5; //Das Monatsvierte wird auf 7,5 Tage gemittel
		double gesammte_energie = tage_auf_weide * energie_pro_tag;
					
		
		if( duengung == 0)
			netto_naehrstoffertrag = netto_naehrstoffertrag * 0.8;

	    netto_energieertrag_ges = netto_naehrstoffertrag * 0.61 + gesammte_energie;
		
   
	}
	/*CString str;
	str.Format(_T("%.3f"),trockenaws);
    AfxMessageBox(str,MB_YESNO,0);
	str.Format(_T("%.3f"),energieaws);
    AfxMessageBox(str,MB_YESNO,0);*/

    return netto_energieertrag_ges;

}
double kosten::berechne_hutung(
        double gzertrag,
        double trockenaws,
        double energieaws,
        double trockenheu,
        double energieheu,
		double trockenheu2,
        double energieheu2,
		double ertragsanteil_m1,
		double ertragsanteil_m2,
        int netto_energiekonzentration_sonstige,
		vector<verwertbarkeit>& faktorliste)
{
    double netto_energieertrag_ges;
	int energiek;
	double verwertbarkeit_silage;
	double verwertbarkeit_heu;
	double verwertbarkeit_weide;
	double verwertbarkeit_weide3;
    if( abstand == 0)
    {
        //Berechnung des Ausgangswertes ohne Verschiebung 
        double brutto_frischmasse;
        //Berechnung fuer alle Gruenlandzahlen

        brutto_frischmasse = gzertrag * ertragsanteil_m1;
        double brutto_trockenmasse;
        brutto_trockenmasse = brutto_frischmasse * 0.18;
        double netto_trockenmasse = brutto_trockenmasse * 0.80;
        //netto_energiekonzentration_heu = 910; die Minderung der Qualität geht direkt in die energiekonzentration ein.
        // Deshalb wird sofort mit absoluten Zahlen gerechne.

        double netto_naehrstoffertrag; //ist das gleiche wie netto_energiertrag aber in anderer Einheit!
        //netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL

        netto_trockenmasse = netto_trockenmasse
                + (netto_trockenmasse * trockenheu);
        netto_naehrstoffertrag = netto_trockenmasse
                * (netto_energiekonzentration_sonstige
                        - (energieheu * netto_energiekonzentration_sonstige));

		energiek = int( (netto_energiekonzentration_sonstige - (energieheu * netto_energiekonzentration_sonstige))* 0.61);
		int energiekonz = (energiek/10)*10;
		if(energiekonz < 400)
			energiekonz = 400;
		if(energiekonz > 670)
			energiekonz = 670;
		get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);

		netto_naehrstoffertrag = netto_naehrstoffertrag * verwertbarkeit_weide;
		/*CString str;
		str.Format(_T("%d"),energiekonz);
		AfxMessageBox(str,MB_YESNO,0);
		str.Format(_T("%.5f"),verwertbarkeit_weide);
		AfxMessageBox(str,MB_YESNO,0);*/
        

        netto_energieertrag_ges = netto_naehrstoffertrag * 0.61;
		
		if( duengung == 0)
		  netto_energieertrag_ges = netto_energieertrag_ges * 0.8;

    } else
    {
        double brutto_frischmasse_ges, brutto_frischmasse_1,
                brutto_frischmasse_2;

        brutto_frischmasse_ges = gzertrag;
        /*CString str;
         str.Format(_T("%.5f"),gzertrag);
         AfxMessageBox(str,MB_YESNO,0);*/
		if(abstand2 == 0)
		{
			brutto_frischmasse_1 = (brutto_frischmasse_ges) * ertragsanteil_m1;
			brutto_frischmasse_2 = (brutto_frischmasse_ges) * (1-ertragsanteil_m1);
			double brutto_trockenmasse_ges, brutto_trockenmasse_1,
					brutto_trockenmasse_2;
			brutto_trockenmasse_ges = brutto_frischmasse_ges * 0.18;
			brutto_trockenmasse_1 = brutto_frischmasse_1 * 0.18;
			brutto_trockenmasse_2 = brutto_frischmasse_2 * 0.18;
			double netto_trockenmasse_1 = brutto_trockenmasse_1 * 0.80;
			double netto_trockenmasse_2 = brutto_trockenmasse_2 * 0.80;

			double netto_naehrstoffertrag_1;
			double netto_naehrstoffertrag_2;
			double netto_naehrstoffertrag_ges;
			//netto_naehrstoffertrag ist das gleiche wie netto_energiertrag aber in anderer Einheit!
			//netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL

			netto_trockenmasse_1 = netto_trockenmasse_1
					+ (netto_trockenmasse_1 * trockenaws);
			netto_naehrstoffertrag_1 = netto_trockenmasse_1
					* (netto_energiekonzentration_sonstige
							- (energieaws * netto_energiekonzentration_sonstige));

			energiek = int((netto_energiekonzentration_sonstige - (energieaws * netto_energiekonzentration_sonstige))* 0.61);
			int energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_1 = netto_naehrstoffertrag_1 * verwertbarkeit_weide;

			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide);
			AfxMessageBox(str,MB_YESNO,0);*/


			netto_trockenmasse_2 = netto_trockenmasse_2
					+ (netto_trockenmasse_2 * trockenheu);
			netto_naehrstoffertrag_2 = netto_trockenmasse_2
					* (netto_energiekonzentration_sonstige
							- (energieheu * netto_energiekonzentration_sonstige));
			energiek = int((netto_energiekonzentration_sonstige - (energieheu * netto_energiekonzentration_sonstige))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_2 = netto_naehrstoffertrag_2 * verwertbarkeit_weide;

			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide);
			AfxMessageBox(str,MB_YESNO,0);*/


			double netto_trockenmasse_ges = netto_trockenmasse_1
					+ netto_trockenmasse_2;
			netto_naehrstoffertrag_ges = netto_naehrstoffertrag_1
					+ netto_naehrstoffertrag_2;
			netto_energieertrag_ges = netto_naehrstoffertrag_1 * 0.61
					+ netto_naehrstoffertrag_2 * 0.61;
			
			if( duengung == 0)
			  netto_energieertrag_ges = netto_energieertrag_ges * 0.8;
		}
		else
		{
		
			brutto_frischmasse_1 = (brutto_frischmasse_ges) * ertragsanteil_m1;
			brutto_frischmasse_2 = (brutto_frischmasse_ges) * ertragsanteil_m2;
			double brutto_frischmasse_3 = (brutto_frischmasse_ges) * (1-ertragsanteil_m1-ertragsanteil_m2);
			double brutto_trockenmasse_ges, brutto_trockenmasse_1,
					brutto_trockenmasse_2, brutto_trockenmasse_3;
			brutto_trockenmasse_ges = brutto_frischmasse_ges * 0.18;
			brutto_trockenmasse_1 = (brutto_frischmasse_1 * 0.18);
			brutto_trockenmasse_2 = (brutto_frischmasse_2 * 0.18);
			brutto_trockenmasse_3 = (brutto_frischmasse_3 * 0.18);
			double netto_trockenmasse_1 = brutto_trockenmasse_1 * 0.80;
			double netto_trockenmasse_2 = brutto_trockenmasse_2 * 0.80;
			double netto_trockenmasse_3 = brutto_trockenmasse_3 * 0.80;

			double netto_naehrstoffertrag_1;
			double netto_naehrstoffertrag_2;
			double netto_naehrstoffertrag_3;
			double netto_naehrstoffertrag_ges;
			//netto_naehrstoffertrag ist das gleiche wie netto_energiertrag aber in anderer Einheit!
			//netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL

			netto_trockenmasse_1 = netto_trockenmasse_1
					+ (netto_trockenmasse_1 * trockenaws);
			netto_naehrstoffertrag_1 = netto_trockenmasse_1
					* (netto_energiekonzentration_aws
							- (energieaws * netto_energiekonzentration_aws));

			energiek = int((netto_energiekonzentration_aws - (energieaws * netto_energiekonzentration_aws))* 0.61);
			int energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_1 = netto_naehrstoffertrag_1 * verwertbarkeit_weide3;

			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide3);
			AfxMessageBox(str,MB_YESNO,0);*/


			netto_trockenmasse_2 = netto_trockenmasse_2
					+ (netto_trockenmasse_2 * trockenheu);
			netto_naehrstoffertrag_2 = netto_trockenmasse_2
					* (netto_energiekonzentration_sonstige
							- (energieheu * netto_energiekonzentration_sonstige));

			energiek = int((netto_energiekonzentration_sonstige - (energieheu * netto_energiekonzentration_sonstige))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_2 = netto_naehrstoffertrag_2 * verwertbarkeit_weide;


			
			/*str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide3);
			AfxMessageBox(str,MB_YESNO,0);*/

			netto_trockenmasse_3 = netto_trockenmasse_3
					+ (netto_trockenmasse_3 * trockenheu2);
			netto_naehrstoffertrag_3 = netto_trockenmasse_3
					* (netto_energiekonzentration_sonstige
							- (energieheu2 * netto_energiekonzentration_sonstige));
			
			energiek = int((netto_energiekonzentration_sonstige - (energieheu2 * netto_energiekonzentration_sonstige))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);

			netto_naehrstoffertrag_3 = netto_naehrstoffertrag_3 * verwertbarkeit_weide;


			
			/*str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_weide3);
			AfxMessageBox(str,MB_YESNO,0);*/

			double netto_trockenmasse_ges = netto_trockenmasse_1
					+ netto_trockenmasse_2 + netto_trockenmasse_3;
			netto_naehrstoffertrag_ges = netto_naehrstoffertrag_1
					+ netto_naehrstoffertrag_2 + netto_naehrstoffertrag_3;
			netto_energieertrag_ges = netto_naehrstoffertrag_1 * 0.61
					+ netto_naehrstoffertrag_2 * 0.61 + netto_naehrstoffertrag_3 * 0.61;
		}
    }


    return netto_energieertrag_ges;

}
double kosten::berechne_schnitt(
        double gzertrag,
        double trockenaws,
        double energieaws,
        double trockenheu,
        double energieheu,
		double trockenheu2,
        double energieheu2,
        int netto_energiekonzentration_aws,
        int netto_energiekonzentration_heu,
		double ertragsanteil_m1,
		double ertragsanteil_m2,
        bool streifenmahd,
		vector<verwertbarkeit>& faktorliste)
{
    double netto_energieertrag_ges;
    CString str;
	int energiek;
	double verwertbarkeit_silage;
	double verwertbarkeit_heu;
	double verwertbarkeit_weide;
	double verwertbarkeit_weide3;
    if( abstand == 0)
    {
        //Berechnung des Ausgangswertes ohne verschiebung der Mahd =>19MV und 40% des Ausgangswertes für 2Schnitt
        double brutto_frischmasse;
        //Berechnung fuer alle Gruenlandzahlen

        brutto_frischmasse = gzertrag;
        double brutto_trockenmasse;
        brutto_trockenmasse = brutto_frischmasse * 0.2;
        double netto_trockenmasse = brutto_trockenmasse * 0.80;
        //netto_energiekonzentration_heu = 910; die Minderung der Qualität geht direkt in die energiekonzentration ein.
        // Deshalb wird sofort mit absoluten Zahlen gerechne.

        double netto_naehrstoffertrag; //ist das gleiche wie netto_energiertrag aber in anderer Einheit!
        //netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL

        netto_trockenmasse = netto_trockenmasse
                + (netto_trockenmasse * trockenheu);

        netto_naehrstoffertrag = netto_trockenmasse
                * (netto_energiekonzentration_heu
                        - (energieheu * netto_energiekonzentration_heu));

		energiek = int((netto_energiekonzentration_heu - (energieheu * netto_energiekonzentration_heu))* 0.61);
		int energiekonz = (energiek/10)*10;
		if(energiekonz < 400)
			energiekonz = 400;
		if(energiekonz > 670)
			energiekonz = 670;
		get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);

		netto_naehrstoffertrag = netto_naehrstoffertrag * verwertbarkeit_heu;

		/*CString str;
		str.Format(_T("%d"),energiekonz);
		AfxMessageBox(str,MB_YESNO,0);
		str.Format(_T("%.5f"),verwertbarkeit_heu);
		AfxMessageBox(str,MB_YESNO,0);*/

        netto_energieertrag_ges = netto_naehrstoffertrag * 0.61;

		if( duengung == 0)
			netto_energieertrag_ges = netto_energieertrag_ges * 0.8;

    } else
    {
        double brutto_frischmasse_ges, brutto_frischmasse_aws,
                brutto_frischmasse_heu;

        brutto_frischmasse_ges = gzertrag;
		if(abstand2 == 0)
		{
        
			brutto_frischmasse_aws = (brutto_frischmasse_ges) * ertragsanteil_m1;
			brutto_frischmasse_heu = (brutto_frischmasse_ges) * (1- ertragsanteil_m1);
			double brutto_trockenmasse_ges, brutto_trockenmasse_aws,
					brutto_trockenmasse_heu;
			brutto_trockenmasse_ges = brutto_frischmasse_ges * 0.2;
			brutto_trockenmasse_aws = brutto_frischmasse_aws * 0.2;
			brutto_trockenmasse_heu = brutto_frischmasse_heu * 0.2;
			double netto_trockenmasse_aws = brutto_trockenmasse_aws * 0.85;
			double netto_trockenmasse_heu = brutto_trockenmasse_heu * 0.80;

			double netto_naehrstoffertrag_aws;
			double netto_naehrstoffertrag_heu;
			double netto_naehrstoffertrag_ges;
			//netto_naehrstoffertrag ist das gleiche wie netto_energiertrag aber in anderer Einheit!
			//netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL

			netto_trockenmasse_aws = netto_trockenmasse_aws
					+ (netto_trockenmasse_aws * trockenaws);
			netto_naehrstoffertrag_aws = netto_trockenmasse_aws
					* (netto_energiekonzentration_aws
							- (energieaws * netto_energiekonzentration_aws));

			energiek = int( (netto_energiekonzentration_aws - (energieaws * netto_energiekonzentration_aws))* 0.61);
			int energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_aws = netto_naehrstoffertrag_aws * verwertbarkeit_silage;

			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_silage);
			AfxMessageBox(str,MB_YESNO,0);*/
			

			netto_trockenmasse_heu = netto_trockenmasse_heu
					+ (netto_trockenmasse_heu * trockenheu);
			netto_naehrstoffertrag_heu = netto_trockenmasse_heu
					* (netto_energiekonzentration_heu
							- (energieheu * netto_energiekonzentration_heu));

			energiek = int((netto_energiekonzentration_heu - (energieheu * netto_energiekonzentration_heu))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_heu = netto_naehrstoffertrag_heu * verwertbarkeit_heu;


			
			/*str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_heu);
			AfxMessageBox(str,MB_YESNO,0);*/

			double netto_trockenmasse_ges = netto_trockenmasse_aws
					+ netto_trockenmasse_heu;
			netto_naehrstoffertrag_ges = netto_naehrstoffertrag_aws
					+ netto_naehrstoffertrag_heu;
			netto_energieertrag_ges = netto_naehrstoffertrag_aws * 0.61
					+ netto_naehrstoffertrag_heu * 0.61;

			if( duengung == 0)
				netto_energieertrag_ges = netto_energieertrag_ges * 0.8;
		}
		else
		{
			brutto_frischmasse_aws = (brutto_frischmasse_ges) * ertragsanteil_m1;
			brutto_frischmasse_heu = (brutto_frischmasse_ges) * ertragsanteil_m2;
			double brutto_frischmasse_heu2 = (brutto_frischmasse_ges) * (1 - ertragsanteil_m1 - ertragsanteil_m2);
			double brutto_trockenmasse_ges, brutto_trockenmasse_aws,
					brutto_trockenmasse_heu;
			brutto_trockenmasse_ges = brutto_frischmasse_ges * 0.2;
			brutto_trockenmasse_aws = brutto_frischmasse_aws * 0.2;
			brutto_trockenmasse_heu = brutto_frischmasse_heu * 0.2;
			double brutto_trockenmasse_heu2 = brutto_frischmasse_heu2 * 0.2;
			double netto_trockenmasse_aws = brutto_trockenmasse_aws * 0.85;
			double netto_trockenmasse_heu = brutto_trockenmasse_heu * 0.80;
			double netto_trockenmasse_heu2 = brutto_trockenmasse_heu2 * 0.80;


			double netto_naehrstoffertrag_aws;
			double netto_naehrstoffertrag_heu, netto_naehrstoffertrag_heu2;
			double netto_naehrstoffertrag_ges;
			//netto_naehrstoffertrag ist das gleiche wie netto_energiertrag aber in anderer Einheit!
			//netto_naehrstoffertrag = MJ ME ;  netto_energiertrag = MJ NEL

			netto_trockenmasse_aws = netto_trockenmasse_aws
					+ (netto_trockenmasse_aws * trockenaws);
			netto_naehrstoffertrag_aws = netto_trockenmasse_aws
					* (netto_energiekonzentration_aws
							- (energieaws * netto_energiekonzentration_aws));

			energiek = int( (netto_energiekonzentration_aws - (energieaws * netto_energiekonzentration_aws))* 0.61);
			int energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_aws = netto_naehrstoffertrag_aws * verwertbarkeit_silage;
			
			/*str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_silage);
			AfxMessageBox(str,MB_YESNO,0);*/

			netto_trockenmasse_heu = netto_trockenmasse_heu
					+ (netto_trockenmasse_heu * trockenheu);
			netto_naehrstoffertrag_heu = netto_trockenmasse_heu
					* (netto_energiekonzentration_heu
							- (energieheu * netto_energiekonzentration_heu));

			energiek = int((netto_energiekonzentration_heu - (energieheu * netto_energiekonzentration_heu))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);
			netto_naehrstoffertrag_heu = netto_naehrstoffertrag_heu * verwertbarkeit_heu;

			/*str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_heu);
			AfxMessageBox(str,MB_YESNO,0);*/

			netto_trockenmasse_heu2 = netto_trockenmasse_heu2
					+ (netto_trockenmasse_heu2 * trockenheu2);
			netto_naehrstoffertrag_heu2 = netto_trockenmasse_heu2
					* (netto_energiekonzentration_heu
							- (energieheu2 * netto_energiekonzentration_heu));

			energiek = int((netto_energiekonzentration_heu - (energieheu2 * netto_energiekonzentration_heu))* 0.61);
			energiekonz = (energiek/10)*10;
			if(energiekonz < 400)
				energiekonz = 400;
			if(energiekonz > 670)
				energiekonz = 670;
			get_verwertbarkeit( faktorliste,energiekonz,verwertbarkeit_silage,verwertbarkeit_heu,verwertbarkeit_weide,verwertbarkeit_weide3);

			netto_naehrstoffertrag_heu2 = netto_naehrstoffertrag_heu2 * verwertbarkeit_heu;



			/*CString str;
			str.Format(_T("%d"),energiekonz);
			AfxMessageBox(str,MB_YESNO,0);
			str.Format(_T("%.5f"),verwertbarkeit_heu);
			AfxMessageBox(str,MB_YESNO,0);*/


			double netto_trockenmasse_ges = netto_trockenmasse_aws
					+ netto_trockenmasse_heu + netto_trockenmasse_heu2;
			netto_naehrstoffertrag_ges = netto_naehrstoffertrag_aws
					+ netto_naehrstoffertrag_heu + netto_naehrstoffertrag_heu2;
			netto_energieertrag_ges = netto_naehrstoffertrag_aws * 0.61
					+ netto_naehrstoffertrag_heu * 0.61 + netto_naehrstoffertrag_heu2 * 0.61;
			/*
             str.Format(_T("%.3f"),trockenaws);
             AfxMessageBox(str,MB_YESNO,0);
			 str.Format(_T("%.3f"),energieaws);
             AfxMessageBox(str,MB_YESNO,0);*/
             
		}

    }
    
    if( streifenmahd == 1)
        netto_energieertrag_ges = netto_energieertrag_ges * 0.92; //bei Streifenmahd verringert sich der Ertrag um 8 Prozent

    return netto_energieertrag_ges;

}
//Berechne die entstandeden Kosten und die Differenz zu den Referenzkosten, die gz sind die Grenzen der Leistungsgruppen
void kosten::berechne_kostendifferenz(
        vector< double> gzertrag,
        vector< double> refertrag,
        vector< double> refertrag2,
        int gz1,
        int gz2,
        int gz3,
        int gz4,
        bool streifenmahd,
        vector< double>& kostendifferenz,
		vector<verwertbarkeit>& faktorliste)
{
    int i = 0;
    //vector<double> kostendifferenz(101);
    kostendifferenz.push_back( 0);
    CString str;
    double diff;
	double weidefutter;
   
	if( (massnahmen_besatzdichte < 60) && (massnahmen_besatzdichte > 0.3))
		weidefutter = berechne_weidefutter();

    for( i = 1; i < gz1 + 1; i++)
    {
        if( verfahren_nr == 2 || verfahren_nr == 3 || verfahren_nr == 8) //Es liegt eine Mahd  vor
        {

			if(verfahren_nr == 8 && duengung == 1)
			{
				kostendifferenz[ i] = (refertrag[ i] * (-0.04));
			}
			else
			{

				kostendifferenz[ i] = (berechne_schnitt( gzertrag[ i],
						trockenaws_l1, energieaws_l1, trockenheu_l1, energieheu_l1,
						trocken2heu_l1, energie2heu_l1,
						netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige, ertragsanteil_m1,
						ertragsanteil_m2,streifenmahd,faktorliste)
						- refertrag[ i]);
			}
            /*
             str.Format(_T("%.3f"),kostendifferenz[i]* 0.0262);
             AfxMessageBox(str,MB_YESNO,0);

             if(i == 13)
             {
             str.Format(_T("%.3f"),trockenaws_l1);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"), energieaws_l1);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"),trockenheu_l1);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%d"),netto_energiekonzentration_aws);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%d"), netto_energiekonzentration_sonstige);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"),refertrag[i]);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"), gzertrag[i]);
             AfxMessageBox(str,MB_YESNO,0);
             
             str.Format(_T("%.3f"),kostendifferenz[i]);
             AfxMessageBox(str,MB_YESNO,0);
             
             }	*/
            //kostendifferenz[i]= kostendifferenz[i] - refertrag[i];
        } else
        {
            if( verfahren_nr == 5 || verfahren_nr == 10 ) //es liegt saisonale Standweide  oder Hutung/Koppelweide vor
            {
                if( massnahmen_besatzdichte > 60) //Hutung/Umtriebsweide
                    kostendifferenz[ i] = berechne_hutung( gzertrag[ i],
                            trockenaws_l1, energieaws_l1, trockenheu_l1,
                            energieheu_l1,trocken2heu_l1,
                            energie2heu_l1, ertragsanteil_m1,
							ertragsanteil_m2,netto_energiekonzentration_sonstige,faktorliste)
                            - refertrag[ i];
                else
                {
					 

                    diff = (weidefutter - refertrag2[ i]);
                    if( diff > 0)
                        kostendifferenz[ i] = DBL_MAX;
                    else
                        kostendifferenz[ i] = (weidefutter - refertrag[ i]);
                }
            } 
			if( verfahren_nr == 7 || verfahren_nr == 9 ) //es liegt eine Maehweide vor
            {

                kostendifferenz[ i] = berechne_maehweide( gzertrag[ i],
                        trockenaws_l1, energieaws_l1,  trockenheu_l1,
                            energieheu_l1,trocken2heu_l1,
                            energie2heu_l1,ertragsanteil_m1,
						ertragsanteil_m2,
                        netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige,faktorliste);
				if( (massnahmen_besatzdichte > 0.4) &&( massnahmen_besatzdichte < 60))
				{

				  diff = kostendifferenz[ i] - refertrag2[ i];
				  if( diff > 0)
						 kostendifferenz[ i] = DBL_MAX;
				  else
                    kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
				}
				else
					kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
            }
        }
    }
    for( i = gz1 + 1; i < gz2 + 1; i++)
    {

        if( verfahren_nr == 2 || verfahren_nr == 3 || verfahren_nr == 8) //Es liegt eine Mahd vor
        {
			if(verfahren_nr == 8 && duengung == 1)
			{
				kostendifferenz[ i] = (refertrag[ i] * (-0.04));
			}
			else
			{
				kostendifferenz[ i] = ((berechne_schnitt( gzertrag[ i],
						trockenaws_l2, energieaws_l2, trockenheu_l2, energieheu_l2,
						trocken2heu_l2, energie2heu_l2,
						netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige,ertragsanteil_m1,
							ertragsanteil_m2, streifenmahd,faktorliste)
						- refertrag[ i]));
			}

          /* if(i == 40)
             {
             
             str.Format(_T("%.3f"),trocken2heu_l2);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"),energie2heu_l2);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%d"), netto_energiekonzentration_sonstige);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"),ertragsanteil_m1);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"), ertragsanteil_m2);
             AfxMessageBox(str,MB_YESNO,0);
             str.Format(_T("%.3f"),(kostendifferenz[i]* 0.0262));
             AfxMessageBox(str,MB_YESNO,0);
             }*/
            //kostendifferenz[i]= kostendifferenz[i] - refertrag[i];
        }

        else
        {
            if( verfahren_nr == 5|| verfahren_nr == 10 ) //es liegt saisonale Standweide  oder Hutung/Koppelweide vor
            {
                if( massnahmen_besatzdichte > 60) //Hutung/Umtriebsweide
                    kostendifferenz[ i] = ((berechne_hutung( gzertrag[ i],
                            trockenaws_l2, energieaws_l2, trockenheu_l2,
                            energieheu_l2,trocken2heu_l2,
                            energie2heu_l2,ertragsanteil_m1,
							ertragsanteil_m2, netto_energiekonzentration_sonstige,faktorliste))
                            - refertrag[ i]);
                else
                {

                    diff = (weidefutter - refertrag2[ i]);
                    if( diff > 0)
                        kostendifferenz[ i] = DBL_MAX;
                    else
                        kostendifferenz[ i] = (weidefutter - refertrag[ i]);

                }
            } 
			if( verfahren_nr == 7 || verfahren_nr == 9 ) //es liegt eine Maehweide vor
            {
                kostendifferenz[ i] = berechne_maehweide( gzertrag[ i],
                        trockenaws_l2, energieaws_l2,trockenheu_l2,
                        energieheu_l2,trocken2heu_l2,
                        energie2heu_l2,ertragsanteil_m1,
						ertragsanteil_m2, netto_energiekonzentration_aws,
                        netto_energiekonzentration_sonstige,faktorliste);
                if( (massnahmen_besatzdichte > 0.4) &&( massnahmen_besatzdichte < 60))
				{

				  diff = kostendifferenz[ i] - refertrag2[ i];
				  if( diff > 0)
						 kostendifferenz[ i] = DBL_MAX;
				  else
                    kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
				}
				else
					kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];

            }
        }
    }
    for( i = gz2 + 1; i < gz3 + 1; i++)
    {
        if( verfahren_nr == 2 || verfahren_nr == 3 || verfahren_nr == 8) //Es liegt eine Mahd  vor
        {
			if(verfahren_nr == 8 && duengung == 1)
			{
				kostendifferenz[ i] = (refertrag[ i] * (-0.04));
			}
			else
			{
				kostendifferenz[ i] = ((berechne_schnitt( gzertrag[ i],
						trockenaws_l3, energieaws_l3, trockenheu_l3, energieheu_l3,
						trocken2heu_l3, energie2heu_l3,
						netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige,ertragsanteil_m1,
							ertragsanteil_m2, streifenmahd,faktorliste)
						- refertrag[ i]));

			}
        } else
        {
            if( verfahren_nr == 5|| verfahren_nr == 10 ) //es liegt saisonale Standweide  oder Hutung/Koppelweide vor
            {
                if( massnahmen_besatzdichte > 60) //Hutung/Umtriebsweide
                {
                    kostendifferenz[ i] = (berechne_hutung( gzertrag[ i],
                            trockenaws_l3, energieaws_l3, trockenheu_l3,
                            energieheu_l3,trocken2heu_l3, energie2heu_l3,
							ertragsanteil_m1,
							ertragsanteil_m2, netto_energiekonzentration_sonstige,faktorliste)
                            - refertrag[ i]);
                    //str.Format(_T("%d"),gzertrag[i]);
                    //AfxMessageBox(str,MB_YESNO,0);
                } else
                {

                    diff = (weidefutter - refertrag2[ i]);
                    if( diff > 0)
                        kostendifferenz[ i] = DBL_MAX;
                    else
                        kostendifferenz[ i] = (weidefutter - refertrag[ i]);
                }
            } 
			if( verfahren_nr == 7 || verfahren_nr == 9 ) //es liegt eine Maehweide vor
            {
                kostendifferenz[ i] = berechne_maehweide( gzertrag[ i],
                        trockenaws_l3, energieaws_l3,
						trockenheu_l3, energieheu_l3,trocken2heu_l3, 
						energie2heu_l3,ertragsanteil_m1,
						ertragsanteil_m2,
                        netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige,faktorliste);
               if( (massnahmen_besatzdichte > 0.4) &&( massnahmen_besatzdichte < 60))
				{

				  diff = kostendifferenz[ i] - refertrag2[ i];
				  if( diff > 0)
						 kostendifferenz[ i] = DBL_MAX;
				  else
                    kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
				}
				else
					kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
            }
        }
    }
    for( i = gz3 + 1; i < gz4 + 1; i++)
    {
        if( verfahren_nr == 2 || verfahren_nr == 3 || verfahren_nr == 8) //Es liegt eine Mahd  vor
        {
			if(verfahren_nr == 8 && duengung == 1)
			{
				kostendifferenz[ i] = (refertrag[ i] * (-0.04));
			}
			else
			{
				kostendifferenz[ i] = ((berechne_schnitt( gzertrag[ i],
						trockenaws_l4, energieaws_l4, trockenheu_l4, energieheu_l4,
						trocken2heu_l4, energie2heu_l4,
						netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige,ertragsanteil_m1,
							ertragsanteil_m2, streifenmahd,faktorliste)
						- refertrag[ i]));
			}
        } else
        {
            if( verfahren_nr == 5|| verfahren_nr == 10 ) //es liegt saisonale Standweide  oder Hutung/Koppelweide vor
            {
                if( massnahmen_besatzdichte > 60) //Hutung/Umtriebsweide
                    kostendifferenz[ i] = (berechne_hutung( gzertrag[ i],
                            trockenaws_l4, energieaws_l4, trockenheu_l4,
                            energieheu_l4,trocken2heu_l4, energie2heu_l4,ertragsanteil_m1,
							ertragsanteil_m2, netto_energiekonzentration_sonstige,faktorliste)
                            - refertrag[ i]);
                else
                {

                    diff = (weidefutter - refertrag2[ i]);
                    if( diff > 0)
                        kostendifferenz[ i] = DBL_MAX;
                    else
                        kostendifferenz[ i] = (weidefutter - refertrag[ i]);
                }
            }
			if( verfahren_nr == 7 || verfahren_nr == 9 ) //es liegt eine Maehweide vor
            {
                kostendifferenz[ i] = berechne_maehweide( gzertrag[ i],
                        trockenaws_l4, energieaws_l4,
						trockenheu_l4, energieheu_l4,trocken2heu_l4, energie2heu_l4,
						ertragsanteil_m1,ertragsanteil_m2,
                        netto_energiekonzentration_aws,
						netto_energiekonzentration_sonstige,faktorliste);
               if( (massnahmen_besatzdichte > 0.4) &&( massnahmen_besatzdichte < 60))
				{

				  diff = kostendifferenz[ i] - refertrag2[ i];
				  if( diff > 0)
						 kostendifferenz[ i] = DBL_MAX;
				  else
                    kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
				}
				else
					kostendifferenz[ i] = kostendifferenz[ i] - refertrag[ i];
            }
        }
    }

    //return kostendifferenz;

}
void kosten::get_verwertbarkeit(vector<verwertbarkeit>& faktorliste, int energie, double& verwertbarkeit_silage,
	double& verwertbarkeit_heu,double& verwertbarkeit_weide,double& verwertbarkeit_weide3) 
{
	vector<verwertbarkeit>::iterator i;
	for(i = faktorliste.begin(); i != faktorliste.end(); i++)
	{
		if(i->energiekonzentration == energie)
		{
			verwertbarkeit_silage = i->silage;
			
			verwertbarkeit_heu = i->heu;
			
			verwertbarkeit_weide = i->weide;
			
			verwertbarkeit_weide3 = i->weide3;
			
		}
	}


}

kosten kosten::get_kosten_from_database(
        int verfahren_nr,
        int mv1,
        int abstand,
		int abstand2,
        double grossvieheinheit,
        int viehID,
        int duengung)
{

    kosten d_kosten;
    datenbank* daten = new datenbank();
    //Connection* con = daten->datacon();
    d_kosten = daten->returnkosten( verfahren_nr, mv1, abstand,abstand2,
            grossvieheinheit, viehID);
	/*CString str;
	str.Format(_T("%d"),abstand2);
    AfxMessageBox(str,MB_YESNO,0);*/
    d_kosten.abstand = abstand;
	d_kosten.abstand2 = abstand2;
    d_kosten.mv1 = mv1;
    d_kosten.massnahmen_besatzdichte = grossvieheinheit;
    d_kosten.verfahren_nr = verfahren_nr;
    d_kosten.duengung = duengung;

    delete daten;
    return d_kosten;

}
