|
|
@@ -137,8 +137,6 @@ public class StockOrderingItem : BaseObject
|
|
|
[EditorSequence(3)]
|
|
|
public StockDimensions Dimensions { get; set; }
|
|
|
|
|
|
- public List<StockForecastOrderData.QuantityBreakup> Breakups { get; } = [];
|
|
|
-
|
|
|
[EditorSequence(5)]
|
|
|
[DoubleEditor]
|
|
|
public double RequiredQuantity { get; set; }
|
|
|
@@ -457,11 +455,19 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
|
|
|
private SupplierProduct? CalculateSupplierProduct(StockOrderingItem item, int supplierIdx)
|
|
|
{
|
|
|
- var supplierProduct = SelectSupplierProduct(SupplierProducts.Where(x => x.Product.ID == item.Product.ID && x.Style.ID == item.Style.ID && x.SupplierLink.ID == Suppliers[supplierIdx].ID), item);
|
|
|
+ var supplierProducts = string.IsNullOrWhiteSpace(item.Dimensions.Unit.Conversion)
|
|
|
+ ? SupplierProducts.Where(x => x.Dimensions.Equals(item.Dimensions))
|
|
|
+ : SupplierProducts;
|
|
|
+ var supplierProduct = SelectSupplierProduct(supplierProducts.Where(x => x.Product.ID == item.Product.ID && x.Style.ID == item.Style.ID && x.SupplierLink.ID == Suppliers[supplierIdx].ID), item);
|
|
|
|
|
|
var qty = item.GetQuantity(supplierIdx);
|
|
|
qty.SupplierProduct = supplierProduct;
|
|
|
qty.OrderTotal = 0;
|
|
|
+ qty.Breakups.Clear();
|
|
|
+ foreach(var id in item.GetJobRequiredQuantities().Keys)
|
|
|
+ {
|
|
|
+ qty.Breakups[id] = 0;
|
|
|
+ }
|
|
|
|
|
|
return supplierProduct;
|
|
|
}
|
|
|
@@ -487,6 +493,14 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
{
|
|
|
var qty = item.GetQuantity(supplierIdx);
|
|
|
qty.OrderTotal = GetRequiredQuantity(item, selectedSupplierProduct);
|
|
|
+ if(OrderType == StockForecastOrderingType.Breakup)
|
|
|
+ {
|
|
|
+ qty.Breakups.Clear();
|
|
|
+ foreach(var (id, q) in item.GetJobRequiredQuantities())
|
|
|
+ {
|
|
|
+ qty.Breakups[id] = q;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -537,7 +551,9 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
|
|
|
private double CalculateSupplierProductRequiredQuantity(StockOrderingItem item, SupplierProduct supplierProduct)
|
|
|
{
|
|
|
- var req = item.GetRequiredQuantity(OrderType);
|
|
|
+ var supplierIdx = Suppliers.WithIndex().FirstOrDefault(x => x.Value.ID == supplierProduct.ID).Key;
|
|
|
+ var qty = item.GetQuantity(supplierIdx);
|
|
|
+ var req = OrderType == StockForecastOrderingType.StockOrder ? item.RequiredQuantity : qty.Breakups.Sum(x => x.Value);
|
|
|
|
|
|
var d = new StockDimensions();
|
|
|
d.CopyFrom(supplierProduct.Dimensions);
|
|
|
@@ -676,8 +692,7 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
{
|
|
|
if(new Column<SupplierProduct>(x => x.SupplierLink.ID).IsEqualTo(column.ColumnName)
|
|
|
|| new Column<SupplierProduct>(x => x.Product.ID).IsEqualTo(column.ColumnName)
|
|
|
- || new Column<SupplierProduct>(x => x.Style.ID).IsEqualTo(column.ColumnName)
|
|
|
- || new Column<SupplierProduct>(x => x.Job.ID).IsEqualTo(column.ColumnName))
|
|
|
+ || new Column<SupplierProduct>(x => x.Style.ID).IsEqualTo(column.ColumnName))
|
|
|
{
|
|
|
editor.Editable = editor.Editable.Combine(Editable.Disabled);
|
|
|
}
|
|
|
@@ -701,12 +716,12 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
}
|
|
|
|
|
|
var supplier = selection.Data().Rows.First().ToObject<Supplier>();
|
|
|
- var productInstance = LoadItem(row);
|
|
|
+ var orderingItem = LoadItem(row);
|
|
|
|
|
|
var supplierProduct = new SupplierProduct();
|
|
|
- supplierProduct.Product.CopyFrom(productInstance.Product);
|
|
|
- supplierProduct.Style.CopyFrom(productInstance.Style);
|
|
|
- supplierProduct.Dimensions.CopyFrom(productInstance.Dimensions);
|
|
|
+ supplierProduct.Product.CopyFrom(orderingItem.Product);
|
|
|
+ supplierProduct.Style.CopyFrom(orderingItem.Style);
|
|
|
+ supplierProduct.Dimensions.CopyFrom(orderingItem.Dimensions);
|
|
|
supplierProduct.SupplierLink.CopyFrom(supplier);
|
|
|
|
|
|
if (DynamicGridUtils.EditEntity(supplierProduct, customiseGrid: EditSupplierProductGrid))
|
|
|
@@ -737,6 +752,7 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ newQty.OrderTotal = 0;
|
|
|
foreach(var id in item.GetJobRequiredQuantities().Keys)
|
|
|
{
|
|
|
newQty.Breakups[id] = 0;
|
|
|
@@ -744,8 +760,12 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
}
|
|
|
item.SetQuantities(quantities);
|
|
|
}
|
|
|
-
|
|
|
Suppliers = newSuppliers;
|
|
|
+ foreach (var item in Items)
|
|
|
+ {
|
|
|
+ CalculateSupplierProduct(item, newIdx);
|
|
|
+ }
|
|
|
+
|
|
|
_loadedColumns = false;
|
|
|
Refresh(true, true);
|
|
|
}
|
|
|
@@ -992,7 +1012,7 @@ public class StockForecastOrderingGrid : DynamicItemsListGrid<StockOrderingItem>
|
|
|
: SupplierProducts;
|
|
|
|
|
|
var items = supplierProducts.Where(x => x.SupplierLink.ID == Suppliers[idx].ID && x.Product.ID == instance.Product.ID)
|
|
|
- .Select(x => new KeyValuePair<SupplierProduct?, string>(x, $"Job {x.Job.JobNumber}: {x.Dimensions.UnitSize}"));
|
|
|
+ .Select(x => new KeyValuePair<SupplierProduct?, string>(x, x.Job.ID == Guid.Empty ? x.Dimensions.UnitSize : $"Job {x.Job.JobNumber}: {x.Dimensions.UnitSize}"));
|
|
|
if (items.Any())
|
|
|
items = items.Prepend(new KeyValuePair<SupplierProduct?, string>(null, ""));
|
|
|
comboBox.SelectedValuePath = "Key";
|