|
@@ -48,6 +48,26 @@ namespace PRS.Mobile
|
|
|
{
|
|
|
public bool HasItems { get; set; }
|
|
|
public StockHoldingModel Holdings { get; private set; }
|
|
|
+
|
|
|
+ public void RefreshHoldings(bool force, Guid barcode)
|
|
|
+ {
|
|
|
+ Holdings.Refresh(true, () =>
|
|
|
+ {
|
|
|
+ IsLocation = Holdings.Items.Select(x => x.LocationID).All(x => x == barcode);
|
|
|
+ IsProduct = Holdings.Items.Select(x => x.ProductID).All(x => x == barcode);
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool IsLocation { get; private set; }
|
|
|
+ public bool IsProduct { get; private set; }
|
|
|
+
|
|
|
+ public string Title => IsLocation
|
|
|
+ ? $"{Holdings.Items.FirstOrDefault()?.LocationCode} - {Holdings.Items.FirstOrDefault()?.LocationDescription}"
|
|
|
+ : IsProduct
|
|
|
+ ? $"{Holdings.Items.FirstOrDefault()?.ProductCode} - {Holdings.Items.FirstOrDefault()?.ProductName}"
|
|
|
+ : "Scan Barcode";
|
|
|
+
|
|
|
public RequisitionItemModel RequisitionItems { get; private set; }
|
|
|
|
|
|
public JobShell Job { get; set; }
|
|
@@ -142,8 +162,8 @@ namespace PRS.Mobile
|
|
|
//{
|
|
|
_viewModel.Holdings.Filter = () =>
|
|
|
new Filter<StockHolding>(x => x.Location.ID).IsEqualTo(id).Or(x=>x.Product.ID).IsEqualTo(id);
|
|
|
- _viewModel.Holdings.Refresh(true);
|
|
|
- //}
|
|
|
+ _viewModel.RefreshHoldings(true, id);
|
|
|
+ //}
|
|
|
}
|
|
|
|
|
|
private void SelectFromHolding_Click(object sender, EventArgs e)
|
|
@@ -158,7 +178,7 @@ namespace PRS.Mobile
|
|
|
var editor = new SelectFromHoldingView(holding, qty, _viewModel.RequisitionItems);
|
|
|
editor.OnSave += (o, args) =>
|
|
|
{
|
|
|
- if (args.Quantity.IsEffectivelyGreaterThan(0.0))
|
|
|
+ if (!args.Quantity.IsEffectivelyEqual(0.0))
|
|
|
{
|
|
|
var requiItem = _viewModel.RequisitionItems.CreateItem();
|
|
|
requiItem.LocationID = args.Holding.LocationID;
|
|
@@ -253,7 +273,11 @@ namespace PRS.Mobile
|
|
|
{
|
|
|
if (_viewModel.Job.ID != _item.JobID)
|
|
|
_item.TargetJRI = Guid.Empty;
|
|
|
-
|
|
|
+
|
|
|
+ // This should stop the multi-transaction thingy if returning items to stock
|
|
|
+ if (_item.Quantity.IsEffectivelyLessThan(0.0))
|
|
|
+ _item.JobID = requi.JobID;
|
|
|
+
|
|
|
_item.RequisitionID = requi.ID;
|
|
|
}
|
|
|
|
|
@@ -280,5 +304,92 @@ namespace PRS.Mobile
|
|
|
_viewModel.RequisitionItems.DeleteItem(shell);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void AddHolding_Clicked(object sender, MobileMenuButtonClickedEventArgs args)
|
|
|
+ {
|
|
|
+ var first = _viewModel.Holdings.FirstOrDefault();
|
|
|
+ if (first == null)
|
|
|
+ return;
|
|
|
+ var holding = _viewModel.Holdings.CreateItem();
|
|
|
+ holding.LocationID = first.LocationID;
|
|
|
+ holding.LocationCode = first.LocationCode;
|
|
|
+ holding.LocationDescription = first.LocationDescription;
|
|
|
+
|
|
|
+ var transaction = new StockTransaction(StockTransactionType.StockTake, holding, holding);
|
|
|
+ transaction.Allocations = new StockTransactionAllocation[]
|
|
|
+ {
|
|
|
+ new StockTransactionAllocation()
|
|
|
+ {
|
|
|
+ ID = Guid.Empty,
|
|
|
+ Description = "General Stock",
|
|
|
+ Quantity = 0.0F,
|
|
|
+ Maximum = double.MaxValue
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var popup = new StockTakeEdit(transaction);
|
|
|
+ popup.TransactionSaved += (o,e) =>
|
|
|
+ {
|
|
|
+ holding.ProductID = transaction.ProductID;
|
|
|
+ holding.ProductCode = transaction.ProductCode;
|
|
|
+ holding.ProductName = transaction.ProductName;
|
|
|
+
|
|
|
+ holding.DimensionsUnitID = transaction.DimensionsUnitID;
|
|
|
+
|
|
|
+ holding.DimensionsHeight = transaction.DimensionsHeight;
|
|
|
+ holding.DimensionsWidth = transaction.DimensionsWidth;
|
|
|
+ holding.DimensionsLength = transaction.DimensionsLength;
|
|
|
+ holding.DimensionsQuantity = transaction.DimensionsQuantity;
|
|
|
+ holding.DimensionsWeight = transaction.DimensionsWeight;
|
|
|
+ holding.DimensionsValue = transaction.DimensionsValue;
|
|
|
+ holding.DimensionsUnitSize = transaction.DimensionsUnitSize;
|
|
|
+
|
|
|
+ holding.StyleID = transaction.Target.StyleID;
|
|
|
+ holding.StyleCode = transaction.Target.StyleCode;
|
|
|
+ holding.StyleDescription = transaction.Target.StyleDescription;
|
|
|
+
|
|
|
+ holding.JobID = transaction.Target.JobID;
|
|
|
+ holding.JobNumber = transaction.Target.JobNumber;
|
|
|
+ holding.JobName = transaction.Target.JobName;
|
|
|
+ holding.AverageCost = transaction.Cost;
|
|
|
+ //holding.Units = transaction.Quantity;
|
|
|
+
|
|
|
+ _viewModel.Holdings.CommitItem(holding);
|
|
|
+
|
|
|
+ var requiItem = _viewModel.RequisitionItems.CreateItem();
|
|
|
+
|
|
|
+ requiItem.LocationID = holding.LocationID;
|
|
|
+ requiItem.ProductID = holding.ProductID;
|
|
|
+ requiItem.ProductCode = holding.ProductCode;
|
|
|
+ requiItem.ProductName = holding.ProductName;
|
|
|
+ requiItem.StyleID = holding.StyleID;
|
|
|
+ requiItem.StyleCode = holding.StyleCode;
|
|
|
+ requiItem.StyleDescription = holding.StyleDescription;
|
|
|
+ requiItem.JobID = holding.JobID;
|
|
|
+ requiItem.DimensionsUnitID = holding.DimensionsUnitID;
|
|
|
+ requiItem.DimensionsHeight = holding.DimensionsHeight;
|
|
|
+ requiItem.DimensionsWidth = holding.DimensionsWidth;
|
|
|
+ requiItem.DimensionsLength = holding.DimensionsLength;
|
|
|
+ requiItem.DimensionsQuantity = holding.DimensionsQuantity;
|
|
|
+ requiItem.DimensionsWeight = holding.DimensionsWeight;
|
|
|
+ requiItem.DimensionsValue = holding.DimensionsValue;
|
|
|
+ requiItem.DimensionsUnitSize = holding.DimensionsUnitSize;
|
|
|
+ requiItem.ImageID = holding.ImageID;
|
|
|
+ if (holding.Parent.Images.TryGetValue(holding.ImageID, out var _image))
|
|
|
+ _viewModel.RequisitionItems.Images[holding.ImageID] = _image;
|
|
|
+ requiItem.SourceJRI = Guid.Empty;
|
|
|
+ requiItem.TargetJRI = Guid.Empty;
|
|
|
+ requiItem.Quantity = 0 - transaction.Quantity;
|
|
|
+ requiItem.ActualQuantity = 0 - transaction.Quantity;
|
|
|
+ requiItem.Cost = transaction.Cost;
|
|
|
+ requiItem.Done = true;
|
|
|
+ _viewModel.RequisitionItems.CommitItem(requiItem);
|
|
|
+
|
|
|
+ _viewModel.Holdings.Refresh(false);
|
|
|
+ DismissPopup();
|
|
|
+ };
|
|
|
+ Navigation.PushAsync(popup);
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
}
|