|
@@ -238,24 +238,36 @@ public partial class ReservationManagementPurchasing : UserControl
|
|
|
CreatePOEditor();
|
|
|
}
|
|
|
|
|
|
- public void DropItems(IEnumerable<CoreRow> rows)
|
|
|
+ public void DropItems(IList<CoreRow> rows)
|
|
|
{
|
|
|
var page = Editor.Pages.OfType<SupplierPurchaseOrderItemOneToMany>().First();
|
|
|
|
|
|
- if(CreatePOItemsFromRequiItems(rows.ToObjects<JobRequisitionItem>(), page.Items))
|
|
|
+ if(CreatePOItemsFromRequiItems(rows.ToArray<JobRequisitionItem>(), page.Items))
|
|
|
{
|
|
|
page.Refresh(false, true);
|
|
|
page.DoChanged();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private bool CreatePOItemsFromRequiItems(IEnumerable<JobRequisitionItem> selected, List<PurchaseOrderItem> items)
|
|
|
+ private bool CreatePOItemsFromRequiItems(IList<JobRequisitionItem> selected, List<PurchaseOrderItem> items)
|
|
|
{
|
|
|
+ // These columns probably are already there, but if they aren't, let's load them.
|
|
|
+ Client.EnsureColumns(selected,
|
|
|
+ Columns.None<JobRequisitionItem>()
|
|
|
+ .Add(x => x.Qty)
|
|
|
+ .Add(x => x.Issued)
|
|
|
+ .Add(x => x.InStock)
|
|
|
+ .Add(x => x.ID)
|
|
|
+ .Add(x => x.Product.Name)
|
|
|
+ .Add(x => x.Product.ID)
|
|
|
+ .Add(x => x.Style.ID)
|
|
|
+ .AddDimensionsColumns(x => x.Dimensions, Dimensions.ColumnsType.Data));
|
|
|
+
|
|
|
var changed = false;
|
|
|
foreach (var jobRequisitionItem in selected)
|
|
|
{
|
|
|
- // We only want not checked or order required.
|
|
|
- if(!jobRequisitionItem.Qty.IsEffectivelyGreaterThan(jobRequisitionItem.InStock))
|
|
|
+ // We only want stuff which doesn't have enough total stock allocated, which is the InStock and Issued added together.
|
|
|
+ if(!jobRequisitionItem.Qty.IsEffectivelyGreaterThan(jobRequisitionItem.InStock + jobRequisitionItem.Issued))
|
|
|
continue;
|
|
|
|
|
|
// Filter out ones we've already got.
|