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"); }
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 AgentNoteVm GetAgentNoteInfo(int operId, byte noteType, int agNoteId = 0, bool forEdit = true) { AgentNoteVm agNoteVm = new AgentNoteVm(noteType); OperationsEntities db1 = new OperationsEntities(); AccountingEntities db = new AccountingEntities(); AgentNote agNoteDb; if (agNoteId != 0) { agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault(); Mapper.CreateMap <AgentNote, AgentNoteVm>().IgnoreAllNonExisting(); Mapper.CreateMap <AgentNoteDetail, AgentNoteDetailVm>().IgnoreAllNonExisting(); Mapper.Map(agNoteDb, agNoteVm); operId = agNoteDb.OperationId; //agNoteVm.FromPort = operationInfo.FromPort; //agNoteVm.ToPort = operationInfo.ToPort; } else { agNoteDb = new AgentNote(); agNoteVm.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, false); } var operationInfo = db1.OperationViews.Where(x => x.OperationId == operId).FirstOrDefault(); Mapper.CreateMap <OperationView, AgentNoteVm>() .ForMember(x => x.CreateBy, y => y.Ignore()) .ForMember(x => x.CreateDate, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(operationInfo, agNoteVm); if (operationInfo.OrderFrom == 1) { agNoteVm.CustomerName = operationInfo.ShipperNameEn; } else { agNoteVm.CustomerName = operationInfo.ConsigneeNameEn; } agNoteVm.AgentName = operationInfo.AgentNameEn; var operCostObj = AccountingHelper.GetOperationCost(agNoteVm.OperationId, 0); var agentCostList = operCostObj.OperationCostAccVms.Where(x => x.IsAgent).ToList(); var agentCostTotalList = operCostObj.OperationCostTotalAccVms.Where(x => x.TotalAgentRate != 0).ToList(); var operCostList = db1.OperationCosts.Include("OperationCostLib").Include("Currency") .Where(x => x.OperationId == operId && x.IsAgentCost == true).ToList(); agNoteVm.ContainerSummary = operCostObj.ContainerSummary; agNoteVm.OperationCostAccVms = agentCostList; agNoteVm.OperationCostTotalAccVms = agentCostTotalList; agNoteVm.HouseBillId = agentCostList.FirstOrDefault().HouseBillId; if (agentCostList.Count > 0) { agNoteVm.CurrencyId = agentCostList.FirstOrDefault().CurrencyId; agNoteVm.CurrencySign = agentCostList.FirstOrDefault().CurrencySign; } if (forEdit) { //Get prev agent note details for this operation List <int> usedCost = db.AgentNoteDetails .Where(x => x.AgentNote.OperationId == operId) .Select(x => x.OperCostId) .ToList(); var newCosts = operCostList.Where(x => !usedCost.Contains(x.OperCostId)).ToList(); AgentNoteDetailVm agentNoteDetailVm; foreach (var item in newCosts) { agentNoteDetailVm = new AgentNoteDetailVm() { AgentNoteDetailId = 0, CostName = item.OperationCostLib.OperCostNameEn, CurrencyId = item.CurrencyId, CurrencySign = item.Currency.CurrencySign, ExchangeRate = 1, MainAmount = agNoteVm.AgentNoteType == 1 ? item.OperationCostSelling : item.OperationCostNet, MainCurrencyId = item.CurrencyId, MainCurrencySign = item.Currency.CurrencySign, OperCostId = item.OperCostId, OperCostLibId = item.OperCostLibId }; agNoteVm.AgentNoteDetails.Add(agentNoteDetailVm); } } else { foreach (var item in agNoteVm.AgentNoteDetails) { item.CostName = operCostList .Where(x => x.OperCostId == item.OperCostId).FirstOrDefault().OperationCostLib.OperCostNameEn; } } return(agNoteVm); }
public ActionResult AddEditAgentNote(AgentNoteVm agentNoteVm) { string isSaved = AgentNoteHelper.AddEditAgentNote(agentNoteVm); return(Json(isSaved)); }