Update_7_63.cs 2.5 KB

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