using System;
using BeWo.Report.ReportObjects;
using BeWo.Report;

namespace CaritasUnnaWohnungslosenhilfe
{
    public partial class Spitzabrechnung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<SettlementRO>
    {
        public Spitzabrechnung()
        {
            InitializeComponent();
        }

        public void SetReportDataSource(SettlementRO pRO)
        {
	        decimal? betrag1 = 0;
			decimal? betrag2 = 0;
			decimal? betrag3 = 0;
			
			
            if (pRO.DifferentHourlyRateCount == 3)
            {
                betrag1 = pRO.GeleisteteFLSMitStundensatz3*pRO.HourlyRate3;
				pRO.Betrag1 = String.Format("{0:c}", betrag1);

				betrag2 = pRO.GeleisteteFLSMitStundensatzAlt*pRO.HourlyRateOld;
                pRO.Betrag2 = String.Format("{0:c}", betrag2);
				betrag3 = pRO.GeleisteteFLSMitStundensatzAktuell*pRO.HourlyRateNew;
				pRO.Betrag3 = String.Format("{0:c}", betrag3);

				cellBetrag1.Text = pRO.Betrag1;
				cellBetrag2.Text = pRO.Betrag2;
				cellBetrag3.Text = pRO.Betrag3;

				cellStart1.Text = pRO.AccountingStartDateString;
				cellEnd1.Text = pRO.HourlyRate3EndDateString;
				cellHourlyRate1.Text = pRO.HourlyRate3String;
				cellFLS1.Text = String.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatz3);

				cellStart2.Text = pRO.HourlyRateOldStartDateString;
				cellEnd2.Text = pRO.HourlyRateOldEndDateString;
				cellHourlyRate2.Text = pRO.HourlyRateOldString;
				cellFLS2.Text = String.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAlt);

				cellStart3.Text = pRO.HourlyRateNewStartDateString;
				cellEnd3.Text = pRO.AccountingEndDateString;
				cellHourlyRate3.Text = pRO.HourlyRateNewString;
				cellFLS3.Text = String.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);
            }
            else if (pRO.DifferentHourlyRateCount == 2)
            {
                
                betrag2 = pRO.GeleisteteFLSMitStundensatzAlt*pRO.HourlyRateOld;
                pRO.Betrag2 = String.Format("{0:c}", betrag2);

				betrag3 = pRO.GeleisteteFLSMitStundensatzAktuell*pRO.HourlyRateNew;
                pRO.Betrag3 = String.Format("{0:c}", betrag3);

				cellBetrag1.Text = "";
				cellBetrag2.Text = pRO.Betrag2;
				cellBetrag3.Text = pRO.Betrag3;

				cellStart2.Text = pRO.AccountingStartDateString;
				cellEnd2.Text = pRO.HourlyRateOldEndDateString;
				cellHourlyRate2.Text = pRO.HourlyRateOldString;
				cellFLS2.Text = String.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAlt);

				cellStart3.Text = pRO.HourlyRateNewStartDateString;
				cellEnd3.Text = pRO.AccountingEndDateString;
				cellHourlyRate3.Text = pRO.HourlyRateNewString;
				cellFLS3.Text = pRO.RecordedFLSWithNewHourlyRateString;
				cellFLS3.Text = String.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);
            }
            else
            {
				cellStart3.Text = pRO.AccountingStartDateString;
				cellEnd3.Text = pRO.AccountingEndDateString;
				cellHourlyRate3.Text = pRO.HourlyRateNewString;
				cellFLS3.Text = String.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);

	            betrag3 = pRO.GeleisteteFLSMitStundensatzAktuell*pRO.HourlyRateNew;
                pRO.Betrag3 = String.Format("{0:c}", betrag3);



				cellBetrag1.Text = "";
				cellBetrag2.Text = "";
				cellBetrag3.Text = pRO.Betrag3;
            }
			decimal fahrt = 0;
			decimal fehl = 0;
			
	        if (betrag1.HasValue)
		        betrag1 = Math.Round(betrag1.Value, 2, MidpointRounding.AwayFromZero);
			if (betrag2.HasValue)
				betrag2 = Math.Round(betrag2.Value, 2, MidpointRounding.AwayFromZero);
			if (betrag3.HasValue)
				betrag3 = Math.Round(betrag3.Value, 2, MidpointRounding.AwayFromZero);

			decimal summe = (betrag1 ?? 0) + (betrag2 ?? 0) + (betrag3 ?? 0);
			fehl = Math.Round(summe * (5m / 100m), 2, MidpointRounding.AwayFromZero);

			fahrt = summe * (20m / 100m);
	        fahrt = pRO.ClaimWithEigenbeteiligung - summe - fehl;

			cellZwischensumme.Text = String.Format("{0:c}", summe);
			cellFahrtzeiten.Text = String.Format("{0:c}", fahrt);
			cellAusfallzeiten.Text = String.Format("{0:c}", fehl);
			cellGesamt.Text = String.Format("{0:c}", pRO.ClaimWithEigenbeteiligung);

            ortDatum.Text = string.Format("Unna, {0}", DateTime.Now.ToShortDateString());

            bindingSource1.DataSource = pRO;
        }
    }
}

