Update_7_63.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using com.sun.net.ssl.@internal.ssl;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using InABox.Database;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PRS.Shared.Database_Update_Scripts;
  11. public class Update_7_63 : DatabaseUpdateScript
  12. {
  13. public override VersionNumber Version => new VersionNumber(7, 63);
  14. public override bool Update()
  15. {
  16. Logger.Send(LogType.Information, "", $"Updating uninitialised stock movement types");
  17. while (true)
  18. {
  19. var movements = DbFactory.Provider.Query(
  20. new Filter<StockMovement>(x => x.Type).IsEqualTo(null),
  21. new Columns<StockMovement>(x => x.ID)
  22. .Add(x => x.Received)
  23. .Add(x => x.Issued)
  24. .Add(x => x.IsTransfer)
  25. .Add(x => x.Batch.Type),
  26. top: 1000)
  27. .ToArray<StockMovement>();
  28. if (movements.Length == 0) break;
  29. Logger.Send(LogType.Information, "", $"Updating {movements.Length} movements");
  30. foreach(var movement in movements)
  31. {
  32. if (movement.IsTransfer)
  33. {
  34. if(movement.Received > 0)
  35. {
  36. movement.Type = StockMovementType.TransferIn;
  37. }
  38. else
  39. {
  40. movement.Type = StockMovementType.TransferOut;
  41. }
  42. }
  43. else if(movement.Batch.Type == StockMovementBatchType.Stocktake)
  44. {
  45. movement.Type = StockMovementType.StockTake;
  46. }
  47. else if(movement.Received > 0)
  48. {
  49. movement.Type = StockMovementType.Receive;
  50. }
  51. else
  52. {
  53. movement.Type = StockMovementType.Issue;
  54. }
  55. // manually setting original value because originally the same.
  56. movement.SetOriginalValue(x => x.Type, StockMovementType.Receive);
  57. }
  58. DbFactory.Provider.Save(movements);
  59. }
  60. return true;
  61. }
  62. }