public StringBuilder GenerateReportStringBuilder(bool linksEnabled) { StringBuilder sb = new StringBuilder(); string lineReturn = Vars.HTML_LINE_RETURN; if (this.FundsReleased && this.Promoter != null && this.Event != null && this.FundsTransfer != null) { this.CalculateTotalFundsAndVat(); sb.Append(@"<form id='form1' runat='server'><div style='font-family:Verdana;'><table width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><tr><td valign='top'> <table width='100%'>"); sb.Append(@"<tr> <td valign='bottom'>" + Vars.DSI_POSTAL_DETAILS_HTML + "</td>"); sb.Append(@" <td align='right'>"); sb.Append(@" <table> <tr> <td><b>"); sb.Append(lineReturn); if (linksEnabled) sb.Append(this.Promoter.Link()); else sb.Append(this.Promoter.Name); sb.Append("</b>"); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(this.Promoter.AddressHtml); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append("VAT #: "); if (this.Promoter.VatStatus == Promoter.VatStatusEnum.Registered) sb.Append(this.Promoter.VatNumber); else if (this.Promoter.VatStatus == Promoter.VatStatusEnum.NotRegistered) sb.Append("Not registered"); else // sb.Append("UNKNOWN"); throw new DsiUserFriendlyException("VAT Status is unknown."); sb.Append(lineReturn); sb.Append(@" <b>INVOICE</b> </td> </tr>"); sb.Append(@" <tr> <td>Invoice date:</td>"); sb.Append(" <td>" + this.FundsTransfer.DateTimeCreated.ToString("dd/MM/yyyy") + @"</td> </tr>"); sb.Append(@" <tr> <td>Invoice number:</td>"); sb.Append(" <td>" + this.FundsTransferK.ToString() + @"</td> </tr>"); sb.Append(@" <tr> <td>Your account number:</td>"); sb.Append(" <td>" + this.PromoterK.ToString() + @"</td> </tr> </table>"); sb.Append(@" </td> </tr> </table>"); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append("<b>EVENT: "); if (linksEnabled) sb.Append(this.Event.LinkFriendlyName); else sb.Append(this.Event.FriendlyName); sb.Append("</b>"); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(@"<table width='100%' cellspacing='0' cellpadding='3' class='BorderBlack Top'> <tr> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='85'><b>Ticket run #</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='365'><b>Details</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='40'><b>Sold</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='60'><b>Price</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='55'><b>VAT</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left Right' width='65'><b>Total</b></td> </tr>"); decimal totalPrice = 0; decimal totalVat = 0; decimal totalFunds = 0; int totalQuantity = 0; foreach (TicketRun tr in this.TicketRuns) { sb.Append(@"<tr> <td class='BorderBlack Left'>" + tr.K.ToString() + @"</td>"); sb.Append(@" <td class='BorderBlack Left'>"); if (linksEnabled) sb.Append(tr.LinkPriceBrandName); else sb.Append(tr.PriceBrandName); sb.Append(@" </td>"); decimal price = 0; decimal vat = 0; decimal total = 0; int quantity = 0; foreach (Ticket ticket in tr.Tickets) { if (!ticket.CancelledBeforeFundsRelease) { quantity += ticket.Quantity; price += ticket.InvoiceItem.Price; vat += ticket.InvoiceItem.Vat; total += ticket.InvoiceItem.Total; } } if (quantity != tr.SoldTickets - tr.CancelledTicketBeforeFundReleaseQuantity) throw new DsiUserFriendlyException("Error in calculating number of tickets sold. Please contact an administrator."); sb.Append(@" <td class='BorderBlack Left' align='right'>" + quantity.ToString() + @"</td>"); sb.Append(@" <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(price) + @"</td>"); sb.Append(@" <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(vat) + @"</td>"); sb.Append(@" <td class='BorderBlack Left Right' align='right'>" + Utilities.MoneyToHTML(total) + @"</td> </tr>"); totalQuantity += quantity; totalPrice += price; totalVat += vat; totalFunds += total; } if (Math.Round(totalPrice, 2) != Math.Round(this.TotalFundsReleased - this.TotalVatReleased, 2) || Math.Round(totalVat, 2) != Math.Round(this.TotalVatReleased, 2) || Math.Round(totalFunds, 2) != Math.Round(this.TotalFundsReleased, 2) || totalQuantity != this.SoldTickets - this.TotalCancelledTicketsBeforeRelease) throw new DsiUserFriendlyException("Error in calculating tickets funds. Please contact an administrator."); sb.Append(@"<tr style='border-top-width: 2px;' class='BorderBlack'> <td style='border-top-width: 2px;' class='BorderBlack' colspan='2'> </td>"); sb.Append(@" <td style='border-top-width: 2px; border-bottom-width: 2px;' class='BorderBlack Left' align='right'>" + totalQuantity.ToString() + @"</td>"); sb.Append(@" <td style='border-top-width: 2px; border-bottom-width: 2px;' class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(this.TotalFundsReleased - this.TotalVatReleased) + @"</td>"); sb.Append(@" <td style='border-top-width: 2px; border-bottom-width: 2px;' class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(this.TotalVatReleased) + @"</td>"); sb.Append(@" <td style='border-top-width: 2px; border-bottom-width: 2px;' class='BorderBlack Left Right' align='right'>" + Utilities.MoneyToHTML(this.TotalFundsReleased) + @"</td> </tr>"); if (this.Promoter.VatStatus == Promoter.VatStatusEnum.Registered) sb.Append("<tr><td colspan='6' align='center'>THE VAT SHOWN IS YOUR OUTPUT TAX DUE TO HM REVENUE & CUSTOMS</td></tr>"); sb.Append("</table>"); decimal appliedAmount = 0; if (this.FundsTransfer.InvoiceTransfers.Count > 0) { sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(@"<table width='100%' cellspacing='0' cellpadding='3' class='BorderBlack Top Bottom Right'> <tr> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='305'><b>Items Applied To</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='65'><b>Tax Date</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='150'><b>Total Invoice Amount</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='150'><b>Amount Applied To Invoice</b></td> </tr>"); foreach (InvoiceTransfer invoiceTransfer in this.FundsTransfer.InvoiceTransfers) { Invoice invoice = new Invoice(invoiceTransfer.InvoiceK); sb.Append(@"<tr> <td class='BorderBlack Left'>"); if (linksEnabled) { sb.Append(invoice.Link()); } else sb.Append(invoice.TypeAndK); // Replacing CreatedDateTime with TaxDateTime, as per Gee's request for OASIS v1.5 sb.Append(@"</td> <td class='BorderBlack Left'>" + invoice.TaxDateTime.ToString("dd/MM/yy") + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(invoice.Total) + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(invoiceTransfer.Amount) + @"</td> </tr>"); appliedAmount += Math.Abs(invoiceTransfer.Amount); } sb.Append(@"</table>"); } decimal refundedAmount = 0; if (this.FundsTransfer.RefundTransfers.Count > 0) { sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(lineReturn); sb.Append(@"<table width='100%' cellspacing='0' cellpadding='3' class='BorderBlack Top Bottom Right'> <tr> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='250'><b>" + this.FundsTransfer.RefundTransfers[0].TypeToString); sb.Append(@"</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='85'><b>Method</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='160'><b>Method Ref#</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='90'><b>Status</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' align='left' width='85'><b>Amount</b></td> </tr>"); foreach (Transfer refundTransfer in this.FundsTransfer.RefundTransfers) { sb.Append(@"<tr> <td class='BorderBlack Left'>"); if (linksEnabled) sb.Append(refundTransfer.Link()); else sb.Append(refundTransfer.TypeAndK); sb.Append(@"</td> <td class='BorderBlack Left'>" + Utilities.CamelCaseToString(refundTransfer.Method.ToString()) + @"</td>" + "<td class='BorderBlack Left'>"); sb.Append(refundTransfer.ReferenceNumberToHtml()); sb.Append(@"</td> <td class='BorderBlack Left'>" + refundTransfer.Status.ToString() + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(refundTransfer.Amount) + @"</td></tr>"); refundedAmount += Math.Abs(refundTransfer.Amount); } sb.Append(@"</table><br>"); } // TicketPromoterEvent Summary sb.Append(@"<br><table width='250'> <tr> <td colspan=2><b>Summary</b></td> </tr> <tr> <td width='135'>Ticket Sales Total:</td> <td width='115' align='right'>" + Utilities.MoneyToHTML(totalFunds) + @"</td> </tr> <tr> <td width='135'>Payment Total:</td> <td width='115' align='right'>" + Utilities.MoneyToHTML(appliedAmount + refundedAmount) + @"</td> </tr> <tr> <td width='135'><b>Outstanding:</b></td> <td width='115' align='right'><b>" + Utilities.MoneyToHTML(totalFunds - appliedAmount - refundedAmount) + @"</b></td> </tr></table>"); sb.Append("</td></tr>"); // sb.Append(@"<tr><td valign='bottom'><hr></td></tr>"); sb.Append(@"</table></div></form>"); } return sb; }
public StringBuilder GenerateReportStringBuilder(bool linksEnabled) { StringBuilder sb = new StringBuilder(); sb.Append(@"<form id='form1' runat='server'><div style='font-family:Verdana;'><table width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><tr><td valign='top'> <table width='100%'>"); sb.Append(Utilities.GenerateHTMLHeaderRowString(this.Type.Equals(TransferTypes.Payment) ? "RECEIPT" : "REMITTANCE ADVICE")); sb.Append(@"<tr> <td align='left' valign='top' style='padding-left:48px;'>"); if (this.Promoter != null) { if (this.Promoter.AccountsName.Length > 0) { sb.Append(this.Promoter.AccountsName); sb.Append("<br>"); } else if (this.Usr != null && this.Usr.FullName.Length > 0 && this.Usr.IsPromoter && this.Usr.IsPromoterK(this.K)) { sb.Append(this.Usr.FullName); sb.Append("<br>"); } else if (this.Promoter.PrimaryUsr != null && this.Promoter.PrimaryUsr.FullName.Length > 0) { sb.Append(this.Promoter.PrimaryUsr.FullName); sb.Append("<br>"); } if (this.Promoter.Name.Length > 0) { sb.Append(this.Promoter.Name); sb.Append("<br>"); } sb.Append(this.Promoter.AddressHtml); } else if (this.Usr != null) { if (this.Usr.FullName.Length > 0) { sb.Append(this.Usr.FullName); sb.Append("<br>"); } sb.Append(this.Usr.AddressHtml()); } sb.Append(@"</td><td width='350'></td><td valign='top' width='100'>Transfer No.<br><br>Acc No.<br><br>Date</td> <td align='right' valign='top' width='125'>"); sb.Append("TRN"); sb.Append(this.K.ToString()); sb.Append("<br><br>"); if (this.Promoter != null) sb.Append(this.PromoterK.ToString()); else if (this.Usr != null) sb.Append(this.UsrK.ToString()); else sb.Append(" "); sb.Append("<br><br>"); sb.Append(this.DateTimeCreated.ToString("dd/MM/yy")); sb.Append("</td></tr>"); //if (this.DateTimeComplete != null && this.DateTimeComplete > DateTime.MinValue) //{ // sb.Append(@"<br><br><b>Date Completed</b><br>" + this.DateTimeComplete.ToShortDateString()); //} sb.Append(@"</table><br><br> <table width='100%' cellspacing='0' cellpadding='3' class='BorderBlack Top Bottom Right'> <tr> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='250'><b>Transfer</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='85'><b>Method</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='160'><b>Method Ref#</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='90'><b>Status</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' align='left' width='85'><b>Amount</b></td> </tr>"); sb.Append(@"<tr><td class='BorderBlack Left'>" + this.TypeToString + @"</td>" + "<td class='BorderBlack Left'>" + Utilities.CamelCaseToString(this.Method.ToString()).Replace(" ", " ") + @"</td> <td class='BorderBlack Left'>"); sb.Append(this.ReferenceNumberToHtml()); sb.Append(@"</td> <td class='BorderBlack Left'>" + this.Status.ToString() + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(this.Amount) + @"</td></tr></table><br><br>"); if (InvoiceTransfers.Count > 0) { // Rename "Date" to "Tax Date", as per Dave's request 7/2/07 sb.Append(@"<table width='100%' cellspacing='0' cellpadding='3' class='BorderBlack Top Bottom Right'> <tr> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='305'><b>Items Applied To</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='65'><b>Tax Date</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='150'><b>Total Invoice Amount</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='150'><b>Amount Applied To Invoice</b></td> </tr>"); foreach (InvoiceTransfer invoiceTransfer in InvoiceTransfers) { Invoice invoice = new Invoice(invoiceTransfer.InvoiceK); sb.Append(@"<tr> <td class='BorderBlack Left'>"); if (linksEnabled) { sb.Append(invoice.Link()); } else sb.Append(invoice.TypeAndK); // Replacing CreatedDateTime with TaxDateTime, as per Gee's request for OASIS v1.5 sb.Append(@"</td> <td class='BorderBlack Left'>" + invoice.TaxDateTime.ToString("dd/MM/yy") + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(invoice.Total) + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(invoiceTransfer.Amount) + @"</td> </tr>"); } sb.Append(@"</table><br>"); } Query refundTransferQuery = new Query(); if(this.Type.Equals(TransferTypes.Payment)) refundTransferQuery.QueryCondition = new And(new Q(Transfer.Columns.TransferRefundedK, this.K), new Or(new Q(Transfer.Columns.Status, Transfer.StatusEnum.Pending), new Q(Transfer.Columns.Status, Transfer.StatusEnum.Success))); else refundTransferQuery.QueryCondition = new And(new Q(Transfer.Columns.K, this.TransferRefundedK), new Or(new Q(Transfer.Columns.Status, Transfer.StatusEnum.Pending), new Q(Transfer.Columns.Status, Transfer.StatusEnum.Success))); TransferSet refundTransferSet = new TransferSet(refundTransferQuery); if (refundTransferSet.Count > 0) { sb.Append(@"<br><table width='100%' cellspacing='0' cellpadding='3' class='BorderBlack Top Bottom Right'> <tr> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='250'><b>"); if (this.Type.Equals(TransferTypes.Payment)) { if (this.Method == Methods.TicketSales) sb.Append(Utilities.CamelCaseToString(Methods.TicketSales.ToString()) + " Release"); else sb.Append(TransferTypes.Refund.ToString()); } else if (this.Type.Equals(TransferTypes.Refund)) sb.Append(TransferTypes.Payment.ToString()); sb.Append(@"</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='85'><b>Method</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='160'><b>Method Ref#</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' width='90'><b>Status</b></td> <td style='vertical-align:bottom;' class='BorderBlack Bottom Left' align='left' width='85'><b>Amount</b></td> </tr>"); foreach (Transfer refundTransfer in refundTransferSet) { sb.Append(@"<tr> <td class='BorderBlack Left'>"); if (linksEnabled) { if (refundTransfer.TicketPromoterEvent != null) sb.Append(Utilities.Link(refundTransfer.TicketPromoterEvent.UrlReport(), refundTransfer.TypeAndK)); else sb.Append(refundTransfer.Link()); } else sb.Append(refundTransfer.TypeAndK); sb.Append(@"</td> <td class='BorderBlack Left'>" + Utilities.CamelCaseToString(refundTransfer.Method.ToString()) + @"</td>" + "<td class='BorderBlack Left'>"); sb.Append(refundTransfer.ReferenceNumberToHtml()); sb.Append(@"</td> <td class='BorderBlack Left'>" + refundTransfer.Status.ToString() + @"</td> <td class='BorderBlack Left' align='right'>" + Utilities.MoneyToHTML(refundTransfer.Amount) + @"</td></tr>"); } sb.Append(@"</table><br>"); } // DSI Registration Footer sb.Append(Utilities.GenerateHTMLFooterRowString()); sb.Append(@"</table></div></form>"); return sb; }