using System;

namespace BeWo.Data.Entities
{
    public class Invoice : BeWoEntityBase
    {
        public static string PropertyName_Amount = "Amount";

        public static string PropertyName_Customer = "Customer";

        public static string PropertyName_InvoiceDate = "InvoiceDate";

        public static string PropertyName_InvoiceNumber = "InvoiceNumber";

        public static string PropertyName_InvoicingPeriodEnd = "InvoicingPeriodEnd";

        public static string PropertyName_InvoicingPeriodStart = "InvoicingPeriodStart";

        public static string PropertyName_Organisation = "Organisation";

        public static string PropertyName_PaidDate = "PaidDate";

        public static string PropertyName_RecipientAddress = "RecipientAddress";

        public static string PropertyName_RecipientName = "RecipientName";

        public static string PropertyName_SupportConcept = "SupportConcept";

        private decimal _Amount;

        private Customer _Customer;

        private DateTime? _InvoiceDate;

        private string _InvoiceNumber;

        private DateTime? _InvoicingPeriodEnd;

        private DateTime? _InvoicingPeriodStart;

        private Organisation _Organisation;

        private DateTime? _PaidDate;

        private string _RecipientAddress;

        private string _RecipientName;

        private SupportConcept _SupportConcept;

        public virtual decimal Amount
        {
            get
            {
                return this._Amount;
            }

            set
            {
                if (this.AreDifferent(this._Amount, value))
                {
                    this._Amount = value;
                }
            }
        }

        public virtual Customer Customer
        {
            get
            {
                return this._Customer;
            }

            set
            {
                if (this.AreDifferent(this._Customer, value))
                {
                    this._Customer = value;
                }
            }
        }

        public virtual DateTime? InvoiceDate
        {
            get
            {
                return this._InvoiceDate;
            }

            set
            {
                if (this.AreDifferent(this._InvoiceDate, value))
                {
                    this._InvoiceDate = value;
                }
            }
        }

        public virtual string InvoiceNumber
        {
            get
            {
                return this._InvoiceNumber;
            }

            set
            {
                if (this.AreDifferent(this._InvoiceNumber, value))
                {
                    this._InvoiceNumber = value;
                }
            }
        }

        public virtual DateTime? InvoicingPeriodEnd
        {
            get
            {
                return this._InvoicingPeriodEnd;
            }

            set
            {
                if (this.AreDifferent(this._InvoicingPeriodEnd, value))
                {
                    this._InvoicingPeriodEnd = value;
                }
            }
        }

        public virtual DateTime? InvoicingPeriodStart
        {
            get
            {
                return this._InvoicingPeriodStart;
            }

            set
            {
                if (this.AreDifferent(this._InvoicingPeriodStart, value))
                {
                    this._InvoicingPeriodStart = value;
                }
            }
        }

        public virtual Organisation Organisation
        {
            get
            {
                return this._Organisation;
            }

            set
            {
                if (this.AreDifferent(this._Organisation, value))
                {
                    this._Organisation = value;
                }
            }
        }

        public virtual DateTime? PaidDate
        {
            get
            {
                return this._PaidDate;
            }

            set
            {
                if (this.AreDifferent(this._PaidDate, value))
                {
                    this._PaidDate = value;
                }
            }
        }

        public virtual string RecipientAddress
        {
            get
            {
                return this._RecipientAddress;
            }

            set
            {
                if (this.AreDifferent(this._RecipientAddress, value))
                {
                    this._RecipientAddress = value;
                }
            }
        }

        public virtual string RecipientName
        {
            get
            {
                return this._RecipientName;
            }

            set
            {
                if (this.AreDifferent(this._RecipientName, value))
                {
                    this._RecipientName = value;
                }
            }
        }

        public virtual SupportConcept SupportConcept
        {
            get
            {
                return this._SupportConcept;
            }

            set
            {
                if (this.AreDifferent(this._SupportConcept, value))
                {
                    this._SupportConcept = value;
                }
            }
        }
    }
}