using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using gregn6Lib; using SQLHelper; using DBUtility; using System.Threading; using System.IO; using Pub_Class; namespace WarM { public partial class Kf_WeighToBarCode : Form { public Kf_WeighToBarCode() { InitializeComponent(); } public frmBillQueryCondition_New frmCondition; public string ModCaption = "称重入库"; public const string ModName = "85"; public Int64 HInterID = 0; public string HBillNo = ""; public string HBillType = "1202"; public Int64 HAuxPropID = 0; public Int64 HUnitID = 0; public Int64 HWhID = 0; public bool HSPFlag = false; public Int64 HSPID = 0; public Int64 HSourceInterID = 0; public Int64 HSourceEntryID = 0; public string HSourceBillNo = ""; public string HSourceBillType = ""; public Int64 ProcessExchangeInterID = 0; public Int64 HSupID = 0; public double HSourceQty = 0; public double HMaterWeight = 0; //物料克重 public string HMaker = DBUtility.ClsPub.CurUserName; public Int64 HStockOrgID = DBUtility.ClsPub.HOrgID; public DateTime HDate = DateTime.Today; public long PrintQty = 0; //允许条码打印次数 public string PrintQtyCtl = ""; //条码打印次数控制 public string UpdatePrintQtyCtl = ""; //条码打印次数更新 public string sBarCodeItemID = ""; //条码自增列 public DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl(); public DBUtility.ClsPub.Enum_BillStatus BillStatus; SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); #region //固定代码 //清空界面 public void Sub_ClearBill() { cmbHBarCodeType.Items.Clear(); cmbHBarCodeType.Items.Add("唯一条码"); DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp); txtHBarCode.Text = ""; grdMain.DataSource = null; grdSub.DataSource = null; chkHDYFlag.Checked = true; } //窗体加载 private void Kf_WeighToBarCode_Load(object sender, EventArgs e) { frmCondition = new frmBillQueryCondition_New(); this.Text = ModCaption; Sub_GetSystemParameter(); } private void initGrid() { DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name); DBUtility.Xt_BaseBillFun.initGridList(grdSub, this.Name + "grdSub"); } //获取系统参数信息 private void Sub_GetSystemParameter() { //获取系统参数 ClsXt_SystemParameter oSystemParameter = new ClsXt_SystemParameter(); if (oSystemParameter.ShowBill(ref DBUtility.ClsPub.sExeReturnInfo) == false) { MessageBox.Show("获取系统参数失败!原因:" + DBUtility.ClsPub.sExeReturnInfo, "提示"); return; } else { PrintQty = oSystemParameter.omodel.BarCode_PrintQty; PrintQtyCtl = oSystemParameter.omodel.BarCode_PrintQtyCtl; UpdatePrintQtyCtl = oSystemParameter.omodel.BarCode_UpdatePrintQtyCtl; } } private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; initGrid(); this.Sub_ClearBill();//清空界面 //获取生产入库单单据ID、单据号 DataSet Ds = oCn.RunProcReturn("exec h_p_KF_GetWeighSource_TempList '" + HMaker + "'," + HStockOrgID.ToString(), "h_p_KF_GetWeighSource_TempList"); if (Ds == null || Ds.Tables[0].Rows.Count == 0) { HInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref DBUtility.ClsPub.sExeReturnInfo); //得到新单据ID HBillNo = DBUtility.ClsPub.CreateBillCode_Prod(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); //得到新单据号 } else if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HBack"]) == 1) { HInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref DBUtility.ClsPub.sExeReturnInfo); //得到新单据ID HBillNo = DBUtility.ClsPub.CreateBillCode_Prod(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true); //得到新单据号 } else { HInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"]); HBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillNo"]); } Source_Display(); BarCode_Display(); if (grdSub.Rows.Count > 0) { grdSub.Rows[0].Selected = true; SourceBill(); txtHQty.Focus(); } else { txtHBarCode.Focus(); } } private void grdMain_Paint(object sender, PaintEventArgs e) { GraphicsGrid(); } private void GraphicsGrid() { DBUtility.Xt_BaseBillFun.GraphicsGrid(grdMain); } private void grdSub_Paint(object sender, PaintEventArgs e) { GraphicsGridSub(); } private void GraphicsGridSub() { DBUtility.Xt_BaseBillFun.GraphicsGrid(grdSub); } private Int32 Fun_GetCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdMain); } private Int32 Fun_GetSubCol(string sCol) { return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdSub); } //保存列宽 private void bclk_Click(object sender, EventArgs e) { DBUtility.Xt_BaseBillFun.SaveGrid(grdMain, this.Name); DBUtility.Xt_BaseBillFun.SaveGrid(grdSub, this.Name + "grdSub"); } //默认列宽 private void mrlk_Click(object sender, EventArgs e) { DBUtility.Xt_BaseBillFun.DefaultGridView(grdMain, this.Name); DBUtility.Xt_BaseBillFun.DefaultGridView(grdSub, this.Name + "grdSub"); } #endregion #region //刷新 private void sx_Click_1(object sender, EventArgs e) { timer1.Enabled = true; } #endregion #region //打印 GridppReport Report; private void dy_Click_1(object sender, EventArgs e) { //打印前判断条码是否超过允许可打印次数 if (ReportPrintBegin()) { return; } //选择打印模板 BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp(); oFrm.sBillName = ModName; oFrm.sBillModel = ModCaption; oFrm.ShowDialog(); if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK) { Sub_SetReport(oFrm.sOpenTmp); Report.Print(false); Thread.Sleep(1000); } } //打印前判断条码是否超过允许可打印次数 private bool ReportPrintBegin() { DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl(); string sHRemark = ""; sBarCodeItemID = ""; for (int i = 0; i < grdMain.SelectedRows.Count; i++) { sBarCodeItemID = sBarCodeItemID + "," + DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[Fun_GetCol("HItemID")].Value).ToString(); } sBarCodeItemID = sBarCodeItemID.Remove(0, 1); if (PrintQtyCtl == "Y") { if (oBar.Set_CheckPrintQty(sBarCodeItemID, PrintQty, ref sHRemark)) { MessageBox.Show(sHRemark); return true; } return false; } else { return false; } } private void Sub_SetReport(string sOpenTmp) { //判断行数 for (int i = 0; i < grdMain.Rows.Count; i++) { grdMain.Rows[i].Cells[0].Value = ""; } for (int i = 0; i < grdMain.SelectedRows.Count; i++) { grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[0].Value = "*"; } // Report = new GridppReport(); Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf"); //here . Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord); Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable); Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd); } //填入单据表头信息 private void ReportBeforePostRecord()//your report?kao { try { //Report.FieldByName("物料代码").AsString = grdMain.Rows[CurRows].Cells[Fun_GetCol("物料代码")].Value.ToString(); //Report.FieldByName("物料名称").AsString = grdMain.Rows[CurRows].Cells[Fun_GetCol("物料名称")].Value.ToString(); //Report.FieldByName("规格型号").AsString = grdMain.Rows[CurRows].Cells[Fun_GetCol("规格型号")].Value.ToString(); } catch (Exception e) { MessageBox.Show("打印失败!表头:" + e.Message); } } //填入单据表体信息 private void ReportFetchRecordByDataTable() { try { DataTable ds = new DataTable(); BLL.Utility.FillRecordToReport_Sel(Report, grdMain, ds, Fun_GetCol("选择")); } catch (Exception e) { MessageBox.Show("打印失败!表体:" + e.Message); } } //打印结束后回填条码打印次数 private void ReportPrintEnd() { DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl(); if (UpdatePrintQtyCtl == "Y") { oBar.Set_UpdatePrintQty(sBarCodeItemID); } } #endregion #region //换班 private void hb_Click(object sender, EventArgs e) { this.Sub_SaveBill(); timer1.Enabled = true; } private bool Sub_SaveBill() { //称重记录列表是否有记录判断 bool b = false; for (int i = 0; i < grdMain.RowCount; i++) { b = true; break; } if (b == false) { MessageBox.Show("当前称重记录列表无数据,不允许换班生成单据!", "提示"); return false; } //判断会计期是否合理 string s = ""; int sYear = 0; int sPeriod = 0; if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false) { MessageBox.Show(s, "提示"); return false; } try { oCn.BeginTran(); //生成出入库单据 //插入子表 DataSet ds = oCn.RunProcReturn("EXEC h_p_Kf_ProductInBillSub_Insert_New " + HInterID.ToString() + ",'" + HBillNo + "','" + HSourceBillType + "'", "h_p_Kf_ProductInBillSub_Insert_New"); if (ds == null || ds.Tables[0].Rows.Count == 0) { } else if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0][0]) != "OK") { oCn.RollBack(); MessageBox.Show("生成入库单失败,当前称重记录列表无数据,不允许换班生成单据!", "提示"); return false; } //插入主表 oCn.RunProc("Insert Into Kf_ICStockBillMain " + "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMainSourceBillType" + ",HYear,HPeriod,HRemark,HMaker,HMakeDate" + ",HSupID,HWHID,HSCWHID,HEmpID,HManagerID,HSecManagerID" + ",HKeeperID,HDeptID,HExplanation,HInnerBillNo,HRedBlueFlag" + ",HSTOCKORGID,HOWNERID" + ") Values (" + "'" + HBillType + "','" + HBillType + "'," + HInterID.ToString() + ",'" + HBillNo + "',convert(varchar(10),getdate(),120),''" + ", " + sYear.ToString() + "," + sPeriod.ToString() + ",'" + txtHRemark.Text + "','" + HMaker + "',getdate()" + ", 0,0,0,0,0,0" + ", 0," + txtHDeptName.Tag.ToString() + ",'','',0" + ", " + HStockOrgID.ToString() + "," + HStockOrgID.ToString() + ") "); //更新关联数量 oCn.RunProc("exec h_p_Sc_UpDateRelation_ICMOToProductIn_Add " + HInterID.ToString()); //回填已生单状态 oCn.RunProc("Update KF_WeighSource_Temp set HRelationInterID=1 where HInterID= " + HInterID.ToString()); MessageBox.Show("生成生产入库单:" + HBillNo + " 成功!", "提示"); oCn.Commit(); return true; } catch (Exception e) { oCn.RollBack(); MessageBox.Show("生成生产入库单失败!" + e.Message); return false; } } #endregion #region //退出 private void tc_Click(object sender, EventArgs e) { this.Close(); } #endregion #region //扫描条码 private void txtHBarCode_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { if (!AddSource()) { txtHBarCode.Focus(); txtHBarCode.SelectAll(); return; } Source_Display(); grdSub.Rows[0].Selected = true; DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp); SourceBill(); txtHBarCode.Text = ""; txtHQty.Focus(); } } private void cmdOK_Click(object sender, EventArgs e) { if (!AddSource()) { txtHBarCode.Focus(); txtHBarCode.SelectAll(); return; } Source_Display(); grdSub.Rows[0].Selected = true; DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp); SourceBill(); txtHBarCode.Text = ""; txtHQty.Focus(); } private bool AddSource() { //将扫描单据号写入临时表 DataSet ds = oCn.RunProcReturn("exec h_p_Kf_AddSource_WeighToBarCode " + HInterID.ToString() + ",'" + HBillNo + "','" + txtHBarCode.Text.Trim() + "','" + HMaker + "'," + HStockOrgID.ToString(), "h_p_Kf_AddSource_WeighToBarCode"); if (ds == null || ds.Tables[0].Rows.Count == 0) { MessageBox.Show("扫描条码写入临时表发生错误!", "提示"); return false; } else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 1) { MessageBox.Show(DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]), "提示"); return false; } else { return true; } } #endregion #region //选单 private void cmdSourceBillNo_Click(object sender, EventArgs e) { //初始化右边表头信息 cmbHBarCodeType.Items.Clear(); cmbHBarCodeType.Items.Add("唯一条码"); DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp); if (grdSub.CurrentRow == null) { MessageBox.Show("请在左边单据列表中选择一行单据!", "提示"); return; } else if (grdSub.SelectedRows.Count != 1) { MessageBox.Show("不允许同时选择多行单据,请重新选择单据!"); return; } else { SourceBill(); txtHQty.Focus(); } } #endregion #region //保存 private void cmdSave_Click(object sender, EventArgs e) { if (!Sub_AllowSave()) { return; } SaveBarCode(); BarCode_Display(); grdMain.Rows[0].Selected = true; sBarCodeItemID = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[0].Index].Cells[Fun_GetCol("HItemID")].Value).ToString(); //自动打印 if (chkHDYFlag.Checked == true) { //打印条码 Sub_SetReport("物料条码"); Report.Print(false); Thread.Sleep(1000); } else { //选择打印模板 BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp(); oFrm.sBillName = ModName; oFrm.sBillModel = ModCaption; oFrm.ShowDialog(); if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK) { Sub_SetReport(oFrm.sOpenTmp); Report.Print(false); Thread.Sleep(1000); } } txtHQty.Text = ""; txtHWeightQyt.Text = ""; txtHKDQty.Text = ""; txtHBarcodeNo.Text = ""; txtHRemark.Text = ""; txtHRemark.Tag = 0; txtHQty.Focus(); } //条码生成前判断 private bool Sub_AllowSave() { if (HInterID==0 || HBillNo=="") { MessageBox.Show("获取条码对应单据ID或单据号失败,请重新刷新界面!", "提示"); return false; } else if (DBUtility.ClsPub.isDoule(txtHQty.Text) == 0) { MessageBox.Show("请输入正确米数!", "提示"); return false; } else if (DBUtility.ClsPub.isDoule( txtHWeightQyt.Text) == 0) { MessageBox.Show("请输入正确重量!", "提示"); return false; } else if (DBUtility.ClsPub.isDoule(txtHQty.Text)- DBUtility.ClsPub.isDoule(txtHKDQty.Text) <= 0) { MessageBox.Show("输入的扣点数不能大于米数!", "提示"); return false; } else if (DBUtility.ClsPub.isInt(txtHBarcodeNo.Text) == 0) { MessageBox.Show("请输入包号!", "提示"); return false; } else if (HWhID==0) { MessageBox.Show("物料未设置默认仓库,获取仓库信息失败,请先设置物料默认仓库!", "提示"); return false; } else if (HSPFlag==true && HSPID==0) { MessageBox.Show("物料默认仓库启用了仓位,但未设置仓位,获取仓位信息失败,请先设置物料默认仓位!", "提示"); return false; } //实际克重=重量/米数*1000,实际克重超出物料维护克重的百分之二十或不足物料维护克重的百分之八十,预警提示 double sQty = 0; //实际克重 sQty = DBUtility.ClsPub.isDoule(txtHWeightQyt.Text) / DBUtility.ClsPub.isDoule(txtHQty.Text) * 1000; if (sQty > HMaterWeight * 1.2 || sQty < HMaterWeight * 0.8) { if (MessageBox.Show("物料维护克重为:"+HMaterWeight.ToString()+ ",实际克重为:" + sQty.ToString() + ",所输入实际克重超出物料维护克重的百分之二十或不足物料维护克重的百分之八十,请检查输入的数据是否正确!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { return true; } else { return false; } } return true; } //生成条码 private void SaveBarCode() { int LSHlen = 6; //流水号长度 Int64 LSH = 0; //流水号 string LSH2 = ""; //流水号转换成字符 string HMaterID = ""; //物料内码 string HBatchNo = ""; //批次 string sDate = ""; //日期 string sYear = ""; //年 string sPeriod = ""; //月 string sDay = ""; //日 string sTMNumber = ""; //条码自定义前缀 string TM = ""; //条码编号 DataSet Ds; HMaterID = DBUtility.ClsPub.isStrNull(txtHMaterNumber.Tag); HBatchNo = DBUtility.ClsPub.isStrNull(txtHBatchNo.Text); //日期获取方式 sDate = dtpHDate.Value.ToShortDateString(); sYear = DBUtility.ClsPub.isDate(sDate).Year.ToString().Substring(2, 2); sPeriod = "0" + DBUtility.ClsPub.isDate(sDate).Month.ToString(); sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2); sDay = "0" + DBUtility.ClsPub.isDate(sDate).Day.ToString(); sDay = sDay.Substring(sDay.Length - 2, 2); //================================== if (cmbHBarCodeType.Text == "唯一条码") { //条码前缀 = 组织代码 + 物料内码 + 年 + 月 + 日 sTMNumber = DBUtility.ClsPub.HOrgNumber + HMaterID + sYear + sPeriod + sDay; Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo"); //获取最大流水号 LSH = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]); LSH = LSH + 1; LSH2 = LSH.ToString(); while (LSH2.Length < LSHlen) //如果流水号小于6位数前面补0 { LSH2 = "0" + LSH2; } TM = sTMNumber + LSH2; } else if (cmbHBarCodeType.Text == "品种条码") { TM = DBUtility.ClsPub.HOrgNumber + HMaterID; } else if (cmbHBarCodeType.Text == "批次条码") { TM = DBUtility.ClsPub.HOrgNumber + HMaterID + HBatchNo; } else { MessageBox.Show("错误的条码类型,不能生成条码!"); return; } string HBarCode = ""; string HBarCodeType = ""; double HNowQty = 0; //米数 double HMaterialJQty = 0; //重量 double HMaterialMQty = 0; //扣点数 double HQty = 0; //数量 Int64 HDeptID = 0; string HRemark = ""; string HMaterName = ""; string HMaterModel = ""; string ProcessExchangeBillNo = ""; Int64 HBarcodeNo = 0; //包数 Int64 HBadReasonID = 0; //不良原因ID string HCusMaterName = ""; //客户物料名称 string HCusModel = ""; //客户规格型号 HBarCode = TM; HBarCodeType = DBUtility.ClsPub.isStrNull(cmbHBarCodeType.Text); HNowQty = DBUtility.ClsPub.isDoule(txtHQty.Text); HMaterialJQty = DBUtility.ClsPub.isDoule(txtHWeightQyt.Text); HMaterialMQty = DBUtility.ClsPub.isDoule(txtHKDQty.Text); HQty = HNowQty- HMaterialMQty; HDeptID = DBUtility.ClsPub.isLong(txtHDeptName.Tag); HRemark = DBUtility.ClsPub.isStrNull(txtHRemark.Text); HMaterName = DBUtility.ClsPub.isStrNull(txtHMaterName.Text); HMaterModel = DBUtility.ClsPub.isStrNull(txtHMaterModel.Text); ProcessExchangeBillNo = DBUtility.ClsPub.isStrNull(txtHBillNo.Text); HBarcodeNo = DBUtility.ClsPub.isLong(txtHBarcodeNo.Text); HBadReasonID = DBUtility.ClsPub.isLong(txtHRemark.Tag); HCusMaterName = DBUtility.ClsPub.isStrNull(txtHCusMaterName.Text); HCusModel = DBUtility.ClsPub.isStrNull(txtHCusModel.Text); try { oCn.BeginTran(); //写入条码档案 (客户物料名称HCusMaterName存入HMaterialModel字段,客户规格型号HCusModel存入HCusModel字段,不良原因ID存入HCustomQty1字段) oCn.RunProc("Insert into Gy_BarCodeBill " + "(HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" + ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" + ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " + ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " + ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate,HMaterialJQty,HMaterialMQty,HNowQty " + ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID,HGiveAwayFlag " + ",HOrderInterID,HOrderEntryID,HOrderBillNo,HCustomQty1,HMaterialModel,HCusModel " + ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo,HLogo " + ") Values (" + "'" + HBarCode + "','" + HBarCodeType + "'," + HMaterID.ToString() + "," + HUnitID.ToString() + "," + HQty.ToString() + ",'" + HBatchNo + "'," + HSupID.ToString() + ",0,'" + HMaker + "',getdate(),0," + HQty.ToString() + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "',''" + ", 1," + HBarcodeNo.ToString() + "," + HDeptID.ToString() + "," + HWhID.ToString() + "," + HSPID.ToString() + ",'" + HRemark + "'" + ", 0,'',getdate(),'','" + sDate + "'," + HMaterialJQty.ToString() + "," + HMaterialMQty.ToString() + "," + HNowQty.ToString() + ", " + HStockOrgID.ToString() + "," + HStockOrgID.ToString() + ",''," + HInterID.ToString() + ",0" + ", " + ProcessExchangeInterID.ToString() + ",0,'" + ProcessExchangeBillNo + "'," + HBadReasonID.ToString() + ",'" + HCusMaterName + "','" + HCusModel + "'" + ",'" + HMaterName + "','" + HMaterModel + "',''," + HAuxPropID.ToString() + ",'','','1')"); //回填最大流水号 oCn.RunProc("exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "',1 "); //回填源单临时表HInterID oCn.RunProc("update a set a.HInterID=" + HInterID.ToString() + ",a.HBillNo='" + HBillNo +"',a.HRelationInterID= 0 from KF_WeighSource_Temp a where a.HInterID<>" + HInterID.ToString() + " and a.HMaker='" + HMaker + "' and a.HSourceBillNo='" + ProcessExchangeBillNo + "'"); //写入条码出入库临时表 oCn.RunProc("Insert into KF_PonderationBillMain_Temp " + "(HInterID,HBillNo,HBillType,HMaterID,HAuxPropID,HProcID" + ",HWhID,HSCWHID,HStockPlaceID,HOutStockPlaceID,HGroupID,HAddr" + ",HQtyMust,HQty,HPieceQty,HBatchNo,HBarCode,HBarCode_Pack" + ",HMaker,HMakeDate,HSourceInterID,HSourceEntryID,HSourceBillType,HSourceBillNo" + ",HRelationInterID,HRelationEntryID,HRelationBillNo,HRedBlueFlag,HMTONo,HPlanMode" + ",HSTOCKORGID,HOtherOrgID,HOWNERID,HOWNERTYPEID,HExpressNumber,HSubBillType" + ",HCusID,HDeptID,HCusBarCode,HMulSourceBill) " + " Values(" + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "'," + HMaterID.ToString() + "," + HAuxPropID.ToString() + ",0" + "," + HWhID.ToString() + ",0," + HSPID.ToString() + ",0,0,''" +",0," + HQty.ToString() + ",1,'" + HBatchNo + "','" + HBarCode + "',''" +",'" + HMaker + "',getdate()," + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillType + "','" + HSourceBillNo + "'" +",0,0,'',0,'',0" +"," + HStockOrgID.ToString() + "," + HStockOrgID.ToString() + "," + HStockOrgID.ToString() + ",'','称重入库生成','2'" +",0,0,'',0)"); oCn.Commit(); } catch (Exception e) { oCn.RollBack(); MessageBox.Show("条码生成失败!" + e.Message); } } #endregion #region //返回信息 //返回源单列表信息 private void SourceBill() { txtHBillNo.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("单据号")].Value); txtHDeptName.Tag = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HDeptID")].Value); txtHDeptName.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("车间")].Value); txtHMaterNumber.Tag = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HMaterID")].Value); txtHMaterNumber.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("物料代码")].Value); txtHMaterName.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("物料名称")].Value); txtHMaterModel.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("规格型号")].Value); txtHBatchNo.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("批号")].Value); txtHCusMaterName.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HCusMaterName")].Value); txtHCusModel.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HCusModel")].Value); HAuxPropID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HAuxPropID")].Value); HUnitID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HUnitID")].Value); HWhID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HWhID")].Value); HSPFlag = DBUtility.ClsPub.isBool(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSPFlag")].Value); HSPID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSPID")].Value); HSourceInterID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSourceInterID")].Value); HSourceEntryID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSourceEntryID")].Value); HSourceBillNo = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("生产订单")].Value); HSourceBillType = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSourceBillType")].Value); HSourceQty = DBUtility.ClsPub.isDoule(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("数量")].Value); ProcessExchangeInterID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("ProcessExchangeInterID")].Value); HSupID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSupID")].Value); HMaterWeight = DBUtility.ClsPub.isDoule(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HMaterWeight")].Value); } //返回源单列表信息 private void Source_Display() { DataSet DSet = oCn.RunProcReturn("exec h_p_KF_GetWeighSource_TempList '" + HMaker + "'," + HStockOrgID.ToString(), "h_p_KF_GetWeighSource_TempList"); grdSub.DataSource = DSet.Tables[0].DefaultView; //冻结 int FrCol = DBUtility.ClsPub.isInt(frmCondition.txtFrozenCol.Text); string s = frmCondition.cmbHComplete.Text; DBUtility.Xt_BaseBillFun.DisplayGrid(grdSub, this.Name + "grdSub", s, FrCol); //画线 GraphLine(); } //返回称重记录列表信息 private void BarCode_Display() { DataSet DSet = oCn.RunProcReturn("select * from h_v_IF_BarCodeBillList Where HinterID=" + HInterID.ToString() + " order by HItemID desc", "h_v_IF_BarCodeBillList", ref DBUtility.ClsPub.sExeReturnInfo); grdMain.DataSource = DSet.Tables[0].DefaultView; //冻结 int FrCol = DBUtility.ClsPub.isInt(frmCondition.txtFrozenCol.Text); string s = frmCondition.cmbHComplete.Text; DBUtility.Xt_BaseBillFun.DisplayGrid(grdMain, this.Name, s, FrCol); //画线 GraphLine(); } private void GraphLine() { int MainIDCol = Fun_GetCol("hmainid"); int SubIDCol = Fun_GetCol("hsubid"); string s = frmCondition.cmbHComplete.Text; long n = 0; DBUtility.Xt_BaseBillFun.GraphLine(grdMain, MainIDCol, SubIDCol, s, ref n); int MainIDCol2 = Fun_GetSubCol("hmainid"); int SubIDCol2 = Fun_GetSubCol("hsubid"); string s2 = frmCondition.cmbHComplete.Text; long n2 = 0; DBUtility.Xt_BaseBillFun.GraphLine(grdSub, MainIDCol2, SubIDCol2, s2, ref n2); } #endregion #region //作废 private void cmdZF_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { MessageBox.Show("请先选择需要作废的条码!", "提示"); return; } else { if (MessageBox.Show("确定要作废所选条码?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } else { string HRemark = ""; string HItemID = ""; string HBarCode = ""; string HBarCode2 = ""; for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { HItemID = HItemID + "," + DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("hmainid")].Value.ToString()); HBarCode = HBarCode + ",'" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value) + "'"; if (i != 0 && i % 100 == 0) { HBarCode2 = HBarCode2 + "#" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value); } else { HBarCode2 = HBarCode2 + "," + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value); } if (DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("作废标记")].Value) != "") { HRemark = HRemark + "、" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value); } } if (HRemark != "") { MessageBox.Show("所选条码编号:"+ HRemark.Remove(0, 1)+" 已作废,不允许重复作废!", "提示"); return; } HItemID = HItemID.Remove(0, 1); //去掉字符串第一个字符 HBarCode = HBarCode.Remove(0, 1); HBarCode2 = HBarCode2.Remove(0, 1); try { oCn.BeginTran(); string[] NewBarCode; NewBarCode = HBarCode2.Split(Convert.ToChar("#")); //作废条码 oCn.RunProc("update Gy_BarCodeBill set HStopflag=1,HDeleteMan='" + DBUtility.ClsPub.CurUserName + "',HDeleteDate=getdate() where HItemID in (" + HItemID + ")", ref DBUtility.ClsPub.sExeReturnInfo); //删除条码出入库临时表记录 oCn.RunProc("delete from KF_PonderationBillMain_Temp where HInterID=" + HInterID.ToString() + " and HBillType='" + HBillType + "' and HBarCode in (" + HBarCode + ")", ref DBUtility.ClsPub.sExeReturnInfo); //写入系统日志 for (int i = 0; i <= NewBarCode.Length - 1; i++) { oCn.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + DBUtility.ClsPub.CurUserName + "','" + DBUtility.ClsPub.ComputerName + "','作废条码:" + NewBarCode[i] + "','称重入库模块','" + DBUtility.ClsPub.IPAddress + "','作废'", ref DBUtility.ClsPub.sExeReturnInfo); } oCn.Commit(); } catch (Exception e2) { oCn.RollBack(); MessageBox.Show("作废条码失败!" + e2.Message, "提示"); return; } //刷新称重记录列表信息 BarCode_Display(); MessageBox.Show("所选条码编号:" + HBarCode.Remove(0, 1) + " 作废成功!", "提示"); } } } #endregion #region //反作废 private void cmdFZF_Click(object sender, EventArgs e) { if (grdMain.CurrentRow == null) { MessageBox.Show("请先选择需要反作废的条码!", "提示"); return; } else { if (MessageBox.Show("确定要反作废所选条码?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } else { string HRemark = ""; string HItemID = ""; string HBarCode = ""; string HBarCode2 = ""; for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++) { HItemID = HItemID + "," + DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("hmainid")].Value.ToString()); HBarCode = HBarCode + ",'" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value) + "'"; if (i != 0 && i % 100 == 0) { HBarCode2 = HBarCode2 + "#" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value); } else { HBarCode2 = HBarCode2 + "," + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value); } if (DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("作废标记")].Value) == "") { HRemark = HRemark + "、" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value); } } if (HRemark != "") { MessageBox.Show("所选条码编号:" + HRemark.Remove(0, 1) + " 未作废,不允许反作废!", "提示"); return; } HItemID = HItemID.Remove(0, 1); //去掉字符串第一个字符 HBarCode = HBarCode.Remove(0, 1); HBarCode2 = HBarCode2.Remove(0, 1); try { oCn.BeginTran(); string[] NewBarCode; NewBarCode = HBarCode2.Split(Convert.ToChar("#")); //反作废条码 oCn.RunProc("update Gy_BarCodeBill set HStopflag=0,HDeleteMan='',HDeleteDate=null where HItemID in (" + HItemID + ")", ref DBUtility.ClsPub.sExeReturnInfo); //删除条码出入库临时表记录 oCn.RunProc("delete from KF_PonderationBillMain_Temp where HInterID=" + HInterID.ToString() + " and HBillType='" + HBillType + "' and HBarCode in (" + HBarCode + ")", ref DBUtility.ClsPub.sExeReturnInfo); //写入条码出入库临时表 oCn.RunProc("Insert into KF_PonderationBillMain_Temp " + "(HInterID,HBillNo,HBillType,HMaterID,HAuxPropID,HProcID" + ",HWhID,HSCWHID,HStockPlaceID,HOutStockPlaceID,HGroupID,HAddr" + ",HQtyMust,HQty,HPieceQty,HBatchNo,HBarCode,HBarCode_Pack" + ",HMaker,HMakeDate,HSourceInterID,HSourceEntryID,HSourceBillType,HSourceBillNo" + ",HRelationInterID,HRelationEntryID,HRelationBillNo,HRedBlueFlag,HMTONo,HPlanMode" + ",HSTOCKORGID,HOtherOrgID,HOWNERID,HOWNERTYPEID,HExpressNumber,HSubBillType" + ",HCusID,HDeptID,HCusBarCode,HMulSourceBill) " + " select " + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "',HMaterID,HAuxPropID,0" + ",HWhID,0,HSPID,0,0,''" + ",0,HQty,1,HBatchNo,HBarCode,''" + ",'" + HMaker + "',getdate(),HSourceInterID,HSourceEntryID,HSourceBillType,HSourceBillNo" + ",0,0,'',0,'',0" + ",HSTOCKORGID,HSTOCKORGID,HSTOCKORGID,'','称重入库生成-反作废','2'" + ",0,0,'',0" + "from Gy_BarCodeBill with(nolock) where HItemID in (" + HItemID + ")" ); //写入系统日志 for (int i = 0; i <= NewBarCode.Length - 1; i++) { oCn.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + DBUtility.ClsPub.CurUserName + "','" + DBUtility.ClsPub.ComputerName + "','反作废条码:" + NewBarCode[i] + "','称重入库模块','" + DBUtility.ClsPub.IPAddress + "','反作废'", ref DBUtility.ClsPub.sExeReturnInfo); } oCn.Commit(); } catch (Exception e2) { oCn.RollBack(); MessageBox.Show("反作废条码失败!" + e2.Message, "提示"); return; } //刷新称重记录列表信息 BarCode_Display(); MessageBox.Show("所选条码编号:" + HBarCode.Remove(0, 1) + " 反作废成功!", "提示"); } } } #endregion #region //备注 不良原因选择 private void cmdHBadReasonID_Click(object sender, EventArgs e) { DAL.ClsGy_BadReason_View oBadReason = new DAL.ClsGy_BadReason_View(); if (oBadReason.RefreshView()) { this.txtHRemark.Text = oBadReason.oModel.HName; this.txtHRemark.Tag = oBadReason.oModel.HItemID.ToString(); } } #endregion } }