DataTplClosingDisclosure.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System;using System.IO;using System.Collections.Generic;using System.Data;using System.Globalization;using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos{ // This data template sample prints the closing disclosure page // of a loan application. It uses data from the sample database, // adding a few calculated values based on the sample data. public class DataTplClosingDisclosure { public GcWordDocument CreateDocx(int _ = 0) { using var ds = new DataSet(); // Read the sample's data from DsWordTplDataSet.xml: ds.ReadXml(Path.Combine("Resources", "data", "DsWordTplDataSet.xml")); var dtClosing = ds.Tables["ClosingDisclosure"]; var row = dtClosing.Rows[0];
// Calculate monthly loan payments using a standard formula: var monthlyPay = CalcMonthlyPayment(Convert.ToDecimal(row["loanAmnt"]), Convert.ToDecimal(row["loanInt"]), Convert.ToInt32(row["loanTerm"])); // Other calculated data: var calc = new { totMon1 = monthlyPay + Convert.ToDecimal(row["insurance"]) + Convert.ToDecimal(row["escrow"]), totMon8 = monthlyPay + Convert.ToDecimal(row["escrow"]), closingCosts = Convert.ToDecimal(row["loanCosts"]) + Convert.ToDecimal(row["otherCosts"]) - Convert.ToDecimal(row["lenderCredit"]), }; // Combined data for the template: var data = new { // issueDate = row["issueDate"].ToString(), issueDate = Convert.ToDateTime(row["issueDate"]).ToString("s"), closingDate = Convert.ToDateTime(row["closingDate"]).ToString("s"), disDate = Convert.ToDateTime(row["disDate"]).ToString("s"), agent = row["agent"].ToString(), fileNo = row["fileNo"].ToString(), propAddr = row["propAddr"].ToString(), salePrice = Convert.ToDecimal(row["salePrice"]), borrower = row["borrower"].ToString(), seller = row["seller"].ToString(), lender = row["lender"].ToString(), loanTerm = Convert.ToInt32(row["loanTerm"]), purpose = row["purpose"].ToString(), product = row["product"].ToString(), loanID = row["loanID"].ToString(), micNum = row["micNum"].ToString(), loanAmnt = Convert.ToDecimal(row["loanAmnt"]), loanInt = Convert.ToDecimal(row["loanInt"]), penalty = Convert.ToDecimal(row["penalty"]), insurance = Convert.ToDecimal(row["insurance"]), escrow = Convert.ToDecimal(row["escrow"]), taxes = Convert.ToDecimal(row["taxes"]),
cash2close = Convert.ToDecimal(row["cash2close"]), loanCosts = Convert.ToDecimal(row["loanCosts"]), otherCosts = Convert.ToDecimal(row["otherCosts"]), lenderCredit = Convert.ToDecimal(row["lenderCredit"]),
monthlyPay, calc.totMon1, calc.totMon8, calc.closingCosts, };
// Load the template DOCX, add the data source and process the template: var doc = new GcWordDocument(); doc.Load(Path.Combine("Resources", "WordDocs", "Closing_Disclosure_Template.docx")); doc.DataTemplate.DataSources.Add("ds", data); doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"));
// Done: return doc; }
// We use this formula to calculate loan payments for the sample: // https://cdn.vertex42.com/ExcelArticles/Images/amortization-calculation-formula.png private static decimal CalcMonthlyPayment(decimal principal, decimal yearlyInterest, int years) { var r = (double)(yearlyInterest / 12); var n = 12 * years; var q = Math.Pow(1 + r, n); var a = (double)principal * ((r * q) / (q - 1)); return (decimal)a; }
public static List<string[]> GetSampleParamsList() { return new List<string[]>() { new string[] { "@data-templates/Closing Disclosure", "Generate the closing disclosure page of a loan application", null }, new string[] { "@use-data-tpl/Closing Disclosure", "Generate the closing disclosure page of a loan application", null }, }; } }}