public Domain.Request FindSingle(int requestID) { var request = new Domain.Request(); var order = new Order(); order.LoadByPrimaryKey(requestID); request.RequestID = order.ID; request.OrderNumber = order.RefNo; request.LetterNumber = !order.IsColumnNull("LetterNo") ? order.LetterNo : ""; request.RequestedDate = order.EurDate; request.Client = _clientRepository.FindSingle(order.RequestedBy); request.Mode = _modeService.GetEnum(order.FromStore); request.PaymentTerm = _paymentTermService.FindSingle(order.PaymentTypeID); request.OrderStatus = _orderStatusService.GetEnum(order.OrderStatusID); var orderDetail = new OrderDetail(); orderDetail.LoadAllByOrderID(requestID); orderDetail.Rewind(); request.RequestDetails = new Collection <Domain.RequestDetail>(); while (!orderDetail.EOF) { var item = _itemRepository.FindSingle(orderDetail.ItemID); var unitOfIssue = _unitOfIssueRepository.FindSingle(orderDetail.UnitID); var requestDetail = new Domain.RequestDetail() { RequestDetailId = orderDetail.ID, Item = item, Unit = unitOfIssue, RequestedQuantity = orderDetail.Pack, ApprovedQuantity = !orderDetail.IsColumnNull("ApprovedQuantity") ? orderDetail.ApprovedQuantity : orderDetail.Pack, IsFirstLoad = orderDetail.IsColumnNull("ApprovedQuantity"), ActivityGroup = orderDetail.IsColumnNull(OrderDetail.ColumnNames.StoreID)?null:_activityRepository.FindSingle(orderDetail.StoreID, orderDetail.DeliveryNote), ExpiryDate = !orderDetail.IsColumnNull("PreferredExpiryDate") ? orderDetail.PreferredExpiryDate : (DateTime?)null, Manufacturer = !orderDetail.IsColumnNull("PreferredManufacturerID") ? _manufacturerRepository.FindSingle( orderDetail.PreferredManufacturerID) : null, physicalStore = !orderDetail.IsColumnNull("PreferredPhysicalStoreID") ? _physicalStoreRepository.FindSingle( orderDetail.PreferredPhysicalStoreID) : null }; request.RequestDetails.Add(requestDetail); orderDetail.MoveNext(); } return(request); }
//~ This Method is Obsoleted ~// public static bool SaveBackOrderToDatabase(BLL.Order _order) { var _orderDetail = new OrderDetail(); _orderDetail.LoadAllByOrderID(_order.ID); MyGeneration.dOOdads.TransactionMgr mgr = MyGeneration.dOOdads.TransactionMgr.ThreadTransactionMgr(); try { mgr.BeginTransaction(); var or = new BLL.Order(); or.AddNew(); or.RefNo = Order.GetNextOrderReference(); or.SetColumn("OrderTypeID", _order.GetColumn("OrderTypeID")); or.SetColumn("HCTSReferenceID", _order.GetColumn("HCTSReferenceID")); or.OrderStatusID = OrderStatus.Constant.DRAFT_WISHLIST; or.RequisitionTypeID = RequisitionType.CONSTANTS.DEMAND; or.Remark = _order.ID.ToString(); //Store the Original ID here for the backorder. We need to have a standard way of marking backorders. or.EurDate = or.Date = DateTimeHelper.ServerDateTime; //Both fields are assigned dates. or.RequestedBy = _order.RequestedBy; or.FilledBy = _order.FilledBy; or.LetterNo = _order.LetterNo; or.PaymentTypeID = _order.PaymentTypeID; or.ContactPerson = _order.ContactPerson; or.FromStore = _order.FromStore; or.FiscalYearID = FiscalYear.Current.ID; or.OrderTypeID = _order.OrderTypeID == OrderType.CONSTANTS.PLITS ? _order.OrderTypeID : OrderType.CONSTANTS.BACK_ORDER; or.Save(); or.LogRequisitionStatus(or.ID,null,OrderStatus.Constant.DRAFT_WISHLIST,CurrentContext.UserId); _orderDetail.Rewind(); var orderDetail = new OrderDetail(); while (!_orderDetail.EOF) { if (_orderDetail.ApprovedQuantity >= _orderDetail.Quantity) { _orderDetail.MoveNext(); continue; //Backorder is only for those with approved quantity less than the requested quantity. } orderDetail.AddNew(); orderDetail.ItemID = _orderDetail.ItemID; orderDetail.OrderID = or.ID; orderDetail.Pack = (_orderDetail.Quantity - _orderDetail.ApprovedQuantity) / _orderDetail.QtyPerPack; orderDetail.QtyPerPack = _orderDetail.QtyPerPack; orderDetail.Quantity = orderDetail.Pack * orderDetail.QtyPerPack; orderDetail.SetColumn("HACTOrderDetailID", _orderDetail.GetColumn("HACTOrderDetailID")); orderDetail.UnitID = _orderDetail.UnitID; _orderDetail.MoveNext(); } orderDetail.Save(); mgr.CommitTransaction(); return true; } catch (Exception exp) { mgr.RollbackTransaction(); return false; } }
/// <summary> /// Generate the pick list /// </summary> /// <param name="orderId">The order id.</param> /// <param name="bgWorker">The bg worker.</param> /// <returns></returns> public DataView GetPalletLocationChoice(int userID, int orderId, BackgroundWorker bgWorker) { var order = new Order(); // Load the order order.LoadByPrimaryKey(orderId); //TODO: check if the order is already approved or not. // if not please return from here // Load the order details var orderDetail = new OrderDetail(); orderDetail.LoadAllByOrderID(orderId); orderDetail.AddColumn("ActivityConcat", typeof(string)); // prepare the pick list data table with the proper fields _pickList = GetPickListTable(); _replenishmentList = new DataTable(); _replenishmentList.Columns.Add("ItemID", typeof(int)); _replenishmentList.Columns.Add("StoreID", typeof(int)); int count = 0; // iterate through the order detail and make the pick list while (!orderDetail.EOF) { DateTime startTime = DateTime.Now; System.Console.WriteLine("Processing - " + orderDetail.ItemID); // check if there are enough priced items of the same or more quantity in the store int? unitID = null; if (!orderDetail.IsColumnNull("UnitID")) { unitID = orderDetail.UnitID; } if (!orderDetail.IsColumnNull("StockedOut") && (!orderDetail.StockedOut ||(orderDetail.ApprovedQuantity > 0 && orderDetail.Quantity > orderDetail.ApprovedQuantity))) { DateTime? preferredExpiry = new DateTime(); if (orderDetail.IsColumnNull("PreferredManufacturerID")) orderDetail.PreferredManufacturerID = -1; if (orderDetail.IsColumnNull("PreferredPhysicalStoreID")) orderDetail.PreferredPhysicalStoreID = -1; if (orderDetail.IsColumnNull("PreferredExpiryDate")) preferredExpiry = null; else { preferredExpiry = orderDetail.PreferredExpiryDate; } if (!orderDetail.IsColumnNull("ApprovedQuantity") && (orderDetail.ApprovedQuantity > 0 && !orderDetail.IsColumnNull("StoreID"))) { AddToPickListFor(userID, orderDetail.ID, orderDetail.ItemID, unitID, orderDetail.ApprovedQuantity, orderDetail.StoreID, orderDetail.PreferredManufacturerID, orderDetail.PreferredPhysicalStoreID, !orderDetail.IsColumnNull("DeliveryNote") && orderDetail.DeliveryNote, preferredExpiry); } } System.Console.WriteLine(string.Format("Took - {0}:{1} for Item ID = {2}", DateTime.Now.Subtract(startTime).Minutes, DateTime.Now.Subtract(startTime).Seconds, orderDetail.ItemID)); orderDetail.MoveNext(); count++; bgWorker.ReportProgress(count, null); } // A quick hack just to show the pallet location on the order form var pl = new PalletLocation(); var im = new ItemManufacturer(); foreach (DataRowView drv in _pickList.DefaultView) { int plid = Convert.ToInt32(drv["PalletLocationID"]); pl.LoadByPrimaryKey(plid); drv["PalletLocation"] = pl.FullName; im.LoadIMbyLevel(Convert.ToInt32(drv["ItemID"]), Convert.ToInt32(drv["ManufacturerID"]), Convert.ToInt32(drv["BoxLevel"])); drv["QtyInSKU"] = im.RowCount > 0 ? Convert.ToDecimal(drv["Pack"]) * im.QuantityInSku : Convert.ToDecimal(drv["Pack"]); drv["BoxSizeDisplay"] = im.RowCount > 0 ? im.LevelView2 : ""; //im.RightName; drv["WarehouseName"] = pl.WarehouseName; drv["PhysicalStoreName"] = pl.PhysicalStoreName; var activity = new Activity(); activity.LoadByPrimaryKey(Convert.ToInt32(drv["StoreID"])); drv["ActivityConcat"] = activity.FullActivityName; drv["AccountName"] = activity.AccountName; } //foreach (DataRowView v in _pickList.DefaultView) //{ //} return _pickList.DefaultView; }
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(); }