Ejemplo n.º 1
0
        /// <summary>
        /// Loads financial balances by project id
        /// </summary>
        /// <param name="oHostSecurityToken">HostSecurityToken obtained when security provider of IWS is called</param>
        /// <param name="projectId">To load financial balances</param>
        /// <returns>Returns properties of financial details</returns>
        public FinancialBalancesReturnValue GetFinancialBalances(HostSecurityToken oHostSecurityToken, Guid projectId)
        {
            FinancialBalancesReturnValue returnValue = null;

            if (Functions.ValidateIWSToken(oHostSecurityToken))
            {
                oAccountService = new AccountsService();
                returnValue     = oAccountService.GetFinancialBalances(Functions.GetLogonIdFromToken(oHostSecurityToken), projectId);
            }
            else
            {
                returnValue         = new FinancialBalancesReturnValue();
                returnValue.Success = false;
                returnValue.Message = "Invalid Token";
            }
            return(returnValue);
        }
        /// <summary>
        /// Gets WIP transaction and last time by project id
        /// </summary>
        /// <param name="projectId">To load WIP transactions and last time.</param>
        /// <param name="returnValue">WIP transaction properties and last time property populated</param>
        /// <returns>Gets WIP transactions and last time by project id</returns>
        private FinancialBalancesReturnValue GetWIPAndTimeTransactionInfo(Guid projectId, string timeFilter, FinancialBalancesReturnValue returnValue)
        {
            try
            {
                DsTimeTransactions dsTimeTransactions = SrvTimeLookup.GetTimeTransactions(projectId, timeFilter, false);

                int timeElapsed = 0;
                decimal cost = decimal.Zero;
                decimal costBalance = decimal.Zero;
                decimal charge = decimal.Zero;
                decimal chargeBalance = decimal.Zero;

                DataView dvAllTimeTransactions = new DataView(dsTimeTransactions.uvw_TimeTransactions);
                if (dvAllTimeTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsTimeTransactions.uvw_TimeTransactions.Columns["TimeDate"]);
                    dvAllTimeTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView allTimeTransactionsRowView in dvAllTimeTransactions)
                    {
                        int timeId = Convert.ToInt32(allTimeTransactionsRowView.Row["TimeId"].ToString());

                        DateTime timeDate = (DateTime)allTimeTransactionsRowView.Row["TimeDate"];
                        string timeType = (string)allTimeTransactionsRowView.Row["TimeTypeDescription"].ToString();
                        string time = ConvertUnits((int)allTimeTransactionsRowView.Row["TimeElapsed"], ApplicationSettings.Instance.TimeUnits);
                        timeElapsed = timeElapsed + (int)allTimeTransactionsRowView.Row["TimeElapsed"];
                        int totalTimeElapsed = timeElapsed;
                        string feeEarnerReference = (string)allTimeTransactionsRowView.Row["feeRef"].ToString();
                        cost = (decimal)allTimeTransactionsRowView.Row["TimeCost"];
                        charge = (decimal)allTimeTransactionsRowView.Row["TimeCharge"];
                        costBalance = costBalance + cost;
                        chargeBalance = chargeBalance + charge;
                        cost = Decimal.Round(cost, 2);
                        charge = Decimal.Round(charge, 2);
                        chargeBalance = Decimal.Round(chargeBalance, 2);
                        costBalance = Decimal.Round(costBalance, 2);

                    }
                }
                if (timeFilter.Trim() == "All")
                {
                    returnValue.Time = ConvertUnits(timeElapsed, ApplicationSettings.Instance.TimeUnits);
                    returnValue.TimeCost = costBalance.ToString("F2");
                    returnValue.TimeChargeOut = chargeBalance.ToString("F2");
                }
                else
                {
                    returnValue.WIPChargeOut = chargeBalance.ToString("0.00");
                    returnValue.WIPCost = costBalance.ToString("0.00");
                    returnValue.WIPTime = ConvertUnits(timeElapsed, ApplicationSettings.Instance.TimeUnits);
                }
            }

            catch (Exception ex)
            {
                throw ex;
            }

            return returnValue;
        }
        /// <summary>
        /// Gets last financial date for financial balances by project id
        /// </summary>        
        /// <param name="projectId">To get last financial date by project id</param>
        /// <returns>Returns last financial date.</returns>
        private FinancialBalancesReturnValue GetLastFinancialDetails(Guid projectId)
        {
            FinancialBalancesReturnValue returnValue = new FinancialBalancesReturnValue();

            try
            {
                DateTime lastFinancialDate = DataConstants.BlankDate;
                DateTime lastTime = DataConstants.BlankDate;
                DateTime lastBill = DataConstants.BlankDate;

                // Movement Details
                DateTime postingDate = DataConstants.BlankDate;

                // Gets last financial date by project id from different datasets.
                // Sets last financial date from client ledger transactions.
                DsCledgerTransactions dsCledgerTransactions = SrvCledgerLookup.GetCledgerTransactions(projectId);
                DataView dvCledgerTransactions = new DataView(dsCledgerTransactions.uvw_CledgerTransactions);
                if (dvCledgerTransactions.Count != 0)
                {
                    foreach (DataRowView drvDLedgerTransaction in dvCledgerTransactions)
                    {
                        postingDate = (DateTime)drvDLedgerTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }
                    }
                }

                // Sets last financial date from deposit ledger transactions.
                DsDledgerTransactions dsDLedgerTransactions = SrvDledgerLookup.GetDledgerTransactions(projectId);
                DataView dvDLedgerTransactions = new DataView(dsDLedgerTransactions.uvw_DledgerTransactions);
                if (dvDLedgerTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsDLedgerTransactions.uvw_DledgerTransactions.Columns["PostingDetailsDate"]);
                    dvDLedgerTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvDLedgerTransaction in dvDLedgerTransactions)
                    {
                        postingDate = (DateTime)drvDLedgerTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }
                    }
                }

                // Sets last financial date from disbursements ledger transactions.
                DsDisbLedgerTransactions dsDisbLedgerTransactions = SrvDisbLedgerLookup.GetDisbursementsLedgerTransactions(projectId);
                DataView dvDisbLedgerTransactions = new DataView(dsDisbLedgerTransactions.uvw_DisbLedgerTransactions);
                if (dvDisbLedgerTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsDisbLedgerTransactions.uvw_DisbLedgerTransactions.Columns["PostingDetailsDate"]);
                    dvDLedgerTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvDisbLedgerTransaction in dvDisbLedgerTransactions)
                    {
                        postingDate = (DateTime)drvDisbLedgerTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }
                    }
                }

                // Sets last financial date from anticipated disbursements ledger transactions.
                DsAntiDisbLedgerTransactions dsAntiDisbLedgerTransactions = SrvDisbLedgerLookup.GetAntiDisbursementsLedgerTransactions(projectId);
                DataView dvAntiDisbLedgerTransactions = new DataView(dsAntiDisbLedgerTransactions.uvw_AntiDisbsTransactions);
                if (dvAntiDisbLedgerTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsAntiDisbLedgerTransactions.uvw_AntiDisbsTransactions.Columns["PostingDetailsDate"]);
                    dvAntiDisbLedgerTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvDisbLedgerTransaction in dvAntiDisbLedgerTransactions)
                    {
                        postingDate = (DateTime)drvDisbLedgerTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }
                    }
                }

                // Sets last financial date from anticipated bills ledger transactions.
                DsAntiBillTransactions dsAntiBillTransactions = SrvAntiBillLookup.GetAntiBillTransactions(projectId);
                DataView dvAntiBillTransactions = new DataView(dsAntiBillTransactions.uvw_AntiBillTransactions);
                if (dvAntiBillTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsAntiBillTransactions.uvw_AntiBillTransactions.Columns["PostingDetailsDate"]);
                    dvAntiBillTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvAntiBillTransaction in dvAntiBillTransactions)
                    {
                        postingDate = (DateTime)drvAntiBillTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }
                    }
                }

                // Sets last financial date from bills ledger transactions.
                DsBledgerTransactions dsBledgerTransactions = SrvBledgerLookup.GetBledgerTransactions(projectId);
                DataView dvBledgerTransactions = new DataView(dsBledgerTransactions.uvw_BledgerTransactions);
                if (dvBledgerTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsBledgerTransactions.uvw_BledgerTransactions.Columns["PostingDetailsDate"]);
                    dvBledgerTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvBledgerTransaction in dvBledgerTransactions)
                    {
                        postingDate = (DateTime)drvBledgerTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }

                        // Last time can be reterieved only from the bills ledger and time transaction for filter "All"
                        if (postingDate > DataConstants.BlankDate)
                        {
                            lastBill = postingDate;
                        }
                    }
                }

                // Sets last financial date from pay ledger transactions.
                DsPayLedgerTransactions dsPayLedgerTransactions = SrvPayLedgerLookup.GetPayLedgerTransactions(projectId);
                DataView dvPayLedgerTransactions = new DataView(dsPayLedgerTransactions.uvw_PayLedgerTransactions);
                if (dvPayLedgerTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsPayLedgerTransactions.uvw_PayLedgerTransactions.Columns["PostingDetailsDate"]);
                    dvBledgerTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvPayLedgerTransaction in dvPayLedgerTransactions)
                    {
                        postingDate = (DateTime)drvPayLedgerTransaction.Row["PostingDetailsDate"];

                        if (postingDate > lastFinancialDate)
                        {
                            lastFinancialDate = postingDate;
                        }
                    }
                }

                // Gets Last time
                DsTimeTransactions dsTimeTransactions = SrvTimeLookup.GetTimeTransactions(projectId, "All", false);
                DataView dvTimeTransactions = new DataView(dsTimeTransactions.uvw_TimeTransactions);
                if (dvTimeTransactions.Count != 0)
                {
                    string columnOrderByPostingDate = Convert.ToString(dsTimeTransactions.uvw_TimeTransactions.Columns["TimeDate"]);
                    dvTimeTransactions.Sort = columnOrderByPostingDate + " " + "asc";

                    foreach (DataRowView drvTimeTransactions in dvTimeTransactions)
                    {
                        // Gets last time
                        DateTime timeDate = (DateTime)drvTimeTransactions.Row["TimeDate"];

                        if (timeDate > DataConstants.BlankDate)
                        {
                            lastTime = timeDate;
                        }
                    }
                }

                returnValue.LastFinancial = lastFinancialDate;
                returnValue.LastTime = lastTime;
                returnValue.LastBill = lastBill;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return returnValue;
        }
        /// <summary>
        /// Loads financial balances by project id
        /// </summary>
        /// <param name="logonId">Logon id obtained when logging on to the logon service</param>
        /// <param name="projectId">To load financial balances</param>
        /// <returns>Returns properties of financial details</returns>
        public FinancialBalancesReturnValue GetFinancialBalances(Guid logonId, Guid projectId)
        {
            FinancialBalancesReturnValue returnValue = new FinancialBalancesReturnValue();
            try
            {
                // Get the logged on user from the current logons and add their
                // ApplicationSettings the list of concurrent sessions.
                Host.LoadLoggedOnUser(logonId);

                try
                {
                    Functions.RestrictRekoopIntegrationUser(UserInformation.Instance.DbUid);
                    switch (UserInformation.Instance.UserType)
                    {
                        case DataConstants.UserType.Staff:
                            // Can do everything
                            break;
                        case DataConstants.UserType.Client:
                        case DataConstants.UserType.ThirdParty:
                            throw new Exception("Access denied");
                        default:
                            throw new Exception("Access denied");
                    }

                    // WIP balances
                    returnValue = this.GetWIPAndTimeTransactionInfo(projectId, "Unbilled", returnValue);

                    // Anticiapted Balances
                    decimal anticipatedDisbursementLedgerBalance = SrvAntiDisbLedgerCommon.SumAntiDisbLedgerAmount(projectId);
                    decimal anticipatedBillBalance = SrvAntiBillCommon.SumAntiBillLedgerAmount(projectId);
                    decimal pfClaimsBalance = SrvLaLedgerCommon.SumLaLedgerForMatter(projectId);

                    returnValue.AnticipatedDisbursements = Convert.ToString(decimal.Round(anticipatedDisbursementLedgerBalance, 2));
                    returnValue.AnticipatedBills = Convert.ToString(decimal.Round(anticipatedBillBalance, 2));
                    returnValue.AnticipatedPFClaims = Convert.ToString(decimal.Round(pfClaimsBalance, 2));

                    // Cost Balances
                    decimal costBilled = SrvBledgerCommon.SumCostBilled(projectId);
                    decimal unbilledPaidDisbursements = SrvDisbLedgerCommon.SumUnbilledPaidDisbLedgerAmount(projectId);
                    decimal unbilledNetTotal = SrvDisbLedgerCommon.SumTotalNetUnbilledDisbLedgerAmount(projectId);
                    unbilledPaidDisbursements = unbilledNetTotal;
                    decimal unpaidBilledDisbursements = SrvDisbLedgerCommon.SumUnpaidBilledDisbLedgerAmount(projectId); ;

                    returnValue.CostBills = Convert.ToString(decimal.Round(costBilled, 2));
                    returnValue.CostUnbilledDisbursements = Convert.ToString(decimal.Round(unbilledPaidDisbursements, 2));
                    returnValue.CostUnpaidBilledDisbursements = Convert.ToString(decimal.Round(unpaidBilledDisbursements, 2));

                    // Time Transactions
                    returnValue = this.GetWIPAndTimeTransactionInfo(projectId, "All", returnValue);

                    // Movement Details
                    FinancialBalancesReturnValue lastFinancialDetails = this.GetLastFinancialDetails(projectId);
                    returnValue.LastBill = lastFinancialDetails.LastBill;
                    returnValue.LastFinancial = lastFinancialDetails.LastFinancial;
                    returnValue.LastTime = lastFinancialDetails.LastTime;
                }
                finally
                {
                    // Remove the logged on user's ApplicationSettings from the
                    // list of concurrent sessions
                    Host.UnloadLoggedOnUser();
                }
            }
            catch (System.Data.SqlClient.SqlException)
            {
                returnValue.Success = false;
                returnValue.Message = Functions.SQLErrorMessage;
            }
            catch (Exception Ex)
            {
                returnValue.Success = false;
                returnValue.Message = Ex.Message;
            }

            return returnValue;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Sets financial balances info by project id.
        /// </summary>
        private void SetFinancialBalances()
        {
            AccountsServiceClient accountsService = null;

            try
            {
                accountsService = new AccountsServiceClient();
                Guid projectId = (Guid)Session[SessionName.ProjectId];
                Guid logonId   = ((LogonReturnValue)HttpContext.Current.Session[SessionName.LogonSettings]).LogonId;
                FinancialBalancesReturnValue returnValue = accountsService.GetFinancialBalances(logonId, projectId);

                if (returnValue.Success)
                {
                    _txtAnticipatedBills.Text          = returnValue.AnticipatedBills;
                    _txtCostBills.Text                 = returnValue.CostBills;
                    _txtDisbursements.Text             = returnValue.AnticipatedDisbursements;
                    _txtPFClaims.Text                  = returnValue.AnticipatedPFClaims;
                    _txtTime.Text                      = returnValue.Time;
                    _txtTimeChargeout.Text             = returnValue.TimeChargeOut;
                    _txtTimeCost.Text                  = returnValue.TimeCost;
                    _txtUnbilledDisbursements.Text     = returnValue.CostUnbilledDisbursements;
                    _txtUnpaidbilledDisbursements.Text = returnValue.CostUnpaidBilledDisbursements;
                    _txtWIPChargeout.Text              = returnValue.WIPChargeOut;
                    _txtWIPCost.Text                   = returnValue.WIPCost;
                    _txtWIPTime.Text                   = returnValue.WIPTime;

                    // Sets movement details
                    if (returnValue.LastBill != DataConstants.BlankDate)
                    {
                        _ccLastBill.DateText = Convert.ToString(returnValue.LastBill);
                    }
                    if (returnValue.LastFinancial != DataConstants.BlankDate)
                    {
                        _ccLastFinancial.DateText = Convert.ToString(returnValue.LastFinancial);
                    }

                    if (returnValue.LastTime != DataConstants.BlankDate)
                    {
                        _ccLastTime.DateText = Convert.ToString(returnValue.LastTime);
                    }
                }
                else
                {
                    _lblMessage.CssClass = "errorMessage";
                    _lblMessage.Text     = returnValue.Message;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (accountsService != null)
                {
                    if (accountsService.State != System.ServiceModel.CommunicationState.Faulted)
                    {
                        accountsService.Close();
                    }
                }
            }
        }
 /// <summary>
 /// Loads financial balances by project id
 /// </summary>
 /// <param name="oHostSecurityToken">HostSecurityToken obtained when security provider of IWS is called</param>
 /// <param name="projectId">To load financial balances</param>
 /// <returns>Returns properties of financial details</returns>
 public FinancialBalancesReturnValue GetFinancialBalances(HostSecurityToken oHostSecurityToken, Guid projectId)
 {
     FinancialBalancesReturnValue returnValue = null;
     if (Functions.ValidateIWSToken(oHostSecurityToken))
     {
         oAccountService = new AccountsService();
         returnValue = oAccountService.GetFinancialBalances(Functions.GetLogonIdFromToken(oHostSecurityToken), projectId);
     }
     else
     {
         returnValue = new FinancialBalancesReturnValue();
         returnValue.Success = false;
         returnValue.Message = "Invalid Token";
     }
     return returnValue;
 }