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.
302 lines
12 KiB
C#
302 lines
12 KiB
C#
using DevComponents.DotNetBar.SuperGrid;
|
|
using POSV.Card;
|
|
using POSV.Component;
|
|
using POSV.Entity.Stock;
|
|
using POSV.Template;
|
|
using POSV.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace POSV.Stock
|
|
{
|
|
public partial class StoreStockCheckTemplateForm : BusinessForm
|
|
{
|
|
private List<string> selectMaterialList = new List<string>();
|
|
List<StockCheckTemplateDetailResponse> detailList;
|
|
private string storageId;
|
|
public StoreStockCheckTemplateForm(string storageId, List<string> ids)
|
|
{
|
|
InitializeComponent();
|
|
this.controlBox1.Text = "门店盘点模板";
|
|
this.controlBox1.ShowApplicationVersion = false;
|
|
selectMaterialList = ids ?? new List<string>();
|
|
this.storageId = storageId;
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
|
|
if (this.DesignMode) return;
|
|
this.Focus();
|
|
this.noTextBox.Focus();
|
|
this.noTextBox.SelectAll();
|
|
this.ActiveControl = this.noTextBox;
|
|
//获得当前页
|
|
int cur = pagerControl1.CurrentPage;
|
|
//获得每页显示的记录数
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
QueryTicket(cur, rows);
|
|
}
|
|
|
|
public void QueryTicket(int PageNum, int pageSize)
|
|
{
|
|
try
|
|
{
|
|
var request = new StockCheckTemplateListRequest();
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
request.PageNumber = PageNum;
|
|
request.PageSize = pageSize;
|
|
request.Keyword = this.noTextBox.Text;
|
|
|
|
var response = StockUtils.StockCheckTemplateList(request);
|
|
|
|
//成功
|
|
if (response.Item1)
|
|
{
|
|
this.pagerControl1.TotalPage = response.Item3.PageCount;
|
|
this.pagerControl1.CurrentPage = response.Item3.PageNumber;
|
|
this.pagerControl1.RecordCount = response.Item3.TotalCount;
|
|
this.pagerControl1.RowsPerPage = response.Item3.PageSize;
|
|
ticketListTable.PrimaryGrid.DataSource = response.Item3.List;
|
|
}
|
|
else
|
|
{
|
|
List<StockCheckTemplateListResponse> list = new List<StockCheckTemplateListResponse>();
|
|
ticketListTable.PrimaryGrid.DataSource = list;
|
|
this.ShowToastNotify(this, response.Item2);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
this.ShowToastNotify(this, "盘点模板列表查询异常");
|
|
LOGGER.Error(ex, "盘点模板列表查询异常");
|
|
}
|
|
}
|
|
|
|
private void OnCloseTouchClick(object sender, EventArgs e)
|
|
{
|
|
//先关闭父窗体
|
|
if (this.Owner != null)
|
|
{
|
|
this.Owner.Close();
|
|
}
|
|
//再关闭当前窗体
|
|
this.Close();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取消按钮
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BtnCancelClick(object sender, EventArgs e)
|
|
{
|
|
//先关闭父窗体
|
|
if (this.Owner != null)
|
|
{
|
|
this.Owner.Close();
|
|
}
|
|
//再关闭当前窗体
|
|
this.Close();
|
|
}
|
|
|
|
private void OnTxtMemoCustomClick(object sender, EventArgs e)
|
|
{
|
|
var obj = sender as NormalTextBox;
|
|
var txtForm = new TxtKeyboardForm(StringUtils.GetString(obj.Text));
|
|
txtForm.NotifyChanged += (o, args) =>
|
|
{
|
|
obj.Text = args.Data.ToString();
|
|
};
|
|
var trans = new TransparentForm(this, .5, txtForm);
|
|
trans.Show(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询盘点模板
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BntQuery(object sender, EventArgs e)
|
|
{
|
|
//获得当前页
|
|
int cur = pagerControl1.CurrentPage;
|
|
//获得每页显示的记录数
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
QueryTicket(cur, rows);
|
|
}
|
|
|
|
private void OnTicketRowActivated(object sender, DevComponents.DotNetBar.SuperGrid.GridRowActivatedEventArgs e)
|
|
{
|
|
GridPanel grid = e.GridPanel;
|
|
if (e.NewActiveRow != null)
|
|
{
|
|
detailListTable.PrimaryGrid.Rows.Clear();
|
|
//先清除其他表数据
|
|
GridRow row = e.NewActiveRow as GridRow;
|
|
grid.SetSelected(e.NewActiveRow, false);
|
|
grid.SetActiveRow(e.NewActiveRow);
|
|
var ticketId = StringUtils.GetString(row.Cells["id"].Value);
|
|
AskgoodsTicketDetail(ticketId);
|
|
}
|
|
else
|
|
{
|
|
detailListTable.PrimaryGrid.Rows.Clear();
|
|
}
|
|
|
|
}
|
|
|
|
public void AskgoodsTicketDetail(string ticketId)
|
|
{
|
|
try
|
|
{
|
|
var request = new StockCheckTemplateDetailRequest();
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
request.TicketId = ticketId;
|
|
var response = StockUtils.StockCheckTemplateDetail(request);
|
|
|
|
//成功
|
|
if (response.Item1)
|
|
{
|
|
List<StockCheckTemplateDetailResponse> stockCheckTemplateDetailList = response.Item3.List;
|
|
detailListTable.PrimaryGrid.DataSource = stockCheckTemplateDetailList;
|
|
detailList = stockCheckTemplateDetailList;
|
|
}
|
|
else
|
|
{
|
|
List<StockCheckTemplateDetailResponse> list = new List<StockCheckTemplateDetailResponse>();
|
|
detailListTable.PrimaryGrid.DataSource = list;
|
|
detailList = list;
|
|
this.ShowToastNotify(this, response.Item2);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
this.ShowToastNotify(this, "盘点模板明细查询异常");
|
|
LOGGER.Error(ex, "盘点模板明细查询异常");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 选中模板
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BtnSelect(object sender, EventArgs e)
|
|
{
|
|
string SpecIds = "";
|
|
foreach (StockCheckTemplateDetailResponse response in detailList)
|
|
{
|
|
FoodMaterialDetailEntity detail = GetMaterialDetail(response.ProductId, response.SpecId);
|
|
if (detail != null)
|
|
{
|
|
//加入选中项
|
|
if (!selectMaterialList.Contains(String.Format("{0}-{1}", storageId, response.SpecId)))
|
|
{
|
|
selectMaterialList.Add(String.Format("{0}-{1}", storageId, response.SpecId));
|
|
SpecIds = SpecIds + response.SpecId + ",";
|
|
}
|
|
// OnMaterialDetailClick?.Invoke(sender, new MaterialDetailEventArgs(detail));
|
|
}
|
|
}
|
|
//门店支付的原料走服务器查看未盘点的商品信息
|
|
if (!"".Equals(SpecIds)) {
|
|
SpecIds = SpecIds.Substring(0, SpecIds.Length-1);
|
|
}
|
|
try
|
|
{
|
|
StockCheckProductValidRequest request = new StockCheckProductValidRequest();
|
|
request.StoreId = Global.Instance.BusinessPlanLog.StoreId;
|
|
request.StorageId = this.storageId;
|
|
request.SpecIds = SpecIds;
|
|
var response = StockUtils.StockCheckProductValid(request);
|
|
//成功
|
|
if (response.Item1)
|
|
{
|
|
foreach (StockCheckProductValidResponse stockCheckProductValidResponse in response.Item3.List) {
|
|
//遍历获取可添加的盘点明细列表
|
|
StockCheckTemplateDetailResponse stockCheckTemplateDetailResponse = detailList.Find(x => x.SpecId.Equals(stockCheckProductValidResponse.SpecId));
|
|
if (stockCheckTemplateDetailResponse != null ) {
|
|
FoodMaterialDetailEntity product = new FoodMaterialDetailEntity();
|
|
|
|
product.ProductId = stockCheckTemplateDetailResponse.ProductId;
|
|
product.ProductNo = stockCheckTemplateDetailResponse.ProductNo;
|
|
product.ProductName = stockCheckTemplateDetailResponse.ProductName;
|
|
product.SpecId = stockCheckTemplateDetailResponse.SpecId;
|
|
product.SpecName = stockCheckTemplateDetailResponse.SpecName;
|
|
product.PackUnitId = stockCheckTemplateDetailResponse.StockUnitId;
|
|
product.PackUnitName = stockCheckTemplateDetailResponse.StockUnitName;
|
|
|
|
OnProductClick?.Invoke(sender, new MaterialDetailEventArgs(product));
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
this.ShowToastNotify(this, "获取可盘点商品信息失败");
|
|
|
|
LOGGER.Error(ex, "获取可盘点商品信息失败");
|
|
}
|
|
//先关闭父窗体
|
|
if (this.Owner != null)
|
|
{
|
|
this.Owner.Close();
|
|
}
|
|
//再关闭当前窗体
|
|
this.Close();
|
|
}
|
|
|
|
public delegate void EventHandler(object sender, MaterialDetailEventArgs e);
|
|
|
|
public event EventHandler OnProductClick;
|
|
|
|
/// <summary>
|
|
/// 获取门店自身支持的原料数据
|
|
/// </summary>
|
|
/// <param name="productId"></param>
|
|
/// <param name="specId"></param>
|
|
/// <returns></returns>
|
|
private FoodMaterialDetailEntity GetMaterialDetail(string productId, string specId)
|
|
{
|
|
List<FoodMaterialDetailEntity> detailList = new List<FoodMaterialDetailEntity>();
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
sqlBuld.Append(" select a.tenantId, a.id as productId,b.id as specId,a.name as productName,a.no as productNo, ");
|
|
sqlBuld.Append(" b.name as specName,d.dispatchUnitId,c.name as dispatchUnitName,a.spell,a.memo,d.packUnitId,e.name as packUnitName ");
|
|
sqlBuld.Append(" from pos_product a ");
|
|
sqlBuld.Append(" LEFT JOIN pos_product_spec b on b.productId = a.id ");
|
|
sqlBuld.Append(" LEFT JOIN pos_product_ratio d on d.productId = a.id ");
|
|
sqlBuld.Append(" LEFT JOIN pos_product_unit c on c.id = d.dispatchUnitId ");
|
|
sqlBuld.Append(" LEFT JOIN pos_product_unit e on e.id = d.packUnitId ");
|
|
sqlBuld.Append(" where a.id={0} and b.id={1} ");
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
{
|
|
string sql = string.Format(sqlBuld.ToString(), productId, specId);
|
|
detailList = db.Query<FoodMaterialDetailEntity>(sql).ToList();
|
|
if (detailList == null)
|
|
{
|
|
detailList = new List<FoodMaterialDetailEntity>();
|
|
}
|
|
|
|
}
|
|
if (detailList.Count > 0)
|
|
{
|
|
return detailList[0];
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|