Skip to content
Hakan Uçar edited this page Oct 17, 2022 · 7 revisions

Sistemin genelinde kullanılan classların tanımlandığı yer

BusinessPartner

Satış yapılan gerçek kişi yada kurum class

    public class BusinessPartner : IBusinessPartner
    {
        public string Name { get; set; }
        public string Group { get; set; }
        public DateTime BirthDate { get; set; }
    }

Item

Satışı yapılan ürün bilgilerinin tanımlandığı class

    public class Item : IItem
    {
        public string Category { get; set; }
    }

DocumentLine

Satış belgesindeki ürün bilgilerinin tanımlandığı class

    public class DocumentLine : IDocumentLine
    {
        public double Discount { get; set; }
        public double Quantity { get; set; }
        public double Price { get; set; }
        public double LineTotal { get { return Price * Quantity; } }
        public Item Item { get; set; }
    }

Document

Satış belgesi(sepet) class

    public class Document : IDocument
    {
        public DateTime DocDate { get; set; } = DateTime.Now;
        public double DocTotal { get { return Lines.Sum(x => x.LineTotal); } }
        public BusinessPartner BusinessPartner { get; set; } = new BusinessPartner();
        public List<DocumentLine> Lines { get; set; } = new List<DocumentLine>();
    }

Discount

İndirim uygulamak için gerekli olan metadataların tanımlandığı class

    public class Discount : AbstractDiscountValidator<Discount>,IDiscount
    {
        public DiscountType Type { get; set; }
        public DomainType Domain { get; set; }
        public double DiscountValue { get; set; }
        public double TriggerValue { get; set; }
        public double EffectedValue { get; set; }

        public Discount(IDocument document) : base(document)
        {
        }

        public override ValidationResult Validate()
        {
            Fails.Clear();
            foreach (var item in Rules)
            {
                Fails.Add(item.Validate(this));
            }

            ValidationResult oValid = new ValidationResult(Fails);
            return oValid;
        }
    }
Clone this wiki locally