diff --git a/Stone.WinForm/Stone.Entity/Entity_t_PartPO.cs b/Stone.WinForm/Stone.Entity/Entity_t_PartPO.cs new file mode 100644 index 0000000..82ffdd8 --- /dev/null +++ b/Stone.WinForm/Stone.Entity/Entity_t_PartPO.cs @@ -0,0 +1,27 @@ +using Gm_WMS.DataAccess.DataService; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Stone.Entity +{ + public class Entity_t_PartPO : EntityBase + + { + public static string TableNameNew = "t_PartPONumber"; + + public Entity_t_PartPO() + { + base.TableName = TableNameNew; + base.Init(); + } + + public Entity_t_PartPO(LocalDBService myDB) + { + base.db = myDB; + base.TableName = TableNameNew; + base.Init(); + } + } +} diff --git a/Stone.WinForm/Stone.WinBiz/BasicData/F_PartPO.cs b/Stone.WinForm/Stone.WinBiz/BasicData/F_PartPO.cs new file mode 100644 index 0000000..734d316 --- /dev/null +++ b/Stone.WinForm/Stone.WinBiz/BasicData/F_PartPO.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Data; +using Stone.Entity; +using Gm_WMS.DataAccess.DataService; +using Stone.Common; + +namespace Stone.WinBiz.BasicData +{ + public class F_PartPO : F_Base + { + public F_PartPO() + { + this.type = "PartPO"; + this.name = "基础资料_零件订单管理"; + this.entity = new Entity_t_PartPO(); + } + + public override void GetView(DataGridView dgv) + { + base.GetView(dgv); + + dgv.Columns["Code"].HeaderText = "存货代码"; + dgv.Columns["PONumber"].HeaderText = "订单号"; + dgv.Columns["IsCheck"].HeaderText = "发运校验"; + } + + public override void Checking(DataRow drData, bool isNew) + { + Entity_t_Product product = new Entity_t_Product(); + if (product.GetData("", "Code='" + drData["Code"].ToString() + "'", "id asc").Tables[0].Rows.Count < 1) + { + //这NM的是个魔鬼~! + throw new Exception(drData["Code"].ToString()+"不存在"); + } + + base.Checking(drData, isNew); + + } + + + public override void InputData(DataSet dsData, LocalDBService db) + { + Entity_t_PartPO t_Input = new Entity_t_PartPO(db); + DataRow drInput = null; + + foreach (DataRow drData in dsData.Tables[0].Rows) + { + + drInput = t_Input.Table.NewRow(); + drInput["Code"] = drData["存货代码"].ToString().Trim(); + drInput["PONumber"] = drData["订单号"].ToString().Trim(); + drInput["IsCheck"] = drData["发运校验"].ToString().Trim(); + if (drInput["Code"].ToString().Trim() == "") + throw new Exception("存货代码不能为空!"); + + + if (t_Input.GetData("", "Code='" + drInput["Code"].ToString() + "'", "id asc").Tables[0].Rows.Count > 0) + throw new Exception("存货代码 " + drInput["Code"].ToString() + " 已经存在!"); + t_Input.Add(drInput); + + } + } + } +} diff --git a/Stone.WinForm/Stone.WinBiz/Standard/F_JIS_VDA_ASN.cs b/Stone.WinForm/Stone.WinBiz/Standard/F_JIS_VDA_ASN.cs index edc7b2c..b22e625 100644 --- a/Stone.WinForm/Stone.WinBiz/Standard/F_JIS_VDA_ASN.cs +++ b/Stone.WinForm/Stone.WinBiz/Standard/F_JIS_VDA_ASN.cs @@ -38,24 +38,24 @@ namespace Stone.WinBiz.Standard dgv.Columns["fileType"].HeaderText = "工厂"; dgv.Columns["AsnNumber"].HeaderText = "ASN编号"; - dgv.Columns["PackageNo"].HeaderText = "装箱单号"; + // dgv.Columns["PackageNo"].HeaderText = "装箱单号"; dgv.Columns["PartNumber"].HeaderText = "零件号"; dgv.Columns["Description"].HeaderText = "零件描述"; - dgv.Columns["Date"].HeaderText = "需求日期"; - dgv.Columns["LabelDate"].HeaderText = "标签日期"; + dgv.Columns["Date"].HeaderText = "到货日期"; + dgv.Columns["LabelDate"].HeaderText = "到货时间"; dgv.Columns["Qty"].HeaderText = "数量"; - dgv.Columns["releaseId"].HeaderText = "版本号"; - dgv.Columns["location"].HeaderText = "卸货点"; + // dgv.Columns["releaseId"].HeaderText = "版本号"; + // dgv.Columns["location"].HeaderText = "卸货点"; dgv.Columns["locationCode"].HeaderText = "卸货点代码"; dgv.Columns["orderNumber"].HeaderText = "采购订单号"; - dgv.Columns["IsPrintLabel"].HeaderText = "打印标签"; + // dgv.Columns["IsPrintLabel"].HeaderText = "打印标签"; dgv.Columns["IsPackingVerification"].HeaderText = "装箱校验"; - dgv.Columns["IsPrintASN"].HeaderText = "打印ASN"; - dgv.Columns["PrintASNTime"].HeaderText = "ASN打印时间"; + // dgv.Columns["IsPrintASN"].HeaderText = "打印ASN"; + // dgv.Columns["PrintASNTime"].HeaderText = "ASN打印时间"; dgv.Columns["IsShipingVerification"].HeaderText = "发货校验"; dgv.Columns["IsUpload"].HeaderText = "是否上传"; - dgv.Columns["UploadTime"].HeaderText = "上传时间"; + dgv.Columns["UploadTime"].HeaderText = "发货时间"; diff --git a/Stone.WinForm/Stone.WinModule/BasicData/frmPartPO.Designer.cs b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPO.Designer.cs new file mode 100644 index 0000000..13030f6 --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPO.Designer.cs @@ -0,0 +1,36 @@ +namespace Stone.WinModule.BasicData +{ + partial class frmPartPO + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Stone.WinForm/Stone.WinModule/BasicData/frmPartPO.cs b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPO.cs new file mode 100644 index 0000000..82065bd --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPO.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace Stone.WinModule.BasicData +{ + public partial class frmPartPO : Stone.WinModule.BasicData.frmBaseMain + { + public frmPartPO() + { + InitializeComponent(); + } + + public override void Search(string code) + { + base.Search(code); + + strWhere += " or [Code] like '%" + code + "%'"; + + } + } +} diff --git a/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.Designer.cs b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.Designer.cs new file mode 100644 index 0000000..737135a --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.Designer.cs @@ -0,0 +1,131 @@ +namespace Stone.WinModule.BasicData +{ + partial class frmPartPODetail + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.tbPONumber = new System.Windows.Forms.TextBox(); + this.txtCode = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.txtIsCheck = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // btnAddNewLine + // + this.btnAddNewLine.Location = new System.Drawing.Point(41, 123); + this.btnAddNewLine.Margin = new System.Windows.Forms.Padding(4); + // + // btnClose + // + this.btnClose.Location = new System.Drawing.Point(254, 123); + this.btnClose.Margin = new System.Windows.Forms.Padding(4); + // + // btnOK + // + this.btnOK.Location = new System.Drawing.Point(166, 123); + this.btnOK.Margin = new System.Windows.Forms.Padding(4); + // + // tbPONumber + // + this.tbPONumber.Location = new System.Drawing.Point(113, 71); + this.tbPONumber.MaxLength = 100; + this.tbPONumber.Name = "tbPONumber"; + this.tbPONumber.Size = new System.Drawing.Size(222, 21); + this.tbPONumber.TabIndex = 1; + // + // txtCode + // + this.txtCode.Location = new System.Drawing.Point(113, 40); + this.txtCode.MaxLength = 10; + this.txtCode.Name = "txtCode"; + this.txtCode.Size = new System.Drawing.Size(222, 21); + this.txtCode.TabIndex = 0; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(23, 74); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 109; + this.label2.Text = "订单号:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(23, 44); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 108; + this.label1.Text = "物料号:"; + // + // txtIsCheck + // + this.txtIsCheck.AutoSize = true; + this.txtIsCheck.Location = new System.Drawing.Point(254, 100); + this.txtIsCheck.Name = "txtIsCheck"; + this.txtIsCheck.Size = new System.Drawing.Size(96, 16); + this.txtIsCheck.TabIndex = 110; + this.txtIsCheck.Text = "是否发运校验"; + this.txtIsCheck.UseVisualStyleBackColor = true; + // + // frmPartPODetail + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.ClientSize = new System.Drawing.Size(381, 170); + this.Controls.Add(this.txtIsCheck); + this.Controls.Add(this.tbPONumber); + this.Controls.Add(this.txtCode); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Margin = new System.Windows.Forms.Padding(4); + this.Name = "frmPartPODetail"; + this.Load += new System.EventHandler(this.frmColorDetail_Load); + this.Controls.SetChildIndex(this.btnOK, 0); + this.Controls.SetChildIndex(this.btnClose, 0); + this.Controls.SetChildIndex(this.btnAddNewLine, 0); + this.Controls.SetChildIndex(this.label1, 0); + this.Controls.SetChildIndex(this.label2, 0); + this.Controls.SetChildIndex(this.txtCode, 0); + this.Controls.SetChildIndex(this.tbPONumber, 0); + this.Controls.SetChildIndex(this.txtIsCheck, 0); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox tbPONumber; + private System.Windows.Forms.TextBox txtCode; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ColorDialog colorDialog1; + private System.Windows.Forms.CheckBox txtIsCheck; + } +} diff --git a/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.cs b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.cs new file mode 100644 index 0000000..20bfab1 --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using Stone.Common; + +namespace Stone.WinModule.BasicData +{ + public partial class frmPartPODetail : Stone.WinModule.BasicData.frmBaseMainDetail + { + public frmPartPODetail() + { + InitializeComponent(); + } + + private void frmColorDetail_Load(object sender, EventArgs e) + { + + } + + public override bool GetData() + { + if (!MyValidator.IsEmpty(this.txtCode, "")) return false; + if (!MyValidator.IsEmpty(this.tbPONumber, "")) return false; + base.GetData(); + drData["Code"] = MyStrings.GetString(this.txtCode.Text.Trim()); + drData["PONumber"] = MyStrings.GetString(this.tbPONumber.Text.Trim()); + drData["IsCheck"] = this.txtIsCheck.Checked ? true : false; + return true; + } + + public override bool SetData() + { + if (type == 2) + { + this.txtCode.ReadOnly = true; + } + + if (base.SetData()) + { + this.txtCode.Text = drData["Code"].ToString(); + this.tbPONumber.Text = drData["PONumber"].ToString(); + this.txtIsCheck.Checked = Convert.ToBoolean(drData["IsCheck"]); + } + + return false; + } + + public override void Clear() + { + base.Clear(); + this.txtCode.Text = ""; + this.tbPONumber.Text = ""; + this.txtCode.Focus(); + txtIsCheck.Checked = true; + } + + } +} diff --git a/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.resx b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.resx new file mode 100644 index 0000000..aa0ca0f --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/BasicData/frmPartPODetail.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.Designer.cs b/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.Designer.cs new file mode 100644 index 0000000..712df4c --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.Designer.cs @@ -0,0 +1,93 @@ +namespace Stone.WinModule.Standard +{ + partial class frmASNScan + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lblName = new System.Windows.Forms.Label(); + this.txtAsnNumber = new System.Windows.Forms.TextBox(); + this.btnClose = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // lblName + // + this.lblName.AutoSize = true; + this.lblName.Location = new System.Drawing.Point(21, 20); + this.lblName.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lblName.Name = "lblName"; + this.lblName.Size = new System.Drawing.Size(69, 27); + this.lblName.TabIndex = 0; + this.lblName.Text = "label1"; + // + // txtAsnNumber + // + this.txtAsnNumber.Location = new System.Drawing.Point(26, 63); + this.txtAsnNumber.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7); + this.txtAsnNumber.Name = "txtAsnNumber"; + this.txtAsnNumber.PasswordChar = '*'; + this.txtAsnNumber.Size = new System.Drawing.Size(350, 34); + this.txtAsnNumber.TabIndex = 1; + this.txtAsnNumber.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtPassword_KeyDown); + // + // btnClose + // + this.btnClose.Location = new System.Drawing.Point(109, 111); + this.btnClose.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7); + this.btnClose.Name = "btnClose"; + this.btnClose.Size = new System.Drawing.Size(150, 51); + this.btnClose.TabIndex = 3; + this.btnClose.Text = "退出"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // frmASNScan + // + this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 27F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(407, 192); + this.Controls.Add(this.btnClose); + this.Controls.Add(this.txtAsnNumber); + this.Controls.Add(this.lblName); + this.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.Margin = new System.Windows.Forms.Padding(6, 7, 6, 7); + this.Name = "frmASNScan"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ASN发运扫描"; + this.Load += new System.EventHandler(this.frmPasswordVerify_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + public System.Windows.Forms.Label lblName; + private System.Windows.Forms.TextBox txtAsnNumber; + private System.Windows.Forms.Button btnClose; + } +} \ No newline at end of file diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.cs b/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.cs new file mode 100644 index 0000000..c8427f4 --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.cs @@ -0,0 +1,93 @@ +using Stone.Common; +using Stone.Entity; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Stone.WinModule.Standard +{ + public partial class frmASNScan : Form + { + public frmASNScan() + { + InitializeComponent(); + } + + private void frmPasswordVerify_Load(object sender, EventArgs e) + { + this.lblName.Text = $"请扫描ASN号进行发运"; + } + + private void txtPassword_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + string asnNumber = this.txtAsnNumber.Text.Trim(); + Entity_t_JIS_VDA t_jis_vda = new Entity_t_JIS_VDA(); + DataSet dsAsn = t_jis_vda.GetData("", "[AsnNumber]='" + asnNumber + "'", "ID asc"); + if (dsAsn.Tables[0].Rows.Count == 0) throw new Exception("扫描的ASN无效!"); + var dtAsn = dsAsn.Tables[0]; + if (dtAsn.Select("[IsShipingVerification]=0").Length > 0) + { + //取未校验的 + var needCheck = dtAsn.Select("IsPackingVerification = 0"); + //允许设置零件号不进行校验,判断未校验的零件是否在清单中 + Entity_t_PartPO t_partpo = new Entity_t_PartPO(); + DataSet dsPartPO = t_partpo.GetData("", "1 = 1", "ID asc"); + if (dsPartPO.Tables[0].Rows.Count == 0) + { + throw new Exception("ASN中有未进行装箱校验的明细,禁止操作发货!"); + } + + var dtpartPO = dsPartPO.Tables[0]; + foreach (var row in needCheck) + { + var partCode = row["PartNumber"].ToString(); + var partRow = dtpartPO.Select("Code = '" + partCode + "'"); + if (partRow.Length != 1) + { + throw new Exception("系统未定义唯一的零件号 " + partCode + " !"); + } + else + { + if (bool.Parse(partRow[0]["IsCheck"].ToString())) + { + throw new Exception("零件号 " + partCode + " 未通过装箱校验,禁止操作发货!"); + } + } + } + } + else + { + throw new Exception("扫描的ASN已发运!"); + } + //保存数据 + var db = new Gm_WMS.DataAccess.DataService.LocalDBService(); + db.BeginTrans(); + Entity_v_JIS_VDA t_JIS_VDA = new Entity_v_JIS_VDA(db); + t_JIS_VDA.Edit($"UpLoadTime='" + DateTime.Now + "',IsShipingVerification = 1", $"[AsnNumber]='{asnNumber}'"); + db.Commit(); + + this.DialogResult = DialogResult.OK; + this.Close(); + } + catch (Exception ex) + { + MyMessageBox.ShowErrorMessage(ex.Message); + } + } + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.resx b/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Stone.WinForm/Stone.WinModule/Standard/frmASNScan.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs index d1ddd26..0904525 100644 --- a/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs +++ b/Stone.WinForm/Stone.WinModule/Standard/frmJISVDAASN.cs @@ -957,6 +957,7 @@ namespace Stone.WinModule.Standard if (planQty > 0) { drInput = t_Input.Table.NewRow(); + drInput["fileType"] = "SY88"; drInput["LabelDate"] = dt.ToString("yyyy-MM-dd") + " " + DPTime + ":00"; drInput["Date"] = dt; //todo AsnNumber 当前模板没有ASN号