|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|