public static DataTable BuildReport(IEnumerable <ContractPayments> contractsPayments) { if (contractsPayments == null) { throw new ArgumentNullException("contractsPayments"); } DataTable reportTable = ReportTable; foreach (var cp in contractsPayments) { bool headerInfo = true; int agreedTotal = cp.DueTotals;// (cp.AgreedRent + cp.AgreedMaintenance + cp.AgreedDeposit); int paymentTotals = (cp.PaymentsDetails.Sum(x => x.Rent) + cp.PaymentsDetails.Sum(y => y.Maintenance) + cp.PaymentsDetails.Sum(d => d.Deposit)); int agreedBalance = agreedTotal - paymentTotals; if (cp.PaymentsDetails.Count == 0) //This contract has no payments yet, so just display its contract info. { RglReport noPaymentsHeaderRow = new RglReport( cp.StartDate, cp.EndDate, cp.PropertyNo, cp.CustomerName, cp.PropertyLocation, cp.RentDue, cp.DepositDue, cp.MentDue, agreedTotal, 0, 0, 0, 0, null, paymentTotals, agreedBalance, true); AddRow(noPaymentsHeaderRow, reportTable); continue; } foreach (var payment in cp.PaymentsDetails) { if (headerInfo) { RglReport headerRow = new RglReport ( cp.StartDate, cp.EndDate, cp.PropertyNo, cp.CustomerName, cp.PropertyLocation, cp.RentDue, cp.DepositDue, cp.MentDue, agreedTotal, payment.Rent, payment.Maintenance, payment.Deposit, payment.PaymentNo, payment.PaymentDate, paymentTotals, agreedBalance, true ); AddRow(headerRow, reportTable); headerInfo = false; } else { RglReport chiledRow = new RglReport( payment.Rent, payment.Maintenance, payment.Deposit, payment.PaymentNo, payment.PaymentDate ); AddRow(chiledRow, reportTable); } } } Layout = new ReportLayout(true); return(reportTable); }
private static void AddRow(RglReport rowData, DataTable ownerTable) { DataRow row = ownerTable.NewRow(); row.SetField <object>("ContractStart", Helper.ApplyDateMask(rowData.ContratStart)); row.SetField <object>("ContractEnd", Helper.ApplyDateMask(rowData.ContractEnd)); row.SetField <object>("PropertyNo", rowData.PropertyNo); row.SetField <object>("CustomerName", rowData.CustomerName); row.SetField <object>("PropertyDescription", rowData.PropertyDescription); row.SetField <object>("AgreedRent", rowData.AgreedRent); row.SetField <object>("AgreedMaint", rowData.AgreedMaint); row.SetField <object>("AgreedDeposit", rowData.AgreedDeposit); row.SetField <object>("AgreedTotal", rowData.AgreedTotal); row.SetField <object>("RentPay", rowData.RentPay); row.SetField <object>("MaintPay", rowData.MaintPay); row.SetField <object>("DepositPay", rowData.DepositPay); row.SetField <object>("PaymentNo", rowData.PaymentNo); row.SetField <object>("PaymentDate", Helper.ApplyDateMask(rowData.PaymentDate)); row.SetField <object>("PaymentTotal", rowData.PaymentTotal); row.SetField <object>("BalancesTotal", rowData.BalancesTotal); row.SetField <bool>("HeaderRow", rowData.HeaderRow); ownerTable.Rows.Add(row); row.AcceptChanges(); }