| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | 
							- using System;
 
- using InABox.Core;
 
- namespace Comal.Classes
 
- {
 
-     
 
-     public interface ICustomerProduct
 
-     {
 
-         CustomerLink Customer { get; set; }
 
-         ProductLink Product { get; set; }
 
-         ProductCharge Charge { get; set; }
 
-     }
 
-     
 
-     [UserTracking(typeof(Product))]
 
-     public class CustomerProduct : Entity, IPersistent, IRemotable, 
 
-         ICustomerProduct,
 
-         IManyToMany<Customer, Product>, 
 
-         IManyToMany<Product, Customer>, 
 
-         ILicense<ProductManagementLicense>, 
 
-         IExportable,
 
-         IImportable
 
-     {
 
-         [EntityRelationship(DeleteAction.Cascade)]
 
-         [EditorSequence(1)]
 
-         public CustomerLink Customer { get; set; }
 
-         [EntityRelationship(DeleteAction.Cascade)]
 
-         [EditorSequence(2)]
 
-         public ProductLink Product { get; set; }
 
-         [ProductChargeEditor]
 
-         [EditorSequence(3)]
 
-         public ProductCharge Charge { get; set; }
 
-     }
 
-     
 
-     public class CustomerProductUnionGenerator : AutoEntityUnionGenerator<ICustomerProduct>
 
-     {
 
-         protected override void Configure()
 
-         {
 
-             AddTable<CustomerProduct>();
 
-             AddTable<Product>()
 
-                 .AddConstant(x => x.Customer.ID, Guid.Empty)
 
-                 .AddConstant(x=>x.Product.ID, new Column<Product>(x=>x.ID));
 
-         }
 
-         public override bool Distinct => false;
 
-         public override Column<ICustomerProduct>[] IDColumns => new Column<ICustomerProduct>[]
 
-         {
 
-             new Column<ICustomerProduct>(x => x.Customer.ID),
 
-             new Column<ICustomerProduct>(x => x.Product.ID)
 
-         };
 
-     }
 
-     [AutoEntity(typeof(CustomerProductUnionGenerator))]
 
-     public class CustomerProductSummary : Entity, IRemotable, IPersistent, ICustomerProduct, ILicense<CoreLicense>
 
-     {
 
-         public CustomerLink Customer { get; set; }
 
-         public ProductLink Product { get; set; }
 
-         public ProductCharge Charge { get; set; }
 
-     }
 
-     
 
- }
 
 
  |