diff options
Diffstat (limited to 'src/PriceListTools/ExportTool.cs')
-rw-r--r-- | src/PriceListTools/ExportTool.cs | 63 |
1 files changed, 15 insertions, 48 deletions
diff --git a/src/PriceListTools/ExportTool.cs b/src/PriceListTools/ExportTool.cs index 8bf274a..bfb3d8a 100644 --- a/src/PriceListTools/ExportTool.cs +++ b/src/PriceListTools/ExportTool.cs @@ -7,7 +7,7 @@ namespace RehauSku.PriceListTools { internal class ExportTool : PriceListTool { - private Dictionary<string, double> SkuAmount { get; set; } + private Dictionary<Position, double> PositionAmount; private Range Selection; public void TryGetSelection() @@ -22,59 +22,23 @@ namespace RehauSku.PriceListTools public void FillTarget() { - ExcelApp.ScreenUpdating = false; GetSelected(); - FillColumn(SkuAmount, TargetFile.amountCell.Column); - FilterByAmount(); - ExcelApp.ScreenUpdating = true; - - Forms.Dialog.SaveWorkbookAs(); - } - private void FillColumn(IEnumerable<KeyValuePair<string, double>> dictionary, int column) - { - List<KeyValuePair<string, double>> missing = new List<KeyValuePair<string, double>>(); - - foreach (var kvp in dictionary) + foreach (var kvp in PositionAmount) { - Range cell = TargetFile.skuCell.EntireColumn.Find(kvp.Key); - - if (cell == null) - { - missing.Add(kvp); - } - - else - { - Range sumCell = TargetFile.Sheet.Cells[cell.Row, column]; - - if (sumCell.Value2 == null) - { - sumCell.Value2 = kvp.Value; - } - - else - { - sumCell.Value2 += kvp.Value; - } - } + FillColumnsWithDictionary(kvp, TargetFile.amountCell.Column); } - if (missing.Count > 0) - { - System.Windows.Forms.MessageBox.Show - ($"{missing.Count} артикулов отсутствует в таблице заказов {RegistryUtil.PriceListPath} Попробовать найти новый вариант?", - "Отсутствует позиция в конечной таблице заказов", - System.Windows.Forms.MessageBoxButtons.YesNo, - System.Windows.Forms.MessageBoxIcon.Information); - } - } + FilterByAmount(); + Forms.Dialog.SaveWorkbookAs(); + } private void GetSelected() { - object[,] cells = Selection.Value2; - SkuAmount = new Dictionary<string, double>(); + object[,] cells = Selection.Value2; + PositionAmount = new Dictionary<Position, double>(); + int rowsCount = Selection.Rows.Count; for (int row = 1; row <= rowsCount; row++) @@ -111,13 +75,16 @@ namespace RehauSku.PriceListTools continue; } - if (SkuAmount.ContainsKey(sku)) + Position position = new Position(null, sku, null); + + if (PositionAmount.ContainsKey(position)) { - SkuAmount[sku] += amount.Value; + PositionAmount[position] += amount.Value; } + else { - SkuAmount.Add(sku, amount.Value); + PositionAmount.Add(position, amount.Value); } } } |