using System;
using System.Windows.Forms.VisualStyles;
using BeWo.Report;
using BeWo.Report.ReportObjects;

using DevExpress.XtraReports.UI;

namespace BeWo.PsychosozialerTraegervereinReports
{
    public partial class ServiceInvoiceReport : XtraReport, IBeWoReport<ServiceInvoiceRO>
    {
        public ServiceInvoiceReport()
        {
            this.InitializeComponent();
        }

        public void SetReportDataSource(ServiceInvoiceRO pRO)
        {
	        decimal hourlyRate = 0;
	        decimal rateFactor = 1;
	        decimal hours = 0;
			if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0)
			{
				foreach (var p in pRO.ServiceInvoicePeriods)
				{

					if (p.ServiceInvoiceItems != null && p.ServiceInvoiceItems.Count > 0)
					{
						
						foreach (var i in p.ServiceInvoiceItems)
						{
							if (i.HourlyRate.HasValue)
							{
								hourlyRate = i.HourlyRate.Value;

								if (!String.IsNullOrEmpty(i.RateFactor))
								{
									var rfStr = i.RateFactor.Replace("%", "").Replace(",00", "").Trim();
									int rfInt = 0;
									Int32.TryParse(rfStr, out rfInt);

									rateFactor = (100m + rfInt)/100m;
								}
							}

							if (i.Hours.HasValue)
								hours += i.Hours.Value;

							

						}

					}
				}

			}
	        hours *= rateFactor;

	        if (!String.IsNullOrEmpty(pRO.CustomerSalutation) && pRO.CustomerSalutation.ToLower() == "herr")
		        pRO.CustomerSalutation = "Herrn";
	        cellDesription.Text = String.Format("Fachleistungsstunden {0:MM}/{0:yyyy}", pRO.AccountingPeriodStart);
			cellHours.Text = String.Format("{0:0.00} Stunden x", hours);
			cellHouryRate.Text = String.Format("{0:0.00} Euro", hourlyRate);
			cellClaim.Text = String.Format("{0} Euro", pRO.NetClaim.Replace("€","").Trim());

            this.bindingSource1.DataSource = pRO;
        }
    }
}