using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using com.hnshituo.pur.vo; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Tool; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; using Pur.Entity; using Pur.PublicTools; namespace Pur.order { public partial class FrmOrderChange : FrmPmsBase { Hashtable _Hashtable=new Hashtable(); Hashtable _OrderRow = new Hashtable(); Hashtable _ClauseRow = new Hashtable(); ArrayList listDeleteRow = new ArrayList(); public String strTips = "0"; String strOrderId = ""; public FrmOrderChange() { InitializeComponent(); } public FrmOrderChange(OpeBase Ob,String orderId) { InitializeComponent(); this.ob = Ob; this.strOrderId = orderId; } private void FrmOrderChange_Load(object sender, EventArgs e) { this.Text = "合同【" + strOrderId + "】变更申请"; PublicPur.InitCellEdit(new UltraGrid[] { ultraGrid1 }, new string[] { "Qty", "PriceWithTax", "TaxRateName", "EndDate", "remark" }); PublicPur.InitCellEdit(new UltraGrid[] { ultraGrid2 }, new string[] { "ClauseDesc" }); PublicPur.InitCellEdit(new UltraGrid[] { ultraGrid3 }, new string[] { }); _Hashtable.Add("1","含税价格调整"); _Hashtable.Add("2","税率调整"); _Hashtable.Add("3","数量调整"); _Hashtable.Add("4","交期调整"); _Hashtable.Add("5","合同条款内容调整"); _Hashtable.Add("6","备注修改"); _Hashtable.Add("9", "合同行删除"); getOrderDetail(strOrderId); } #region toolbar工具栏 /// /// toolbar /// /// /// private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "doQuery": //查询、清空 getOrderDetail(strOrderId); break; case "doSure": // 确认---生成新合同 doSure(); break; case "doDelete": //删除合同行--非合同行不允许删除 doDelete(); break; case "doCreateDetail": // ButtonTool doCreateDetail(); break; case "doExit": // ButtonTool this.Close(); break; } } /// /// 生成变更明细 /// private void doCreateDetail() { createChangeD(); } /// /// 删除合同行 /// private void doDelete() { if (ultraTabControl1.SelectedTab!= ultraTabControl1.Tabs[0]) { MessageUtil.ShowTips("只允许作废合同行,合同条款不允许作废"); return; } if (ultraGrid1.ActiveRow == null) { MessageUtil.ShowTips("请选择待删除的合同行"); return; } String strOrderLineSqe = ultraGrid1.ActiveRow.GetCellValue("OrderLineSqe").ToString().Trim(); listDeleteRow.Add(strOrderLineSqe); ultraGrid1.ActiveRow.Delete(true); } /// /// 查询 /// /// private void getOrderDetail(string strOrderId) { txt_record.Clear(); dataSet1.Clear(); dataSet2.Clear(); dataSet3.Clear(); if (listDeleteRow != null) { listDeleteRow.Clear(); } if (_OrderRow != null) { _OrderRow.Clear(); } if (_ClauseRow != null) { _ClauseRow.Clear(); } OrderC odC = new OrderC(); if (!String.IsNullOrEmpty(strOrderId)) { odC.OrderId = strOrderId; odC.Validflag = "1"; DataTable dt = this.execute("com.hnshituo.pur.order.service.OrderCService", "doQueryOrderC", new object[] { odC, 0, 0 }); List listOc = this.execute>("com.hnshituo.pur.order.service.OrderCService", "doQueryOrderC", new object[] { odC, 0, 0 }); GridHelper.CopyDataToDatatable(dt, dataTable2, true); GridHelper.RefreshAndAutoSize(ultraGrid1); foreach (OrderC odC1 in listOc) { _OrderRow.Add(odC1.OrderLineSqe, odC1); } } if (!String.IsNullOrEmpty(strOrderId)) { OrderCClause clause = new OrderCClause(); clause.OrderId = strOrderId; DataTable dt = this.execute("com.hnshituo.pur.order.service.OrderCClauseService", "find_Clause", new object[] { clause }); List listCs = this.execute>("com.hnshituo.pur.order.service.OrderCClauseService", "find_Clause", new object[] { clause }); GridHelper.CopyDataToDatatable(dt, dataTable3, true); GridHelper.RefreshAndAutoSize(ultraGrid2); foreach (OrderCClause clause1 in listCs) { _ClauseRow.Add(clause1.Id, clause1); } } } /// /// 确定变更 /// private void doSure() { //ultraGrid1.UpdateData(); //ultraGrid2.UpdateData(); ultraGrid3.Refresh(); //ArrayList listOc = new ArrayList(); //ArrayList listCC = new ArrayList(); ArrayList listCg = new ArrayList(); //判断有没有修改 if (dataTable4.Rows.Count <= 0 ) { MessageUtil.ShowTips("未发现任务变更下项目,或请重新点击【生成变更项目】按钮生成变更项目"); return; } //foreach (UltraGridRow row in ultraGrid1.Rows) //{ // OrderC orderC = new OrderC(); // String strOrderLineSqe = row.GetCellValue("OrderLineSqe").ToString().Trim(); // double newQty = 0; // Double.TryParse(row.GetCellValue("Qty").ToString().Trim(), out newQty); // double newPrice = 0; // Double.TryParse(row.GetCellValue("PriceWithTax").ToString().Trim(), out newPrice); // String newRateName = row.GetCellValue("TaxRateName").ToString().Trim(); // orderC.OrderLineSqe = strOrderLineSqe; // orderC.Qty = newQty; // orderC.PriceWithTax = newPrice; // orderC.TaxRateName = newRateName; // if (String.IsNullOrEmpty(strOrderLineSqe)) // { // MessageUtil.ShowTips("合同行号为空"); // return; // } // if (newPrice < 0) // { // MessageUtil.ShowTips("合同行号:" + strOrderLineSqe + " 的含税价格不能小于0"); // return; // } // if (newQty <= 0) // { // MessageUtil.ShowTips("采购数量不能小于0"); // return; // } // if (String.IsNullOrEmpty(newRateName)) // { // MessageUtil.ShowTips("税率不能为空"); // return; // } // listOc.Add(orderC); //} //foreach (UltraGridRow row in ultraGrid2.Rows) //{ // String strID = row.GetCellValue("ID").ToString().Trim(); // OrderCClause clauseC = new OrderCClause(); // String newClauseDesc = row.GetCellValue("ClauseDesc").ToString().Trim(); // if (String.IsNullOrEmpty(strID)) // { // MessageUtil.ShowTips("合同条款行号为空"); // return; // } // clauseC.Id = strID; // clauseC.ClauseDesc = newClauseDesc; // listCC.Add(clauseC); //} OrderChangeM om=new OrderChangeM(); om.ChangeRecord = txt_record.Text.Trim(); if (String.IsNullOrEmpty(om.ChangeRecord)) { MessageUtil.ShowTips("变更说明不能为空"); return; } if (om.ChangeRecord.Length > 2999) { MessageUtil.ShowTips("变更说明超出字数限制"); return; } om.CreateName = UserInfo.GetUserName(); om.CreateUserid = UserInfo.GetUserID(); om.CreateTime = DateTime.Now; om.OrderId = strOrderId; foreach (UltraGridRow row in ultraGrid3.Rows) { OrderChangeD changeD = new OrderChangeD(); changeD.ChangeCode = row.GetCellValue("changeCode").ToString().Trim(); changeD.ChangeType=row.GetCellValue("changeType").ToString().Trim(); changeD.ChangeCodeName=row.GetCellValue("changeCodeName").ToString().Trim(); changeD.ChangeTypeName=row.GetCellValue("changeTypeName").ToString().Trim(); changeD.OrderLineSqe=row.GetCellValue("OrderLineSqe").ToString().Trim(); changeD.OrderId=row.GetCellValue("OrderId").ToString().Trim(); changeD.NewValue=row.GetCellValue("newValue").ToString().Trim(); changeD.OldValue=row.GetCellValue("oldValue").ToString().Trim(); changeD.CreateName = UserInfo.GetUserName(); changeD.CreateTime = DateTime.Now; changeD.CreateUserid = UserInfo.GetUserID(); listCg.Add(changeD); } if (listCg.Count <= 0) { MessageUtil.ShowTips("未发现任务变更下项目,或请重新点击【生成变更项目】按钮生成变更项目"); return; } String strdetail = ((OrderChangeD)listCg[0]).ChangeTypeName; if (MessageUtil.ShowYesNoAndQuestion("确定对合同【" + strOrderId + "】进行变更申请,共变更包括" + strdetail + "在内的" + listCg.Count + "项") != DialogResult.Yes) { return; } CoreResult crt = this.execute("com.hnshituo.pur.order.service.OrderMService", "changeOrder", new object[] {listCg,om }); if (crt.Resultcode != 0) { MessageUtil.ShowTips("操作失败:" + crt.Resultmsg); strTips = "0"; } else { MessageUtil.ShowTips("操作成功,请确认提报" ); strTips = "1"; } } #endregion #region 界面事件 #endregion #region 公共函数 private void createChangeD() { try { this.Cursor = Cursors.WaitCursor; ultraGrid1.UpdateData(); ultraGrid2.UpdateData(); dataSet3.Clear(); foreach (String strOrderLineSqe1 in listDeleteRow) { OrderC odC = (OrderC)_OrderRow[strOrderLineSqe1]; if (odC == null) { MessageUtil.ShowTips("未发现合同行:" + strOrderLineSqe1 + "信息记录"); return; } DataRow dr = dataTable4.NewRow(); dr["changeCode"] = "delete"; dr["changeCodeName"] = "删除合同行:" + strOrderLineSqe1 + ",涉及物料:" + odC.ItemName; dr["changeType"] = "9"; dr["changeTypeName"] = _Hashtable["9"]; dr["OrderLineSqe"] = strOrderLineSqe1; dr["OrderId"] = odC.OrderId; dr["createName"] = UserInfo.GetUserName(); dr["createTime"] = DateTime.Now; dataTable4.Rows.InsertAt(dr, 0); } foreach (UltraGridRow row in ultraGrid1.Rows) { String strOrderLineSqe = row.GetCellValue("OrderLineSqe").ToString().Trim(); String strItemName = row.GetCellValue("itemName").ToString().Trim(); OrderC odC = (OrderC)_OrderRow[strOrderLineSqe]; //处理数量 double newQty = 0; Double.TryParse(row.GetCellValue("Qty").ToString().Trim(), out newQty); if (Math.Round((double)odC.Qty, 3) != Math.Round(newQty, 3)) { double noticedQty = odC.CreatedNoticeQty == null ? 0 : (double)odC.CreatedNoticeQty; double oldQty = odC.Qty == null ? 0 : (double)odC.Qty; noticedQty = Math.Round(noticedQty, 3); newQty = Math.Round(newQty, 3); oldQty = Math.Round(oldQty, 3); if (newQty = 1 || ts.TotalDays <= -1) { DataRow dr = dataTable4.NewRow(); dr["changeCode"] = "EndDate"; dr["changeCodeName"] = "物料:" + strItemName + " 交期变更"; dr["changeType"] = "4"; dr["changeTypeName"] = _Hashtable["4"]; dr["OrderLineSqe"] = strOrderLineSqe; dr["OrderId"] = odC.OrderId; dr["newValue"] = time1.ToString("yyyy/MM/dd"); dr["oldValue"] = time2.ToString("yyyy/MM/dd"); dr["createName"] = UserInfo.GetUserName(); dr["createTime"] = DateTime.Now; dataTable4.Rows.InsertAt(dr, 0); } } foreach (UltraGridRow uge in ultraGrid2.Rows) { String strID = uge.GetCellValue("ID").ToString().Trim(); String strClauseName = uge.GetCellValue("ClauseName").ToString().Trim(); OrderCClause odC = (OrderCClause)_ClauseRow[strID]; String newClauseDesc = uge.GetCellValue("ClauseDesc").ToString().Trim(); odC.ClauseDesc = odC.ClauseDesc == null ? "" : odC.ClauseDesc.Trim(); if (newClauseDesc != odC.ClauseDesc) { DataRow dr = dataTable4.NewRow(); dr["changeCode"] = "ClauseDesc"; dr["changeCodeName"] = "条款:" + strClauseName + " 内容变更"; dr["changeType"] = "5"; dr["changeTypeName"] = _Hashtable["5"]; dr["OrderLineSqe"] = strID; dr["OrderId"] = odC.OrderId; dr["newValue"] = newClauseDesc; dr["oldValue"] = odC.ClauseDesc; dr["createName"] = UserInfo.GetUserName(); dr["createTime"] = DateTime.Now; dataTable4.Rows.InsertAt(dr, 0); } } if (dataTable4.Rows.Count <= 0) { MessageUtil.ShowTips("未检测任何变更"); } } catch (Exception ex) { MessageUtil.ShowTips("生成失败:" + ex); dataSet3.Clear(); } finally { ultraGrid3.Refresh(); GridHelper.RefreshAndAutoSize(ultraGrid3); this.Cursor = Cursors.Default; } } #endregion } }