using System;

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

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

        public void SetReportDataSource(SettlementRO pRO)
        {
            pRO.AccountingPeriod = string.Format("{0} bis {1}", DateTime.Parse(pRO.AccountingStartDateString).ToString("dd.MM.yy"), DateTime.Parse(pRO.AccountingEndDateString).ToString("dd.MM.yy"));

            if (pRO.DifferentHourlyRateCount == 3)
            {
                var month1Start = DateTime.Parse(pRO.AccountingStartDateString).ToString("MMM");
                var year1Start = DateTime.Parse(pRO.AccountingStartDateString).ToString("yy");

                var month1End = DateTime.Parse(pRO.HourlyRate3EndDateString).ToString("MMM");
                var year1End = DateTime.Parse(pRO.HourlyRate3EndDateString).ToString("yy");

				var month2Start = DateTime.Parse(pRO.HourlyRateOldStartDateString).ToString("MMM");
				var year2Start = DateTime.Parse(pRO.HourlyRateOldStartDateString).ToString("yy");

                var month2End = DateTime.Parse(pRO.HourlyRateOldEndDateString).ToString("MMM");
                var year2End = DateTime.Parse(pRO.HourlyRateOldEndDateString).ToString("yy");

				var month3Start = DateTime.Parse(pRO.HourlyRateNewStartDateString).ToString("MMM");
				var year3Start = DateTime.Parse(pRO.HourlyRateNewStartDateString).ToString("yy");

                var month3End = DateTime.Parse(pRO.AccountingEndDateString).ToString("MMM");
                var year3End = DateTime.Parse(pRO.AccountingEndDateString).ToString("yy");

                if (pRO.GeleisteteFLSMitStundensatz3.HasValue && pRO.GeleisteteFLSMitStundensatz3.Value != 0)
                {
					pRO.Abrechnungstext1 = String.Format("von {0}{4} {1} bis {2}{5} {3}", month1Start, year1Start, month1End, year1End, month1Start.Equals("Mai") ? "" : ".", month1End.Equals("Mai") ? "" : ".");
                    MittelbareLeistung1.Text = "zuzüglich mittelbare Leistung";
                    Zwischensumme1Text.Text = "Zwischensumme:";
                    gelStunden1.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatz3);
                    MittelbareLeistungStd1.Text = string.Format("{0:0.00}",
                                                                pRO.GeleisteteFLSMitStundensatz3*
                                                                ((decimal) pRO.RateFactor - 1));
                    Stundensatz1Text.Text = string.Format("á {0:0.00}", pRO.HourlyRate3);

                    pRO.Betrag1 = String.Format("{0:c}",
                                                pRO.GeleisteteFLSMitStundensatz3*(decimal) pRO.RateFactor*
                                                pRO.HourlyRate3);
                    BetragZwischensumme1Text.Text = pRO.Betrag1;

                    gelStundenZwischensumme1Text.Text = string.Format("{0:0.00}",
                                                                      pRO.GeleisteteFLSMitStundensatz3*
                                                                      (decimal) pRO.RateFactor);
                }

                if (pRO.GeleisteteFLSMitStundensatzAlt.HasValue && pRO.GeleisteteFLSMitStundensatzAlt.Value != 0)
                {
					pRO.Abrechnungstext2 = String.Format("von {0}{4} {1} bis {2}{5} {3}", month2Start, year2Start, month2End, year2End, month2Start.Equals("Mai") ? "" : ".", month2End.Equals("Mai") ? "" : ".");
                    MittelbareLeistung2.Text = "zuzüglich mittelbare Leistung";
                    Zwischensumme2Text.Text = "Zwischensumme:";
                    gelStunden2.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAlt);
                    MittelbareLeistungStd2.Text = string.Format("{0:0.00}",
                                                                pRO.GeleisteteFLSMitStundensatzAlt*
                                                                ((decimal) pRO.RateFactor - 1));
                    Stundensatz2Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateOld);

                    pRO.Betrag2 = String.Format("{0:c}",
                                                pRO.GeleisteteFLSMitStundensatzAlt*(decimal) pRO.RateFactor*
                                                pRO.HourlyRateOld);
                    BetragZwischensumme2Text.Text = pRO.Betrag2;

                    gelStundenZwischensumme2Text.Text = string.Format("{0:0.00}",
                                                                      pRO.GeleisteteFLSMitStundensatzAlt*
                                                                      (decimal) pRO.RateFactor);
                }


                if (pRO.GeleisteteFLSMitStundensatzAktuell.HasValue && pRO.GeleisteteFLSMitStundensatzAktuell.Value != 0)
                {
					pRO.Abrechnungstext3 = String.Format("von {0}{4} {1} bis {2}{5} {3}", month3Start, year3Start, month3End, year3End, month3Start.Equals("Mai") ? "" : ".", month3End.Equals("Mai") ? "" : ".");
                    MittelbareLeistung3.Text = "zuzüglich mittelbare Leistung";
                    Zwischensumme3Text.Text = "Zwischensumme:";
                    gelStunden3.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);
                    MittelbareLeistungStd3.Text = string.Format("{0:0.00}",
                                                                pRO.GeleisteteFLSMitStundensatzAktuell*
                                                                ((decimal) pRO.RateFactor - 1));
                    Stundensatz3Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateNew);

                    pRO.Betrag3 = String.Format("{0:c}",
                                                pRO.GeleisteteFLSMitStundensatzAktuell*(decimal) pRO.RateFactor*
                                                pRO.HourlyRateNew);
                    BetragZwischensumme3Text.Text = pRO.Betrag3;

                    gelStundenZwischensumme3Text.Text = string.Format("{0:0.00}",
                                                                      pRO.GeleisteteFLSMitStundensatzAktuell*
                                                                      (decimal) pRO.RateFactor);
                }
            }
            else if (pRO.DifferentHourlyRateCount == 2)
            {
				var month1Start = DateTime.Parse(pRO.AccountingStartDateString).ToString("MMM");
                var year1Start = DateTime.Parse(pRO.AccountingStartDateString).ToString("yy");
				
                var month1End = DateTime.Parse(pRO.HourlyRateOldEndDateString).ToString("MMM");
                var year1End = DateTime.Parse(pRO.HourlyRateOldEndDateString).ToString("yy");

				var month2Start = DateTime.Parse(pRO.HourlyRateNewStartDateString).ToString("MMM");
				var year2Start = DateTime.Parse(pRO.HourlyRateNewStartDateString).ToString("yy");

				var month2End = DateTime.Parse(pRO.AccountingEndDateString).ToString("MMM");
				var year2End = DateTime.Parse(pRO.AccountingEndDateString).ToString("yy");

                if (pRO.GeleisteteFLSMitStundensatzAlt.HasValue && pRO.GeleisteteFLSMitStundensatzAlt.Value != 0)
                {
					pRO.Abrechnungstext2 = String.Format("von {0}{4} {1} bis {2}{5} {3}", month1Start, year1Start, month1End, year1End, month1Start.Equals("Mai") ? "" : ".", month1End.Equals("Mai") ? "" : ".");
                    MittelbareLeistung2.Text = "zuzüglich mittelbare Leistung";
                    Zwischensumme2Text.Text = "Zwischensumme:";
                    gelStunden2.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAlt);
                    MittelbareLeistungStd2.Text = string.Format("{0:0.00}",
                                                                pRO.GeleisteteFLSMitStundensatzAlt*
                                                                ((decimal) pRO.RateFactor - 1));
                    Stundensatz2Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateOld);

                    pRO.Betrag2 = String.Format("{0:c}",
                                                pRO.GeleisteteFLSMitStundensatzAlt*(decimal) pRO.RateFactor*
                                                pRO.HourlyRateOld);
                    BetragZwischensumme2Text.Text = pRO.Betrag2;

                    gelStundenZwischensumme2Text.Text = string.Format("{0:0.00}",
                                                                      pRO.GeleisteteFLSMitStundensatzAlt*
                                                                      (decimal) pRO.RateFactor);
                }
                
                

                if (pRO.GeleisteteFLSMitStundensatzAktuell.HasValue && pRO.GeleisteteFLSMitStundensatzAktuell.Value != 0)
                {
					pRO.Abrechnungstext3 = String.Format("von {0}{4} {1} bis {2}{5} {3}", month2Start, year2Start, month2End, year2End, month2Start.Equals("Mai") ? "" : ".", month2End.Equals("Mai") ? "" : ".");
                    MittelbareLeistung3.Text = "zuzüglich mittelbare Leistung";
                    Zwischensumme3Text.Text = "Zwischensumme:";
                    gelStunden3.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);
                    MittelbareLeistungStd3.Text = string.Format("{0:0.00}",
                                                                pRO.GeleisteteFLSMitStundensatzAktuell*
                                                                ((decimal) pRO.RateFactor - 1));
                    Stundensatz3Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateNew);

                    pRO.Betrag3 = String.Format("{0:c}",
                                                pRO.GeleisteteFLSMitStundensatzAktuell*(decimal) pRO.RateFactor*
                                                pRO.HourlyRateNew);
                    BetragZwischensumme3Text.Text = pRO.Betrag3;

                    gelStundenZwischensumme3Text.Text = string.Format("{0:0.00}",
                                                                      pRO.GeleisteteFLSMitStundensatzAktuell*
                                                                      (decimal) pRO.RateFactor);
                }
            }
            else
            {
                var month11 = DateTime.Parse(pRO.AccountingStartDateString).ToString("MMM");
                var year11 = DateTime.Parse(pRO.AccountingStartDateString).ToString("yy");
                var month12 = DateTime.Parse(pRO.AccountingEndDateString).ToString("MMM");
                var year12 = DateTime.Parse(pRO.AccountingEndDateString).ToString("yy");

                if (pRO.GeleisteteFLSMitStundensatzAktuell.HasValue && pRO.GeleisteteFLSMitStundensatzAktuell.Value != 0)
                {
                    pRO.Abrechnungstext3 = String.Format("von {0}{4} {1} bis {2}{5} {3}", month11, year11, month12, year12, month11.Equals("Mai") ? "" : ".", month12.Equals("Mai") ? "" : ".");
                    MittelbareLeistung3.Text = "zuzüglich mittelbare Leistung";
                    Zwischensumme3Text.Text = "Zwischensumme:";
                    gelStunden3.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell);
                    MittelbareLeistungStd3.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell* ((decimal) pRO.RateFactor - 1));
                    Stundensatz3Text.Text = string.Format("á {0:0.00}", pRO.HourlyRateNew);

                    pRO.Betrag3 = String.Format("{0:c}", pRO.GeleisteteFLSMitStundensatzAktuell*(decimal) pRO.RateFactor* pRO.HourlyRateNew);
                    BetragZwischensumme3Text.Text = pRO.Betrag3;

                    gelStundenZwischensumme3Text.Text = string.Format("{0:0.00}", pRO.GeleisteteFLSMitStundensatzAktuell* (decimal) pRO.RateFactor);
                }
            }

            bindingSource1.DataSource = pRO;
        }
    }
}
