elfisa-pharmacy/src/ElectronicPharmacy/UserControls/UCPriceList.cs
Magomed a9fd467b5d Fix gradient button paint artifacts and WrapMode crash on .NET Framework.
Use toolbar-themed background fill, lighter shadow, and remove invalid LinearGradientBrush.WrapMode that caused OnPaint failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 14:39:45 +03:00

1474 lines
62 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
using System.Data.OleDb;
using System.Data.Common;
using Электроннаяармация.Classes;
using Электроннаяармация.HelpForms;
namespace Электроннаяармация.UserControls
{
public partial class UCPriceList : UserControl
{
public UCPriceList(string workWithConsignee)
{
InitializeComponent();
_WorkWithConsignee = workWithConsignee;
}
public string ConsigneeName => txtConsignee?.Text ?? string.Empty;
SQLiteDataAdapter daPriceList;
DataSet dsPriceList;
BindingSource bsPriceList = new BindingSource();
DataAdapter daPriceListMain;
DataTable tablePriceList;
string _WorkWithConsignee;
decimal _percentageAsDefault;
string _selectedSupplierFilter = string.Empty;
bool _suppressSupplierFilterEvents;
int _committedSupplierFilterIndex;
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
public void RefreshFromDatabase()
{
loadPriceListV2();
InitializeSupplierFilter();
loadTempOrderItems();
ApplyPriceListFilters();
}
private void UCPriceList_Load(object sender, EventArgs e)
{
UiThemeHelper.ApplyToControlTree(this);
Tag = "chrome-child";
btnDeleteGood.Height = 34;
btnClearSearchInPriceList.Height = 32;
txtSearchGoodNameInPriceList.Height = 32;
btnClearSupplierFilter.Height = 32;
panel1.SizeChanged += (_, __) => LayoutMarkupRow();
LayoutMarkupRow();
txtConsignee.Enabled = false;
txtConsignee.Text = _WorkWithConsignee;
//loadConsignees();
//loadPriceList(string.Empty);
loadPriceListV2();
InitializeSupplierFilter();
loadTempOrderItems();
loadInfoAboutDefaultMarkup();
txtSearchGoodNameInPriceList.Focus();
}
private void LayoutMarkupRow()
{
// Keep markup row readable at different DPI/window sizes.
try
{
var paddingLeft = 8;
var y = 30;
var gap = 8;
label4.Location = new Point(paddingLeft, y + 2);
numericPercent.Location = new Point(label4.Right + 6, y);
numericPercent.Width = 56;
checkUsePercentageAsDefault.AutoSize = true;
checkUsePercentageAsDefault.Location = new Point(
Math.Max(numericPercent.Right + gap, panel1.ClientSize.Width - checkUsePercentageAsDefault.PreferredSize.Width - 10),
y + 2);
lblPriceForGood.AutoSize = false;
lblPriceForGood.AutoEllipsis = true;
lblPriceForGood.Location = new Point(numericPercent.Right + gap, y + 2);
lblPriceForGood.Height = 22;
lblPriceForGood.Width = Math.Max(90, checkUsePercentageAsDefault.Left - lblPriceForGood.Left - gap);
}
catch
{
// best-effort layout; ignore
}
}
private void InitializeSupplierFilter()
{
try
{
_suppressSupplierFilterEvents = true;
comboSupplierFilter.BeginUpdate();
comboSupplierFilter.Items.Clear();
comboSupplierFilter.Items.Add("Все поставщики");
var suppliers = new List<string>();
using (var con = new SQLiteConnection(connectionStringToLocalDB))
{
con.Open();
using (var cmd = new SQLiteCommand("select SupplierName from PriceList where SupplierName is not null and SupplierName <> '' group by SupplierName order by SupplierName asc;", con))
{
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var value = reader.GetString(0);
if (!string.IsNullOrWhiteSpace(value))
{
suppliers.Add(value);
}
}
}
}
}
foreach (var s in suppliers)
{
comboSupplierFilter.Items.Add(s);
}
comboSupplierFilter.SelectedIndex = 0;
_selectedSupplierFilter = string.Empty;
_committedSupplierFilterIndex = comboSupplierFilter.SelectedIndex;
btnClearSupplierFilter.Visible = false;
}
finally
{
comboSupplierFilter.EndUpdate();
_suppressSupplierFilterEvents = false;
}
}
private void ApplyPriceListFilters()
{
var parts = new List<string>();
if (!string.IsNullOrWhiteSpace(_selectedSupplierFilter))
{
var escapedSupplier = _selectedSupplierFilter.Replace("'", "''");
parts.Add($"[Поставщик] = '{escapedSupplier}'");
}
if (!string.IsNullOrWhiteSpace(GoodsFilter))
{
var escaped = GoodsFilter.Replace("'", "''");
parts.Add($"[Наименование] like '%{escaped}%'");
}
bsPriceList.Filter = parts.Count == 0 ? null : string.Join(" AND ", parts);
}
private void comboSupplierFilter_SelectionChangeCommitted(object sender, EventArgs e)
{
// Defer until the dropdown has fully closed.
BeginInvoke(new Action(ApplySupplierFilterFromCombo));
}
private void ApplySupplierFilterFromCombo()
{
if (_suppressSupplierFilterEvents)
{
return;
}
if (comboSupplierFilter.SelectedIndex == _committedSupplierFilterIndex)
{
return;
}
_committedSupplierFilterIndex = comboSupplierFilter.SelectedIndex;
var selected = comboSupplierFilter.SelectedItem as string;
if (string.IsNullOrWhiteSpace(selected) || selected == "Все поставщики")
{
_selectedSupplierFilter = string.Empty;
btnClearSupplierFilter.Visible = false;
}
else
{
_selectedSupplierFilter = selected;
btnClearSupplierFilter.Visible = true;
}
ApplyPriceListFilters();
}
private void btnClearSupplierFilter_Click(object sender, EventArgs e)
{
_suppressSupplierFilterEvents = true;
comboSupplierFilter.SelectedIndex = 0;
_suppressSupplierFilterEvents = false;
_committedSupplierFilterIndex = comboSupplierFilter.SelectedIndex;
_selectedSupplierFilter = string.Empty;
btnClearSupplierFilter.Visible = false;
ApplyPriceListFilters();
}
private DataTable LoadPriceListTable(string supplierName)
{
var tablePrice = new DataTable();
var q = "select * from PriceList";
if (!string.IsNullOrWhiteSpace(supplierName))
{
q += " where SupplierName = @supplierName";
}
using (var con = new SQLiteConnection(connectionStringToLocalDB))
{
con.Open();
using (var cmd = new SQLiteCommand(q, con))
{
if (!string.IsNullOrWhiteSpace(supplierName))
{
cmd.Parameters.AddWithValue("@supplierName", supplierName);
}
using (var da = new SQLiteDataAdapter(cmd))
{
da.Fill(tablePrice);
}
}
}
return tablePrice;
}
private void ApplyPriceListTable(DataTable tablePrice)
{
// Keep existing logic: just rename columns and re-bind.
tablePrice.Columns[0].ColumnName = "ИД товара";
tablePrice.Columns[1].ColumnName = "Код товара";
tablePrice.Columns[2].ColumnName = "ИД поставщика";
tablePrice.Columns[3].ColumnName = "Наименование";
tablePrice.Columns[4].ColumnName = "Поставщик";
tablePrice.Columns[5].ColumnName = "Цена";
tablePrice.Columns[6].ColumnName = "Остаток";
tablePrice.Columns[7].ColumnName = "Срок годности";
tablePrice.Columns[8].ColumnName = "Описание";
tablePrice.Columns[9].ColumnName = "Заказ";
tablePrice.Columns[10].ColumnName = "Сумма";
tablePrice.Columns[12].ColumnName = "ИДПрайсЛистАйтем";
bsPriceList.DataSource = tablePrice;
dgvPriceList.DataSource = bsPriceList;
dgvPriceList.AutoGenerateColumns = true;
dgvPriceList.Font = new Font("Segoe UI", 13, FontStyle.Regular);
dgvPriceList.Columns[0].Visible = false;
dgvPriceList.Columns[1].Visible = false;
dgvPriceList.Columns[2].Visible = false;
dgvPriceList.Columns[7].Visible = true;
dgvPriceList.Columns[8].Visible = false;
dgvPriceList.Columns[11].Visible = false;
dgvPriceList.Columns[12].Visible = false;
dgvPriceList.Columns[3].Width = 760;
dgvPriceList.Columns[4].Width = 150;
dgvPriceList.Columns[5].Width = 120;
dgvPriceList.Columns[6].Width = 100;
dgvPriceList.Columns[7].Width = 140;
dgvPriceList.Columns[9].Width = 100;
dgvPriceList.Columns[10].Width = 100;
}
void loadInfoAboutDefaultMarkup()
{
decimal percentageMarkupDefault = Convert.ToDecimal(Properties.Settings.Default.IntDefaultPercentMarkup);
if (percentageMarkupDefault == 0)
{
percentageMarkupDefault = 30;
}
_percentageAsDefault = percentageMarkupDefault;
numericPercent.Value = Convert.ToDecimal(Properties.Settings.Default.IntDefaultPercentMarkup);
}
public void loadSupplierTabs(string SupplierName)
{
string tabName;
if (SupplierName == string.Empty)
{
tabName = "Корзина";
}
else
{
tabName = SupplierName;
}
TabPage pageSupplier = new TabPage($"{tabName}");
UCOrderItems UCOrderItemsBySuppliers = new UCOrderItems(SupplierName);
UCOrderItemsBySuppliers.ParentForm = this;
pageSupplier.SuspendLayout();
pageSupplier.ResumeLayout();
tabOrderItems.TabPages.Add(pageSupplier);
pageSupplier.Controls.Add(UCOrderItemsBySuppliers);
UCOrderItemsBySuppliers.Dock = DockStyle.Fill;
tabOrderItems.SelectTab(pageSupplier);
}
public void loadTempOrderItems()
{
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
List<String> SuppliersFromOrder = new List<String>();
string qShowMeSuppliersFromOrder = $@"
select
[SupplierName]
from [TempOrderItems]
group by [SupplierName]
";
tabOrderItems.TabPages.Clear();
int tabPagesCount = tabOrderItems.TabCount;
loadSupplierTabs(string.Empty);
using (SQLiteConnection conSuppliersTempOrderGroup = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
conSuppliersTempOrderGroup.Open();
SQLiteCommand cmdShowMeSuppliersFromOrder = new SQLiteCommand(qShowMeSuppliersFromOrder, conSuppliersTempOrderGroup);
SQLiteDataReader dr = cmdShowMeSuppliersFromOrder.ExecuteReader();
while (dr.Read())
{
loadSupplierTabs(dr.GetString(0));
}
}
catch(Exception ex)
{
ToastNotification.ShowError($"Ошибка при создании вкладок: {ex.Message}");
}
finally
{
conSuppliersTempOrderGroup.Close();
}
}
dgvPriceList.Focus();
}
public void loadPriceListV2()
{
ApplyPriceListTable(LoadPriceListTable(string.Empty));
ApplyPriceListFilters();
}
private void loadPriceListV2(string supplierFilter)
{
ApplyPriceListTable(LoadPriceListTable(string.Empty));
_selectedSupplierFilter = supplierFilter ?? string.Empty;
ApplyPriceListFilters();
}
#region старая загрузка прайсов
public void loadPriceListV1(string FilterAddon)
{
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
string qShowMePriceList = $@"
select
pl.[GoodCode] as [Код товара],
pl.[GoodName] as [Наименование],
pl.[ProducerName] as [Производитель],
pl.[SupplierName] as [Поставщик],
pl.[BestBefore] as [Срок годности],
pl.[JNVLS] as [ЖНВЛП?],
pl.[AvaibleCount] as [Доступно],
pl.[PriceSupplierWithNDS] as [Цена],
pl.[CountIWantBuy] as [Заказано],
pl.[SumIWantBuy] as [Сумма],
pl.[Marked] as [Признак маркировки]
from [PriceList] pl
where pl.AvaibleCount > 0
and pl.ConsigneesCode = (select codeConsignees from Consignees where ConsigneesName = '{_WorkWithConsignee}')
{FilterAddon}
order by pl.goodname asc
";
SQLiteConnection conPriceList = new SQLiteConnection(connectionStringToLocalDB);
try
{
conPriceList.Open();
daPriceList = new SQLiteDataAdapter(qShowMePriceList, conPriceList);
dsPriceList = new DataSet();
daPriceList.Fill(dsPriceList, "PriceList");
dgvPriceList.DataSource = dsPriceList.Tables["PriceList"];
//dgvPriceList.AutoGenerateColumns = true;
BindingSource bsPriceList = new BindingSource();
bsPriceList.DataSource = dsPriceList.Tables["PriceList"];
dgvPriceList.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
dgvPriceList.RowHeadersVisible = false;
dgvPriceList.Columns[0].ReadOnly = true;
dgvPriceList.Columns[1].ReadOnly = true;
dgvPriceList.Columns[2].ReadOnly = true;
dgvPriceList.Columns[3].ReadOnly = true;
dgvPriceList.Columns[4].ReadOnly = true;
dgvPriceList.Columns[5].ReadOnly = true;
dgvPriceList.Columns[6].ReadOnly = true;
dgvPriceList.Columns[7].ReadOnly = true;
dgvPriceList.Columns[8].ReadOnly = true;
dgvPriceList.Columns[9].ReadOnly = false;
dgvPriceList.Columns[10].ReadOnly = true;
dgvPriceList.Columns[9].DefaultCellStyle.Format = "N0";
dgvPriceList.DefaultCellStyle.Font = new Font("Segoe UI", 10, FontStyle.Regular);
//dgvPriceList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
dgvPriceList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
dgvPriceList.Columns["Код товара"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dgvPriceList.Columns["Код товара"].Width = 1;
dgvPriceList.Columns["Наименование"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgvPriceList.Columns["Производитель"].Width = 200;
dgvPriceList.Columns["Поставщик"].Width = 130;
dgvPriceList.Columns["Срок годности"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
//dgvPriceList.Columns["Доступно"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
//dgvPriceList.Columns["Цена"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
//dgvPriceList.Columns["Заказано"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
//dgvPriceList.Columns["Сумма"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
//dgvPriceList.Columns["Признак маркировки"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
dgvPriceList.Columns["ЖНВЛП?"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
catch (Exception ex)
{
ToastNotification.ShowError($"Ошибка загрузки прайс-листа: {ex.Message}");
}
finally
{
conPriceList.Close();
}
}
#endregion
void AddItemInOrdersItems(string GoodCode, string GoodName, string SupplierName, string ItemConsigner, string BestBefore, string CountItem, string SumItem, string PriceItem)
{
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
using (SQLiteConnection conTempOrder = new SQLiteConnection(connectionStringToLocalDB))
{
string qInsertDataInTempTableOrderItems = $@"
insert into [TempOrderItems] values (
'{GoodCode}',
'{GoodName}',
'{SupplierName}',
'{ItemConsigner}',
'{CountItem}',
'{SumItem}',
'{PriceItem}',
'{BestBefore}'
)
";
string qShowMeCountsOfOrderedThatGood = $@"
select count(GoodCode) from TempOrderItems where
GoodCode = '{GoodCode}' and
GoodName = '{GoodName}' and
SupplierName = '{SupplierName}' and
ConsigneesName = '{ItemConsigner}' and
SupplierPrice = '{PriceItem}' and
BestBefore = '{BestBefore}'
";
string qUpdateOrderedPriceListItems = $@"
update TempOrderItems
set OrderedCountItems = '{CountItem}',
SumOrderedItems = '{SumItem}'
where
GoodCode = '{GoodCode}' and
GoodName = '{GoodName}' and
SupplierName = '{SupplierName}' and
ConsigneesName = '{ItemConsigner}' and
SupplierPrice = '{PriceItem}' and
BestBefore = '{BestBefore}'
";
try
{
conTempOrder.Open();
int RowCountsOfThatGood = 0;
SQLiteCommand cmdCheckCountOfOrderedItems = new SQLiteCommand(qShowMeCountsOfOrderedThatGood, conTempOrder);
RowCountsOfThatGood = Convert.ToInt32(cmdCheckCountOfOrderedItems.ExecuteScalar());
if (RowCountsOfThatGood > 0)
{
SQLiteCommand cmdUpdatePriceListItems = new SQLiteCommand(qUpdateOrderedPriceListItems, conTempOrder);
cmdUpdatePriceListItems.ExecuteNonQuery();
}
else
{
SQLiteCommand cmdFillTempOrderItems = new SQLiteCommand(qInsertDataInTempTableOrderItems, conTempOrder);
cmdFillTempOrderItems.ExecuteNonQuery();
}
}
catch (Exception ex)
{
ToastNotification.ShowError($"Ошибка заполнения корзины: {ex.Message}");
}
finally
{
conTempOrder.Close();
}
loadTempOrderItems();
}
}
private void btnSendOrder_Click(object sender, EventArgs e)
{
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
string OrderNumber = $"EP-{DateTime.Now.Millisecond.ToString()}{DateTime.Now.Date.ToString("mmdd")}";
string OrderDate = DateTime.Now.ToString("yyyy-MM-dd");//DateTime.Now.ToShortDateString();
using (SQLiteConnection conCreateOrder = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
conCreateOrder.Open();
string CountOrderedItems;
string SumOrderedItems;
string qShowMeCountOrderedItems = "select count(GoodCode) from TempOrderItems where OrderedCountItems > 0";
string qShowMeSumOrderedItems = "select sum(SumOrderedItems) from TempOrderItems where OrderedCountItems > 0";
SQLiteCommand cmdShowMeCountOfOrderedItems = new SQLiteCommand(qShowMeCountOrderedItems, conCreateOrder);
SQLiteCommand cmdShowMeSumOfOrderedItems = new SQLiteCommand(qShowMeSumOrderedItems, conCreateOrder);
qShowMeCountOrderedItems = Convert.ToString(cmdShowMeCountOfOrderedItems.ExecuteScalar());
qShowMeSumOrderedItems = Convert.ToString(cmdShowMeSumOfOrderedItems.ExecuteScalar());
string qCreateOrder = $@"
insert into [Orders] (OrderNumber, OrderDate, OrderedItemsCount, OrderSum, OrderState)
values
(
'{OrderNumber}',
select strftime('%Y-%m-%d','{OrderDate}'),
'{qShowMeCountOrderedItems}',
'{qShowMeSumOrderedItems}',
'SAVE'
)
";
SQLiteCommand cmdCreateOrder = new SQLiteCommand(qCreateOrder, conCreateOrder);
cmdCreateOrder.ExecuteNonQuery();
foreach (DataGridViewRow row in dgvOrder.Rows)
{
string qCreateOrderItems = $@"
insert into OrderItems (idOrder, GoodCode, GoodName, codeSuppliers, codeConsignees, OrderedCountItems, SupplierPrice, SumOrderedItems, BestBefore, ProducerName, ProducerPrice)
values
(
(select idOrder from Orders where OrderNumber = '{OrderNumber}'),
'{row.Cells[0].Value.ToString()}',
'{row.Cells[1].Value.ToString()}',
(select codeSuppliers from Suppliers where SuppliersName = '{row.Cells[2].Value.ToString()}'),
(select codeConsignees from Consignees where ConsigneesName = '{row.Cells[3].Value.ToString()}'),
'{row.Cells[5].Value.ToString()}',
'{row.Cells[4].Value.ToString()}',
'{row.Cells[6].Value.ToString()}',
'{row.Cells[7].Value.ToString()}',
'{row.Cells[8].Value.ToString()}',
'{row.Cells[9].Value.ToString()}'
)
";
SQLiteCommand cmdCreateOrderItems = new SQLiteCommand(qCreateOrderItems, conCreateOrder);
cmdCreateOrderItems.ExecuteNonQuery();
}
EraseOrder();
}
catch (Exception ex)
{
ToastNotification.ShowError($"Ошибка формирования заказа: {ex.Message}");
}
finally
{
conCreateOrder.Close();
}
}
}
#region TODO: что-то с заказом, потом доделать под актуальную версию
// void IWantBuyThisGood()
// {
// int selectedRowIndex = dgvPriceList.CurrentRow.Index;
// //int IWantBuyGood = Convert.ToInt32(dgvPriceList.Rows[selectedRowIndex].Cells[10].Value.ToString());
// int IWantBuyGood = Convert.ToInt32(dgvPriceList.Rows[selectedRowIndex].Cells[8].Value.ToString());
// if (IWantBuyGood <= 0)
// {
// ErasePriceListOrderItem();
// }
// else if (IWantBuyGood > 0)
// {
// double SuppliersPrice = Convert.ToDouble(dgvPriceList.Rows[selectedRowIndex].Cells[7].Value.ToString());
// double SumGoodsIWantBuy = SuppliersPrice * IWantBuyGood;
// string sumBuy = SumGoodsIWantBuy.ToString();
// dgvPriceList.Rows[selectedRowIndex].Cells[9].Value = sumBuy.ToString();
// //dgvPriceList.Rows[selectedRowIndex].Cells[11].Value = "1";//SumGoodsIWantBuy.ToString();
// //dgvPriceList.CurrentRow.Cells[11].Value = SumGoodsIWantBuy.ToString();
// string qUpdateCountAndSumInPriceListTable = $@"
//update PriceList set
//[CountIWantBuy] = '{IWantBuyGood.ToString()}',
//[SumIWantBuy] = '{sumBuy.ToString()}'
//where
//[GoodCode] = '{dgvPriceList.Rows[selectedRowIndex].Cells[0].Value.ToString()}'
//and [GoodName] = '{dgvPriceList.Rows[selectedRowIndex].Cells[1].Value.ToString()}'
//and [ProducerName] = '{dgvPriceList.Rows[selectedRowIndex].Cells[2].Value.ToString()}'
//and [SupplierName] = '{dgvPriceList.Rows[selectedRowIndex].Cells[3].Value.ToString()}'
//and [ConsigneesCode] = (select codeConsignees from Consignees where ConsigneesName = '{_WorkWithConsignee}')
//";
// string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
// //dgvPriceList.Rows[selectedRowIndex].DefaultCellStyle.Font = new Font("Segoe UI", 10, FontStyle.Bold);
// using (SQLiteConnection conUpdateBuyingGoods = new SQLiteConnection(connectionStringToLocalDB))
// {
// try
// {
// conUpdateBuyingGoods.Open();
// SQLiteCommand cmdUpdateBuyingGoods = new SQLiteCommand(qUpdateCountAndSumInPriceListTable, conUpdateBuyingGoods);
// cmdUpdateBuyingGoods.ExecuteNonQuery();
// }
// catch (Exception ex)
// {
// MessageBox.Show($"Возникла ошибка при обновлении данных о закупке товаров. Текст ошибки:\n{ex.ToString()}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
// }
// finally
// {
// conUpdateBuyingGoods.Close();
// }
// }
// string ItemConsigner = txtConsignee.Text;
// //if (ItemConsigner == "" | ItemConsigner == "Грузополучатель")
// //{
// // MessageBox.Show("Пожалуйста, укажите грузополучателя.", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Hand);
// //}
// //else
// //{
// string GoodCode = dgvPriceList.Rows[selectedRowIndex].Cells[0].Value.ToString();
// string GoodName = dgvPriceList.Rows[selectedRowIndex].Cells[1].Value.ToString();
// string SupplierName = dgvPriceList.Rows[selectedRowIndex].Cells[3].Value.ToString();
// string BestBefore = dgvPriceList.Rows[selectedRowIndex].Cells[4].Value.ToString();
// string CountItem = dgvPriceList.Rows[selectedRowIndex].Cells[8].Value.ToString();
// string SumItem = dgvPriceList.Rows[selectedRowIndex].Cells[9].Value.ToString();
// string PriceItem = dgvPriceList.Rows[selectedRowIndex].Cells[7].Value.ToString();
// AddItemInOrdersItems(GoodCode, GoodName, SupplierName, ItemConsigner, BestBefore, CountItem, SumItem, PriceItem);
// //}
// }
// }
#endregion
private void dgvPriceList_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//IWantBuyThisGood();
//int RowIndex = dgvPriceList.SelectedRows[0].Index;
//if (dgvPriceList.Rows[RowIndex].Cells[4].Value != string.Empty)
//{
// Font customFont = new Font("Segoe UI", 13, FontStyle.Bold);
// dgvPriceList.Rows[RowIndex].DefaultCellStyle.Font = customFont;
//}
}
private void btnClearSearchInPriceList_Click(object sender, EventArgs e)
{
txtSearchGoodNameInPriceList.Text = string.Empty;
GoodsFilter = string.Empty;
ApplyPriceListFilters();
//loadPriceList(string.Empty);
}
private void btnEraseOrder_Click(object sender, EventArgs e)
{
//DialogResult drAreYouSeriesAboutEraseOrder = MessageBox.Show("Вы уверены, что хотите очистить корзину?", "Сообщение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
//if (drAreYouSeriesAboutEraseOrder == DialogResult.Yes)
//{
// EraseOrder();
//}
}
void EraseOrder()
{
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
string qUpdatePriceListBuyingItems = $@"
update PriceList set
[CountIWantBuy] = null,
[SumIWantBuy] = null
from (select GoodCode, GoodName, SupplierName, SupplierPrice from TempOrderItems) as tempOrder
where
tempOrder.GoodCode = PriceList.GoodCode
and tempOrder.GoodName = PriceList.GoodName
";
string qEraseOrder = "delete from TempOrderItems";
using (SQLiteConnection conEraseOrder = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
conEraseOrder.Open();
SQLiteCommand cmdUpdateBuyingItems = new SQLiteCommand(qUpdatePriceListBuyingItems, conEraseOrder);
SQLiteCommand cmdEraseOrder = new SQLiteCommand(qEraseOrder, conEraseOrder);
cmdUpdateBuyingItems.ExecuteNonQuery();
cmdEraseOrder.ExecuteNonQuery();
loadTempOrderItems();
//loadPriceList(string.Empty);
}
catch (Exception ex)
{
ToastNotification.ShowError($"Ошибка очистки корзины: {ex.Message}");
}
finally
{
conEraseOrder.Close();
}
}
}
string SumIWantBuy = string.Empty;
int lastSelectedRowIndex;
string GoodsFilter = string.Empty;
string stringIWantBuy = string.Empty;
private void dgvPriceList_KeyPress(object sender, KeyPressEventArgs e)
{
int RowIndex = dgvPriceList.SelectedRows[0].Index;
string idPriceListItem = dgvPriceList.Rows[RowIndex].Cells[11].Value.ToString();
if (timerForResetSearch.Enabled == false)
{
deleteGood(RowIndex, idPriceListItem);
timerForResetSearch.Enabled = true;
timerForResetSearch.Start();
}
if ((e.KeyChar >= 'A' && e.KeyChar <= 'Z') || (e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'А' && e.KeyChar <= 'Я') || (e.KeyChar >= 'а' && e.KeyChar <= 'я') || (e.KeyChar == (Char)Keys.Subtract))
{
if (e.KeyChar == (Char)Keys.Enter)
{
}
else
{
dgvPriceList.ClearSelection();
GoodsFilter += e.KeyChar.ToString();
txtSearchGoodNameInPriceList.Text = GoodsFilter;
#region поиск без фильтрации (НЕ РАБОТАЕТ)
//foreach(DataGridViewRow row in dgvPriceList.Rows)
//{
// //string cellValue = row.Cells["Наименование"].Value.ToString().ToLower();
// if (row.Cells[2].Value.ToString().Equals(GoodsFilter))
// {
// int indexOfSearchValue = row.Index;
// dgvPriceList.Rows[indexOfSearchValue].Selected = true;
// }
//}
#endregion
#region старый способ поиска с фильтрацией данных
if (!string.IsNullOrEmpty(GoodsFilter))
{
ApplyPriceListFilters();
if (dgvPriceList.Rows.Count == 0)
{
UiDialogs.ShowInfo("Подходящий товар не найден.", "Поиск", FindForm());
GoodsFilter = string.Empty;
txtSearchGoodNameInPriceList.Text = string.Empty;
ApplyPriceListFilters();
}
}
#endregion
}
}
else if ((e.KeyChar >= (Char)Keys.D1 && e.KeyChar <= (Char)Keys.D9) ||
(e.KeyChar >= (Char)Keys.NumPad1 && e.KeyChar <= (Char)Keys.NumPad9) || (e.KeyChar == (Char)Keys.D0 && dgvPriceList.Rows[RowIndex].Cells[10].Value.ToString().Length > 1) || (e.KeyChar == (Char)Keys.NumPad0 && dgvPriceList.Rows[RowIndex].Cells[10].Value.ToString().Length > 1))
{
int QuantityForSale = Convert.ToInt32(dgvPriceList.Rows[RowIndex].Cells[6].Value.ToString());
stringIWantBuy = dgvPriceList.Rows[RowIndex].Cells[9].Value.ToString() + e.KeyChar.ToString();
int IWantBuy = Convert.ToInt32(stringIWantBuy);
if (IWantBuy <= QuantityForSale)
{
dgvPriceList.Rows[RowIndex].Cells[9].Value = IWantBuy.ToString();
decimal PriceForOne = Convert.ToDecimal(dgvPriceList.Rows[RowIndex].Cells[5].Value.ToString());
decimal sumOrder = IWantBuy * PriceForOne;
dgvPriceList.Rows[RowIndex].Cells[10].Value = sumOrder.ToString();
}
else if (IWantBuy > QuantityForSale)
{
DialogResult drIWantBuyAll = UiDialogs.ConfirmYesNoCancel($"Для заказа доступно только {QuantityForSale.ToString()}. Заказать доступное количество?", "Заказ", FindForm());
if (drIWantBuyAll == DialogResult.Yes)
{
dgvPriceList.Rows[RowIndex].Cells[9].Value = QuantityForSale.ToString();
decimal PriceForOne = Convert.ToDecimal(dgvPriceList.Rows[RowIndex].Cells[5].Value.ToString());
decimal sumOrder = QuantityForSale * PriceForOne;
dgvPriceList.Rows[RowIndex].Cells[10].Value = sumOrder.ToString();
}
}
}
else if (e.KeyChar == (Char)Keys.Escape)
{
txtSearchGoodNameInPriceList.Text = string.Empty;
GoodsFilter = string.Empty;
ApplyPriceListFilters();
}
else if (e.KeyChar == (Char)Keys.Back)
{
string countToBuy = dgvPriceList.Rows[RowIndex].Cells[9].Value.ToString();
if (countToBuy.Length > 1)
{
string result = countToBuy.Remove(countToBuy.Length - 1);
dgvPriceList.Rows[RowIndex].Cells[9].Value = result;
decimal PriceForOne = Convert.ToDecimal(dgvPriceList.Rows[RowIndex].Cells[5].Value.ToString());
decimal sumOrder = Convert.ToDecimal(result) * PriceForOne;
dgvPriceList.Rows[RowIndex].Cells[10].Value = sumOrder.ToString();
}
}
else if (e.KeyChar == (Char)Keys.Delete)
{
deleteGood(RowIndex, idPriceListItem);
}
else if (dgvPriceList.Rows[RowIndex].Cells[9].Value.ToString() == string.Empty && e.KeyChar == (Char)Keys.D0)
{
}
else if (e.KeyChar == (Char)Keys.Down || e.KeyChar == (Char)Keys.Up)
{
timerForResetSearch.Enabled = false;
timerForResetSearch.Stop();
foreach (DataGridViewRow row in dgvPriceList.Rows)
{
if (Convert.ToInt32(row.Cells[9].Value) == 0)
{
int rowIndex = row.Index;
deleteGood(rowIndex, idPriceListItem);
}
}
}
string summaZakaza = dgvPriceList.Rows[RowIndex].Cells[10].Value.ToString();
if (summaZakaza.Trim().Length > 0)
{
string Zakaz = dgvPriceList.Rows[RowIndex].Cells[9].Value.ToString();
creatingTempOrder(idPriceListItem, Zakaz, summaZakaza);
}
#region старое добавление товара в PLI
//tabOrderItems.
//dgvPriceList.EndEdit();
//bsPriceList.EndEdit();
//daPriceListMain.Update(dsPriceList);
////dsPriceList.Tables.Clear();
//dsPriceList.WriteXml("PriceList.xml", XmlWriteMode.DiffGram);
//dsPriceList.Tables.Add(tablePriceList.Copy());
//dsPriceList.Tables["PriceList"].AcceptChanges();
//tablePriceList = (dgvPriceList.DataSource as DataTable);
//daPriceListMain.Update();
//bsPriceList.DataSource = (dgvPriceList.DataSource as DataTable);
//daPriceListMain.Update(dsPriceList);
#endregion
}
void creatingTempOrder(string idPriceListItem, string zakaz, string summaZakaza)
{
string qUpdatePriceList = $"update [PriceList] set [Zakaz] = '{zakaz}', [SummaZakaza] = '{summaZakaza}' where [id_PriceList_Item] = '{idPriceListItem}'";
string qDeleteFromTempOrder = $"delete from [TempOrderItems] where [id_PriceList_Item] = '{idPriceListItem}'";
string qCreateNewTempOrder = $"insert into TempOrderItems([guid_es],[es_code],[supplier_id],[DrugName],[SupplierName],[Price],[Quantity],[ExpiryPeriod],[Description],[Zakaz],[SummaZakaza],[id_PriceList_Item],[supplier_price_id]) select [guid_es],[es_code],[supplier_id],[DrugName],[SupplierName],[Price],[Quantity],[ExpiryPeriod],[Description],[Zakaz],[SummaZakaza],[id_PriceList_Item],[supplier_price_id] from [PriceList] where [id_PriceList_Item] = '{idPriceListItem}'";
using(SQLiteConnection sqlCon = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
sqlCon.Open();
SQLiteCommand cmdUpdatePriceList = new SQLiteCommand(qUpdatePriceList, sqlCon);
SQLiteCommand cmdDeleteFromTempOrder = new SQLiteCommand(qDeleteFromTempOrder, sqlCon);
SQLiteCommand cmdCreateNewTempOrder = new SQLiteCommand(qCreateNewTempOrder, sqlCon);
cmdUpdatePriceList.ExecuteNonQuery();
cmdDeleteFromTempOrder.ExecuteNonQuery();
cmdCreateNewTempOrder.ExecuteNonQuery();
loadTempOrderItems();
}
catch(Exception ex)
{
//MessageBox.Show($"Возникла ошибка при обновлении данных прайс-листов. Текст ошибки:\n{ex.ToString()}", "Обработка прайс-листов", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
sqlCon.Close();
}
}
}
void deleteGood(int index, string IdPriceListItem)
{
dgvPriceList.Rows[index].Cells[9].Value = string.Empty;
dgvPriceList.Rows[index].Cells[10].Value = string.Empty;
string IdPLI = IdPriceListItem;
string qClearPriceList = $"update [PriceList] set [Zakaz] = null, [SummaZakaza] = null where id_PriceList_Item = '{IdPLI}'";
string qDeleteFromTempOrder = $"delete from [TempOrderItems] where [id_PriceList_Item] = '{IdPLI}'";
using(SQLiteConnection sqlCon = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
sqlCon.Open();
SQLiteCommand cmdClearPriceListItem = new SQLiteCommand(qClearPriceList, sqlCon);
SQLiteCommand cmdDeleteFromTempOrder = new SQLiteCommand(qDeleteFromTempOrder, sqlCon);
cmdClearPriceListItem.ExecuteNonQuery();
cmdDeleteFromTempOrder.ExecuteNonQuery();
loadTempOrderItems();
}
catch(Exception ex)
{
//MessageBox.Show($"При обновлении данных прайс-листа возникла ошибка. Текст ошибки:\n{ex.ToString()}", "Обработка прайс-листов", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
sqlCon.Close();
}
}
}
#region TODO: старый метод, не работает
//private void dgvPriceList_KeyPress(object sender, KeyPressEventArgs e)
//{
// if ((e.KeyChar >= 'A' && e.KeyChar <= 'Z') || (e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'А' && e.KeyChar <= 'Я') || (e.KeyChar >= 'а' && e.KeyChar <= 'я') || (e.KeyChar == (Char)Keys.Subtract))
// {
// if (e.KeyChar == (Char)Keys.Enter || e.KeyChar == (Char)Keys.Tab)
// {
// }
// else
// {
// timerForResetSearch.Enabled = false;
// timerForResetSearch.Stop();
// txtSearchGoodNameInPriceList.Text += e.KeyChar.ToString();
// string GoodNameFilter = txtSearchGoodNameInPriceList.Text;
// //GoodNameFilter = GoodNameFilter.Replace(" ", "%");
// //GoodNameFilter = GoodNameFilter.Replace(" ", "%");
// //string filterAddon = $" and pl.[GoodName] LIKE '%{GoodNameFilter.ToLower()}%'";
// //MessageBox.Show(GoodNameFilter);
// (dgvPriceList.DataSource as DataTable).DefaultView.RowFilter = $"[Наименование] like '%{GoodNameFilter.ToLower()}%'";
// timerForResetSearch.Enabled = true;
// timerForResetSearch.Start();
// if (dgvPriceList.RowCount < 1)
// {
// MessageBox.Show($"Подходящий товар не найден.", "Поиск", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// txtSearchGoodNameInPriceList.Text = string.Empty;
// //loadPriceList(string.Empty);
// (dgvPriceList.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
// timerForResetSearch.Stop();
// }
// }
// }
// else if ((e.KeyChar >= (Char)Keys.D0 && e.KeyChar <= (Char)Keys.D9) ||
// (e.KeyChar >= (Char)Keys.NumPad0 && e.KeyChar <= (Char)Keys.NumPad9))
// {
// txtSearchGoodNameInPriceList.Text = string.Empty;
// int selectedRowIndex = dgvPriceList.SelectedCells[0].RowIndex;
// if (selectedRowIndex != lastSelectedRowIndex)
// {
// SumIWantBuy = string.Empty;
// }
// SumIWantBuy += e.KeyChar.ToString();
// if (SumIWantBuy == "0")
// {
// ErasePriceListOrderItem();
// }
// else
// {
// int AvaibleCountGood = Convert.ToInt32(dgvPriceList.Rows[selectedRowIndex].Cells[6].Value.ToString());
// if (AvaibleCountGood < Convert.ToInt32(SumIWantBuy))
// {
// MessageBox.Show("Заказано максимальное количество товара", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// SumIWantBuy = AvaibleCountGood.ToString();
// }
// dgvPriceList.Rows[selectedRowIndex].Cells[8].Value = SumIWantBuy;
// //IWantBuyThisGood();
// lastSelectedRowIndex = selectedRowIndex;
// }
// }
// else if (e.KeyChar == (Char)Keys.Back || e.KeyChar == (Char)Keys.Escape)
// {
// txtSearchGoodNameInPriceList.Text = string.Empty;
// (dgvPriceList.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
// //loadPriceList(string.Empty);
// }
// else if (e.KeyChar == (Char)Keys.Delete)
// {
// ErasePriceListOrderItem();
// }
// else if (e.KeyChar != (Char)Keys.Enter)
// {
// txtSearchGoodNameInPriceList.Text += e.KeyChar.ToString();
// string GoodNameFilter = txtSearchGoodNameInPriceList.Text;
// //GoodNameFilter = GoodNameFilter.Replace(" ", "%");
// //string filterAddon = $" and pl.[GoodName] LIKE '%{GoodNameFilter.ToLower()}%'";
// (dgvPriceList.DataSource as DataTable).DefaultView.RowFilter = $"[Наименование] like '%{GoodNameFilter.ToLower()}%'";
// if (dgvPriceList.RowCount < 1)
// {
// MessageBox.Show($"Подходящий товар не найден.", "Поиск", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// txtSearchGoodNameInPriceList.Text = string.Empty;
// (dgvPriceList.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
// //loadPriceList(string.Empty);
// }
// }
//}
#endregion
void ErasePriceListOrderItem()
{
int rowIndex = dgvPriceList.SelectedCells[0].RowIndex;
string goodCode = dgvPriceList.Rows[rowIndex].Cells[0].Value.ToString();
string goodName = dgvPriceList.Rows[rowIndex].Cells[1].Value.ToString();
string SupplierName = dgvPriceList.Rows[rowIndex].Cells[3].Value.ToString();
string PriceGood = dgvPriceList.Rows[rowIndex].Cells[7].Value.ToString();
string SumOrder = dgvPriceList.Rows[rowIndex].Cells[9].Value.ToString();
string qUpdatePriceList = $@"update PriceList set
[CountIWantBuy] = null,
[SumIWantBuy] = null
where [GoodCode] = '{goodCode}'
and [GoodName] = '{goodName}'
and [SupplierName] = '{SupplierName}'";
string qDeleteFromTempOrder = $@"delete from TempOrderItems
where [GoodCode] = '{goodCode}'
and [GoodName] = '{goodName}'
and [SupplierName] = '{SupplierName}'
and [SupplierPrice] = '{PriceGood}'
and SumOrderedItems = '{SumOrder}'";
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
using (SQLiteConnection conEraceOrderOfSelectedGood = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
conEraceOrderOfSelectedGood.Open();
SQLiteCommand cmdEraseOrderedGoodFromPriceList = new SQLiteCommand(qUpdatePriceList, conEraceOrderOfSelectedGood);
SQLiteCommand cmdDeleteOrderedGoodFromTempOrder = new SQLiteCommand(qDeleteFromTempOrder, conEraceOrderOfSelectedGood);
cmdEraseOrderedGoodFromPriceList.ExecuteNonQuery();
cmdDeleteOrderedGoodFromTempOrder.ExecuteNonQuery();
}
catch (Exception ex)
{
ToastNotification.ShowError($"Ошибка удаления из заказа: {ex.Message}");
}
finally
{
conEraceOrderOfSelectedGood.Close();
//loadPriceList(string.Empty);
loadTempOrderItems();
}
}
}
void ShowMePriceWithMarkupPercentForSelectedGood()
{
if(dgvPriceList.RowCount > 0)
{
lblSelectedGoodName.Text = dgvPriceList.CurrentRow.Cells[3].Value.ToString();
double priceForGood = Convert.ToDouble(dgvPriceList.CurrentRow.Cells[5].Value.ToString());
double MarkupPercentage = Convert.ToDouble(numericPercent.Value);
double priceWithPercentage = priceForGood + (priceForGood / 100 * MarkupPercentage);
lblPriceForGood.Text = $"= {priceWithPercentage.ToString()} руб";
}
}
private void dgvPriceList_SelectionChanged(object sender, EventArgs e)
{
SumIWantBuy = string.Empty;
if (timerForResetSearch.Enabled == true)
{
timerForResetSearch.Enabled = false;
timerForResetSearch.Stop();
}
ShowMePriceWithMarkupPercentForSelectedGood();
}
private void btnImport_Click(object sender, EventArgs e)
{
#region импорт из FTP
string fileName = "0027379.dbf";
string filePath = @"ftp:\\lboefc91:Oop3OoF4@lbo.protek.ru\session\Rostov_na_Donu\TestFTPFile\";
string connectionToDbf = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={filePath};Extended Properties=dBASE IV;User ID=Admin;Password=;";
using (OleDbConnection oleCon = new OleDbConnection(connectionToDbf))
{
var sql = $"select '{DateTime.Now.ToShortDateString()}' as [DatePriceList], '1' as [ConsigneesCode], '2' as [SupplierCode], CODE, PRODUCT, PRODUCER, 'Поставщик 2' as [SupplierName], EXP, VTIMPORT, REGCOST, QUANTITY, COST, COUNTRY, NDS, PRODCOST, '0' as [Marked] from {fileName}";
OleDbCommand cmd = new OleDbCommand(sql, oleCon);
oleCon.Open();
OleDbDataAdapter daDbfReader = new OleDbDataAdapter(cmd);
DataTable tablePriceFromDbf = new DataTable();
daDbfReader.Fill(tablePriceFromDbf);
string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
using (SQLiteConnection conFillPriceListByNewData = new SQLiteConnection(connectionStringToLocalDB))
{
try
{
conFillPriceListByNewData.Open();
foreach (DataRow dr in tablePriceFromDbf.Rows)
{
string dbfPriceListDate = dr["DatePriceList"].ToString();
string dbfConsigneesCode = dr["ConsigneesCode"].ToString();
string dbfCode = dr["CODE"].ToString();
string dbfGood = dr["PRODUCT"].ToString().ToLower();
string dbfProducer = dr["PRODUCER"].ToString();
string dbfSupplierCode = dr["SupplierCode"].ToString();
string dbfBestBefore = Convert.ToDateTime(dr["EXP"]).ToShortDateString();
string dbfJNVLS = dr["VTIMPORT"].ToString();
string dbfPriceReestr = dr["REGCOST"].ToString();
string dbfQuantity = dr["QUANTITY"].ToString();
string dbfPriceSupplierWithNds = dr["COST"].ToString();
string dbfCountry = dr["COUNTRY"].ToString();
string dbfNDS = dr["NDS"].ToString();
string dbfPriceProducer = dr["PRODCOST"].ToString();
string dbfMarked = dr["Marked"].ToString();
dbfGood = dbfGood.Replace("'", "");
dbfProducer = dbfProducer.Replace("'", "");
//dbfSupplierName = dbfSupplierName.Replace("'", "");
dbfCountry = dbfCountry.Replace("'", "");
string qShowMeLastDateOfPriceList = $"select PriceListDate from PriceListFromSuppliers where ConsigneesCode = '{dbfConsigneesCode}' and CodeSuppliers = '{dbfSupplierCode}'";
SQLiteCommand cmdShowMeLastPriceListDate = new SQLiteCommand(qShowMeLastDateOfPriceList, conFillPriceListByNewData);
DateTime dateLastPriceListDate = Convert.ToDateTime(cmdShowMeLastPriceListDate.ExecuteScalar().ToString());
MessageBox.Show($"{dbfPriceListDate} \n{dateLastPriceListDate}");
if (Convert.ToDateTime(dbfPriceListDate) > dateLastPriceListDate)
{
}
string qInsertDataInLocalDB = $@"insert into PriceList (PriceListDate, GoodCode, GoodName, ProducerName, SupplierName, BestBefore, JNVLS, PriceReestr, AvaibleCount, PriceSupplierWithNDS, NDS , Marked)
values ('{dbfPriceListDate}','{dbfCode}','{dbfGood}','{dbfProducer}', '3','{dbfBestBefore}','{dbfJNVLS}','{dbfPriceReestr}', '{dbfQuantity}', '{dbfPriceSupplierWithNds}', '{dbfCountry}', '{dbfNDS}', '{dbfPriceProducer}', '{dbfMarked}')
";
MessageBox.Show(qInsertDataInLocalDB);
SQLiteCommand cmdInsertDataInPriceList = new SQLiteCommand(qInsertDataInLocalDB, conFillPriceListByNewData);
cmdInsertDataInPriceList.ExecuteNonQuery();
}
}
catch { }
}
}
#endregion
#region старыйИмпорт из локального файла
//string fileName = "0027379.dbf";
//string filePath = @"C:\!ElectroPharmacy\ElectoPharmacyOrder\";
//string connectionToDbf = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={filePath};Extended Properties=dBASE IV;User ID=Admin;Password=;";
//using (OleDbConnection oleCon = new OleDbConnection(connectionToDbf))
//{
// var sql = $"select '{DateTime.Now.ToShortDateString()}' as [DatePriceList], '1' as [ConsigneesCode], '2' as [SupplierCode], CODE, PRODUCT, PRODUCER, 'Поставщик 2' as [SupplierName], EXP, VTIMPORT, REGCOST, QUANTITY, COST, COUNTRY, NDS, PRODCOST, '0' as [Marked] from {fileName}";
// OleDbCommand cmd = new OleDbCommand(sql, oleCon);
// oleCon.Open();
// OleDbDataAdapter daDbfReader = new OleDbDataAdapter(cmd);
// DataTable tablePriceFromDbf = new DataTable();
// daDbfReader.Fill(tablePriceFromDbf);
// string connectionStringToLocalDB = AppConfig.SqliteConnectionString;
// using (SQLiteConnection conFillPriceListByNewData = new SQLiteConnection(connectionStringToLocalDB))
// {
// try
// {
// conFillPriceListByNewData.Open();
// foreach (DataRow dr in tablePriceFromDbf.Rows)
// {
// string dbfPriceListDate = dr["DatePriceList"].ToString();
// string dbfConsigneesCode = dr["ConsigneesCode"].ToString();
// string dbfCode = dr["CODE"].ToString();
// string dbfGood = dr["PRODUCT"].ToString().ToLower();
// string dbfProducer = dr["PRODUCER"].ToString();
// string dbfSupplierCode = dr["SupplierCode"].ToString();
// string dbfBestBefore = Convert.ToDateTime(dr["EXP"]).ToShortDateString();
// string dbfJNVLS = dr["VTIMPORT"].ToString();
// string dbfPriceReestr = dr["REGCOST"].ToString();
// string dbfQuantity = dr["QUANTITY"].ToString();
// string dbfPriceSupplierWithNds = dr["COST"].ToString();
// string dbfCountry = dr["COUNTRY"].ToString();
// string dbfNDS = dr["NDS"].ToString();
// string dbfPriceProducer = dr["PRODCOST"].ToString();
// string dbfMarked = dr["Marked"].ToString();
// dbfGood = dbfGood.Replace("'", "");
// dbfProducer = dbfProducer.Replace("'", "");
// //dbfSupplierName = dbfSupplierName.Replace("'", "");
// dbfCountry = dbfCountry.Replace("'", "");
// string qShowMeLastDateOfPriceList = $"select PriceListDate from PriceListFromSuppliers where ConsigneesCode = '{dbfConsigneesCode}' and CodeSuppliers = '{dbfSupplierCode}'";
// SQLiteCommand cmdShowMeLastPriceListDate = new SQLiteCommand(qShowMeLastDateOfPriceList, conFillPriceListByNewData);
// DateTime dateLastPriceListDate = Convert.ToDateTime(cmdShowMeLastPriceListDate.ExecuteScalar().ToString());
// MessageBox.Show($"{dbfPriceListDate} \n{dateLastPriceListDate}");
// if (Convert.ToDateTime(dbfPriceListDate) > dateLastPriceListDate)
// {
// }
// string qInsertDataInLocalDB = $@"insert into PriceList (PriceListDate, GoodCode, GoodName, ProducerName, SupplierName, BestBefore, JNVLS, PriceReestr, AvaibleCount, PriceSupplierWithNDS, NDS , Marked)
// values ('{dbfPriceListDate}','{dbfCode}','{dbfGood}','{dbfProducer}', '{dbfSupplierCode}','{dbfBestBefore}','{dbfJNVLS}','{dbfPriceReestr}', '{dbfQuantity}', '{dbfPriceSupplierWithNds}', '{dbfCountry}', '{dbfNDS}', '{dbfPriceProducer}', '{dbfMarked}')
// ";
// //MessageBox.Show(qInsertDataInLocalDB);
// SQLiteCommand cmdInsertDataInPriceList = new SQLiteCommand(qInsertDataInLocalDB, conFillPriceListByNewData);
// cmdInsertDataInPriceList.ExecuteNonQuery();
// }
// }
// catch(Exception ex)
// {
// MessageBox.Show(ex.ToString());
// }
// finally
// {
// conFillPriceListByNewData.Close();
// loadPriceList(string.Empty);
// }
// }
//}
#endregion
}
private void dgvPriceList_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
if (e.RowIndex == this.dgvPriceList.RowCount - 1) return;
}
private void txtSearchGoodNameInPriceList_Enter(object sender, EventArgs e)
{
dgvPriceList.Focus();
}
private void numericPercent_ValueChanged(object sender, EventArgs e)
{
if (numericPercent.Value != _percentageAsDefault)
{
checkUsePercentageAsDefault.Checked = false;
}
ShowMePriceWithMarkupPercentForSelectedGood();
}
private void UCPriceList_Paint(object sender, PaintEventArgs e)
{
if (comboSupplierFilter.DroppedDown)
{
return;
}
dgvPriceList.Focus();
}
private void btnImport_MouseEnter(object sender, EventArgs e)
{
//btnImport.Focus();
}
private void btnImport_MouseLeave(object sender, EventArgs e)
{
//dgvPriceList.Focus()
}
private void checkUsePercentageAsDefault_CheckedChanged(object sender, EventArgs e)
{
int newDefaultPercent;
if (_percentageAsDefault != numericPercent.Value && checkUsePercentageAsDefault.Checked == true)
{
newDefaultPercent = Convert.ToInt32(numericPercent.Value);
Properties.Settings.Default.IntDefaultPercentMarkup = Convert.ToInt32(newDefaultPercent);
Properties.Settings.Default.Save();
}
}
private void timerForResetSearch_Tick(object sender, EventArgs e)
{
txtSearchGoodNameInPriceList.Text = string.Empty;
timerForResetSearch.Enabled = false;
timerForResetSearch.Stop();
}
private void btnDeleteGood_Click(object sender, EventArgs e)
{
int RowIndex = dgvPriceList.SelectedRows[0].Index;
string idPriceListItem = dgvPriceList.Rows[RowIndex].Cells[11].Value.ToString();
deleteGood(RowIndex, idPriceListItem);
}
private void btnMoreInfoAboutGood_Click(object sender, EventArgs e)
{
if (dgvPriceList.CurrentRow == null)
{
return;
}
var goodName = dgvPriceList.CurrentRow.Cells["Наименование"]?.Value?.ToString()
?? dgvPriceList.CurrentRow.Cells[2]?.Value?.ToString()
?? string.Empty;
var description = dgvPriceList.CurrentRow.Cells["Описание"]?.Value?.ToString()
?? dgvPriceList.CurrentRow.Cells[8]?.Value?.ToString()
?? string.Empty;
var aboutGood = new HelpForms.HF_AboutGood
{
goodName = goodName,
goodDescription = description
};
UiThemeHelper.ApplyToControlTree(aboutGood);
aboutGood.ShowDialog(FindForm());
}
//private void dgvPriceList_Paint(object sender, PaintEventArgs e)
//{
// //foreach (DataGridViewRow row in dgvPriceList.Rows)
// //{
// // if (row.Cells[8].Value.ToString() != "")
// // {
// // row.DefaultCellStyle.Font = new Font("Segoe UI", 10, FontStyle.Bold);
// // }
// //}
// //dgvPriceList.Focus();
//}
}
}