using DBUtility;
|
using gregn6Lib;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Drawing.Printing;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Windows.Forms;
|
|
namespace WarM.条码打印
|
{
|
public partial class Gy_PackBarCodeBill_automaticallyByPLC : Form
|
{
|
public Gy_PackBarCodeBill_automaticallyByPLC()
|
{
|
InitializeComponent();
|
}
|
//工具变量
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
public DBUtility.ClsPub.Enum_BillStatus BillStatus;
|
|
//打印相关变量
|
GridppReport Report;
|
public DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl();
|
public string UpdatePrintQtyCtl = ""; //条码打印次数更新
|
|
//自动组托标记
|
int isStartListen = 0;
|
|
//生成托盘条码的变量
|
int LSHlen = 6; //流水号长度
|
int LSH = 0; //流水号
|
string LSH2 = ""; //流水号转换成字符
|
string TM = ""; //条码
|
string sTMNumber = ""; //条码自定义前缀
|
string sDate = ""; //日期
|
string sYear = ""; //年
|
string sYear2 = ""; //年
|
string sPeriod = ""; //月
|
string sDay = ""; //日
|
int HQty = 1; //数量
|
string HBarCodeType = ""; //条码类型
|
string[] sSQLMul = new string[2]; //用于存储生成托盘条码的sql语句
|
|
|
//组托所需的变量
|
public Int64 HInterID = 0; //内码
|
public string HBillNo; //本单单号
|
public string HBillType = "3783"; //单据类型
|
public string HBarCode_Pack; //托条码
|
public const string ModRightName = "CE";
|
public const string ModRightNamePackUnion = ModRightName + "_PackUnion";
|
|
//
|
public Int64 HOrgID = -1;
|
public string HOrgNumber = "";
|
|
//定义
|
public bool ExtMainBill = false;
|
|
|
public const int HBarCodeCol = 4;
|
|
//
|
public string ModName = "85";
|
public string ModCaption = "托盘条码生成";
|
public bool BillChange; //
|
public bool grdStatus;
|
public int selectRow = 0;
|
|
private void Gy_PackBarCodeBill_automaticallyByPLC_Load(object sender, EventArgs e)
|
{
|
//加载组织信息
|
Sub_AddOrdList();
|
}
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
{
|
timer1.Enabled = false;
|
if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_View)
|
{
|
//this.Sub_ShowBill();
|
}
|
else
|
{
|
this.Sub_AddBill();
|
}
|
}
|
//新增单据
|
private void Sub_AddBill()
|
{
|
this.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew;
|
this.Sub_ClearBill();//清空界面
|
}
|
|
|
//清空界面
|
public void Sub_ClearBill()
|
{
|
////表体清空
|
//grdMain.Rows.Clear();
|
//grdSub.Rows.Clear();
|
|
//设置条码类型 下拉列表
|
cmbHBarCodeType.Items.Clear();
|
cmbHBarCodeType.Items.Add("托盘条码");
|
|
//设置组织 下拉列表
|
Sub_AddOrdList();
|
|
//初始化控件
|
DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
|
|
//设置组织 下拉列表 并设置值
|
DataSet Ds1 = oCn.RunProcReturn("select * from Xt_ORGANIZATIONS with(nolock) where HItemID=" + ClsPub.HOrgID, "Xt_ORGANIZATIONS", ref DBUtility.ClsPub.sExeReturnInfo);
|
if (Ds1.Tables[0].Rows.Count != 0)
|
{
|
cmbHOrgID.Text = DBUtility.ClsPub.isStrNull(Ds1.Tables[0].Rows[0]["HName"]);
|
}
|
|
//设置打印机 下拉列表
|
PrintDocument fPrintDocument = new PrintDocument();
|
string defaultPrinter = fPrintDocument.PrinterSettings.PrinterName;
|
comboBox_PrinterParams.Items.Clear();
|
for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
|
{
|
string tmp = PrinterSettings.InstalledPrinters[i];
|
if (tmp == defaultPrinter)
|
{
|
//tmp = tmp + "(默认)";
|
}
|
comboBox_PrinterParams.Items.Add(tmp);
|
}
|
|
|
//设置产线 下拉列表
|
DataSet DsSource = oCn.RunProcReturn("select * from Gy_Source ", "Gy_Source");
|
comboBox_SourceNameParams.Items.Add("");
|
if (DsSource != null)
|
{
|
comboBox_SourceNameParams.Items.Clear();
|
comboBox_SourceNameParams.Items.Add("");
|
for (int i = 0; i < DsSource.Tables[0].Rows.Count; i++)
|
{
|
comboBox_SourceNameParams.Items.Add(DsSource.Tables[0].Rows[i]["HName"]);
|
}
|
}
|
|
//读取配置文件设置配置
|
readParams();
|
|
//设置托盘条码 条码编号
|
setPackBarCodeBillData();
|
|
////设置工单信息
|
//textBox_SourceName.Text = comboBox_SourceNameParams.Text;
|
////设置制单信息
|
//txtHMaker.Text = ClsPub.CurUserName;
|
//txtHMakeDate.Text = "";
|
//txtHChecker.Text = "";
|
//txtHCheckDate.Text = "";
|
//txtHCloseMan.Text = "";
|
//txtHCloseDate.Text = "";
|
//txtHDeleteMan.Text = "";
|
//txtHDeleteDate.Text = "";
|
//txtHUpDater.Text = "";
|
//txtHUpDateDate.Text = "";
|
|
////设置子表
|
//initGrid();
|
//grdList.DataSource = null;
|
//grdBillBarCodeList.DataSource = null;
|
//tabControl1.SelectedIndex = 3;
|
|
DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name + "grdMain");
|
DBUtility.Xt_BaseBillFun.initGridList(grdSub, this.Name + "grdSub");
|
|
getDisplay_GrdMain();
|
}
|
|
|
#region 设置生成托盘条码的数据,并更新表头的托盘条码的条码编号
|
//设置生成托盘条码的数据,并更新表头的托盘条码的条码编号
|
private void setPackBarCodeBillData()
|
{
|
//初始化数据
|
LSH = 0; //流水号
|
LSH2 = ""; //流水号转换成字符
|
TM = ""; //条码
|
sTMNumber = ""; //条码自定义前缀
|
sDate = ""; //日期
|
sYear = ""; //年
|
sYear2 = ""; //年
|
sPeriod = ""; //月
|
sDay = ""; //日
|
HQty = 1; //数量
|
HBarCodeType = ""; //条码类型
|
sSQLMul = new string[2]; //用于存储生成托盘条码的sql语句
|
|
|
HBarCodeType = ClsPub.isStrNull(cmbHBarCodeType.Text); //条码类型
|
|
//获取组织信息
|
HOrgID = get_ORGANIZATIONSIDByName(cmbHOrgID.Text);
|
HOrgNumber = get_ORGANIZATIONSNOByName(cmbHOrgID.Text);
|
|
//获取当前产线
|
long HSourceID = 0;
|
string sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "'";
|
DataSet ds = oCn.RunProcReturn(sql, "Gy_Source");
|
if (ds != null && ds.Tables[0].Rows.Count > 0)
|
{
|
HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString());
|
}
|
|
//获取缓存列表中 当前产线 托盘条码 编号最大的 数据
|
sql = "select top(1) a.* from Sc_PackUnionBill_Temp as a inner join Gy_BarCodeBill as b on a.HBarCode = b.HBarCode where b.HSourceID = " + HSourceID + " and a.HStockorgID = " + HOrgID + " order by a.HBarCode_Pack desc";
|
ds = oCn.RunProcReturn(sql, "Sc_PackUnionBill_Temp");
|
if (ds != null && ds.Tables[0].Rows.Count > 0) //若缓存列表中 当前产线 存在 组托记录,则判断该托盘条码在条码档案中是否存在,存在则已经提交,不存在则未提交。
|
{
|
string HBarCode_Pack = ds.Tables[0].Rows[0]["HBarCode_Pack"].ToString();
|
long HBillID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"].ToString());
|
string HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
|
|
sql = "select * from Gy_BarCodeBill where HBarCode = '" + HBarCode_Pack + "' and HStockOrgID = " + HOrgID;
|
ds = oCn.RunProcReturn(sql, "Gy_BarCodeBill");
|
if(ds!=null && ds.Tables[0].Rows.Count > 0) //组托已经提交,重新生成 托盘条码和单据ID、单据号
|
{
|
//获取条码编号
|
//获取年 月 日
|
sDate = dtpHDate.Value.ToShortDateString();
|
sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
|
sYear2 = ClsPub.isDate(sDate).Year.ToString();
|
sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
|
sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
|
sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
|
sDay = sDay.Substring(sDay.Length - 2, 2);
|
|
//获取 条码前缀 = 'TP' + 组织代码 + 年 + 月 + 日
|
sTMNumber = "TP" + HOrgNumber + sYear + sPeriod + sDay;
|
//获取流水号
|
DataSet Ds = getDataSetBySQL("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo", ref DBUtility.ClsPub.sExeReturnInfo);//获取最大流水号
|
LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
|
LSH = LSH + 1;
|
LSH2 = LSH.ToString();
|
while (LSH2.Length < LSHlen) //如果流水号小于6位数前面补0
|
{
|
LSH2 = "0" + LSH2;
|
}
|
//条码编号 = 条码前缀 + 流水号
|
TM = sTMNumber + LSH2;
|
|
//刷新最大流水号
|
sql = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " ";
|
oCn.RunProc(sql);
|
|
textBox_HPackBarCode.Text = TM;
|
|
while (true)
|
{
|
textBox_sBillID.Text = DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo).ToString();
|
DataSet getID = oCn.RunProcReturn("select * from Sc_PackUnionBill_Temp where HInterID =" + DBUtility.ClsPub.isLong(textBox_sBillID.Text), "Sc_PackUnionBill_Temp");
|
if (getID != null && getID.Tables[0].Rows.Count == 0)
|
{
|
break;
|
}
|
}
|
textBox_sBillNo.Text = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true);
|
}
|
else ////组托未提交,托盘条码为最晚未组托的
|
{
|
textBox_HPackBarCode.Text = HBarCode_Pack;
|
textBox_sBillID.Text = HBillID.ToString();
|
textBox_sBillNo.Text = HBillNo;
|
}
|
}
|
else
|
{
|
//获取条码编号
|
//获取年 月 日
|
sDate = dtpHDate.Value.ToShortDateString();
|
sYear = ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
|
sYear2 = ClsPub.isDate(sDate).Year.ToString();
|
sPeriod = "0" + ClsPub.isDate(sDate).Month.ToString();
|
sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
|
sDay = "0" + ClsPub.isDate(sDate).Day.ToString();
|
sDay = sDay.Substring(sDay.Length - 2, 2);
|
|
//获取 条码前缀 = 'TP' + 组织代码 + 年 + 月 + 日
|
sTMNumber = "TP" + HOrgNumber + sYear + sPeriod + sDay;
|
//获取流水号
|
DataSet Ds = getDataSetBySQL("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo", ref DBUtility.ClsPub.sExeReturnInfo);//获取最大流水号
|
LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
|
LSH = LSH + 1;
|
LSH2 = LSH.ToString();
|
while (LSH2.Length < LSHlen) //如果流水号小于6位数前面补0
|
{
|
LSH2 = "0" + LSH2;
|
}
|
//条码编号 = 条码前缀 + 流水号
|
TM = sTMNumber + LSH2;
|
|
//刷新最大流水号
|
sql = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " ";
|
oCn.RunProc(sql);
|
|
textBox_HPackBarCode.Text = TM;
|
|
while (true)
|
{
|
textBox_sBillID.Text = DBUtility.ClsPub.CreateBillID(HBillType, ref DBUtility.ClsPub.sExeReturnInfo).ToString();
|
DataSet getID = oCn.RunProcReturn("select * from Sc_PackUnionBill_Temp where HInterID =" + DBUtility.ClsPub.isLong(textBox_sBillID.Text), "Sc_PackUnionBill_Temp");
|
if (getID != null && getID.Tables[0].Rows.Count == 0)
|
{
|
break;
|
}
|
}
|
textBox_sBillNo.Text = DBUtility.ClsPub.CreateBillCode(HBillType, ref DBUtility.ClsPub.sExeReturnInfo, true);
|
}
|
}
|
|
//获取最大流水号
|
public DataSet getDataSetBySQL(string sSQL, string sTable, ref string sErrMsg)
|
{
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
try
|
{
|
DataSet ds = oCn.RunProcReturn(sSQL, sTable);
|
return ds;
|
}
|
catch (Exception e)
|
{
|
sErrMsg = "查询失败!" + e.Message;
|
return null;
|
}
|
}
|
#endregion
|
|
|
|
#region 组托
|
//未满托生成 按钮 点击事件
|
private void button_produceByHand_Click(object sender, EventArgs e)
|
{
|
if (HQty == 0)
|
{
|
MessageBox.Show("请扫码子条码!");
|
return;
|
}
|
this.Sub_SaveBill();
|
}
|
|
//自动组托
|
private void button_startListen_Click(object sender, EventArgs e)
|
{
|
if (DBUtility.ClsPub.isLong(textBox_PackQty.Text) == 0)
|
{
|
MessageBox.Show("请设置托条码的最小包装数!");
|
return;
|
}
|
|
isStartListen = 1;
|
|
cmbHOrgID.Enabled = false;
|
dtpHDate.Enabled = false;
|
cmbHBarCodeType.Enabled = false;
|
textBox_PackQty.Enabled = false;
|
button_startListen.Enabled = false;
|
button_stopListen.Enabled = true;
|
button_produceByHand.Enabled = false;
|
|
comboBox_PrinterParams.Enabled = false;
|
textBox_PrintModelParams.Enabled = false;
|
comboBox_SourceNameParams.Enabled = false;
|
|
button_saveParams.Enabled = false;
|
|
textBox_HBarCode.Focus();
|
}
|
|
//停止组托
|
private void button_stopListen_Click(object sender, EventArgs e)
|
{
|
isStartListen = 0;
|
|
cmbHOrgID.Enabled = true;
|
dtpHDate.Enabled = true;
|
cmbHBarCodeType.Enabled = false;
|
textBox_PackQty.Enabled = true;
|
button_startListen.Enabled = true;
|
button_stopListen.Enabled = false;
|
button_produceByHand.Enabled = true;
|
|
comboBox_PrinterParams.Enabled = true;
|
textBox_PrintModelParams.Enabled = true;
|
comboBox_SourceNameParams.Enabled = true;
|
|
button_saveParams.Enabled = true;
|
}
|
|
//自动组托
|
private void autoProducePackBarCode()
|
{
|
if(isStartListen == 1)
|
{
|
if(HQty == DBUtility.ClsPub.isDoule(textBox_PackQty.Text))
|
{
|
this.Sub_SaveBill();
|
|
//设置打印模板,打印
|
grdSub.Rows[0].Cells[0].Value = "*";
|
Report = new GridppReport();
|
Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + textBox_PrintModelParams.Text + ".grf"); //here .
|
Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
|
Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
|
Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd);
|
if (comboBox_PrinterParams.Text != "")
|
{
|
Report.Printer.PrinterName = comboBox_PrinterParams.Text.Replace("(默认)", "");
|
}
|
Report.Print(false);
|
}
|
}
|
}
|
|
#region 生成托盘条码
|
//生成托盘条码
|
private bool Sub_SaveBill()
|
{
|
//获取组织信息
|
HOrgID = get_ORGANIZATIONSIDByName(cmbHOrgID.Text);
|
HOrgNumber = get_ORGANIZATIONSNOByName(cmbHOrgID.Text);
|
|
if (HOrgID == -1)
|
{
|
MessageBox.Show("选择组织有错误!");
|
return false;
|
}
|
|
|
if (!Sub_AllowSave())//单据完整性判断
|
{
|
return false;
|
}
|
|
|
SaveBarCode();
|
return true;
|
}
|
|
//单据完整性判断 未完成
|
private bool Sub_AllowSave()
|
{
|
////必输项目是否为空
|
//if (ClsPub.isInt(txtHQty.Text) <= 0)
|
//{
|
// MessageBox.Show("数量必须为大于 0 的整数!");
|
// return false;
|
//}
|
|
return true;
|
}
|
|
//获取生成托盘条码的相关sql语句
|
private void SaveBarCode()
|
{
|
try
|
{
|
long HSourceID = 0;
|
string sql = "select * from Gy_Source where HName = '" + comboBox_SourceNameParams.Text + "' ";
|
DataSet ds = oCn.RunProcReturn(sql,"Gy_Source");
|
if(ds!=null && ds.Tables[0].Rows.Count > 0)
|
{
|
HSourceID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"].ToString());
|
}
|
|
sSQLMul = new string[2];
|
sSQLMul[0] = "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,HJiaYe " +
|
",HPressModel,HCusModel,HMaterialModel,HColor,HBarCodeDate " +
|
",HLogo,HPackageSize,HMaterialJQty,HMaterialMQty,HCustomBatchNo " +
|
",HSTOCKORGID,HOWNERID,HBeginDate,HSeOrderBillNo,HGBBarCode " +
|
",POOrderBillNo,HInterID,HInitSourceEntryID,HBarCode_Pack " +
|
",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo " +
|
",HCustomQty1,HLayerNumber,HCusBarCode,HBarCodeStatus,HSourceID " +
|
") values ("
|
+ "'" + TM + "','" + HBarCodeType + "',0,0,1"
|
+ ",'',0,0,'" + ClsPub.CurUserName + "',getdate(),0,1"
|
+ ",0,0,'','',''"
|
+ "," + HQty.ToString() + ",1,0,0,0,''"
|
+ ",0,'','','',''"
|
+ ",'','','','','" + sDate + "'"
|
+ ",'','',0,0,''"
|
+ "," + HOrgID.ToString() + "," + HOrgID.ToString() + ",'','',''"
|
+ ",''," + HInterID.ToString() + ",0,'" + TM + "'"
|
+ ",'','','',0,''"
|
+ ",0,0,'',''," + HSourceID +
|
")";
|
|
|
sSQLMul[1] = " exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "'," + HQty.ToString() + " ";
|
|
if (getRunProcByMul_Back(sSQLMul, ref DBUtility.ClsPub.sExeReturnInfo))
|
{
|
//MessageBox.Show("条码生成完毕!");
|
string sql_getInfo = "exec h_p_WMS_PackBarCodeBill_Auto_getInfo '" + textBox_HPackBarCode.Text + "'";
|
oCn.RunProc(sql_getInfo);
|
|
getDisplay_grdSub();
|
|
setPackBarCodeBillData();
|
|
getDisplay_GrdMain();
|
}
|
else
|
{
|
//MessageBox.Show("条码生成失败!" + DBUtility.ClsPub.sExeReturnInfo);
|
}
|
}
|
catch (Exception e)
|
{
|
//MessageBox.Show("条码生成失败!" + e.Message);
|
}
|
}
|
|
//执行生成托盘条码相关的sql语句
|
public bool getRunProcByMul_Back(string[] sSQL, ref string sErrMsg)
|
{
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
try
|
{
|
oCn.BeginTran();
|
if (sSQL.Length > 0)
|
{
|
for (int i = 0; i < 1; i++)
|
{
|
oCn.RunProc(sSQL[i]);
|
}
|
|
|
|
send();
|
}
|
else
|
{
|
sErrMsg = "没有数据!";
|
oCn.Commit();
|
return false;
|
}
|
oCn.Commit();
|
return true;
|
}
|
catch (Exception e)
|
{
|
sErrMsg = e.Message;
|
oCn.RollBack();
|
return false;
|
}
|
}
|
#endregion
|
|
#region 上传功能控件
|
//上传按钮
|
private void send()
|
{
|
string err = "";
|
//if (!CheckModRight(ModRightNamePackUnion, DBUtility.ClsPub.CurUserName, ref err))
|
//{
|
// MessageBox.Show(err);
|
// return;
|
//}
|
//if (MessageBox.Show("确定要上传?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Cancel)
|
//{
|
// return;
|
//}
|
LoadData();
|
}
|
|
//判断用户权限
|
public bool CheckModRight(string ModRightName, string sUserName, ref string sErrMsg)
|
{
|
//获取系统参数
|
Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
|
if (oSystemParameter.ShowBill(ref sErrMsg) == false)
|
{
|
sErrMsg = "获取系统参数失败! " + sErrMsg;
|
return false;
|
}
|
//判断权限
|
if (!DBUtility.ClsPub.Security_Log(ModRightName, 1, false, sUserName))
|
{
|
sErrMsg = "您没有权限,请与管理员联系!";
|
return false;
|
}
|
return true;
|
}
|
|
//上传到服务器
|
private void LoadData()
|
{
|
string err = "";
|
//判断是否数据完整
|
if (AllowLoadData() == false)
|
{
|
return;
|
}
|
try
|
{
|
long sInterID = DBUtility.ClsPub.isLong(textBox_sBillID.Text);
|
string sBillNo = textBox_sBillNo.Text.Trim();
|
string sHBarCode_Pack = textBox_HPackBarCode.Text.Trim();
|
string sMaker = DBUtility.ClsPub.CurUserName;
|
long HOWNERID = DBUtility.ClsPub.HORGANIZATIONSID;
|
|
|
if (set_SavePackUnionBill_Add(sInterID, HBillType, sBillNo, sHBarCode_Pack, sMaker, HOWNERID, ref err))
|
{
|
//MessageBox.Show("生成生产组托单成功!单据号为:" + textBox_sBillNo.Text);
|
BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew;
|
}
|
else
|
{
|
MessageBox.Show("生成失败!原因:" + err);
|
return;
|
}
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show("单据号:" + textBox_sBillID.Text + ",单据ID:" + textBox_sBillID.Text + ";上传失败!" + e.Message);
|
return;
|
}
|
}
|
|
//上传前判断
|
private bool AllowLoadData()
|
{
|
if (DBUtility.ClsPub.isLong(textBox_sBillID.Text) == 0)
|
{
|
MessageBox.Show("错误的单据内码!");
|
return false;
|
}
|
if (textBox_sBillNo.Text.Trim() == "")
|
{
|
MessageBox.Show("错误的单据号!");
|
return false;
|
}
|
return true;
|
}
|
|
#region 上传生成生产组托单
|
public bool set_SavePackUnionBill_Add(Int64 HInterID, string HBillType, string HBillNo, string HBarCode_Pack, string HMaker, Int64 HStockOrgID, ref string sErrMsg)
|
{
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
try
|
{
|
oCn.BeginTran();
|
DataSet ds = oCn.RunProcReturn("exec h_p_Sc_PackUnionBill_Insert_New " + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + HBarCode_Pack + "','" + HMaker + "'," + HStockOrgID.ToString(), "h_p_Sc_PackUnionBill_Insert_New");
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";上传失败!";
|
oCn.RollBack();
|
return false;
|
}
|
else
|
{
|
if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 1)
|
{
|
sErrMsg = "上传失败,单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
|
oCn.RollBack();
|
return false;
|
}
|
else
|
{
|
//sErrMsg = "生成生产组托单成功!单据号为:" + HBillNo;
|
oCn.Commit();
|
return true;
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
sErrMsg = "生成生产组托单失败!" + e.Message;
|
oCn.RollBack();
|
return false;
|
}
|
}
|
|
#endregion
|
#endregion
|
#endregion
|
|
|
#region 扫描子条码
|
//扫描条码
|
private void textBox_HBarCode_KeyPress(object sender, KeyPressEventArgs e)
|
{
|
try
|
{
|
if (e.KeyChar == (char)Keys.Return)
|
{
|
SetBarCode_Webs();
|
textBox_HBarCode.Text = "";
|
textBox_HBarCode.Focus();
|
|
autoProducePackBarCode();
|
}
|
}
|
catch (Exception e2)
|
{
|
//if (DBUtility.ClsPub.bSound)
|
//{
|
// DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
|
//}
|
MessageBox.Show("发生网络异常,请稍后再试!");
|
}
|
}
|
//将条码信息写入条码出入库临时表
|
private void SetBarCode_Webs()
|
{
|
string err = "";
|
try
|
{
|
long sInterID = DBUtility.ClsPub.isLong(textBox_sBillID.Text);
|
string sBillNo = textBox_sBillNo.Text.Trim();
|
|
string sHBarCode = textBox_HBarCode.Text.Trim();
|
string sHBarCode_Pack = textBox_HPackBarCode.Text.Trim();
|
string sMaker = DBUtility.ClsPub.CurUserName;
|
long HOWNERID = DBUtility.ClsPub.HORGANIZATIONSID;
|
|
|
if (get_BarCode_PackUnionBill(sHBarCode, sInterID, HBillType, sBillNo, sHBarCode_Pack, sMaker, HOWNERID, ref err))
|
{
|
getDisplay_GrdMain();
|
}
|
else
|
{
|
MessageBox.Show(err);
|
return;
|
}
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show("扫描子条码,写入临时表信息失败!" + e.Message + err);
|
}
|
}
|
|
//生产组托单模块 扫描托条码对应单个条码
|
public bool get_BarCode_PackUnionBill(string HBarCode, Int64 HInterID, string HBillType, string HBillNo, string HBarCode_Pack, string HMaker, Int64 HStockOrgID, ref string sErrMsg)
|
{
|
//获取系统参数
|
Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
|
if (oSystemParameter.ShowBillByOrgID(HStockOrgID, ref sErrMsg) == false)
|
{
|
sErrMsg = "获取系统参数失败! " + sErrMsg;
|
return false;
|
}
|
|
string sSourceBillTypeCtl = "Y"; //未入库条码进行组托时,进行同源单类型控制(Y为控制)
|
string sSourceBillNoCtl = "Y"; //未入库条码进行组托时,进行同源单控制(Y为控制)
|
sSourceBillTypeCtl = oSystemParameter.omodel.Sc_PackUnionBill_SourceBillTypeCtl;
|
sSourceBillNoCtl = oSystemParameter.omodel.Sc_PackUnionBill_SourceBillNoCtl;
|
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
DataSet ds = oCN.RunProcReturn("exec h_p_WMS_AddBarCode_PackUnionBill '" + HBarCode + "'," + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + HBarCode_Pack + "','" + sSourceBillTypeCtl + "','" + sSourceBillNoCtl + "','" + HMaker + "'," + HOrgID.ToString(), "h_p_WMS_AddBarCode_PackUnionBill");
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";扫描条码判断失败!";
|
return false;
|
}
|
else
|
{
|
if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 0)
|
{
|
return true;
|
}
|
else
|
{
|
sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
|
return false;
|
}
|
}
|
}
|
#endregion
|
|
|
#region 返回组托列表信息
|
//获取grdMain数据
|
private void getDisplay_GrdMain()
|
{
|
string err = "";
|
try
|
{
|
DataSet oDs;
|
if (Convert.ToInt64(textBox_sBillID.Text) == 0)
|
{
|
MessageBox.Show("错误的单据id");
|
return;
|
}
|
|
oDs = GetBillEntry_Tmp_Pack(Convert.ToInt64(textBox_sBillID.Text), textBox_sBillNo.Text.Trim(), HBillType, ref err);
|
if (oDs == null)
|
{
|
MessageBox.Show(err);
|
return;
|
}
|
|
grdMain.DataSource = oDs.Tables[0].DefaultView;
|
|
HQty = oDs.Tables[0].Rows.Count;
|
|
textBox_currentQty.Text = HQty.ToString();
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show("获取表体信息失败!" + e.Message + err);
|
}
|
}
|
|
//返回组托列表信息
|
public DataSet GetBillEntry_Tmp_Pack(Int64 HInterID, string HBillNo, string HBillType, ref string sErrMsg)
|
{
|
string HPackBarCode = textBox_HPackBarCode.Text;
|
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
DataSet DS = oCn.RunProcReturn("exec h_p_WMS_BillEntryTmp_Pack_SWELLAuto " + HInterID.ToString() + ",'" + HBillType + "','" + HPackBarCode + "'", "h_p_WMS_BillEntryTmp_Pack");
|
return DS;
|
}
|
#endregion
|
|
#region 返回 需要打印的 托盘条码
|
private void getDisplay_grdSub()
|
{
|
string err = "";
|
try
|
{
|
DataSet oDs;
|
//string sql = "select * from h_v_IF_BarCodeBillList where 条码编号 = '" + textBox_HPackBarCode.Text + "' and HStockOrgID = " + HOrgID;
|
string sql = "select * from h_v_IF_BarCodeBillList where 条码编号 = '" + textBox_HPackBarCode.Text + "'";
|
oDs = oCn.RunProcReturn(sql, "Gy_BarCodeBill");
|
if (oDs == null)
|
{
|
MessageBox.Show("获取表体信息失败");
|
return;
|
}
|
|
grdSub.DataSource = oDs.Tables[0].DefaultView;
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show("获取表体信息失败!" + e.Message + err);
|
}
|
}
|
#endregion
|
|
|
|
#region 配置信息
|
//保存按钮 点击事件
|
private void button_saveParams_Click(object sender, EventArgs e)
|
{
|
saveParams();
|
}
|
|
#region 配置信息写入与读取
|
//写入配置参数
|
private void saveParams()
|
{
|
//判断文件是否存在
|
if (!File.Exists(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt"))
|
{
|
FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件
|
StreamWriter sw = new StreamWriter(fs1);
|
sw.WriteLine(textBox_IPParams.Text);//开始写入值
|
sw.WriteLine(textBox_PortParams.Text);
|
|
sw.WriteLine(comboBox_SourceNameParams.Text);
|
|
sw.WriteLine(comboBox_PrinterParams.Text.Replace("(默认)", ""));
|
sw.WriteLine(textBox_PrintModelParams.Text);
|
sw.Close();
|
fs1.Close();
|
}
|
else
|
{
|
FileStream fs1 = new FileStream(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt", FileMode.Create, FileAccess.Write);//创建写入文件
|
StreamWriter sw = new StreamWriter(fs1);
|
sw.WriteLine(textBox_IPParams.Text);//开始写入值
|
sw.WriteLine(textBox_PortParams.Text);
|
|
sw.WriteLine(comboBox_SourceNameParams.Text);
|
|
sw.WriteLine(comboBox_PrinterParams.Text);
|
sw.WriteLine(textBox_PrintModelParams.Text);
|
sw.Close();
|
fs1.Close();
|
}
|
|
MessageBox.Show("保存成功!");
|
}
|
|
//读取配置文件
|
private void readParams()
|
{
|
if (File.Exists(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt"))
|
{
|
//读取文件值并显示到窗体
|
FileStream fs = new FileStream(Application.StartupPath + "//Gy_PackBarCodeBill_automaticallyByPLC.txt", FileMode.Open, FileAccess.ReadWrite);
|
StreamReader sr = new StreamReader(fs);
|
string line = sr.ReadLine();
|
int curLine = 0;
|
while (line != null)
|
{
|
if (++curLine == 1)
|
{
|
textBox_IPParams.Text = line;
|
}
|
else if (curLine == 2)
|
{
|
textBox_PortParams.Text = line;
|
}
|
else if (curLine == 3)
|
{
|
for (int i = 0; i < comboBox_SourceNameParams.Items.Count; i++)
|
{
|
if (comboBox_SourceNameParams.Items[i].ToString() == line)
|
{
|
comboBox_SourceNameParams.Text = line;
|
}
|
}
|
|
if (comboBox_SourceNameParams.Text == "")
|
{
|
comboBox_SourceNameParams.Items.Add(line);
|
comboBox_SourceNameParams.Text = line;
|
}
|
}
|
else if (curLine == 4)
|
{
|
for (int i = 0; i < comboBox_PrinterParams.Items.Count; i++)
|
{
|
if (comboBox_PrinterParams.Items[i].ToString() == line)
|
{
|
comboBox_PrinterParams.Text = line;
|
}
|
}
|
}
|
else if (curLine == 5)
|
{
|
textBox_PrintModelParams.Text = line;
|
}
|
else
|
{
|
|
}
|
line = sr.ReadLine();
|
}
|
sr.Close();
|
fs.Close();
|
}
|
}
|
#endregion
|
#endregion
|
|
#region 通用方法
|
//根据组织名获取组织ID
|
public Int64 get_ORGANIZATIONSIDByName(string HDataCenterName)
|
{
|
try
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
DataSet ds = oCN.RunProcReturn("select HItemID from h_v_CLD_ORGANIZATIONSList where Hname='" + HDataCenterName + "'", "h_v_CLD_ORGANIZATIONSList");
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
return -1;
|
}
|
else
|
{
|
return DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HItemID"]);
|
}
|
}
|
catch (Exception e)
|
{
|
return -1;
|
}
|
}
|
|
//根据组织名获取组织代码
|
public string get_ORGANIZATIONSNOByName(string HDataCenterName)
|
{
|
try
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
DataSet ds = oCN.RunProcReturn("select HNumber from h_v_CLD_ORGANIZATIONSList where Hname='" + HDataCenterName + "'", "h_v_CLD_ORGANIZATIONSList");
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
return "";
|
}
|
else
|
{
|
return DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HNumber"]);
|
}
|
}
|
catch (Exception e)
|
{
|
return "";
|
}
|
}
|
|
//加载组织信息
|
private void Sub_AddOrdList()
|
{
|
DataSet ds;
|
DAL.ClsGy_ORGANIZATIONS_View oClsGy_ORGANIZATIONS_View = new DAL.ClsGy_ORGANIZATIONS_View();
|
ds = oClsGy_ORGANIZATIONS_View.GetList();
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
MessageBox.Show("获取组织失败");
|
return;
|
}
|
cmbHOrgID.Items.Clear();
|
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
{
|
cmbHOrgID.Items.Add(DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[i]["HName"]));
|
}
|
}
|
#endregion
|
|
#region 打印相关
|
//打印结束后回填条码打印次数
|
private void ReportPrintEnd()
|
{
|
if (UpdatePrintQtyCtl == "Y")
|
{
|
oBar.Set_UpdatePrintQty_SD(HInterID);
|
}
|
}
|
|
//填入单据表头信息
|
private void ReportBeforePostRecord()//
|
{
|
try
|
{
|
//Report.FieldByName("物料代码").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterNumber2Col].Value);
|
//Report.FieldByName("物料名称").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterName2Col].Value);
|
//Report.FieldByName("规格型号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HMaterModel2Col].Value);
|
////Report.FieldByName("自定义规格").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HModel2Col].Value);
|
//Report.FieldByName("条码编号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HTMCol].Value);
|
//Report.FieldByName("数量").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HQty2Col].Value);
|
//Report.FieldByName("源单单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSourceBillNoCol].Value);
|
//Report.FieldByName("销售订单号").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HSeOrderBillNo2Col].Value);
|
//Report.FieldByName("生产车间").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HDeptName2Col].Value);
|
//Report.FieldByName("备注").AsString = ClsPub.isStrNull(grdSub.Rows[CurRows].Cells[HRemark2Col].Value);
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show("打印失败!表头:" + e.Message);
|
}
|
}
|
|
//填入单据表体信息
|
private void ReportFetchRecordByDataTable()
|
{
|
try
|
{
|
DataTable ds = new DataTable();
|
BLL.Utility.FillRecordToReport_Sel(Report, grdSub, ds, Fun_GetCol("选择"));
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show("打印失败!表体:" + e.Message);
|
}
|
}
|
|
private Int32 Fun_GetCol(string sCol)
|
{
|
return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdSub);
|
}
|
#endregion
|
|
#region 工具栏 点击事件
|
//退出
|
private void tc_Click(object sender, EventArgs e)
|
{
|
this.Close();
|
}
|
|
//删除 子条码记录
|
private void toolStripButton_Delete_Click(object sender, EventArgs e)
|
{
|
deleteGrdMainNote();
|
}
|
#endregion
|
|
#region 删除功能控件
|
|
//删除按钮
|
private void deleteGrdMainNote()
|
{
|
if (grdMain.SelectedRows != null && grdMain.SelectedRows.Count==1)
|
{
|
if (MessageBox.Show("确定要删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Cancel)
|
{
|
return;
|
}
|
if (MessageBox.Show("删除后将不可恢复,确定要继续操作?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Cancel)
|
{
|
return;
|
}
|
Delete();
|
}
|
else
|
{
|
MessageBox.Show("请选择一行记录,进行删除!");
|
return;
|
}
|
}
|
|
//删除表体记录
|
/// <summary>
|
/// 删除表体记录
|
/// </summary>
|
private void Delete()
|
{
|
string err = "";
|
|
long HInterID = DBUtility.ClsPub.isLong(textBox_sBillID.Text);
|
string HBarCode = DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[0].Cells[HBarCodeCol].Value);
|
//删除出入库临时表记录
|
if (set_DelPackUnionBill_Temp_Pack(HInterID, HBarCode, HBillType, ref err))
|
{
|
MessageBox.Show("删除成功!");
|
getDisplay_GrdMain();
|
}
|
else
|
{
|
MessageBox.Show("删除子条码记录失败!" + err);
|
return;
|
}
|
}
|
|
//删除缓存列表中条码的记录
|
public bool set_DelPackUnionBill_Temp_Pack(Int64 HInterID, string HBarCode, string HBillType, ref string sErrMsg)
|
{
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
try
|
{
|
oCn.RunProc("Delete from Sc_PackUnionBill_Temp where HInterID=" + HInterID.ToString() + " and HBillType='" + HBillType + "' and HBarCode='" + HBarCode + "' and HPieceQty=1", ref DBUtility.ClsPub.sExeReturnInfo);
|
return true;
|
}
|
catch (Exception e)
|
{
|
sErrMsg = "删除组托记录失败!" + e.Message;
|
return false;
|
}
|
}
|
|
#endregion
|
|
|
}
|
}
|