using System;
using System.Collections.Generic;
using BeWo.Report;
using BeWo.Report.ReportObjects;

using DevExpress.XtraReports.UI;

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

        public void SetReportDataSource(ServiceInvoiceRO pRO)
        {
			decimal totalFLSGeleistet = 0;
			decimal totalEURGesamt = 0;



			
			ServiceInvoiceItemRO fahrZeiten = null;
			ServiceInvoiceItemRO fehlkontakte = null;

			if (pRO.ServiceInvoicePeriods != null && pRO.ServiceInvoicePeriods.Count > 0)
	        {
				List<ServiceInvoiceItemRO> items = new List<ServiceInvoiceItemRO>();

				foreach (var sip in pRO.ServiceInvoicePeriods)
				{
					foreach (var ii in sip.ServiceInvoiceItems)
					{
						if (ii.ServiceDescription == "Fahrt- und Wegezeiten")
						{
							fahrZeiten = ii;
						}
						else if (ii.ServiceDescription == "Ausfallzeiten Fehlkontakte")
						{
							fehlkontakte = ii;
						}
						else
						{
							items.Add(ii);
							totalFLSGeleistet += ii.UnitCount ?? 0;
							totalEURGesamt += ii.NetAmount ?? 0;
						}
					}

				}
				pRO.ServiceInvoicePeriods.Clear();
				var newSip = new ServiceInvoicePeriodRO();
				newSip.ServiceInvoiceItems = new List<ServiceInvoiceItemRO>();
		        newSip.ServiceInvoiceItems = items;
				pRO.ServiceInvoicePeriods.Add(newSip);
				
	        }
			


			//lblFLSGesamtBewilligt.Text = String.Format("{0:0.00}", totalFLSBewilligt);
			lblFLSErbracht.Text = String.Format("{0:0.00}", totalFLSGeleistet);
			lblEURGesamt.Text = String.Format("{0:c}", totalEURGesamt);

			if (fahrZeiten != null)
			{
				lblFahrtzeitenBetrag.Text = String.Format("{0:c}", fahrZeiten.NetAmount);
				totalEURGesamt += fahrZeiten.NetAmount ?? 0;
			}
			if (fehlkontakte != null)
			{
				lblAusfallzeitenBetrag.Text = String.Format("{0:c}", fehlkontakte.NetAmount);
				totalEURGesamt += fehlkontakte.NetAmount ?? 0;
			}
			lblGesamtbetrag.Text = String.Format("{0:c}", totalEURGesamt);

			this.bindingSource1.DataSource = pRO;
        }
    }
}