|
|
|
|
using DevComponents.DotNetBar.SuperGrid;
|
|
|
|
|
using POSV.Card;
|
|
|
|
|
using POSV.Entity.Stock;
|
|
|
|
|
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 AskgoodsTemplateForm : BusinessForm
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private List<string> selectMaterialList = new List<string>();
|
|
|
|
|
private List<AskgoodsTemplateDetailResponse> askgoodsDetailResponse = new List<AskgoodsTemplateDetailResponse>();
|
|
|
|
|
public AskgoodsTemplateForm(List<string> ids)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
this.controlBox1.Text = "要货单模板";
|
|
|
|
|
this.controlBox1.ShowApplicationVersion = false;
|
|
|
|
|
selectMaterialList = ids ?? new List<string>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
AskgoodsTemplateQuery(cur, rows);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void AskgoodsTemplateQuery(int PageNum, int pageSize)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var request = new AskgoodsTemplateRequest();
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request.No = this.noTextBox.Text;
|
|
|
|
|
request.PageNumber = PageNum;
|
|
|
|
|
request.PageSize = pageSize;
|
|
|
|
|
var response = StockUtils.AskgoodsTemplate(request);
|
|
|
|
|
|
|
|
|
|
//成功
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, response.Item2);
|
|
|
|
|
List<AskgoodsTemplateResponse> askgoodsTemplateResponse = response.Item7;
|
|
|
|
|
this.pagerControl1.TotalPage = response.Item4;
|
|
|
|
|
this.pagerControl1.CurrentPage = response.Item5;
|
|
|
|
|
this.pagerControl1.RecordCount = response.Item3;
|
|
|
|
|
this.pagerControl1.RowsPerPage = response.Item6;
|
|
|
|
|
ticketListTable.PrimaryGrid.DataSource = askgoodsTemplateResponse;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
List<AskgoodsTemplateResponse> list = new List<AskgoodsTemplateResponse>();
|
|
|
|
|
ticketListTable.PrimaryGrid.DataSource = list;
|
|
|
|
|
this.ShowToastNotify(this, response.Item2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "要货模板查询异常");
|
|
|
|
|
LOGGER.Error(ex, "要货模板查询异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void exitClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//先关闭父窗体
|
|
|
|
|
if (this.Owner != null)
|
|
|
|
|
{
|
|
|
|
|
this.Owner.Close();
|
|
|
|
|
}
|
|
|
|
|
//再关闭当前窗体
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnCloseTouchClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//先关闭父窗体
|
|
|
|
|
if (this.Owner != null)
|
|
|
|
|
{
|
|
|
|
|
this.Owner.Close();
|
|
|
|
|
}
|
|
|
|
|
//再关闭当前窗体
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnControlBoxKeyboardClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
KeyboardType keyboardType = KeyboardType.英文;
|
|
|
|
|
Type type = this.ActiveControl.GetType();
|
|
|
|
|
PropertyInfo pinfo = type.GetProperty("Keyboard");
|
|
|
|
|
if (pinfo != null)
|
|
|
|
|
{
|
|
|
|
|
keyboardType = (KeyboardType)pinfo.GetValue(this.ActiveControl, null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var keyboard = Application.OpenForms["VirtualKeyboard"];
|
|
|
|
|
if (keyboard == null)
|
|
|
|
|
{
|
|
|
|
|
keyboard = new VirtualKeyboard(keyboardType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
((VirtualKeyboard)keyboard).ShowVirtualKeyboard(this, keyboardType);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex, "打开屏幕键盘异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
AskgoodsTemplateDetail(ticketId, 1, 1000);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
detailListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void AskgoodsTemplateDetail(string ticketId, int PageNum, int pageSize)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var request = new AskgoodsTemplateDetailRequest();
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request.TicketId = ticketId;
|
|
|
|
|
request.PageNumber = PageNum;
|
|
|
|
|
request.PageSize = pageSize;
|
|
|
|
|
var response = StockUtils.AskgoodsTemplateDetail(request);
|
|
|
|
|
|
|
|
|
|
//成功
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, response.Item2);
|
|
|
|
|
askgoodsDetailResponse = response.Item7;
|
|
|
|
|
detailListTable.PrimaryGrid.DataSource = askgoodsDetailResponse;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
askgoodsDetailResponse = new List<AskgoodsTemplateDetailResponse>();
|
|
|
|
|
detailListTable.PrimaryGrid.DataSource = askgoodsDetailResponse;
|
|
|
|
|
this.ShowToastNotify(this, response.Item2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "要货模板明细查询异常");
|
|
|
|
|
LOGGER.Error(ex, "要货模板明细查询异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btn_ok(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
foreach (AskgoodsTemplateDetailResponse response in askgoodsDetailResponse) {
|
|
|
|
|
FoodMaterialDetailEntity detail = GetMaterialDetail(response.ProductId, response.SpecId);
|
|
|
|
|
if (detail!=null) {
|
|
|
|
|
//加入选中项
|
|
|
|
|
if (!selectMaterialList.Contains(detail.SpecId))
|
|
|
|
|
{
|
|
|
|
|
selectMaterialList.Add(detail.SpecId);
|
|
|
|
|
}
|
|
|
|
|
OnMaterialDetailClick?.Invoke(sender, new MaterialDetailEventArgs(detail));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//先关闭父窗体
|
|
|
|
|
if (this.Owner != null)
|
|
|
|
|
{
|
|
|
|
|
this.Owner.Close();
|
|
|
|
|
}
|
|
|
|
|
//再关闭当前窗体
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public delegate void EventHandler(object sender, MaterialDetailEventArgs e);
|
|
|
|
|
|
|
|
|
|
public event EventHandler OnMaterialDetailClick;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class MaterialDetailEventArgs : EventArgs
|
|
|
|
|
{
|
|
|
|
|
private readonly FoodMaterialDetailEntity _detail;
|
|
|
|
|
|
|
|
|
|
public MaterialDetailEventArgs(FoodMaterialDetailEntity detail)
|
|
|
|
|
{
|
|
|
|
|
this._detail = detail;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public FoodMaterialDetailEntity Detail
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _detail;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|