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

Name : Kurum veya gerçek kişi ismi

    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 Discount : Uygulanacak indirim miktarını ifade etmektedir. Bu miktar yüzdesel de olabilir bir ölçü birimi cinsinden de olabilir. Bir belgede yüzde olarak temsil edilirken başka bir belge için adet de olabilir. Bu projede tutarsal hesaplamalar da kullanılmak üzere yüzdesel olarak alınmıştır.

Quantity : Ürün miktarı

Price : Ürün fiyatı

LineTotal : Ürün fiyatı * Ürün miktarı

Item : Ürün ile ilgili verilen tutulduğu 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

DocDate : Belge tarihi

DocTotal : Belgeyi oluşturan her bir satırının toplam tutarı

BusinessPartner : Kurum veya gerçek kişi bilgilerinin olduğu class

Lines : Belgeyi oluşturan satırlar

    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

Type :

Domain :

TriggerValue :

EffectedValue :

    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