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); }); }