Explorar o código

Merge commit 'bde939594bca352fdc762c24777033a67d15b7ad' into frank

Frank van den Bos %!s(int64=2) %!d(string=hai) anos
pai
achega
58b08057cc

+ 47 - 32
prs.classes/EnclosedEntities/Dimensions/Dimensions.cs

@@ -5,13 +5,13 @@ using System.Collections.Generic;
 namespace Comal.Classes
 {
 
-    public abstract class Dimensions<TLink,TUnit> : EnclosedEntity, IDimensions 
-        where TLink : DimensionUnitLink<TUnit>, new() 
+    public abstract class Dimensions<TLink, TUnit> : EnclosedEntity, IDimensions
+        where TLink : DimensionUnitLink<TUnit>, new()
         where TUnit : DimensionUnit, new()
     {
 
         public Dimensions() : base() { }
-        
+
         public Dimensions(Func<BaseObject> entity) : base(entity) { }
 
         [EditorSequence(1)]
@@ -20,93 +20,93 @@ namespace Comal.Classes
         public abstract TLink Unit { get; set; }
 
         public IDimensionUnit GetUnit() => Unit;
-        
+
         [DoubleEditor(Visible = Visible.Hidden)]
         [EditorSequence(2)]
         [Caption("Quantity", IncludePath = false)]
         [RequiredColumn]
         public abstract double Quantity { get; set; }
-        
+
         [DoubleEditor(Visible = Visible.Hidden)]
         [EditorSequence(3)]
         [Caption("Length", IncludePath = false)]
         [RequiredColumn]
         public abstract double Length { get; set; }
-        
+
         [DoubleEditor(Visible = Visible.Hidden)]
         [EditorSequence(4)]
         [Caption("Width", IncludePath = false)]
         [RequiredColumn]
         public abstract double Width { get; set; }
-        
+
         [DoubleEditor(Visible = Visible.Hidden)]
         [EditorSequence(5)]
         [Caption("Height", IncludePath = false)]
         [RequiredColumn]
         public abstract double Height { get; set; }
-        
+
         [DoubleEditor(Visible = Visible.Hidden)]
         [EditorSequence(6)]
         [Caption("Weight", IncludePath = false)]
         [RequiredColumn]
         public abstract double Weight { get; set; }
-        
+
         [DoubleEditor(Visible = Visible.Optional, Editable = Editable.Hidden)]
         [Caption("Value", IncludePath = false)]
         [EditorSequence(7)]
         [RequiredColumn]
         public abstract double Value { get; set; }
-        
-        [TextBoxEditor(Visible = Visible.Default, Editable=Editable.Hidden)]
+
+        [TextBoxEditor(Visible = Visible.Default, Editable = Editable.Hidden)]
         [EditorSequence(8)]
         [Caption("Unit Size", IncludePath = false)]
         [RequiredColumn]
         public abstract String UnitSize { get; set; }
-        
+
         protected override void Init()
         {
             base.Init();
             Unit = Activator.CreateInstance(typeof(TLink), new object[] { new Func<BaseObject>(LinkedEntity) }) as TLink;
             Unit.PropertyChanged += (s, e) =>
             {
-                if(e.PropertyName == "ID")
+                if (e.PropertyName == "ID")
                 {
                     DoPropertyChanged("Unit." + e.PropertyName, OriginalValues.GetValueOrDefault("Unit." + e.PropertyName), Unit.ID);
                 }
-                else if(e.PropertyName == "Formula")
+                else if (e.PropertyName == "Formula")
                 {
                     DoPropertyChanged("Unit." + e.PropertyName, OriginalValues.GetValueOrDefault("Unit." + e.PropertyName), Unit.Formula);
                 }
-                else if(e.PropertyName == "Format")
+                else if (e.PropertyName == "Format")
                 {
                     DoPropertyChanged("Unit." + e.PropertyName, OriginalValues.GetValueOrDefault("Unit." + e.PropertyName), Unit.Format);
                 }
             };
         }
-        
+
         private bool bCalculating = false;
 
-        private static Column<Dimensions<TLink,TUnit>> unitid = new Column<Dimensions<TLink,TUnit>>(x => x.Unit.ID);
-        private static Column<Dimensions<TLink,TUnit>> quantity = new Column<Dimensions<TLink,TUnit>>(x => x.Quantity);
-        private static Column<Dimensions<TLink,TUnit>> length = new Column<Dimensions<TLink,TUnit>>(x => x.Length);
-        private static Column<Dimensions<TLink,TUnit>> width = new Column<Dimensions<TLink,TUnit>>(x => x.Width);
-        private static Column<Dimensions<TLink,TUnit>> height = new Column<Dimensions<TLink,TUnit>>(x => x.Height);
-        private static Column<Dimensions<TLink,TUnit>> weight = new Column<Dimensions<TLink,TUnit>>(x => x.Weight);
-        private static Column<Dimensions<TLink,TUnit>> sizeformula = new Column<Dimensions<TLink,TUnit>>(x => x.Unit.Formula);
-        private static Column<Dimensions<TLink,TUnit>> sizeformat = new Column<Dimensions<TLink,TUnit>>(x => x.Unit.Format);
-        
+        private static Column<Dimensions<TLink, TUnit>> unitid = new Column<Dimensions<TLink, TUnit>>(x => x.Unit.ID);
+        private static Column<Dimensions<TLink, TUnit>> quantity = new Column<Dimensions<TLink, TUnit>>(x => x.Quantity);
+        private static Column<Dimensions<TLink, TUnit>> length = new Column<Dimensions<TLink, TUnit>>(x => x.Length);
+        private static Column<Dimensions<TLink, TUnit>> width = new Column<Dimensions<TLink, TUnit>>(x => x.Width);
+        private static Column<Dimensions<TLink, TUnit>> height = new Column<Dimensions<TLink, TUnit>>(x => x.Height);
+        private static Column<Dimensions<TLink, TUnit>> weight = new Column<Dimensions<TLink, TUnit>>(x => x.Weight);
+        private static Column<Dimensions<TLink, TUnit>> sizeformula = new Column<Dimensions<TLink, TUnit>>(x => x.Unit.Formula);
+        private static Column<Dimensions<TLink, TUnit>> sizeformat = new Column<Dimensions<TLink, TUnit>>(x => x.Unit.Format);
+
         protected override void DoPropertyChanged(string name, object? before, object? after)
         {
             base.DoPropertyChanged(name, before, after);
 
             if (bCalculating)
                 return;
-            
+
             bCalculating = true;
-            
+
             try
             {
-                
+
                 if (unitid.IsEqualTo(name))
                     Calculate(Quantity, Length, Width, Height, Weight, Unit.Formula, Unit.Format);
                 else if (quantity.IsEqualTo(name))
@@ -154,11 +154,11 @@ namespace Comal.Classes
             }
             finally
             {
-                bCalculating = false;                
+                bCalculating = false;
             }
         }
 
-        
+
         private void Calculate(object? quantity, object? length, object? width, object? height, object? weight, string? formula, string? format)
         {
             if (Evaluate<double>(formula, quantity, length, width, height, weight, out double value))
@@ -169,7 +169,7 @@ namespace Comal.Classes
 
         private bool Evaluate<T>(string? formula, object? quantity, object? length, object? width, object? height, object? weight, out T result)
         {
-            
+
             if (!String.IsNullOrWhiteSpace(formula))
             {
                 var variables = new Dictionary<string, object?>()
@@ -184,7 +184,7 @@ namespace Comal.Classes
                 {
                     var expr = new CoreExpression(formula);
                     var eval = expr.Evaluate(variables);
-                    result = (T)CoreUtils.ChangeType(eval,typeof(T));
+                    result = (T)CoreUtils.ChangeType(eval, typeof(T));
                     return true;
                 }
                 catch (Exception e)
@@ -215,5 +215,20 @@ namespace Comal.Classes
             if (!observing)
                 SetObserving(true);
         }
+
+        public override string ToString()
+        {
+            var result = Value != 0 ? Math.Round(Value, 3).ToString() : "";
+            result = !string.IsNullOrWhiteSpace(UnitSize) ? result + " " + UnitSize + ", " : "Empty unitsize";
+            result = Quantity != 0 ? result + "Quantity: " + Quantity + ", " : result;
+            result = Length != 0 ? result + "Length: " + Length + ", " : result;
+            result = Width != 0 ? result + "Width: " + Width + ", " : result;
+            result = Height != 0 ? result + "Height: " + Height + ", " : result;
+            result = Weight != 0 ? result + "Weight: " + Weight : result;
+            if (result.EndsWith(", "))
+                result = result.Remove(result.Length - 2);
+
+            return result;
+        }
     }
 }

+ 2 - 0
prs.classes/Entities/Job/Job.cs

@@ -117,6 +117,8 @@ namespace Comal.Classes
         [NullEditor]
         public ScheduleLink ScheduleLink { get; set; }
 
+        [DoNotPersist]
+        [DoNotSerialize]
         public static String JobNumberPrefix { get; set; }
 
         public Expression<Func<Job, string>> AutoIncrementField() => x => x.JobNumber;

+ 2 - 0
prs.classes/Entities/PurchaseOrder/PurchaseOrder.cs

@@ -146,6 +146,8 @@ namespace Comal.Classes
         [NullEditor]
         public string SupplierName { get; set; }
 
+        [DoNotPersist]
+        [DoNotSerialize]
         public static string PONumberPrefix { get; set; }
         
         public Expression<Func<PurchaseOrder, string>> AutoIncrementField() => x => x.PONumber;

+ 0 - 1
prs.classes/Entities/PurchaseOrder/PurchaseOrderLink.cs

@@ -29,7 +29,6 @@ namespace Comal.Classes
         //[NullEditor]
         public string SupplierCode { get; set; }
 
-        [NullEditor]
         public SupplierLink SupplierLink { get; set; }
 
         [NullEditor]

+ 2 - 0
prs.classes/Entities/Quote/Quote.cs

@@ -123,6 +123,8 @@ namespace Comal.Classes
 
         #endregion
 
+        [DoNotPersist]
+        [DoNotSerialize]
         public static String NumberPrefix { get; set; } 
         
         public Expression<Func<Quote, string>> AutoIncrementField() => x => x.Number;

+ 2 - 2
prs.desktop/Panels/Jobs/JobBillOfMaterialsItemsGrid.cs

@@ -278,8 +278,7 @@ namespace PRSDesktop
                 PurchaseOrderItem POItem = new PurchaseOrderItem();
                 POItem.Product.ID = BOMItem.Product.ID;
                 POItem.Product.Code = BOMItem.Product.Code;
-                POItem.Product.Name = BOMItem.Product.Name;
-                POItem.Description = BOMItem.Product.Name;
+                POItem.Product.Name = BOMItem.Product.Name;               
                 POItem.Qty = BOMItem.Quantity;
                 POItem.Dimensions.CopyFrom(BOMItem.Dimensions);
                 POItem.Style.ID = BOMItem.Style.ID;
@@ -287,6 +286,7 @@ namespace PRSDesktop
                 POItem.Style.Description = BOMItem.Style.Description;
                 POItem.Job.ID = BOMItem.Job.ID;
                 POItem.Dimensions.UnitSize = BOMItem.Dimensions.UnitSize;
+                POItem.Description = BOMItem.Product.Name + " (" + BOMItem.Dimensions.ToString() + ")";
                 items.Add(POItem);
             }
             result.LoadRows(items);

+ 22 - 0
prs.desktop/Panels/Jobs/JobOrderGrid.cs

@@ -17,6 +17,28 @@ namespace PRSDesktop
                 DynamicGridOption.FilterRows,
                 DynamicGridOption.MultiSelect
             );
+            HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.ID);
+            HiddenColumns.Add(x => x.PurchaseOrderLink.Category.ID);
+            HiddenColumns.Add(x => x.ID);
+            HiddenColumns.Add(x => x.Product.ID);
+            HiddenColumns.Add(x => x.Product.Code);
+            HiddenColumns.Add(x => x.Product.Name);
+            HiddenColumns.Add(x => x.Description);
+            HiddenColumns.Add(x => x.TaxCode.ID);
+            HiddenColumns.Add(x => x.TaxCode.Code);
+            HiddenColumns.Add(x => x.TaxCode.Description);
+            HiddenColumns.Add(x => x.TaxCode.Rate);
+            HiddenColumns.Add(x => x.TaxRate);
+            HiddenColumns.Add(x => x.ExTax);
+            HiddenColumns.Add(x => x.Tax);
+            HiddenColumns.Add(x => x.IncTax);
+            HiddenColumns.Add(x => x.BillLine.ID);
+            HiddenColumns.Add(x => x.BillLine.Deleted);
+            HiddenColumns.Add(x => x.Consignment.ID);
+            HiddenColumns.Add(x => x.Product.DigitalForm.ID);
+            HiddenColumns.Add(x => x.Product.DigitalForm.Description);
+            HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Code);
+            HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Name);
         }
 
         public event DataModelUpdateEvent OnUpdateDataModel;

+ 2 - 0
prs.desktop/Panels/Suppliers/SupplierPurchaseOrderItems.cs

@@ -50,6 +50,8 @@ namespace PRSDesktop
             HiddenColumns.Add(x => x.Consignment.ID);
             HiddenColumns.Add(x => x.Product.DigitalForm.ID);
             HiddenColumns.Add(x => x.Product.DigitalForm.Description);
+            HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Code);
+            HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Name);
 
             HiddenColumns.Add(x => x.Product.Image.ID);
             HiddenColumns.Add(x => x.Product.Image.FileName);

+ 1 - 1
prs.desktop/prsdesktop.iss

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

+ 5 - 3
prs.mobile.new/PRS.Mobile.Droid/PRS.Mobile.Droid.csproj

@@ -16,6 +16,7 @@
         <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
         <TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
         <AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
+        <AndroidSupportedAbis>armeabi-v7a;x86;arm64-v8a;x86_64</AndroidSupportedAbis>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
         <DebugSymbols>true</DebugSymbols>
@@ -26,7 +27,6 @@
         <ErrorReport>prompt</ErrorReport>
         <WarningLevel>4</WarningLevel>
         <AndroidLinkMode>None</AndroidLinkMode>
-        <AndroidSupportedAbis>armeabi-v7a;x86;arm64-v8a;x86_64</AndroidSupportedAbis>
         <AndroidUseAapt2>true</AndroidUseAapt2>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -38,7 +38,9 @@
         <WarningLevel>4</WarningLevel>
         <AndroidManagedSymbols>true</AndroidManagedSymbols>
         <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
-        <AndroidSupportedAbis>armeabi-v7a;x86;arm64-v8a;x86_64</AndroidSupportedAbis>
+        <AndroidSigningKeyStore>/Users/nicholastan/Downloads/development-2.cer</AndroidSigningKeyStore>
+        <AndroidSigningStorePass>Fr0g50ftw4r3</AndroidSigningStorePass>
+        <AndroidPackageFormat>aab</AndroidPackageFormat>
     </PropertyGroup>
     <ItemGroup>
         <Reference Include="Mono.Android" />
@@ -89,7 +91,7 @@
             <Name>InABox.Core</Name>
         </ProjectReference>
         <ProjectReference Include="..\..\..\inabox\InABox.Mobile\InABox.Mobile.Shared\InABox.Mobile.Shared.csproj">
-            <Project>{d7d34a5b-4aef-4aca-9867-9803556f0b07}</Project>
+            <Project>{C4F5BF06-CAB8-47CF-8B0A-FF3406081781}</Project>
             <Name>InABox.Mobile.Shared</Name>
         </ProjectReference>
         <ProjectReference Include="..\PRS.Mobile\PRS.Mobile.csproj">

+ 2 - 2
prs.mobile.new/PRS.Mobile.Droid/Properties/AndroidManifest.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="101300" android:versionName="1.01.3" package="comal.timesheets.android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="101600" android:versionName="1.01.6" package="comal.timesheets.Android">
 	<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="33" />
 	<queries>
 		<intent>
@@ -31,7 +31,7 @@
 	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 	<uses-permission android:name="android.permission.CAMERA" />
-	<application android:label="PRS Site">
+	<application>
 		<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
 			<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
 		</provider>

+ 1 - 1
prs.mobile.new/PRS.Mobile.iOS/Info.plist

@@ -27,7 +27,7 @@
 	<key>CFBundleIdentifier</key>
 	<string>com.prsdigital.prssiteapp</string>
 	<key>CFBundleVersion</key>
-	<string>1.0.3</string>
+	<string>1.01.6</string>
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
 	<key>CFBundleName</key>

+ 1 - 1
prs.server/PRSServer.iss

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