using System;
using BeWo.Report.ReportObjects;

using DevExpress.XtraReports.UI;

namespace BeWo.Report.DefaultReports
{
    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;

			lblAbrechnungstext.Text = String.Format("{0:0.##} FLS ({1:dd.MM.yy}-{2:dd.MM.yy})", hours, pRO.AccountingPeriodStart, pRO.AccountingPeriodEnd);
			lblStundensatz.Text = String.Format("{0:0.00} €", hourlyRate);
			lblGesamtbetrag.Text = String.Format("{0}", pRO.NetClaim);

			this.bindingSource1.DataSource = pRO;
        }
    }
}