public decimal GetPrice() { AbstractCalculatorDecorator currentDecorator; // base BaseCalculatorComponent baseComponent = new BaseCalculatorComponent(BasicPriceList.TaxModeNames[0], BasicPriceList.OperationRangeNames[5], new BasicPriceList()); // Employees decorator EmployeesCalculatorDecorator employeeDecorator = new EmployeesCalculatorDecorator(baseComponent, 3, 300); employeeDecorator.EmployeeCount = 4; currentDecorator = employeeDecorator; // VED decorator VEDExportImportDecorator vedDecorator = new VEDExportImportDecorator(currentDecorator, 5000); currentDecorator = vedDecorator; // Currency account decorator CurrencyAccountCountDecorator currencyDecorator = new CurrencyAccountCountDecorator(currentDecorator, 1000, 2); currentDecorator = currencyDecorator; // KKM decorator KKMDecorator kkmDecorator = new KKMDecorator(currencyDecorator, 2, 1, 3000); currentDecorator = kkmDecorator; // Branches decorator //BranchesDecorator branchesDecorator = new BranchesDecorator(currentDecorator, 5000); //currentDecorator = branchesDecorator; // Leasing/Credit LeasingCreditDecorator leasingCreditDecorator = new LeasingCreditDecorator(currentDecorator, 2000); currentDecorator = leasingCreditDecorator; // Expats decorator ExpatsDecorator expatsDecorator = new ExpatsDecorator(currentDecorator, 3, 500); currentDecorator = expatsDecorator; // Client bank decorator ClientBankDecorator clientBankDecorator = new ClientBankDecorator(currentDecorator, 5000); currentDecorator = clientBankDecorator; // Primary documents decorator PrimaryDocumentsDecorator primaryDocumentsDecorator = new PrimaryDocumentsDecorator(currentDecorator, baseComponent, 30); currentDecorator = primaryDocumentsDecorator; // Fixed assets decorator FixedAssetsDecorator fixedAssetsDecorator = new FixedAssetsDecorator(currentDecorator, 3000); currentDecorator = fixedAssetsDecorator; // Manufacture decorator ManufactureDecorator manufactureDecorator = new ManufactureDecorator(currentDecorator, baseComponent, 30); currentDecorator = manufactureDecorator; // LAST decorator return(currentDecorator.GetPrice()); }
private void Button_Click(object sender, RoutedEventArgs e) { //AbstractCalculatorDecorator currentDecorator; // Base BaseCalculatorComponent baseComponent = new BaseCalculatorComponent(cmb_taxRegime.SelectedValue.ToString(), cmb_operationCountRanges.SelectedValue.ToString(), new BasicPriceList()); ICalculatorComponent currentComponent = baseComponent; // Employees decorator EmployeesCalculatorDecorator employeeDecorator = new EmployeesCalculatorDecorator(currentComponent, BASE_EMPLOYEE_COUNT, EXTRA_EMPLOYEE_PRICE); employeeDecorator.EmployeeCount = nud_employees.Value.Value; currentComponent = employeeDecorator; // VED decorator if (chk_ved.IsChecked.Value) { VEDExportImportDecorator vedDecorator = new VEDExportImportDecorator(currentComponent, VED_PRICE); currentComponent = vedDecorator; } // Currency account decorator CurrencyAccountCountDecorator currencyDecorator = new CurrencyAccountCountDecorator(currentComponent, price: CURRENCY_ACCOUNT_PRICE, accountCount: nud_currencyAccounts.Value.Value); currentComponent = currencyDecorator; // KKM decorator KKMDecorator kkmDecorator = new KKMDecorator(currentComponent, nud_kkmCount.Value.Value, BASE_KKM_COUNT, EXTRA_KKM_PRICE); currentComponent = kkmDecorator; // Branches decorator if (chk_branches.IsChecked.Value) { BranchesDecorator branchesDecorator = new BranchesDecorator(currentComponent, EXTRA_BRANCH_PRICE); currentComponent = branchesDecorator; } // Leasing/Credit if (chk_leasingCredits.IsChecked.Value) { LeasingCreditDecorator leasingCreditDecorator = new LeasingCreditDecorator(currentComponent, LEASING_CREDIT_PRICE); currentComponent = leasingCreditDecorator; } // Expats decorator ExpatsDecorator expatsDecorator = new ExpatsDecorator(currentComponent, nud_expatCount.Value.Value, EXPAT_PRICE); currentComponent = expatsDecorator; // Client bank decorator if (chk_clientBank.IsChecked.Value) { ClientBankDecorator clientBankDecorator = new ClientBankDecorator(currentComponent, CLIENT_BANK_PRICE); currentComponent = clientBankDecorator; } // Primary documents decorator if (chk_primaryDocuments.IsChecked.Value) { PrimaryDocumentsDecorator primaryDocumentsDecorator = new PrimaryDocumentsDecorator(currentComponent, baseComponent, PRIMERY_DOCUMENTS_PERCENT); currentComponent = primaryDocumentsDecorator; } // Fixed assets decorator if (chk_fixedAssets.IsChecked.Value) { FixedAssetsDecorator fixedAssetsDecorator = new FixedAssetsDecorator(currentComponent, FIXED_ASSETS_PRICE); currentComponent = fixedAssetsDecorator; } // Manufacture decorator if (chk_manufacture.IsChecked.Value) { ManufactureDecorator manufactureDecorator = new ManufactureDecorator(currentComponent, baseComponent, MANUFACTURE_PERCENT); currentComponent = manufactureDecorator; } // RESULT lbl_result.Content = currentComponent.GetPrice() * HIDDEN_COEFFICIENT + " rub."; // // Additional services // DummyBaseComponent dummy = new DummyBaseComponent(); ICalculatorComponent addServCurrent = dummy; if (chk_keepingDocumentsOfPastYears.IsChecked.Value) { KeepingDocumentsOFPastYears keepingDecor = new KeepingDocumentsOFPastYears(addServCurrent, KEEPING_DOCUMENTS_OF_PAST_YEARS_PRICE); addServCurrent = keepingDecor; } if (chk_preparingDocumentsForTrading.IsChecked.Value) { PreparingDocumentsForBargainingDecorator preparingDocumentsDecor = new PreparingDocumentsForBargainingDecorator(addServCurrent, PREPARING_DOCUMENTS_FOR_BARGAINING_PRICE); addServCurrent = preparingDocumentsDecor; } if (chk_resubmissionOfDocuments.IsChecked.Value) { ResubmissionOfReport resubmissionDecor = new ResubmissionOfReport(addServCurrent, RESUBMISSION_OF_REPORT_PRICE); addServCurrent = resubmissionDecor; } // RESULT lbl_AdditionalServiceResult.Content = addServCurrent.GetPrice() + " rub."; }