/// <summary> /// Post a budget /// </summary> private static void PostBudget(int ALedgerNumber, ABudgetRow ABudgetRow, List <ABudgetPeriodRow> ABudgetPeriodRows) { GLPostingDS.AGeneralLedgerMaster.DefaultView.Sort = String.Format("{0},{1},{2},{3}", AGeneralLedgerMasterTable.GetLedgerNumberDBName(), AGeneralLedgerMasterTable.GetYearDBName(), AGeneralLedgerMasterTable.GetAccountCodeDBName(), AGeneralLedgerMasterTable.GetCostCentreCodeDBName()); int glmRowIndex = GLPostingDS.AGeneralLedgerMaster.DefaultView.Find(new object[] { ALedgerNumber, ABudgetRow.Year, ABudgetRow.AccountCode, ABudgetRow.CostCentreCode }); if (glmRowIndex == -1) { TGLPosting.CreateGLMYear(ref GLPostingDS, ALedgerNumber, ABudgetRow.Year, ABudgetRow.AccountCode, ABudgetRow.CostCentreCode); glmRowIndex = GLPostingDS.AGeneralLedgerMaster.DefaultView.Find(new object[] { ALedgerNumber, ABudgetRow.Year, ABudgetRow.AccountCode, ABudgetRow.CostCentreCode }); } int GLMSequence = ((AGeneralLedgerMasterRow)GLPostingDS.AGeneralLedgerMaster.DefaultView[glmRowIndex].Row).GlmSequence; /* Update totals for the General Ledger Master period record. */ foreach (ABudgetPeriodRow BPR in ABudgetPeriodRows) { AddBudgetValue(GLMSequence, BPR.PeriodNumber, BPR.BudgetBase); } }
/// <summary> /// Process the account code parent codes /// </summary> private static void ProcessAccountParent( int ALedgerNumber, string CurrAccountCode, bool ADebitCreditIndicator, string ACostCentreList, ABudgetRow ABudgetRow, List <ABudgetPeriodRow> ABudgetPeriods) { AAccountRow AccountRow = (AAccountRow)GLPostingDS.AAccount.Rows.Find(new object[] { ALedgerNumber, CurrAccountCode }); AAccountHierarchyDetailRow AccountHierarchyDetailRow = (AAccountHierarchyDetailRow)GLPostingDS.AAccountHierarchyDetail.Rows.Find( new object[] { ALedgerNumber, MFinanceConstants.ACCOUNT_HIERARCHY_STANDARD, CurrAccountCode }); if (AccountHierarchyDetailRow != null) { string AccountCodeToReportTo = AccountHierarchyDetailRow.AccountCodeToReportTo; if ((AccountCodeToReportTo != null) && (AccountCodeToReportTo != string.Empty)) { /* Recursively call this procedure. */ ProcessAccountParent( ALedgerNumber, AccountCodeToReportTo, ADebitCreditIndicator, ACostCentreList, ABudgetRow, ABudgetPeriods); } } int DebitCreditMultiply = 1; /* needed if the debit credit indicator is not the same */ /* If the account has the same db/cr indicator as the original * account for which the budget was created, add the budget amount. * Otherwise, subtract. */ if (AccountRow.DebitCreditIndicator != ADebitCreditIndicator) { DebitCreditMultiply = -1; } string[] CostCentres = ACostCentreList.Split(':'); string AccCode = AccountRow.AccountCode; /* For each associated Cost Centre, update the General Ledger Master. */ foreach (string CostCentreCode in CostCentres) { int glmRowIndex = GLPostingDS.AGeneralLedgerMaster.DefaultView.Find(new object[] { ALedgerNumber, ABudgetRow.Year, AccCode, CostCentreCode }); if (glmRowIndex == -1) { TGLPosting.CreateGLMYear(ref GLPostingDS, ALedgerNumber, ABudgetRow.Year, AccCode, CostCentreCode); glmRowIndex = GLPostingDS.AGeneralLedgerMaster.DefaultView.Find(new object[] { ALedgerNumber, ABudgetRow.Year, AccCode, CostCentreCode }); } int GLMSequence = ((AGeneralLedgerMasterRow)GLPostingDS.AGeneralLedgerMaster.DefaultView[glmRowIndex].Row).GlmSequence; /* Update totals for the General Ledger Master period record. */ foreach (ABudgetPeriodRow BPR in ABudgetPeriods) { AddBudgetValue(GLMSequence, BPR.PeriodNumber, DebitCreditMultiply * BPR.BudgetBase); } } }