| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537 |
- 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 FrmChangeOrder : FrmPmsBase
- {
- Hashtable _Hashtable=new Hashtable();
- Hashtable _OrderRow = new Hashtable();
- Hashtable _ClauseRow = new Hashtable();
- ArrayList listDeleteRow = new ArrayList();
- public String strTips = "0";
- String strOrderId = "";
- public FrmChangeOrder()
- {
- InitializeComponent();
- }
- public FrmChangeOrder(OpeBase Ob, String orderId)
- {
- InitializeComponent();
- this.ob = Ob;
- this.strOrderId = orderId;
- }
- private void FrmChangeOrder_Load(object sender, EventArgs e)
- {
- this.Text = "合同【" + strOrderId + "】变更申请";
- PublicPur.InitCellEdit(new UltraGrid[] { ultraGrid1 }, new string[] { "CHK","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);
- QuerySUPP_NAME();
- ultraSUPP_NAME.Text = FrmOrderMNew.suppName;
- }
- //查询供应商
- private void QuerySUPP_NAME()
- {
- try
- {
- ultraSUPP_NAME.Items.Clear();
- DataTable dt = PublicServer.GetData("com.hnshituo.pur.balance.service.impl.FrmBalanceBillManage.QuerySuppName",
- new Object[] { "1" }, ob);
- ultraSUPP_NAME.DataSource = dt;
- ultraSUPP_NAME.DisplayMember = "SUPP_NAME";
- ultraSUPP_NAME.ValueMember = "SUPP_CODE";
- }
- catch (Exception e)
- {
- MessageUtil.ShowWarning(e.Message);
- return;
- }
- }
- #region toolbar工具栏
- /// <summary>
- /// toolbar
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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;
- }
- }
- /// <summary>
- /// 生成变更明细
- /// </summary>
- private void doCreateDetail()
- {
- createChangeD();
- }
- /// <summary>
- /// 要拆分的合同行
- /// </summary>
- private void doDelete()
- {
- ultraGrid1.UpdateData();
- if (ultraTabControl1.SelectedTab!= ultraTabControl1.Tabs[0])
- {
- MessageUtil.ShowTips("只允许作废合同行,合同条款不允许作废");
- return;
- }
- if (ultraGrid1.ActiveRow == null)
- {
- MessageUtil.ShowTips("请选择待删除的合同行");
- return;
- }
- ArrayList list = new ArrayList();
- for (int i = ultraGrid1.Rows.Count - 1; i >= 0; i--)
- {
- UltraGridRow uRow = ultraGrid1.Rows[i];
- //String OrderId = uRow.Cells["OrderId"].Text.ToString().Trim();
- if (Convert.ToBoolean(uRow.Cells["CHK"].Text) == true)
- {
- //String strOrderLineSqe = ultraGrid1.ActiveRow.GetCellValue("OrderLineSqe").ToString().Trim();
- String strOrderLineSqe = uRow.Cells["OrderLineSqe"].Text.ToString().Trim();
- //String strOrderId= uRow.Cells["OrderId"].Text.ToString().Trim();
- listDeleteRow.Add(strOrderLineSqe);
- // ultraGrid1.ActiveRow.Delete(true);
- uRow.Delete(true);
- // list.Add(strOrderLineSqe);
- //ultraGrid1.UpdateData();
- }
- }
- // DataTable dt = PublicServer.GetData("com.hnshituo.pur.balance.service.impl.FrmBalanceBillManage.UpdateOrder",
- //new Object[] { list }, ob);
- }
- /// <summary>
- /// 查询
- /// </summary>
- /// <param name="strOrderId"></param>
- 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<DataTable>("com.hnshituo.pur.order.service.OrderCService", "doQueryOrderC", new object[] { odC, 0, 0 });
- List<OrderC> listOc = this.execute<List<OrderC>>("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<DataTable>("com.hnshituo.pur.order.service.OrderCClauseService", "find_Clause", new object[] { clause });
- List<OrderCClause> listCs = this.execute<List<OrderCClause>>("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);
- }
- }
- }
- /// <summary>
- /// 确定变更
- /// </summary>
- private void doSure()
- {
- string suppName = ultraSUPP_NAME.Text.ToString();
- string suppCode = "";
- DataTable dt1 = PublicServer.GetData("com.hnshituo.pur.balance.service.impl.FrmBalanceBillManage.QuerySuppCode",
- new Object[] { ultraSUPP_NAME.Text.ToString() }, ob);
- if (dt1.Rows.Count > 0)
- {
- suppCode = dt1.Rows[0]["SUPP_CODE"].ToString();
- }
- if (ultraSUPP_NAME.Text != FrmOrderMNew.suppName)
- {
- if (MessageUtil.ShowYesNoAndQuestion("选择供应商与原供应商不同是否确定?") == DialogResult.No)
- {
- return;
- }
- suppName = ultraSUPP_NAME.Text.ToString();
- DataTable dt = PublicServer.GetData("com.hnshituo.pur.balance.service.impl.FrmBalanceBillManage.QuerySuppCode",
- new Object[] { ultraSUPP_NAME.Text.ToString() }, ob);
- if(dt.Rows.Count>0)
- {
- suppCode = dt.Rows[0]["SUPP_CODE"].ToString();
- }
- }
- //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<CoreResult>("com.hnshituo.pur.order.service.OrderMService", "orderChange", new object[] { listCg, om, suppName, suppCode });
- 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 <noticedQty)
- {
- MessageUtil.ShowTips( "物料:"+strItemName+"已经通知发货:" + noticedQty+",导致最大只能减少到:" + noticedQty );
- row.Cells["Qty"].Value = odC.Qty;
- row.Activate();
- return;
- }
- //新增
- DataRow dr = dataTable4.NewRow();
- dr["changeCode"] = "Qty";
- dr["changeCodeName"] = "物料:" + strItemName + " 合同数量变更";
- dr["changeType"] = "3";
- dr["changeTypeName"] = _Hashtable["3"];
- dr["OrderLineSqe"] = strOrderLineSqe;
- dr["OrderId"] = odC.OrderId;
- dr["newValue"] = newQty;
- dr["oldValue"] = odC.Qty;
- dr["createName"] = UserInfo.GetUserName();
- dr["createTime"] = DateTime.Now;
- dataTable4.Rows.InsertAt(dr, 0);
- }
- //处理价格
- double newPrice = 0;
- Double.TryParse(row.GetCellValue("PriceWithTax").ToString().Trim(), out newPrice);
- if (Math.Round((double)odC.PriceWithTax, 2) != Math.Round(newPrice, 2))
- {
- DataRow dr = dataTable4.NewRow();
- dr["changeCode"] = "PriceWithTax";
- dr["changeCodeName"] = "物料:" + strItemName + " 含税单价变更";
- dr["changeType"] = "1";
- dr["changeTypeName"] = _Hashtable["1"];
- dr["OrderLineSqe"] = strOrderLineSqe;
- dr["OrderId"] = odC.OrderId;
- dr["newValue"] = newPrice;
- dr["oldValue"] = odC.PriceWithTax;
- dr["createName"] = UserInfo.GetUserName();
- dr["createTime"] = DateTime.Now;
- dataTable4.Rows.InsertAt(dr, 0);
- }
- //处理税率
- String newRateName = row.GetCellValue("TaxRateName").ToString().Trim();
- if (newRateName != odC.TaxRateName)
- {
- if (!publicPms.IsPercentage(newRateName))
- {
- MessageUtil.ShowTips("请输入有效税率");
- return;
- }
- DataRow dr = dataTable4.NewRow();
- dr["changeCode"] = "TaxRateName";
- dr["changeCodeName"] = "物料:" + strItemName + " 税率变更";
- dr["changeType"] = "2";
- dr["changeTypeName"] = _Hashtable["2"];
- dr["OrderLineSqe"] = strOrderLineSqe;
- dr["OrderId"] = odC.OrderId;
- dr["newValue"] = newRateName;
- dr["oldValue"] = odC.TaxRateName;
- dr["createName"] = UserInfo.GetUserName();
- dr["createTime"] = DateTime.Now;
- dataTable4.Rows.InsertAt(dr, 0);
- }
- //处理税备注
- String newRemark = row.GetCellValue("remark").ToString().Trim();
- odC.Remark=odC.Remark==null?"":odC.Remark.Trim();
- if (newRemark != odC.Remark)
- {
- DataRow dr = dataTable4.NewRow();
- dr["changeCode"] = "remark";
- dr["changeCodeName"] = "物料:" + strItemName + " 合同行备注修改";
- dr["changeType"] = "6";
- dr["changeTypeName"] = _Hashtable["6"];
- dr["OrderLineSqe"] = strOrderLineSqe;
- dr["OrderId"] = odC.OrderId;
- dr["newValue"] = newRemark;
- dr["oldValue"] = odC.Remark;
- dr["createName"] = UserInfo.GetUserName();
- dr["createTime"] = DateTime.Now;
- dataTable4.Rows.InsertAt(dr, 0);
- }
- //交期处理
- if (String.IsNullOrEmpty(row.GetCellValue("EndDate") == null ? "" : row.GetCellValue("EndDate").ToString()))
- {
- MessageUtil.ShowTips("物料:" + strItemName + "要求的交期不能为空!");
- return;
- }
- DateTime time1 = DateTime.Parse(Convert.ToDateTime(row.GetCellValue("EndDate")).ToString("yyyy/MM/dd"));
- DateTime time2 = DateTime.Parse(((DateTime)odC.EndDate).ToString("yyyy/MM/dd"));
- TimeSpan ts = time1.Subtract(time2);
- if (ts.TotalDays >= 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
- }
- }
|