public JsonResult GetPriceSheetsByProject(Guid projectId, DateTime?fromDate, DateTime?toDate, string orderType) { var model = new PriceSheetViewModel(); var priceSheets = new List <PriceSheetViewModel>(); if (orderType.Equals("Sample") || orderType.Equals("Tooling")) { var dbPriceSheets = _priceSheetRepository.GetPriceSheets().Where(x => x.ProjectId == projectId && x.IsQuote == true).ToList(); if (dbPriceSheets != null && dbPriceSheets.Count > 0) { foreach (var priceSheet in dbPriceSheets) { var priceSheetModel = new PriceSheetConverter().ConvertToView(priceSheet); priceSheets.Add(priceSheetModel); } } } else { var dbPriceSheets = _priceSheetRepository.GetPriceSheets().Where(x => x.ProjectId == projectId && x.IsProduction == true).ToList(); if (dbPriceSheets != null && dbPriceSheets.Count > 0) { foreach (var priceSheet in dbPriceSheets) { var priceSheetModel = new PriceSheetConverter().ConvertToView(priceSheet); priceSheets.Add(priceSheetModel); } } } if (fromDate != null) { priceSheets = priceSheets.Where(x => x.DueDate >= fromDate).ToList(); } if (toDate != null) { priceSheets = priceSheets.Where(x => x.DueDate <= toDate).ToList(); } model.PriceSheets = priceSheets; return(Json(model.PriceSheets, JsonRequestBehavior.AllowGet)); }
public JsonResult Edit(PriceSheetViewModel priceSheet) { var operationResult = new OperationResult(); PriceSheet priceSheetToUpdate = new PriceSheet(); var priceSheetId = priceSheet.PriceSheetId; priceSheetToUpdate = new PriceSheetConverter().ConvertToDomain(priceSheet); operationResult = _priceSheetRepository.UpdatePriceSheet(priceSheetToUpdate); if (operationResult.Success) { if (priceSheet.CostDetailList != null && priceSheet.CostDetailList.Count > 0) { foreach (var costDetail in priceSheet.CostDetailList) { var priceDetail = priceSheet.PriceDetailList.FirstOrDefault(x => x.ProjectPartId == costDetail.ProjectPartId); var tempPart = _projectPartRepository.GetProjectPart(costDetail.ProjectPartId); { tempPart.Weight = costDetail.Weight; tempPart.AnnualUsage = (int)costDetail.AnnualUsage; tempPart.Cost = costDetail.Cost; tempPart.PatternCost = costDetail.PatternCost; tempPart.FixtureCost = costDetail.FixtureCost; tempPart.PriceSheetId = priceSheetId; tempPart.Price = priceDetail.Price; tempPart.PatternPrice = priceDetail.PatternPrice; tempPart.FixturePrice = priceDetail.FixturePrice; } operationResult = _projectPartRepository.UpdateProjectPart(tempPart); } } if (priceSheetToUpdate.IsProduction) { operationResult = EditPriceSheetParts(priceSheetToUpdate.PriceSheetId); } operationResult.ReferenceId = priceSheetId; } return(Json(operationResult, JsonRequestBehavior.AllowGet)); }
public ActionResult ConvertToProduction(Guid priceSheetId, Guid quoteId) { var model = new PriceSheetViewModel(); var existingPriceSheet = _priceSheetRepository.GetPriceSheet(priceSheetId); if (existingPriceSheet != null) { model = new PriceSheetConverter().ConvertToView(existingPriceSheet); var newPriceSheetNumber = PriceSheetNumber(); model.Number = newPriceSheetNumber; _priceSheetRepository.RemovePriceSheetNumber(newPriceSheetNumber); model.QuoteId = quoteId; var quoteParts = _projectPartRepository.GetProjectParts().Where(x => x.QuoteId == quoteId).ToList(); if (model.CostDetailList != null && quoteParts != null) { var deletePartList = new List <PriceSheetCostDetailViewModel>(); foreach (var costPart in model.CostDetailList) { var existing = quoteParts.FirstOrDefault(x => x.ProjectPartId == costPart.ProjectPartId); if (existing == null) { deletePartList.Add(costPart); } } if (deletePartList != null && deletePartList.Count > 0) { foreach (var deletePart in deletePartList) { model.CostDetailList.Remove(deletePart); } } } } return(View(model)); }
public JsonResult CreateProductionPriceSheet(PriceSheetViewModel priceSheet) { var operationResult = new OperationResult(); var existingPriceSheet = _priceSheetRepository.GetPriceSheet(priceSheet.Number); if (existingPriceSheet == null) { priceSheet.IsProduction = true; return(Create(priceSheet)); } else { priceSheet.IsProduction = true; return(Edit(priceSheet)); } }
public ActionResult Quote(Guid rfqId, bool includeRaw, bool includeMachined) { var model = new PriceSheetViewModel(); var newPriceSheetNumber = PriceSheetNumber(); model.Number = newPriceSheetNumber; model.RfqId = rfqId; model.IncludeRaw = includeRaw; model.IncludeMachined = includeMachined; _priceSheetRepository.RemovePriceSheetNumber(newPriceSheetNumber); var parts = new List <PriceSheetPartViewModel>(); var tempParts = _projectPartRepository.GetProjectParts().Where(x => x.RfqId == rfqId).OrderBy(x => x.Number).ToList(); if (tempParts != null && tempParts.Count > 0) { foreach (var tempPart in tempParts) { if (tempPart.IsRaw && includeRaw) { PriceSheetPartViewModel convertedModel = new PriceSheetPartConverter().ConvertToCostView(tempPart); parts.Add(convertedModel); } else if (tempPart.IsMachined && includeMachined) { PriceSheetPartViewModel convertedModel = new PriceSheetPartConverter().ConvertToCostView(tempPart); parts.Add(convertedModel); } } } model.PriceSheetParts = parts.OrderBy(x => x.PartNumber).ToList(); return(View(model)); }
/// <summary> /// convert price sheet to view model /// </summary> /// <param name="priceSheet"></param> /// <returns></returns> public PriceSheetViewModel ConvertToView(PriceSheet priceSheet) { PriceSheetViewModel model = new PriceSheetViewModel(); var _projectRepository = new ProjectRepository(); var _rfqRepository = new RfqRepository(); var _countryRepository = new CountryRepository(); var _foundryDynamicsRepository = new FoundryDynamicsRepository(); var _customerDynamicsRepository = new CustomerDynamicsRepository(); var _priceSheetRepository = new PriceSheetRepository(); var _quoteRepository = new QuoteRepository(); var project = _projectRepository.GetProject(priceSheet.ProjectId); var rfq = _rfqRepository.GetRfq(priceSheet.RfqId); var country = _countryRepository.GetCountry((rfq != null) ? rfq.CountryId : Guid.Empty); var dynamicsFoundry = _foundryDynamicsRepository.GetFoundry((rfq != null) ? rfq.FoundryId : string.Empty); var dynamicsCustomer = _customerDynamicsRepository.GetCustomer((rfq != null) ? rfq.CustomerId : string.Empty); model.PriceSheetId = priceSheet.PriceSheetId; model.Number = (!string.IsNullOrEmpty(priceSheet.Number)) ? priceSheet.Number : "N/A"; model.RfqId = priceSheet.RfqId; model.ProjectMargin = priceSheet.ProjectMargin; model.ProjectName = (project != null && !string.IsNullOrEmpty(project.Name)) ? project.Name : "N/A"; model.RfqNumber = (rfq != null && !string.IsNullOrEmpty(rfq.Number)) ? rfq.Number : "N/A"; model.Country = (country != null && !string.IsNullOrEmpty(country.Name)) ? country.Name : "N/A"; model.Foundry = (dynamicsFoundry != null && !string.IsNullOrEmpty(dynamicsFoundry.VENDSHNM)) ? dynamicsFoundry.VENDSHNM : "N/A"; model.Customer = (dynamicsCustomer != null && !string.IsNullOrEmpty(dynamicsCustomer.SHRTNAME)) ? dynamicsCustomer.SHRTNAME : "N/A"; model.WAF = priceSheet.WAF; model.AnnualContainer = priceSheet.AnnualContainer; model.AnnualDollars = priceSheet.AnnualDollars; model.AnnualMargin = priceSheet.AnnualMargin; model.AnnualWeight = priceSheet.AnnualWeight; model.DollarContainer = priceSheet.DollarContainer; model.InsuranceDivisor = priceSheet.InsuranceDivisor; model.InsuranceDuty = priceSheet.InsuranceDuty; model.InsuranceFreight = priceSheet.InsuranceFreight; model.InsurancePercentage = priceSheet.InsurancePercentage; model.InsurancePremium = priceSheet.InsurancePremium; model.ToolingMargin = priceSheet.ToolingMargin; model.FixtureMargin = priceSheet.FixtureMargin; model.DueDate = priceSheet.ModifiedDate; model.PriceSheetType = priceSheet.IsQuote ? "Quote" : priceSheet.IsProduction ? "Production" : "N/A"; model.TotalWeight = priceSheet.AnnualWeight; model.PriceSheetParts = new List <PriceSheetPartViewModel>(); model.CostDetailList = new List <PriceSheetCostDetailViewModel>(); model.PriceDetailList = new List <PriceSheetPriceDetailViewModel>(); var priceSheetParts = _priceSheetRepository.GetPriceSheetParts(priceSheet.PriceSheetId).ToList(); if (priceSheetParts != null && priceSheetParts.Count > 0) { foreach (var priceSheetPart in priceSheetParts) { PriceSheetPartViewModel priceSheetPartModel = new PriceSheetPartViewModel(); if (priceSheet.IsQuote) { priceSheetPartModel = new PriceSheetPartConverter().ConvertToProjectPartView(priceSheetPart); } else if (priceSheet.IsProduction) { priceSheetPartModel = new PriceSheetPartConverter().ConvertToPartView(priceSheetPart); } model.PriceSheetParts.Add(priceSheetPartModel); PriceSheetCostDetailViewModel costDetail = new PriceSheetPartConverter().ConvertToCostView(priceSheetPart); model.CostDetailList.Add(costDetail); var priceDetail = new PriceSheetPartConverter().ConvertToPriceView(priceSheetPart); model.PriceDetailList.Add(priceDetail); model.TotalAnnualCost += costDetail.AnnualCost; model.TotalAnnualPrice += priceDetail.AnnualPrice; model.PriceSheetParts = model.PriceSheetParts.OrderBy(y => y.PartNumber).ToList(); var margin = (model.TotalAnnualPrice - model.TotalAnnualCost) / model.TotalAnnualPrice * 100; model.OverallMargin = margin.ToString("#.##") + '%'; } } model.BucketList = _priceSheetRepository.GetPriceSheetBuckets().Where(x => x.PriceSheetId == priceSheet.PriceSheetId).ToList(); var quotes = _quoteRepository.GetQuotes(); if (quotes != null && quotes.Count > 0) { foreach (var quote in quotes) { if (quote.PriceSheetId == priceSheet.PriceSheetId) { model.NoEdit = true; break; } } } if (_projectRepository != null) { _projectRepository.Dispose(); _projectRepository = null; } if (_rfqRepository != null) { _rfqRepository.Dispose(); _rfqRepository = null; } if (_countryRepository != null) { _countryRepository.Dispose(); _countryRepository = null; } if (_foundryDynamicsRepository != null) { _foundryDynamicsRepository.Dispose(); _foundryDynamicsRepository = null; } if (_customerDynamicsRepository != null) { _customerDynamicsRepository.Dispose(); _customerDynamicsRepository = null; } if (_priceSheetRepository != null) { _priceSheetRepository.Dispose(); _priceSheetRepository = null; } if (_quoteRepository != null) { _quoteRepository.Dispose(); _quoteRepository = null; } return(model); }
/// <summary> /// convert price sheet view model to domain /// </summary> /// <param name="model"></param> /// <returns></returns> public PriceSheet ConvertToDomain(PriceSheetViewModel model) { var _rfqRepository = new RfqRepository(); var rfq = _rfqRepository.GetRfq(model.RfqId); var priceSheet = new PriceSheet(); priceSheet.PriceSheetId = model.PriceSheetId; priceSheet.Number = model.Number; priceSheet.WAF = model.WAF; priceSheet.ProjectMargin = model.ProjectMargin; priceSheet.AnnualDollars = model.AnnualDollars; priceSheet.AnnualMargin = model.AnnualMargin; priceSheet.AnnualWeight = model.AnnualWeight; priceSheet.AnnualContainer = model.AnnualContainer; priceSheet.DollarContainer = model.DollarContainer; priceSheet.InsuranceFreight = model.InsuranceFreight; priceSheet.InsurancePercentage = model.InsurancePercentage; priceSheet.InsuranceDuty = model.InsuranceDuty; priceSheet.InsuranceDivisor = model.InsuranceDivisor; priceSheet.InsurancePremium = model.InsurancePremium; priceSheet.ToolingMargin = model.ToolingMargin; priceSheet.FixtureMargin = model.FixtureMargin; priceSheet.IsQuote = model.IsQuote; priceSheet.IsProduction = model.IsProduction; priceSheet.RfqId = model.RfqId; priceSheet.ProjectId = (rfq != null) ? rfq.ProjectId : (Guid?)null; priceSheet.PriceSheetBuckets = model.BucketList; if (model.CostDetailList != null && model.CostDetailList.Count > 0) { priceSheet.PriceSheetParts = new List <PriceSheetPart>(); foreach (var costDetail in model.CostDetailList) { var priceSheetPart = new PriceSheetPart(); priceSheetPart.PriceSheetPartId = costDetail.PriceSheetPartId; priceSheetPart.PriceSheetId = model.PriceSheetId; priceSheetPart.AddOnCost = costDetail.AddOn; priceSheetPart.AnnualCost = costDetail.AnnualCost; priceSheetPart.AnnualRawCost = costDetail.AnnualRawCost; priceSheetPart.AnnualUsage = costDetail.AnnualUsage; priceSheetPart.AvailableQuantity = (int)costDetail.AnnualUsage; priceSheetPart.Cost = costDetail.Cost; priceSheetPart.DutyCost = costDetail.Duty; priceSheetPart.FixtureCost = costDetail.FixtureCost; priceSheetPart.FOBCost = costDetail.FOBCost; priceSheetPart.MachineCost = costDetail.MachineCost; priceSheetPart.PatternCost = costDetail.PatternCost; priceSheetPart.PNumberCost = costDetail.PNumber; priceSheetPart.ProjectPartId = costDetail.ProjectPartId; priceSheetPart.PartId = null; priceSheetPart.RawCost = costDetail.RawCost; priceSheetPart.SurchargeCost = costDetail.Surcharge; priceSheetPart.IsQuote = model.IsQuote; priceSheetPart.IsProduction = model.IsProduction; var priceDetail = model.PriceDetailList.FirstOrDefault(x => x.ProjectPartId == costDetail.ProjectPartId); if (priceDetail != null) { priceSheetPart.AddOnPrice = priceDetail.AddOn; priceSheetPart.AnnualPrice = priceDetail.AnnualPrice; priceSheetPart.AnnualRawPrice = priceDetail.AnnualRawPrice; priceSheetPart.DutyPrice = priceDetail.Duty; priceSheetPart.FixturePrice = priceDetail.FixturePrice; priceSheetPart.FOBPrice = priceDetail.FOBPrice; priceSheetPart.MachinePrice = priceDetail.MachinePrice; priceSheetPart.PatternPrice = priceDetail.PatternPrice; priceSheetPart.PNumberPrice = priceDetail.PNumber; priceSheetPart.Price = priceDetail.Price; priceSheetPart.RawPrice = priceDetail.RawPrice; priceSheetPart.SurchargePrice = priceDetail.Surcharge; } priceSheet.PriceSheetParts.Add(priceSheetPart); } } if (_rfqRepository != null) { _rfqRepository.Dispose(); _rfqRepository = null; } return(priceSheet); }
public JsonResult Create(PriceSheetViewModel priceSheet) { var operationResult = new OperationResult(); var rfq = _rfqRepository.GetRfq(priceSheet.RfqId); var newPriceSheet = new PriceSheetConverter().ConvertToDomain(priceSheet); operationResult = _priceSheetRepository.SavePriceSheet(newPriceSheet); if (operationResult.Success && priceSheet.IsQuote) { rfq.IsOpen = false; operationResult = _rfqRepository.UpdateRfq(rfq); } var insertedPriceSheet = _priceSheetRepository.GetPriceSheet(priceSheet.Number); if (operationResult.Success) { if (priceSheet.CostDetailList != null && priceSheet.CostDetailList.Count > 0) { foreach (var costDetail in priceSheet.CostDetailList) { var priceDetail = priceSheet.PriceDetailList.FirstOrDefault(x => x.ProjectPartId == costDetail.ProjectPartId); var tempPart = _projectPartRepository.GetProjectPart(costDetail.ProjectPartId); { tempPart.Weight = costDetail.Weight; tempPart.AnnualUsage = (int)costDetail.AnnualUsage; tempPart.Cost = costDetail.Cost; tempPart.PatternCost = costDetail.PatternCost; tempPart.FixtureCost = costDetail.FixtureCost; tempPart.PriceSheetId = insertedPriceSheet.PriceSheetId; tempPart.Price = priceDetail.Price; tempPart.PatternPrice = priceDetail.PatternPrice; tempPart.FixturePrice = priceDetail.FixturePrice; } operationResult = _projectPartRepository.UpdateProjectPart(tempPart); } } if (operationResult.Success && priceSheet.IsQuote) { operationResult = _rfqRepository.UpdatePriceSheet(rfq.RfqId, priceSheet.Number); } else if (priceSheet.IsProduction && operationResult.Success) { if (priceSheet.QuoteId != Guid.Empty) { var quote = _quoteRepository.GetQuote(priceSheet.QuoteId); quote.IsOpen = false; operationResult = _quoteRepository.UpdateQuote(quote); } ConvertProjectPartsToParts(insertedPriceSheet.PriceSheetId); } } operationResult.ReferenceId = insertedPriceSheet.PriceSheetId; return(Json(operationResult, JsonRequestBehavior.AllowGet));; }