RhSolutions-AddIn/src/PriceListTools/PriceListTool.cs

81 lines
2.7 KiB
C#
Raw Normal View History

2022-01-27 10:22:30 +03:00
using ExcelDna.Integration;
using Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
namespace RehauSku.PriceListTools
{
2022-01-27 17:34:03 +03:00
internal abstract class PriceListTool
2022-01-27 10:22:30 +03:00
{
2022-01-27 17:34:03 +03:00
protected private Application ExcelApp = (Application)ExcelDnaUtil.Application;
protected private Target TargetFile;
2022-01-27 10:22:30 +03:00
2022-01-27 17:34:03 +03:00
public void OpenNewPrice()
2022-01-27 10:22:30 +03:00
{
2022-01-27 17:34:03 +03:00
Workbook wb = ExcelApp.Workbooks.Open(RegistryUtil.PriceListPath);
2022-01-27 10:22:30 +03:00
try
{
2022-01-27 17:34:03 +03:00
TargetFile = new Target(wb);
2022-01-27 10:22:30 +03:00
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show
(ex.Message,
"Ошибка открытия шаблонного прайс-листа",
System.Windows.Forms.MessageBoxButtons.OK,
System.Windows.Forms.MessageBoxIcon.Information);
wb.Close();
2022-01-27 17:34:03 +03:00
throw ex;
2022-01-27 10:22:30 +03:00
}
}
2022-01-28 11:41:35 +03:00
protected private void FillColumn(IEnumerable<KeyValuePair<Position, double>> dictionary, int column)
2022-01-27 10:22:30 +03:00
{
2022-01-28 11:41:35 +03:00
List<KeyValuePair<Position, double>> missing = new List<KeyValuePair<Position, double>>();
2022-01-27 20:43:19 +03:00
foreach (var kvp in dictionary)
2022-01-27 10:22:30 +03:00
{
2022-01-28 11:41:35 +03:00
Range cell = TargetFile.skuCell.EntireColumn.Find(kvp.Key.Sku);
2022-01-27 10:22:30 +03:00
2022-01-27 20:43:19 +03:00
if (cell == null)
2022-01-27 10:22:30 +03:00
{
missing.Add(kvp);
2022-01-27 20:43:19 +03:00
}
else
{
Range sumCell = TargetFile.Sheet.Cells[cell.Row, column];
2022-01-27 10:22:30 +03:00
2022-01-27 20:43:19 +03:00
if (sumCell.Value2 == null)
2022-01-27 10:22:30 +03:00
{
2022-01-27 20:43:19 +03:00
sumCell.Value2 = kvp.Value;
2022-01-27 10:22:30 +03:00
}
else
{
2022-01-27 20:43:19 +03:00
sumCell.Value2 += kvp.Value;
2022-01-27 10:22:30 +03:00
}
}
}
2022-01-27 20:43:19 +03:00
if (missing.Count > 0)
{
System.Windows.Forms.MessageBox.Show
2022-01-28 09:27:45 +03:00
($"{missing.Count} артикулов отсутствует в таблице заказов {RegistryUtil.PriceListPath} Попробовать найти новый вариант?",
"Отсутствует позиция в конечной таблице заказов",
2022-01-28 09:27:45 +03:00
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Information);
}
2022-01-27 10:22:30 +03:00
}
protected private void FilterByAmount()
{
2022-01-27 17:34:03 +03:00
AutoFilter filter = TargetFile.Sheet.AutoFilter;
2022-01-27 10:22:30 +03:00
2022-01-27 17:34:03 +03:00
filter.Range.AutoFilter(TargetFile.amountCell.Column, "<>");
TargetFile.Sheet.Range["A1"].Activate();
2022-01-27 10:22:30 +03:00
}
}
}