using System; using System.ComponentModel; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.Bill.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using System.Data; using System.Collections; using System.Windows.Forms; namespace aoyuPlugIn { [Description("销售订单验证库存数")] public class jb_xsdd_yzkcs : AbstractBillPlugIn { public override void BeforeSave(BeforeSaveEventArgs e) { base.BeforeSave(e); ////取表体最大行数 //string FEntity_nm = "T_SAL_ORDERENTRY"; //int tol = this.Model.GetEntryRowCount(FEntity_nm); //计算评审天数 //销售组 FSaleGroupId,FSALEGROUPID DynamicObject obxsz = this.View.Model.GetValue("FSaleGroupId") as DynamicObject; string xsz = obxsz["Name"].ToString(); try { //FSaleOrderEntry string ORM_NM = "SaleOrderEntry";//你的单据体ORM实体名 DynamicObject obj = this.Model.DataObject; DynamicObjectCollection rows = obj[ORM_NM] as DynamicObjectCollection; int k = 0; ComboBox cmb = new ComboBox();DataTable tb = new DataTable(); tb.Columns.Add("wlno");tb.Columns.Add("fqty"); try { foreach (var r in rows) { DynamicObject obwl = this.View.Model.GetValue("FMaterialId", k) as DynamicObject; string wlno = obwl["Number"].ToString(); if (cmb.Items.Contains(wlno) == false) { cmb.Items.Add(wlno); DataRow nr = tb.NewRow(); nr[0] = wlno; string dds = this.View.Model.GetValue("FQty", k).ToString(); nr[1] = dds; tb.Rows.Add(nr); } else { DataRow[] nr = tb.Select("wlno='" + wlno + "'"); nr[0]["fqty"] = (Convert.ToDouble(nr[0]["fqty"].ToString()) + Convert.ToDouble(this.View.Model.GetValue("FQty",k).ToString())).ToString(); } k++; } } catch(Exception ex) { MessageBox.Show(ex.Message); } k = 0; foreach (DataRow r in tb.Rows) { string wlno = r["wlno"].ToString(); Double fqty = Convert.ToDouble( r["fqty"].ToString()); var sSql = String.Format("EXEC jb_get_kchz " + xsz + "," + wlno); var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql); Double cys =Convert.ToDouble(dr[0]["cys"].ToString()); if (fqty > cys) { this.View.ShowMessage("物料编码:" + wlno + "的订单数" + fqty.ToString() + "大于库存管理报表中的差异数" + cys.ToString() + ",不能保存"); //e.Cancel = true; } k++; } } catch (Exception ex) { this.View.ShowMessage("验证数据时发生错误为:" + ex.Message); e.Cancel = true; } } } }