From 167a9861a45daae900999193a1ddc30771bf3cb1 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Tue, 30 Aug 2016 23:04:13 +0200 Subject: [PATCH] WIP billing --- Yavsc/Interfaces/IBillingClause.cs | 6 ++++ Yavsc/Model/Billing/FixedImpacter.cs | 14 ++++++++++ Yavsc/Model/Billing/IBillingImpacter.cs | 6 ++++ Yavsc/Model/Billing/ProportionalImpacter.cs | 11 ++++++++ Yavsc/Model/Billing/ReductionCode.cs | 31 +++++++++++++++++++++ 5 files changed, 68 insertions(+) create mode 100644 Yavsc/Interfaces/IBillingClause.cs create mode 100644 Yavsc/Model/Billing/FixedImpacter.cs create mode 100644 Yavsc/Model/Billing/IBillingImpacter.cs create mode 100644 Yavsc/Model/Billing/ProportionalImpacter.cs create mode 100644 Yavsc/Model/Billing/ReductionCode.cs diff --git a/Yavsc/Interfaces/IBillingClause.cs b/Yavsc/Interfaces/IBillingClause.cs new file mode 100644 index 00000000..48e23c9f --- /dev/null +++ b/Yavsc/Interfaces/IBillingClause.cs @@ -0,0 +1,6 @@ + +public interface IBillingClause {  + string Description {get; set;} + IBillingImpacter Impacter { get; } +} + diff --git a/Yavsc/Model/Billing/FixedImpacter.cs b/Yavsc/Model/Billing/FixedImpacter.cs new file mode 100644 index 00000000..a6a72595 --- /dev/null +++ b/Yavsc/Model/Billing/FixedImpacter.cs @@ -0,0 +1,14 @@ +namespace Yavsc.Models.Billing   { +public class FixedImpacter : IBillingImpacter +{ + public decimal ImpactedValue { get; set; } + public FixedImpacter (decimal impact) + { + ImpactedValue = impact; + } + public decimal Impact(decimal orgValue) + { + return orgValue + ImpactedValue; + } +} +} diff --git a/Yavsc/Model/Billing/IBillingImpacter.cs b/Yavsc/Model/Billing/IBillingImpacter.cs new file mode 100644 index 00000000..0dc72329 --- /dev/null +++ b/Yavsc/Model/Billing/IBillingImpacter.cs @@ -0,0 +1,6 @@ + + +public interface IBillingImpacter {  + decimal Impact(decimal orgValue); + +} diff --git a/Yavsc/Model/Billing/ProportionalImpacter.cs b/Yavsc/Model/Billing/ProportionalImpacter.cs new file mode 100644 index 00000000..892aa855 --- /dev/null +++ b/Yavsc/Model/Billing/ProportionalImpacter.cs @@ -0,0 +1,11 @@ +namespace Yavsc.Models.Billing   { + public class ProportionalImpacter : IBillingImpacter + { + public decimal K { get; set; } + public decimal Impact(decimal orgValue) + { + return orgValue * K; + } + } + +} \ No newline at end of file diff --git a/Yavsc/Model/Billing/ReductionCode.cs b/Yavsc/Model/Billing/ReductionCode.cs new file mode 100644 index 00000000..c1b89880 --- /dev/null +++ b/Yavsc/Model/Billing/ReductionCode.cs @@ -0,0 +1,31 @@ + +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace Yavsc.Models.Billing { + +public class ReductionCode : IBillingClause +{ + [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long Id { get; set; } + public ReductionCode(string descr, decimal impact) { + Description = descr; + impacter = new FixedImpacter(impact); + } + public string Description + { + get; + set; + } + IBillingImpacter impacter; + public IBillingImpacter Impacter + { + get + { + return impacter ; + } + private set { + impacter = value; + } + } +} +} \ No newline at end of file