/// <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; }
/// <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; }