/// <summary> /// Add Agent To The Accounting chart .. /// If note type = 1 "Debit" add under A/R .. else 2 "Credit" addd under A/P /// </summary> /// <param name="agentId">Agent Id</param> /// <param name="agentType">Agent Note Type</param> /// <returns></returns> public static string AddAgentToChart(int agentId, byte agentType) { string parentAccountId = "", accountId; if (agentType == 1) //Debit Note .. A/R { parentAccountId = ((int)AccountingChartEnum.Agents).ToString(); } else { parentAccountId = ((int)AccountingChartEnum.Agents).ToString(); } AgentVm agentObj = AgentHelper.GetAgentInfo(agentId); string accNameEn = agentObj.AgentNameEn; string accNameAr = string.IsNullOrEmpty(agentObj.AgentNameAr) ? agentObj.AgentNameEn : agentObj.AgentNameAr; //Add new accountId to the chart accountId = AccountingChartHelper .AddAccountToChart(accNameEn, accNameEn, parentAccountId); AccountingChartHelper.AddAccountIdToObj(accountId, "Agent", agentId, "AgentId"); return(accountId); }
private static void AddAgentToTransTable(string agentAccId, AgentNoteVm agentNoteVm) { AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Agent Note Number " + agentNoteVm.AgentNoteCode, TransactionNameAr = "فاتورة agent رقم " + agentNoteVm.AgentNoteCode }; AccTransactionDetailVm accTransDetDebit; AccTransactionDetailVm accTransDetCredit; if (agentNoteVm.AgentNoteType == 1) // Debit .. A/R deb-- SoldServices cr .. same like invoice { accTransDetDebit = new AccTransactionDetailVm() { AccountId = agentAccId, CreditAmount = 0, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = agentNoteVm.TotalAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); accTransDetCredit = new AccTransactionDetailVm() { AccountId = ((int)AccountingChartEnum.SoldServices).ToString(), CreditAmount = agentNoteVm.TotalAmount, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); } else //Credit not .. CarrierCostOfSales deb -- A/P cr { accTransDetDebit = new AccTransactionDetailVm() { AccountId = ((int)AccountingChartEnum.CarrierCostOfSales).ToString(), CreditAmount = 0, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = agentNoteVm.TotalAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); accTransDetCredit = new AccTransactionDetailVm() { AccountId = agentAccId, CreditAmount = agentNoteVm.TotalAmount, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); } int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "AgentNote", agentNoteVm.AgentNoteId, "AgentNoteId"); }
private static void AddExpenseReceiptToTrans(CashInVm cashInVmObj) { string creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.CurrencyId, "Currency", "CurrencyId"); if (string.IsNullOrEmpty(creditAccId)) { string parentAccountId = ((int)AccountingChartEnum.Cash).ToString(); //Add new accountId to the chart creditAccId = AccountingChartHelper .AddAccountToChart(cashInVmObj.CurrencySign, cashInVmObj.CurrencySign, parentAccountId); AccountingChartHelper.AddAccountIdToObj(creditAccId, "Currency", cashInVmObj.CurrencyId, "CurrencyId"); } AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Cash Out Receipt Number " + cashInVmObj.ReceiptCode, TransactionNameAr = "ايصال صرف نقدية رقم " + cashInVmObj.ReceiptCode }; AccountingEntities db = new AccountingEntities(); var expensesLibList = db.ExpenseLibs.Select(x => new { x.ExpenseId, x.AccountId }).ToList(); AccTransactionDetailVm accTransDetDebit; //Loop through expenses for debit accounts foreach (var item in cashInVmObj.CashOutReceiptExpenses) { string debitAccId = expensesLibList.Where(x => x.ExpenseId == item.ExpenseId).FirstOrDefault().AccountId; accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, DebitAmount = item.PaidAmount.Value, CurrencyId = cashInVmObj.CurrencyId, CreditAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetDebit); } // Add Cash as credit AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = cashInVmObj.ReceiptAmount.Value, CurrencyId = cashInVmObj.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashInVmObj.ReceiptId, "ReceiptId"); }
private static void AddAPInvToTransTable(string creditAccountId, InvoiceVm invoiceVm) { string debitAccId = ""; byte invFor = invoiceVm.InvoiceType; if (invFor == 1) //carrier { debitAccId = ((int)AccountingChartEnum.CarrierCostOfSales).ToString(); } else if (invFor == 2) //Contractor { debitAccId = ((int)AccountingChartEnum.TruckingCostOfSales).ToString(); } else if (invFor == 3) //Custom Clearance { debitAccId = ((int)AccountingChartEnum.CCCostOfSales).ToString(); } AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Invoice Number " + invoiceVm.InvoiceCode, TransactionNameAr = "فاتورة رقم " + invoiceVm.InvoiceCode }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = invoiceVm.InvCurrencyId, DebitAmount = invoiceVm.InvoiceTotals.FirstOrDefault().TotalAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccountId, CreditAmount = invoiceVm.InvoiceTotals.FirstOrDefault().TotalAmount, CurrencyId = invoiceVm.InvCurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "InvoiceAP", invoiceVm.InvoiceId, "InvoiceId"); }
public static string AddEditExpense(int expenseId, string expenseNameEn, string expenseNameAr) { string isSaved = ""; AccountingEntities db = new AccountingEntities(); ExpenseLib expenseLibDb; if (expenseId != 0) { expenseLibDb = db.ExpenseLibs.Where(x => x.ExpenseId == expenseId).FirstOrDefault(); } else { expenseLibDb = new ExpenseLib(); } expenseLibDb.ExpenseNameEn = expenseNameEn; expenseLibDb.ExpenseNameAr = expenseNameAr; if (expenseId == 0) { db.ExpenseLibs.Add(expenseLibDb); } using (TransactionScope transaction = new TransactionScope()) { try { db.SaveChanges(); if (expenseId == 0) { expenseId = expenseLibDb.ExpenseId; string parentAccountId = ((int)AccountingChartEnum.GeneralAndAdministrativeExpenses).ToString(); string accountId = AccountingChartHelper.AddAccountToChart(expenseNameEn, expenseNameAr, parentAccountId); AccountingChartHelper.AddAccountIdToObj(accountId, "ExpenseLib", expenseId, "ExpenseId"); isSaved = expenseId.ToString(); } transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; } catch (Exception e) { isSaved = "false " + e.Message; } } return(isSaved); }
public static string AddCashToChart(int currencyId) { string parentAccountId = "", accountId; AccountingEntities db = new AccountingEntities(); var currObj = db.CurrencyAccs.Where(x => x.CurrencyId == currencyId).FirstOrDefault(); parentAccountId = ((int)AccountingChartEnum.Cash).ToString(); //Add new accountId to the chart accountId = AccountingChartHelper .AddAccountToChart(currObj.CurrencySign, currObj.CurrencySign, parentAccountId); AccountingChartHelper.AddAccountIdToObj(accountId, "Currency", currObj.CurrencyId, "CurrencyId"); return(accountId); }
private static void AddReceiptToTransTableTransfer(CashBankTransferVm currVm, int cashInReceiptId, int cashOutReceiptId) { string creditAccId, debitAccId; creditAccId = currVm.IsCashToBank ? AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.CurrentCurrencyId, "Currency", "CurrencyId") : currVm.AccountId; debitAccId = currVm.IsCashToBank ? currVm.AccountId : AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.CurrentCurrencyId, "Currency", "CurrencyId"); decimal amount = currVm.CurrentAmount; AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = CurrentUserId, TransactionName = currVm.IsCashToBank ? "Cash to bank transfer" : "Bank to cash transfer", TransactionNameAr = currVm.IsCashToBank ? "تحويل من الخزينة الى البنك" : "تحويل من البنك للخزينة" }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = currVm.CurrentCurrencyId, DebitAmount = amount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = currVm.CurrentAmount, CurrencyId = currVm.CurrentCurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashInReceipt", cashInReceiptId, "ReceiptId"); AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashOutReceiptId, "ReceiptId"); }
public static string AddShipperToChart(int shipeprId) { string parentAccountId = "", accountId; parentAccountId = ((int)AccountingChartEnum.AccountsRecievable).ToString(); var carrVm = ShipperHelper.GetShipperInfo(shipeprId); string accNameEn = carrVm.ShipperNameEn; string accNameAr = string.IsNullOrEmpty(carrVm.ShipperNameAr) ? carrVm.ShipperNameAr : carrVm.ShipperNameEn; //Add new accountId to the chart accountId = AccountingChartHelper .AddAccountToChart(accNameEn, accNameEn, parentAccountId); AccountingChartHelper.AddAccountIdToObj(accountId, "Shipper", shipeprId, "ShipperId"); return(accountId); }
public static string AddConsigneeToChart(int consigneeId) { string parentAccountId = "", accountId; parentAccountId = ((int)AccountingChartEnum.AccountsRecievable).ToString(); var carrVm = ConsigneeHelper.GetConsigneeInfo(consigneeId); string accNameEn = carrVm.ConsigneeNameEn; string accNameAr = string.IsNullOrEmpty(carrVm.ConsigneeNameAr) ? carrVm.ConsigneeNameEn : carrVm.ConsigneeNameAr; //Add new accountId to the chart accountId = AccountingChartHelper .AddAccountToChart(accNameEn, accNameEn, parentAccountId); AccountingChartHelper.AddAccountIdToObj(accountId, "Consignee", consigneeId, "ConsigneeId"); return(accountId); }
public static string AddContractorToChart(int contrId) { string parentAccountId = "", accountId; parentAccountId = ((int)AccountingChartEnum.APContractors).ToString(); var carrVm = ContractorHelper.GetContractorInfo(contrId); string accNameEn = carrVm.ContractorNameEn; string accNameAr = string.IsNullOrEmpty(carrVm.ContractorNameAr) ? carrVm.ContractorNameEn : carrVm.ContractorNameAr; //Add new accountId to the chart accountId = AccountingChartHelper .AddAccountToChart(accNameEn, accNameEn, parentAccountId); AccountingChartHelper.AddAccountIdToObj(accountId, "Contractor", contrId, "ContractorId"); return(accountId); }
private static void AddReceiptToTransTable(CurrencyExchangeVm currVm, int cashInReceiptId, int cashOutReceiptId) { string creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.CurrentCurrencyId, "Currency", "CurrencyId"); string debitAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.NewCurrencyId, "Currency", "CurrencyId"); decimal creditAmount = currVm.CurrentAmount; decimal debitAmount = currVm.NewAmount; AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = CurrentUserId, TransactionName = "Currency Exchange", TransactionNameAr = "تحويل عملة" }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = currVm.NewCurrencyId, DebitAmount = debitAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = currVm.CurrentAmount, CurrencyId = currVm.CurrentCurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashInReceipt", cashInReceiptId, "ReceiptId"); AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashOutReceiptId, "ReceiptId"); }
public static string AddCCCashDepositToChart(int operationId) { string parentAccountId = "", accountId; OperationsEntities db = new OperationsEntities(); var operationObj = db.Operations.Where(x => x.OperationId == operationId).FirstOrDefault(); string operationCode = operationObj.OperationCode; string accNameEn = "CC Cash Deposit For Operation " + operationCode; string accNameAr = "عهدة تخليص جمركى للعملية " + operationCode; parentAccountId = ((int)AccountingChartEnum.CashDepositTemp).ToString(); //Add new accountId to the chart accountId = AccountingChartHelper .AddAccountToChart(accNameEn, accNameAr, parentAccountId); operationObj.CCCashDepAccountId = accountId; db.SaveChanges(); return(accountId); }
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); } }
/// <summary> /// Add Bank Account to The Accounting chart /// </summary> /// <param name="bankId">Bank Id .. optional .. if 0 .. will get it in code</param> /// <param name="bankAccountId">Bank Account Id</param> /// <returns>The Accounting chart Account Number</returns> public static string AddBankAccountToChart(int bankId, int bankAccountId) { string debitAccId; string parentAccountId = ((int)AccountingChartEnum.CashInBanks).ToString(); if (bankId == 0) { AccountingEntities db = new AccountingEntities(); bankId = db.BankAccounts.Where(x => x.BankAccId == bankAccountId).FirstOrDefault().BankId; } BankVm bankInfo = BankHelper.GetBankInfo(bankId); BankAccountVm bankAccount = bankInfo.BankAccounts.Where(x => x.BankAccId == bankAccountId).FirstOrDefault(); string accNameEn = bankAccount.AccountName + " (" + bankAccount.AccountNumber + ")"; //Add new accountId to the chart debitAccId = AccountingChartHelper .AddAccountToChart(accNameEn, accNameEn, parentAccountId); AccountingChartHelper.AddAccountIdToObj(debitAccId, "BankAccount", bankAccountId, "BankAccId"); return(debitAccId); }
internal static string GetTaxDepositAccountId(byte orderFrom, int?shipperId, int?consigneeId) { string accountNameEn = "", accountNameAr = "", accountId = ""; if (orderFrom == 1) //export { var shipper = ShipperHelper.GetShipperInfo(shipperId.Value); accountId = shipper.TaxDepositAccountId; if (string.IsNullOrEmpty(accountId)) { accountNameEn = shipper.ShipperNameEn + " Tax Deposit"; accountNameAr = string.IsNullOrEmpty(shipper.ShipperNameAr) ? accountNameEn : shipper.ShipperNameAr + " ضريبة الخصم "; string parentAccountId = ((int)AccountingChartEnum.TaxDepositDebit).ToString(); //Add new accountId to the chart accountId = AccountingChartHelper.AddAccountToChart(accountNameEn, accountNameAr, parentAccountId); //update AccountId column shipper table AccountingChartHelper.AddAccountIdToObj(accountId, "shipper", shipper.ShipperId, "ShipperId", "TaxDepositAccountId"); } } else if (orderFrom == 2) //import { var consignee = ConsigneeHelper.GetConsigneeInfo(consigneeId.Value); accountId = consignee.TaxDepositAccountId; if (string.IsNullOrEmpty(accountId)) { accountNameEn = consignee.ConsigneeNameEn + " Tax Deposit"; accountNameAr = string.IsNullOrEmpty(consignee.ConsigneeNameAr) ? accountNameEn + " Tax Deposit" : consignee.ConsigneeNameAr + " ضريبة الخصم "; string parentAccountId = ((int)AccountingChartEnum.TaxDepositDebit).ToString(); //Add new accountId to the chart accountId = AccountingChartHelper.AddAccountToChart(accountNameEn, accountNameAr, parentAccountId); //update AccountId column shipper table AccountingChartHelper.AddAccountIdToObj(accountId, "consignee", consignee.ConsigneeId, "ConsigneeId", "TaxDepositAccountId"); } } return(accountId); }
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"); }
/* * internal static string DeleteCashOutReceipt(int receiptId, int invID, string deleteReason) * { * * string isSaved = "false"; * * if (receiptId == 0) * return isSaved; * * AccountingEntities db = new AccountingEntities(); * * CashOutReceipt cashOutDb = new CashOutReceipt(); * cashOutDb = db.CashOutReceipts * .Where(x => x.ReceiptId == receiptId).FirstOrDefault(); * * CashOutReceiptCheck cashOutCheckDb = new CashOutReceiptCheck(); * cashOutCheckDb = db.CashOutReceiptChecks * .Where(x => x.ReceiptId == receiptId).FirstOrDefault(); * * CashOutReceiptInv cashOutInvkDb = new CashOutReceiptInv(); * cashOutInvkDb = db.CashOutReceiptInvs * .Where(x => x.ReceiptId == receiptId).FirstOrDefault(); * * * * int? transID = null; * if (cashOutDb.TransId != null) * transID = cashOutDb.TransId.Value; * cashOutDb.IsDeleted = true; * cashOutDb.DeleteReason = deleteReason; * cashOutDb.DeletedBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(); * cashOutDb.TransId = null; * * * if (cashOutCheckDb != null) * db.CashOutReceiptChecks.Remove(cashOutCheckDb); * * if (cashOutInvkDb != null) * db.CashOutReceiptInvs.Remove(cashOutInvkDb); * * try * { * db.SaveChanges(); * * if (transID.HasValue) * AccountingHelper.DeleteTransaction(transID.Value); * * List<CashInInvoiceVm> cashOutVmObj = GetCashInvList(invID); * * if (invID != 0) * { * if (cashOutVmObj.Count == 0) * InvoiceHelper.ChangeInvStatus(invID, InvStatusEnum.Approved, true); * else * { * * InvoiceAP invDb = db.InvoiceAPs.Where(x => x.InvoiceId == invID).FirstOrDefault(); * * decimal InvoiceTotals = invDb.InvoiceTotalAPs.Sum(s => s.TotalAmount); * * decimal? totalPaidAmount = cashOutVmObj.Sum(s => s.PaidAmount); * * if (totalPaidAmount == null) * InvoiceHelper.ChangeInvStatus(invID, InvStatusEnum.Approved, true); * else * { * if (totalPaidAmount == InvoiceTotals) * InvoiceHelper.ChangeInvStatus(invID, InvStatusEnum.Paid, true); * if (totalPaidAmount < InvoiceTotals) * InvoiceHelper.ChangeInvStatus(invID, InvStatusEnum.PartiallyPaid, true); * } * } * } * * isSaved = "true"; * } * catch * { * isSaved = "false"; * } * * * * return isSaved; * * } */ internal static string AddEditOpenCashReceipt(CashInVm cashInVmObj, out int savedReceiptId, bool addToTrans = true) { string isSaved = "true"; AccountingEntities db = new AccountingEntities(); int receiptId = cashInVmObj.ReceiptId; savedReceiptId = receiptId; CashOutReceipt cashDbObj; if (receiptId == 0) { cashDbObj = new CashOutReceipt(); } else { cashDbObj = db.CashOutReceipts.Include("CashOutReceiptChecks") .Include("CashOutReceiptInvs") .Where(x => x.ReceiptId == receiptId).FirstOrDefault(); //Delete invoice list .. will insert it again var invList = cashDbObj.CashOutReceiptInvs.ToList(); foreach (var item in invList) { cashDbObj.CashOutReceiptInvs.Remove(item); } //Delete check list .. will insert it again var checkList = cashDbObj.CashOutReceiptChecks.ToList(); foreach (var item in checkList) { cashDbObj.CashOutReceiptChecks.Remove(item); } } Mapper.CreateMap <CashInVm, CashOutReceipt>() .ForMember(x => x.CashOutReceiptInvs, y => y.Ignore()) .ForMember(x => x.CashOutReceiptChecks, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(cashInVmObj, cashDbObj); CashOutReceiptCheck cashCheckDb; foreach (var item in cashInVmObj.CashInReceiptChecks) { if (!string.IsNullOrEmpty(item.CheckNumber)) { cashCheckDb = new CashOutReceiptCheck(); Mapper.CreateMap <CashInCheckVm, CashOutReceiptCheck>().IgnoreAllNonExisting(); Mapper.Map(item, cashCheckDb); cashDbObj.CashOutReceiptChecks.Add(cashCheckDb); } } using (TransactionScope transaction = new TransactionScope()) { try { if (receiptId == 0) { cashDbObj.ReceiptCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.CashOut, true); db.CashOutReceipts.Add(cashDbObj); } db.SaveChanges(); cashInVmObj.ReceiptId = cashDbObj.ReceiptId; cashInVmObj.ReceiptCode = cashDbObj.ReceiptCode; savedReceiptId = cashInVmObj.ReceiptId; #region Add To Transaction Table if (addToTrans) { string creditAccountId = ""; if (cashInVmObj.ShipperId != null) { creditAccountId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.ShipperId.Value, "Shipper", "ShipperId"); } if (cashInVmObj.CarrierId != null) { creditAccountId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.CarrierId.Value, "Carrier", "CarrierId"); } if (cashInVmObj.ContractorId != null) { creditAccountId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.ContractorId.Value, "Contractor", "ContractorId"); } if (cashInVmObj.AgentId != null) { creditAccountId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.AgentId.Value, "Agent", "AgentId"); } if (cashInVmObj.ConsigneeId != null) { creditAccountId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.ConsigneeId.Value, "Consignee", "ConsigneeId"); } //AccTransaction accTran = new AccTransaction() //{ // CreateBy = AdminHelper.GetCurrentUserId(), // CreateDate = DateTime.Now, // TransactionName = "pay open balance" //}; //AccTransactionDetail accTranDetail = new AccTransactionDetail(); //accTranDetail.AccountId = creditAccountId; //accTranDetail.DebitAmount = cashInVmObj.ReceiptAmount.Value; //accTranDetail.CurrencyId = cashInVmObj.CurrencyId; //accTran.AccTransactionDetails.Add(accTranDetail); //db.AccTransactions.Add(accTran); //db.SaveChanges(); AddReceiptToTransTable(creditAccountId, cashInVmObj, true); } #endregion transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } catch (Exception e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } } return(isSaved); }
internal static string AddEditAgentNote(AgentNoteVm agentNoteVm) { string isSaved = "true"; AccountingEntities db = new AccountingEntities(); AgentNote agNoteDb; int agNoteId = agentNoteVm.AgentNoteId; if (agNoteId == 0) { agNoteDb = new AgentNote(); } else { agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault(); } Mapper.CreateMap <AgentNoteVm, AgentNote>() .ForMember(x => x.AgentNoteDetails, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(agentNoteVm, agNoteDb); AgentNoteDetail agNoteDetail; Mapper.CreateMap <AgentNoteDetailVm, AgentNoteDetail>().IgnoreAllNonExisting(); foreach (var item in agentNoteVm.AgentNoteDetails) { if (item.IsSelected) { agNoteDetail = new AgentNoteDetail(); Mapper.Map(item, agNoteDetail); agNoteDb.AgentNoteDetails.Add(agNoteDetail); } } using (TransactionScope transaction = new TransactionScope()) { try { string agentAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(agNoteDb.AgentId, "Agent", "AgentId"); if (string.IsNullOrEmpty(agentAccId)) { agentAccId = AccountingChartHelper.AddAgentToChart(agNoteDb.AgentId, agNoteDb.AgentNoteType); } if (agNoteId == 0) { agNoteDb.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, true); db.AgentNotes.Add(agNoteDb); } db.SaveChanges(); if (agNoteId == 0) { agentNoteVm.AgentId = agNoteDb.AgentId; agentNoteVm.AgentNoteCode = agNoteDb.AgentNoteCode; //Add invoice to accounting transactions table AddAgentToTransTable(agentAccId, agentNoteVm); OperationHelper.ChangeOperationStatus(agentNoteVm.OperationId, (byte)StatusEnum.InvoiceIssued); } isSaved = "true" + agNoteDb.AgentNoteId; transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; AdminHelper.LastIdRemoveOne(PrefixForEnum.AgentNote); } catch (Exception e) { isSaved = "false " + e.Message; AdminHelper.LastIdRemoveOne(PrefixForEnum.AgentNote); } } return(isSaved); }
/// <summary> /// Add Invoice amounts to the accounting transactions table /// </summary> /// <param name="clientAccId">shipeer/ consignee account Id</param> /// <param name="invVm">Invoice Vm obj</param> private static void AddInvToTransTable(string clientAccId, InvoiceVm invoiceVm) { AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Invoice Number " + invoiceVm.InvoiceCode, TransactionNameAr = "فاتورة رقم " + invoiceVm.InvoiceCode }; //Get Cost list // var operCostObj = AccountingHelper.GetOperationCost(invoiceVm.OperationId, invoiceVm.HouseBillId); var operCostList = invoiceVm.InvoiceDetails; var operCostTotalList = invoiceVm.InvoiceTotals; //GetHbInvTotal(invoiceVm.InvoiceType, ref operCostList, ref operCostTotalList); //Tax Deposit AccountId string taxDepositAccId = ""; if (operCostTotalList.FirstOrDefault().TaxDepositAmount != 0) { taxDepositAccId = GetTaxDepositAccountId(invoiceVm.OrderFrom, invoiceVm.ShipperId, invoiceVm.ConsigneeId); } AccTransactionDetailVm accTransDetDebit; AccTransactionDetailVm accTransDetCredit; AccTransactionDetailVm accTransDetVAT; foreach (var item in operCostTotalList) { accTransDetDebit = new AccTransactionDetailVm(); accTransDetDebit.AccountId = clientAccId; accTransDetDebit.DebitAmount = item.TotalAmount; accTransDetDebit.CurrencyId = item.CurrencyId; accTransDetCredit = new AccTransactionDetailVm(); accTransDetCredit.AccountId = ((int)AccountingChartEnum.SoldServices).ToString(); accTransDetCredit.CreditAmount = item.TotalBeforeTax; accTransDetCredit.CurrencyId = item.CurrencyId; accTrans.AccTransactionDetails.Add(accTransDetDebit); accTrans.AccTransactionDetails.Add(accTransDetCredit); if (item.VatTaxAmount != 0) { accTransDetVAT = new AccTransactionDetailVm(); accTransDetVAT.AccountId = ((int)AccountingChartEnum.VAT).ToString(); accTransDetVAT.CreditAmount = item.VatTaxAmount; accTransDetVAT.CurrencyId = item.CurrencyId; accTrans.AccTransactionDetails.Add(accTransDetVAT); } if (!string.IsNullOrEmpty(taxDepositAccId)) { AccTransactionDetailVm accTransTaxDepDebit = new AccTransactionDetailVm(); accTransTaxDepDebit.AccountId = taxDepositAccId; accTransTaxDepDebit.DebitAmount = item.TaxDepositAmount; accTransTaxDepDebit.CurrencyId = item.CurrencyId; accTrans.AccTransactionDetails.Add(accTransTaxDepDebit); } } int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "Invoice", invoiceVm.InvoiceId, "InvoiceId"); }
public static OpenBalanceVm GetOpenBalanceInfo(string tbName, int libId, string pkName) { OpenBalanceVm balanceVm = new OpenBalanceVm(); balanceVm.TbName = tbName; balanceVm.LibItemId = libId; balanceVm.CreateDate = DateTime.Now; balanceVm.IsCreditAgent = false; string accountId = ""; accountId = AccountingChartHelper.GetAccountIdByPkAndTbName(libId, tbName, pkName); AccountingEntities db = new AccountingEntities(); //Get Transaction details for open balance var accTanDet = db.AccTransactionDetails.Include("AccTransaction") .Where(x => x.AccountId == accountId && x.AccTransaction.TransactionName == "open balance").ToList(); if (accTanDet.Count > 0) { balanceVm.TransId = accTanDet.FirstOrDefault().TransId; } int?bankAccCurrId = null; //For bank Acc will get only the currency for this bank if (tbName == "BankAccount") { bankAccCurrId = db.BankAccounts.Where(x => x.BankAccId == libId).FirstOrDefault().CurrencyId; } //Get Currency List // Dictionary<int, string> currList = ListCommonHelper.GetCurrencyList(); List <CurrencyAcc> currList; if (bankAccCurrId == null) { currList = db.CurrencyAccs.ToList(); } else { currList = db.CurrencyAccs.Where(x => x.CurrencyId == bankAccCurrId).ToList(); } OpenBalanceDetailVm openBalanceDet; foreach (var item in currList) { openBalanceDet = new OpenBalanceDetailVm(); openBalanceDet.CurrencyId = item.CurrencyId; openBalanceDet.CurrencySign = item.CurrencySign; openBalanceDet.CurrencyAccountId = item.AccountId; openBalanceDet.LibItemId = libId; //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; openBalanceDet.TransId = openAccTran.TransId; } balanceVm.OpenBalanceDetails.Add(openBalanceDet); } return(balanceVm); }
internal static string AddEditInvoice(InvoiceVm invoiceVm) { string isSaved = "true"; AccountingEntities db = new AccountingEntities(); int invoiceId = invoiceVm.InvoiceId; byte invFor = invoiceVm.InvoiceType; // int hbId = invoiceVm.HouseBillId; InvoiceAP invDb; if (invoiceId == 0) { invDb = new InvoiceAP(); } else { invDb = db.InvoiceAPs.Include("InvoiceDetailAPs").Include("InvoiceTotalAPs") .Where(x => x.InvoiceId == invoiceId).FirstOrDefault(); //Delete Invoice details and totals .. will insert it again var invDbTotals = invDb.InvoiceTotalAPs; var invDbDetails = invDb.InvoiceDetailAPs; foreach (var item in invDbDetails) { invDb.InvoiceDetailAPs.Remove(item); } foreach (var item in invDbTotals) { invDb.InvoiceTotalAPs.Remove(item); } } Mapper.CreateMap <InvoiceVm, InvoiceAP>() .ForMember(x => x.InvoiceTotalAPs, y => y.Ignore()) .ForMember(x => x.InvoiceDetailAPs, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(invoiceVm, invDb); InvoiceDetailAP invDetail; Mapper.CreateMap <InvoiceDetailVm, InvoiceDetailAP>().IgnoreAllNonExisting(); foreach (var item in invoiceVm.InvoiceDetails) { if (item.IsSelected == true) { invDetail = new InvoiceDetailAP(); Mapper.Map(item, invDetail); invDb.InvoiceDetailAPs.Add(invDetail); } } InvoiceTotalAP invTotalDb; foreach (var item in invoiceVm.InvoiceTotals) { invTotalDb = new InvoiceTotalAP() { CurrencyId = item.CurrencyId, TotalAmount = item.TotalAmount, CurrencySign = item.CurrencySign }; invDb.InvoiceTotalAPs.Add(invTotalDb); } using (TransactionScope transaction = new TransactionScope()) { try { //Add shipper or consignee to accounting chart string creditAccountId = ""; if (invFor == 1) //carrier { creditAccountId = AccountingChartHelper .GetAccountIdByPkAndTbName(invoiceVm.CarrierId.Value, "Carrier", "CarrierId"); if (string.IsNullOrEmpty(creditAccountId)) { creditAccountId = AccountingChartHelper.AddCarrierToChart(invoiceVm.CarrierId.Value); } } else if (invFor == 2) //Contractor { creditAccountId = AccountingChartHelper .GetAccountIdByPkAndTbName(invoiceVm.ContractorId.Value, "Contractor", "ContractorId"); if (string.IsNullOrEmpty(creditAccountId)) { creditAccountId = AccountingChartHelper.AddContractorToChart(invoiceVm.ContractorId.Value); } } else if (invFor == 3) //Custom Clearance { creditAccountId = AccountingChartHelper.GetCCCashDepAccountId(invoiceVm.OperationId); if (!string.IsNullOrEmpty(creditAccountId)) { invDb.InvStatusId = 4; //paid with cash deposit } else // In this case there was no cash deposit paid .. I added an account to sotre //any credit amount for custom clearance { creditAccountId = ((int)AccountingChartEnum.CustomClearanceSupplier).ToString(); } } if (invoiceId == 0) { invDb.InvoiceCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.APInvoice, true); db.InvoiceAPs.Add(invDb); } db.SaveChanges(); invoiceVm.InvoiceId = invDb.InvoiceId; invoiceVm.InvoiceCode = invDb.InvoiceCode; //Change HB status if (invoiceId == 0) { //Add invoice to accounting transactions table if (!string.IsNullOrEmpty(creditAccountId)) { AddAPInvToTransTable(creditAccountId, invoiceVm); } //if (invFor == 3) //Custom Clearance if (invFor == 3) //will link the cash out receipts with same currency to this invoice as it is paid { int operId = invoiceVm.OperationId; int savedInvId = invoiceVm.InvoiceId; int currId = invoiceVm.InvCurrencyId; decimal invAmount = invoiceVm.InvoiceTotals.FirstOrDefault().TotalAmount; //Get cashout receiptIds var cashoutReceiptIds = db.CashOutReceipts.Include("CashOutReceiptInvs") .Where(x => x.OperationId == operId && x.CurrencyId == currId) .ToList(); CashOutReceiptInv cashOutReceiptInv; decimal prevPaidFromReceipt, receiptAmount, amountToPay = 0; foreach (var item in cashoutReceiptIds) { receiptAmount = item.ReceiptAmount; //Get what paid before by this receipt prevPaidFromReceipt = item.CashOutReceiptInvs.Sum(x => x.PaidAmount); amountToPay = receiptAmount - prevPaidFromReceipt; if (amountToPay <= 0) //This receipt total amount is used by another invoices { continue; } if (invAmount <= 0) //This Invoice is total paid { break; } if (amountToPay > invAmount) { amountToPay = invAmount; } //Add cash out receipt invoice cashOutReceiptInv = new CashOutReceiptInv(); cashOutReceiptInv.ReceiptId = item.ReceiptId; cashOutReceiptInv.InvoiceId = savedInvId; cashOutReceiptInv.PaidAmount = amountToPay; db.CashOutReceiptInvs.Add(cashOutReceiptInv); invAmount = invAmount - amountToPay; } db.SaveChanges(); } // HouseBillHelper.ChangeHBStatus(invDb.HouseBillId, (byte)StatusEnum.InvoiceIssued); OperationHelper.ChangeOperationStatus(invDb.OperationId, (byte)StatusEnum.InvoiceIssued); } transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } catch (Exception e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } } return(isSaved); }
internal static void AddReceiptToTransTable(string debitAccountId, CashInVm cashInVmObj, bool IsOpenBalancePayment = false) { //Check Payment type string creditAccId = ""; byte paymentType = cashInVmObj.PaymentTermId; switch (paymentType) { case 1: //cash creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.CurrencyId, "Currency", "CurrencyId"); if (string.IsNullOrEmpty(creditAccId)) { string parentAccountId = ((int)AccountingChartEnum.Cash).ToString(); //Add new accountId to the chart creditAccId = AccountingChartHelper .AddAccountToChart(cashInVmObj.CurrencySign, cashInVmObj.CurrencySign, parentAccountId); AccountingChartHelper.AddAccountIdToObj(creditAccId, "Currency", cashInVmObj.CurrencyId, "CurrencyId"); } break; case 3: // Bank Cash Deposit int bankAccountId = cashInVmObj.BankAccId.Value; int bankId = cashInVmObj.BankId.Value; creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(bankAccountId, "BankAccount", "BankAccId"); if (string.IsNullOrEmpty(creditAccId)) { creditAccId = AccountingChartHelper.AddBankAccountToChart(bankId, bankAccountId); } break; case 4: //Check creditAccId = ((int)AccountingChartEnum.NotesPayable).ToString(); break; default: break; } AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Cash Out Receipt Number " + cashInVmObj.ReceiptCode + (IsOpenBalancePayment ? " pay open balance " : ""), TransactionNameAr = "ايصال صرف نقدية رقم " + cashInVmObj.ReceiptCode }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccountId, CreditAmount = 0, CurrencyId = cashInVmObj.CurrencyId, DebitAmount = cashInVmObj.ReceiptAmount.Value }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = cashInVmObj.ReceiptAmount.Value, CurrencyId = cashInVmObj.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashInVmObj.ReceiptId, "ReceiptId"); }
internal static string AddEditCashReceipt(CashInVm cashInVmObj, out int savedReceiptId, bool addToTrans = true) { string isSaved = "true"; AccountingEntities db = new AccountingEntities(); int receiptId = cashInVmObj.ReceiptId; savedReceiptId = receiptId; CashOutReceipt cashDbObj; if (receiptId == 0) { cashDbObj = new CashOutReceipt(); } else { cashDbObj = db.CashOutReceipts.Include("CashOutReceiptChecks") .Include("CashOutReceiptInvs") .Where(x => x.ReceiptId == receiptId).FirstOrDefault(); //Delete invoice list .. will insert it again var invList = cashDbObj.CashOutReceiptInvs.ToList(); foreach (var item in invList) { cashDbObj.CashOutReceiptInvs.Remove(item); } //Delete check list .. will insert it again var checkList = cashDbObj.CashOutReceiptChecks.ToList(); foreach (var item in checkList) { cashDbObj.CashOutReceiptChecks.Remove(item); } } Mapper.CreateMap <CashInVm, CashOutReceipt>() .ForMember(x => x.CashOutReceiptInvs, y => y.Ignore()) .ForMember(x => x.CashOutReceiptChecks, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(cashInVmObj, cashDbObj); CashOutReceiptCheck cashCheckDb; foreach (var item in cashInVmObj.CashInReceiptChecks) { if (!string.IsNullOrEmpty(item.CheckNumber)) { cashCheckDb = new CashOutReceiptCheck(); Mapper.CreateMap <CashInCheckVm, CashOutReceiptCheck>().IgnoreAllNonExisting(); Mapper.Map(item, cashCheckDb); cashDbObj.CashOutReceiptChecks.Add(cashCheckDb); } } if (cashInVmObj.OperationId != null) //CC Cash Deposit { CashOutCCCashDeposit cashDeposit = new CashOutCCCashDeposit(); cashDeposit.OperationId = cashInVmObj.OperationId.Value; cashDeposit.ReceiptId = cashInVmObj.ReceiptId; cashDbObj.CashOutCCCashDeposits.Add(cashDeposit); } else if (cashInVmObj.AgentId == null) //Cash Receipt for invoice { //Add Receipt invoices CashOutReceiptInv cashInvDb; foreach (var item in cashInVmObj.CashInReceiptInvs) { if (item.IsSelected) { cashInvDb = new CashOutReceiptInv(); Mapper.CreateMap <CashInInvoiceVm, CashOutReceiptInv>().IgnoreAllNonExisting(); item.CashInReceipt = null; Mapper.Map(item, cashInvDb); cashDbObj.CashOutReceiptInvs.Add(cashInvDb); } } } else //Cash Receipt for Agent Note { //Add Receipt Agent Notes CashOutReceiptAgNote cashAgNoteDb; foreach (var item in cashInVmObj.CashInReceiptInvs) { if (item.IsSelected) { cashAgNoteDb = new CashOutReceiptAgNote(); Mapper.CreateMap <CashInInvoiceVm, CashOutReceiptAgNote>().IgnoreAllNonExisting(); item.CashInReceipt = null; Mapper.Map(item, cashAgNoteDb); cashDbObj.CashOutReceiptAgNotes.Add(cashAgNoteDb); } } } using (TransactionScope transaction = new TransactionScope()) { try { if (receiptId == 0) { cashDbObj.ReceiptCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.CashOut, true); db.CashOutReceipts.Add(cashDbObj); } db.SaveChanges(); cashInVmObj.ReceiptId = cashDbObj.ReceiptId; cashInVmObj.ReceiptCode = cashDbObj.ReceiptCode; savedReceiptId = cashInVmObj.ReceiptId; #region Add To Transaction Table if (addToTrans) { //Add shipper or consignee to accounting chart string debitAccountId = ""; if (cashInVmObj.OperationId != null) //CC Cash Deposit { debitAccountId = AccountingChartHelper.GetCCCashDepAccountId(cashInVmObj.OperationId.Value); if (string.IsNullOrEmpty(debitAccountId)) { debitAccountId = AccountingChartHelper.AddCCCashDepositToChart(cashInVmObj.OperationId.Value); } } else if (!string.IsNullOrEmpty(cashInVmObj.PartnerAccountId)) //Partner Drawing { debitAccountId = cashInVmObj.PartnerAccountId; } else if (cashInVmObj.AgentId == null) //Cash Receipt for invoice { if (cashInVmObj.InvoiceType == 1) //carrier { debitAccountId = AccountingChartHelper .GetAccountIdByPkAndTbName(cashInVmObj.CarrierId.Value, "Carrier", "CarrierId"); if (string.IsNullOrEmpty(debitAccountId)) { debitAccountId = AccountingChartHelper.AddCarrierToChart(cashInVmObj.CarrierId.Value); } } else if (cashInVmObj.InvoiceType == 2) //contractor { debitAccountId = AccountingChartHelper .GetAccountIdByPkAndTbName(cashInVmObj.ContractorId.Value, "Contractor", "ContractorId"); if (string.IsNullOrEmpty(debitAccountId)) { debitAccountId = AccountingChartHelper.AddContractorToChart(cashInVmObj.ContractorId.Value); } } else if (cashInVmObj.InvoiceType == 3) //custom clearance .. 22/11/2016 { debitAccountId = ((int)AccountingChartEnum.CustomClearanceSupplier).ToString(); } } else //Cash Receipt for Agent Note { debitAccountId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.AgentId.Value, "Agent", "AgentId"); if (string.IsNullOrEmpty(debitAccountId)) { debitAccountId = AccountingChartHelper.AddAgentToChart(cashInVmObj.AgentId.Value, 2); //AgentNoteType = 2 .. Credit Agent } } if (receiptId == 0) { //Add invoice to accounting transactions table AddReceiptToTransTable(debitAccountId, cashInVmObj); foreach (var item in cashInVmObj.CashInReceiptInvs) { if (item.IsSelected) { if (item.InvoiceId != 0) //Cash Receipt for invoice { //Change Invoice status if (item.AmountDue == 0) { InvoiceHelper.ChangeInvStatus(item.InvoiceId, InvStatusEnum.Paid, true); } else if (item.CollectedAmount != 0 && item.AmountDue != 0) { InvoiceHelper.ChangeInvStatus(item.InvoiceId, InvStatusEnum.PartiallyPaid, true); } } else //Cash Receipt for Agent Note { //Change Agent Note status if (item.AmountDue == 0) { AgentNoteHelper.ChangeAgNoteStatus(item.AgentNoteId, InvStatusEnum.Paid); } else if (item.CollectedAmount != 0 && item.AmountDue != 0) { AgentNoteHelper.ChangeAgNoteStatus(item.AgentNoteId, InvStatusEnum.PartiallyPaid); } } } } } } #endregion transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } catch (Exception e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } } return(isSaved); }
//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); }