You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
399 lines
13 KiB
C#
399 lines
13 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using DevComponents.DotNetBar.Controls;
|
|
using DevComponents.DotNetBar.SuperGrid;
|
|
using NLog;
|
|
using POSV.Component;
|
|
using POSV.Entity;
|
|
using POSV.Utils;
|
|
|
|
namespace POSV
|
|
{
|
|
public partial class SaleClearForm : BusinessForm
|
|
{
|
|
public SaleClearForm()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.Name = "SaleClearForm";
|
|
|
|
this.keyboardPanel.Height = 0;
|
|
this.keyboardPanel.Visible = false;
|
|
|
|
this.controlBox.ForeColor = System.Drawing.Color.White;
|
|
this.controlBox.Text = "单品沽清";
|
|
|
|
this.detailPanel.Visible = false;
|
|
|
|
this.dateTime.Value = DateTime.Now.AddDays(1);
|
|
|
|
InitializeGrid();
|
|
|
|
this.categoryControl.CategoryCheckedChanged += OnCategoryCheckedChanged;
|
|
|
|
this.dateTime.ValueChanged += OnDateTimeValueChanged;
|
|
}
|
|
|
|
private void InitializeGrid()
|
|
{
|
|
try
|
|
{
|
|
gridControl.RowActivated -= GridControlRowActivated;
|
|
gridControl.RowActivated += GridControlRowActivated;
|
|
|
|
gridControl.CellDoubleClick -= GridCellDoubleClick;
|
|
gridControl.CellDoubleClick += GridCellDoubleClick;
|
|
|
|
gridControl.CellClick -= GridControlCellClick;
|
|
gridControl.CellClick += GridControlCellClick;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex , "初始化沽清列表异常");
|
|
}
|
|
finally
|
|
{
|
|
this.leftContainer.Invalidate();
|
|
}
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
this.checkBoxX28.Checked = true;
|
|
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
try
|
|
{
|
|
var lists = Global.Product._productList;
|
|
this.productControl.PageNumber = 1;
|
|
this.productControl.BindDataSource(lists, KeyboardAction.None);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex, "加载商品信息异常");
|
|
}
|
|
|
|
}));
|
|
|
|
}).ContinueWith(task => {
|
|
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
RefreshGrid();
|
|
}));
|
|
|
|
});
|
|
}
|
|
|
|
private void OnCategoryCheckedChanged(object sender , Component.CategoryEventArgs e)
|
|
{
|
|
var productType = e.Data;
|
|
try
|
|
{
|
|
var lists = Global.Product._productList;
|
|
var selectProduct = new List<ProductExt>();
|
|
if (!Constant.ALL_PRODUCT_TAG.Equals(productType.No))
|
|
{
|
|
selectProduct = lists.FindAll(x => !string.IsNullOrEmpty(x.TypePath) && x.TypePath.StartsWith(productType.Path));
|
|
}
|
|
this.productControl.PageNumber = 1;
|
|
this.productControl.BindDataSource(selectProduct, KeyboardAction.None);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex, "加载商品信息异常");
|
|
}
|
|
|
|
}
|
|
|
|
private void OnProductCheckedChanged(object sender , Component.ProductEventArgs e)
|
|
{
|
|
bool isGo = true;
|
|
|
|
//**********************开始*******************************
|
|
|
|
var product = e.Product;
|
|
|
|
if (isGo)
|
|
{
|
|
ProcessSaleClearModify(product);
|
|
}
|
|
}
|
|
|
|
private void ProcessSaleClearModify(ProductExt product, SaleClear saleClear = null)
|
|
{
|
|
if(saleClear == null)
|
|
{
|
|
if (MessageCenterUtils.Instance.IsSaleClear)
|
|
{
|
|
if (SaleClearUtils.Instance.Maps.ContainsKey(product.Id))
|
|
{
|
|
saleClear = SaleClearUtils.Instance.Maps[product.Id];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
{
|
|
saleClear = db.FirstOrDefault<SaleClear>("where productId = @0" , product.Id);
|
|
}
|
|
}
|
|
}
|
|
|
|
var dialogForm = new SaleClearModify(product , saleClear);
|
|
|
|
dialogForm.AcceptButtonClick += (o , args) =>
|
|
{
|
|
RefreshGrid();
|
|
};
|
|
|
|
dialogForm.CancelButtonClick += (o , args) => { };
|
|
|
|
TransparentForm trans = new TransparentForm(this , dialogForm);
|
|
trans.Show(this);
|
|
}
|
|
|
|
|
|
private void RefreshGrid()
|
|
{
|
|
try
|
|
{
|
|
List<SaleClear> rows = new List<SaleClear>();
|
|
|
|
var startTime = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
|
|
var endTime = DateTime.Now.ToString("yyyy-MM-dd 23:59:00");
|
|
//指定日期
|
|
if (checkBoxX1.Checked)
|
|
{
|
|
startTime = dateTime.Value.ToString("yyyy-MM-dd 00:00:00");
|
|
endTime = dateTime.Value.ToString("yyyy-MM-dd 23:59:00");
|
|
}
|
|
|
|
//启用消息中心并且可访问
|
|
if (MessageCenterUtils.Instance.IsSaleClear)
|
|
{
|
|
var result = MessageCenterUtils.Instance.GetSaleClearList(startTime);
|
|
|
|
rows = result.Item3;
|
|
}
|
|
else
|
|
{
|
|
//本地获取沽清数据
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
{
|
|
rows = db.Query<SaleClear>(" where startTime <= @0 and endTime >= @1 and stopFlag == 0;" , endTime , startTime).ToList();
|
|
}
|
|
}
|
|
|
|
GridPanel panel = gridControl.PrimaryGrid;
|
|
//清理数据
|
|
panel.Rows.Clear();
|
|
|
|
foreach (var r in rows)
|
|
{
|
|
GridRow gridRow = new GridRow(r.Id , r.ProductName , r.Quantity, r.UnitName);
|
|
|
|
gridRow.RowHeight = 40;
|
|
gridRow.Tag = r;
|
|
|
|
panel.Rows.Add(gridRow);
|
|
panel.SetSelected(gridRow , true);
|
|
panel.SetActiveRow(gridRow);
|
|
}
|
|
|
|
//滚动条
|
|
this.gridControl.HScrollBarVisible = false;
|
|
this.gridControl.VScrollBarVisible = true;
|
|
this.gridControl.VScrollBar.Width = 0;
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
LOGGER.Error(ex , "加载沽清列表异常");
|
|
}
|
|
finally
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
private void GridControlRowActivated(object sender , GridRowActivatedEventArgs e)
|
|
{
|
|
if (e.NewActiveRow != null)
|
|
{
|
|
GridPanel panel = e.GridPanel;
|
|
panel.SetSelected(e.OldActiveRow , false);
|
|
panel.SetSelected(e.NewActiveRow , true);
|
|
panel.SetActiveRow(e.NewActiveRow);
|
|
|
|
if (e.NewActiveRow.Tag is SaleClear)
|
|
{
|
|
SaleClear saleClear = e.NewActiveRow.Tag as SaleClear;
|
|
|
|
this.ShowSaleClearDetail(saleClear);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ShowSaleClearDetail(SaleClear saleClear)
|
|
{
|
|
this.lblTotalQuantity.Text = string.Format(this.lblTotalQuantity.Tag.ToString() , saleClear.TotalQuantity);
|
|
this.lblNotifyQuantity.Text = string.Format(this.lblNotifyQuantity.Tag.ToString() , saleClear.NotifyQuantity);
|
|
this.lblSaleQuantity.Text = string.Format(this.lblSaleQuantity.Tag.ToString() , saleClear.SaleQuantity);
|
|
|
|
this.lblDateTimer.Text = string.Format(this.lblDateTimer.Tag.ToString() , saleClear.StartTime , saleClear.EndTime);
|
|
}
|
|
|
|
private void GridCellDoubleClick(object sender , GridCellDoubleClickEventArgs e)
|
|
{
|
|
if (e.MouseEventArgs.Button == MouseButtons.Left && e.GridCell.GridRow.Tag is SaleClear)
|
|
{
|
|
|
|
SaleClear saleClear = e.GridCell.GridRow.Tag as SaleClear;
|
|
|
|
|
|
var lists = Global.Product._productList;
|
|
ProductExt product = lists.FindLast(x => !string.IsNullOrEmpty(x.Id) && x.Id.Equals(saleClear.ProductId));
|
|
if(product != null)
|
|
{
|
|
this.ProcessSaleClearModify(product,saleClear);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void GridControlCellClick(object sender , GridCellClickEventArgs e)
|
|
{
|
|
if (e.MouseEventArgs.Button == MouseButtons.Left && e.GridCell.GridRow.Tag is SaleClear)
|
|
{
|
|
SaleClear saleClear = e.GridCell.GridRow.Tag as SaleClear;
|
|
|
|
this.ShowSaleClearDetail(saleClear);
|
|
}
|
|
}
|
|
|
|
private void OnControlBoxCloseClick(object sender , EventArgs e)
|
|
{
|
|
if (this.Owner != null)
|
|
{
|
|
this.Owner.Close();
|
|
}
|
|
|
|
this.Close();
|
|
}
|
|
|
|
protected override void OnFormClosing(FormClosingEventArgs e)
|
|
{
|
|
e.Cancel = false;
|
|
}
|
|
|
|
private void OnShowOrHideTouchClick(object sender , EventArgs e)
|
|
{
|
|
this.detailPanel.Visible = !this.detailPanel.Visible;
|
|
}
|
|
|
|
private void OnSearchCustomClick(object sender , EventArgs e)
|
|
{
|
|
if (SimpleKeyboard.Showing())
|
|
{
|
|
this.keyboardPanel.Height = 0;
|
|
this.keyboardPanel.Visible = false;
|
|
|
|
SimpleKeyboard.CloseKeyboard();
|
|
}
|
|
else
|
|
{
|
|
this.keyboardPanel.Height = 250;
|
|
this.keyboardPanel.Visible = true;
|
|
|
|
var location = this.keyboardPanel.PointToScreen(Point.Empty);
|
|
|
|
var size = this.keyboardPanel.Size;
|
|
|
|
SimpleKeyboard.ShowKeyboard(this , location , size , false , null);
|
|
}
|
|
}
|
|
|
|
private void OnSearchTextChanged(object sender , EventArgs e)
|
|
{
|
|
var search = this.txtSearch.Text.Trim();
|
|
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
try
|
|
{
|
|
var lists = Global.Product._productList;
|
|
var selectProduct = new List<ProductExt>();
|
|
selectProduct = lists.FindAll(x => (!string.IsNullOrEmpty(x.Spell) && x.Spell.Contains(search)) || (!string.IsNullOrEmpty(x.BarCode) && x.BarCode.Contains(search)) || (!string.IsNullOrEmpty(x.No) && x.No.Contains(search)));
|
|
this.productControl.PageNumber = 1;
|
|
this.productControl.BindDataSource(selectProduct, KeyboardAction.Search);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOGGER.Error(ex, "加载商品信息异常");
|
|
}
|
|
|
|
}));
|
|
|
|
}).ContinueWith(task =>
|
|
{
|
|
//this.Invoke(new Action(() =>
|
|
//{
|
|
// MsgEvent.Send(Constant.PRODUCT_KEYBOARD_NOTIFY , KeyboardAction.Search);
|
|
|
|
//}));
|
|
});
|
|
}
|
|
|
|
private void OnSearchPanelVisibleChanged(object sender , EventArgs e)
|
|
{
|
|
this.txtSearch.Focus();
|
|
this.txtSearch.Text = string.Empty;
|
|
}
|
|
|
|
private void OnSearchCheckedChanged(object sender , EventArgs e)
|
|
{
|
|
this.RefreshGrid();
|
|
}
|
|
|
|
private void OnDateTimeValueChanged(object sender , EventArgs e)
|
|
{
|
|
this.checkBoxX1.Checked = false;
|
|
this.checkBoxX1.Checked = true;
|
|
}
|
|
|
|
private void OnPageChangeClick(object sender, EventArgs e)
|
|
{
|
|
var obj = sender as TouchLabelX;
|
|
string tag = obj.Tag as string;
|
|
//购物车换页
|
|
if (tag == "up")
|
|
{
|
|
this.gridControl.VScrollOffset -= this.gridControl.Height - 120;
|
|
}
|
|
else if (tag == "down")
|
|
{
|
|
this.gridControl.VScrollOffset += this.gridControl.Height - 120;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|