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); }
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); }
//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); }