diff options
Diffstat (limited to 'src/PriceListTools/PriceList.cs')
-rw-r--r-- | src/PriceListTools/PriceList.cs | 91 |
1 files changed, 85 insertions, 6 deletions
diff --git a/src/PriceListTools/PriceList.cs b/src/PriceListTools/PriceList.cs index e2fd142..588a0bc 100644 --- a/src/PriceListTools/PriceList.cs +++ b/src/PriceListTools/PriceList.cs @@ -1,21 +1,100 @@ using Microsoft.Office.Interop.Excel; -using System; using System.Collections.Generic; -using System.IO; -using System.Linq; +using System; namespace RehauSku.PriceListTools { internal class PriceList { + private const string amountHeader = "Кол-во"; + private const string skuHeader = "Актуальный материал"; + private const string groupHeader = "Программа"; + + public readonly Worksheet Sheet; public readonly string Name; - public PriceListSheet Sheet { get; private set; } + public Dictionary<string, double> SkuAmount { get; private set; } + + public readonly Range amountCell; + public readonly Range skuCell; + public readonly Range groupCell; + + public Dictionary<PriceListPosition, Range> Map { get; private set; } + + public PriceList(Worksheet sheet) + { + Sheet = sheet; + Name = sheet.Name; + + amountCell = Sheet.Cells.Find(amountHeader); + skuCell = Sheet.Cells.Find(skuHeader); + groupCell = Sheet.Cells.Find(groupHeader); + + if (amountCell == null || skuCell == null || groupCell == null) + { + throw new ArgumentException($"Лист { Name } не распознан"); + } + + FillSkuAmount(); + } public PriceList(Workbook workbook) { - Name = workbook.Name; - Sheet = new PriceListSheet(workbook.ActiveSheet); + Sheet = workbook.ActiveSheet; + Name = workbook.Name + '\n' + Sheet.Name; + + amountCell = Sheet.Cells.Find(amountHeader); + skuCell = Sheet.Cells.Find(skuHeader); + groupCell = Sheet.Cells.Find(groupHeader); + + if (amountCell == null || skuCell == null || groupCell == null) + { + throw new ArgumentException($"Лист { Name } не распознан"); + } + + FillSkuAmount(); + } + + private void FillSkuAmount() + { + SkuAmount = new Dictionary<string, double>(); + + object[,] amountColumn = Sheet.Columns[amountCell.Column].Value2; + object[,] skuColumn = Sheet.Columns[skuCell.Column].Value2; + + for (int row = amountCell.Row + 1; row < amountColumn.GetLength(0); row++) + { + object amount = amountColumn[row, 1]; + object sku = skuColumn[row, 1]; + + if (amount != null && (double)amount != 0) + { + if (SkuAmount.ContainsKey(sku.ToString())) + SkuAmount[sku.ToString()] += (double)amount; + + else + SkuAmount.Add(sku.ToString(), (double)amount); + } + } } + + //public void CreateMap() + //{ + // Range amountCell = Sheet.Cells.Find(amountHeader); + // Range skuCell = Sheet.Cells.Find(skuHeader); + // Range groupCell = Sheet.Cells.Find(groupHeader); + + // headerRowNumber = amountCell.Row; + // skuColumnNumber = skuCell.Column; + // amountColumnNumber = amountCell.Column; + // groupColumnNumber = groupCell.Column; + + // for (int row = headerRowNumber + 1; row < skuCell.Rows.Count; row++) + // { + // string sku = + // } + + //} } + } |