Example #1
0
		private static int DrawInfo(ExcelWorksheet ws, SenderCalculationAwbInfo info, int iRow, int count)
		{
			var range = ws.Cells[iRow, 1, iRow, count];
			range.Merge = true;
			range.Style.Fill.PatternType = ExcelFillStyle.Solid;
			range.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
			ws.Row(iRow).Height = ExcelConstants.DefaultRowHeight;
			iRow++;

			ws.Cells[iRow, 1].Value = "sender";
			ws.Cells[iRow, 2].Value = info.CostPerKgOfSender;
			ws.Cells[iRow, 10].Value = info.TotalSenderRate;
			ws.Cells[iRow, 11].Value = info.TotalScotchCost;
			ws.Cells[iRow, 12].Value = info.TotalFactureCost;
			ws.Cells[iRow, 13].Value = info.TotalFactureCostEx;
			ws.Cells[iRow, 14].Value = info.TotalPickupCost;
			ws.Cells[iRow, 15].Value = info.TotalOfSender;
			ws.Row(iRow).Height = ExcelConstants.DefaultRowHeight;
			ws.Cells[iRow, 1, iRow, 14].Style.Font.Bold = true;
			iRow++;

			ws.Cells[iRow, 1].Value = "flight";
			ws.Cells[iRow, 2].Value = info.FlightCostPerKg;
			ws.Cells[iRow, 15].Value = info.FlightCost;
			ws.Row(iRow).Height = ExcelConstants.DefaultRowHeight;
			ws.Cells[iRow, 1, iRow, 14].Style.Font.Bold = true;
			iRow++;

			ws.Cells[iRow, 1].Value = "cost total";
			ws.Cells[iRow, 15].Value = info.Total;
			var rangeCost = ws.Cells[iRow, 1, iRow, count];
			rangeCost.Style.Fill.PatternType = ExcelFillStyle.Solid;
			rangeCost.Style.Fill.BackgroundColor.SetColor(Color.HotPink);
			ws.Row(iRow).Height = ExcelConstants.DefaultRowHeight;
			ws.Cells[iRow, 1, iRow, 15].Style.Font.Bold = true;
			iRow++;

			return iRow;
		}
		private static SenderCalculationAwbInfo[] GetInfo(
			IEnumerable<SenderCalculationGroup> groups,
			IEnumerable<ApplicationData> items,
			IReadOnlyDictionary<long, decimal> tariffs)
		{
			return groups.Select(g =>
			{
				var rows = items.Where(a => a.AirWaybillId == g.AirWaybillId).ToArray();

				var info = new SenderCalculationAwbInfo
				{
					AirWaybillId = g.AirWaybillId,
					TotalCostOfSenderForWeight = g.TotalCostOfSenderForWeight,
					FlightCost = g.FlightCost,
					TotalSenderRate = rows.Sum(x => CalculationHelper.GetTotalSenderRate(x.SenderRate, x.Weight)),
					TotalScotchCost = rows.Sum(x => CalculationHelper.GetSenderTapeTariff(tariffs, x.SenderId) * x.Count) ?? 0,
					TotalFactureCost = rows.Sum(x => x.FactureCost ?? 0),
					TotalFactureCostEx = rows.Sum(x => x.FactureCostEx ?? 0),
					TotalPickupCost = rows.Sum(x => x.PickupCost ?? 0),
					CostPerKgOfSender = null,
					FlightCostPerKg = null
				};

				var totalWeight = (decimal)rows.Sum(x => x.Weight ?? 0);

				if(totalWeight != 0)
				{
					info.CostPerKgOfSender = info.TotalSenderRate / totalWeight;
					info.FlightCostPerKg = info.FlightCost / totalWeight;
				}

				return info;
			}).ToArray();
		}