NCWeb自助单据开发流程
- 格式:docx
- 大小:33.13 KB
- 文档页数:13
NC单据开发初学者手册编写者:NC-UAP薄奇赖宏伟用友软件股份有限公司二零零六年四月目录第一章概述 (1)1.1基本概念 (1)1.2单据开发主要流程 (1)第二章搭建开发环境 (1)2.1本文软件开发环境 (1)2.2给PD打补丁 (1)2.3建立数据库 (1)2.4建立开发工程 (2)第三章数据库表pdm及SQL脚本的生成 (3)3.1数据模型 (3)3.2生成pdm步骤 (3)3.3生成SQL脚本步骤 (7)第四章生成数据字典 (11)4.1步骤 (11)第五章生成VO (15)5.1准备工作 (15)5.2生成VO (18)第六章第一个单据 (20)6.3步骤一、建立单据模板 (20)6.4步骤二、建立工程包结构 (25)6.5步骤三、定制界面控制类 (25)6.6步骤四、定制界面UI类 (26)6.7步骤四、连接模板到NC集成辅助开发工具中查看效果 (26)第七章参照 (28)7.3什么是参照 (28)7.4建立参照类 (28)7.5在单据模板上设置参照 (29)第八章单据模板中的公式使用 (33)8.1什么是公式 (33)8.2给单据模板设置公式 (33)第九章参考文献 (36)第一章概述1.1基本概念单据:比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。
表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明细信息,比如具体的事项和金额;单据类型:一个业务系统为了使结构更清晰,通常也是分层的。
比如,供应链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型,作为唯一标识;模板:单据开发涉及到三大模板(单据模板、查询模板、打印模板)。
单据模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询对话框,打印模板定义了单据信息打印到打印机的样式和格式;VO:值对象,用作传输数据的载体聚合VO:单据一般由表头和表体构成,因此单据的数据表通常设计成主表和子表。
N C开发流程一览表说明文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]单表体的卡片型单据制作单表体的单据:指装载界面数据的聚合VO表头为空,只存在一组表体VO。
UI工厂设计了接口ISingleController,单表体单据界面控制类应实现此接口,并实现isSingleDetail 方法。
前期准备:单据注册,模板初始化等等,在构造好类框架后要修改界面控制类。
1.注册单据类型2.注册VO对象如下:public String[] getBillVoName(){Return new String[]{};}public String getPKField(){Return “pk_sample”;}public String getChildPKField(){Return “pk_sample”;}注意此时的表头,表体的VO类一致。
3.是否走平台public int getBusinessActionType(){R}4.注册按钮public int[] getCardButtonAry(){Return new int[]{,,,,,,,};}最重要的一步,实现isSingleDetail方法。
public Boolean isSingleDetail(){ueryHeadAllData( (getUIController().getBillVoName()[1]),getUIController().getBillType(),strWhere);lear();if(queryVos==null||==0){getBillUI().setBillOperate;getBufferData().setCurrentRow(-1);}else{etBillOperate;getBufferData().setCurrentRow(0);}}/***对一组VO数据进行分类**@param待分类的VO数据*@return 分类的结果*/Private AggregatedValueObject[]terator()For(;();i++){Object key=();ArrayList al=(ArrayList)(key);BetChildrenVO((SuperVO[]).toArray(new SuperVO[0]));}Return bills;}对数据增,删,改的控制因为是虚拟主子表的数据结构,它在进行数据的操作时需要额外的控制。
NC操作手册一、维护采购入库1、采购订单的维护在供应链下维护采购订单点击进入以下页面:注意:在进行采购订单维护的情况下,业务流程选择变通采购业务,然后点击增加按钮—自制单据,蓝色部分为必输项,故一定要填写完整.维护的时候注意税金的选择,单价的输入等。
操作完成后,进行保存,然后点击审核。
2、采购到货,维护到货单点击进入以下页面找到刚维护好的采购订单,进行采购到货的维护,维护好后进行审核.产品如是AB类物资,那要进行检验,同样维护3、采购入库单点击进入以下页面。
注意:在维护采购入库单的时候,一定要注意仓库的选择,在填写完整后进行保存签字。
如果在采购签字后发现数量或其他项填写错误,但无法取消签字的情况下,立即与财务联系,由财务部门进行取消.注意:不管是哪类物资,只有仓库管理员见到货检验合同后才可以办理入库手续。
补充内容:供应商和材料数量务必准确,到货数量和入库数量应该一致。
入完库后,把入库单打出来给采购部确认签字,仓管员自己留一联。
二、其他入库柳州分公司手工自制其他入库单据的两种业务为:1、面料在进行裁剪后进行入库的处理,那么在入库的时候注意单价的输入,收发类别选择自制入库。
2、回料入库业务,在回料从车间入库后进行其他入库,收发类别选择回料入库,注意单价的录入.三、采购发票的维护在采购入库做好的情况下,采购员收到发票后,就可以进行发票的维护了:点击进入以下页面:注意:在维护发票的时候,蓝色部分为必输项,且供应商、发票号码一定要填写正确。
在维护发票的时候,不含税金额及税金一定要与发票一致。
财务以此作为付款的依据。
如发现采购订单维护的单价与发票不一致,请立即与采购科长进行协调,由采购科长进行修改。
四、材料出库在维护材料出库单据的时候,首先进行BOM表的维护,这里就不详细进行介绍了。
在这里直接介绍材料出库单据操作:点击进入以下页面:通过BOM表的材料,AB数量物资,不可以手工进行自制单据,一定要通过生产计划进行发料。
此文件受到UFIDA的保护,并已在保护中心注册,外泄必纠!UFIDAGUID1{162153F0-8B62-6E8D-1D46-54499B5A622B}UFIDAGUID1{31C26706-1290-5BDE-DD7D-D594B804C93C}NC单据开发初学者手册编写者:NC-UAP薄奇赖宏伟用友软件股份有限公司二零零六年四月共享知识 分享快乐1页眉内容第一章 概述 .1.1 基本概念 .......................................................... 1. 1.2 单据开发主要流程 .................................................. 1..2.1 本文软件开发环境 1... 2.2 给 PD 打补丁 1... 2.3 建立数据库 1... 2.4 建立开发工程 2...第三章数据库表pdm 及SQL 脚本的生成 (3)3.1 数据模型 3... 3.2 生成 pdm 步骤 3...3.3 生成 SQL 脚本步骤 .................................................. 7..4.1 步骤第五章 生成 VO (15)5.1 准备工作 ........................................................... 1..5. 5.2 生成 VO ............................................................................................... 1.8.6.3 步骤一、建立单据模板 ............................................... 2..0 6.4 步骤二、建立工程包结构 ............................................. 2..5 6.5 步骤三、定制界面控制类 ............................................. 2..5 6.6 步骤四、定制界面 UI 类 ............................................. 2.6. 6.7 步骤四、连接模板到 NC 集成辅助开发工具中查看效果 (26)目录第二章 搭建开发环境 . (1)第四章 生成数据字典 . (11)1.1..第六章 第一个单据 . (20)第七章 参照 . (28)7.3 什么是参照2..8.7.4 建立参照类2..8.7.5 在单据模板上设置参照.............................................. 2..9第八章单据模板中的公式使用. (33)8.1 什么是公式....................................................................... 3..3 .第九章参考文献. (36)第一章概述1.1 基本概念单据:比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。
WEB开发流程及规范Web 开发的分散性和交互性,决定了Web 开发必须遵从一定的开发规范和技术约定。
只有每个开发人员都按照一个共同的规范去设计、沟通、开发、测试、部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量。
一、项目的角色划分如果不包括前、后期的市场推广和产品销售人员,开发团队一般可以划分为项目负责人、程序员、美工三个角色。
项目负责人在我们中国习惯称为"项目经理",负责项目的人事协调、时间进度等安排,以及处理一些与项目相关的其它事宜。
程序员主要负责项目的需求分析、策划、设计、代码编写、网站整合、测试、部署等环节的工作。
美工负责网站的界面设计、版面规划,把握网站的整体风格。
如果项目比较大,可以按照三种角色把人员进行分组。
角色划分是Web项目技术分散性甚至地理分散性特点的客观要求,分工的结果还可以明确工作责任,最终保证了项目的质量。
分工带来的负效应就是增加了团队沟通、协调的成本,给项目带来一定的风险。
所以项目经理的协调能力显得十分重要,程序开发人员和美工在项目开发的初期和后期,都必须有充分的交流,共同完成项目的规划和测试、验收!二、开发工具的选取不象C/S结构程序开发,可以一门语言从头到尾,你用Delphi,就是Delphi程序员,你用VC ,你就是VC程序员。
B/S结构的Web开发工作,工具的选择是一件痛苦的事情。
从Windows到Linux,从IIS到Apache,从J2EE到 .NET,从COM到.NET到EJB组件......还有Asp、、Jsp、Php、Perl、Javascript、Vbscript...... ..美工也轻松不了多少,什么"网页三剑客" "新网页三剑客"、FrontPage、Photoshop、CorelDraw......谁都说自己是最强大的!我们的经验是,选用工具时最好是统一的,比如美工统一用DreamwaverMX制作网页,程序员全部用文本编辑器书写代码。
单据开发过程:1、创建元数据
1、启动中间件
2、发布元数据
3、生成建库sql脚本并执行
4、启动客户端
5、打开客户端二开工具
功能节点:客户化—>二次开发工具—>uap集成开发工具6、新增业务组件
7、新建完成后打开资源开发向导,设置单据模板、查询模板、打印模板、UI组件、发布功
能节点。
(也可以不用向导,双击组件进入资源管理界面,一个个进行单独创建)
9、资源管理界面,在已发布节点上右击—>生成代码到本地,选择路径为workspace
中的src目录。
8、如果是新增的模块,则需要账套管理员进行业务初始化。
9、授权
10、重新构建工程,重启客户端就可以看到界面。
NC中开发业务单据的通用步骤
NC中开发业务单据的通用步骤(不用UI工厂)
1、在“数据字典管理”中导入数据字典(PDM文件)
2、对刚导入的数据表进行检查,把所有日期型的字段类型改为datetime,否则生成VO时不是UFDate或者UFDatetime型
3、注册新的单据类型,绑定功能节点编号
4、注册新功能点,绑定ClientUI类
5、在“自定义菜单”中选择“恢复默认结构”,使得新注册的功能点可以归属到相应的模块节点下
6、分配新功能的权限到相应的角色中,否则无法使用该功能
7、新建单据模板,修改模板内容,并生成查询模板或打印模板或报表模板
8、在“功能节点默认模板”中,把上面生成的各类模板绑定到该新功能节点
9、生成VO对象,添加到Eclipse工程中去(public包)。
除表头、表体的VO以外,还需要新增一个聚合VO,继承于HYBillVO
10、准备好ClientUI、ClientEH、ClientCtrl的类代码框架
11、为了可以保存表头表体的数据,需要在“客户化”>“单据管理”>“VO对照管理”中进行VO对照
12、定义该单据类型的编码规则
13、定义与该单据类型有关的审批流,加入制单、审核两个步骤的负责人/角色。
制剂销售NC 系统操作流程介绍销售流程都分为商务线流程(指由商业公司统一销售,利用约定表,流向,统方等等进行的结算)和现已取消的非商务线流程(指制药公司直接发货给终端的一种销售模式);各业务员在做销售合同时需注意选择正确的流程模式,避免订单合同输入错误。
以下是根据(宜昌长江药业有限公司)的商务线流程做一个大致的说明:商务线流程图销售合同订单维护 销售出库 发票维护 对账账户初始化银行对账单到账通知单收款回执单商品流出单(商业公司提供流向单单业务员提供统方单)回款流向核销单费用约定表(业务大类和项目费用)收款发票核销单 费用计提单费用使用单非商务线流程与商务线流程的区别就是没有商品流出单和回款流向核销单这两部分,费用约定表,商务线是费用约定表与回款流向核销单绑定,但是非商务线的费用约定表是直接与收款发票核销单去绑定,生成费用计提单。
非商线流程图业务员主要操作以下几大节点:销售合同、订单维护、发票维护、收款回执单(或商务专员)、收款发票核销单(或由商务专员操作)、费用约定表。
宜都仓库操作:销售出库单商务专员操作商品流向单和回款流向核销单。
一、【销售合同】进入系统后选择【供应链】-【合同管理】-【日常业务】-【销售合同】-【增加】-【自制】录入表头部分字段。
合同名称:销售合同合同类型:01 商务合同02非商务合同(视情况而定,这里我们主要说下商务合同);然后输入【客户】【部门】【业务员】;注:蓝色字体部分为必须输入部分。
选择【收付款协议】;录入表体字段;录入表体中的数量和单价;录入好合同信息后;点击保存审核执行生效;合同制作完成。
二、【订单维护】系统选择【供应链】-【销售管理】-【销售订单】-【订单维护】-【业务流程】-【商务线流程】*注意:商务线模式的时候千万别选择成非商务模式。
点击【增加】—【销售合同日常业务】;出现以下界面;选择有用信息点击确定;出现以下界面,一定要把对应的合同前面的勾打上,点击确定;这样表头和表体基本上大多数字段都会从合同中被引用过来,有几个可能需要手工填写下:如图;三:【销售出库】系统选择【供应链】-【库存管理】-【出库业务】-【销售出库】-【业务流程】-【商务线流程】;点击【增加】-【销售订单】选择相应条件,点击确定;选择做好的销售订单,点击确定;这样表头和表体基本上大多数字段都会从合同中被引用过来,有几个可能需要手工填写下:如图;输入出货仓库实发数量等相关信息。
精心整理单表体的卡片型单据制作单表体的单据:指装载界面数据的聚合VO 表头为空,只存在一组表体VO 。
UI 工厂设计了接口ISingleController ,单表体单据界面控制类应实现此接口,并实现isSingleDetail 方法。
1. 2. };}}}注意此时的表头,表体的VO 类一致。
3.是否走平台publicintgetBusinessActionType(){Return}4.注册按钮publicint[]getCardButtonAry(){Returnnewint[]{IBillButton.Query,};}//}ISingleController用来支持单表头或单表体的单据,因此,当isSingleDetail方法返回true时,单据为单表体;当返回false时,单据为但表头。
单表头的卡片型单据制作除了显示有很大差异外,单表头于单表体的唯一区别在于isSingleDetail方法的返回值。
另外,在单表头界面增加浏览按钮和去掉行操作按钮。
虚拟主子表的卡片型单据制作虚拟主子表单据:指的是那种数据来源于一张表,却根据(自定义的)特定规则虚拟主子表的结构,将一部分放到表头,剩下的字段放到表体的单据。
它通常用于数据的分组,即把数据根据(自定义的)特定字段的值进行分组。
字段值相等的数据自然的被归为一类,然后,把特定字段放到表头显示,属于它的一组数据在表体列表1.2.}3.StringstrWhere=query.getWhereSql();If(strWhere==null)strWhere=”1=1”;strWhere=”(”+strWhere+”)and(isnull(dr,0)=0)”;//将查询对话框条件加到整个查询条件后If(getHeadCondition()!=null)strWhere=strWhere+”and”+getHeadCondition();//查询数据表数据SuperVO[]queryVos=getBusinessAction().queryHeadAllData( Class.forName(getUIController().getBillVoName()[1]),}}/***对一组VO数据进行分类**@param待分类的VO数据*@return分类的结果*/PrivateAggregatedValueObject[]//聚合值对象数据createBillVOs(CircularlyAccessibleValueObject[]vos){//循环获得值对象数组//设置表头数据bill[i].setChildrenVO((SuperVO[]).toArray(newSuperVO[0]));}Returnbills;}对数据增,删,改的控制因为是虚拟主子表的数据结构,它在进行数据的操作时需要额外的控制。
HR自助服务单据开发快速入门用友软件股份有限公司北京分公司客户开发部2011年3月目录1、NC自助服务单据开发 .....................................1.1.总体概述...............................................1.2.开发环境搭建...........................................配置Java运行时环境...............................配置JAVA_HOME环境变量............................下载并解开Dorado5开发包..........................安装Dorado 5 .....................................Eclipse开发环境搭建 ..............................搭建项目工程......................................1.3.自助单据开发流程.......................................建立数据模型......................................导入数据字典......................................单据模板初始化....................................导出Java源代码...................................建立视图层ViewModel。
............................生成JSP页面......................................建立后台控制类....................................功能节点注册......................................注册功能按钮......................................按钮处理事件的定义................................单据属性设置......................................附录:.........................................................轻量级参照实现方式:...........................................审批流配置注意点...............................................轻量级查询模板实现方式.........................................按钮动作前后台交互示例:.......................................增加按钮动作处理.......................................1、NC自助服务单据开发1.1.总体概述NC自助服务模块使用的是BSTEK公司推出的Dorado 5展现中间件技术。
通过将Dorado和NC-UAP 平台的整合,可以在自助服务中引用NC-UAP平台中的单据模板,提高了在自助下开发单据的效率。
Dorado技术详细介绍请见BSTEK公司官网:1.2.开发环境搭建1.2.1.配置Java运行时环境通过Sun官网获取JDK开发包,下载的开发包解压缩到本地非中文名称的目录中;也可以直接使用NCHOME中自带的JDK开发包,如本机中NCHOME的JDK开发包D:\nchome56\nchome\ufjdk1.2.2.配置JAVA_HOME环境变量对于环境变量的配置就不用多说了,本机的配置如下:1.2.3.下载并解开Dorado5开发包将下载的zip文件解压缩到本地非中文名称的目录中,如本机的E:\dorado5.21.2.4.安装Dorado 5在确保系统已经配置过JAVA_HOME的前提下,并双击运行dorado 5开发包中的setup.bat文件,该文件进行dorado5开发包的文件初始化工作。
(特别声明:绿色食品,setup.bat的所有操作都是针对开发包所在的目录作初始化工作,不会对该目录之外的内容进行修改。
)首先会打开一个命令控制台,要你确认是否执行初始化的工作:按任意键继续初始化工作:这时候系统会在桌面上自动的生成一个dordo5 studio的快捷启动图表,并在控制台中出现让你选择是否直接启动dorado的集成开发环境,也就是dorado5的studio。
以下统称studio。
如果选择y并按回车键确认打开studio,可以看到下图:1.2.5.Eclipse开发环境搭建Eclipse开发环境的搭建在此就不做介绍了,主要的环境有NC56、eclipse开发环境、nc56插件。
1.2.6.搭建项目工程对于自助服务的开发,需要同时用到Eclipse和Dorado工程,对于项目工程需要将Eclipse工程目录和Dorado工程目录整合到一块,以便对在两个开发工具对同一工程进行开发。
本例中使用的开发工程为NC-HR自助模块的源开发工程HR_WEB5.6_dev。
在Eclipse中导入HR_WEB5.6_dev工程,如下:在Dorado集成开发平台中导入HR_WEB5.6_dev工程如下:1.3.自助单据开发流程在自助服务下开发的JSP界面,可将NC-UAP平台下的单据整合到自助服务中,这是通过将单据模板信息解析成Dorado控件来实现的,由于是根据单据模板信息表中的数据进行解析的,对于用元数据制作的单据模板,在自助服务界面目前还没有做到很好的兼容,解析过程中还没有增加对元数据的解析,故目前自助服务只能够对用数据字典制作的单据模板进行正确的解析,下面介绍在NC56中,如何用数据字典在自助服务下开发轻量级单据界面。
1.3.1.建立数据模型根据具体的业务在PowerDesigner中建立对应的业务模型,本例中介绍的为休假计划的业务。
1.3.2.导入数据字典具体的数据字典导入在【客户化】→【二次开发工具】→【系统管理工具】→【数据字典管理】节点来实现导入。
1.3.3.单据模板初始化在完成数据字典导入之后,就可以在【客户化】→【二次开发工具】→【模板管理】→【单据模板初始化】节点通过数据字典制作相应的单据模板,具体的与NC5.2初始化单据模板一致。
本例初始化完的单据模板卡片界面显示如下:1.3.4.导出Java源代码通过UAP集成开发平台导出Java源代码。
在通过数据源生成VO代码之前,一定要保证在数据库中将数据模型对应的表结构建立,否则在选择数据库表处看不到单据对应的数据库表,具体的建表SQL脚本可以在建模时,通过PowerDesigner 生成。
选择完对应的数据库表,设置对应的VO信息以及对应到文件导出目录(%当前eclipse工程% / src / public 包)后,点击“确定”按钮,即可完成对VO的导出。
1.3.5.建立视图层ViewModel。
ViewModel是一种用于封装界面逻辑和操作逻辑的对象。
即视图中包含哪些数据、这些数据以什么方式展现、视图中包含哪些控件、这些控件会激发什么操作等等。
我们可以把ViewModel看作是Dataset和各种控件的容器。
ViewModel一般不用于定义各种控件最终在显示的布局,控件布局应通过其它方式进行定义。
在通常情况下,我们利用JSP来完成对ViewModel中定义的控件进行布局。
在Dorado集成开发平台中打开项目工程,在对应的目录下,右键鼠标,如下:选择新建“Module“,进入ViewModel新建向导。
选择通用的视图模型对象(Common ViewModel)即可,点击“OK”,输入视图模型对象名称,即会在相应的目录下生成一个视图模型对象的XML配置文件,配置文件名称为[输入对象名称.view.xml],如本例在新建视图模型对象的时候输入的名称为LeavePlanOne,则生成的视图模型对象的名称为:1.3.6.生成JSP页面对于自助JSP页面是通过ViewModel生成的,具体生成JSP的操作如下图所示:选择相应的路径以保存生成的JSP文件。
再生成JSP页面之后,需要对生成的JSP页面先进行简单的布局配置,如果需要配置其他在ViewModel中定义的控件显示,在定义完控件后再做详细的页面布局。
对于使用NC-UAP平台的单据模板时,对应管理型界面的JSP界面配置如下:<%@ page contentType="text/html; charset=UTF-8" %><!—引用用友在自助下自定义的标签库--><html><head><title></title></head><body><!—-config对应的为ViewModel配置文件 --><body class="NC-BODY-NSCROLL-NPAD"><table cellpadding="0" cellspacing="0" width="100%" height="100%"> <tr><td><u:MenuTag displayType="2" /></td></tr><tr><td height="100%" class="NC-PANEL-NSCROLL"><!—-定义单据模板控件显示位置,本例单据模板为管理型,其他类型的标签详见ufida.tld标签描述文件--><u:ManageBill listPosition="100%"/></td></tr></table></body></d:View></body></html>1.3.7.建立后台控制类新建视图模型后台控制类,由于本例中开发的是带审批流的自助界面,具体的后台控制类应继承。
对于后台控制类的基本配置如下:public class LeavePlanOne extends PFViewModel {/*** 返回单据VO*/@Overridepublic AggregatedValueObject toBillAggVO() throws Exception { // TODO Auto-generated method stubHRAggVO aggVO = this.toAggVO();AggLeaveplanHVO vo = new AggLeaveplanHVO();vo.setParentVO(aggVO.getParentVO());vo.setChildrenVO(aggVO.getChildrenVO());return vo;}/*** 返回对应的单据模板的编码*/@Overridepublic String getBillType() {// TODO Auto-generated method stubreturn "LP01";}@Overridepublic String getBusiType() {// TODO Auto-generated method stubreturn null;}/*** 用于设置表头对应的VO对象*/@Overridepublic Class<? extends SuperVO> getHeadClass() { // TODO Auto-generated method stub}/*** 用于设置表体对应的VO对象*/@Overrideprotected void initBodyTabCodes() {// TODO Auto-generated method stub}}视图模型后台控制类定义完成后,需要将后台控制类与对应的视图模型进行关联,通过设置ViewModel的clazz属性来实现关联。