diff --git a/插件库/Lskj.PubBill/BillModule.cs b/插件库/Lskj.PubBill/BillModule.cs
index e06e540..777d6e6 100644
--- a/插件库/Lskj.PubBill/BillModule.cs
+++ b/插件库/Lskj.PubBill/BillModule.cs
@@ -1095,13 +1095,13 @@ namespace Lskj.PubBill
else if (this.BillModel.DetailTreeTable)
{
(this.gcMain as TreeGridControlEx).SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridViewRightCallBack, this.ControlObj, (this.gcMain as TreeGridControlEx).MenuStrip);
- (this.gcMain as TreeGridControlEx).TreeListObj.DoubleClick += new EventHandler(OnGridViewDoubleClick);
+ //(this.gcMain as TreeGridControlEx).TreeListObj.DoubleClick += new EventHandler(OnGridViewDoubleClick);//和下方行单击事件功能一致(TreeListObj_MouseClick),同样的sql会重复执行。先注释 2025-06-30
(this.gcMain as TreeGridControlEx).TreeListObj.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor);
}
else
{
this.gcMain.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridViewRightCallBack, this.ControlObj);
- this.gcMain.GridView.DoubleClick += new EventHandler(OnGridViewDoubleClick);
+ //this.gcMain.GridView.DoubleClick += new EventHandler(OnGridViewDoubleClick);//和下方行单击事件功能一致(OngcMainRowCellClick),同样的sql会重复执行。先注释 2025-06-30
this.gcMain.GridView.ShowingEditor += new CancelEventHandler(OnGridViewShowingEditor);
}
@@ -1655,6 +1655,11 @@ namespace Lskj.PubBill
{
this.tb_buttom.OnDetailSaveGridCallBack += Tab_OnDetailSaveGridCallBack;
}
+ if (this.BillModel.RefreshSelectedDetail)
+ {
+ //配置了只刷新当前页签后,切换页签时刷新
+ this.tb_buttom.TabControlObj.SelectedPageChanged += TabControlObj_SelectedPageChanged;
+ }
this.tb_buttom.InitTabPages(attachModels);
this.tb_buttom.OnRightCallback += new EventHandler(OnButtomRightCallBack);
}
@@ -1682,6 +1687,8 @@ namespace Lskj.PubBill
XtraTabPage tabPage = new XtraTabPage();
tabPage.Text = model.UserName;
+
+
#region 加载快速添加
if (!string.IsNullOrWhiteSpace(model.CodeInputSql) && !string.IsNullOrWhiteSpace(model.CodeInputCaption))
{
@@ -1742,12 +1749,37 @@ namespace Lskj.PubBill
{
dtBaseGridRightMenus = BaseModuleImpl.GetBaseGridRightMenus("BILLSOURCE_" + model.FormKey);
}
+
+ //节点编号
+ if (!string.IsNullOrWhiteSpace(model.SourceKeyFieldName)) (gridControl as TreeGridControlEx).TreeListObj.KeyFieldName = model.SourceKeyFieldName;
+ //父节点编号
+ if (!string.IsNullOrWhiteSpace(model.SourceParentFieldName)) (gridControl as TreeGridControlEx).TreeListObj.ParentFieldName = model.SourceParentFieldName;
+
gridControl.SetReadOnlyColumns(dtSourceColumns, GridCustomColumnStruct.BillSourceGridView + model.FormKey);
gridControl.SetGridRowColors(dtBaseGridRowColors);
- gridControl.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridControlRightCallback);
+ //gridControl.SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridControlRightCallback);
+ (gridControl as TreeGridControlEx).SetGridRightMenus(dtBaseGridRightMenus, this.SysModel, OnGridControlRightCallback);
unionModel.TreeGridControlObj = gridControl as TreeGridControlEx;
unionModel.TreeGridControlObj.TreeListObj.FocusedNodeChanged += new DevExpress.XtraTreeList.FocusedNodeChangedEventHandler(OnTreeListObjFocusedNodeChanged);
+ if (model.SourceType == 4)
+ {
+ //来源拖拽到主表
+ if (this.BillModel.DetailTreeTable)
+ {
+ TreeGridDragTree treeGridDragTree = new TreeGridDragTree((gridControl as TreeGridControlEx).TreeListObj, (this.gcMain as TreeGridControlEx).TreeListObj);
+ treeGridDragTree.CanDragParentNode = true;
+ treeGridDragTree.NeglectingNodes = true;
+ treeGridDragTree.OnDragComplete += TreeGridDragTree_OnDragComplete;
+ }
+ else
+ {
+ TreeGridDragGrid treeGridDragGrid = new TreeGridDragGrid((gridControl as TreeGridControlEx).TreeListObj, this.gcMain.GridView);
+ treeGridDragGrid.OnDragComplete += TreeGridDragGrid_OnDragComplete;
+ }
+ }
+
+
tabPage.Controls.Add(gridControl);
}
else
@@ -1817,6 +1849,13 @@ namespace Lskj.PubBill
#region 加载来源明细
XtraTabPage tabDetail = new XtraTabPage();
+ if (SystemInfo.Instance.GridRowFontSize > 0)
+ {
+ //页签大小
+ FontFamily fontFamily = tabDetail.Appearance.Header.Font.FontFamily;
+ tabDetail.Appearance.Header.Font = new System.Drawing.Font(fontFamily, SystemInfo.Instance.GridRowFontSize);
+ }
+
DataRow[] detailColumns = detailTable.Select("sourceId=" + model.Id);
@@ -2075,6 +2114,193 @@ namespace Lskj.PubBill
+ ///
+ /// 单据来源拖拽到主表明细中(树表格拖拽到树表格)
+ ///
+ ///
+ ///
+ private void TreeGridDragTree_OnDragComplete(object sender, TreeGridDragTreeGridArgs e)
+ {
+ if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0) return;
+
+ try
+ {
+ if (this.CanAddDetailRow())
+ {
+ if (this.BillModel.DisableDragPrompt || MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
+ {
+ XtraTabPage tabPage = this.xtc_left_container.SelectedTabPage;
+ BillSourceUnionModel unionModel = tabPage.Tag as BillSourceUnionModel;
+ TreeListNode focusedNode = e.SourceTreeList.FocusedNode;
+ var selectedNodes = e.SourceTreeList.Selection;
+ int i = 0;
+ foreach (TreeListNode treeNode in e.SourceTreeList.Selection)
+ {
+ // 拖动多行,所以明细数据改为动态查询
+ DataRowView dataRowView = e.SourceTreeList.GetDataRecordByNode(treeNode) as DataRowView;
+ DataRow rowItem = dataRowView != null ? dataRowView.Row : null;
+ this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel);
+ DataTable details = BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
+ if (unionModel.ModelObj.sourceDetailType != "1" && unionModel.GridDetailControlObj.GridView != null && focusedNode == treeNode)
+ {
+ //details = unionModel.GridDetailControlObj.GridView.GetGridViewFilteredAndSortedDataToDataTable();
+ details = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
+ }
+ else if (unionModel.ModelObj.sourceDetailType == "1" && unionModel.TreeGridDetailControlObj.TreeListObj != null && focusedNode == treeNode)
+ {
+ details = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
+ }
+ //details = GetGridViewFilteredAndSortedDataToDataTable(unionModel.GridDetailControlObj.GridView);
+ //DataTable details = unionModel.GridDetailControlObj.GridView.DataController.GetAllFilteredAndSortedRows().OfType().CopyToDataTable();
+ this.ControlObj.SetAllControlValue(rowItem, true);
+
+ if (unionModel.ModelObj.CadDragDetail)
+ {
+ this.AddMultiRowToGridView(details, unionModel);
+
+ if (BillModel.drgFinishHide == "1" && unionModel.GridDetailControlObj != null)
+ {
+ var detailRows = details.AsEnumerable().ToList();
+ foreach (var detailRow in detailRows)
+ {
+ if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
+ {
+ unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
+ }
+ if (unionModel.GridDetailDetailControlObj != null && unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
+ {
+ unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
+ }
+ }
+ }
+ }
+
+
+
+ //单据为新增状态,根据最后一行的内容设置红蓝单据
+ if (!this.BillModel.SaveState && e.SourceTreeList.Selection.Count - 1 == i && rowItem.Table.Columns.Contains(this.BillModel.RtagidKey) && this.BillModel.BillFlag != 0 && this.BillModel.BillFlag != 1)
+ {
+ if ("0".Equals(rowItem[this.BillModel.RtagidKey] + ""))
+ {
+ this.rdBlue.Checked = true;
+ this.OnBlueStateClick(null, null);
+ }
+ if ("1".Equals(rowItem[this.BillModel.RtagidKey] + ""))
+ {
+ this.rdRed.Checked = true;
+ this.OnRedStateClick(null, null);
+ }
+ }
+ i++;
+ }
+ if (unionModel.ModelObj.DragAndSave && e.SourceTreeList.Selection.Count == i && i != 0)
+ {
+ this.OnBillSaveClick(null, null);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Instance.WriteError(ex);
+ LogUtil.WriteError("单据来源表格拖拽完出错!", ex);
+ MessageUtil.Show(ResourceKeys.OperFault);
+ }
+
+
+ }
+
+ ///
+ /// 单据来源拖拽到主表明细中(树表格拖拽到表格)
+ ///
+ ///
+ ///
+ private void TreeGridDragGrid_OnDragComplete(object sender, TreeGridDragGridArgs e)
+ {
+ if (e.GridViewSelectRows == null || e.GridViewSelectRows.Length == 0) return;
+
+ try
+ {
+ if (this.CanAddDetailRow())
+ {
+ if (this.BillModel.DisableDragPrompt || MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
+ {
+ XtraTabPage tabPage = this.xtc_left_container.SelectedTabPage;
+ BillSourceUnionModel unionModel = tabPage.Tag as BillSourceUnionModel;
+ int i = 0;
+ TreeListNode focusedNode = e.TreeListObj.FocusedNode;
+ var selectedNodes = e.TreeListObj.Selection;
+ foreach (TreeListNode treeNode in e.TreeListObj.Selection)
+ {
+ // 拖动多行,所以明细数据改为动态查询
+ DataRowView dataRowView = e.TreeListObj.GetDataRecordByNode(treeNode) as DataRowView;
+ DataRow rowItem = dataRowView != null ? dataRowView.Row : null;
+ this.RefreshSourceDetail(tabPage.Tag as BillSourceUnionModel);
+ DataTable details = BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
+ if (unionModel.ModelObj.sourceDetailType != "1" && unionModel.GridDetailControlObj.GridView != null && focusedNode == treeNode)
+ {
+ details = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
+ }
+ else if (unionModel.ModelObj.sourceDetailType == "1" && unionModel.TreeGridDetailControlObj.TreeListObj != null && focusedNode == treeNode)
+ {
+ details = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
+ }
+ this.ControlObj.SetAllControlValue(rowItem, true);
+
+ if (unionModel.ModelObj.CadDragDetail)
+ {
+ this.AddMultiRowToGridView(details, unionModel);
+
+ if (BillModel.drgFinishHide == "1" && unionModel.GridDetailControlObj != null)
+ {
+ var detailRows = details.AsEnumerable().ToList();
+ foreach (var detailRow in detailRows)
+ {
+ if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
+ {
+ unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
+ }
+ if (unionModel.GridDetailDetailControlObj != null && unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
+ {
+ unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
+ }
+ }
+ }
+ }
+ //单据为新增状态,根据最后一行的内容设置红蓝单据
+ if (!this.BillModel.SaveState && e.TreeListObj.Selection.Count - 1 == i && rowItem.Table.Columns.Contains(this.BillModel.RtagidKey) && this.BillModel.BillFlag != 0 && this.BillModel.BillFlag != 1)
+ {
+ if ("0".Equals(rowItem[this.BillModel.RtagidKey] + ""))
+ {
+ this.rdBlue.Checked = true;
+ this.OnBlueStateClick(null, null);
+ }
+ if ("1".Equals(rowItem[this.BillModel.RtagidKey] + ""))
+ {
+ this.rdRed.Checked = true;
+ this.OnRedStateClick(null, null);
+ }
+ }
+ i++;
+ }
+ if (unionModel.ModelObj.DragAndSave && e.TreeListObj.Selection.Count == i && i != 0)
+ {
+ this.OnBillSaveClick(null,null);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Instance.WriteError(ex);
+ LogUtil.WriteError("单据来源表格拖拽完出错!", ex);
+ MessageUtil.Show(ResourceKeys.OperFault);
+ }
+
+ }
+
+
+
///
@@ -3330,104 +3556,102 @@ namespace Lskj.PubBill
{
WaitForm.ShowForm();
- if (unionModel.ModelObj.SourceType == 3)
- {
- TreeListNode focusedNode = unionModel.TreeGridControlObj.TreeListObj.FocusedNode;
- unionModel.GridDetailControlObj.GridControl.DataSource = focusedNode == null
- ? new DataTable() : BillImpl.GetDataTableResult(ReplaceHelper.ReplaceNodeParam(focusedNode, unionModel.ModelObj.DetailSql));
- if (this._isLoadRightControlValue)
- {
- string masterSql = focusedNode == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceNodeParam(focusedNode, BillModel.MasterSql);
- // 加载单据信息
- this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
- }
+ DataRow rowItem = unionModel.GridControlObj.GridView.GetFocusedDataRow();
+ //unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
+ // ? new DataTable() : BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
+ if (unionModel.ModelObj.SourceType == 3 || unionModel.ModelObj.SourceType == 4)
+ {
+ rowItem = unionModel.TreeGridControlObj.GetViewFocusedDataRow();
+ }
+
+
+ string DetailSql = unionModel.ModelObj.DetailSql;
+ DetailSql = ReplaceHelper.ReplaceUserInfo(DetailSql);
+ DetailSql = ReplaceHelper.ReplaceWhereCond(DetailSql);
+ DetailSql = ReplaceHelper.ReplaceRowParam(rowItem, DetailSql);
+ if (unionModel.SearchObj != null)
+ DetailSql = unionModel.SearchObj.ReplaceParentControlValue(DetailSql);
+
+ if (unionModel.ModelObj.sourceDetailType == "1")
+ {
+ unionModel.TreeGridDetailControlObj.SetGridViewDataSource(rowItem == null
+ ? new DataTable() : BillImpl.GetDataTableResult(DetailSql));
}
else
{
- DataRow rowItem = unionModel.GridControlObj.GridView.GetFocusedDataRow();
- //unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
- // ? new DataTable() : BillImpl.GetDataTableResult(ReplaceHelper.ReplaceRowParam(rowItem, unionModel.ModelObj.DetailSql));
-
- string DetailSql = unionModel.ModelObj.DetailSql;
- DetailSql = ReplaceHelper.ReplaceUserInfo(DetailSql);
- DetailSql = ReplaceHelper.ReplaceWhereCond(DetailSql);
- DetailSql = ReplaceHelper.ReplaceRowParam(rowItem, DetailSql);
- if (unionModel.SearchObj != null)
- DetailSql = unionModel.SearchObj.ReplaceParentControlValue(DetailSql);
-
- if (unionModel.ModelObj.sourceDetailType == "1")
+ //有复选框的页签在刷新前清空选中行,否则合计在刷新数据源后不会自带改变
+ if (unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelect == true)
{
- unionModel.TreeGridDetailControlObj.SetGridViewDataSource(rowItem == null
- ? new DataTable() : BillImpl.GetDataTableResult(DetailSql));
- }
- else
- {
- //有复选框的页签在刷新前清空选中行,否则合计在刷新数据源后不会自带改变
- if (unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelectMode == GridMultiSelectMode.CheckBoxRowSelect && unionModel.GridDetailControlObj.GridView.OptionsSelection.MultiSelect == true)
- {
- //int[] selectIndexs = unionModel.GridDetailControlObj.GridView.GetSelectedRows();
- unionModel.GridDetailControlObj.GridView.ClearSelection();
- }
-
- unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
- ? new DataTable() : BillImpl.GetDataTableResult(DetailSql);
+ //int[] selectIndexs = unionModel.GridDetailControlObj.GridView.GetSelectedRows();
+ unionModel.GridDetailControlObj.GridView.ClearSelection();
}
-
- DataTable table = null;
- if (unionModel.ModelObj.sourceDetailType == "1")
- {
- table = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
- }
- else
- {
- table = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
- }
-
- if (table != null && !table.Columns.Contains("_check"))
- {
- table.Columns.Add("_check", typeof(bool));
- foreach (DataRow row in table.Rows)
- {
- row["_check"] = 0;
- }
- }
-
- if (table != null)
- {
- UpdateSummaryData(table);
- }
-
- if (unionModel.ModelObj.SourceType == 2 && this._isLoadRightControlValue)
- {
- string masterSql = rowItem == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, BillModel.MasterSql);
- // 加载单据信息
- this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
- }
-
- if (tb_buttom.TabControlObj.TabPages.Count > 0)
- {
- for (int i = 0; i < this.tb_buttom.TabControlObj.TabPages.Count; i++)
- {
- XtraTabPage page = this.tb_buttom.TabControlObj.TabPages[i];
- if (i == 0) continue;
- if (rowItem != null && page != null)
- {
- this.SetTabPageDataSource(page, rowItem);
- }
- }
- //foreach (XtraTabPage AttachPage in this.tb_buttom.TabControlObj.TabPages)
- //{
- // GridDetailModel model = tb_buttom.GetGridDetailModel(AttachPage);
- // if (model == null) continue;
- // string sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, model.DetailSql);
- // this.tb_buttom.SetGridDataSource(AttachPage, sqlValue);
- //}
- }
- DataTable gridTable = (this.gcMain.GridControl.DataSource as DataTable).TrimDeleteRows();
- gridTable.OrderBy(this.BillModel.DetailOrderField);
+ unionModel.GridDetailControlObj.GridControl.DataSource = rowItem == null
+ ? new DataTable() : BillImpl.GetDataTableResult(DetailSql);
}
+
+
+ DataTable table = null;
+ if (unionModel.ModelObj.sourceDetailType == "1")
+ {
+ table = unionModel.TreeGridDetailControlObj.TreeListObj.DataSource as DataTable;
+ }
+ else
+ {
+ table = unionModel.GridDetailControlObj.GridControl.DataSource as DataTable;
+ }
+
+ if (table != null && !table.Columns.Contains("_check"))
+ {
+ table.Columns.Add("_check", typeof(bool));
+ foreach (DataRow row in table.Rows)
+ {
+ row["_check"] = 0;
+ }
+ }
+
+ if (table != null)
+ {
+ UpdateSummaryData(table);
+ }
+
+ if (unionModel.ModelObj.SourceType == 2 && this._isLoadRightControlValue)
+ {
+ string masterSql = rowItem == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, BillModel.MasterSql);
+ // 加载单据信息
+ this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
+ }
+ else if (unionModel.ModelObj.SourceType == 3 && this._isLoadRightControlValue)
+ {
+ //string masterSql = focusedNode == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceNodeParam(focusedNode, BillModel.MasterSql);
+ string masterSql = rowItem == null ? BillModel.MasterSql.Replace("{" + BillModel.PrimaryKey + "}", this.lblOrderNo.Text) : ReplaceHelper.ReplaceRowParam(rowItem, BillModel.MasterSql);
+ // 加载单据信息
+ this.SetBillStatus(BillImpl.GetDataRowResult(masterSql));
+ }
+
+ if (tb_buttom.TabControlObj.TabPages.Count > 0)
+ {
+ for (int i = 0; i < this.tb_buttom.TabControlObj.TabPages.Count; i++)
+ {
+ XtraTabPage page = this.tb_buttom.TabControlObj.TabPages[i];
+ if (i == 0) continue;
+ if (rowItem != null && page != null)
+ {
+ this.SetTabPageDataSource(page, rowItem);
+ }
+ }
+ //foreach (XtraTabPage AttachPage in this.tb_buttom.TabControlObj.TabPages)
+ //{
+ // GridDetailModel model = tb_buttom.GetGridDetailModel(AttachPage);
+ // if (model == null) continue;
+ // string sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, model.DetailSql);
+ // this.tb_buttom.SetGridDataSource(AttachPage, sqlValue);
+ //}
+ }
+ DataTable gridTable = (this.gcMain.GridControl.DataSource as DataTable).TrimDeleteRows();
+ gridTable.OrderBy(this.BillModel.DetailOrderField);
+
}
catch (Exception ex)
{
@@ -4480,6 +4704,21 @@ namespace Lskj.PubBill
this.ControlObj.ResetControlValue();
}
}
+ if (model.ModelObj.SourceType == 3 && this._isLoadRightControlValue)
+ {
+ DataRow rowItem = null;
+ if (model.GridControlObj.DataRowCount() > 0)
+ {
+ DataRow selectRow = model.TreeGridControlObj.GetViewFocusedDataRow(); ;
+ rowItem = BillImpl.GetDataRowResult(ReplaceHelper.ReplaceRowParam(selectRow, BillModel.MasterSql));
+ }
+ // 加载单据信息
+ this.SetBillStatus(rowItem);
+ if (rowItem == null)
+ {
+ this.ControlObj.ResetControlValue();
+ }
+ }
}
///
/// 说明:获取单据管理的单据来源标签
@@ -5847,6 +6086,18 @@ namespace Lskj.PubBill
}
}
+ ///
+ /// 切换下方附加模块页签时,刷新当前页签
+ ///
+ ///
+ ///
+ private void TabControlObj_SelectedPageChanged(object sender, TabPageChangedEventArgs e)
+ {
+ if (this.tb_buttom.TabControlObj.TabPages.Count > 1)
+ {
+ SetDetailGridDataSource();
+ }
+ }
///
/// 说明:获取底部多标签数据
@@ -5873,12 +6124,20 @@ namespace Lskj.PubBill
i++;
continue;
}
+ if (this.BillModel.RefreshSelectedDetail && page != tb_buttom.TabControlObj.SelectedTabPage)
+ {
+ continue;
+ }
if (rowItem != null && page != null)
{
this.SetTabPageDataSource(page, rowItem);
}
}
}
+
+
+
+
///
/// 说明:设置表格数据
/// 创建人:龚宇超
@@ -6491,12 +6750,10 @@ namespace Lskj.PubBill
if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
- //RemoveRowitem.Add(rowItem);
}
if (unionModel.GridDetailDetailControlObj != null && unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0)
{
unionModel.GridDetailDetailControlObj.GridControl.DataSourceTable().Rows.Remove(detailRow);
- //RemoveRowitem.Add(rowItem);
}
}
}
@@ -6520,6 +6777,10 @@ namespace Lskj.PubBill
}
i++;
}
+ if (unionModel.ModelObj.DragAndSave && rows.Length == i && i != 0)
+ {
+ this.OnBillSaveClick(null, null);
+ }
}
}
}
@@ -8472,7 +8733,7 @@ namespace Lskj.PubBill
if (unionModel.ModelObj.CadDragDetail)
{
//清空当前主单明细表数据
- ((this.gcMain as TreeGridControlEx).TreeListObj.DataSource as DataTable).Clear();
+ //((this.gcMain as TreeGridControlEx).TreeListObj.DataSource as DataTable).Clear();
(this.gcMain as TreeGridControlEx).TreeListObj.OptionsBehavior.Editable = true;
this.AddMultiRowToGridView(details, unionModel);
}
@@ -8493,6 +8754,10 @@ namespace Lskj.PubBill
}
i++;
}
+ if (unionModel.ModelObj.DragAndSave && rows.Length == i && i != 0)
+ {
+ this.OnBillSaveClick(null, null);
+ }
}
}
}
@@ -8622,21 +8887,6 @@ namespace Lskj.PubBill
MessageUtil.Show("扫码长度过长,请重新扫码");
return;
}
- int Quantity = 0;
-
- FrmAdd frmAdd = new FrmAdd();
- if (frmAdd.ShowDialog() == DialogResult.OK)
- {
- Quantity = frmAdd.Quantity;
-
- }
- else
- {
- textEdit.EditValue = "";
- textEdit.Focus();
- return;
- }
-
//获取选中行
DataRow MainRowItem = gcMain.GridView.GetFocusedDataRow();
@@ -8644,88 +8894,214 @@ namespace Lskj.PubBill
{
MainRowItem = gcMain.GridControl.DataSourceTable().NewRow();
}
+ //获取红蓝单据
+ string DocumentColor = this.rdBlue.Checked ? "0" : this.rdRed.Checked ? "1" : "";
+ //数量,默认为1
+ int Quantity = 1;
+ /*
+ A:弹框输入数量
+ B;不弹框,默认数量为1
+ C:配置了扫码关联模块,根据数量sql结果。判断是否弹窗。数量默认为1
-
-
- List Parameter = this.BillModel.CodeExecuteParameter.Split(',').ToList();
- for (int i = 0; i < Parameter.Count; i++)
+ this.BillModel.ScanCodeFixedPrefix为条码前缀,扫码内容前缀和配置相同,默认为B
+ */
+ string Type = string.Empty;
+ if (!string.IsNullOrWhiteSpace(this.BillModel.ScanCodeFixedPrefix) && inputText.StartsWith(this.BillModel.ScanCodeFixedPrefix))
{
- string item = Parameter[i];
- if (item.Contains("{DocumentColor}"))
- {
- string DocumentColor = this.rdBlue.Checked ? "0" : this.rdRed.Checked ? "1" : "";
- item = ReplaceHelper.ReplaceParamToValue(item, "{DocumentColor}", DocumentColor);
- }
- if (item.Contains("{amount}"))
- {
- item = Quantity + "";
- }
- //替换单据号
- item = ReplaceHelper.ReplaceParamToValue(item, "{" + this.BillModel.PrimaryKey + "}", this.lblOrderNo.Text);
- //替换选中行(没有就传空)
- item = ReplaceHelper.ReplaceRowParam(MainRowItem, item);
- //替换扫码内容
- item = ReplaceHelper.ReplaceParamToValue(item, "{value}", inputText);
- Parameter[i] = item;
+ Type = "B";
}
-
-
- List procParams = ReplaceHelper.GetParamFields(this.BillModel.CodeExecuteSql);
- List sqlParamList = new List();
- string[] paramStr = procParams[0].Replace("{", "").Replace("}", "").Split(',');
- SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
- //SqlParameter pMaount = new SqlParameter("@maount", SqlDbType.Int);
-
- for (int i = 0; i < paramStr.Length; i++)
+ else
{
- string item = paramStr[i];
- if (paramStr[i].Equals("@msg", StringComparison.OrdinalIgnoreCase))
+ string Sql = string.Format("select line_str from wms_ScanCodeLinetab a where modid='{0}' and hl_tig='{1}'", this.SysModel.ModuleCode, DocumentColor);
+ Type = SqlHelper.ExecuteScalar(Sql) + "";
+ if (string.IsNullOrWhiteSpace(Type))
{
- pMsg.Direction = ParameterDirection.InputOutput;
- pMsg.Value = Parameter.Count > i ? string.IsNullOrEmpty(Parameter[i]) ? "" : Parameter[i] : "";
- sqlParamList.Add(pMsg);
- }
- else
- {
- string paramStr1 = paramStr[i];
- SqlParameter param = new SqlParameter(string.Format("{0}", paramStr1), SqlDbType.VarChar);
- param.Value = Parameter[i];
- sqlParamList.Add(param);
+ MessageUtil.Show("扫码配置错误,请联系朗速服务人员");
+ return;
}
}
- SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
- returnValue.Direction = ParameterDirection.ReturnValue;
- int result;
- sqlParamList.Add(returnValue);
+ switch (Type.ToUpper())
+ {
+ case "A":
- try
- {
- result = MainImpl.ExecProcedure(this.BillModel.CodeExecuteSql.Replace(procParams[0], "").Trim(), sqlParamList.ToArray());
- }
- catch (SqlException sex)
- {
- string Message = ErrorMessage.PromptErrorMessage(sex);
- MessageUtil.Show(Message, sex.Message);
- return;
- }
- catch (Exception ex)
- {
- string Message = ErrorMessage.PromptErrorMessage(ex);
- MessageUtil.Show(Message, ex.Message);
- return;
- }
- int rValue = Convert.ToInt32(returnValue.Value);
- string varchar = pMsg.Value + "";
- switch (rValue)
- {
- case 1:
- if (string.IsNullOrWhiteSpace(varchar))
+ FrmAdd frmAdd = new FrmAdd();
+ if (frmAdd.ShowDialog() == DialogResult.OK)
{
- //刷新当前单据
- this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, this.lblOrderNo.Text)));
+ Quantity = frmAdd.Quantity;
}
else
{
- //刷新返回的单据号
- this.lblOrderNo.Text = varchar;
- this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}
\ No newline at end of file
+ textEdit.EditValue = "";
+ textEdit.Focus();
+ return;
+ }
+ this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, inputText);
+ break;
+ case "B":
+ this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, inputText);
+ break;
+ case "C":
+ if (!string.IsNullOrWhiteSpace(this.BillModel.ScanCodeModuleCode))
+ {
+ //根据传入的模块号获取模块信息
+ DataRow modelRow = MainImpl.GetSystemdllTab(this.BillModel.ScanCodeModuleCode);//获取模块信息
+ if (modelRow == null)
+ {
+ MessageUtil.Show("模块编号[" + this.BillModel.ScanCodeModuleCode + "],配置错误!\r\n该模块信息未找到!");
+ return;
+ }
+ if (modelRow.Table.Columns.Contains("countSql") && !string.IsNullOrWhiteSpace(modelRow["countSql"] + ""))
+ {
+ string sql = modelRow["countSql"] + "";
+ sql = ReplaceHelper.ReplaceUserInfo(sql);
+ sql = ReplaceHelper.ReplaceParamToValue(sql, "{value}", inputText);
+ string num = SqlHelper.ExecuteScalar(sql) + "";
+ num = this.IsNumberic(num) ? num : "0";
+ if (int.Parse(num) == 0)
+ {
+ MessageUtil.Show("未检测到扫码信息存在,请检查相应前序业务!");
+ }
+ else if (int.Parse(num) == 1)
+ {
+ this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, inputText);
+ }
+ else if (int.Parse(num) > 1)
+ {
+ FrmScanCodeAssociation frmScanCodeAssociation = new FrmScanCodeAssociation(modelRow, inputText);
+ if (frmScanCodeAssociation.ShowDialog() == DialogResult.OK)
+ {
+ string Codes = frmScanCodeAssociation.StringCodes;
+ this.ExecuteWcanningSQL(MainRowItem, Quantity + "", DocumentColor, Codes);
+ }
+ else
+ {
+ textEdit.EditValue = "";
+ textEdit.Focus();
+ return;
+ }
+ }
+ }
+ }
+ else
+ {
+ MessageUtil.Show("扫码配置错误");
+ return;
+ }
+ break;
+
+ }
+ }
+
+
+ //刷新单据管理(sourceType=2)
+ foreach (XtraTabPage tabPage in this.xtc_left_container.TabPages)
+ {
+ BillSourceUnionModel model = tabPage.Tag as BillSourceUnionModel;
+ if (model != null && model.GridControlObj != null && model.ModelObj.SourceType == 2)
+ {
+ this.RefreshSource(model);
+ }
+ }
+ //刷新下方配置的附件模块
+ this.OngcMainRowCellClick(null, null);
+
+ textEdit.EditValue = "";
+ textEdit.Focus();
+ }
+ }
+
+
+ ///
+ /// 执行扫码的存储过程
+ ///
+ /// 明细选中行
+ ///数量
+ ///红蓝单据字段
+ ///串码,多个用;隔开
+ public void ExecuteWcanningSQL(DataRow MainRowItem, string Quantity, string DocumentColor, string Codes)
+ {
+ int j = 0;
+ foreach (string code in Codes.TrimEnd(';').Split(';'))
+ {
+ if (string.IsNullOrWhiteSpace(code)) continue;
+ List Parameter = this.BillModel.CodeExecuteParameter.Split(',').ToList();
+ for (int i = 0; i < Parameter.Count; i++)
+ {
+ string item = Parameter[i];
+ if (item.Contains("{DocumentColor}"))
+ {
+ item = ReplaceHelper.ReplaceParamToValue(item, "{DocumentColor}", DocumentColor);
+ }
+ if (item.Contains("{amount}"))
+ {
+ item = Quantity + "";
+ }
+ //替换单据号
+ item = ReplaceHelper.ReplaceParamToValue(item, "{" + this.BillModel.PrimaryKey + "}", this.lblOrderNo.Text);
+ //替换选中行(没有就传空)
+ item = ReplaceHelper.ReplaceRowParam(MainRowItem, item);
+ //替换扫码内容
+ item = ReplaceHelper.ReplaceParamToValue(item, "{value}", code);
+ Parameter[i] = item;
+ }
+
+
+ List procParams = ReplaceHelper.GetParamFields(this.BillModel.CodeExecuteSql);
+ List sqlParamList = new List();
+ string[] paramStr = procParams[0].Replace("{", "").Replace("}", "").Split(',');
+ SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
+
+ for (int i = 0; i < paramStr.Length; i++)
+ {
+ string item = paramStr[i];
+ if (paramStr[i].Equals("@msg", StringComparison.OrdinalIgnoreCase))
+ {
+ pMsg.Direction = ParameterDirection.InputOutput;
+ pMsg.Value = Parameter.Count > i ? string.IsNullOrEmpty(Parameter[i]) ? "" : Parameter[i] : "";
+ sqlParamList.Add(pMsg);
+ }
+ else
+ {
+ string paramStr1 = paramStr[i];
+ SqlParameter param = new SqlParameter(string.Format("{0}", paramStr1), SqlDbType.VarChar);
+ param.Value = Parameter[i];
+ sqlParamList.Add(param);
+ }
+ }
+ SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
+ returnValue.Direction = ParameterDirection.ReturnValue;
+ int result;
+ sqlParamList.Add(returnValue);
+
+ try
+ {
+ result = MainImpl.ExecProcedure(this.BillModel.CodeExecuteSql.Replace(procParams[0], "").Trim(), sqlParamList.ToArray());
+ }
+ catch (SqlException sex)
+ {
+ string Message = ErrorMessage.PromptErrorMessage(sex);
+ MessageUtil.Show(Message, sex.Message);
+ return;
+ }
+ catch (Exception ex)
+ {
+ string Message = ErrorMessage.PromptErrorMessage(ex);
+ MessageUtil.Show(Message, ex.Message);
+ return;
+ }
+ int rValue = Convert.ToInt32(returnValue.Value);
+ string varchar = pMsg.Value + "";
+ switch (rValue)
+ {
+ case 1:
+ if (string.IsNullOrWhiteSpace(varchar))
+ {
+ //刷新当前单据
+ if (j == Codes.TrimEnd(';').Split(';').Length - 1)
+ {
+ this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, this.lblOrderNo.Text)));
+ }
+
+ }
+ else
+
\ No newline at end of file
diff --git a/插件库/Lskj.PubBill/FrmScanCodeAssociation.Designer.cs b/插件库/Lskj.PubBill/FrmScanCodeAssociation.Designer.cs
new file mode 100644
index 0000000..d4e6ad4
--- /dev/null
+++ b/插件库/Lskj.PubBill/FrmScanCodeAssociation.Designer.cs
@@ -0,0 +1,74 @@
+
+namespace Lskj.PubBill
+{
+ partial class FrmScanCodeAssociation
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.plm_bottom = new DevExpress.XtraEditors.PanelControl();
+ this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
+ this.gcMain = new Lskj.Control.GridControlEx();
+ ((System.ComponentModel.ISupportInitialize)(this.plm_bottom)).BeginInit();
+ this.plm_bottom.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // plm_bottom
+ //
+ this.plm_bottom.Controls.Add(this.simpleButton1);
+ this.plm_bottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.plm_bottom.Location = new System.Drawing.Point(0, 410);
+ this.plm_bottom.Margin = new System.Windows.Forms.Padding(4);
+ this.plm_bottom.Name = "plm_bottom";
+ this.plm_bottom.Size = new System.Drawing.Size(800, 40);
+ this.plm_bottom.TabIndex = 18;
+ //
+ // simpleButton1
+ //
+ this.simpleButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.simpleButton1.Appearance.Font = new System.Drawing.Font("宋体", 9F);
+ this.simpleButton1.Appearance.Options.UseFont = true;
+ this.simpleButton1.Location = new System.Drawing.Point(696, 6);
+ this.simpleButton1.Margin = new System.Windows.Forms.Padding(4);
+ this.simpleButton1.Name = "simpleButton1";
+ this.simpleButton1.Size = new System.Drawing.Size(90, 30);
+ this.simpleButton1.TabIndex = 41;
+ this.simpleButton1.Text = "确定";
+ this.simpleButton1.Click += new System.EventHandler(this.simpleButton1_Click);
+ //
+ // gcMain
+ //
+ this.gcMain.AdapterObj = null;
+ this.gcMain.BackColor = System.Drawing.Color.Transparent;
+ this.gcMain.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.gcMain.Location = new System.Drawing.Point(0, 0);
+ this.gcMain.Margin = new System.Windows.Forms.Padding(5);
+ this.gcMain.Name = "gcMain";
+ this.gcMain.SiftEnumObj = Lskj.Control.GridControlEx.HeaderSiftEnum.Sum;
+ this.gcMain.Size = new System.Drawing.Size(800, 410);
+ this.gcMain.TabIndex = 21;
+ //
+ // FrmScanC
\ No newline at end of file
diff --git a/插件库/Lskj.PubBill/FrmScanCodeAssociation.cs b/插件库/Lskj.PubBill/FrmScanCodeAssociation.cs
new file mode 100644
index 0000000..8e27e60
--- /dev/null
+++ b/插件库/Lskj.PubBill/FrmScanCodeAssociation.cs
@@ -0,0 +1,52 @@
+using Lskj.Business.Impl;
+using Lskj.Control;
+using Lskj.Control.Model;
+using Lskj.Core;
+using Lskj.Model;
+using Lskj.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Lskj.PubBill
+{
+ public partial class FrmScanCodeAssociation : BaseForm
+ {
+
+ ///
+ /// 系统模块实体对象
+ ///
+ /// The system model.
+ public ModuleModel SysModel { get; private set; }
+ ///
+ ///主表条件控件
+ ///
+ public MyControl SearchMainObj;
+ ///
+ ///扫码内容
+ ///
+ public string ScanCodeData;
+ ///
+ //选中的串码
+ ///
+ public string StringCodes;
+
+ public FrmScanCodeAssociation()
+ {
+ InitializeComponent();
+ }
+
+ public FrmScanCodeAssociation(DataRow modelRow, string scanCodeData)
+ {
+ InitializeComponent();
+ this.ScanCodeData = scanCodeData;
+ //根据传入的模块号获取模块信息
+ this.SysModel = new ModuleModel(modelRow);
+ DataTable mainGridColumns = BaseModuleImpl.GetBaseGridColumns(this.SysModel.ModeCode);
+ this.gcMain.SetReadOnlyColumns(mainGridColumns, GridCustomColumnStruct.BaseMainGridView + this.SysModel.FormKey);//创建列
+
\ No newline at end of file
diff --git a/插件库/Lskj.PubBill/FrmScanCodeAssociation.resx b/插件库/Lskj.PubBill/FrmScanCodeAssociation.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/插件库/Lskj.PubBill/FrmScanCodeAssociation.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/插件库/Lskj.PubBill/Model/BillSourceModel.cs b/插件库/Lskj.PubBill/Model/BillSourceModel.cs
index e653164..2312a05 100644
--- a/插件库/Lskj.PubBill/Model/BillSourceModel.cs
+++ b/插件库/Lskj.PubBill/Model/BillSourceModel.cs
@@ -44,7 +44,6 @@ namespace Lskj.PubBill.Model
public bool DisableShowSourceCount { get; private set; }//是否显示来源数量
public string AddDataSql { get; private set; }// 添加数据sql(来源明细添加到主表明细时,执行sql把查询数据源一并添加到来源明细中)
public string AddDataCondition { get; private set; }// 添加数据条件
-
public bool LoadFilter { get; private set; }//来源筛选行是否显示
public bool DetailedLoadFilter { get; private set; }//来源明细筛选行是否显示
@@ -52,6 +51,12 @@ namespace Lskj.PubBill.Model
public string MainDetailsAddType;// 主表明细新增模式 (默认来源明细和来源明细的明细都可以添加到主表, 1为来源明细添加 2为来源明细的明细添加)
+ public string SourceKeyFieldName;// 节点id(来源主表为树表格时)
+
+ public string SourceParentFieldName;// 父节点id(来源主表为树表格时 )
+
+ public bool DragAndSave;// 拖拽后保存
+
public BillSourceModel(DataRow item)
{
if (item == null) return;
@@ -84,4 +89,8 @@ namespace Lskj.PubBill.Model
this.sourceDetailType = item.Table.Columns.Contains("sourceDetailType") ? item["sourceDetailType"] + "" : "";
this.DisableShowSourceCount = item.Table.Columns.Contains("DisableShowSourceCount") && "1".Equals(item["DisableShowSourceCount"] + "") ? true : false;
- this.AddDataSql =
\ No newline at end of file
+ this.AddDataSql = item.Table.Columns.Contains("AddDataSql") ? item["AddDataSql"] + "" : "";
+ this.AddDataCondition = item.Table.Columns.Contains("AddDataCondition") ? item["AddDataCondition"] + "" : "";
+
+ this.LoadFilter = item.Table.Columns.Contains("LoadFilter") && "1".Equals(item["LoadFilter"] + "") ? true : false;
+ this.DetailedLoadFilter = item.Table.Columns.Contains("Detai
\ No newline at end of file