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工具栏
///
/// 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()
{
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);
}
///
/// 查询
///
///
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()
{
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("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 = 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
}
}