Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }