《采购管理子系统详细设计说明书.docx》由会员分享,可在线阅读,更多相关《采购管理子系统详细设计说明书.docx(49页珍藏版)》请在三一办公上搜索。
1、48项目名称详细设计说明书NF-ERP之采购管理子系统详细设计说明书V1.0(版本号)班 级:S3SN20班 组 名:第一小组 指 导:张果老师 组 员:黄燕,游梦云,兰军,谢万林二零一二年五月十七日详细设计说明书1.引言1.1编写目的 采购系统帮助采购人员控制并完成从采购计划、采购执行到到采购质检等全部过程管理。可有效地监控采购计划的实施、采购成本的变动及供应商交货情况,从而帮助采购人员选择最优秀的供应商和采购计划,确保采购工作高质量、高效率及低成本地执行,使企业具有最佳的供货状态,重点实现的目标如下:实现对供应商信息的动态管理和维护;科学、准确、灵活的制定采购计划,指导和规范企业日常的采购
2、经营活动;保证采购产品的及时与准确,确保生产的持续进行;对企业采购计划的制定、审核、下达进行监督和控制,对物资采购的制定,企业日常到货、到货检验、付款结算进行跟踪和追溯。1.2背景a. 项目名称:NF-ERP采购管理子系统b. 本项目的任务提出者:黄燕、游梦云、兰军、谢万林 开发者:黄燕、游梦云、兰军、谢万林 用户:公司采购部的所有员工1.3定义到货通知单:是采购物料到达时,通知质检部门检验、地磅过磅、仓库收料入库的依据。在途发票:凡是没有进行采购结算的采购发票,都是在途发票1.4参考资料 恩信云计算机ERP系统2. 系统的结构NF-ERP采购管理系统客户化设置货品档案供应商推荐供应商档案登记
3、货品档案计划管理调度管理质检管理发票管理报表管理货品I级设置货品II级设置货品III级设置货品用途设置审核货品档案查询货品档案变更货品档案登记供应商档案审核供应商档案查询供应商推荐变更供应商档案登记供应商推荐审核供应商推荐查询供应商推荐变更供应商推荐制定采购计划审核采购计划查询采购计划制定采购执行单审核采购执行单查询采购执行单登记质检结果审核质检结果查询质检结果登记发票信息审核发票信息查询发票信息采购价预览质检详情发票详情3客户化设置设计说明 3.1模块描述本模块主要是对产品的添加,主要是货品I级的添加,货品II级的添加,货品III的添加,I级的添加可以结合符合规定写,但II级货品要根据I级
4、类型类型来添加,三级类型是根据II级中的类型来添加;还有对货品用途的设置,主要是用途的添加;还有权限的管理,分为管理员和采购员,能够对各自的管理范围做出规定和调整。3.2功能本模块主要是对货品的分类进行添加,主要是对货品I级进行添加,对货品II级进行添加,对货品III进行添加;还有对货品的用途进行添加;管理员和采购人员对该系统的管理权限进行授权3.3流程逻辑客户化设置权限设置货品用途设置货品II级设置货品III级设置货品I级设置3.4 UI展示界面图3.1 查询货品I级图 3.2 添加货品I级图 3.3 货品II级查询图 3.4 货品II添加图 3.5 货品III查询图 3.6 货品III添加
5、图 3.7 货品用途查询图 3.8 货品用途添加图 3.9 权限设置3.5核心代码/获取角色列表 public void GetList() List st = au.Find(p = true).ToList(); for (int i = 0; i p.parentNode = null).ToList(); this.Repeater1.DataBind(); /获取父节点之下的资源 public void GetChild(object sender, EventArgs e) foreach (RepeaterItem item in Repeater1.Items) if (ite
6、m.ItemType = ListItemType.Item | item.ItemType = ListItemType.AlternatingItem) CheckBox cbk = item.FindControl(ee) as CheckBox; /cbk.Checked = false; if (cbk.Checked) Repeater repea = item.FindControl(Repeater2) as Repeater; repea.DataSource = re.Find(p = p.parentNode = Convert.ToInt32(cbk.CssClass)
7、.ToList(); repea.DataBind(); else Repeater repea = item.FindControl(Repeater2) as Repeater; repea.DataSource = null; repea.DataBind(); /角色按钮改变时改变 protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) ClearCh(); List listr = GetSRP(Convert.ToInt32(this.RadioButtonList1.Sele
8、ctedValue); /父节点选中的 和 展开子节点 for (int i = 0; i listr.Count; i+) foreach (RepeaterItem item in Repeater1.Items) if (item.ItemType = ListItemType.Item | item.ItemType = ListItemType.AlternatingItem) CheckBox cbk = item.FindControl(ee) as CheckBox; if (Convert.ToInt32(cbk.CssClass) = listri.nodeId) cbk.
9、Checked = true; GetChild(null, null); /选择子节点选中的 for (int i = 0; i listr.Count; i+) foreach (RepeaterItem item in Repeater1.Items) if (item.ItemType = ListItemType.Item | item.ItemType = ListItemType.AlternatingItem) CheckBox cbk = item.FindControl(ee) as CheckBox; if (Convert.ToInt32(cbk.CssClass) =
10、 listri.nodeId) Repeater repea = item.FindControl(Repeater2) as Repeater; for (int j = 0; j listr.Count; j+) foreach (RepeaterItem item2 in repea.Items) if (item2.ItemType = ListItemType.Item | item2.ItemType = ListItemType.AlternatingItem) CheckBox cb = item2.FindControl(cc) as CheckBox; if (Conver
11、t.ToInt32(cb.CssClass) = listrj.nodeId) cb.Checked = true; /清空CHeckBox public void ClearCh() foreach (RepeaterItem item in Repeater1.Items) if (item.ItemType = ListItemType.Item | item.ItemType = ListItemType.AlternatingItem) CheckBox cbk = item.FindControl(ee) as CheckBox; cbk.Checked = false; /获取角
12、色资源表的list public List GetSRP(int id) return str.Find(p = p.rolesId = Convert.ToInt32(id).ToList(); /修改角色资源 protected void Button1_Click(object sender, EventArgs e) int count = 0; List intli = new List();/CHeckBox全部选中资源id foreach (RepeaterItem item in Repeater1.Items) if (item.ItemType = ListItemType
13、.Item | item.ItemType = ListItemType.AlternatingItem) CheckBox cbk = item.FindControl(ee) as CheckBox; if (cbk.Checked) intli.Add(Convert.ToInt32(cbk.CssClass); Repeater repea = item.FindControl(Repeater2) as Repeater; foreach (RepeaterItem item2 in repea.Items) if (item2.ItemType = ListItemType.Ite
14、m | item2.ItemType = ListItemType.AlternatingItem) CheckBox cb = item2.FindControl(cc) as CheckBox; if (cb.Checked) intli.Add(Convert.ToInt32(cb.CssClass); else count+; if (count = Repeater1.Items.Count) ClientScript.RegisterStartupScript(GetType(), Guid.NewGuid().ToString(), alert(你并没选择任何权限!); else
15、 int id = Convert.ToInt32(RadioButtonList1.SelectedValue); List listr = GetSRP(id); str.Delete(listr); for (int i = 0; i intli.Count; i+) RolesNodeInfo rolesnode = new RolesNodeInfo(); rolesnode.rolesId = id; rolesnode.nodeId = intlii; str.Add(rolesnode); ClientScript.RegisterStartupScript(GetType()
16、, Guid.NewGuid().ToString(), alert(修改成功!); 3.6尚未解决的问题 无4货品档案 模块设计说明4.1模块描述本模块主要包括四个子模块,主要是:登记货品档案,审核货品档案,查询货品档案,变更货品档案;主要流程是:登记货品档案对登记的货品档案进行审核-审核通过的货品档案进行查询对于货品的档案进行更改4.2功能登记货品档案:登记货品档案审核货品档案:对登记的货品档案进行审核查询货品档案:对已经通过审核的货品进行条件查询变更货品档案:对已经通过审核的货品进行变更4.3流程逻辑用图表辅以必要的说明来表示本模块的逻辑流程。货品档案审核货品档案查询货品档案变更货品档案
17、登记货品档案4.4 UI展示功能模块所对应的表示界面如:图4.1 货品登记图 4.2 等待审核图 4.3 货品审核图 4.4 查询货品图 4.5 货品变更图 4.6 变更货品4.5核心代码针对该模块的核心代码/接收传过来的ProId int proId = Convert.ToInt32(RequestproId.ToString(); ProductInfoDA proiDA = new ProductInfoDA(); var pro = proiDA.Find(p = p.productId = proId).FirstOrDefault(); this.txtproductName.T
18、ext = pro.productName; /下拉列表框显示所有的用途 var resert = proDA.Find(p = p.typeFather = 0).ToList(); dropproductTypeI.DataSource = resert; dropproductTypeI.DataValueField = typeId; dropproductTypeI.DataTextField = typeName; dropproductTypeI.DataBind();/保存变更的货品信息 ProductInfoDA proDA = new ProductInfoDA(); in
19、t proId = Convert.ToInt32(RequestproId.ToString(); var pro = proDA.Find(p = p.productId = proId).FirstOrDefault(); pro.productName = this.txtproductName.Text.Trim(); pro.Cess = string.IsNullOrEmpty(this.txtCess.Text.Trim() ? null : new Nullable(Convert.ToDecimal(this.txtCess.Text.Trim(); pro.useId =
20、 Convert.ToInt32(this.dropproductUse.SelectedItem.Value.Trim(); pro.typeId = Convert.ToInt32(this.dropproductTypeIII.SelectedItem.Value.Trim(); pro.productBreed = this.txtproductBreed.Text.Trim(); pro.productSpec = this.txtproductSpec.Text.Trim(); pro.barCode = this.txtbarCode.Text.Trim(); pro.Unit
21、= this.txtUnit.Text.Trim(); pro.inPrice = Convert.ToDecimal(this.txtinPrice.Text.Trim(); pro.outPrice = Convert.ToDecimal(this.txtoutPrice.Text.Trim(); pro.upperLimit = this.txtupperLimit.Text.Trim(); pro.lowerLimit = this.txtlowerLimit.Text.Trim(); pro.employeeId = Convert.ToInt32(this.dropemployee
22、Name.SelectedItem.Value.Trim(); pro.registerDate = Convert.ToDateTime(this.txtregisterDate.Text.Trim(); pro.Remark = this.txtRemark.Text.Trim(); proDA.Save(); Response.Redirect(ProductEdit.aspx); /当选择I级货品II级货品自动变为I级货品的子类 protected void dropproductTypeI_SelectedIndexChanged(object sender, EventArgs e
23、) int id2 = Convert.ToInt32(dropproductTypeI.SelectedItem.Value); var ret = proDA.Find(p = p.typeFather = id2).ToList(); this.dropproductTypeII.DataSource = ret; this.dropproductTypeII.DataValueField = typeId; this.dropproductTypeII.DataTextField = typeName; this.dropproductTypeII.DataBind(); /当选择II
24、级货品时,III级货品自动变味II级货品的子类 protected void dropproductTypeII_SelectedIndexChanged(object sender, EventArgs e) int id3 = Convert.ToInt32(dropproductTypeII.SelectedItem.Value); var ret = proDA.Find(p = p.typeFather = id3).ToList(); this.dropproductTypeIII.DataSource = ret; this.dropproductTypeIII.DataText
25、Field = typeName; this.dropproductTypeIII.DataValueField = typeId; this.dropproductTypeIII.DataBind(); 4.6尚未解决的问题 无5供应商档案 模块设计说明5.1模块描述本模块主要是分为四个子模块:登记供应商档案,审核供应商档案,查询供应商档案,更新供应商档案;主要流程是:登记供应商档案-审核供应商档案-查询供应商档案-更新供应商档案;每个子模块对自身的功能都能顺利的进行,简单易懂5.2功能说明该基本模块应具有的功能。登记供应商档案:主要是对供应商的添加进行登记审核供应商档案:对已经登记的供应商
26、档案信息但未审核的供应商档案信息进行审核查询供应商档案:对已经审核通过的供应商档案进行查询,并且查看其详细信息更新供应商档案:对已经审核通过的供应商档案进行更新5.3流程逻辑用图表辅以必要的说明来表示本模块的逻辑流程。供应商档案变更供应商档案查询供应商档案审核供应商档案登记供应商档案5.4 UI展示功能模块所对应的表示界面如:图5.1 登记供应商档案图 5.2 供应商信息审核图 5.3 供应商信息审核图 5.4 查询供应商信息图 5.5 供应商详细信息图 5.6 更新供应商信息图 5.7 修改供应商信息5.5核心代码针对该模块的核心代码/根据ID查找数据 int id = Convert.To
27、Int32(RequestsupID); var sup = supInfoda.Find(p = p.supplyId = id).FirstOrDefault(); txtSupplyName.Text = sup.supplyName; txtsupplyRelation.Text = sup.supplyRelation; txtrelationPhone.Text = sup.relationPhone; txtphotoNumber.Text = sup.photoNumber; txtEmail.Text = sup.Email; txtpostalCode.Text = sup
28、.postalCode; txtfaxNumber.Text = sup.faxNumber; /登记人 ddlemployee.DataSource = empInfoda.Find(p = true).ToList(); ddlemployee.DataValueField = employeeId; ddlemployee.DataTextField = employeeName; ddlemployee.DataBind(); var rs = empInfoda.Find(p = p.employeeId = sup.employeeId).FirstOrDefault(); ddl
29、employee.Items.FindByText(rs.employeeName).Selected = true; txtbankName.Text = sup.bankName; txtbankNumber.Text = sup.bankNumber; txtlinkAddress.Text = sup.linkAddress; txtwebSite.Text = sup.webSite; /货品类型 var type1 = protypeda.Find(p = p.typeFather = 0); ddltype1.DataSource = type1; ddltype1.DataTe
30、xtField = typeName; ddltype1.DataValueField = typeId; ddltype1.DataBind(); int id1 = Convert.ToInt32(ddltype1.SelectedItem.Value); var type2 = protypeda.Find(p = p.typeFather = id1); ddltype2.DataSource = type2; ddltype2.DataTextField = typeName; ddltype2.DataValueField = typeId; ddltype2.DataBind()
31、; int id2 = Convert.ToInt32(ddltype2.SelectedItem.Value); var type3 = protypeda.Find(p = p.typeFather = id2); ddltype3.DataSource = type3; ddltype3.DataTextField = typeName; ddltype3.DataValueField = typeId; ddltype3.DataBind(); txtregisterDate.Text = sup.registerDate + ; txtTax.Text = sup.Tax; txtRemark.Text = sup.Remark;/把修