소스 검색

Relabelled Consignment.Supplier to Carrier
Added ExTax, Tax and IncTax properties to Consignments

frogsoftware 1 년 전
부모
커밋
fc7c660569
1개의 변경된 파일71개의 추가작업 그리고 2개의 파일을 삭제
  1. 71 2
      prs.classes/Entities/Consignment/Consignment.cs

+ 71 - 2
prs.classes/Entities/Consignment/Consignment.cs

@@ -50,7 +50,7 @@ namespace Comal.Classes
 //}
 
     [UserTracking(typeof(Delivery))]
-    public class Consignment : Entity, IRemotable, IPersistent, ILicense<LogisticsLicense>
+    public class Consignment : Entity, IRemotable, IPersistent, ITaxable, ILicense<LogisticsLicense>
     {
         [TextBoxEditor]
         [EditorSequence(0)]
@@ -62,9 +62,10 @@ namespace Comal.Classes
         [EditorSequence(2)]
         public PurchaseOrderCategoryLink Category { get; set; }
 
+        [Caption("Carrier")]
         [EditorSequence(3)]
         public SupplierLink Supplier { get; set; }
-
+        
         [TextBoxEditor]
         [EditorSequence(4)]
         public string Origin { get; set; }
@@ -135,5 +136,73 @@ namespace Comal.Classes
         [NullEditor]
         [EditorSequence(17)]
         public EmployeeLink Employee { get; set; }
+        
+        [CurrencyEditor(Visible = Visible.Default, Summary = Summary.Sum)]
+        [EditorSequence(18)]
+        public double ExTax { get; set; }
+        
+        [RequiredColumn]
+        [EditorSequence(19)]        
+        public TaxCodeLink TaxCode { get; set; }
+        
+        [EditorSequence(20)]
+        [DoubleEditor(Visible = Visible.Default, Editable = Editable.Hidden)]
+        public double TaxRate { get; set; }
+
+        [EditorSequence(21)]
+        [CurrencyEditor(Visible = Visible.Default, Summary = Summary.Sum)]
+        public double Tax { get; set; }
+
+        [EditorSequence(22)]
+        [CurrencyEditor(Visible = Visible.Default, Summary = Summary.Sum)]
+        public double IncTax { get; set; }
+
+        static Consignment()
+        {
+            LinkedProperties.Register<Consignment, TaxCodeLink, double>(x => x.TaxCode, x => x.Rate, x => x.TaxRate);
+        }
+        
+        private bool bChanging;
+
+        protected override void DoPropertyChanged(string name, object? before, object? after)
+        {
+            if (bChanging)
+                return;
+
+            try
+            {
+                bChanging = true;
+
+                
+                if (name.Equals(nameof(ExTax)) && after is double extax)
+                {
+                    Tax = extax * TaxCode.Rate / 100.0;
+                    IncTax = extax + Tax;
+                }
+                
+                else if (name.Equals(nameof(TaxRate)) && after is double taxrate)
+                {
+                    Tax = ExTax * taxrate / 100.0;
+                    IncTax = ExTax + Tax;
+                }
+                
+                else if (name.Equals(nameof(Tax)) && after is double tax)
+                {
+                    IncTax = ExTax + tax;
+                }
+
+                else if (name.Equals(nameof(IncTax)) && after is double inctax)
+                {
+                    Tax = inctax / (100.0 + TaxCode.Rate) / 100.0;
+                    ExTax = inctax - Tax;
+                }
+                
+            }
+            finally
+            {
+                bChanging = false;
+            }
+            base.DoPropertyChanged(name, before, after);
+        }
     }
 }