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.Entity.configureEntity;
namespace Pur.require_plan
{
public partial class FrmPurInstockRequireChangePop : FrmPmsBase
{
public String strTips = "0";
public String strInvId = "";//目标库存记录
public String strpurLineId = "";//目标采购计划
public double dbGdQty = 0;//挂单数量
public string strGtype = "3";
public FrmPurInstockRequireChangePop()
{
InitializeComponent();
}
public FrmPurInstockRequireChangePop(OpeBase Ob,String invId,String purLineId,double gdQty,string type)
{
InitializeComponent();
this.strInvId = invId;
this.strpurLineId = purLineId;
this.dbGdQty = gdQty;
this.ob = Ob;
this.strGtype = type;
if (strGtype == "4")
{
this.Text = "利库挂单确认";
}
dbGdNum_all.Text = gdQty.ToString();
}
private void FrmPurInstockRequireChangePop_Load(object sender, EventArgs e)
{
//设置
GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], new string[] { "createQty", "createQtyWeight", "CHK" });
GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0], new string[] { "createQty", "CHK" });
//初始化查询
doQuery();
}
private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
{
switch (e.Tool.Key)
{
case "doQuery": // 刷新
doQuery();
break;
case "doSure": // 确定
doSure();
break;
}
}
///
/// 确定
///
private void doSure()
{
ArrayList list = new ArrayList();//pos
ArrayList list1 = new ArrayList();
double sumInvQty = 0;
//验证数据--验证编制量是否和挂单量相等
foreach (UltraGridRow row in ultraGrid1.Rows)
{
if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
{
if (row.GetCellValue("itemUom").ToString().Trim() == "基吨")
{
double invQty_sig = 0;
double.TryParse(row.GetCellValue("createQtyWeight").ToString().Trim(), out invQty_sig);
if (invQty_sig > 0)
{
sumInvQty = sumInvQty + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero);
PurCkStoragePosEntity pos = new PurCkStoragePosEntity();
String strInvPosId = row.GetCellValue("invPosId").ToString().Trim();
if (String.IsNullOrEmpty(strInvPosId))
{
MessageUtil.ShowTips("库存记录行号为空");
return;
}
pos.InvPosId = strInvPosId;
pos.InvQty = invQty_sig;
list.Add(pos);
}
}
else
{
double invQty_sig = 0;
double.TryParse(row.GetCellValue("createQty").ToString().Trim(), out invQty_sig);
if (invQty_sig > 0)
{
sumInvQty = sumInvQty + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero);
PurCkStoragePosEntity pos = new PurCkStoragePosEntity();
String strInvPosId = row.GetCellValue("invPosId").ToString().Trim();
if (String.IsNullOrEmpty(strInvPosId))
{
MessageUtil.ShowTips("库存记录行号为空");
return;
}
pos.InvPosId = strInvPosId;
pos.InvQty = invQty_sig;
list.Add(pos);
}
}
}
}
if (sumInvQty != dbGdQty)
{
MessageUtil.ShowTips("挂单量为:" + dbGdQty + ",选择的挂单储位总量需和挂单量相等!");
return;
}
double sumInvQty1 = 0;
foreach (UltraGridRow row in ultraGrid2.Rows)
{
if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
{
double invQty_sig = 0;
double.TryParse(row.GetCellValue("createQty").ToString().Trim(), out invQty_sig);
if (invQty_sig > 0)
{
sumInvQty1 = sumInvQty1 + Math.Round(invQty_sig, 4, MidpointRounding.AwayFromZero);
RequireReceive rec = new RequireReceive();
rec.Id = row.GetCellValue("id").ToString().Trim();
rec.Qty = invQty_sig;
list1.Add(rec);
}
}
}
if (sumInvQty1 > dbGdQty)
{
MessageUtil.ShowTips("单位所属挂单总量不能大于挂单量为:" + dbGdQty + "!");
return;
}
//确定提交
RequireReleaseInstockqty release = new RequireReleaseInstockqty();
release.InvId = strInvId;
release.ReleaseType = strGtype;
release.PurLineId = strpurLineId;
release.CreateName = UserInfo.GetUserName();
release.CreateUserId = UserInfo.GetUserID();
release.CreateTime = DateTime.Now;
release.ReleaseQty = dbGdQty;
if (MessageUtil.ShowYesNoAndQuestion("确定进行挂单操作?") != DialogResult.Yes)
{
return;
}
CoreResult crt = this.execute("com.hnshituo.pur.requireplan.service.RequireReleaseInstockqtyService", "doGuadan", new object[] { release, list, list1 });
if (crt.Resultcode == 0)
{
MessageUtil.ShowTips("操作成功");
strTips = "1";
this.Close();
}
else
{
MessageUtil.ShowTips("操作失败:"+crt.Resultmsg);
}
}
///
/// 查询
///
private void doQuery()
{
storage.Clear();
requireD.Clear();
//查询储位
PurCkStoragePosEntity pos = new PurCkStoragePosEntity();
pos.InvId = strInvId;
DataTable dt = this.execute("com.hnshituo.pur.ck.service.CkStoragePosService", "getCkStoragePos", new object[] { pos });
GridHelper.CopyDataToDatatable(dt, dataTable1, true);
GridHelper.RefreshAndAutoSize(ultraGrid1);
double canOutNum = dbGdQty;
double tempCanUseQty = dbGdQty;
double sunQty=0;
foreach (UltraGridRow row in ultraGrid1.Rows)
{
if (row.GetCellValue("itemUom").ToString() == "基吨")
{
//row.Cells["itemUom"].Value = "吨";
double needQty = 0;
double dbItemUomConefficient = 1;
double.TryParse(row.GetCellValue("INVQTYWEIGHT").ToString(), out needQty);//库存需出库量
double.TryParse(row.GetCellValue("itemUomConefficient").ToString(), out dbItemUomConefficient);
if (tempCanUseQty > 0 && needQty > 0)
{
if (needQty >= tempCanUseQty)
{
row.Cells["createQtyWeight"].Value = tempCanUseQty;//库存出库量
sunQty = sunQty + tempCanUseQty;
row.Cells["createQty"].Value = Math.Round(tempCanUseQty * dbItemUomConefficient, 4,MidpointRounding.AwayFromZero);//采购出库量
tempCanUseQty = 0;
row.Cells["CHK"].Value = true;
}
else
{
row.Cells["createQtyWeight"].Value = needQty;//库存出库量
sunQty = sunQty + needQty;
row.Cells["createQty"].Value = Math.Round(needQty * dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量
tempCanUseQty = tempCanUseQty - needQty;
row.Cells["CHK"].Value = true;
}
}
}
else
{
double needQty = 0;
double dbItemUomConefficient = 1;
double.TryParse(row.GetCellValue("invqty").ToString(), out needQty);//采购需出库量
double.TryParse(row.GetCellValue("itemUomConefficient").ToString(), out dbItemUomConefficient);
if (tempCanUseQty > 0 && needQty > 0)
{
if (needQty >= tempCanUseQty)
{
row.Cells["createQty"].Value = tempCanUseQty;
sunQty = sunQty + tempCanUseQty;
row.Cells["createQtyWeight"].Value = Math.Round(tempCanUseQty / dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量
tempCanUseQty = 0;
row.Cells["CHK"].Value = true;
}
else
{
row.Cells["createQty"].Value = needQty;
sunQty = sunQty + needQty;
row.Cells["createQtyWeight"].Value = Math.Round(needQty / dbItemUomConefficient, 4, MidpointRounding.AwayFromZero);//采购出库量
tempCanUseQty = tempCanUseQty - needQty;
row.Cells["CHK"].Value = true;
}
}
}
}
txt_usedQty.Text = sunQty + "";
//查询需求单位
if (String.IsNullOrEmpty(strpurLineId))
{
return;
}
Dictionary ReqPnew = new Dictionary();
ReqPnew["purLineId"] = strpurLineId;
ReqPnew["gType"] = strGtype;
DataTable dt2 = this.execute("com.hnshituo.pur.requireplan.service.RequireReceiveService", "get_canUse", new object[] { ReqPnew });
foreach (DataRow row in dt2.Rows)
{
row["itemDescE"] = Convert.ToDateTime(row["itemDescE"]).ToString("yyyy/MM");
}
GridHelper.CopyDataToDatatable(dt2, dataTable2, true);
GridHelper.RefreshAndAutoSize(ultraGrid2);
double canOutNum1 = dbGdQty;
double tempCanUseQty1 = dbGdQty;
double useQty1 = 0;
foreach (UltraGridRow row in ultraGrid2.Rows)
{
double needQty1 = 0;
double.TryParse(row.GetCellValue("QTYPUR").ToString(), out needQty1);//需求量
if (tempCanUseQty1 > 0 && needQty1 > 0)
{
if (needQty1 >= tempCanUseQty1)
{
row.Cells["createQty"].Value = Math.Round(tempCanUseQty1, 4, MidpointRounding.AwayFromZero);//编制量
useQty1 = useQty1 + Math.Round(tempCanUseQty1, 4, MidpointRounding.AwayFromZero);//编制量
tempCanUseQty1 = 0;
row.Cells["CHK"].Value = true;
}
else
{
row.Cells["createQty"].Value = Math.Round(needQty1, 4, MidpointRounding.AwayFromZero);//采购出库量
useQty1 = useQty1 + Math.Round(needQty1, 4, MidpointRounding.AwayFromZero);
tempCanUseQty1 = tempCanUseQty1 - needQty1;
row.Cells["CHK"].Value = true;
}
}
}
txt_req_qty.Text = useQty1 + "";
}
private void ultraGrid1_CellChange(object sender, CellEventArgs e)
{
object o = e.Cell.Value;
ultraGrid1.UpdateData();
double canUse = 0;
double canUseUom = 0;
double canUseWeight = 0;
double conf = 0;
double.TryParse(e.Cell.Row.GetCellValue("invqty").ToString(), out canUseUom);
double.TryParse(e.Cell.Row.GetCellValue("INVQTYWEIGHT").ToString(), out canUseWeight);
canUse = dbGdQty;
double.TryParse(e.Cell.Row.GetCellValue("itemUomConefficient").ToString(), out conf);
if (e.Cell.Column.Key == "createQty")//采购数量
{
double OutNum = 0;//出库量
double.TryParse(e.Cell.Row.GetCellValue("createQty").ToString(), out OutNum);
if (OutNum > canUseUom)
{
MessageUtil.ShowTips("已大于在库量(采购单位):" + canUseUom + "");
e.Cell.Value = o;
return;
}
if (e.Cell.Row.GetCellValue("itemUom").ToString() == "基吨")
{
e.Cell.Row.Cells["createQtyWeight"].Value = Math.Round(OutNum / conf, 4, MidpointRounding.AwayFromZero);
}
else
{
e.Cell.Row.Cells["createQtyWeight"].Value = Math.Round(conf * OutNum, 4, MidpointRounding.AwayFromZero);
}
double b_OutNum_q = 0;//出库总量
for (int i = 0; i < ultraGrid1.Rows.Count; i++)
{
if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true)
{
double b_OutNum = 0;//出库量
if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨")
{
double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum);
}
else
{
double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum);
}
b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero);
}
}
if (b_OutNum_q > canUse)
{
MessageUtil.ShowTips("已大于挂单量:" + canUse + "");
e.Cell.Value = o;
return;
}
txt_usedQty.Text = b_OutNum_q.ToString();
}
else if (e.Cell.Column.Key == "createQtyWeight")//库存数量
{
double OutNum1 = 0;//库存单位出库量
double.TryParse(e.Cell.Row.GetCellValue("createQtyWeight").ToString(), out OutNum1);
if (OutNum1 > canUseWeight)
{
MessageUtil.ShowTips("已大于在库量(库存单位):" + canUseWeight + "");
e.Cell.Value = o;
return;
}
if (e.Cell.Row.GetCellValue("itemUom").ToString() == "基吨")
{
e.Cell.Row.Cells["createQty"].Value = Math.Round(OutNum1 * conf, 4, MidpointRounding.AwayFromZero);
}
else
{
e.Cell.Row.Cells["createQty"].Value = Math.Round(OutNum1 / conf, 4, MidpointRounding.AwayFromZero);
}
double b_OutNum_q = 0;//出库总量
for (int i = 0; i < ultraGrid1.Rows.Count; i++)
{
if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true)
{
double b_OutNum = 0;//出库量
if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨")
{
double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum);
}
else
{
double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum);
}
b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero);
}
}
if (b_OutNum_q > canUse)
{
MessageUtil.ShowTips("已大于挂单量:" + canUse + "");
e.Cell.Value = o;
return;
}
txt_usedQty.Text = b_OutNum_q.ToString();
}
else if (e.Cell.Column.Key == "CHK")
{
double b_OutNum_q = 0;//出库总量
for (int i = 0; i < ultraGrid1.Rows.Count; i++)
{
if (Convert.ToBoolean(ultraGrid1.Rows[i].GetCellValue("CHK")) == true)
{
double b_OutNum = 0;//出库量
if (ultraGrid1.Rows[i].GetCellValue("itemUom").ToString() == "基吨")
{
double.TryParse(ultraGrid1.Rows[i].Cells["createQtyWeight"].Value.ToString(), out b_OutNum);
}
else
{
double.TryParse(ultraGrid1.Rows[i].Cells["createQty"].Value.ToString(), out b_OutNum);
}
b_OutNum_q += Math.Round(b_OutNum, 4, MidpointRounding.AwayFromZero);
}
}
if (b_OutNum_q > canUse)
{
MessageUtil.ShowTips("已大于挂单量:" + canUse + "");
e.Cell.Value = o;
return;
}
txt_usedQty.Text = b_OutNum_q.ToString();
}
ultraGrid1.UpdateData();
}
private void ultraGrid2_CellChange(object sender, CellEventArgs e)
{
if (e.Cell.Column.Key == "createQty" || e.Cell.Column.Key=="CHK")//采购数量
{
double useQty_temp = 0;
ultraGrid2.UpdateData();
foreach (UltraGridRow row in ultraGrid2.Rows)
{
if (Convert.ToBoolean(row.GetCellValue("CHK")) == true)
{
double useQty_sig = 0;
double.TryParse(row.Cells["createQty"].Value.ToString(), out useQty_sig);
useQty_temp = useQty_temp + Math.Round(useQty_sig, 4, MidpointRounding.AwayFromZero);
}
}
txt_req_qty.Text = useQty_temp + "";
}
}
}
}