| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | using System;using InABox.Core;namespace Comal.Classes{        public abstract class EntitySpreadsheet<TParent, TParentLink> : Entity, IRemotable, IPersistent, IOneToMany<TParent>, ISpreadsheet<TParent,TParentLink>        where TParent : Entity        where TParentLink : IEntityLink<TParent>, new()    {        [EditorSequence(1)]        [CodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]        public String Code { get; set; }                [EditorSequence(2)]        [TextBoxEditor]        public String Description { get; set; }                [EditorSequence(3)]        [TimestampEditor]        [LoggableProperty]        public DateTime Superceded { get; set; }                [NullEditor]        public TParentLink Parent { get; set; }        public byte[] Data { get; set; } = Array.Empty<byte>();    }    public class JobSpreadsheet : EntitySpreadsheet<Job, JobLink>, ILicense<ProjectManagementLicense> {  }        public class QuoteSpreadsheet : EntitySpreadsheet<Quote, QuoteLink>, ILicense<QuotesManagementLicense> {  }    public class ProductSpreadsheet : EntitySpreadsheet<Product, ProductLink>, ILicense<ProductManagementLicense> {  }        public class CustomerSpreadsheet : EntitySpreadsheet<Customer, CustomerLink>, ILicense<AccountsReceivableLicense> {  }        public class SupplierSpreadsheet : EntitySpreadsheet<Supplier, SupplierLink>, ILicense<AccountsPayableLicense> {  }    public class EmployeeSpreadsheet : EntitySpreadsheet<Employee, EmployeeLink>, ILicense<HumanResourcesLicense> {  }    }
 |