aboutsummaryrefslogtreecommitdiff
path: root/src/PriceListTools
diff options
context:
space:
mode:
authorSerghei Cebotari <51533848+schebotar@users.noreply.github.com>2022-03-24 07:00:37 +0300
committerGitHub <noreply@github.com>2022-03-24 07:00:37 +0300
commit215d68ea95ce44c68e1de235bc18c4dcbe5aaee2 (patch)
tree57353886c323aa86d43d8770f486e362be087593 /src/PriceListTools
parent031ea7f7ef0c690d93bb7e653e59c7dac6964dbb (diff)
parenteaf3ebaa9489462e3d663c93df7a9bc34011464c (diff)
Merge pull request #18 from schebotar/dev
Dev
Diffstat (limited to 'src/PriceListTools')
-rw-r--r--src/PriceListTools/AbstractTool.cs51
-rw-r--r--src/PriceListTools/CombineTool.cs5
-rw-r--r--src/PriceListTools/ConvertTool.cs6
-rw-r--r--src/PriceListTools/ExportTool.cs9
-rw-r--r--src/PriceListTools/MergeTool.cs5
-rw-r--r--src/PriceListTools/Position.cs28
6 files changed, 75 insertions, 29 deletions
diff --git a/src/PriceListTools/AbstractTool.cs b/src/PriceListTools/AbstractTool.cs
index 256be06..abf4bae 100644
--- a/src/PriceListTools/AbstractTool.cs
+++ b/src/PriceListTools/AbstractTool.cs
@@ -45,13 +45,17 @@ namespace RehauSku.PriceListTools
protected void FillPositionAmountToColumns(KeyValuePair<Position, double> positionAmount, params int[] columns)
{
- int? row = GetPositionRow(TargetFile.SkuCell.EntireColumn, positionAmount.Key.Sku, positionAmount.Key.Group);
+ Range worksheetCells = TargetFile.Sheet.Cells;
+ Range skuColumn = TargetFile.SkuCell.EntireColumn;
+ Range oldSkuColumn = TargetFile.OldSkuCell.EntireColumn;
+
+ int? row = GetPositionRow(skuColumn, positionAmount.Key.Sku, positionAmount.Key.Group);
if (row != null)
{
foreach (int column in columns)
{
- Range cell = TargetFile.Sheet.Cells[row, column];
+ Range cell = worksheetCells[row, column];
cell.AddValue(positionAmount.Value);
}
@@ -61,13 +65,13 @@ namespace RehauSku.PriceListTools
if (TargetFile.OldSkuCell != null)
{
- row = GetPositionRow(TargetFile.OldSkuCell.EntireColumn, positionAmount.Key.Sku, positionAmount.Key.Group);
+ row = GetPositionRow(oldSkuColumn, positionAmount.Key.Sku, positionAmount.Key.Group);
if (row != null)
{
foreach (int column in columns)
{
- Range cell = TargetFile.Sheet.Cells[row, column];
+ Range cell = worksheetCells[row, column];
cell.AddValue(positionAmount.Value);
}
@@ -77,13 +81,13 @@ namespace RehauSku.PriceListTools
}
string sku = positionAmount.Key.Sku.Substring(1, 6);
- row = GetPositionRow(TargetFile.SkuCell.EntireColumn, sku, positionAmount.Key.Group);
+ row = GetPositionRow(skuColumn, sku, positionAmount.Key.Group);
if (row != null)
{
foreach (int column in columns)
{
- Range cell = TargetFile.Sheet.Cells[row, column];
+ Range cell = worksheetCells[row, column];
cell.AddValue(positionAmount.Value);
}
@@ -97,37 +101,43 @@ namespace RehauSku.PriceListTools
protected void FillMissing(KeyValuePair<Position, double> positionAmount, params int[] columns)
{
- int row = TargetFile.Sheet.Cells[TargetFile.Sheet.Rows.Count, TargetFile.SkuCell.Column]
+ Range worksheetCells = TargetFile.Sheet.Cells;
+ Range worksheetRows = TargetFile.Sheet.Rows;
+ int skuColumn = TargetFile.SkuCell.Column;
+ int groupColumn = TargetFile.GroupCell.Column;
+ int nameColumn = TargetFile.NameCell.Column;
+
+ int row = worksheetCells[worksheetRows.Count, skuColumn]
.End[XlDirection.xlUp]
.Row + 1;
- TargetFile.Sheet.Rows[row]
+ worksheetRows[row]
.EntireRow
.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);
- Range previous = TargetFile.Sheet.Rows[row - 1];
- Range current = TargetFile.Sheet.Rows[row];
+ Range previous = worksheetRows[row - 1];
+ Range current = worksheetRows[row];
previous.Copy(current);
current.ClearContents();
- TargetFile.Sheet.Cells[row, TargetFile.GroupCell.Column].Value2 = positionAmount.Key.Group;
- TargetFile.Sheet.Cells[row, TargetFile.NameCell.Column].Value2 = positionAmount.Key.Name;
+ worksheetCells[row, groupColumn].Value2 = positionAmount.Key.Group;
+ worksheetCells[row, nameColumn].Value2 = positionAmount.Key.Name;
if (TargetFile.OldSkuCell != null)
{
- TargetFile.Sheet.Cells[row, TargetFile.SkuCell.Column].Value2 = "Не найден";
- TargetFile.Sheet.Cells[row, TargetFile.OldSkuCell.Column].Value2 = positionAmount.Key.Sku;
+ worksheetCells[row, skuColumn].Value2 = "Не найден";
+ worksheetCells[row, TargetFile.OldSkuCell.Column].Value2 = positionAmount.Key.Sku;
}
else
{
- TargetFile.Sheet.Cells[row, TargetFile.SkuCell.Column].Value2 = positionAmount.Key.Sku;
+ worksheetCells[row, skuColumn].Value2 = positionAmount.Key.Sku;
}
foreach (int column in columns)
{
- Range cell = TargetFile.Sheet.Cells[row, column];
+ Range cell = worksheetCells[row, column];
cell.AddValue(positionAmount.Value);
}
}
@@ -142,13 +152,18 @@ namespace RehauSku.PriceListTools
return null;
}
- int firstFoundRow = found.Row;
+ int firstFoundRow = found.Row;
+
+ if (string.IsNullOrEmpty(group))
+ {
+ return found.Row;
+ }
while (true)
{
foundGroupValue = TargetFile.Sheet.Cells[found.Row, TargetFile.GroupCell.Column].Value2.ToString();
- if (string.IsNullOrEmpty(group) || group.Equals(foundGroupValue))
+ if (group.Equals(foundGroupValue))
{
return found.Row;
}
diff --git a/src/PriceListTools/CombineTool.cs b/src/PriceListTools/CombineTool.cs
index eddf9e7..26a2832 100644
--- a/src/PriceListTools/CombineTool.cs
+++ b/src/PriceListTools/CombineTool.cs
@@ -3,6 +3,7 @@ using RehauSku.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading.Tasks;
using Dialog = RehauSku.Interface.Dialog;
namespace RehauSku.PriceListTools
@@ -26,7 +27,7 @@ namespace RehauSku.PriceListTools
}
}
- public override void FillTarget()
+ public override async void FillTarget()
{
ProgressBar = new ProgressBar("Заполняю строки...", SourceFiles.Sum(file => file.PositionAmount.Count));
ResultBar = new ResultBar();
@@ -51,7 +52,7 @@ namespace RehauSku.PriceListTools
FilterByAmount();
ResultBar.Update();
- Interface.Dialog.SaveWorkbookAs();
+ await Task.Delay(new TimeSpan(0, 0, 5));
ExcelApp.StatusBar = false;
}
}
diff --git a/src/PriceListTools/ConvertTool.cs b/src/PriceListTools/ConvertTool.cs
index 1bb02f4..dde969c 100644
--- a/src/PriceListTools/ConvertTool.cs
+++ b/src/PriceListTools/ConvertTool.cs
@@ -1,4 +1,6 @@
using RehauSku.Interface;
+using System;
+using System.Threading.Tasks;
namespace RehauSku.PriceListTools
{
@@ -11,7 +13,7 @@ namespace RehauSku.PriceListTools
Current = new SourcePriceList(ExcelApp.ActiveWorkbook);
}
- public override void FillTarget()
+ public override async void FillTarget()
{
ProgressBar = new ProgressBar("Заполняю строки...", Current.PositionAmount.Count);
ResultBar = new ResultBar();
@@ -25,7 +27,7 @@ namespace RehauSku.PriceListTools
FilterByAmount();
ResultBar.Update();
- Dialog.SaveWorkbookAs();
+ await Task.Delay(new TimeSpan(0, 0, 5));
ExcelApp.StatusBar = false;
}
}
diff --git a/src/PriceListTools/ExportTool.cs b/src/PriceListTools/ExportTool.cs
index 603de8b..6f910b7 100644
--- a/src/PriceListTools/ExportTool.cs
+++ b/src/PriceListTools/ExportTool.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using RehauSku.Interface;
+using System.Threading.Tasks;
namespace RehauSku.PriceListTools
{
@@ -21,11 +22,11 @@ namespace RehauSku.PriceListTools
}
}
- public override void FillTarget()
+ public override async void FillTarget()
{
ProgressBar = new ProgressBar("Заполняю строки...", PositionAmount.Count);
ResultBar = new ResultBar();
-
+
foreach (var kvp in PositionAmount)
{
FillPositionAmountToColumns(kvp, TargetFile.AmountCell.Column);
@@ -35,13 +36,13 @@ namespace RehauSku.PriceListTools
FilterByAmount();
ResultBar.Update();
- Interface.Dialog.SaveWorkbookAs();
+ await Task.Delay(new TimeSpan(0, 0, 5));
ExcelApp.StatusBar = false;
}
private void GetSelected()
{
- object[,] cells = Selection.Value2;
+ object[,] cells = Selection.Value2;
PositionAmount = new Dictionary<Position, double>();
int rowsCount = Selection.Rows.Count;
diff --git a/src/PriceListTools/MergeTool.cs b/src/PriceListTools/MergeTool.cs
index 179fb81..1eb1d54 100644
--- a/src/PriceListTools/MergeTool.cs
+++ b/src/PriceListTools/MergeTool.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading.Tasks;
namespace RehauSku.PriceListTools
{
@@ -24,7 +25,7 @@ namespace RehauSku.PriceListTools
}
}
- public override void FillTarget()
+ public override async void FillTarget()
{
ProgressBar = new ProgressBar("Заполняю строки...", SourceFiles.Sum(x => x.PositionAmount.Count));
ResultBar = new ResultBar();
@@ -41,7 +42,7 @@ namespace RehauSku.PriceListTools
FilterByAmount();
ResultBar.Update();
- Dialog.SaveWorkbookAs();
+ await Task.Delay(new TimeSpan(0, 0, 5));
ExcelApp.StatusBar = false;
}
}
diff --git a/src/PriceListTools/Position.cs b/src/PriceListTools/Position.cs
index 0863642..713ba90 100644
--- a/src/PriceListTools/Position.cs
+++ b/src/PriceListTools/Position.cs
@@ -1,4 +1,6 @@
-namespace RehauSku.PriceListTools
+using System.Linq;
+
+namespace RehauSku.PriceListTools
{
public class Position
{
@@ -12,5 +14,29 @@
Sku = sku;
Name = name;
}
+
+ public override bool Equals(object obj)
+ {
+ if (obj as Position == null)
+ return false;
+
+ Position other = obj as Position;
+
+ return Group == other.Group &&
+ Sku == other.Sku &&
+ Name == other.Name;
+ }
+
+ public override int GetHashCode()
+ {
+ string[] properties = new[]
+ {
+ Group,
+ Sku,
+ Name
+ };
+
+ return string.Concat(properties.Where(p => p != null)).GetHashCode();
+ }
}
} \ No newline at end of file