public void Save(Domain.Request _request, int userID, Domain.OrderStatus orderStatus = Domain.OrderStatus.Submitted) { var order = new Order(); order.LoadByPrimaryKey(_request.RequestID); var dborderStatus = new BLL.OrderStatus(); dborderStatus.LoadByCode(EnumService <Domain.OrderStatus> .GetCode(orderStatus)); order.ChangeStatus(dborderStatus.ID, CurrentContext.UserId); order.ApprovedBy = userID; order.ApprovedDate = DateTimeHelper.ServerDateTime; var orderDetail = new OrderDetail(); orderDetail.LoadAllByOrderID(_request.RequestID); while (!orderDetail.EOF) { var requestDetail = _request.RequestDetails.SingleOrDefault(r => r.RequestDetailId == orderDetail.ID); if (requestDetail == null) { orderDetail.MarkAsDeleted(); } else { //Set Activity if (requestDetail.ActivityGroup != null) { orderDetail.StoreID = requestDetail.ActivityGroup.Activity.ActivityID; orderDetail.DeliveryNote = requestDetail.ActivityGroup.IsDeliveryNote; } else { orderDetail.SetColumnNull("StoreID"); } //Set Manufacturer if (requestDetail.Manufacturer != null) { orderDetail.PreferredManufacturerID = requestDetail.Manufacturer.ManufacturerID; } else { orderDetail.SetColumnNull("PreferredManufacturerID"); } //Set PhysicalStore if (requestDetail.physicalStore != null) { orderDetail.PreferredPhysicalStoreID = requestDetail.physicalStore.PhysicalStoreID; } else { orderDetail.SetColumnNull("PreferredPhysicalStoreID"); } //Set ExpiryDate if (requestDetail.ExpiryDate.HasValue) { orderDetail.PreferredExpiryDate = requestDetail.ExpiryDate.Value; } else { orderDetail.SetColumnNull("PreferredExpiryDate"); } orderDetail.ApprovedQuantity = requestDetail.ApprovedQuantity; orderDetail.StockedOut = requestDetail.StockedOut; } orderDetail.MoveNext(); } foreach (var requestDetail in _request.RequestDetails.Where(r => r.RequestDetailId == 0).ToList()) { orderDetail.AddNew(); orderDetail.ItemID = requestDetail.Item.ItemID; orderDetail.UnitID = requestDetail.Unit.UnitID; orderDetail.Pack = requestDetail.RequestedQuantity; orderDetail.OrderID = order.ID; orderDetail.QtyPerPack = 1; orderDetail.Quantity = requestDetail.RequestedQuantity; orderDetail.ApprovedQuantity = requestDetail.ApprovedQuantity; orderDetail.StockedOut = requestDetail.StockedOut; if (requestDetail.ActivityGroup != null) { orderDetail.StoreID = requestDetail.ActivityGroup.Activity.ActivityID; orderDetail.DeliveryNote = requestDetail.ActivityGroup.IsDeliveryNote; } else { orderDetail.SetColumnNull("StoreID"); } //Set Manufacturer if (requestDetail.Manufacturer != null) { orderDetail.PreferredManufacturerID = requestDetail.Manufacturer.ManufacturerID; } else { orderDetail.SetColumnNull("PreferredManufacturerID"); } //Set PhysicalStore if (requestDetail.physicalStore != null) { orderDetail.PreferredPhysicalStoreID = requestDetail.physicalStore.PhysicalStoreID; } else { orderDetail.SetColumnNull("PreferredPhysicalStoreID"); } //Set ExpiryDate if (requestDetail.ExpiryDate.HasValue) { orderDetail.PreferredExpiryDate = requestDetail.ExpiryDate.Value; } else { orderDetail.SetColumnNull("PreferredExpiryDate"); } } order.Save(); orderDetail.Save(); }