diff options
Diffstat (limited to 'src/PriceListTools/CombineTool.cs')
-rw-r--r-- | src/PriceListTools/CombineTool.cs | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/src/PriceListTools/CombineTool.cs b/src/PriceListTools/CombineTool.cs index 39d3b98..f6eac8a 100644 --- a/src/PriceListTools/CombineTool.cs +++ b/src/PriceListTools/CombineTool.cs @@ -1,56 +1,52 @@ using Microsoft.Office.Interop.Excel; -using System; +using System.Collections.Generic; +using System.Linq; namespace RehauSku.PriceListTools { internal class CombineTool : PriceListTool { - public override void FillTarget() + public List<Source> SourceFiles; + + public void FillTarget() { - int exportedValues = 0; + ExcelApp.ScreenUpdating = false; + FillAmountColumn(SourceFiles.Select(x => x.SkuAmount).ToArray()); + AddAndFillSourceColumns(); + FilterByAmount(); + ExcelApp.ScreenUpdating = true; - foreach (var sheet in sourcePriceLists) + Forms.Dialog.SaveWorkbookAs(); + } + + private void AddAndFillSourceColumns() + { + foreach (var source in SourceFiles) { - if (sheet.SkuAmount.Count == 0) + if (source.SkuAmount.Count == 0) continue; - NewPriceList.Sheet.Columns[NewPriceList.amountCell.Column] + TargetFile.Sheet.Columns[TargetFile.amountCell.Column] .EntireColumn .Insert(XlInsertShiftDirection.xlShiftToRight, XlInsertFormatOrigin.xlFormatFromRightOrBelow); - foreach (var kvp in sheet.SkuAmount) + TargetFile.Sheet.Cells[TargetFile.amountCell.Row, TargetFile.amountCell.Column - 1].Value2 = $"{source.Name}"; + + foreach (var kvp in source.SkuAmount) { - Range cell = NewPriceList.Sheet.Columns[NewPriceList.skuCell.Column].Find(kvp.Key); + Range cell = TargetFile.Sheet.Columns[TargetFile.skuCell.Column].Find(kvp.Key); if (cell == null) { - System.Windows.Forms.MessageBox.Show - ($"Артикул {kvp.Key} отсутствует в таблице заказов {RegistryUtil.PriceListPath}", - "Отсутствует позиция в конечной таблице заказов", - System.Windows.Forms.MessageBoxButtons.OK, - System.Windows.Forms.MessageBoxIcon.Information); + continue; } else { - NewPriceList.Sheet.Cells[cell.Row, NewPriceList.amountCell.Column - 1].Value2 = kvp.Value; - Range sumCell = NewPriceList.Sheet.Cells[cell.Row, NewPriceList.amountCell.Column]; - - if (sumCell.Value2 == null) - sumCell.Value2 = kvp.Value; - else - sumCell.Value2 += kvp.Value; - - exportedValues++; + TargetFile.Sheet.Cells[cell.Row, TargetFile.amountCell.Column - 1].Value2 = kvp.Value; } - - NewPriceList.Sheet.Cells[NewPriceList.amountCell.Row, NewPriceList.amountCell.Column - 1].Value2 = $"{sheet.Name}"; } } - - FilterByAmount(); - AddIn.Excel.StatusBar = $"Экспортировано {exportedValues} строк из {sourcePriceLists.Count} файлов"; - Forms.Dialog.SaveWorkbookAs(); } } } |