private static void CalculateData(ref HtmlDocument html, DataTable partners, HTMLTemplateProcessor templateProcessor) { var partnerTemplate = HTMLTemplateProcessor.SelectSingleNode(html.DocumentNode, "//div[@id='partner_template']"); var partnerParentNode = partnerTemplate.ParentNode; int countRow = 0; foreach (DataRow partner in partners.Rows) { if (partner["p_partner_class_c"].ToString() == "FAMILY") { partner["PartnerName"] = Calculations.FormatShortName(partner["PartnerName"].ToString(), eShortNameFormat.eReverseShortname); } templateProcessor.AddParametersFromRow(partner); var newPartnerRow = partnerTemplate.Clone(); string partnerId = "partner" + countRow.ToString(); newPartnerRow.SetAttributeValue("id", partnerId); partnerParentNode.AppendChild(newPartnerRow); newPartnerRow.InnerHtml = templateProcessor.InsertParameters("{", "}", newPartnerRow.InnerHtml, HTMLTemplateProcessor.ReplaceOptions.NoQuotes); countRow++; } partnerTemplate.Remove(); }
private static void CalculateData(ref HtmlDocument html, DataTable balances, DataTable transactions, HTMLTemplateProcessor templateProcessor) { var balanceTemplate = HTMLTemplateProcessor.SelectSingleNode(html.DocumentNode, "//div[@id='costcentreaccount_template']"); var balanceParentNode = balanceTemplate.ParentNode; int countBalanceRow = 0; int countTransactionRow = 0; foreach (DataRow balance in balances.Rows) { // skip account/costcentre combination if there are no transations and the balance is 0 if ((Decimal)balance["end_balance"] == 0.0m) { bool transactionExists = false; foreach (DataRow transaction in transactions.Rows) { if ((transaction["a_account_code_c"].ToString() == balance["a_account_code_c"].ToString()) && (transaction["a_cost_centre_code_c"].ToString() == balance["a_cost_centre_code_c"].ToString())) { transactionExists = true; break; } } if (!transactionExists) { continue; } } templateProcessor.AddParametersFromRow(balance); var newBalanceRow = balanceTemplate.Clone(); string balanceId = "acccc" + countBalanceRow.ToString(); newBalanceRow.SetAttributeValue("id", balanceId); balanceParentNode.AppendChild(newBalanceRow); countBalanceRow++; var FooterDiv = HTMLTemplateProcessor.SelectSingleNode(newBalanceRow, ".//div[@class='row']"); Decimal TotalCredit = 0.0m; Decimal TotalDebit = 0.0m; foreach (DataRow transaction in transactions.Rows) { if (!((transaction["a_account_code_c"].ToString() == balance["a_account_code_c"].ToString()) && (transaction["a_cost_centre_code_c"].ToString() == balance["a_cost_centre_code_c"].ToString()))) { continue; } TVariant amount = new TVariant(transaction["a_transaction_amount_n"]); if ((bool)transaction["a_debit_credit_indicator_l"]) { TotalDebit += amount.ToDecimal(); } else { TotalCredit += amount.ToDecimal(); } countTransactionRow++; } templateProcessor.SetParameter("total_debit", new TVariant(TotalDebit)); templateProcessor.SetParameter("total_credit", new TVariant(TotalCredit)); FooterDiv.InnerHtml = templateProcessor.InsertParameters("{", "}", FooterDiv.InnerHtml, HTMLTemplateProcessor.ReplaceOptions.NoQuotes); } balanceTemplate.Remove(); }