| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System.Linq;
- using FluentResults;
- using InABox.Core;
- namespace Comal.Classes
- {
- [UserTracking(typeof(Quote))]
- public class QuoteContractProposal : Entity, IRemotable, IPersistent, IQuoteContractProposal, IManyToMany<QuoteContract, QuoteProposal>,
- ILicense<QuotesManagementLicense>, ITaxable
- {
- [NullEditor]
- [EntityRelationship(DeleteAction.Cascade)]
- public QuoteContractLink Contract { get; set; }
- private class QuoteContractProposalLookup : LookupDefinitionGenerator<QuoteProposal, QuoteContractProposal>
- {
- public override Filter<QuoteProposal> DefineFilter(QuoteContractProposal[] items)
- {
- if (items?.Any() != true)
- return LookupFactory.DefineFilter<QuoteProposal>();
- return new Filter<QuoteProposal>(x => x.Quote.ID).IsEqualTo(items.First().Contract.Quote.ID);
- }
- public override Columns<QuoteProposal> DefineColumns()
- {
- return base.DefineColumns()
- .Add(x=>x.ProposalExTax)
- .Add(x=>x.ProposalTax)
- .Add(x=>x.ProposalIncTax);
- }
- public override Columns<QuoteContractProposal> DefineFilterColumns()
- => new Columns<QuoteContractProposal>(ColumnTypeFlags.Required);
-
- }
- [LookupDefinition(typeof(QuoteContractProposalLookup))]
- [EntityRelationship(DeleteAction.Cascade)]
- [EditorSequence(1)]
- public QuoteProposalLink Proposal { get; set; }
- [NullEditor]
- public long Sequence { get; set; }
-
- [EditorSequence(2)]
- public bool OverridePrice { get; set; }
-
- [CurrencyEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [EditorSequence(3)]
- public double ExTax { get; set; }
-
- [EditorSequence(4)]
- public TaxCodeLink TaxCode { get; set; }
-
- [NullEditor]
- public double TaxRate { get; set; }
- [CurrencyEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [EditorSequence(5)]
- public double Tax { get; set; }
- [CurrencyEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [EditorSequence(6)]
- public double IncTax { get; set; }
- static QuoteContractProposal()
- {
- LinkedProperties.Register<QuoteContractProposal, TaxCodeLink, double>(x => x.TaxCode, x => x.Rate, x => x.TaxRate);
- LinkedProperties.Register<QuoteContractProposal, QuoteProposalLink, double>(x => x.Proposal, x => x.ProposalExTax, x => x.ExTax, CheckProposalOverride);
- LinkedProperties.Register<QuoteContractProposal, QuoteProposalLink, double>(x => x.Proposal, x => x.ProposalTax, x => x.Tax, CheckProposalOverride);
- LinkedProperties.Register<QuoteContractProposal, QuoteProposalLink, double>(x => x.Proposal, x => x.ProposalIncTax, x => x.IncTax, CheckProposalOverride);
- }
- private static Result<double> CheckProposalOverride(QuoteContractProposal? proposal, double value)
- {
- return proposal?.OverridePrice == true ? Result.Fail("") : Result.Ok(value);
- }
- }
- }
|