internal static string PayCheck(int receiptId) { string isCollected = "true"; AccountingEntities db = new AccountingEntities(); var receiptData = db.CashOutReceipts.Where(x => x.ReceiptId == receiptId) .Select(x => new { x.ReceiptAmount, x.CurrencyId, x.ReceiptCode, x.BankAccId }) .FirstOrDefault(); var receiptCheck = db.CashOutReceiptChecks.Where(x => x.ReceiptId == receiptId).FirstOrDefault(); receiptCheck.IsCollected = true; receiptCheck.CollectDate = DateTime.Now; receiptCheck.CollectBy = AdminHelper.GetCurrentUserId(); using (TransactionScope transaction = new TransactionScope()) { try { db.SaveChanges(); //Add Transactions string creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(receiptData.BankAccId.Value, "BankAccount", "BankAccId"); string debitAccId = ((int)AccountingChartEnum.NotesPayable).ToString(); string comment = "Pay check number " + receiptCheck.CheckNumber + " received by cash receipt code " + receiptData.ReceiptCode; string commentAr = "دفع الشيك رقم " + receiptCheck.CheckNumber + " المستلم بموجب ايصال استلام رقم " + receiptData.ReceiptCode; AddCheckActionToTransTable(debitAccId, creditAccId, receiptData.ReceiptAmount, receiptData.CurrencyId.Value, comment, commentAr, receiptId, "CashOutReceiptCheck"); transaction.Complete(); } catch (DbEntityValidationException e) { isCollected = "false " + e.Message; } catch (Exception e) { isCollected = "false " + e.Message; } return(isCollected); } }
private static void AddCheckActionToTransTable(string debitAccId, string creditAccId, decimal amount, int currencyId, string comment, string commentAr, int receiptId, string tbName) { AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = AdminHelper.GetCurrentUserId(), TransactionName = comment, TransactionNameAr = commentAr }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = currencyId, DebitAmount = amount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = amount, CurrencyId = currencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, tbName, receiptId, "ReceiptId"); }
//public static OpenBalanceVm GetOpenBalanceForCash() //{ // OpenBalanceVm balanceVm = new OpenBalanceVm(); // balanceVm.TbName = "Currency"; // balanceVm.LibItemId = 0; // balanceVm.CreateDate = DateTime.Now; // balanceVm.IsCreditAgent = false; // AccountingEntities db = new AccountingEntities(); // //Get Currency List // var currList = db.CurrencyAccs.ToList(); // OpenBalanceDetailVm openBalanceDet; // foreach (var item in currList) // { // string accountId = AccountingChartHelper.GetAccountIdByPkAndTbName(item.CurrencyId, "Currency", "CurrencyId"); // //Get Transaction details for open balance // var accTanDet = db.AccTransactionDetails.Include("AccTransaction") // .Where(x => x.AccountId == accountId && x.AccTransaction.TransactionName == "open balance").ToList(); // openBalanceDet = new OpenBalanceDetailVm(); // openBalanceDet.CurrencyId = item.CurrencyId; // openBalanceDet.CurrencySign = item.CurrencySign; // openBalanceDet.CurrencyAccountId = item.AccountId; // //check if has open balance for this currency // var openAccTran = accTanDet.Where(x => x.CurrencyId == item.CurrencyId).FirstOrDefault(); // if (openAccTran != null) // { // openBalanceDet.TransDetailId = openAccTran.TransDetailId; // openBalanceDet.CreditAmount = openAccTran.CreditAmount; // openBalanceDet.DebitAmount = openAccTran.DebitAmount; // } // balanceVm.OpenBalanceDetails.Add(openBalanceDet); // } // return balanceVm; //} public static string AddEditOpenBalance(OpenBalanceVm openBalanceVm) { string isSaved = "true"; string accountId = ""; string tbName, pkName; int libId; bool isCreditAgent = false; libId = openBalanceVm.LibItemId; tbName = openBalanceVm.TbName; pkName = openBalanceVm.PkName; if (openBalanceVm.IsCreditAgent != null) { isCreditAgent = openBalanceVm.IsCreditAgent.Value; } //Get AccountId accountId = AccountingChartHelper.GetAccountIdByPkAndTbName(libId, tbName, pkName); if (string.IsNullOrEmpty(accountId)) { switch (tbName) { case "Agent": byte agentType; if (isCreditAgent == false) { agentType = 1; //debit note A/R } else { agentType = 2; //Credit note A/P } accountId = AccountingChartHelper.AddAgentToChart(libId, agentType); break; case "Carrier": accountId = AccountingChartHelper.AddCarrierToChart(libId); break; case "Contractor": accountId = AccountingChartHelper.AddContractorToChart(libId); break; case "Shipper": accountId = AccountingChartHelper.AddShipperToChart(libId); break; case "Consignee": accountId = AccountingChartHelper.AddConsigneeToChart(libId); break; case "Currency": accountId = AccountingChartHelper.AddCashToChart(libId); break; case "BankAccount": accountId = AccountingChartHelper.AddBankAccountToChart(0, libId); break; case "AccountingChart": accountId = AccountingChartHelper.AddBankAccountToChart(0, libId); break; } AccountingChartHelper.AddAccountIdToObj(accountId, tbName, libId, pkName); } openBalanceVm.AccountId = accountId; int transId = openBalanceVm.TransId; AccTransaction accTran; AccountingEntities db = new AccountingEntities(); if (transId != 0) { accTran = db.AccTransactions.Include("AccTransactionDetails").Where(x => x.TransId == transId).FirstOrDefault(); //delete all tran details and add it later foreach (var item in accTran.AccTransactionDetails.ToList()) { db.AccTransactionDetails.Remove(item); } } else { accTran = new AccTransaction() { CreateBy = AdminHelper.GetCurrentUserId(), CreateDate = DateTime.Now, TransactionName = "open balance" }; } Mapper.CreateMap <OpenBalanceDetailVm, AccTransactionDetail>(); AccTransactionDetail accTranDetail; foreach (var item in openBalanceVm.OpenBalanceDetails.Where(x => x.DebitAmount != null || x.CreditAmount != null)) { accTranDetail = new AccTransactionDetail(); item.AccountId = accountId; Mapper.Map(item, accTranDetail); accTran.AccTransactionDetails.Add(accTranDetail); } if (transId == 0) { db.AccTransactions.Add(accTran); } try { db.SaveChanges(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; } catch (Exception e) { isSaved = "false " + e.Message; } return(isSaved); }