12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System.Linq;
- using InABox.Core;
- namespace Comal.Classes
- {
- [UserTracking(typeof(Quote))]
- public class QuoteContractProposal : Entity, IRemotable, IPersistent, IQuoteContractProposal, IManyToMany<QuoteContract, QuoteProposal>,
- ILicense<QuotesManagementLicense>
- {
- [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.ExTax)
- .Add(x=>x.Tax)
- .Add(x=>x.IncTax);
- }
- 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 double Price { get; set; }
-
- private class ExTaxFormula : ComplexFormulaGenerator<QuoteContractProposal, double>
- {
- public override IComplexFormulaNode<QuoteContractProposal, double> GetFormula() => If<double>(
- x => Property(x => x.Price),
- Condition.Equals,
- x => Constant(0.0))
- .Then(Property(x=>x.Proposal.ExTax))
- .Else(Property(x=>x.Price));
- }
-
- [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Hidden, Summary = Summary.Sum)]
- [ComplexFormula(typeof(ExTaxFormula))]
- [EditorSequence(3)]
- public double ExTax { get; set; }
-
- private class TaxFormula : ComplexFormulaGenerator<QuoteContractProposal, double>
- {
- public override IComplexFormulaNode<QuoteContractProposal, double> GetFormula() => If<double>(
- x => Property(x => x.Price),
- Condition.Equals,
- x => Constant(0.0))
- .Then(Property(x=>x.Proposal.Tax))
- .Else(Formula(FormulaOperator.Multiply, Property(x=>x.Price), Property(x=>x.Proposal.TaxCode.Rate), Constant(0.01)));
- }
-
- [CurrencyEditor(Visible = Visible.Optional, Editable = Editable.Hidden, Summary = Summary.Sum)]
- [ComplexFormula(typeof(TaxFormula))]
- [EditorSequence(5)]
- public double Tax { get; set; }
-
- private class IncTaxFormula : ComplexFormulaGenerator<QuoteContractProposal, double>
- {
- public override IComplexFormulaNode<QuoteContractProposal, double> GetFormula() => If<double>(
- x => Property(x => x.Price),
- Condition.Equals,
- x => Constant(0.0))
- .Then(Property(x=>x.Proposal.IncTax))
- .Else(Formula(FormulaOperator.Add, Property(x=>x.Price), Property(x=>x.Tax)));
- }
- [CurrencyEditor(Visible = Visible.Default, Editable = Editable.Hidden, Summary = Summary.Sum)]
- [ComplexFormula(typeof(IncTaxFormula))]
- [EditorSequence(6)]
- public double IncTax { get; set; }
-
- }
- }
|