Kaynağa Gözat

Merge remote-tracking branch 'origin/kenric' into frank

frogsoftware 6 gün önce
ebeveyn
işleme
effb740c4f

+ 1 - 1
prs.classes/Entities/Customer/Customer.cs

@@ -121,7 +121,7 @@ namespace Comal.Classes
         public double Balance { get; set; }
 
         [EditorSequence("Accounts", 8)]
-        [CurrencyEditor]
+        [DoubleEditor]
         public double Markup { get; set; }
 
         [NullEditor]

+ 2 - 1
prs.classes/Entities/Employee/EmployeeLink.cs

@@ -42,7 +42,7 @@ namespace Comal.Classes
         [CodeEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
         public string PayrollID { get; set; }
 
-        [CurrencyEditor]
+        [CurrencyEditor(Visible = Visible.Optional)]
         [Security(typeof(CanViewHourlyRates))]
         public double HourlyRate { get; set; }
         
@@ -55,6 +55,7 @@ namespace Comal.Classes
         [NullEditor]
         public DateTime RosterStart { get; set; }
 
+        [TextBoxEditor(Visible = Visible.Optional)]
         public string Email { get; set; }
         
         public LeaveRequestApprovalSetLink LeaveRequestApprovalSet { get; set; }

+ 1 - 1
prs.classes/Entities/Stock/StockMovement/StockMovement.cs

@@ -146,7 +146,7 @@ namespace Comal.Classes
         /// as <see cref="StockMovement.LinkTransfers(StockMovement, StockMovement, Guid?)"/>.
         /// </summary>
         [NullEditor]
-        public Guid TransferID { get; set; } = Guid.NewGuid();
+        public Guid TransferID { get; set; }
 
         [NullEditor]
         public bool System { get; set; }

+ 5 - 5
prs.desktop/Panels/Products/Locations/StockHoldingGrid.cs

@@ -51,24 +51,24 @@ public class StockHoldingGrid : DynamicDataGrid<StockHolding>
     {
         base.Init();
 
-        ReceiveButton = AddEditButton("Receive", InABox.Wpf.Resources.add.AsBitmapImage(), ReceiveStock);
+        ReceiveButton = AddButton("Receive", InABox.Wpf.Resources.add.AsBitmapImage(), ReceiveStock);
         ReceiveButton.IsEnabled = false;
 
-        IssueButton = AddEditButton("Issue", InABox.Wpf.Resources.delete.AsBitmapImage(), IssueStock);
+        IssueButton = AddButton("Issue", InABox.Wpf.Resources.delete.AsBitmapImage(), IssueStock);
         IssueButton.IsEnabled = false;
 
         //ReserveButton = AddButton("Reserve", PRSDesktop.Resources.project.AsBitmapImage(), ReserveStock);
         //ReserveButton.Margin = new Thickness(20, ReserveButton.Margin.Top, ReserveButton.Margin.Right, ReserveButton.Margin.Bottom);
         //ReserveButton.IsEnabled = false;
 
-        TransferButton = AddEditButton("Transfer", PRSDesktop.Resources.split.AsBitmapImage(), TransferStock);
+        TransferButton = AddButton("Transfer", PRSDesktop.Resources.split.AsBitmapImage(), TransferStock);
         TransferButton.Margin = new Thickness(20, TransferButton.Margin.Top, TransferButton.Margin.Right, TransferButton.Margin.Bottom);
         TransferButton.IsEnabled = false;
 
-        RelocateButton = AddEditButton("Relocate", PRSDesktop.Resources.box.AsBitmapImage(), RelocateStock);
+        RelocateButton = AddButton("Relocate", PRSDesktop.Resources.box.AsBitmapImage(), RelocateStock);
         RelocateButton.IsEnabled = false;
 
-        AdjustValueButton = AddEditButton("Adjust Value", PRSDesktop.Resources.receipt.AsBitmapImage(), AdjustValues,
+        AdjustValueButton = AddButton("Adjust Value", PRSDesktop.Resources.receipt.AsBitmapImage(), AdjustValues,
             DynamicGridButtonPosition.Right);
         AdjustValueButton.Margin = new Thickness(AdjustValueButton.Margin.Left, AdjustValueButton.Margin.Top, 10, AdjustValueButton.Margin.Bottom);
         

+ 7 - 7
prs.shared/Utilities/InvoiceUtilities.cs

@@ -116,20 +116,20 @@ public static class InvoiceUtilities
             }
             else
             {
-                var fixedcharge = activity.Charge.FixedCharge;
-                
                 var chargeperiod = !activity.Charge.ChargePeriod.Equals(TimeSpan.Zero)
                     ? activity.Charge.ChargePeriod
                     : TimeSpan.FromHours(1);
                 
                 var rounded = quantity.Ceiling(chargeperiod);
 
-                var multiplier = TimeSpan.FromHours(1).TotalHours / chargeperiod.TotalHours;
-                var rate = activity.Charge.ChargeRate * multiplier;
+                // Rate is charge per hour, so we must divide by the charge period time, to get dollars per hour, rather than dollars per period
+                // $/hr = ($/pd) * (pd/hr) = ($/pd) / (hr/pd)
+                // where $/pd is ChargeRate and hr/pd = chargeperiod.TotalHours
+                var rate = activity.Charge.ChargeRate / chargeperiod.TotalHours;
                 
-                var mincharge = activity.Charge.MinimumCharge;
-
-                charge = Math.Max(fixedcharge + (rounded.TotalHours * rate), mincharge);
+                charge = Math.Max(
+                    activity.Charge.FixedCharge + (rounded.TotalHours * rate),
+                    activity.Charge.MinimumCharge);
             }
 
             if(!timelines.TryGetValue(id, out var timeline))

+ 2 - 1
prs.stores/GPSTrackerLocationStore.cs

@@ -28,7 +28,8 @@ namespace Comal.Stores
         {
             _cache = new ConcurrentDictionary<string, Guid>(
                 DbFactory.NewProvider(Logger.Main).Query(
-                    Filter<GPSTracker>.Where(x => x.DeviceID).IsNotEqualTo(Guid.Empty.ToString()),
+                    Filter<GPSTracker>.Where(x => x.DeviceID).IsNotEqualTo(Guid.Empty.ToString())
+                        .And(x => x.DeviceID).IsNotEqualTo(null),
                     Columns.None<GPSTracker>().Add(x => x.DeviceID).Add(x => x.ID)
                 ).Rows
                     .Select(r => new KeyValuePair<string, Guid>(