请假申请功能_第1页
请假申请功能_第2页
请假申请功能_第3页
请假申请功能_第4页
请假申请功能_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.1问题背景本例开发一个简单的请假申请功能,包括创建及编辑请假单,请假单查找,请假审批流程,本节拟定的请假单包括如下信息:1)申请人:申请人默认是当前登录用户,必填项。2)请假天数:可以是小数,必填项。3)开始日期:开始休假的日期,必填项。4)请假事由:一段文本,描述请假事由,可以不填。(用户运用熟练后,可以自行添加其他信息)我们需要开发下述对象:1)请假单对象:将请假单保存到数据库,以及能从数据库查找请假单。2) 请假单视图:查找、编辑请假单的画面,包括列表(tree)和表单(form)两个视图。3) 菜单:准备开发三级菜单:请假申请/请假单/请假单1。点击“请假单1”时,进入请假单列表视图,可以查找或创建请假单。4) 请假单动作(Action):请假单动作把对象、视图、菜单关联到一起。2.2配置详解2.2.1创建请假对象首先我们要给当前用户赋予开发权限,用系统默认的超级用户Admin登陆,然后点击菜单:设置/用户/用户,选择要赋予开发权限的用户,点击“编辑”按钮,在“应用程序”里选择“设置”,然后在“易用性”里勾选“技术特性”,点击“保存”。1) 点击菜单:设置/技术/数据库结构/模型,点击“新建”按钮,创建请假单对象。2) 对象名:请假单对象:x_qingjd3) 字段:包括四个字段,申请人(x_shenqr),请假天数(x_tians),开始日期(x_kaisrq),请假事由(x_shiyou)。4)注意:从界面上创建对象时,对象及字段标识符必须是x_开头,后面还会介绍编写代码来创建对象,编写代码创建对象时,就没有这个限制。创建请假单对象及创建字段的参考画面如下:点击“添加一个项目”逐个创建字段:

首先添加“申请人(x_shenqr)”这个字段,各种选项如下所示:本画面中的“字段类型”在后面的“openerp对象”章节会讲到,“对象关联”通俗的讲,就是该字段里面的内容是从哪个对象里取值,本字段“申请人”是从“用户”里取值,所以这里就填“用户”所对应的对象“res.users”。然后再用同样的方法逐渐创建其他字段,如下:点击“保存”,这样“请假单对象”及其字段就创建完毕。创建视图创建好对象后,只是在数据库里有“请假单”这张表,要能在界面上显示这张表,还需要为这个对象创建视图。点击菜单:设置/技术/用户界面/视图,点击“创建”按钮,依次创建请假单列表(tree)和请假单表单(form)两个视图。请假单列表:视图名称:请假单列表视图类型:树形列表(tree)对象:x_qingjd,即刚才创建的请假单对象,如果填写的对象标识符不正确的话,保存时会提示错误。子栏位和继承视图不填。优先级:1,Action通常会关联到多个视图,优先级表示多个视图的显示顺序,数字越小越先显示。通常列表总是最先显示,其次是表单。视图结构:视图结构是视图中最重要的部分,也是最复杂的部分。视图结构定义要在视图中显示哪些字段,及显示属性(如只读、必填、隐藏等)°Select=”l”表示,在列表视图中,可以按该字段查找资源(记录)。1)请假单列表视图树形视图结构如下:<?xmlversion=”1.0”?><treestring=”请假单”〉<fieldname=”x_shenqr”select=”1”/><fieldname=”x_tians”/><fieldname=”x_kaisrq”select=”1”/><fieldname=”x_shiyou”/></tree>

同理创建“请假单表单”视图。视图名称:请假单表单视图类型:表单(form)对象:x_qingjd优先级:2)请假单表单视图内容如下<?xmlversion=”1.0”?><formstring=”请假单”〉<group><fieldname=”x_shenqr”/><fieldname=”x_tians”/><fieldname=”x_kaisrq”/><fieldname=”x_shiyou”/></group></form>

2.2.2创建菜单和Aciton创建菜单,点击设置/技术/数据库结构/模型,查找刚才创建的“请假单”对象,点击打开,在表单的下方有个“创建菜单”的按钮,点击进去。•聖国連dF»*自現罠对豪■密耳口中n创在 +Tr-aniignBModul命蛍择菱叠划耳持盍烷程A_ksi»q科站日期平可枳罕目疋巽在总!1_油?*1甲璋宙人ma*iy?onfl不丑择甯13卑X亭嵌x._jhi艸V1岸艇事白目罡文宇能XjrtlW韦询石可裕第目龍咒亨跟进去后,点击“上级菜单”右边的下拉按钮,点击“创建并编辑”,新建一个“请假申请”的父菜单,各字段含义如下:1)完整路径:不用填,系统自动生成。2)菜单:请假申请,用于菜单显示的文字。3)序号:在菜单列表中的显示位置,数字越小越显示在上位。4)上级菜单:由于本菜单式顶级菜单,不要父菜单。5) 动作(action):点击菜单时将触发的Aciton,本菜单仅仅是父菜单,不触发Aciton,故不填。6) 组:只有这里定义的组(group)才能看见本菜单,如果不填,表示任何组都可以看到。暂时不考虑菜单权限,故而不填。点击“保存”。父菜单建好后,按下图创建“请假单“菜单。点击“创建菜单”按钮,系统会自动创建菜单和菜单对应的Actiono该Action访问请假单对象,依次调用请假单列表和请假单表单显示数据。

再点击“创建菜单”,创建二级菜单“请假单”的下级菜单:创建完毕后,点击菜单:设置/技术/用户界面/菜单项。可以看到“请假申请”是顶级菜单,“请假申请/请假单”是二级菜单,“请假申请/请假单/请假单1”是三级菜单。点击“请假申请”,可以查看该菜单的详细信息:因为“请假申请”是顶级菜单,所以其完整路径就是“请假申请”,而“请假单”是其子菜单,所以在子菜单一栏会显示“请假单”这一项。

请愀申诵■AH1 FrdL砂二:!■'>**■図吟MilM申:aJ.na*SfO&.OPEN4子M*ffw109RV同理可以查看“请假申请”的子菜单的详细信息:“请假单1”是最下级菜单,所以其子菜单一栏为空,其路径是“请假申请/请假单/请假单1”。

揭开Action的面纱前面介绍过,是Action把对象、视图、菜单等各个元素集成到了一起,那么Aciton到底是个什么东西呢?点击菜单:设置/技术/动作/窗口动作,在动作对象中输入“x_qingjd”查询,得到“请假单1”动作,点击打开。从Action编辑画面,可以看到,Action关联了对象(x_qingjd)、视图(请假单列表和请假单表单),还有其他一些属性字段。上述画面中各字段的含义,参见后文的“菜单和动作”章节。2.2.3权限配置在实际工作中,经理能看到所有下属递交的请假单,而下属自己只能看到自己递交的请假单,所以这里要进行权限配置。首先创建一个“经理”用户和两个“员工”用户,点击菜单:设置/用户/用户,点击创建,写好Name和电子邮件地址,其他暂时不填,如下:用户创建完毕后,再对这三个用户进行分组。首先要创建一个“审批组”,点击菜单:设置/用户/组,点击“创建”,填好各项如下所示,因为事先创建好的用户中,经理负责审批,所以在用户栏里添加“经理”这一个用户:

点击“保存”,然后再创建一个“员工组”,如下所示:ftri'■I*KA■鼎■4«S点击“保存”,然后再创建一个“员工组”,如下所示:ftri'■I*KA■鼎■4«SHPana*A-VHPWMamygZQiMtaocnOwhi^IMMl|Hl说tit憎孕g#g*M科間u耳ft申£分组好了后,要让“请假单”这个对象与这两个组相关联,也就是这两个组里有权限用到“请假申请”这个功能,我们还需进行如下操作:点击设置/技术/数据库结构/模型,选择点击“x_qingjd”对象,然后在访问权限一栏里添加刚才创建的两个组:点击“保存”。系统并不能自行的进行权限设置,还需要用户设置一定的安全规则。点击菜单:设置/技术/安全/设定/记录规则,点击“创建”,新建的内容如下:这里规则定义里的内容是:填完后,点击“保存”,这样员工自己只能看自己的请假申请,而经理可以看到所有人的请假申请[('x_shenqr','=',user.id)]2.2.4工作流(审批)工作流的设置是一个比较复杂的问题,这里只作流程的介绍,具体请深入学习OpeERP软件。请假单的审批是一个过程,在OpenERP里面叫做工作流(workflow),拟定请假审批有4个状态,分别是“草稿(qingjd_draft)”、“待批(qingjd_wait_prove)”、“批准(qingjd_proved)”、“拒绝(qingjd_rejected)”。首先在原先建的请假单模型中添加一个“状态”字段,各项如下:

其中“选择项目”内容为:点击“保存并关闭”。准备工作做完后,就开始制作工作流。首先拟定审批流程为:员工递交“请假申请”,“请假申请”的状态由“草稿”转变为“待批”,经理批准或拒绝请假申请,“请假申请”状态由“待批”转变为“批准”或“拒绝”。在清楚了审批流程之后,就可以创建工作流了,点击菜单:设置/技术/工作流/工作流,点击“创建”,用户可以任意命名,这里填“请假单审批”,资源对象填先前创建的请假单对象“x_qingjd”,然后点击“添加一个项目”来创建4个状态,首先创建“草稿(qingjd_draft)”状态:

工年专tft0fHit iiljC|lriQJd_draift工和dn■鮒工作洁馬止V:皿取甲帀眦■U子工作流条件TTfiSt忙■码(^ubnow."ja或胡作Oi虽答血代*“待批(qingjdwaitprove)”状态:0J样勺方法建立其他3“待批(qingjdwaitprove)”状态:0J样勺方法建立其他3个状态。”H>“Python动作”内容为write({'x_state':'qingjd_wait_prove'})“批准(qingjd_proved“批准(qingjd_proved)”状态:工fv]*评i±EJFE•E*:y-P**4|-H]“Python动作”的内容为:write({'x_state':'qingjd_proved'})“拒绝(qingjd_rejected)”状态工無工O"握軒站E整1I>晝華・qr遣PM*UE产工作流条件At毎•富|JHK-SjH«-aadToQincZt*l P1rsflIdLwjiVr^KTlJ■ii“Python动作”的内容为:write({'x_state':'qingjd_rejected'})状态建立好了之后,还需要在视图中显示,所以要修改原先的视图代码,这里只修改表单视图(form),如下:<?xmlversion="1.0"?>vformstring二"请假单"〉<header>vbuttonstring二"送批"name二"draft_to_wait"x_state="qingjd_draft"/>vbuttonstring二"批准"name二"wait_to_proved"x_state二"qingjd_wait_prove"/>vbuttonstring="拒绝"name二"wait_to_rejected"x_state="qingjd_wait_prove"/><fieldname="x_state"widget="statusbar"statusbar_visible="qingjd_draft,qingjd_wait_prove,qingjd_proved"statusbar_colors='{"qingjd_wait_prove":"red","qingjd_proved":"blue"}'/></header><group><fieldname="x_shenqr"/><fieldname="x_tians"/><fieldname="x_kaisrq"/><fieldname="x_shiyou"/></group></form>状态之间会有转变,这里称之为“迁移”,例如:员工递交请假单是从“草稿”转变到“待批”;经理批准请假,是从“待批”状态转变到“批准”状态。而状态的转变,在现实生活中是通过“递交”或者“签字”的方式进行的,而OpenERP是通过点击按钮。首先,“草稿”只能转变为“待批”状态,所以点击“草稿(qingjd_draft)”,然后点击“迁移,”在“目标活动”点击“添加一个项目”,内容如下:im:传出辻榕[E*u11杯讥谕1E气<皓IB肌沖、Angjd_艸砂_pr#IS-逹就込止“必须的用户组”选择“员工组”是因为请假单是员工递交的,与“审批组”成员无关(这里没有考虑审批组成员的请假)。“待批(qingjd_wait_prove)”是由“草稿”转变而来,而其又可以转变为“批准”和“拒绝”,所以同理,在“源活动”添加内容如下:

打卅:HAilI*EE■g曰鶯辽“]tfli:AlH-qlngj^_wafl^prnv#dF-3ffl_l0_irtr3llTru・*gAiAjCffir?True在“目标活动”添加下面两个“迁移”:ir>i 酋a:聞穆FT列KEqinaj<S0E#v«d侨皓ilstn林岳iTrueI價打3ffiiAftqm-Dj-dfejede-d1TJ1晖列Imu-iNEH(恬锻童雜}^H-嵯1啊削户■镇■D*qinunj.iY^l.pfQVDqin<j|d_r<ij<ic1fl<ii*g 塑程39宸选贞wart_tc_f<U*ti*clTru«TfUfr吉4iJjo-rtfiit“批准(qingjd_proved)”是由“待批”转变而来,而其实结束状态,所以在“源活动”添加内容如下:打*n轲人迁游甲列施 .1*E±T*世古曲处金*+qtaig|<|_crwfinwart_»_prGVBdTni*“拒绝(qingjd_rejected)”也是由“待批”转变而来,而其也是结束状态,所以在源活动”添加内容:豹幵】H-AU世 豪汕的III户《1 帀眦個 ”小citnfll-d™wa^-P*°^* rgQlniQK_r«jv<iad ■-c± 44菠.咼齐*诂盘空略ttf耕fM*AwaiiLtc_r«Jodt«-djftfrTme所有“状态”和“迁移”就创建完毕,点击“保存”,“请假单审批”工作流就创建完毕,用户就可以使用“请假申请”和“请假审批”功能。2.2.5测试回到主菜单,画面上增加了菜单“请假申请/请假单/请假单1”。点击请假单,进入列表视图,点击新建按钮,进入创建请假单画面。

点击“创建”。点击“保存”。2.2.6深入数据库在上述界面操作中,依次创建了对象、视图、菜单和系统动作,作成了“请假申请“的功能。在界面操作的背后,OpenERP内部做了哪些动作呢?实际开发工作中,总是会碰到这样那样的问题,只有明白了其背后动作,才知道从哪里查找原因,解决问题。本节深入OpenERP数据库,探求背后内幕。对象当在界面上创建x_qingjd对象时,OpenERP在数据库中新建了一张表x_qingjd,用于保存请假单对象,如下:X_qingjdTableid[PKinicreate_datetimestampvwrite_datetimestampvwritintex_shenqrintegerx_tiansdouble匚x_kaisrqdatex_shiyoutext112009-12-272:2009-12-20□:131.52009-12-29休年假x_qingjd对象及其字段的信息,也写入了数据表ir_model,字段信息在ir_model_fields。ir_model_fields通过model_id字段和ir_model外键关联。如下:ir_modelTable[Pl^serialmodelcharactervanamecharactervarying(6statecharactervainfotext185 1xqingjd谙假单manualir_model_fieldsTableidmodelmodelnamerelationSEfield_descripttype[PK]characteintegercharacteicharacteclcharactervacharacter1jEElxqingjd35xshenqrres.users□申谙人many2one5SSxqingjdS5xtiansNULL□谙假天数float5S9xqingjdS5xkaisrqNULL□开始日期date590x.qingjd05xshiyouNULL0谙假爭由text视图界面上创建的视图,写入在表ir_ui_view,其中视图结构保存在arch字段中,是一段XML文本。如下:ir_ui_viewTable限]serialnamecharactervamodelcharactervatypecharactfarchtextfield_parercharacter、priorityinteger122假单列表1xqingjdtree<?xinlversion=":1123谙假单表单xqingjdformversion=":2菜单和动作在界面上创建菜单(父菜单和子菜单)时,菜单信息保存在表ir_uimenu,如下:ir_ui_menuTableid[PK]serialparentintegernamecharactericoncharactervacreateintegecreate_datetimestampvwrititimewriteintegsequenceinteger103卜谙假申谙STOCKOPEN12009-12-272:10104103 圧诘假单STOCKJNDEP-12009-12-272;1101动作(Action)信息在表ir_act_window,ir_act_window_view,ir_values中。其中Action的基本信息在ir_act_window中,字段res_model定义了和本Action关联的对象。Action和视图的关联信息在ir_act_window_view中,和菜单的关联信息在ir_values中。ir_act_windowTable嘯[PK]ilnamecharactetypecharactervarying(32'usagicharaviewjcintegerres_modelcharactervaview_t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论