public Error InsertOrUpdatePurchaseOrderHeaderTemp(PurchaseOrderHeaderTempModel poht, UserModel user, string lockGuid) { var error = validateModel(poht); if (!error.IsError) { // Check that the lock is still current if (!db.IsLockStillValid(typeof(PurchaseOrderHeaderTemp).ToString(), poht.Id, lockGuid)) { error.SetError(EvolutionResources.errRecordChangedByAnotherUser, "OrderNumber"); } else { PurchaseOrderHeaderTemp temp = null; if (poht.Id != 0) { temp = db.FindPurchaseOrderHeaderTemp(poht.Id); } if (temp == null) { temp = new PurchaseOrderHeaderTemp(); } Mapper.Map <PurchaseOrderHeaderTempModel, PurchaseOrderHeaderTemp>(poht, temp); db.InsertOrUpdatePurchaseOrderHeaderTemp(temp); poht.Id = temp.Id; } } return(error); }
public PurchaseOrderHeaderTempModel CopyPurchaseOrderToTemp(CompanyModel company, PurchaseOrderHeaderModel purchaseOrderHeader, UserModel user) { PurchaseOrderHeaderTempModel result = new PurchaseOrderHeaderTempModel(); PurchaseOrderHeaderTemp poht = new PurchaseOrderHeaderTemp(); // Clean the temp tables if (purchaseOrderHeader.Id > 0) { // Editing an existing order var poh = db.FindPurchaseOrderHeader(purchaseOrderHeader.Id); if (poh != null) { // Copy the header poht = db.FindPurchaseOrderHeaderTemps(company.Id) .Where(p => p.UserId == user.Id && p.OriginalRowId == purchaseOrderHeader.Id) .FirstOrDefault(); if (poht != null) { // Already exists in the temp tables so update it with the latest data int tempId = poht.Id; Mapper.Map <PurchaseOrderHeader, PurchaseOrderHeaderTemp>(poh, poht); poht.Id = tempId; poht.OriginalRowId = purchaseOrderHeader.Id; poht.UserId = user.Id; db.InsertOrUpdatePurchaseOrderHeaderTemp(poht); result = mapToModel(poht); } else { // Doesn't exist, so copy poht = Mapper.Map <PurchaseOrderHeader, PurchaseOrderHeaderTemp>(poh); poht.Id = 0; poht.OriginalRowId = purchaseOrderHeader.Id; poht.UserId = user.Id; db.InsertOrUpdatePurchaseOrderHeaderTemp(poht); result = mapToModel(poht); } // Now copy/merge the details db.CopyPurchaseOrderToTemp(company.Id, user.Id, purchaseOrderHeader.Id, poht.Id); result.Splitable = db.FindPurchaseOrderDetailTemps(company.Id, poht.Id).Count() > 0; } } else { // New purchase poht.CompanyId = company.Id; poht.UserId = user.Id; poht.OrderNumber = purchaseOrderHeader.OrderNumber; poht.OrderDate = purchaseOrderHeader.OrderDate; poht.SalespersonId = purchaseOrderHeader.SalespersonId; poht.BrandCategoryId = purchaseOrderHeader.BrandCategoryId; poht.LocationId = purchaseOrderHeader.LocationId; poht.CancelMessage = purchaseOrderHeader.CancelMessage; db.InsertOrUpdatePurchaseOrderHeaderTemp(poht); result = mapToModel(poht); } return(result); }