Jelajahi Sumber

Changed Job ManagerLink to ProjectLead and EmployeeLink to SiteLead, and added Job.DraftingLead
Made StagingSetout.CreatedDate Visible

frogsoftware 1 tahun lalu
induk
melakukan
5376ad6aab

+ 33 - 18
prs.classes/Entities/Job/Job.cs

@@ -62,27 +62,30 @@ namespace Comal.Classes
 
         #region Project Management
 
-        [TextBoxEditor]
+        [Caption("Project Lead")]
         [EditorSequence("Project Management", 1)]
-        public string SetoutsFolder { get; set; }
-
-        [Caption("Supervisor")]
+        public EmployeeLink ProjectLead { get; set; }
+        
+        [Caption("Drafting Lead")]
         [EditorSequence("Project Management", 2)]
-        public EmployeeLink EmployeeLink { get; set; }
-
-        [Caption("Manager")]
+        public EmployeeLink DraftingLead { get; set; }
+        
+        [Caption("Site Lead")]
         [EditorSequence("Project Management", 3)]
-        public EmployeeLink ManagerLink { get; set; }
+        public EmployeeLink SiteLead { get; set; }
+        
+        [TextBoxEditor]
+        [EditorSequence("Project Management", 4)]
+        public string SetoutsFolder { get; set; }
 
         [TimeOfDayEditor]
-        [EditorSequence("Project Management", 4)]
+        [EditorSequence("Project Management", 5)]
         public TimeSpan UsualStart { get; set; }
 
         [TimeOfDayEditor]
         [EditorSequence("Project Management", 5)]
         public TimeSpan UsualFinish { get; set; }
-
-
+        
         // This is the Activity to which the Usual Start/Finish Applies
         // Other activitiy timesheets are not affected by this
         [EditorSequence("Project Management", 6)]
@@ -101,7 +104,6 @@ namespace Comal.Classes
         [EditorSequence("Project Management", 9)]
         public JobStatusLink JobStatus { get; set; }
         
-        
         [EditorSequence("Project Management", 10)]
         public JobScopeLink DefaultScope { get; set; }
 
@@ -134,17 +136,27 @@ namespace Comal.Classes
         public String AutoIncrementPrefix() => JobNumberPrefix;
         public string AutoIncrementFormat() => "{0:D4}";
         
+        [NullEditor]
+        [Obsolete("Replaced with ProjectLead", true)]
+        public EmployeeLink ManagerLink { get; set; }
+                
+        [NullEditor]
+        [Obsolete("Replaced with SiteLead", true)]
+        public EmployeeLink EmployeeLink { get; set; }
+        
         protected override void Init()
         {
             base.Init();
             Customer = new CustomerLink(() => this);
             Account = new AccountLink();
-            //Designer = new EmployeeLink();
-            //ProjectManager = new EmployeeLink();
+
             SiteAddress = new Address();
             UsualActivity = new ActivityLink();
-            EmployeeLink = new EmployeeLink();
-            ManagerLink = new EmployeeLink();
+
+            ProjectLead = new EmployeeLink();
+            DraftingLead = new EmployeeLink();
+            SiteLead = new EmployeeLink();
+            
             ScheduleLink = new ScheduleLink();
             JobStatus = new JobStatusLink();
             DefaultScope = new JobScopeLink(() => this);
@@ -154,9 +166,12 @@ namespace Comal.Classes
             Customer.Account.PropertyChanged += Account_PropertyChanged;
             Customer.Delivery.PropertyChanged += Delivery_PropertyChanged;
             Style = new ProductStyleLink();
-        }
-
 
+            CoreUtils.SetPropertyValue(this,"EmployeeLink",new EmployeeLink());
+            CoreUtils.SetPropertyValue(this,"ManagerLink",new EmployeeLink());
+            
+        }
+        
         private void Delivery_PropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             var value = CoreUtils.GetPropertyValue(Customer.Delivery, e.PropertyName);

+ 10 - 6
prs.classes/Entities/Staging/Setout/StagingSetout.cs

@@ -52,29 +52,33 @@ namespace Comal.Classes
 
     public class StagingSetout : Entity, IPersistent, IRemotable, ILicense<ManufacturingLicense>, IJobScopedItem
     {
-        [TextBoxEditor(Editable = Editable.Disabled)]
         [EditorSequence(1)]
-        public string Number { get; set; }
+        [DateTimeEditor(Visible = Visible.Default, Editable = Editable.Hidden)]
+        public override DateTime Created { get; set; }
 
+        [TextBoxEditor(Editable = Editable.Disabled)]
         [EditorSequence(2)]
+        public string Number { get; set; }
+
+        [EditorSequence(3)]
         public JobLink JobLink { get; set; }
         
-        [EditorSequence(3)]
+        [EditorSequence(4)]
         public SetoutGroupLink Group { get; set; }
         
         [TextBoxEditor(Visible=Visible.Hidden, Editable = Editable.Disabled)]
-        [EditorSequence(4)]
+        [EditorSequence(5)]
         public String OriginalPath { get; set; }
         
         [NullEditor]
         public String OriginalCRC { get; set; }
 
         [TextBoxEditor(Visible=Visible.Hidden, Editable = Editable.Disabled)]
-        [EditorSequence(5)]
+        [EditorSequence(6)]
         public string SavePath { get; set; }
 
         [DateTimeEditor(Editable = Editable.Disabled)]
-        [EditorSequence(6)]
+        [EditorSequence(7)]
         public DateTime Archived { get; set; }
         
         [NullEditor]

+ 2 - 2
prs.desktop/Forms/EmailInterfaceForm.xaml.cs

@@ -291,8 +291,8 @@ namespace PRSDesktop
 
                             job.JobType = JobType.Project;
 
-                            job.EmployeeLink.ID = EmployeeID;
-                            job.ManagerLink.ID = EmployeeID;
+                            job.SiteLead.ID = EmployeeID;
+                            job.ProjectLead.ID = EmployeeID;
                             //job.JobStatus = defstatus.ID;
 
                             job.Notes = new[] { string.Format("As per email dated {0:dd MMM yy}", arg.Get<EmailInterface, DateTime>(x => x.Date)) };

+ 2 - 1
prs.desktop/Panels/Jobs/JobOrderGrid.cs

@@ -41,7 +41,8 @@ namespace PRSDesktop
                 DynamicGridOption.RecordCount,
                 DynamicGridOption.SelectColumns,
                 DynamicGridOption.FilterRows,
-                DynamicGridOption.MultiSelect
+                DynamicGridOption.MultiSelect,
+                DynamicGridOption.ExportData
             );
         }
 

+ 1 - 1
prs.desktop/prsdesktop.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Desktop"
-#define MyAppVersion "7.36"
+#define MyAppVersion "7.36a"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSDesktop.exe"

+ 2 - 2
prs.scheduler/SchedulePlugin.cs

@@ -111,8 +111,8 @@ namespace Comal.TaskScheduler.Shared
             job.ExpectedCompletionDate = schedule.DueDate;
             job.Name = entity.ToString() + " - " + schedule.Title;
             job.Notes = new string[] { schedule.Description };
-            job.EmployeeLink.ID = schedule.EmployeeLink.ID;
-            job.ManagerLink.ID = schedule.ManagerLink.ID;
+            job.SiteLead.ID = schedule.EmployeeLink.ID;
+            job.ProjectLead.ID = schedule.ManagerLink.ID;
             //job.QAForm.ID = schedule.QAForm.ID;
 
             LoadJob(job, schedule, entity);

+ 1 - 1
prs.server/PRSServer.iss

@@ -5,7 +5,7 @@
 #pragma verboselevel 9
 
 #define MyAppName "PRS Server"
-#define MyAppVersion "7.36"
+#define MyAppVersion "7.36a"
 #define MyAppPublisher "PRS Digital"
 #define MyAppURL "https://www.prs-software.com.au"
 #define MyAppExeName "PRSServer.exe"

+ 1 - 0
prs.shared/Database Update Scripts/DatabaseUpdateScripts.cs

@@ -34,6 +34,7 @@ namespace PRS.Shared
             DataUpdater.RegisterUpdateScript<Update_7_30>();
             DataUpdater.RegisterUpdateScript<Update_7_31>();
             DataUpdater.RegisterUpdateScript<Update_7_34>();
+            DataUpdater.RegisterUpdateScript<Update_7_37>();
         }
     }
 }

+ 39 - 0
prs.shared/Database Update Scripts/Update_7_37.cs

@@ -0,0 +1,39 @@
+using Comal.Classes;
+using InABox.Core;
+using InABox.Database;
+using NPOI.SS.Formula.Functions;
+
+namespace PRS.Shared;
+
+public class Update_7_37 : DatabaseUpdateScript
+{
+    public override VersionNumber Version => new VersionNumber(7, 37);
+    
+    public override bool Update()
+    {
+        List<Job> jobs;
+        IColumns columns = new Columns<Job>(x => x.ID)
+            .Add(x => x.ProjectLead.ID)
+            .Add(x => x.SiteLead.ID)
+            .Add("ManagerLink.ID")
+            .Add("EmployeeLink.ID");
+        jobs = DbFactory.Provider.Query(
+            typeof(Job),
+            null,
+            columns
+            ).ToObjects<Job>().ToList();
+        foreach (var item in jobs)
+        {
+            item.ProjectLead.ID = CoreUtils.GetPropertyValue(item, "ManagerLink.ID") is Guid _mgr ? _mgr : Guid.Empty;
+            CoreUtils.SetPropertyValue(jobs, "ManagerLink.ID", Guid.Empty);
+            item.SiteLead.ID = CoreUtils.GetPropertyValue(item, "EmployeeLink.ID") is Guid _emp ? _emp : Guid.Empty;
+            CoreUtils.SetPropertyValue(jobs, "EmployeeLink.ID", Guid.Empty);
+        }
+
+        var updates = jobs.Where(x => x.IsChanged()).ToArray();
+        if (updates.Any())
+            DbFactory.Provider.Save(updates);
+        Logger.Send(LogType.Information, "", $"{jobs.Count} {typeof(Job).Name}s processed");
+        return true;
+    }
+}

+ 6 - 6
prs.stores/DeliveryStore.cs

@@ -25,14 +25,14 @@ namespace Comal.Stores
                     new Columns<Job>(
                         x => x.JobNumber,
                         x => x.Name,
-                        x => x.EmployeeLink.ID,
-                        x => x.ManagerLink.ID
+                        x => x.SiteLead.ID,
+                        x => x.ProjectLead.ID
                     )
                 ).Rows.FirstOrDefault();
             var jobnumber = job != null ? job.Get<Job, string>(x => x.JobNumber) : "";
             var jobname = job != null ? job.Get<Job, string>(x => x.Name) : "";
-            var jobemp = job != null ? job.Get<Job, Guid>(x => x.EmployeeLink.ID) : Guid.Empty;
-            var jobmgr = job != null ? job.Get<Job, Guid>(x => x.ManagerLink.ID) : Guid.Empty;
+            var sitelead = job != null ? job.Get<Job, Guid>(x => x.SiteLead.ID) : Guid.Empty;
+            var projlead = job != null ? job.Get<Job, Guid>(x => x.ProjectLead.ID) : Guid.Empty;
 
             // Scan for Delivery Items and Build the List to Send
             var items = Provider.Query(
@@ -88,8 +88,8 @@ namespace Comal.Stores
             var emps = Provider.Query(
                 new Filter<Employee>(x => x.UserLink.UserID).IsEqualTo(UserID)
                     .Or(x => x.ID).IsEqualTo(delemp)
-                    .Or(x => x.ID).IsEqualTo(jobemp)
-                    .Or(x => x.ID).IsEqualTo(jobmgr)
+                    .Or(x => x.ID).IsEqualTo(sitelead)
+                    .Or(x => x.ID).IsEqualTo(projlead)
                 ,
                 new Columns<Employee>(
                     x => x.ID,

+ 1 - 54
prs.stores/JobStore.cs

@@ -31,60 +31,7 @@ namespace Comal.Stores
 
             StoreUtils.Geocode(entity.SiteAddress);
         }
-
-        protected override void AfterSave(Job entity)
-        {
-            base.AfterSave(entity);
-
-            //Setout[] setouts = FindSubStore<Setout>().Load(new Filter<Setout>(x => x.JobLink.ID).IsEqualTo(entity.ID));
-            //for (int i=0; i< setouts.Length; i++)
-            //{
-            //    Setout setout = setouts[i];
-            //    if ((entity.Name != setout.JobLink.Name) || (entity.Number != setout.JobLink.Number))
-            //    {
-            //        setout.JobLink.Name = entity.Name;
-            //        setout.JobLink.Number = entity.Number;
-            //        FindSubStore<Setout>().Save(ref setout, "Updated Job Number/Name");
-            //    }
-            //}
-
-            //Requisition[] requis = FindSubStore<Requisition>().Load(new Filter<Requisition>(x => x.JobLink.ID).IsEqualTo(entity.ID));
-            //for (int i = 0; i < requis.Length; i++)
-            //{
-            //    Requisition requi = requis[i];
-            //    if ((entity.Name != requi.JobLink.Name) || (entity.Number != requi.JobLink.Number))
-            //    {
-            //        requi.JobLink.Name = entity.Name;
-            //        requi.JobLink.Number = entity.Number;
-            //        FindSubStore<Requisition>().Save(ref requi, "Updated Job Number/Name");
-            //    }
-            //}
-
-            //Kanban[] kanbans = FindSubStore<Kanban>().Load(new Filter<Kanban>(x => x.JobID).IsEqualTo(entity.ID));
-            //for (int i = 0; i < kanbans.Length; i++)
-            //{
-            //    Kanban kanban = kanbans[i];
-            //    if ((entity.Name != kanban.JobLink.Name) || (entity.Number != kanban.JobLink.Number))
-            //    {
-            //        kanban.JobLink.Name = entity.Name;
-            //        kanban.JobLink.Number = entity.Number;
-            //        FindSubStore<Kanban>().Save(ref kanban, "Updated Job Number/Name");
-            //    }
-            //}
-
-            //DeliveryItem[] items = FindSubStore<DeliveryItem>().Load(new Filter<DeliveryItem>(x => x.JobLink.ID).IsEqualTo(entity.ID));
-            //for (int i = 0; i < items.Length; i++)
-            //{
-            //    DeliveryItem item = items[i];
-            //    if ((entity.Name != item.JobLink.Name) || (entity.Number != item.JobLink.Number))
-            //    {
-            //        item.JobLink.Name = entity.Name;
-            //        item.JobLink.Number = entity.Number;
-            //        FindSubStore<DeliveryItem>().Save(ref item, "Updated Job Number/Name");
-            //    }
-            //}
-        }
-
+        
         protected override void AfterDelete(Job entity)
         {
             base.AfterDelete(entity);