aboutsummaryrefslogtreecommitdiff
path: root/src/PriceListTools/PriceListSheet.cs
blob: 8a34c2ff05e520d595ea39963094f281fea9d0e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using Microsoft.Office.Interop.Excel;
using System.Collections.Generic;

namespace RehauSku.PriceListTools
{
    internal class PriceListSheet
    {
        private const string amountHeader = "Кол-во";
        private const string skuHeader = "Актуальный материал";

        public readonly Worksheet Sheet;
        public readonly string Name;
        public Dictionary<string, double> SkuAmount { get; private set; }
        public int headerRowNumber { get; private set; }
        public int amountColumnNumber { get; private set; }
        public int skuColumnNumber { get; private set; }

        public PriceListSheet(Worksheet sheet)
        {
            Sheet = sheet;
            Name = sheet.Name;
            SkuAmount = new Dictionary<string, double>();

            FillSkuAmount();
        }

        public bool FillSkuAmount()
        {
            Range amountCell = Sheet.Cells.Find(amountHeader);
            Range skuCell = Sheet.Cells.Find(skuHeader);

            if (amountCell == null || skuCell == null)
            {
                AddIn.Excel.StatusBar = $"Лист {Name} не распознан";
                return false;
            }

            headerRowNumber = amountCell.Row;
            skuColumnNumber = skuCell.Column;
            amountColumnNumber = amountCell.Column;

            object[,] amountColumn = Sheet.Columns[amountColumnNumber].Value2;
            object[,] skuColumn = Sheet.Columns[skuColumnNumber].Value2;

            for (int row = headerRowNumber + 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);
                }
            }
            return true;
        }
    }

}