diff --git a/插件库/Lskj.PubBill/BillModule.cs b/插件库/Lskj.PubBill/BillModule.cs index 9f973fe..f2cc6af 100644 --- a/插件库/Lskj.PubBill/BillModule.cs +++ b/插件库/Lskj.PubBill/BillModule.cs @@ -219,7 +219,10 @@ namespace Lskj.PubBill /// 是否已经添加了多行汇总 /// public bool MultiLineSummary; - + /// + /// 扫码框 + /// + public TextEdit ScanCodeTextEdit = null; public BillModule() { @@ -280,6 +283,10 @@ namespace Lskj.PubBill this.rdRed.Text = Business.Impl.LanguageTranslation.GetTranslatedText(this.rdRed.Text); this.labelControl1.Text = Business.Impl.LanguageTranslation.GetTranslatedText(this.labelControl1.Text); } + + + + } catch (Exception ex) { @@ -297,6 +304,7 @@ namespace Lskj.PubBill this.pl_main_center_master.VerticalScroll.Visible = this.BillModel.MainVerticalScroll;//隐藏纵向滚动条 this.pl_main_center_master.HorizontalScroll.Visible = this.BillModel.MainHorizontalScrolling;//隐藏横向滚动条 } + } } @@ -1643,6 +1651,10 @@ namespace Lskj.PubBill this.tb_buttom.Model = this.SysModel; this.tb_buttom.ParentControlEx = this.ControlObj; this.tb_buttom.ParentGridEx = this.gcMain; + if (this.BillModel.AttachmentRefreshMain) + { + this.tb_buttom.OnDetailSaveGridCallBack += Tab_OnDetailSaveGridCallBack; + } this.tb_buttom.InitTabPages(attachModels); this.tb_buttom.OnRightCallback += new EventHandler(OnButtomRightCallBack); } @@ -1670,7 +1682,7 @@ namespace Lskj.PubBill XtraTabPage tabPage = new XtraTabPage(); tabPage.Text = model.UserName; - #region 加载快速添加 + #region 加载快速添加 if (!string.IsNullOrWhiteSpace(model.CodeInputSql) && !string.IsNullOrWhiteSpace(model.CodeInputCaption)) { ComboBoxEditModel editModel = new ComboBoxEditModel() @@ -4559,6 +4571,8 @@ namespace Lskj.PubBill model.FieldType == ControlType.LabPicEx) continue; + if (string.IsNullOrWhiteSpace(model.FieldName)) continue; + string fieldValue = this.ControlObj.GetControlValue(model); if (SystemInfo.Instance.TrimWhiteSpace) fieldValue = fieldValue.Trim(); @@ -4612,6 +4626,8 @@ namespace Lskj.PubBill model.FieldType == ControlType.LabPicEx) continue; + if (string.IsNullOrWhiteSpace(model.FieldName)) continue; + BaseUserControl userControl = this.ControlObj.FindControl(model); if (userControl != null) { @@ -6463,26 +6479,28 @@ namespace Lskj.PubBill 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 (BillModel.drgFinishHide == "1" && unionModel.GridDetailControlObj != null) { - if (unionModel.GridDetailControlObj.GridControl.DataSourceTable().Rows.IndexOf(detailRow) >= 0) + var detailRows = details.AsEnumerable().ToList(); + foreach (var detailRow in detailRows) { - 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); + 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); + } } } } + + //单据为新增状态,根据最后一行的内容设置红蓝单据 if (!this.BillModel.SaveState && rows.Length - 1 == i && rowItem.Table.Columns.Contains(this.BillModel.RtagidKey) && this.BillModel.BillFlag != 0 && this.BillModel.BillFlag != 1) { @@ -7344,6 +7362,7 @@ namespace Lskj.PubBill } if (editObj != null) { + DataTable table = BaseImpl.GetDataTableResult(this.ControlObj.ReplaceControlValue(ReplaceHelper.ReplaceSearchControlCond(editObj.SourceModel.CodeInputSql, inputText))); if (table.Rows.Count == 0) { @@ -7357,8 +7376,10 @@ namespace Lskj.PubBill { this.AddRowToGridView(rowItem); this.AddRowToGridViewByBom(rowItem, editObj.UnionModel, ref onlyPopup); + } } + } } catch (Exception ex) @@ -7747,6 +7768,23 @@ namespace Lskj.PubBill } } + //设置扫码控件 + if (!string.IsNullOrWhiteSpace(this.BillModel.CodeExecuteSql) && !string.IsNullOrWhiteSpace(this.BillModel.CodeExecuteParameter)) + { + this.pl_input.Controls.Clear(); + this.pl_input.Visible = false; + this.ScanCodeTextEdit = new TextEdit(); + ScanCodeTextEdit.Height = this.pl_input.Height; + ScanCodeTextEdit.Width = this.pl_input.Width; + ScanCodeTextEdit.Properties.Appearance.Font = new Font("宋体", 10.5F); + ScanCodeTextEdit.Left = 10; + ScanCodeTextEdit.Top = (pl_main_bottom.Height - ScanCodeTextEdit.Height) / 2; + ScanCodeTextEdit.BackColor = ColorTranslator.FromHtml("#FFC0CB"); + ScanCodeTextEdit.KeyDown += Text_KeyDown; + ScanCodeTextEdit.Parent = pl_main_bottom; + + } + } @@ -8502,4 +8540,179 @@ namespace Lskj.PubBill /// /// The cond. /// The data row. - /// true if X \ No newline at end of file + /// true if XXXX, false otherwise. + private bool ValidateCond(string cond, DataRow dataRow) + { + bool result = false; + string condition = cond; + try + { + if (string.IsNullOrWhiteSpace(cond)) return true;//如果值是空格或者空行,默认正确 + cond = ReplaceHelper.ReplaceRowParam(dataRow, cond); + if (cond.StartsWith("@") || cond.StartsWith("!")) + { + result = "1".Equals(BaseImpl.GetDefaultValue(cond)); + } + else if (dataRow == null) + { + result = ReplaceHelper.EvalCond(cond); + } + else + { + result = ReplaceHelper.ReplaceRowParamCond(dataRow, cond); + } + return result; + } + catch (Exception ex) + { + + } + return result; + } + + + /// + /// 页签里数据修改后刷新主表和主表明细 + /// + /// + /// + private void Tab_OnDetailSaveGridCallBack(object sender, EventArgs e) + { + try + { + this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, this.lblOrderNo.Text))); + } + catch (Exception ex) + { + string Message = ErrorMessage.PromptErrorMessage(ex); + MessageUtil.Show(Message, ex.Message); + } + } + + /// + /// 扫码回车事件 + /// + /// + /// + private void Text_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + TextEdit textEdit = sender as TextEdit; + string inputText = textEdit.Text; + if (!string.IsNullOrWhiteSpace(this.BillModel.CodeExecuteSql) && !string.IsNullOrWhiteSpace(this.BillModel.CodeExecuteParameter)) + { + if (inputText.Length > 50) + { + MessageUtil.Show("扫码长度过长,请重新扫码"); + return; + } + //获取选中行 + DataRow MainRowItem = gcMain.GridView.GetFocusedDataRow(); + if (MainRowItem == null) + { + MainRowItem = gcMain.GridControl.DataSourceTable().NewRow(); + } + + List Parameter = this.BillModel.CodeExecuteParameter.Split(',').ToList(); + for (int i = 0; i < Parameter.Count; i++) + { + string item = Parameter[i]; + if (item.Contains("{DocumentColor}")) + { + string DocumentColor = this.rdBlue.Checked ? "0" : this.rdRed.Checked ? "1" : ""; + item = ReplaceHelper.ReplaceParamToValue(item, "{DocumentColor}", DocumentColor); + } + //替换单据号 + item = ReplaceHelper.ReplaceParamToValue(item, "{" + this.BillModel.PrimaryDetailKey + "}", this.lblOrderNo.Text); + //替换选中行(没有就传空) + item = ReplaceHelper.ReplaceRowParam(MainRowItem, item); + //替换扫码内容 + item = ReplaceHelper.ReplaceParamToValue(item, "{value}", inputText); + 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) + { + result = 0; + } + int rValue = Convert.ToInt32(returnValue.Value); + string varchar = pMsg.Value + ""; + switch (rValue) + { + case 1: + if (string.IsNullOrWhiteSpace(varchar)) + { + //刷新当前单据 + this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, this.lblOrderNo.Text))); + } + else + { + //刷新返回的单据号 + this.lblOrderNo.Text = varchar; + this.SetBillStatus(BillImpl.GetDataRowResult(string.Format("select * from {0} where {1}='{2}'", BillModel.MasterTable, BillModel.PrimaryKey, varchar))); + } + break; + case -1: + MessageUtil.Show(ResourceKeys.OperFault + "\n" + pMsg.Value); + 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(); + } + } + } +} \ No newline at end of file