using com.sun.net.ssl.@internal.ssl; using Comal.Classes; using InABox.Core; using InABox.Database; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PRS.Shared.Database_Update_Scripts; public class Update_7_63 : DatabaseUpdateScript { public override VersionNumber Version => new VersionNumber(7, 63); public override bool Update() { Logger.Send(LogType.Information, "", $"Updating uninitialised stock movement types"); int iCount = 0; while (true) { var movements = DbFactory.NewProvider(Logger.Main).Query(typeof(StockMovement), new Filter(x => x.Type).IsEqualTo(null), Columns.None().Add(x => x.ID) .Add(x => x.Received) .Add(x => x.Issued) .Add(x => x.Batch.Type) .Add("IsTransfer"), null, CoreRange.Database(1000)); if (movements.Rows.Count == 0) break; iCount += movements.Rows.Count; Logger.Send(LogType.Information, "", $"Updating {iCount} movements"); List updates = new List(); foreach(var row in movements.Rows) { var istransfer = row.Get("IsTransfer"); var movement = row.ToObject(); if (istransfer) { if(movement.Received > 0) { movement.Type = StockMovementType.TransferIn; } else { movement.Type = StockMovementType.TransferOut; } } else if(movement.Batch.Type == StockMovementBatchType.Stocktake) { movement.Type = StockMovementType.StockTake; } else if(movement.Received > 0) { movement.Type = StockMovementType.Receive; } else { movement.Type = StockMovementType.Issue; } // manually setting original value because originally the same. movement.SetOriginalValue(x => x.Type, StockMovementType.Receive); updates.Add(movement); } DbFactory.NewProvider(Logger.Main).Save(updates); } return true; } }