ReservationManagementSubstitutionWindow.xaml.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Configuration;
  7. using InABox.DynamicGrid;
  8. using InABox.WPF;
  9. namespace PRSDesktop;
  10. public partial class ReservationManagementSubstitutionWindow : Window
  11. {
  12. private ReservationManagementUserSettings? settings;
  13. public ReservationManagementSubstitutionWindow(JobRequisitionItem item, ReservationManagementUserSettings settings)
  14. {
  15. InitializeComponent();
  16. substitutions.JRI = item;
  17. SubstitutionFreeStock.IsChecked = settings.SubstituteFreeStockOnly;
  18. SubstitutionUpdateStyle.IsChecked = settings.SubstituteUpdateStyle;
  19. this.settings = settings;
  20. }
  21. private void Substitutions_OnOnSelectItem(object sender, DynamicGridSelectionEventArgs e)
  22. {
  23. ok.IsEnabled = e.Rows?.Any() == true;
  24. }
  25. private void OK_Click(object sender, RoutedEventArgs e)
  26. {
  27. var _holding = substitutions.SelectedRows?.FirstOrDefault()?.ToObject<StockHolding>();
  28. if (_holding == null || substitutions.JRI == null)
  29. return;
  30. Progress.ShowModal("Substitution Item", progress =>
  31. {
  32. substitutions.JRI.Dimensions.CopyFrom(_holding.Dimensions, true);
  33. if (substitutions.UpdateStyle)
  34. substitutions.JRI.Style.CopyFrom(_holding.Style);
  35. Client.Save(substitutions.JRI,"Substituted by Requisition Management Screen");
  36. var _xferout = _holding.CreateMovement();
  37. _xferout.Issued = Math.Min(_holding.Available, substitutions.JRI.Qty);
  38. _xferout.Notes = "Substituted by Requisition Management Screen";
  39. _xferout.Transaction = Guid.NewGuid();
  40. _xferout.Type = StockMovementType.TransferOut;
  41. _xferout.Employee.ID = App.EmployeeID;
  42. _xferout.Cost = _holding.AverageValue;
  43. var _xferin = _holding.CreateMovement();
  44. _xferin.JobRequisitionItem.CopyFrom(substitutions.JRI);
  45. _xferin.Job.CopyFrom(substitutions.JRI.Job);
  46. _xferin.Received = Math.Min(_holding.Available, substitutions.JRI.Qty);
  47. _xferin.Notes = "Substituted by Requisition Management Screen";
  48. _xferin.Transaction = _xferout.Transaction;
  49. _xferin.Type = StockMovementType.TransferIn;
  50. _xferin.Employee.ID = App.EmployeeID;
  51. _xferin.Cost = _holding.AverageValue;
  52. Client.Save(new[] { _xferout, _xferin}, "Substituted by Requisition Management Screen");
  53. });
  54. DialogResult = true;
  55. }
  56. private void Cancel_Click(object sender, RoutedEventArgs e)
  57. {
  58. DialogResult = false;
  59. }
  60. private void SubstitutionFreeStock_Changed(object sender, RoutedEventArgs e)
  61. {
  62. substitutions.FreeStockOnly = SubstitutionFreeStock.IsChecked == true;
  63. if (settings != null)
  64. {
  65. settings.SubstituteFreeStockOnly = substitutions.FreeStockOnly;
  66. new UserConfiguration<ReservationManagementUserSettings>().Save(settings);
  67. }
  68. }
  69. private void SubstitutionUpdateStyle_Changed(object sender, RoutedEventArgs e)
  70. {
  71. substitutions.UpdateStyle = SubstitutionUpdateStyle.IsChecked == true;
  72. if (settings != null)
  73. {
  74. settings.SubstituteUpdateStyle = substitutions.UpdateStyle;
  75. new UserConfiguration<ReservationManagementUserSettings>().Save(settings);
  76. }
  77. }
  78. }