RequisitionEditItemsView.xaml.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. using System;
  2. using System.Linq;
  3. using InABox.Core;
  4. using InABox.Mobile;
  5. using Xamarin.Forms.Xaml;
  6. using ZXing;
  7. namespace PRS.Mobile
  8. {
  9. [XamlCompilation(XamlCompilationOptions.Compile)]
  10. public partial class RequisitionEditItemsView : RequisitionEditView
  11. {
  12. public RequisitionEditItemsView()
  13. {
  14. InitializeComponent();
  15. }
  16. public override void Refresh()
  17. {
  18. }
  19. private void Complete_Clicked(object sender, MobileButtonClickEventArgs args)
  20. {
  21. DoChanged(nameof(RequisitionShell.Filled));
  22. }
  23. private void ScanView_OnScanResult(ZXing.Result result)
  24. {
  25. }
  26. public void AddItem()
  27. {
  28. if (ViewModel.Mode == RequisitionEditMode.PickStock)
  29. AddScannerItems();
  30. else
  31. AddSiteItems();
  32. }
  33. private void RequisitionItem_Clicked(object sender, EventArgs e)
  34. {
  35. if ((sender as MobileCard)?.BindingContext is RequisitionItemShell item)
  36. {
  37. if (ViewModel.Mode == RequisitionEditMode.PickStock)
  38. EditScannerItem(item);
  39. else
  40. EditSiteItem(item);
  41. }
  42. }
  43. private void EditScannerItem(RequisitionItemShell item)
  44. {
  45. var editor = new RequisitionItemScanner(item);
  46. editor.OnSave += (sender, args) =>
  47. {
  48. SaveScannerItem(item, args);
  49. item.Save("Updated on Mobile Device");
  50. };
  51. Navigation.PushAsync(editor);
  52. }
  53. private void AddScannerItems()
  54. {
  55. var editor = new RequisitionItemScanner(null);
  56. editor.OnSave += (sender, args) =>
  57. {
  58. var item = ViewModel.Items.AddItem();
  59. item.RequisitionID = ViewModel.Item.ID;
  60. item.RequisitionJobID = ViewModel.Item.JobID;
  61. SaveScannerItem(item, args);
  62. item.Save("Created on Mobile Device");
  63. };
  64. Navigation.PushAsync(editor);
  65. }
  66. private static void SaveScannerItem(RequisitionItemShell item, RequisitionItemScannerSaveArgs args)
  67. {
  68. item.ProductID = args.Holding.ProductID;
  69. item.ProductCode = args.Holding.ProductCode;
  70. item.ProductName = args.Holding.ProductName;
  71. item.StyleID = args.Holding.StyleID;
  72. item.StyleCode = args.Holding.StyleCode;
  73. item.StyleDescription = args.Holding.StyleDescription;
  74. item.DimensionsUnitID = args.Holding.DimensionsUnitID;
  75. item.DimensionsHeight = args.Holding.DimensionsHeight;
  76. item.DimensionsLength = args.Holding.DimensionsLength;
  77. item.DimensionsWidth = args.Holding.DimensionsWidth;
  78. item.DimensionsWeight = args.Holding.DimensionsWeight;
  79. item.DimensionsQuantity = args.Holding.DimensionsQuantity;
  80. item.DimensionsValue = args.Holding.DimensionsValue;
  81. item.DimensionsUnitSize = args.Holding.DimensionsUnitSize;
  82. item.TargetJRI = args.JobRequisitionItemID;
  83. item.LocationID = args.Holding.LocationID;
  84. item.ActualQuantity = args.Quantity;
  85. }
  86. private void AddSiteItems()
  87. {
  88. var editor = new RequisitionItemEditor(null);
  89. editor.Saving += (sender, args) =>
  90. {
  91. var item = ViewModel.Items.AddItem();
  92. item.RequisitionID = ViewModel.Item.ID;
  93. item.RequisitionJobID = ViewModel.Item.JobID;
  94. SaveSiteItem(item,args);
  95. };
  96. Navigation.PushAsync(editor);
  97. }
  98. private void EditSiteItem(RequisitionItemShell item)
  99. {
  100. var editor = new RequisitionItemEditor(item);
  101. editor.Saving += (sender, args) =>
  102. {
  103. SaveSiteItem(item,args);
  104. };
  105. Navigation.PushAsync(editor);
  106. }
  107. private void SaveSiteItem(RequisitionItemShell item, RequisitionItemEditorSaveArgs args)
  108. {
  109. if (args.Product != null)
  110. {
  111. item.ProductID = args.Product.ID;
  112. item.ProductCode = args.Product.Code;
  113. item.ProductName = args.Product.Name;
  114. item.StyleID = args.Product.DefaultStyleID;
  115. item.StyleCode = args.Product.DefaultStyleCode;
  116. item.StyleDescription = args.Product.DefaultStyleDescription;
  117. item.DimensionsUnitID = args.Product.DimensionsUnitID;
  118. item.DimensionsHeight = args.Product.DimensionsHeight;
  119. item.DimensionsLength = args.Product.DimensionsLength;
  120. item.DimensionsWidth = args.Product.DimensionsWidth;
  121. item.DimensionsWeight = args.Product.DimensionsWeight;
  122. item.DimensionsQuantity = args.Product.DimensionsQuantity;
  123. item.DimensionsValue = args.Product.DimensionsValue;
  124. item.DimensionsUnitSize = args.Product.DimensionsUnitSize;
  125. if (args.Product.ImageID != Guid.Empty)
  126. {
  127. item.ImageID = args.Product.ImageID;
  128. if (item.ImageID != Guid.Empty)
  129. ViewModel.Items.Images[item.ImageID] = args.Image;
  130. }
  131. else
  132. item.ImageID = SaveRequisitionImage(args);
  133. }
  134. else
  135. {
  136. item.ProductID = Guid.Empty;
  137. item.ProductCode = "";
  138. item.ProductName = "";
  139. item.StyleID = Guid.Empty;
  140. item.StyleCode = "";
  141. item.StyleDescription = "";
  142. item.DimensionsUnitID = Guid.Empty;
  143. item.DimensionsHeight = 0.0F;
  144. item.DimensionsLength = 0.0F;
  145. item.DimensionsWidth = 0.0F;
  146. item.DimensionsWeight = 0.0F;
  147. item.DimensionsQuantity = 0.0F;
  148. item.DimensionsValue = 0.0F;
  149. item.DimensionsUnitSize = "";
  150. item.ImageID = SaveRequisitionImage(args);
  151. }
  152. item.Description = args.Description ?? string.Empty;
  153. item.Quantity = args.Quantity;
  154. item.Save("Created on Mobile Device");
  155. ViewModel.Items.Refresh(false);
  156. }
  157. private Guid SaveRequisitionImage(RequisitionItemEditorSaveArgs args)
  158. {
  159. if ((args.ImageID == Guid.Empty) && (args.Image?.Any() == true))
  160. {
  161. var docmodel = new DocumentModel(App.Data, () => new Filter<Document>().None());
  162. docmodel.Refresh(true);
  163. var doc = docmodel.AddItem();
  164. doc.Data = args.Image;
  165. doc.FileName = $"Requisition Item{DateTime.Now:yyyy-MM-dd-hh-mm-ss.zzz}.jpg";
  166. doc.CRC = CoreUtils.CalculateCRC(args.Image);
  167. doc.TimeStamp = DateTime.Now;
  168. doc.Save("Created on Mobile Device");
  169. ViewModel.Items.Images[doc.ID] = args.Image;
  170. return doc.ID;
  171. }
  172. return args.ImageID;
  173. }
  174. }
  175. }