main
1using System;
2using MoMoney.Domain.Core;
3
4namespace MoMoney.Domain.Accounting
5{
6 public interface IPayment : Entity
7 {
8 Money apply_to(Money money);
9 }
10
11 [Serializable]
12 internal class Payment : GenericEntity<IPayment>, IPayment
13 {
14 Money amount_paid { get; set; }
15
16 public Payment(Money amount_paid)
17 {
18 this.amount_paid = amount_paid;
19 }
20
21 public Money apply_to(Money money)
22 {
23 return money.add(amount_paid);
24 }
25
26 public bool Equals(Payment obj)
27 {
28 if (ReferenceEquals(null, obj)) return false;
29 if (ReferenceEquals(this, obj)) return true;
30 return base.Equals(obj) && Equals(obj.amount_paid, amount_paid);
31 }
32
33 public override bool Equals(object obj)
34 {
35 if (ReferenceEquals(null, obj)) return false;
36 if (ReferenceEquals(this, obj)) return true;
37 return Equals(obj as Payment);
38 }
39
40 public override int GetHashCode()
41 {
42 unchecked
43 {
44 return (base.GetHashCode()*397) ^ (amount_paid != null ? amount_paid.GetHashCode() : 0);
45 }
46 }
47 }
48}