Example #1
0
        private CreditSlipSpecification FillCreditSlipSpecification(PlanReceiptOrderPersonalAccount x, CreditSlip creditSlip)
        {
            var tax             = _repositoryTax.Specify().Where(a => a.TaxBand == x.PlaneCertificate.TaxBand).Future().First().Value;
            var planCertificate = x.PlaneCertificate;

            var creditSlipSpecification = new CreditSlipSpecification
            {
                CreditSlip = creditSlip,
                NomenclatureNumberModification = planCertificate.ModificationNomenclature,
                TaxBand   = planCertificate.TaxBand,
                PLANQUANT = (decimal)x.CountByDocument,
                FACTQUANT = (decimal)x.CountFact,
                //тут надо смотреть основную единицу измерения и пересчитавать
                PLANQUANTALT  = 0,
                FACTQUANTALT  = 0,
                Price         = (decimal)planCertificate.Price,
                PRICEMEAS     = false,
                PRICECALCRULE = true,
                ACCPRICE      = (decimal)planCertificate.Price,
                ACCPRICEMEAS  = false,
                ACCSUMM       = CreditSlipDomainAlgorithmsOfCalculation.SumWithoutNDS((decimal)x.CountFact, (decimal)planCertificate.Price),
                PLANSUM       = CreditSlipDomainAlgorithmsOfCalculation.SumWithoutNDS((decimal)x.CountByDocument, (decimal)planCertificate.Price),
                PLANSUMTAX    = CreditSlipDomainAlgorithmsOfCalculation.SumWithNDS((decimal)x.CountByDocument, (decimal)planCertificate.Price, tax),
                PLANSUMNDS    = CreditSlipDomainAlgorithmsOfCalculation.SumNDS((decimal)x.CountByDocument, (decimal)planCertificate.Price, tax),
                FACTSUM       = CreditSlipDomainAlgorithmsOfCalculation.SumWithoutNDS((decimal)x.CountFact, (decimal)planCertificate.Price),
                FACTSUMTAX    = CreditSlipDomainAlgorithmsOfCalculation.SumWithNDS((decimal)x.CountFact, (decimal)planCertificate.Price, tax),
                FACTSUMNDS    = CreditSlipDomainAlgorithmsOfCalculation.SumNDS((decimal)x.CountFact, (decimal)planCertificate.Price, tax),
                AUTOCALCSIGN  = true,
                SerNumb       = planCertificate.CertificateQuality.Cast
            };

            creditSlip.CreditSlipSpecifications.Add(creditSlipSpecification);
            return(creditSlipSpecification);
        }
        private void InitializeRecalculation()
        {
            var taxFilter = this._filterViewModelFactory.Create <TaxFilter, TaxLiteDto>();

            this.WhenAny(
                x => x.EditableObject,
                x => x.EditableObject.CountByDocument,
                x => x.EditableObject.Price,
                (e, cd, p) => e.Value != null && cd.Value != null && cd.Value != null && p.Value != null)
            .CombineLatest(
                taxFilter.LoadCompletedNotification.Select(result => result.Any()),
                (left, right) => left && right)
            .Where(isNeedRecalculate => isNeedRecalculate)
            .Subscribe(
                _ =>
            {
                if (taxFilter.Result != null && taxFilter.Result.Any())
                {
                    EditableObject.SumDocumenta        = CreditSlipDomainAlgorithmsOfCalculation.SumWithoutNDS((decimal)EditableObject.CountByDocument, (decimal)EditableObject.Price);
                    EditableObject.SumWithTaxDocumenta = CreditSlipDomainAlgorithmsOfCalculation.SumWithNDS((decimal)EditableObject.CountByDocument, (decimal)EditableObject.Price, taxFilter.Result.First().Value);
                }
            });

            this.WhenAny(
                x => x.EditableObject,
                x => x.EditableObject.TaxBand,
                (e, t) => t.Value)
            .Where(taxBand => taxBand != null)
            .Subscribe(x =>
            {
                taxFilter.SetFilter(new TaxFilter {
                    TaxBandRN = this.EditableObject.TaxBand == null ? 0 : this.EditableObject.TaxBand.Rn
                });
                taxFilter.InvokeCommand.Execute(null);
            });
        }