internal void SummaryByCurrencyEntries(EmpiriaHashTable <TrialBalanceEntry> summaryEntries, TrialBalanceEntry balanceEntry, StandardAccount targetAccount, Sector targetSector, TrialBalanceItemType itemType) { TrialBalanceEntry entry = TrialBalanceMapper.MapToTrialBalanceEntry(balanceEntry); if (_command.TrialBalanceType != TrialBalanceType.SaldosPorCuentaYMayor && entry.ItemType == TrialBalanceItemType.BalanceTotalCreditor) { entry.InitialBalance = -1 * entry.InitialBalance; entry.CurrentBalance = -1 * entry.CurrentBalance; } entry.GroupName = "TOTAL MONEDA " + entry.Currency.FullName; string hash; if (_command.TrialBalanceType == TrialBalanceType.SaldosPorCuentaYMayor) { entry.GroupNumber = ""; hash = $"{entry.GroupName}||{entry.Currency.Id}"; } else { hash = $"{entry.GroupName}||{targetSector.Code}||{entry.Currency.Id}||{entry.Ledger.Id}"; } GenerateOrIncreaseEntries(summaryEntries, entry, targetAccount, targetSector, itemType, hash); }
private void GenerateOrIncreaseEntries(EmpiriaHashTable <TrialBalanceEntry> summaryEntries, TrialBalanceEntry entry, StandardAccount targetAccount, Sector targetSector, TrialBalanceItemType itemType, string hash) { TrialBalanceEntry summaryEntry; summaryEntries.TryGetValue(hash, out summaryEntry); if (summaryEntry == null) { summaryEntry = new TrialBalanceEntry { Ledger = entry.Ledger, Currency = entry.Currency, Sector = targetSector, Account = targetAccount, ItemType = itemType, GroupNumber = entry.GroupNumber, GroupName = entry.GroupName, DebtorCreditor = entry.DebtorCreditor, SubledgerAccountIdParent = entry.SubledgerAccountIdParent }; summaryEntry.Sum(entry); summaryEntries.Insert(hash, summaryEntry); } else { summaryEntry.Sum(entry); } }
private void GenerateOrIncreaseParentEntries(List <TrialBalanceEntry> subsidiaryEntries, List <TrialBalanceEntry> returnedEntries) { var helper = new TrialBalanceHelper(_command); foreach (var entry in subsidiaryEntries) { int count = 0; List <TrialBalanceEntry> summaryEntries = new List <TrialBalanceEntry>(); var summaryParentEntries = new EmpiriaHashTable <TrialBalanceEntry>(); StandardAccount account = entry.Account; while (true) { var parent = returnedEntries.FirstOrDefault(a => a.Ledger.Number == entry.Ledger.Number && a.Currency.Code == entry.Currency.Code && a.SubledgerAccountId == 0 && a.SubledgerAccountIdParent == entry.SubledgerAccountId && a.Account.Number == account.Number && a.Sector.Code == entry.Sector.Code); if (parent == null) { count++; TrialBalanceItemType itemType = count == 1 ? TrialBalanceItemType.BalanceEntry : TrialBalanceItemType.BalanceSummary; helper.SummaryByEntry(summaryParentEntries, entry, account, entry.Sector, itemType); if (!account.HasParent && entry.HasSector && entry.SubledgerAccountId > 0) { CreateOrAccumulateParentWithoutSector(returnedEntries, entry, summaryParentEntries, account); break; } else if (!account.HasParent) { break; } else { account = account.GetParent(); } } else { parent.Sum(entry); if (!account.HasParent) { AccumulateSubledgerAccount(returnedEntries, entry, account); break; } else { account = account.GetParent(); } } } // while summaryEntries.AddRange(summaryParentEntries.Values.ToList()); returnedEntries.AddRange(summaryEntries); } // foreach }
internal void SummaryByEntry(EmpiriaHashTable <TrialBalanceEntry> summaryEntries, TrialBalanceEntry entry, StandardAccount targetAccount, Sector targetSector, TrialBalanceItemType itemType) { string hash = $"{targetAccount.Number}||{targetSector.Code}||{entry.Currency.Id}||{entry.Ledger.Id}"; GenerateOrIncreaseEntries(summaryEntries, entry, targetAccount, targetSector, itemType, hash); }
internal void SummaryBySubsidiaryEntry(EmpiriaHashTable <TrialBalanceEntry> summaryEntries, TrialBalanceEntry entry, TrialBalanceItemType itemType) { TrialBalanceEntry balanceEntry = TrialBalanceMapper.MapToTrialBalanceEntry(entry); balanceEntry.SubledgerAccountIdParent = entry.SubledgerAccountIdParent; string hash = $"{entry.Account.Number}||{entry.Sector.Code}||{entry.Currency.Id}||{entry.Ledger.Id}"; GenerateOrIncreaseEntries(summaryEntries, balanceEntry, StandardAccount.Empty, Sector.Empty, itemType, hash); }
internal void SummaryByAccount(EmpiriaHashTable <TrialBalanceEntry> summaryEntries, TrialBalanceEntry balanceEntry, StandardAccount targetAccount, Sector targetSector, TrialBalanceItemType itemType) { TrialBalanceEntry entry = TrialBalanceMapper.MapToTrialBalanceEntry(balanceEntry); entry.Ledger = Ledger.Empty; entry.GroupName = entry.Account.Name.ToUpper(); entry.InitialBalance = 0; entry.Debit = 0; entry.Credit = 0; entry.CurrentBalance = 0; string hash = $"{targetAccount.Number}||{targetSector.Code}||{entry.Currency.Id}||{entry.Ledger.Id}"; GenerateOrIncreaseEntries(summaryEntries, entry, targetAccount, targetSector, itemType, hash); }
private void SummaryByDebtorCreditorEntries(EmpiriaHashTable <TrialBalanceEntry> summaryEntries, TrialBalanceEntry balanceEntry, StandardAccount targetAccount, Sector targetSector, TrialBalanceItemType itemType) { TrialBalanceEntry entry = TrialBalanceMapper.MapToTrialBalanceEntry(balanceEntry); if (itemType == TrialBalanceItemType.BalanceTotalDebtor) { entry.GroupName = "TOTAL DEUDORAS " + entry.Currency.FullName; } else if (itemType == TrialBalanceItemType.BalanceTotalCreditor) { entry.GroupName = "TOTAL ACREEDORAS " + entry.Currency.FullName; } string hash = $"{entry.GroupName}||{targetSector.Code}||{entry.Currency.Id}||{entry.Ledger.Id}"; GenerateOrIncreaseEntries(summaryEntries, entry, targetAccount, targetSector, itemType, hash); }