public BudgetCategory(string name, Money budget, bool isClosed, FinancialTransactions transactions) : this(name, budget) { foreach (FinancialTransaction transaction in transactions) { this.transactions.Add(transaction.Clone()); } this.IsClosed = isClosed; }
public BudgetCategory(string name, Money budget) { this.Name = name; this.Budget = budget.Clone(); this.IsClosed = false; this.transactions = new FinancialTransactions(); }
public BudgetCategory AddTransaction(FinancialTransaction transaction) { if (!IsClosed) { FinancialTransactions newTransactions = new FinancialTransactions(); newTransactions.AddRange(this.transactions); newTransactions.Add(transaction); return new BudgetCategory(this.Name, this.Budget, this.IsClosed, newTransactions); } else { throw new BudgetIsClosedException(); } }
protected void gvBCommit_RowUpdating(object sender, GridViewUpdateEventArgs e) { try { int rowIndex = e.RowIndex; if (((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text.Trim() != "") { decimal n; bool isNumeric = decimal.TryParse(((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text.Trim(), out n); if (!isNumeric || Convert.ToDecimal(((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text.Trim()) <= 0) { lblErrorMsg.Text = "Select a valid transaction amount"; ((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Focus(); return; } } decimal amount = Convert.ToDecimal(((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text); int transType = Convert.ToInt32(((DropDownList)gvBCommit.Rows[rowIndex].FindControl("ddlTransType")).SelectedValue.ToString()); int detailId = Convert.ToInt32(((Label)gvBCommit.Rows[rowIndex].FindControl("lblDetId")).Text); int fundId = Convert.ToInt32(((Label)gvBCommit.Rows[rowIndex].FindControl("lblFundId")).Text); int transId = Convert.ToInt32(((Label)gvBCommit.Rows[rowIndex].FindControl("lblTransId")).Text); decimal old_amount = Convert.ToDecimal(FinancialTransactions.GetTransDetails(detailId).Rows[0]["Amount"].ToString()); decimal bal_amount = Convert.ToDecimal(hfBalAmt.Value); decimal allowed_amount = old_amount + bal_amount; if (amount == allowed_amount) { lblErrorMsg.Text = "Transaction is complete, more funds not allowed"; } else if (amount > allowed_amount) { //amount = allowed_amount; //lblErrorMsg.Text = "Amount auto adjusted to available fund amount"; lblErrorMsg.Text = "Amount entered is more than the available balance amount. Please enter available funds."; return; } else if (amount < allowed_amount) { if (!btnCommitmentSubmit.Enabled) { CommonHelper.EnableButton(btnCommitmentSubmit); } } //if (FinancialTransactions.IsDuplicateFundDetailPerTransaction(transId, fundId, transType)) //{ // lblErrorMsg.Text = "Same fund and same transaction type is already submitted for this transaction. Please change selection"; // return; //} FinancialTransactions.UpdateTransDetails(detailId, transType, amount); gvBCommit.EditIndex = -1; BindFundDetails(GetTransId()); } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
protected void btnCommitmentSubmit_Click(object sender, EventArgs e) { try { lblErrorMsg.Text = ""; if (ddlAcctNum.Items.Count > 1 && ddlAcctNum.SelectedIndex == 0) { lblErrorMsg.Text = "Select Account to add new transaction detail"; ddlAcctNum.Focus(); return; } else if (ddlTransType.Items.Count > 1 && ddlTransType.SelectedIndex == 0) { lblErrorMsg.Text = "Select a Transaction type"; ddlTransType.Focus(); return; } else if (txtAmt.Text.Trim() == "") { lblErrorMsg.Text = "Select a valid transaction amount"; txtAmt.Focus(); return; } else if (txtAmt.Text.Trim() != "") { int n; bool isNumeric = int.TryParse(txtAmt.Text.Trim(), out n); if (!isNumeric || Convert.ToDecimal(txtAmt.Text) <= 0) { lblErrorMsg.Text = "Select a valid transaction amount"; txtAmt.Focus(); return; } } decimal currentTranAmount = 0; decimal currentTranFudAmount = 0; decimal currentBalAmount = 0; currentTranAmount = Convert.ToDecimal(hfTransAmt.Value); currentTranFudAmount = Convert.ToDecimal(txtAmt.Text); currentBalAmount = Convert.ToDecimal(hfBalAmt.Value); hfTransId.Value = GetTransId().ToString(); if (hfTransId.Value != null) { int transId = Convert.ToInt32(hfTransId.Value); if (currentBalAmount == 0 && gvBCommit.Rows.Count > 0) { lblErrorMsg.Text = "This transaction details are all set. No more funds allowed to add for the transaction."; ClearTransactionDetailForm(); CommonHelper.DisableButton(btnCommitmentSubmit); return; } else if (currentTranFudAmount > currentBalAmount) { //currentTranFudAmount = currentBalAmount; //lblErrorMsg.Text = "Amount auto adjusted to available fund amount"; lblErrorMsg.Text = "Amount entered is more than the available balance amount. Please enter available funds."; return; } if (FinancialTransactions.IsDuplicateFundDetailPerTransaction(transId, Convert.ToInt32(ddlAcctNum.SelectedValue.ToString()), Convert.ToInt32(ddlTransType.SelectedValue.ToString()))) { lblErrorMsg.Text = "Same fund and same transaction type is already submitted for this transaction. Please select different selection"; return; } FinancialTransactions.AddProjectFundDetails(transId, Convert.ToInt32(ddlAcctNum.SelectedValue.ToString()), Convert.ToInt32(ddlTransType.SelectedValue.ToString()), currentTranFudAmount); BindFundDetails(transId); ClearTransactionDetailForm(); } } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
protected void Page_Load(object sender, EventArgs e) { this.PageAccessRequired = new Access(this.CurrentOrganization, AccessAspect.Bookkeeping, AccessType.Write); this.PageTitle = "Close Ledgers"; this.PageIcon = "iconshock-calculator-lock"; // Check if on a closable year if (this.CurrentOrganization.Parameters.EconomyEnabled == false || this.CurrentOrganization.Parameters.FiscalBooksClosedUntilYear == DateTime.Today.Year - 1) { this.PanelCannotClose.Visible = true; this.PanelSuccess.Visible = false; this.LabelCannotCloseLedgersReason.Text = "Ledgers are already closed as far as possible. [LOC]"; return; // a return out of Page_Load is kind of unusual, see it as a "break" or "abort" } // Check if all transactions are balanced, so we can close FinancialTransactions unbalancedTransactions = FinancialTransactions.GetUnbalanced(this.CurrentOrganization); // TODO: this fn should move to Organization int closingYear = this.CurrentOrganization.Parameters.FiscalBooksClosedUntilYear + 1; bool hasOpenTxForClosingYear = false; foreach (FinancialTransaction unbalancedTransaction in unbalancedTransactions) { if (unbalancedTransaction.DateTime.Year <= closingYear) { hasOpenTxForClosingYear = true; } } if (hasOpenTxForClosingYear) { this.PanelCannotClose.Visible = true; this.PanelSuccess.Visible = false; return; // a return out of Page_Load is kind of unusual, see it as a "break" or "abort" } // Start actually closing the ledgers // First, roll over virtual balances. //if (false) // if this.CurrentOrganization.Parameters.VirtualBankingEnabled //{ // FinancialAccount rootAccount = FinancialAccount.FromIdentity(29); // HACK: Hardcoded account; should be _organization.FinancialAccount.CostsVirtualBankingRoot // FinancialAccount tempAccount = FinancialAccount.FromIdentity(98); // HACK: Hardcoded account; should be _organization.FinancialAccount.AssetsVirtualRollover // FinancialAccounts localAccounts = rootAccount.GetTree(); // foreach (FinancialAccount account in localAccounts) // { // Int64 currentBalanceCents = account.GetDeltaCents(new DateTime(closingYear, 1, 1), new DateTime(closingYear+1, 1, 1)); // Int64 budgetCents = -account.GetBudgetCents(closingYear); // Int64 carryOverCents = budgetCents - currentBalanceCents; // if (carryOverCents != 0) // { // FinancialTransaction transactionOldYear = FinancialTransaction.Create(1, // new DateTime(closingYear, 12, // 31, 23, 50, // 00), // "Budgetrest " + account.Name); // // HACK: Localize rollover label // transactionOldYear.AddRow(account, carryOverCents, null); // transactionOldYear.AddRow(tempAccount, -carryOverCents, null); // FinancialTransaction transactionNewYear = FinancialTransaction.Create(1, // new DateTime(closingYear + 1, // 1, 1, 0, 10, 0), // "Budgetrest " + // closingYear.ToString() + " " + // account.Name); // transactionNewYear.AddRow(account, -carryOverCents, null); // transactionNewYear.AddRow(tempAccount, carryOverCents, null); // } // } //} // Then, actually close the ledgers. FinancialAccounts accounts = FinancialAccounts.ForOrganization(this.CurrentOrganization); Int64 balanceDeltaCents = 0; Int64 resultsDeltaCents = 0; foreach (FinancialAccount account in accounts) { Int64 accountBalanceCents; if (account.AccountType == FinancialAccountType.Asset || account.AccountType == FinancialAccountType.Debt) { accountBalanceCents = account.GetDeltaCents(new DateTime(2006, 1, 1), new DateTime(closingYear + 1, 1, 1)); balanceDeltaCents += accountBalanceCents; } else { accountBalanceCents = account.GetDeltaCents(new DateTime(closingYear, 1, 1), new DateTime(closingYear + 1, 1, 1)); resultsDeltaCents += accountBalanceCents; } } if (balanceDeltaCents == -resultsDeltaCents && closingYear < DateTime.Today.Year) { FinancialTransaction resultTransaction = FinancialTransaction.Create(this.CurrentOrganization.Identity, new DateTime(closingYear, 12, 31, 23, 59, 00), "Årets resultat " + closingYear.ToString()); // TODO: Localize string resultTransaction.AddRow(this.CurrentOrganization.FinancialAccounts.CostsYearlyResult, -resultsDeltaCents, null); resultTransaction.AddRow(this.CurrentOrganization.FinancialAccounts.DebtsEquity, -balanceDeltaCents, null); // Ledgers are now at zero-sum for the year's result accounts and from the start up until end-of-closing-year for the balance accounts. Organization.PPSE.Parameters.FiscalBooksClosedUntilYear = closingYear; } else { Console.WriteLine("NOT creating transaction."); } }
public void save(FinancialTransaction ft) { FinancialTransactions.Add(ft); SaveChanges(); }
protected void btnTransactionSubmit_Click(object sender, EventArgs e) { try { if (txtProjNum.Text == "") { lblErrorMsg.Text = "Select Project to add new transaction"; txtProjNum.Focus(); return; } else if (txtTotAmt.Text.Trim() == "") { lblErrorMsg.Text = "Select a valid transaction amount"; txtTotAmt.Focus(); return; } decimal n; bool isNumeric = decimal.TryParse(txtTotAmt.Text.Trim(), out n); if (!isNumeric) { lblErrorMsg.Text = "Must enter numbers in Total Amount"; return; } if (Convert.ToDecimal(txtTotAmt.Text.Trim()) <= 0) { lblErrorMsg.Text = "Select a valid transaction amount"; return; } //DataTable dtCommitFund = FinancialTransactions.GetCommittedFundPerProject(txtProjNum.Text); //if (dtCommitFund != null) // if (dtCommitFund.Rows.Count > 0) // if (Convert.ToDecimal(dtCommitFund.Rows[0]["availFunds"].ToString()) < Convert.ToDecimal(txtTotAmt.Text.Trim())) // { // lblErrorMsg.Text = "Cash Refund amount can not be more than available funds : " + CommonHelper.myDollarFormat(dtCommitFund.Rows[0]["availFunds"].ToString()) + " for the selected project"; // return; // } if (txtTotAmt.Text.Trim() != "") { bool isDecimal = decimal.TryParse(txtTotAmt.Text.Trim(), out n); if (!isDecimal || Convert.ToDecimal(txtTotAmt.Text) <= 0) { lblErrorMsg.Text = "Select a valid cash refund amount"; txtTotAmt.Focus(); return; } bool availFunds = decimal.TryParse(lblAvailFund.Text.Trim(), out n); if (!availFunds || Convert.ToDecimal(txtTotAmt.Text) > Convert.ToDecimal(lblAvailFund.Text)) { if (!availFunds) { lblErrorMsg.Text = "Cash refund amount can't be more than available funds (" + CommonHelper.myDollarFormat(0) + ") for the selected project"; } else { lblErrorMsg.Text = "Cash refund amount can't be more than available funds (" + CommonHelper.myDollarFormat(lblAvailFund.Text) + ") for the selected project"; } txtTotAmt.Focus(); return; } } lblErrorMsg.Text = ""; decimal TransAmount = Convert.ToDecimal(txtTotAmt.Text); this.hfTransAmt.Value = TransAmount.ToString(); this.hfBalAmt.Value = TransAmount.ToString(); gvBCommit.DataSource = null; gvBCommit.DataBind(); pnlTranDetails.Visible = true; ClearTransactionDetailForm(); int?granteeId = null; if (hfGrantee.Value != "") { granteeId = Convert.ToInt32(hfGrantee.Value); } DataTable dtTrans = FinancialTransactions.AddBoardFinancialTransaction(Convert.ToInt32(hfProjId.Value), Convert.ToDateTime(txtTransDate.Text), TransAmount, granteeId, "Cash Refund", TRANS_PENDING_STATUS); hfTransId.Value = dtTrans.Rows[0]["transid"].ToString(); BindTransGrid(GetTransId()); txtTransDate.Text = DateTime.Now.ToShortDateString(); txtTotAmt.Text = ""; CommonHelper.EnableButton(btnCashRefundSubmit); CommonHelper.DisableButton(btnTransactionSubmit); } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
private void getDetails(DataTable dt) { try { lblAvailFund.Text = ""; lblAvailVisibleFund.Text = ""; if (dt.Rows.Count != 0) { hfProjId.Value = dt.Rows[0][0].ToString(); DataRow dr = ProjectCheckRequestData.GetAvailableFundsByProject(int.Parse(hfProjId.Value)); if (dr != null) { if (Convert.ToDecimal(dr["availFund"].ToString()) > 0) { lblAvailFund.Text = Convert.ToDecimal(dr["availFund"].ToString()).ToString("#.##"); lblAvailVisibleFund.Text = CommonHelper.myDollarFormat(Convert.ToDecimal(dr["availFund"].ToString())); //.ToString("#.##"); } else { lblAvailFund.Text = "0.00"; lblAvailVisibleFund.Text = "0.00"; } } pnlTranDetails.Visible = false; lblErrorMsg.Text = ""; gvPTrans.DataSource = null; gvPTrans.DataBind(); ClearTransactionDetailForm(); DataTable dtProjects = FinancialTransactions.GetBoardCommitmentsByProject(Convert.ToInt32(hfProjId.Value)); lblProjName.Text = dtProjects.Rows[0]["Description"].ToString(); dt = new DataTable(); dt = FinancialTransactions.GetGranteeByProject(Convert.ToInt32(hfProjId.Value)); if (dt.Rows.Count > 0) { lblGrantee.Text = dt.Rows[0]["Applicantname"].ToString(); hfGrantee.Value = dt.Rows[0]["applicantid"].ToString(); } else { lblGrantee.Text = ""; hfGrantee.Value = ""; } txtTransDate.Text = DateTime.Now.ToShortDateString(); txtTotAmt.Text = ""; BindFundAccounts(); ifProjectNotes.Src = "ProjectNotes.aspx?ProjectId=" + hfProjId.Value; if (rdBtnSelection.SelectedIndex == 1) { DataTable dtTrans = FinancialTransactions.GetFinancialTransByProjId(Convert.ToInt32(hfProjId.Value), ActiveOnly, BOARD_REFUND); gvPTrans.DataSource = dtTrans; gvPTrans.DataBind(); CommonHelper.DisableButton(btnTransactionSubmit); } else if (rdBtnSelection.SelectedIndex == 0) { CommonHelper.EnableButton(btnTransactionSubmit); } } else { lblProjName.Text = ""; } } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
protected void Page_Load(object sender, EventArgs e) { FinancialAccount bankAccount = FinancialAccount.FromIdentity(29); Organization euroPirates = Organization.FromIdentity(7); FinancialTransactions unbalancedTransactions = FinancialTransactions.GetUnbalanced(euroPirates); // assume all in bank account foreach (FinancialTransaction transaction in unbalancedTransactions) { if (transaction.Description[0] == 'H' && Char.IsDigit(transaction.Description[1]) && transaction.Rows.BalanceCentsDelta > 0) { // outbound intl invoice. Add an untracked intl invoice 10 days prior, map it to this OutboundInvoice newInvoice = OutboundInvoice.Create(euroPirates, Person.FromIdentity(1), transaction.DateTime, euroPirates.FinancialAccounts.IncomeSales, "Untracked", "*****@*****.**", string.Empty, euroPirates.Currency, false, string.Empty); newInvoice.AddItem("Untracked item", transaction.Rows.BalanceCentsDelta); // Doesn't close // Add transaction // Create the financial transaction with rows FinancialTransaction invoiceTransaction = FinancialTransaction.Create(euroPirates.Identity, transaction.DateTime.AddDays(-10), "Outbound Invoice #" + newInvoice.Identity); invoiceTransaction.AddRow(euroPirates.FinancialAccounts.AssetsOutboundInvoices, newInvoice.AmountCents, null); invoiceTransaction.AddRow(euroPirates.FinancialAccounts.IncomeSales, -newInvoice.AmountCents, null); invoiceTransaction.Dependency = newInvoice; transaction.AddRow(euroPirates.FinancialAccounts.AssetsOutboundInvoices, -newInvoice.AmountCents, null); Payment payment = Payment.CreateSingle(euroPirates, transaction.DateTime, euroPirates.Currency, newInvoice.AmountCents, newInvoice, null); transaction.Dependency = payment.Group; payment.Group.Open = false; } if ((transaction.Description == "Kostnad" || transaction.Description == "Bank charges") && transaction.Rows.BalanceCentsDelta < 0 && transaction.Rows.BalanceCentsDelta > -125000) { // Bank fee. transaction.AddRow(euroPirates.FinancialAccounts.CostsBankFees, -transaction.Rows.BalanceCentsDelta, null); } if (transaction.Description.StartsWith("Paypal ")) { // Bank fee. transaction.AddRow(euroPirates.FinancialAccounts.CostsBankFees, -transaction.Rows.BalanceCentsDelta, null); } } Payouts.AutomatchAgainstUnbalancedTransactions(euroPirates); }
protected void gvGranInfo_RowDataBound(object sender, GridViewRowEventArgs e) { if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit) { CommonHelper.GridViewSetFocus(e.Row); //Checking whether the Row is Data Row if (e.Row.RowType == DataControlRowType.DataRow) { hfGIUpdateMode.Value = "true"; Label lblGInfo = e.Row.FindControl("lblGIId") as Label; hfGInfoId.Value = lblGInfo.Text; dtable = new DataTable(); dtable = FinancialTransactions.GetGrantInfoDetailsByGrantInfoId(Convert.ToInt32(lblGInfo.Text)); DataRow dr = dtable.Rows[0]; txtGrantName.Text = dr["GrantName"].ToString(); txtVHCBGrantName.Text = dr["VHCBName"].ToString(); txtAwardNum.Text = dr["AwardNum"].ToString(); txtAwdAmt.Text = string.Format("{0:C2}", Convert.ToDecimal(dr["AwardAmt"].ToString())); txtBeginDate.Text = dr["BeginDate"].ToString(); txtEndDate.Text = dr["EndDate"].ToString(); txtCGDANum.Text = dr["cfda"].ToString(); rdbtnSignedGrant.SelectedIndex = dr["SignAgree"].ToString() == "0" ? 0 : 1; rdBtnFedFunds.SelectedIndex = dr["Fedfunds"].ToString() == "0" ? 0 : 1; rdBtnMatch.SelectedIndex = dr["match"].ToString() == "0" ? 0 : 1; rdBtnFundsRec.SelectedIndex = dr["fundsrec"].ToString() == "0" ? 0 : 1; rdBtnAdmin.SelectedIndex = dr["admin"].ToString() == "0" ? 0 : 1; string itemToCompare = string.Empty; foreach (ListItem item in ddlStaff.Items) { itemToCompare = item.Value.ToString(); if (dr["staff"].ToString().ToLower() == itemToCompare) { ddlStaff.ClearSelection(); item.Selected = true; } } itemToCompare = string.Empty; foreach (ListItem item in ddlContact.Items) { itemToCompare = item.Value.ToString(); if (dr["ContactID"].ToString().ToLower() == itemToCompare) { ddlContact.ClearSelection(); item.Selected = true; } } itemToCompare = string.Empty; foreach (ListItem item in ddlGrantor.Items) { itemToCompare = item.Value.ToString(); if (dr["LkGrantor"].ToString().ToLower() == itemToCompare) { ddlGrantor.ClearSelection(); item.Selected = true; } } itemToCompare = string.Empty; foreach (ListItem item in ddlGrantSource.Items) { itemToCompare = item.Value.ToString(); if (dr["LkGrantSource"].ToString().ToLower() == itemToCompare) { ddlGrantSource.ClearSelection(); item.Selected = true; } } } } //foreach (GridViewRow row in gvGranInfo.Rows) //{ // if (ViewState["SelectedGrantInfoId"] != null && ViewState["SelectedGrantInfoId"].ToString() != "") // if (((Label)row.FindControl("lblGIId")).Text == ViewState["SelectedGrantInfoId"].ToString()) // { // ((RadioButton)row.FindControl("rdBtnSelectGrantInfo")).Checked = true; // } //} }
protected void BindLookups() { try { dtable = new DataTable(); dtable = FundTypeData.GetFundType("GetFundTypeData"); ddlFundType.DataSource = dtable; ddlFundType.DataValueField = "typeid"; ddlFundType.DataTextField = "description"; ddlFundType.DataBind(); ddlFundType.Items.Insert(0, new ListItem("Select", "NA")); dtable = new DataTable(); dtable = FinancialTransactions.GetLookupDetailsByName("LkAcctMethod"); ddlAcctMethod.DataSource = dtable; ddlAcctMethod.DataValueField = "typeid"; ddlAcctMethod.DataTextField = "description"; ddlAcctMethod.DataBind(); ddlAcctMethod.Items.Insert(0, new ListItem("Select", "NA")); dtable = new DataTable(); dtable = FinancialTransactions.GetLookupDetailsByName("LkGrantor"); ddlGrantor.DataSource = dtable; ddlGrantor.DataValueField = "typeid"; ddlGrantor.DataTextField = "description"; ddlGrantor.DataBind(); ddlGrantor.Items.Insert(0, new ListItem("Select", "NA")); dtable = new DataTable(); dtable = FinancialTransactions.GetLookupDetailsByName("LkYear"); ddlFiscalYr.DataSource = dtable; ddlFiscalYr.DataValueField = "typeid"; ddlFiscalYr.DataTextField = "description"; ddlFiscalYr.DataBind(); ddlFiscalYr.Items.Insert(0, new ListItem("Select", "NA")); dtable = new DataTable(); dtable = FinancialTransactions.GetLookupDetailsByName("LKGrantSource"); ddlGrantSource.DataSource = dtable; ddlGrantSource.DataValueField = "typeid"; ddlGrantSource.DataTextField = "description"; ddlGrantSource.DataBind(); ddlGrantSource.Items.Insert(0, new ListItem("Select", "NA")); dtable = new DataTable(); dtable = FinancialTransactions.GetDataTableByProcName("GetStaffUsers"); ddlStaff.DataSource = dtable; ddlStaff.DataValueField = "userid"; ddlStaff.DataTextField = "name"; ddlStaff.DataBind(); ddlStaff.Items.Insert(0, new ListItem("Select", "NA")); dtable = new DataTable(); dtable = FinancialTransactions.GetDataTableByProcName("GetContactUsers"); ddlContact.DataSource = dtable; ddlContact.DataValueField = "contactid"; ddlContact.DataTextField = "name"; ddlContact.DataBind(); ddlContact.Items.Insert(0, new ListItem("Select", "NA")); } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
private void BindAwardSummary(int projectid) { try { lblErrorMsg.Text = ""; DataTable dtAwdStatus = null; DataTable dtTransDetail = null; dtAwdStatus = FinancialTransactions.GetFinancialFundDetailsByProjectId(projectid, isReallocation).Tables[0]; dtTransDetail = FinancialTransactions.GetFinancialFundDetailsByProjectId(projectid, isReallocation).Tables[1]; gvCurrentAwdStatus.DataSource = dtAwdStatus; gvCurrentAwdStatus.DataBind(); gvTransDetail.DataSource = dtTransDetail; gvTransDetail.DataBind(); decimal totCommitAmt = 0; decimal totPendAmt = 0; decimal totExpendAmt = 0; decimal totFinalExpendAmt = 0; decimal totBalanceAmt = 0; if (dtAwdStatus.Rows.Count > 0) { Label lblCommit = (Label)gvCurrentAwdStatus.FooterRow.FindControl("lblCommit"); Label lblPending = (Label)gvCurrentAwdStatus.FooterRow.FindControl("lblPending"); Label lblExpend = (Label)gvCurrentAwdStatus.FooterRow.FindControl("lblExpend"); Label lblFinalExpend = (Label)gvCurrentAwdStatus.FooterRow.FindControl("lblFinalExpend"); Label lblBalance = (Label)gvCurrentAwdStatus.FooterRow.FindControl("lblBalance"); if (dtAwdStatus.Rows.Count > 0) { for (int i = 0; i < dtAwdStatus.Rows.Count; i++) { //09/29/2016 - modified the totals of commitment amount to !=0 from >0 if (Convert.ToDecimal(dtAwdStatus.Rows[i]["commitmentamount"].ToString()) != 0) { totCommitAmt += Convert.ToDecimal(dtAwdStatus.Rows[i]["commitmentamount"].ToString()); } if (Convert.ToDecimal(dtAwdStatus.Rows[i]["expendedamount"].ToString()) != 0) { totExpendAmt += Convert.ToDecimal(dtAwdStatus.Rows[i]["expendedamount"].ToString()); } if (Convert.ToDecimal(dtAwdStatus.Rows[i]["finaldisbursedamount"].ToString()) != 0) { totFinalExpendAmt += Convert.ToDecimal(dtAwdStatus.Rows[i]["finaldisbursedamount"].ToString()); } if (Convert.ToDecimal(dtAwdStatus.Rows[i]["pendingamount"].ToString()) != 0) { totPendAmt += Convert.ToDecimal(dtAwdStatus.Rows[i]["pendingamount"].ToString()); } if (Convert.ToDecimal(dtAwdStatus.Rows[i]["balance"].ToString()) != 0) { totBalanceAmt += Convert.ToDecimal(dtAwdStatus.Rows[i]["balance"].ToString()); } } } lblCommit.Text = CommonHelper.myDollarFormat(totCommitAmt); lblPending.Text = CommonHelper.myDollarFormat(totPendAmt); lblExpend.Text = CommonHelper.myDollarFormat(totExpendAmt); lblBalance.Text = CommonHelper.myDollarFormat(totBalanceAmt); lblFinalExpend.Text = CommonHelper.myDollarFormat(totFinalExpendAmt); } } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
private void BindGvReallocate(int fromProjId) { try { DataTable dtFundDet = new DataTable(); // dtFundDet = FinancialTransactions.GetReallocationDetailsTransId(fromProjId); if (rdBtnSelection.SelectedIndex > 0) { dtFundDet = FinancialTransactions.GetReallocationDetailsTransId(fromProjId); } else { dtFundDet = FinancialTransactions.GetReallocationDetailsByGuid(fromProjId, hfReallocateGuid.Value); } gvReallocate.DataSource = dtFundDet; gvReallocate.DataBind(); decimal totAmt = 0; hfBalAmt.Value = ""; if (dtFundDet.Rows.Count > 0) { Label lblTotAmt = (Label)gvReallocate.FooterRow.FindControl("lblFooterAmount"); Label lblBalAmt = (Label)gvReallocate.FooterRow.FindControl("lblFooterBalance"); if (dtFundDet.Rows.Count > 0) { for (int i = 0; i < dtFundDet.Rows.Count; i++) { if (Convert.ToDecimal(dtFundDet.Rows[i]["Amount"].ToString()) > 0) { totAmt += Convert.ToDecimal(dtFundDet.Rows[i]["Amount"].ToString()); } } } lblTotAmt.Text = CommonHelper.myDollarFormat(totAmt); if (txtRfromAmt.Text != "") { lblBalAmt.Text = CommonHelper.myDollarFormat(Convert.ToDecimal(txtRfromAmt.Text) - totAmt); hfBalAmt.Value = Convert.ToString(Convert.ToDecimal(txtRfromAmt.Text) - totAmt); } if (lblBalAmt.Text != "$0.00") { lblRErrorMsg.Text = "The transaction balance amount must be zero prior to leaving this page"; DisableReallocationFromPanel(); } if (lblBalAmt.Text == "$0.00") { hfReallocateGuid.Value = ""; EnableReallocationFromPanel(); } } } catch (Exception ex) { lblRErrorMsg.Text = ex.Message; throw; } }
protected void btnGrantSubmit_Click(object sender, EventArgs e) { try { lblErrorMsg.Text = ""; int? nullable = null; DateTime?nullableDateTime = null; if (ViewState["SelectedFundId"] != null && ViewState["SelectedFundId"].ToString() != "") { if (txtBeginDate.Text != "") { if (txtEndDate.Text != "") { if (Convert.ToDateTime(txtBeginDate.Text) > Convert.ToDateTime(txtEndDate.Text)) { lblErrorMsg.Text = "Grant end date can't be less than begin date."; txtEndDate.Focus(); return; } } } if (txtVHCBGrantName.Text == "") { lblErrorMsg.Text = "Enter VHCB Name to add the Grant Info details for the fund "; txtVHCBGrantName.Focus(); return; } //if (ddlGrantSource.SelectedIndex == 0 || ddlContact.SelectedIndex==0 || ddlStaff.SelectedIndex==0) //{ // lblErrorMsg.Text = "Source of Grant, Contact and Staff were required to add Grant information. "; // return; //} if (ddlGrantor.SelectedIndex != 0) { if (hfGIUpdateMode.Value == "false") { FinancialTransactions.AddGrantInfo(Convert.ToInt32(ViewState["SelectedFundId"]), txtGrantName.Text, txtVHCBGrantName.Text, Convert.ToInt32(ddlGrantor.SelectedValue.ToString()), ddlGrantSource.SelectedIndex != 0 ? Convert.ToInt32(ddlGrantSource.SelectedValue.ToString()) : nullable, txtAwardNum.Text, txtAwdAmt.Text == "" ? 0 : Convert.ToDecimal(txtAwdAmt.Text), txtBeginDate.Text == "" ? nullableDateTime : Convert.ToDateTime(txtBeginDate.Text), txtEndDate.Text == "" ? nullableDateTime : Convert.ToDateTime(txtEndDate.Text), ddlStaff.SelectedIndex != 0 ? Convert.ToInt32(ddlStaff.SelectedValue.ToString()) : nullable, ddlContact.SelectedIndex != 0 ? Convert.ToInt32(ddlContact.SelectedValue.ToString()) : nullable, txtCGDANum.Text, rdbtnSignedGrant.SelectedIndex == 0 ? true : false, rdBtnFedFunds.SelectedIndex == 0 ? true : false, rdBtnMatch.SelectedIndex == 0 ? true : false, rdBtnFundsRec.SelectedIndex == 0 ? true : false, rdBtnAdmin.SelectedIndex == 0 ? true : false ); } else { FinancialTransactions.UpdateGrantInfo(Convert.ToInt32(hfGInfoId.Value), txtGrantName.Text, txtVHCBGrantName.Text, Convert.ToInt32(ddlGrantor.SelectedValue.ToString()), ddlGrantSource.SelectedIndex != 0 ? Convert.ToInt32(ddlGrantSource.SelectedValue.ToString()) : nullable, txtAwardNum.Text, txtAwdAmt.Text == "" ? 0 : decimal.Parse(txtAwdAmt.Text, NumberStyles.Currency),// Convert.ToDecimal(txtAwdAmt.Text), txtBeginDate.Text == "" ? nullableDateTime : Convert.ToDateTime(txtBeginDate.Text), txtEndDate.Text == "" ? nullableDateTime : Convert.ToDateTime(txtEndDate.Text), ddlStaff.SelectedIndex != 0 ? Convert.ToInt32(ddlStaff.SelectedValue.ToString()) : nullable, ddlContact.SelectedIndex != 0 ? Convert.ToInt32(ddlContact.SelectedValue.ToString()) : nullable, txtCGDANum.Text, rdbtnSignedGrant.SelectedIndex == 0 ? true : false, rdBtnFedFunds.SelectedIndex == 0 ? true : false, rdBtnMatch.SelectedIndex == 0 ? true : false, rdBtnFundsRec.SelectedIndex == 0 ? true : false, rdBtnAdmin.SelectedIndex == 0 ? true : false ); hfGIUpdateMode.Value = "false"; gvGranInfo.EditIndex = -1; } ClearGrantInfo(); } else { lblErrorMsg.Text = "Select Grantor to add Grant Information."; } } else { lblErrorMsg.Text = "Select Fund to add associated Grant information."; } BindFundGrantInfo(); } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
protected void gvBCommit_RowUpdating(object sender, GridViewUpdateEventArgs e) { try { int rowIndex = e.RowIndex; if (((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text.Trim() != "") { decimal n; bool isNumeric = decimal.TryParse(((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text.Trim(), out n); if (!isNumeric || Convert.ToDecimal(((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text.Trim()) <= 0) { lblErrorMsg.Text = "Select a valid transaction amount"; ((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Focus(); return; } } decimal amount = Convert.ToDecimal(((TextBox)gvBCommit.Rows[rowIndex].FindControl("txtAmount")).Text); int transType = Convert.ToInt32(((DropDownList)gvBCommit.Rows[rowIndex].FindControl("ddlTransType")).SelectedValue.ToString()); int detailId = Convert.ToInt32(((Label)gvBCommit.Rows[rowIndex].FindControl("lblDetId")).Text); decimal old_amount = -Convert.ToDecimal(FinancialTransactions.GetTransDetails(detailId).Rows[0]["Amount"].ToString()); decimal bal_amount = Convert.ToDecimal(hfBalAmt.Value); decimal allowed_amount = old_amount + bal_amount; if (amount == allowed_amount) { lblErrorMsg.Text = "Transaction is complete, more funds not allowed"; CommonHelper.DisableButton(btnDecommitmentSubmit); CommonHelper.EnableButton(btnTransactionSubmit); } else if (amount > allowed_amount) { amount = allowed_amount; lblErrorMsg.Text = "Amount auto adjusted to available fund amount"; CommonHelper.DisableButton(btnTransactionSubmit); CommonHelper.EnableButton(btnDecommitmentSubmit); } else if (amount < allowed_amount) { CommonHelper.DisableButton(btnTransactionSubmit); CommonHelper.EnableButton(btnDecommitmentSubmit); if (!btnDecommitmentSubmit.Enabled) { CommonHelper.EnableButton(btnDecommitmentSubmit); } } FinancialTransactions.UpdateTransDetails(detailId, transType, -amount); gvBCommit.EditIndex = -1; BindFundDetails(GetTransId()); } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
public HttpResponseMessage GetAccountTransactions([FromBody] FinancialTransactions fin) { return(Request.CreateResponse(HttpStatusCode.OK, fin.GridViewData())); }
protected void btnSubit_click(object sender, EventArgs e) { DateTime tranFromDate; DateTime tranToDate; #region Validation //if (ddlProjFilter.Items.Count > 1 && ddlProjFilter.SelectedIndex == 0) //{ // lblErrorMsg.Text = "Select Project"; // ddlProjFilter.Focus(); // return; //} // else if (ddlFinancialTrans.Items.Count > 1 && ddlFinancialTrans.SelectedIndex == 0) { lblErrorMsg.Text = "Select financial transaction"; ddlFinancialTrans.Focus(); return; } else if (txtTransDateFrom.Text.Trim() == "") { lblErrorMsg.Text = "Select Transaction From Date"; txtTransDateFrom.Focus(); return; } else if (txtTransDateTo.Text.Trim() == "") { lblErrorMsg.Text = "Select Transaction End Date"; txtTransDateTo.Focus(); return; } else { if (!DateTime.TryParse(txtTransDateFrom.Text.Trim(), out tranFromDate)) { lblErrorMsg.Text = "Select valid transaction From date"; txtTransDateFrom.Focus(); return; } if (!DateTime.TryParse(txtTransDateTo.Text.Trim(), out tranToDate)) { lblErrorMsg.Text = "Select valid transaction To date"; txtTransDateTo.Focus(); return; } if (tranFromDate > DateTime.Today) { lblErrorMsg.Text = "From Transaction date should be less than or equal to today"; txtTransDateFrom.Focus(); return; } if (tranToDate > DateTime.Today) { lblErrorMsg.Text = "Transaction End date should be less than or equal to today"; txtTransDateTo.Focus(); return; } if (tranFromDate > tranToDate) { lblErrorMsg.Text = "From Transaction date should be less than End date"; txtTransDateFrom.Focus(); return; } } #endregion ViewState["FromDate"] = tranFromDate; ViewState["EndDate"] = tranToDate; lblProjNameText.Visible = true; lblProjName.Text = ""; if (hfProjId.Value != "") { PopulateTransactions(Convert.ToInt32(hfProjId.Value), tranFromDate, tranToDate, Convert.ToInt32(ddlFinancialTrans.SelectedValue.ToString())); DataTable dtProjects = FinancialTransactions.GetBoardCommitmentsByProject(Convert.ToInt32(hfProjId.Value)); lblProjName.Text = dtProjects.Rows[0]["Description"].ToString(); } else { lblProjName.Text = "All"; PopulateTransactions(-1, tranFromDate, tranToDate, Convert.ToInt32(ddlFinancialTrans.SelectedValue.ToString())); } }
public HttpResponseMessage GetReport([FromBody] FinancialTransactions fin) { return(Request.CreateResponse(HttpStatusCode.OK, fin.GetGroupLedgerData())); }
protected void btnCashRefundSubmit_Click(object sender, EventArgs e) { try { btnNewTransaction.Visible = false; lblErrorMsg.Text = ""; if (ddlAcctNum.Items.Count > 1 && ddlAcctNum.SelectedIndex == 0) { lblErrorMsg.Text = "Select Account to add new transaction detail"; ddlAcctNum.Focus(); return; } else if (ddlTransType.Items.Count > 1 && ddlTransType.SelectedIndex == 0) { lblErrorMsg.Text = "Select a Transaction type"; ddlTransType.Focus(); return; } else if (txtAmt.Text.Trim() == "") { lblErrorMsg.Text = "Select a valid transaction amount"; txtAmt.Focus(); return; } else if (txtAmt.Text.Trim() != "") { decimal n; bool isNumeric = decimal.TryParse(txtAmt.Text.Trim(), out n); if (!isNumeric || Convert.ToDecimal(txtAmt.Text) <= 0) { lblErrorMsg.Text = "Select a valid transaction amount"; txtAmt.Focus(); return; } } DataTable dtAvailFunds = FinancialTransactions.GetAvailableFundsPerProjAcctFundtype(Convert.ToInt32(hfProjId.Value), ddlAcctNum.SelectedItem.Text, Convert.ToInt32(ddlTransType.SelectedValue.ToString())); if (dtAvailFunds != null) { if (dtAvailFunds.Rows.Count > 0) { if (Convert.ToDecimal(txtAmt.Text) > Convert.ToDecimal(dtAvailFunds.Rows[0]["availFunds"].ToString())) { lblErrorMsg.Text = "Detail amount can not be more than available funds : " + CommonHelper.myDollarFormat(dtAvailFunds.Rows[0]["availFunds"].ToString()) + " for the selected Fund"; return; } } } decimal currentTranAmount = 0; decimal currentTranFudAmount = 0; decimal currentBalAmount = 0; currentTranAmount = Convert.ToDecimal(hfTransAmt.Value); currentTranFudAmount = Convert.ToDecimal(txtAmt.Text); currentBalAmount = Convert.ToDecimal(hfBalAmt.Value); hfTransId.Value = GetTransId().ToString(); if (hfTransId.Value != null) { int transId = Convert.ToInt32(hfTransId.Value); if (currentBalAmount == 0 && gvBCommit.Rows.Count > 0) { lblErrorMsg.Text = "This transaction details are all set. No more funds allowed to add for the transaction."; ClearTransactionDetailForm(); CommonHelper.DisableButton(btnCashRefundSubmit); return; } else if (currentTranFudAmount > currentBalAmount) { //currentTranFudAmount = currentBalAmount; //lblErrorMsg.Text = "Amount auto adjusted to available fund amount"; lblErrorMsg.Text = "Amount entered is more than the available balance amount. Please enter available funds."; return; } if (FinancialTransactions.IsDuplicateFundDetailPerTransaction(transId, Convert.ToInt32(ddlAcctNum.SelectedValue.ToString()), Convert.ToInt32(ddlTransType.SelectedValue.ToString()))) { lblErrorMsg.Text = "Same fund and same transaction type is already submitted for this transaction. Please select different selection"; return; } if (ddlAcctNum.SelectedValue.ToString() == strLandUsePermit) { if (ddlUsePermit.Items.Count > 1 && ddlUsePermit.SelectedIndex == 0) { lblErrorMsg.Text = "Select Use Permit"; ddlUsePermit.Focus(); return; } FinancialTransactions.AddProjectFundDetails(transId, Convert.ToInt32(ddlAcctNum.SelectedValue.ToString()), Convert.ToInt32(ddlTransType.SelectedValue.ToString()), currentTranFudAmount, ddlUsePermit.SelectedItem.Text); } else { FinancialTransactions.AddProjectFundDetails(transId, Convert.ToInt32(ddlAcctNum.SelectedValue.ToString()), Convert.ToInt32(ddlTransType.SelectedValue.ToString()), currentTranFudAmount); } BindFundDetails(transId); ClearTransactionDetailForm(); } } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
public HttpResponseMessage GetLedgerReport([FromUri] string ChildHead, [FromUri] string MainHead, [FromUri] string FromDate, [FromUri] string ToDate, [FromUri] string CostCenter) { Entities.Finance.FinancialTransactions fin = new FinancialTransactions(); return(Request.CreateResponse(HttpStatusCode.OK, fin.BindGrid(null, ChildHead, MainHead, FromDate, ToDate, CostCenter))); }
public void delete(FinancialTransaction ft) { FinancialTransactions.Remove(ft); SaveChanges(); }
public HttpResponseMessage GetChequeDetails([FromBody] FinancialTransactions fin) { return(Request.CreateResponse(HttpStatusCode.OK, fin.GetChequeTransactions())); }
private static void Main(string[] args) { // Are we running yet? if (!SystemSettings.DatabaseInitialized) { // will restart the service every 15s until db initialized on OOBE // also, the read of DatabaseInitialized can and will fail if // we're not initalized enough to even have a database throw new InvalidOperationException(); } // Checking for schemata upgrade first of all, after seeing that db exists int startupDbVersion = Database.SwarmDb.DbVersion; DatabaseMaintenance.UpgradeSchemata(); testMode = false; SystemSettings.BackendHostname = Dns.GetHostName(); // Other one-time initializations FinancialTransactions.FixAllUnsequenced(); SupportFunctions.OperatingTopology = OperatingTopology.Backend; // Begin main loop UnixSignal[] killSignals = null; if (!Debugger.IsAttached) { killSignals = new UnixSignal[] { new UnixSignal(Signum.SIGINT), new UnixSignal(Signum.SIGTERM) }; } BotLog.Write(0, "MainCycle", string.Empty); BotLog.Write(0, "MainCycle", "-----------------------------------------------"); BotLog.Write(0, "MainCycle", string.Empty); if (args.Length > 0) { if (args[0].ToLower() == "test") { /* * BotLog.Write(0, "MainCycle", "Running self-tests"); * HeartBeater.Instance.Beat(heartbeatFile); // Otherwise Heartbeater.Beat() will fail in various places * * testMode = true; * Console.WriteLine("Testing All Maintenance Processes (except membership-changing ones)."); * PWLog.Write(PWLogItem.None, 0, PWLogAction.SystemTest, string.Empty, string.Empty); * * Console.WriteLine("\r\n10-second intervals:"); * OnEveryTenSeconds(); * Console.WriteLine("\r\nEvery minute:"); * OnEveryMinute(); * Console.WriteLine("\r\nEvery five minutes:"); * OnEveryFiveMinutes(); * Console.WriteLine("\r\nEvery hour:"); * OnEveryHour(); * Console.WriteLine("\r\nNoon:"); * OnNoon(); * Console.WriteLine("\r\nMidnight:"); * OnMidnight(); */ Console.WriteLine("Testing database access..."); Console.WriteLine(SwarmDb.GetDatabaseForReading().GetPerson(1).Name); Console.WriteLine(SwarmDb.GetDatabaseForReading().GetPerson(1).PasswordHash); Console.WriteLine("Creating OutboundComm..."); OutboundComm.CreateNotification(null, NotificationResource.System_Startup_Backend); Console.WriteLine("Transmitting..."); OutboundComms comms = OutboundComms.GetOpen(); Console.WriteLine("{0} open items in outbound comms.", comms.Count); foreach (OutboundComm comm in comms) { if (comm.TransmitterClass != "Swarmops.Utility.Communications.CommsTransmitterMail") { throw new NotImplementedException(); } ICommsTransmitter transmitter = new CommsTransmitterMail(); OutboundCommRecipients recipients = comm.Recipients; PayloadEnvelope envelope = PayloadEnvelope.FromXml(comm.PayloadXml); foreach (OutboundCommRecipient recipient in recipients) { transmitter.Transmit(envelope, recipient.Person); } } Console.Write("\r\nAll tests run. Waiting for mail queue to flush... "); while (!MailTransmitter.CanExit) { Thread.Sleep(50); } Console.WriteLine("done."); BotLog.Write(0, "MainCycle", "Exiting self-tests"); return; } if (args[0].ToLower() == "console") { Console.WriteLine("\r\nRunning Swarmops-Backend in CONSOLE mode.\r\n"); // ------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------- // ----------------------- INSERT ANY ONE-OFF ACTIONS HERE ------------------------- Console.Write("\r\nWaiting for mail queue to flush... "); while (!MailTransmitter.CanExit) { Thread.Sleep(50); } Console.WriteLine("done."); return; } if (args[0].ToLowerInvariant() == "pdfregen") { if (args.Length > 1) { int docId = Int32.Parse(args[1]); PdfProcessor.Rerasterize(Document.FromIdentity(docId)); } else { Console.WriteLine("Regenerating all bitmaps from PDF uploads."); PdfProcessor.RerasterizeAll(); Console.WriteLine("Done."); } return; } if (args[0].ToLower() == "rsm") { Console.WriteLine("Testing character encoding: räksmörgås RÄKSMÖRGÅS"); return; } } /* * MailMessage message = new MailMessage(); * message.From = new MailAddress(Strings.MailSenderAddress, Strings.MailSenderName); * message.To.Add (new MailAddress ("*****@*****.**", "Rick Falkvinge (Piratpartiet)")); * message.Subject = "Räksmörgåsarnas ékÖNÖMÏåvdëlnïng"; * message.Body = "Hejsan hoppsan Räksmörgåsar."; * message.BodyEncoding = Encoding.Default; * message.SubjectEncoding = Encoding.Default; * * SmtpClient smtpClient = new SmtpClient ("localhost"); * smtpClient.Credentials = null; // mono bug * smtpClient.Send (message);*/ Console.WriteLine(" * Swarmops Backend starting"); BotLog.Write(0, "MainCycle", "Backend STARTING"); // Disable certificate checking due to Mono not installing with a certificate repository - this is UTTERLY broken SupportFunctions.DisableSslCertificateChecks(); // MONO BUG/MISFEATURE: Mono has no root certificates, so can't verify cert // Tell sysop we're starting OutboundComm.CreateNotification(null, NotificationResource.System_Startup_Backend); // Check for existence of installation ID. If not, create one. Warning: has privacy implications when communicated. if (Persistence.Key["SwarmopsInstallationId"] == string.Empty) { Persistence.Key["SwarmopsInstallationId"] = Guid.NewGuid().ToString(); } // Check for existence of bitcoin hotwallet root BitcoinUtility.VerifyBitcoinHotWallet(); // Initialize backend socket server int backendSocketPort = SystemSettings.WebsocketPortBackend; _socketServer = new WebSocketServer(backendSocketPort); _socketServer.AddWebSocketService <BackendServices>("/Backend"); _socketServer.Start(); // Initialize socket client to Blockchain.Info (pending our own services) using ( _blockChainInfoSocket = new WebSocket("wss://ws.blockchain.info/inv?api_code=" + SystemSettings.BlockchainSwarmopsApiKey)) { // Begin maintenance loop DateTime cycleStartTime = DateTime.UtcNow; DateTime cycleEndTime; int lastSecond = cycleStartTime.Second; int lastMinute = cycleStartTime.Minute; int lastHour = cycleStartTime.Hour; bool exitFlag = false; _blockChainInfoSocket.OnOpen += new EventHandler(OnBlockchainOpen); _blockChainInfoSocket.OnError += new EventHandler <ErrorEventArgs>(OnBlockchainError); _blockChainInfoSocket.OnClose += new EventHandler <CloseEventArgs>(OnBlockchainClose); _blockChainInfoSocket.OnMessage += new EventHandler <MessageEventArgs>(OnBlockchainMessage); _blockChainInfoSocket.Connect(); while (!exitFlag) // exit is handled by signals handling at end of loop { BotLog.Write(0, "MainCycle", "Cycle Start"); cycleStartTime = DateTime.UtcNow; cycleEndTime = cycleStartTime.AddSeconds(10); try { OnEveryTenSeconds(); if (cycleStartTime.Second < lastSecond) { OnEveryMinute(); if (cycleStartTime.Minute % 5 == 0) { OnEveryFiveMinutes(); } } if (cycleStartTime.Minute < lastMinute) { OnEveryHour(); if (DateTime.Now.Hour == 10 && DateTime.Today.DayOfWeek == DayOfWeek.Tuesday) { OnTuesdayMorning(); } if (DateTime.Now.Hour == 7 && DateTime.Today.DayOfWeek == DayOfWeek.Monday) { OnMondayMorning(); } } if (cycleStartTime.Hour >= 12 && lastHour < 12) { OnNoon(); } if (cycleStartTime.Hour < lastHour) { OnMidnight(); } } catch (Exception e) { // Note each "OnEvery..." catches its own errors and sends Exception mails, // so that failure in one should not stop the others from running. This particular // code should never run. ExceptionMail.Send(new Exception("Failed in swarmops-backend main loop", e), true); } lastSecond = cycleStartTime.Second; lastMinute = cycleStartTime.Minute; lastHour = cycleStartTime.Hour; // Wait for a maximum of ten seconds (the difference between cycleStartTime and cycleEndTime) int iterationCount = 0; DateTime utcNow = DateTime.UtcNow; while (utcNow < cycleEndTime && !exitFlag) { int signalIndex = 250; // Handle important service orders (those that can't be lost in a random loss // of connection of a socket): BackendServiceOrders backendOrders = BackendServiceOrders.GetNextBatch(5); backendOrders.Execute(); // takes at most 250ms per BSO reqs // Block until a SIGINT or SIGTERM signal is generated, or 1/4 second has passed. // However, we can't do that in a development environment - it won't have the // Mono.Posix assembly, and won't understand UnixSignals. So people running this in // a dev environment will need to stop it manually. if (!Debugger.IsAttached) { signalIndex = UnixSignal.WaitAny(killSignals, 250); } else { TimeSpan timeLeft = (cycleEndTime - utcNow); BotLog.Write(0, "MainCycle Debug", string.Format(CultureInfo.InvariantCulture, "Waiting for {0:F2} more seconds for cycle end", timeLeft.TotalMilliseconds / 1000.0)); Thread.Sleep(250); } if (signalIndex < 250) { exitFlag = true; Console.WriteLine("Caught signal " + killSignals[signalIndex].Signum + ", exiting"); BotLog.Write(0, "MainCycle", "EXIT SIGNAL (" + killSignals[signalIndex].Signum + "), terminating backend"); } utcNow = DateTime.UtcNow; // Every second, send an internal heartbeat if (iterationCount++ % 4 == 0) { InternalHeartbeat(); } } } } Console.WriteLine(" * Swarmops Backend stopping"); BotLog.Write(0, "MainCycle", "BACKEND EXITING, sending backend-termination notices"); /* * if (HeartBeater.Instance.WasKilled) * { * // removed unconditional delete, cron job that restarts bot uses it to know that it is intentionally down. * ExceptionMail.Send(new Exception("HeartBeater triggered restart of Swarmops Backend. Will commence after 800 seconds."), false); * }*/ BotLog.Write(0, "MainCycle", "...done"); /* * while (!MailTransmitter.CanExit) * { * System.Threading.Thread.Sleep(50); * }*/ _socketServer.Stop(); Thread.Sleep(2000); }
public HttpResponseMessage BounceCheque([FromBody] FinancialTransactions fin) { return(Request.CreateResponse(HttpStatusCode.OK, fin.BounceCheque())); }
private void BindFundDetails(int transId) { try { if (cbActiveOnly.Checked) { ActiveOnly = 1; } else { ActiveOnly = 0; } DataTable dtFundDet = new DataTable(); dtFundDet = FinancialTransactions.GetCommitmentFundDetailsByProjectId(transId, BOARD_COMMITMENT, ActiveOnly); gvBCommit.DataSource = dtFundDet; gvBCommit.DataBind(); decimal tranAmount = 0; decimal totFundAmt = 0; decimal totBalAmt = 0; if (dtFundDet.Rows.Count > 0) { //tranAmount = Convert.ToDecimal(dtFundDet.Rows[0]["TransAmt"].ToString()); tranAmount = Convert.ToDecimal(this.hfTransAmt.Value); Label lblTotAmt = (Label)gvBCommit.FooterRow.FindControl("lblFooterAmount"); Label lblBalAmt = (Label)gvBCommit.FooterRow.FindControl("lblFooterBalance"); if (dtFundDet.Rows.Count > 0) { for (int i = 0; i < dtFundDet.Rows.Count; i++) { totFundAmt += Convert.ToDecimal(dtFundDet.Rows[i]["Amount"].ToString()); } } totBalAmt = tranAmount - totFundAmt; hfBalAmt.Value = totBalAmt.ToString(); lblTotAmt.Text = CommonHelper.myDollarFormat(totFundAmt); lblBalAmt.Text = CommonHelper.myDollarFormat(totBalAmt); gvBCommit.Columns[0].Visible = false; gvBCommit.FooterRow.Visible = true; lblTransDetHeader.Text = "Transaction Detail"; if (totBalAmt == 0) { CommonHelper.DisableButton(btnCommitmentSubmit); CommonHelper.EnableButton(btnTransactionSubmit); if (rdBtnSelection.SelectedIndex == 0) { ddlProjFilter.SelectedIndex = 0; if (ddlGrantee.Items.Count > 0) { ddlGrantee.SelectedIndex = 0; } lblProjName.Text = ""; } } else { CommonHelper.DisableButton(btnTransactionSubmit); CommonHelper.EnableButton(btnCommitmentSubmit); } if (lblBalAmt.Text != "$0.00") { lblErrorMsg.Text = "The transaction balance amount must be zero prior to leaving this page"; } } } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
public HttpResponseMessage GetVoucherData([FromBody] FinancialTransactions fin) { return(Request.CreateResponse(HttpStatusCode.OK, fin.GetTransactions())); }
protected void btnTransactionSubmit_Click(object sender, EventArgs e) { try { if (ddlProjFilter.Items.Count > 1 && ddlProjFilter.SelectedIndex == 0) { lblErrorMsg.Text = "Select Project to add new transaction"; ddlProjFilter.Focus(); return; } //else if (ddlGrantee.Items.Count > 1 && ddlGrantee.SelectedIndex == 0) //{ // lblErrorMsg.Text = "Select Grantee to add new transaction"; // ddlGrantee.Focus(); // return; //} else if (txtTotAmt.Text.Trim() == "") { lblErrorMsg.Text = "Select a valid transaction amount"; txtTotAmt.Focus(); return; } decimal n; bool isNumeric = decimal.TryParse(txtTotAmt.Text.Trim(), out n); if (!isNumeric) { lblErrorMsg.Text = "Must enter numbers in Total Amount"; return; } if (Convert.ToDecimal(txtTotAmt.Text.Trim()) <= 0) { lblErrorMsg.Text = "Select a valid transaction amount"; return; } lblErrorMsg.Text = ""; decimal TransAmount = Convert.ToDecimal(txtTotAmt.Text); this.hfTransAmt.Value = TransAmount.ToString(); this.hfBalAmt.Value = TransAmount.ToString(); //if (pnlTranDetails.Visible) // ClearTransactionDetailForm(); gvBCommit.DataSource = null; gvBCommit.DataBind(); pnlTranDetails.Visible = true; ClearTransactionDetailForm(); int?granteeId = null; if (ddlGrantee.SelectedIndex >= 0) { granteeId = Convert.ToInt32(ddlGrantee.SelectedValue.ToString()); } DataTable dtTrans = FinancialTransactions.AddBoardFinancialTransaction(Convert.ToInt32(ddlProjFilter.SelectedValue.ToString()), Convert.ToDateTime(txtTransDate.Text), TransAmount, granteeId, "Board Commitment", TRANS_PENDING_STATUS); hfTransId.Value = dtTrans.Rows[0]["transid"].ToString(); BindTransGrid(GetTransId()); txtTransDate.Text = DateTime.Now.ToShortDateString(); txtTotAmt.Text = ""; CommonHelper.EnableButton(btnCommitmentSubmit); CommonHelper.DisableButton(btnTransactionSubmit); } catch (Exception ex) { lblErrorMsg.Text = ex.Message; } }
public void SetUp() { transactions = new FinancialTransactions(); }
public bool MapTransaction(FinancialTransactions transactions) { int namespaceLength = 4; // typically, transactions are tagged to be unique per year, so the year is added to tag to make unique switch (Char.ToLowerInvariant(this.Tag[5])) { case 'm': namespaceLength = 6; // unique per year and month break; case 'd': namespaceLength = 8; // unique per year, month, day break; default: // do nothing -- assume year, namespace length 4 as declared on init break; } string lookfor = this.Tag.Substring(5 + namespaceLength).ToLowerInvariant().Trim(); int year = Int32.Parse(this.Tag.Substring(5, 4)); if (Char.IsDigit(this.Tag[0])) { lookfor = this.Tag.Substring(namespaceLength); // temp - remove after PPSE books closed for 2011 year = Int32.Parse(this.Tag.Substring(0, 4)); } foreach (FinancialTransaction transaction in transactions) { if (transaction.Description.Length >= this.Organization.IncomingPaymentTag.Length + lookfor.Length && transaction.Description.ToLowerInvariant().StartsWith(this.Organization.IncomingPaymentTag) && transaction.Description.Trim().ToLowerInvariant().EndsWith(lookfor)) { if (transaction.Rows.AmountCentsTotal == this.AmountCents) { if (transaction.DateTime.Year == year) { // TODO: Prep for matching month/date too, when those namespaces appear // match! transaction.AddRow(Organization.FinancialAccounts.AssetsOutboundInvoices, -AmountCents, null); transaction.Dependency = this; this.Open = false; return true; } } } } return false; }
protected void ddlFundName_SelectedIndexChanged(object sender, EventArgs e) { DataTable dtable = new DataTable(); if (ddlFundName.SelectedIndex != 0) { dtable = FinancialTransactions.GetFundDetailsByFundId(Convert.ToInt32(ddlFundName.SelectedValue.ToString())); lblFundName.Text = dtable.Rows[0]["name"].ToString(); ddlAcctNum.SelectedValue = ddlFundName.SelectedValue; //if (lblFundName.Text.ToLower().Contains("hopwa")) //{ // ddlTransType.DataSource = FinancialTransactions.GetDataTableByProcName("GetLKTransHopwa"); //} //else //{ // ddlTransType.DataSource = FinancialTransactions.GetDataTableByProcName("GetLKTransNonHopwa"); //} ddlTransType.DataSource = FinancialTransactions.GetAvailableTransTypesPerProjAcct(Convert.ToInt32(hfProjId.Value), ddlAcctNum.SelectedItem.Text); ddlTransType.DataValueField = "typeid"; ddlTransType.DataTextField = "fundtype"; ddlTransType.DataBind(); if (ddlTransType.Items.Count > 1) { ddlTransType.Items.Insert(0, new ListItem("Select", "NA")); } else { DataTable dtAvailFunds = FinancialTransactions.GetAvailableFundsPerProjAcctFundtype(Convert.ToInt32(hfProjId.Value), ddlAcctNum.SelectedItem.Text, Convert.ToInt32(ddlTransType.SelectedValue.ToString())); if (dtAvailFunds != null) { if (dtAvailFunds.Rows.Count > 0) { lblAvDetailFund.Text = CommonHelper.myDollarFormat(dtAvailFunds.Rows[0]["availFunds"].ToString()); } } } BindUsePermit(hfProjId.Value != "" ? Convert.ToInt32(hfProjId.Value) : 0); if (ddlFundName.SelectedValue.ToString() == strLandUsePermit) { lblUsePermit.Visible = true; ddlUsePermit.Visible = true; } else { lblUsePermit.Visible = false; ddlUsePermit.Visible = false; } } else { ddlTransType.Items.Clear(); ddlTransType.Items.Insert(0, new ListItem("Select", "NA")); lblFundName.Text = ""; txtAmt.Text = ""; //ClearDetailSelection(); } }