/// <summary> /// Adds the account balance for credit. /// </summary> /// <param name="openingAccountEntryEntity">The opening account entry entity.</param> /// <param name="openingAccountEntryDetailEntityy">The opening account entry detail entityy.</param> /// <returns></returns> public AccountBalanceEntity AddAccountBalanceForCredit(OpeningAccountEntryEntity openingAccountEntryEntity, OpeningAccountEntryDetailEntity openingAccountEntryDetailEntityy) { //credit account return(new AccountBalanceEntity { BalanceDate = openingAccountEntryEntity.PostedDate, CurrencyCode = openingAccountEntryDetailEntityy.CurrencyCode, ExchangeRate = (decimal)openingAccountEntryDetailEntityy.ExchangeRate, AccountNumber = openingAccountEntryEntity.AccountCode, MovementCreditAmountOC = openingAccountEntryDetailEntityy.CreditAmountOC, MovementCreditAmountExchange = openingAccountEntryDetailEntityy.CreditAmountExchange, BudgetSourceCode = openingAccountEntryDetailEntityy.BudgetSourceCode, BudgetItemCode = openingAccountEntryDetailEntityy.BudgetItemCode, CustomerId = openingAccountEntryDetailEntityy.CustomerId, VendorId = openingAccountEntryDetailEntityy.VendorId, EmployeeId = openingAccountEntryDetailEntityy.EmployeeId, AccountingObjectId = openingAccountEntryDetailEntityy.AccountingObjectId, MergerFundId = openingAccountEntryDetailEntityy.MergerFundId, BankId = openingAccountEntryDetailEntityy.BankId, ProjectId = openingAccountEntryDetailEntityy.ProjectId, //InventoryItemId = openingAccountEntryDetailEntityy.InventoryItemId, MovementDebitAmountOC = 0, MovementDebitAmountExchange = 0 }); }
/// <summary> /// Takes the specified opening account entry detail. /// </summary> /// <param name="openingAccountEntryDetail">The opening account entry detail.</param> /// <returns></returns> private static object[] Take(OpeningAccountEntryDetailEntity openingAccountEntryDetail) { return(new object[] { @"RefDetailID", openingAccountEntryDetail.RefDetailId, @"RefID", openingAccountEntryDetail.RefId, @"RefTypeID", openingAccountEntryDetail.RefTypeId, @"PostedDate", openingAccountEntryDetail.PostedDate, @"AccountBeginningDebitAmountOC", openingAccountEntryDetail.AccountBeginningDebitAmountOC, @"AccountBeginningCreditAmountOC", openingAccountEntryDetail.AccountBeginningCreditAmountOC, @"DebitAmountOC", openingAccountEntryDetail.DebitAmountOC, @"CreditAmountOC", openingAccountEntryDetail.CreditAmountOC, @"AccountBeginningDebitAmountExchange", openingAccountEntryDetail.AccountBeginningDebitAmountExchange, @"AccountBeginningCreditAmountExchange", openingAccountEntryDetail.AccountBeginningCreditAmountExchange, @"DebitAmountExchange", openingAccountEntryDetail.DebitAmountExchange, @"CreditAmountExchange", openingAccountEntryDetail.CreditAmountExchange, @"CurrencyCode", openingAccountEntryDetail.CurrencyCode, @"ExchangeRate", openingAccountEntryDetail.ExchangeRate, @"BudgetSourceCode", openingAccountEntryDetail.BudgetSourceCode, @"BudgetChapterCode", openingAccountEntryDetail.BudgetChapterCode, @"BudgetCategoryCode", openingAccountEntryDetail.BudgetCategoryCode, @"BudgetGroupItemCode", openingAccountEntryDetail.BudgetGroupItemCode, @"BudgetItemCode", openingAccountEntryDetail.BudgetItemCode, @"MergerFundID", openingAccountEntryDetail.MergerFundId, @"EmployeeID", openingAccountEntryDetail.EmployeeId, @"CustomerID", openingAccountEntryDetail.CustomerId, @"VendorID", openingAccountEntryDetail.VendorId, @"AccountingObjectID", openingAccountEntryDetail.AccountingObjectId, @"ProjectID", openingAccountEntryDetail.ProjectId, @"BankID", openingAccountEntryDetail.BankId }); }
/// <summary> /// Inserts the account balance. /// </summary> /// <param name="openingAccountEntryEntity">The opening account entry entity.</param> /// <param name="openingAccountEntryDetailEntity">The opening account entry detail entity.</param> /// <param name="balanceSide">The balance side.</param> public void InsertAccountBalance(OpeningAccountEntryEntity openingAccountEntryEntity, OpeningAccountEntryDetailEntity openingAccountEntryDetailEntity, int balanceSide) { //check balance side switch (balanceSide) { case 0: //ben no var accountBalanceForDebit = AddAccountBalanceForDebit(openingAccountEntryEntity, openingAccountEntryDetailEntity); var accountBalanceForDebitExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForDebit); if (accountBalanceForDebitExit != null) { UpdateAccountBalance(accountBalanceForDebitExit, accountBalanceForDebit.MovementDebitAmountOC, accountBalanceForDebit.MovementDebitAmountExchange, true, 1); } else { AccountBalanceDao.InsertAccountBalance(accountBalanceForDebit); } break; case 1: //ben co var accountBalanceForCredit = AddAccountBalanceForCredit(openingAccountEntryEntity, openingAccountEntryDetailEntity); var accountBalanceForCreditExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForCredit); if (accountBalanceForCreditExit != null) { UpdateAccountBalance(accountBalanceForCreditExit, accountBalanceForCredit.MovementCreditAmountOC, accountBalanceForCredit.MovementCreditAmountExchange, true, 2); } else { AccountBalanceDao.InsertAccountBalance(accountBalanceForCredit); } break; case 2: if (openingAccountEntryDetailEntity.DebitAmountOC == 0) { accountBalanceForCredit = AddAccountBalanceForCredit(openingAccountEntryEntity, openingAccountEntryDetailEntity); accountBalanceForCreditExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForCredit); if (accountBalanceForCreditExit != null) { UpdateAccountBalance(accountBalanceForCreditExit, accountBalanceForCredit.MovementCreditAmountOC, accountBalanceForCredit.MovementCreditAmountExchange, true, 2); } else { AccountBalanceDao.InsertAccountBalance(accountBalanceForCredit); } } else { accountBalanceForDebit = AddAccountBalanceForDebit(openingAccountEntryEntity, openingAccountEntryDetailEntity); accountBalanceForDebitExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForDebit); if (accountBalanceForDebitExit != null) { UpdateAccountBalance(accountBalanceForDebitExit, accountBalanceForDebit.MovementDebitAmountOC, accountBalanceForDebit.MovementDebitAmountExchange, true, 1); } else { AccountBalanceDao.InsertAccountBalance(accountBalanceForDebit); } } break; //luong tinh } }
/// <summary> /// Adds the journal entry account. /// </summary> /// <param name="openingAccountEntryEntity">The opening account entry entity.</param> /// <param name="openingAccountEntryDetailEntity">The opening account entry detail entity.</param> /// <param name="balanceSide">The balance side.</param> /// <returns></returns> public JournalEntryAccountEntity AddJournalEntryAccount(OpeningAccountEntryEntity openingAccountEntryEntity, OpeningAccountEntryDetailEntity openingAccountEntryDetailEntity, int balanceSide) { decimal amountOC; decimal amountExchange; int journalType; switch (balanceSide) { case 0: amountOC = openingAccountEntryDetailEntity.DebitAmountOC; amountExchange = openingAccountEntryDetailEntity.DebitAmountExchange; journalType = 1; break; case 1: amountOC = openingAccountEntryDetailEntity.CreditAmountOC * (-1); amountExchange = openingAccountEntryDetailEntity.CreditAmountExchange * (-1); journalType = 2; break; default: if (openingAccountEntryDetailEntity.DebitAmountOC > openingAccountEntryDetailEntity.CreditAmountOC) { amountOC = Math.Abs(openingAccountEntryDetailEntity.DebitAmountOC - openingAccountEntryDetailEntity.CreditAmountOC); amountExchange = Math.Abs(openingAccountEntryDetailEntity.DebitAmountExchange - openingAccountEntryDetailEntity.CreditAmountExchange); journalType = 1; } else { amountOC = openingAccountEntryDetailEntity.DebitAmountOC - openingAccountEntryDetailEntity.CreditAmountOC; amountExchange = openingAccountEntryDetailEntity.DebitAmountExchange - openingAccountEntryDetailEntity.CreditAmountExchange; journalType = 2; } break; } return(new JournalEntryAccountEntity { RefId = openingAccountEntryEntity.RefId, RefTypeId = openingAccountEntryEntity.RefTypeId, RefNo = "OPN", RefDate = openingAccountEntryEntity.PostedDate, PostedDate = openingAccountEntryEntity.PostedDate, JournalMemo = null, CurrencyCode = openingAccountEntryDetailEntity.CurrencyCode, ExchangeRate = (decimal)openingAccountEntryDetailEntity.ExchangeRate, BankAccount = null, RefDetailId = openingAccountEntryDetailEntity.RefDetailId, AccountNumber = openingAccountEntryEntity.AccountCode, CorrespondingAccountNumber = null, AmountOc = amountOC, BankId = openingAccountEntryDetailEntity.BankId, Description = null, JournalType = journalType, AmountExchange = amountExchange, BudgetSourceCode = openingAccountEntryDetailEntity.BudgetSourceCode, BudgetItemCode = openingAccountEntryDetailEntity.BudgetItemCode, AccountingObjectId = openingAccountEntryDetailEntity.AccountingObjectId, EmployeeId = openingAccountEntryDetailEntity.EmployeeId, CustomerId = openingAccountEntryDetailEntity.CustomerId, VendorId = openingAccountEntryDetailEntity.VendorId, MergerFundId = openingAccountEntryDetailEntity.MergerFundId, VoucherTypeId = null, ProjectId = openingAccountEntryDetailEntity.ProjectId }); }
/// <summary> /// Inserts the opening account entry detail. /// </summary> /// <param name="openingAccountEntryDetail">The opening account entry detail.</param> /// <returns></returns> /// <exception cref="System.NotImplementedException"></exception> public int InsertOpeningAccountEntryDetail(OpeningAccountEntryDetailEntity openingAccountEntryDetail) { const string sql = @"uspInsert_OpeningAccountEntryDetail"; return(Db.Insert(sql, true, Take(openingAccountEntryDetail))); }