diff options
Diffstat (limited to 'src/PriceListTools/SourcePriceList.cs')
-rw-r--r-- | src/PriceListTools/SourcePriceList.cs | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/src/PriceListTools/SourcePriceList.cs b/src/PriceListTools/SourcePriceList.cs deleted file mode 100644 index 4e43d7a..0000000 --- a/src/PriceListTools/SourcePriceList.cs +++ /dev/null @@ -1,115 +0,0 @@ -using ExcelDna.Integration; -using Microsoft.Office.Interop.Excel; -using System; -using System.Collections.Generic; -using System.Linq; -using RhSolutions.Interface; - -namespace RhSolutions.PriceListTools -{ - internal class SourcePriceList : PriceListBase - { - public Dictionary<Product, double> PositionAmount { get; private set; } - - public SourcePriceList(Workbook workbook) - { - if (workbook == null) - { - throw new ArgumentException($"Нет рабочего файла"); - } - - Sheet = workbook.ActiveSheet; - Name = workbook.Name; - - Range[] cells = new[] - { - AmountCell = Sheet.Cells.Find(PriceListHeaders.Amount), - SkuCell = Sheet.Cells.Find(PriceListHeaders.Sku), - GroupCell = Sheet.Cells.Find(PriceListHeaders.Group), - NameCell = Sheet.Cells.Find(PriceListHeaders.Name) - }; - - if (cells.Any(x => x == null)) - { - throw new ArgumentException($"Файл {Name} не распознан"); - } - - CreatePositionsDict(); - } - - public static List<SourcePriceList> GetSourceLists(string[] files) - { - var ExcelApp = (Application)ExcelDnaUtil.Application; - ProgressBar bar = new ProgressBar("Открываю исходные файлы...", files.Length); - - List<SourcePriceList> sourceFiles = new List<SourcePriceList>(); - - foreach (string file in files) - { - ExcelApp.ScreenUpdating = false; - Workbook wb = ExcelApp.Workbooks.Open(file); - try - { - SourcePriceList priceList = new SourcePriceList(wb); - sourceFiles.Add(priceList); - wb.Close(); - bar.Update(); - } - catch (Exception ex) - { - System.Windows.Forms.MessageBox.Show - (ex.Message, - "Ошибка открытия исходного прайс-листа", - System.Windows.Forms.MessageBoxButtons.OK, - System.Windows.Forms.MessageBoxIcon.Information); - wb.Close(); - bar.Update(); - } - ExcelApp.ScreenUpdating = true; - } - - return sourceFiles; - } - - private void CreatePositionsDict() - { - PositionAmount = new Dictionary<Product, double>(); - - for (int row = AmountCell.Row + 1; row <= Sheet.Cells[Sheet.Rows.Count, AmountCell.Column].End[XlDirection.xlUp].Row; row++) - { - double? amount = Sheet.Cells[row, AmountCell.Column].Value2 as double?; - - if (amount != null && amount.Value != 0) - { - object group = Sheet.Cells[row, GroupCell.Column].Value2; - object name = Sheet.Cells[row, NameCell.Column].Value2; - object sku = Sheet.Cells[row, SkuCell.Column].Value2; - - if (group == null || name == null || sku == null) - continue; - - if (!sku.ToString().IsRehauSku()) - continue; - - Product p = new Product - { - ProductSku = sku.ToString(), - ProductLine = group.ToString(), - Name = name.ToString() - }; - - if (PositionAmount.ContainsKey(p)) - { - PositionAmount[p] += amount.Value; - } - - else - { - PositionAmount.Add(p, amount.Value); - } - } - } - } - } -} - |