예제 #1
0
 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;
 }
예제 #2
0
        public BudgetCategory(string name, Money budget)
        {
            this.Name = name;
            this.Budget = budget.Clone();
            this.IsClosed = false;

            this.transactions = new FinancialTransactions();
        }
예제 #3
0
 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();
     }
 }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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;
            }
        }
예제 #6
0
    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.");
        }
    }
예제 #7
0
 public void save(FinancialTransaction ft)
 {
     FinancialTransactions.Add(ft);
     SaveChanges();
 }
예제 #8
0
        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;
            }
        }
예제 #9
0
        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;
            }
        }
예제 #10
0
    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);
    }
예제 #11
0
        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;
            //        }
            //}
        }
예제 #12
0
        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;
            }
        }
예제 #13
0
        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;
            }
        }
예제 #14
0
        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;
            }
        }
예제 #15
0
        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;
            }
        }
예제 #16
0
        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()));
 }
예제 #20
0
        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)));
 }
예제 #22
0
 public void delete(FinancialTransaction ft)
 {
     FinancialTransactions.Remove(ft);
     SaveChanges();
 }
 public HttpResponseMessage GetChequeDetails([FromBody] FinancialTransactions fin)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, fin.GetChequeTransactions()));
 }
예제 #24
0
        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()));
 }
예제 #26
0
        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;
            }
        }
예제 #27
0
 public HttpResponseMessage GetVoucherData([FromBody] FinancialTransactions fin)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, fin.GetTransactions()));
 }
예제 #28
0
        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();
 }
예제 #30
0
        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;
        }
예제 #31
0
        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();
            }
        }