aboutsummaryrefslogtreecommitdiff
path: root/src/PriceListTools/PriceList.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/PriceListTools/PriceList.cs')
-rw-r--r--src/PriceListTools/PriceList.cs91
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 =
+ // }
+
+ //}
}
+
}