using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Domain.Common; namespace gehGassi.Domain.Shop { /// /// Repräsentiert eine Rechnung. /// Muss so gelöst werden, da Rechnungsnummer aufsteigend sein müssen, und keine Löcher ausfweisen dürfen. /// Daher kann nicht einfach die Bestellnummer verwendet werden. /// public class Invoice : IAuditable { /// /// Id der Rechnung /// [Key] [Required] public long Id { get; set; } /// /// Spezial-ID /// public Guid UniqueId { get; set; } /// /// Rechnungsnummer /// [Required] [MaxLength(100)] public string Number { get; set; } /// /// Zähler für Rechnungs-Nummer /// [Required] public long Counter { get; set; } /// /// Id der Bestellung auf welche sich die Rechnung bezieht /// [Required] public long OrderId { get; set; } /// /// Storniert /// [Required] public bool Cancelled { get; set; } /// /// Datum der Stornierung /// public DateTimeOffset? CancellationDate { get; set; } /// /// Grund für die Stornierung /// public string CancellationReason { get; set; } /// /// Wurde eine Gutschrift erstellt? /// [Required] public bool CreditNoteCreated { get; set; } /// /// Datum der Erstellung einer Gutschrift /// public DateTimeOffset? CreditNoteDate { get; set; } /// /// Datum der Erstellung /// [Required] public DateTimeOffset Created { get; set; } #region IAuditable /// /// Gibt den eindeutigen Key für die Entität zurück; /// Hier als String gelöst, weil damit auch kombinierte Schlüssel möglich sind. /// /// Eindeutiger Key public string AuditKey() { return Id.ToString(); } /// /// Gibt den Objektnamen bzw. die Tabelle der Entität zurück /// /// Objektnamen public string AuditTable() { return "Invoices"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } }