public void Test_GetBillModelByApplication_WithCalc() { var applicationId = _container.Create <long>(); var settings = _container.Create <BillSettings>(); var application = _container.Create <ApplicationData>(); var client = _container.Create <ClientData>(); var calculation = _container.Create <CalculationData>(); var money = CalculationDataHelper.GetMoney(calculation) * settings.EuroToRuble; _container.SettingRepository.Setup(x => x.GetData <BillSettings>(SettingType.Bill)).Returns(settings); _container.ApplicationRepository.Setup(x => x.Get(applicationId)).Returns(application); _container.ClientRepository.Setup(x => x.Get(application.ClientId)).Returns(client); _container.CalculationRepository.Setup(x => x.GetByApplication(applicationId)).Returns(calculation); var model = _factory.GetBillModelByApplication(applicationId); model.ShouldBeEquivalentTo(settings, options => options.ExcludingMissingProperties()); model.BankDetails.ShouldBeEquivalentTo(settings, options => options.ExcludingMissingProperties()); model.Count.ShouldBeEquivalentTo(1); model.PriceRuble.ShouldBeEquivalentTo(money); model.Goods.Should().Contain(client.ContractNumber); model.Goods.Should().Contain(client.ContractDate.ToString("dd MMMM yyyy")); model.Client.Should().Contain(client.LegalEntity).And.Contain(client.LegalAddress).And.Contain(client.INN); _container.SettingRepository.Verify(x => x.GetData <BillSettings>(SettingType.Bill)); _container.ApplicationRepository.Verify(x => x.Get(applicationId)); _container.ClientRepository.Verify(x => x.Get(application.ClientId)); _container.CalculationRepository.Verify(x => x.GetByApplication(applicationId)); }
private void OnCalculation(byte[] bytes, CultureInfo culture, IDictionary <string, string> localizedData) { var calculation = _serializer.Deserialize <CalculationData>(bytes); var balance = _balance.GetBalance(calculation.ClientId); var insuranceCost = CalculationHelper.GetInsuranceCost(calculation.Value, calculation.InsuranceRate); var weightCost = calculation.TariffPerKg * (decimal)calculation.Weight; var total = CalculationDataHelper.GetMoney(calculation, calculation.InsuranceRate); Add(localizedData, "ClientBalance", balance.ToString("N2")); Add(localizedData, "CalculationTimestamp", LocalizationHelper.GetDate(calculation.CreationTimestamp, culture)); Add(localizedData, "AirWaybillDisplay", calculation.AirWaybillDisplay); Add(localizedData, "ApplicationDisplay", calculation.ApplicationDisplay); Add(localizedData, "MarkName", calculation.MarkName); Add(localizedData, "FactoryName", calculation.FactoryName); Add(localizedData, "Weight", calculation.Weight.ToString("N2", culture)); Add(localizedData, "TariffPerKg", calculation.TariffPerKg.ToString("N2", culture)); Add(localizedData, "WeightCost", weightCost.ToString("N2", culture)); Add(localizedData, "ScotchCost", calculation.ScotchCost.ToString("N2", culture)); Add(localizedData, "InsuranceCost", insuranceCost.ToString("N2", culture)); Add(localizedData, "FactureCost", (calculation.FactureCost + calculation.FactureCostEx).ToString("N2", culture)); Add(localizedData, "FactureCostT1", calculation.FactureCost.ToString("N2", culture)); Add(localizedData, "FactureCostEx", calculation.FactureCostEx.ToString("N2", culture)); Add(localizedData, "TransitCost", calculation.TransitCost.ToString("N2", culture)); Add(localizedData, "PickupCost", calculation.PickupCost.ToString("N2", culture)); Add(localizedData, "TotalCost", total.ToString("N2", culture)); }
private void DrawRow(int iRow) { var money = CalculationDataHelper.GetMoney(_data, _data.InsuranceRate); var iColumn = 1; _excel.Cells[iRow, iColumn++].Value = _clientNick; _excel.Cells[iRow, iColumn++].Value = _data.ApplicationDisplay; _excel.Cells[iRow, iColumn++].Value = _data.FactoryName; _excel.Cells[iRow, iColumn++].Value = _data.MarkName; _excel.Cells[iRow, iColumn++].Value = _data.Class; _excel.Cells[iRow, iColumn++].Value = _data.Count; _excel.Cells[iRow, iColumn++].Value = _data.Weight; _excel.Cells[iRow, iColumn++].Value = _data.Invoice; _excel.Cells[iRow, iColumn++].Value = _data.Value; _excel.Cells[iRow, iColumn++].Value = _data.TariffPerKg; _excel.Cells[iRow, iColumn].Style.Font.Bold = true; _excel.Cells[iRow, iColumn++].Value = CalculationHelper.GetTotalTariffCost(_data.TotalTariffCost, _data.TariffPerKg, _data.Weight); _excel.Cells[iRow, iColumn++].Value = _data.ScotchCost; _excel.Cells[iRow, iColumn++].Value = CalculationHelper.GetInsuranceCost(_data.Value, _data.InsuranceRate); _excel.Cells[iRow, iColumn++].Value = _data.FactureCost; _excel.Cells[iRow, iColumn++].Value = _data.FactureCostEx; _excel.Cells[iRow, iColumn++].Value = _data.PickupCost; _excel.Cells[iRow, iColumn++].Value = _data.TransitCost; _excel.Cells[iRow, iColumn].Style.Font.Bold = true; _excel.Cells[iRow, iColumn].Value = money; _excel.Cells[iRow, iColumn + 1].Value = (-money).ToString("N2") + CurrencyName.Euro; _excel.Cells[iRow, iColumn + 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; _excel.Cells[iRow, iColumn + 1].Style.Font.Color.SetColor(Color.Red); var cultureInfo = CultureProvider.GetCultureInfo(); _excel.Cells[iRow, _columnCount + 2].Value = LocalizationHelper.GetDate(_data.CreationTimestamp, cultureInfo); }
private decimal?GetMoney(long applicationId, decimal euroToRuble) { var calculation = _calculations.GetByApplication(applicationId); return(calculation != null ? CalculationDataHelper.GetMoney(calculation) * euroToRuble : (decimal?)null); }
public void CancelCalculatation(long applicationId) { var calculation = _calculations.GetByApplication(applicationId); _service.CancelCalculatation(applicationId); var money = CalculationDataHelper.GetMoney(calculation, calculation.InsuranceRate); _balance.Increase(calculation.ClientId, money, GetComment(EventType.CalculationCanceled, calculation), DateTimeProvider.Now, true); }
public CalculationData Calculate(long applicationId) { var calculation = _service.Calculate(applicationId); var money = CalculationDataHelper.GetMoney(calculation, calculation.InsuranceRate); _balance.Decrease(calculation.ClientId, money, GetComment(EventType.Calculate, calculation), DateTimeProvider.Now, true); return(calculation); }