public async Task <IActionResult> PutSaleContractExpense(long id, SaleContractExpense saleContractExpense) { if (id != saleContractExpense.ExpenseId) { return(BadRequest()); } _context.Entry(saleContractExpense).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SaleContractExpenseExists(id)) { return(NotFound()); } else { throw; } } var saleContractAccountExist = _context.TblAccounts.Where(x => x.AccountCode == saleContractExpense.SaleContractNumber).FirstOrDefault(); var paymentSourceAccountExist = _context.TblAccounts.Where(x => x.AccountId == saleContractExpense.PaymentSourceAccountId).FirstOrDefault(); if (saleContractAccountExist != null) { var saleContractAccountTransactionExist = _context.AccountTransactions.Where(x => x.AccountDebitId == saleContractAccountExist.AccountId && x.AccountCreditId == paymentSourceAccountExist.AccountId).FirstOrDefault(); if (saleContractAccountTransactionExist != null) { saleContractAccountTransactionExist.Type = _context.TransactionTypes.Where(x => x.TransactionTypeName == "SaleContractExpense").Select(x => x.TransactionTypeId).FirstOrDefault(); saleContractAccountTransactionExist.AccountDebitId = saleContractAccountExist.AccountId; saleContractAccountTransactionExist.AccountCreditId = paymentSourceAccountExist.AccountId; saleContractAccountTransactionExist.AccountDebitCode = saleContractAccountExist.AccountCode; saleContractAccountTransactionExist.AccountCreditCode = paymentSourceAccountExist.AccountCode; saleContractAccountTransactionExist.Narration = saleContractExpense.Description; saleContractAccountTransactionExist.AmountDebit = saleContractExpense.Amount; saleContractAccountTransactionExist.AmountCredit = saleContractExpense.Amount; saleContractAccountTransactionExist.SaleContractNumber = saleContractExpense.SaleContractNumber; saleContractAccountTransactionExist.DateAdded = DateTime.Now; saleContractAccountTransactionExist.IsActive = true; _context.Entry(saleContractAccountTransactionExist).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (Exception ex) { var x = 0; } } else { // Add Double Entry of Sale Contract Account (DR) and Cash/Bank Account (CR) AccountTransaction accountTransaction = new AccountTransaction() { Type = _context.TransactionTypes.Where(x => x.TransactionTypeName == "SaleContractExpense").Select(x => x.TransactionTypeId).FirstOrDefault(), AccountDebitId = saleContractAccountExist.AccountId, AccountCreditId = paymentSourceAccountExist.AccountId, AccountDebitCode = saleContractAccountExist.AccountCode, AccountCreditCode = paymentSourceAccountExist.AccountCode, Narration = saleContractExpense.Description, AmountDebit = saleContractExpense.Amount, AmountCredit = saleContractExpense.Amount, SaleContractNumber = saleContractExpense.SaleContractNumber, DateAdded = DateTime.Now, IsActive = true }; _context.AccountTransactions.Add(accountTransaction); try { await _context.SaveChangesAsync(); } catch (Exception ex) { var x = 0; } } } return(NoContent()); }
public async Task <ActionResult <SaleContractExpense> > PostSaleContractExpense(SaleContractExpense saleContractExpense) { _context.SaleContractExpenses.Add(saleContractExpense); await _context.SaveChangesAsync(); var saleContractAccountExist = _context.TblAccounts.Where(x => x.AccountCode == saleContractExpense.SaleContractNumber).FirstOrDefault(); var paymentSourceAccountExist = _context.TblAccounts.Where(x => x.AccountId == saleContractExpense.PaymentSourceAccountId).FirstOrDefault(); if (saleContractAccountExist != null) { // Add Double Entry of Sale Contract Account (DR) and Cash/Bank Account (CR) AccountTransaction accountTransaction = new AccountTransaction() { Type = _context.TransactionTypes.Where(x => x.TransactionTypeName == "SaleContractExpense").Select(x => x.TransactionTypeId).FirstOrDefault(), AccountDebitId = saleContractAccountExist.AccountId, AccountCreditId = paymentSourceAccountExist.AccountId, AccountDebitCode = saleContractAccountExist.AccountCode, AccountCreditCode = paymentSourceAccountExist.AccountCode, Narration = saleContractExpense.Description, AmountDebit = saleContractExpense.Amount, AmountCredit = saleContractExpense.Amount, SaleContractNumber = saleContractExpense.SaleContractNumber, DateAdded = DateTime.Now, IsActive = true }; _context.AccountTransactions.Add(accountTransaction); try { await _context.SaveChangesAsync(); } catch (Exception ex) { var x = 0; } } else { // Add Sale Contract Account TblAccount tblAccountSaleContract = new TblAccount() { AccountCode = saleContractExpense.SaleContractNumber, AccountDescription = saleContractExpense.SaleContractNumber, AccountTitle = saleContractExpense.SaleContractNumber, AccountTypeId = _context.AccountTypes.Where(x => x.AccountTypeName == "Liabilities").Select(x => x.AccountTypeId).FirstOrDefault(), DateAdded = DateTime.Now, IsActive = true }; _context.TblAccounts.Add(tblAccountSaleContract); try { await _context.SaveChangesAsync(); } catch (Exception ex) { var x = 0; } // Add Double Entry of Sale Contract Account (DR) and Cash/Bank Account (CR) AccountTransaction accountTransaction = new AccountTransaction() { Type = _context.TransactionTypes.Where(x => x.TransactionTypeName == "SaleContractExpense").Select(x => x.TransactionTypeId).FirstOrDefault(), AccountDebitId = tblAccountSaleContract.AccountId, AccountCreditId = paymentSourceAccountExist.AccountId, AccountDebitCode = tblAccountSaleContract.AccountCode, AccountCreditCode = paymentSourceAccountExist.AccountCode, Narration = saleContractExpense.Description, AmountDebit = saleContractExpense.Amount, AmountCredit = saleContractExpense.Amount, SaleContractNumber = saleContractExpense.SaleContractNumber, DateAdded = DateTime.Now, IsActive = true }; _context.AccountTransactions.Add(accountTransaction); try { await _context.SaveChangesAsync(); } catch (Exception ex) { var x = 0; } } return(CreatedAtAction("GetSaleContractExpense", new { id = saleContractExpense.ExpenseId }, saleContractExpense)); }