diff options
| author | rpa (Open ERP) <rpa@openerp.co.in> | 2010-02-19 16:49:04 +0530 |
|---|---|---|
| committer | rpa (Open ERP) <rpa@openerp.co.in> | 2010-02-19 16:49:04 +0530 |
| commit | 171e22208cd09c5638aa2b86ea12157ed5fb178c (patch) | |
| tree | 317df5154434d006a5e28d48269e3fe5e6c0a819 | |
| parent | 0abe3714370e5aedd8179c7dada92eb52013ce18 (diff) | |
| parent | 713ee22c90c89ab4df2d7c1c00c539a2c0c19046 (diff) | |
[Merge]: Merge with trunk addons
bzr revid: rpa@openerp.co.in-20100219111904-gjjnaucpxc1fm0yx
32 files changed, 553 insertions, 962 deletions
diff --git a/addons/crm_hr/board_crm_hr_statistical_view.xml b/addons/crm_hr/board_crm_hr_statistical_view.xml index c70ac559a5e..80dc214f30d 100644 --- a/addons/crm_hr/board_crm_hr_statistical_view.xml +++ b/addons/crm_hr/board_crm_hr_statistical_view.xml @@ -1,27 +1,27 @@ <?xml version="1.0"?> <openerp> <data> - <record model="ir.ui.view" id="view_crm_job_categ_graph"> - <field name="name">report.crm.job.categ.graph</field> - <field name="model">report.crm.job.categ</field> + <record model="ir.ui.view" id="view_crm_applicant_categ_graph"> + <field name="name">report.crm.applicant.categ.graph</field> + <field name="model">report.crm.applicant.categ</field> <field name="type">graph</field> <field name="arch" type="xml"> - <graph string="Jobs by Sections and Categories" type="bar" orientation="horizontal"> + <graph string="Applicants by Sections and Categories" type="bar" orientation="horizontal"> <field name="categ_id"/> <field name="nbr" operator="+"/> <field name="state" group="True"/> </graph> </field> </record> - - <act_window name="Jobs Requests Of The Month by Applied Job" + + <act_window name="Applicants Requests Of The Month by Applied Job" domain="[('month','=',time.strftime('%%m')),('state','!=','done'),('state','!=','cancel')]" - res_model="report.crm.job.categ" + res_model="report.crm.applicant.categ" view_type="form" view_mode="graph,tree,form" - view_id="view_crm_job_categ_graph" - id="act_jobs_categ"/> - + view_id="view_crm_applicant_categ_graph" + id="act_applicants_categ"/> + <record model="ir.ui.view" id="board_crm_hr_statistical_form"> <field name="name">CRM - Statistical Dashboard Form</field> <field name="model">board.board</field> @@ -32,8 +32,8 @@ <hpaned> <child2> <action - string="Jobs Requests Of The Month by Applied Job" - name="%(act_jobs_categ)d" + string="Applicants Requests Of The Month by Applied Job" + name="%(act_applicants_categ)d" colspan="4"/> </child2> </hpaned> @@ -41,4 +41,4 @@ </field> </record> </data> -</openerp>
\ No newline at end of file +</openerp>
\ No newline at end of file diff --git a/addons/crm_hr/crm_hr.py b/addons/crm_hr/crm_hr.py index b122cc6b9e9..5a58af0c3b3 100644 --- a/addons/crm_hr/crm_hr.py +++ b/addons/crm_hr/crm_hr.py @@ -22,24 +22,24 @@ from osv import fields,osv,orm from crm import crm -class crm_job(osv.osv): - _name = "crm.job" - _description = "Job Cases" +class crm_applicant(osv.osv): + _name = "crm.applicant" + _description = "Applicant Cases" _order = "id desc" - _inherit ='crm.case' - _columns = { + _inherit ='crm.case' + _columns = { 'date_closed': fields.datetime('Closed', readonly=True), - 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), - 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"), + 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), + 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.applicant')]"), 'planned_revenue': fields.float('Planned Revenue'), 'planned_cost': fields.float('Planned Costs'), - 'probability': fields.float('Probability (%)'), + 'probability': fields.float('Probability (%)'), 'partner_name': fields.char("Employee's Name", size=64), 'partner_name2': fields.char('Employee Email', size=64), 'partner_phone': fields.char('Phone', size=32), - 'partner_mobile': fields.char('Mobile', size=32), - 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"), - 'type_id': fields.many2one('crm.case.resource.type', 'Type Name', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"), + 'partner_mobile': fields.char('Mobile', size=32), + 'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.applicant')]"), + 'type_id': fields.many2one('crm.case.resource.type', 'Type Name', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.applicant')]"), 'duration': fields.float('Duration'), 'case_id': fields.many2one('crm.case', 'Related Case'), 'ref' : fields.reference('Reference', selection=crm._links_get, size=128), @@ -49,7 +49,8 @@ class crm_job(osv.osv): 'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \ "the partner mentality in relation to our services.The scale has" \ "to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."), - 'phonecall_id':fields.many2one ('crm.phonecall', 'Phonecall'), + 'phonecall_id':fields.many2one ('crm.phonecall', 'Phonecall'), + 'department_id':fields.many2one('hr.department','Department'), } - -crm_job() + +crm_applicant() diff --git a/addons/crm_hr/crm_hr_data.xml b/addons/crm_hr/crm_hr_data.xml index 897434987a4..d52a35f5bae 100644 --- a/addons/crm_hr/crm_hr_data.xml +++ b/addons/crm_hr/crm_hr_data.xml @@ -8,13 +8,13 @@ <record model="crm.case.categ" id="categ_job1"> <field name="name">Salesman</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.categ" id="categ_job2"> <field name="name">Junior Developer</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <!-- Resource(type_id) --> @@ -22,17 +22,17 @@ <record model="crm.case.resource.type" id="type_job1"> <field name="name">Graduate</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.resource.type" id="type_job2"> <field name="name">Licenced</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.resource.type" id="type_job3"> <field name="name"> > Bac +5</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <!-- STAGE(stage_id) --> @@ -40,17 +40,17 @@ <record model="crm.case.stage" id="stage_job1"> <field name="name">Initial Jobs Demand</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.stage" id="stage_job2"> <field name="name">First Interview</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.stage" id="stage_job3"> <field name="name">Second Interview</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.stage" id="stage_job4"> <field name="name">Contract Proposed</field> @@ -60,17 +60,17 @@ <record model="crm.case.stage" id="stage_job5"> <field name="name">Contract Signed</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.stage" id="stage_job6"> <field name="name">Refused by Employee</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> <record model="crm.case.stage" id="stage_job7"> <field name="name">Refused by Company</field> <field name="section_id" ref="crm.section_sales_department"/> - <field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/> + <field name="object_id" search="[('model','=','crm.applicant')]" model="ir.model"/> </record> </data> diff --git a/addons/crm_hr/crm_hr_demo.xml b/addons/crm_hr/crm_hr_demo.xml index fee80a6c761..4ed75085a1a 100644 --- a/addons/crm_hr/crm_hr_demo.xml +++ b/addons/crm_hr/crm_hr_demo.xml @@ -1,12 +1,12 @@ <?xml version="1.0"?> <openerp> <data noupdate="1"> - <!-- - ((((((((((( Demo Cases ))))))))))) + <!-- + ((((((((((( Demo Cases ))))))))))) --> <!--For Jobs Requests--> - <record id="crm_case_salesman0" model="crm.job"> + <record id="crm_case_salesman0" model="crm.applicant"> <field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/> <field eval="time.strftime('%Y-%m-03')" name="date_deadline"/> <field name="type_id" ref="crm_hr.type_job1"/> @@ -25,7 +25,7 @@ <field eval=""Salesman"" name="name"/> <field eval=""1236547890"" name="partner_phone"/> </record> - <record id="crm_case_traineemca0" model="crm.job"> + <record id="crm_case_traineemca0" model="crm.applicant"> <field model="res.partner.canal" name="canal_id" search="[('name','=','E-mail')]"/> <field name="partner_address_id" ref="base.res_partner_address_14"/> <field name="som" ref="base.som_fury"/> @@ -47,7 +47,7 @@ <field eval="time.strftime('%Y-%m-15')" name="date_deadline"/> <field eval=""6633225"" name="partner_phone"/> </record> - <record id="crm_case_fresher0" model="crm.job"> + <record id="crm_case_fresher0" model="crm.applicant"> <field model="res.partner.canal" name="canal_id" search="[('name','=','direct')]"/> <field name="som" ref="base.som_happy"/> <field eval="time.strftime('%Y-%m-15 16:10:00')" name="date"/> @@ -67,7 +67,7 @@ <field eval=""Fresher"" name="name"/> <field eval=""999666735"" name="partner_phone"/> </record> - <record id="crm_case_yrsexperienceinphp0" model="crm.job"> + <record id="crm_case_yrsexperienceinphp0" model="crm.applicant"> <field eval="time.strftime('%Y-%m-25 16:25:52')" name="date"/> <field eval="time.strftime('%Y-%m-28')" name="date_deadline"/> <field name="categ_id" ref="crm_hr.categ_job2"/> @@ -84,7 +84,7 @@ <field name="stage_id" ref="crm_hr.stage_job6"/> <field eval=""More than 5 yrs Experience in PHP"" name="name"/> </record> - <record id="crm_case_marketingjob0" model="crm.job"> + <record id="crm_case_marketingjob0" model="crm.applicant"> <field eval="time.strftime('%Y-%m-26 17:15:32')" name="date"/> <field eval="time.strftime('%Y-%m-28')" name="date_deadline"/> <field name="type_id" ref="crm_hr.type_job2"/> @@ -103,7 +103,7 @@ <field eval=""Marketing Job"" name="name"/> <field eval=""33968745"" name="partner_phone"/> </record> - <record id="crm_case_financejob0" model="crm.job"> + <record id="crm_case_financejob0" model="crm.applicant"> <field eval="time.strftime('%Y-%m-26 17:39:42')" name="date"/> <field eval="time.strftime('%Y-%m-28')" name="date_deadline"/> <field name="type_id" ref="crm_hr.type_job2"/> @@ -121,8 +121,8 @@ <field name="stage_id" ref="crm_hr.stage_job5"/> <field eval=""Finance Job"" name="name"/> <field eval=""33968745"" name="partner_phone"/> - </record> - <record id="crm_case_traineemca1" model="crm.job"> + </record> + <record id="crm_case_traineemca1" model="crm.applicant"> <field model="res.partner.canal" name="canal_id" search="[('name','=','E-mail')]"/> <field name="partner_address_id" ref="base.res_partner_address_14"/> <field name="som" ref="base.som_fury"/> @@ -144,6 +144,6 @@ <field eval="time.strftime('%Y-%m-15')" name="date_deadline"/> <field eval=""6630125"" name="partner_phone"/> </record> - + </data> </openerp> diff --git a/addons/crm_hr/crm_hr_menu.xml b/addons/crm_hr/crm_hr_menu.xml index dad579f8ef8..0844536a16e 100644 --- a/addons/crm_hr/crm_hr_menu.xml +++ b/addons/crm_hr/crm_hr_menu.xml @@ -1,15 +1,15 @@ <?xml version="1.0"?> <openerp> <data noupdate="1"> - <menuitem icon="terp-hr" id="menu_hr" name="Human Resources"/> + <menuitem icon="terp-hr" id="base.menu_hr" name="Human Resources"/> ######################## JOB OPPORTUNITIES (menu) ########################### <record model="ir.actions.act_window" id="crm_case_categ0_act_job"> - <field name="name">Jobs Requests</field> - <field name="res_model">crm.job</field> - <field name="view_mode">tree,calendar,form,graph</field> + <field name="name">Applicants</field> + <field name="res_model">crm.applicant</field> + <field name="view_mode">tree,form,graph</field> <field name="view_id" ref="crm_case_tree_view_job"/> - <field name="search_view_id" ref="view_crm_case_jobs_filter"/> + <field name="search_view_id" ref="view_crm_case_jobs_filter"/> </record> <record model="ir.actions.act_window.view" id="action_crm_sec_tree_view_act_job"> @@ -18,12 +18,6 @@ <field name="view_id" ref="crm_case_tree_view_job"/> <field name="act_window_id" ref="crm_case_categ0_act_job"/> </record> - <record model="ir.actions.act_window.view" id="action_crm_sec_calendar_view_act_job"> - <field name="sequence" eval="2"/> - <field name="view_mode">calendar</field> - <field name="view_id" ref="crm_case_calendar_view_job"/> - <field name="act_window_id" ref="crm_case_categ0_act_job"/> - </record> <record model="ir.actions.act_window.view" id="action_crm_sec_form_view_act_job"> <field name="sequence" eval="3"/> <field name="view_mode">form</field> @@ -39,16 +33,16 @@ <!--<menuitem name="Jobs - Hiring Process" id="menu_crm_case_job_req_main" - parent="menu_hr"/>--> + parent="base.menu_hr"/>--> <menuitem name="Recruitment" - id="menu_crm_case_job_req_main" - parent="menu_hr"/> + id="base.menu_crm_case_job_req_main" + parent="base.menu_hr"/> <!-- ALL JOBS REQUESTS --> - <menuitem name="Applicants" parent="menu_crm_case_job_req_main" id="menu_crm_case_categ0_act_job" action="crm_case_categ0_act_job"/> + <menuitem name="Applicants" parent="base.menu_crm_case_job_req_main" id="menu_crm_case_categ0_act_job" action="crm_case_categ0_act_job" sequence="1"/> </data> </openerp> diff --git a/addons/crm_hr/crm_hr_view.xml b/addons/crm_hr/crm_hr_view.xml index 9771a25309c..bb3ea95acdc 100644 --- a/addons/crm_hr/crm_hr_view.xml +++ b/addons/crm_hr/crm_hr_view.xml @@ -1,29 +1,29 @@ <?xml version="1.0"?> <openerp> <data> - + # ------------------------------------------------------ # Job Categories # ------------------------------------------------------ <record id="crm_job_categ_action" model="ir.actions.act_window"> - <field name="name">Job Categories</field> + <field name="name">Applicant Categories</field> <field name="res_model">crm.case.categ</field> <field name="view_type">form</field> - <field name="view_id" ref="crm.crm_case_categ_tree-view"/> - <field name="domain">[('object_id.model', '=', 'crm.claim')]</field> - <field name="context">{'object_id':'crm.job'}</field> + <field name="view_id" ref="crm.crm_case_categ_tree-view"/> + <field name="domain">[('object_id.model', '=', 'crm.applicant')]</field> + <field name="context">{'object_id':'crm.applicant'}</field> </record> - # ------------------------------------------------------ + # ------------------------------------------------------ # Stage - # ------------------------------------------------------ + # ------------------------------------------------------ <record id="crm_job_stage_act" model="ir.actions.act_window"> - <field name="name">Job Stages</field> + <field name="name">Applicant Stages</field> <field name="res_model">crm.case.stage</field> <field name="view_type">form</field> <field name="view_id" ref="crm.crm_case_stage_tree"/> - <field name="domain">[('object_id.model', '=', 'crm.claim')]</field> - <field name="context">{'object_id':'crm.job'}</field> + <field name="domain">[('object_id.model', '=', 'crm.applicant')]</field> + <field name="context">{'object_id':'crm.applicant'}</field> </record> <menuitem action="crm_job_stage_act" id="menu_crm_job_stage_act" parent="crm.menu_crm_case_stage"/> # ------------------------------------------------------ @@ -31,13 +31,14 @@ # ------------------------------------------------------ <record model="ir.ui.view" id="crm_case_tree_view_job"> - <field name="name">CRM - Jobs Requests Tree</field> - <field name="model">crm.job</field> + <field name="name">Jobs - Recruitment Tree</field> + <field name="model">crm.applicant</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree string="Jobs - Recruitment Tree" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')"> <field name="id"/> <field name="name" string="Description"/> + <field name="department_id"/> <field name="partner_name" string="Name"/> <field name="email_from" string="Candidate Email"/> <field name="partner_phone" string="Candidate Phone"/> @@ -48,55 +49,48 @@ <field name="state"/> <button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/> <button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/> - <button name="case_close" string="Hired" states="open,draft,pending" type="object" icon="terp-partner"/> + <button name="case_close" string="Hired" states="open,draft,pending" type="object" icon="terp-partner"/> <button name="case_cancel" string="Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/> - + </tree> </field> </record> <record model="ir.ui.view" id="crm_case_form_view_job"> - <field name="name">CRM - Jobs Requests Form</field> - <field name="model">crm.job</field> + <field name="name">Jobs - Recruitment Form</field> + <field name="model">crm.applicant</field> <field name="type">form</field> <field name="arch" type="xml"> <form string="Jobs - Recruitment Form"> <group colspan="4" col="7"> <field name="name" string="Description" colspan="2"/> - <field name="section_id" colspan="1" widget="selection"/> + <field name="department_id" widget="selection"/> <field name="user_id" string="Responsible" select="2"/> + <button string="Schedule a Phone Call" + name="%(wizard_crm_job_reschedule_phone_call)d" icon="gtk-redo" type="action"/> <newline/> <label string="Stage: " align="1.0"/> <group colspan="1" col="2"> <field name="stage_id" select="1" nolabel="1"/> <button icon="gtk-go-forward" string="" name="stage_next" type="object"/> </group> - <field name="date" string="Next Interview"/> - <field name="duration" widget="float_time"/> + <field name="partner_name" string="Candidate Name"/> + <field name="partner_phone"/> <button name="%(wizard_crm_job_meeting_set)d" string="Schedule Meeting" icon="terp-crm" type="action"/> - <field name="phonecall_id" select="1"/> - <button string="Schedule a Phone Call" - name="%(wizard_crm_job_reschedule_phone_call)d" icon="gtk-redo" type="action" attrs="{'invisible':[('phonecall_id','!=',False)]}"/> - </group> <notebook colspan="4"> <page string="Job Info"> - <field name="partner_name" string="Candidate Name"/> - <field name="partner_name2" string="Candidate Name2"/> + <separator colspan="4" string="Communications"/> + <field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" /> + <field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/> <newline/> - <field name="partner_phone"/> <field name="partner_mobile"/> - <field name="email_from" string="Candidate Email"/> - <newline/> - <group colspan="2" col="3"> - <field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" /> - <button string="Convert to Partner" + <field name="email_from" string="Candidate Email" widget="email"/> + <button string="Convert to Partner" icon="terp-partner" name="%(wizard_crm_job_partner_create)d" type="action" attrs="{'invisible':[('partner_id','!=',False)]}" /> - </group> - <field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/> - <newline/> + <newline/> <separator colspan="4" string="Contract Data"/> <field name="probability" string="Availability (weeks)"/> <newline/> @@ -120,7 +114,7 @@ <page string="Internal Notes"> <field name="description" nolabel="1" colspan="4"/> </page> - <page string="History"> + <page string="History" groups="base.group_extended"> <field name="id" select="1"/> <field name="active"/> <field name="canal_id"/> @@ -174,23 +168,10 @@ </field> </record> - <record model="ir.ui.view" id="crm_case_calendar_view_job"> - <field name="name">CRM - Jobs Requests Calendar</field> - <field name="model">crm.job</field> - <field name="type">calendar</field> - <field name="priority" eval="2"/> - <field name="arch" type="xml"> - <calendar string="Meeting With Candidates" date_start="date" color="user_id" date_delay="duration"> - <field name="name"/> - <field name="partner_name"/> - <field name="partner_name2"/> - </calendar> - </field> - </record> <record model="ir.ui.view" id="crm_case_graph_view_job"> - <field name="name">CRM - Jobs Requests Graph</field> - <field name="model">crm.job</field> + <field name="name">Jobs - Recruitment Graph</field> + <field name="model">crm.applicant</field> <field name="type">graph</field> <field name="arch" type="xml"> <graph string="Cases By Stage and Estimates" type="bar" orientation="vertical"> @@ -199,11 +180,11 @@ <field name="state" group="True"/> </graph> </field> - </record> + </record> <record id="view_crm_case_jobs_filter" model="ir.ui.view"> - <field name="name">CRM - Jobs Requests Search</field> - <field name="model">crm.job</field> + <field name="name">Jobs - Recruitment Search</field> + <field name="model">crm.applicant</field> <field name="type">search</field> <field name="arch" type="xml"> <search string="Search Jobs"> @@ -238,12 +219,12 @@ <field name="email_from" select='1' string="Email"/> <field name="user_id" select="1" widget="selection"/> </group> - <field name="section_id" select="1" widget="selection" string="Section"> + <field name="department_id" select="1" widget="selection" string="Department"> <filter icon="terp-crm" - domain="[('section_id','=',context.get('section_id',False))]" - help="My section" - /> - </field> + domain="[('department_id','=',context.get('department_id',False))]" + help="My Department"/> + + </field> </search> </field> </record> diff --git a/addons/crm_hr/crm_hr_wizard.xml b/addons/crm_hr/crm_hr_wizard.xml index 16b55c5f293..9ae91e62d70 100644 --- a/addons/crm_hr/crm_hr_wizard.xml +++ b/addons/crm_hr/crm_hr_wizard.xml @@ -1,29 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> - <data> + <data> <wizard id="wizard_crm_job_reschedule_phone_call" keyword="client_action_multi" - model="crm.job" - name="crm.job.reschedule_phone_call" + model="crm.applicant" + name="crm.applicant.reschedule_phone_call" multi="True" - string="Schedule Phone Call" /> + string="Schedule Phone Call" /> <wizard id="wizard_crm_job_meeting_set" keyword="client_action_multi" - model="crm.job" - name="crm.job.meeting_set" + model="crm.applicant" + name="crm.applicant.meeting_set" multi="True" - string="Schedule Meeting"/> + string="Schedule Meeting"/> <wizard id="wizard_crm_job_partner_create" keyword="client_action_multi" - model="crm.job" - name="crm.job.partner_create" + model="crm.applicant" + name="crm.applicant.partner_create" multi="True" string="Create Partner"/> - + </data> </openerp> diff --git a/addons/crm_hr/report/report_crm_hr.py b/addons/crm_hr/report/report_crm_hr.py index 4560f968769..e35e007300a 100644 --- a/addons/crm_hr/report/report_crm_hr.py +++ b/addons/crm_hr/report/report_crm_hr.py @@ -1,9 +1,9 @@ from osv import fields,osv import tools -class report_crm_job_user(osv.osv): - _name = "report.crm.job.user" - _description = "Job by user and section" +class report_crm_applicant_user(osv.osv): + _name = "report.crm.applicant.user" + _description = "Applicant by user and section" _auto = False _inherit = "report.crm.case.user" _columns = { @@ -14,9 +14,9 @@ class report_crm_job_user(osv.osv): 'delay_close': fields.char('Delay to close', size=20, readonly=True), } def init(self, cr): - tools.drop_view_if_exists(cr, 'report_crm_job_user') + tools.drop_view_if_exists(cr, 'report_crm_applicant_user') cr.execute(""" - create or replace view report_crm_job_user as ( + create or replace view report_crm_applicant_user as ( select min(c.id) as id, to_char(c.create_date, 'YYYY') as name, @@ -31,29 +31,29 @@ class report_crm_job_user(osv.osv): avg(probability)::decimal(16,2) as probability, to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close from - crm_job c + crm_applicant c group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id )""") -report_crm_job_user() +report_crm_applicant_user() -class report_crm_job_categ(osv.osv): - _name = "report.crm.job.categ" - _description = "Jobs by section and category" +class report_crm_applicant_categ(osv.osv): + _name = "report.crm.applicant.categ" + _description = "Applicants by section and category" _auto = False _inherit = "report.crm.case.categ" _columns = { - 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"), + 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.applicant')]"), 'amount_revenue': fields.float('Est.Revenue', readonly=True), 'amount_costs': fields.float('Est.Cost', readonly=True), 'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True), 'probability': fields.float('Avg. Probability', readonly=True), 'delay_close': fields.char('Delay Close', size=20, readonly=True), } - + def init(self, cr): - tools.drop_view_if_exists(cr, 'report_crm_job_categ') + tools.drop_view_if_exists(cr, 'report_crm_applicant_categ') cr.execute(""" - create or replace view report_crm_job_categ as ( + create or replace view report_crm_applicant_categ as ( select min(c.id) as id, to_char(c.create_date, 'YYYY') as name, @@ -68,39 +68,39 @@ class report_crm_job_categ(osv.osv): avg(probability)::decimal(16,2) as probability, to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close from - crm_job c + crm_applicant c group by c.categ_id,to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state,c.section_id )""") -report_crm_job_categ() +report_crm_applicant_categ() -class report_crm_job_section(osv.osv): - _name = "report.crm.job.section" - _description = "job by Section" +class report_crm_applicant_section(osv.osv): + _name = "report.crm.applicant.section" + _description = "Applicant by Section" _auto = False _inherit = "report.crm.case.section" - + def _get_data(self, cr, uid, ids, field_name, arg, context={}): res = {} state_perc = 0.0 avg_ans = 0.0 - + for case in self.browse(cr, uid, ids, context): if field_name != 'avg_answers': state = field_name[5:] - cr.execute("select count(*) from crm_job where section_id =%s and state='%s'"%(case.section_id.id,state)) + cr.execute("select count(*) from crm_applicant where section_id =%s and state='%s'"%(case.section_id.id,state)) state_cases = cr.fetchone()[0] perc_state = (state_cases / float(case.nbr_cases) ) * 100 - + res[case.id] = perc_state else: cr.execute('select count(*) from crm_case_log l where l.section_id=%s'%(case.section_id.id)) logs = cr.fetchone()[0] - + avg_ans = logs / case.nbr_cases - res[case.id] = avg_ans - + res[case.id] = avg_ans + return res - + _columns = { 'avg_answers': fields.function(_get_data,string='Avg. Answers', method=True,type="integer"), 'perc_done': fields.function(_get_data,string='%Done', method=True,type="float"), @@ -109,9 +109,9 @@ class report_crm_job_section(osv.osv): } _order = 'name desc, section_id' def init(self, cr): - tools.drop_view_if_exists(cr, 'report_crm_job_section') + tools.drop_view_if_exists(cr, 'report_crm_applicant_section') cr.execute(""" - create or replace view report_crm_job_section as ( + create or replace view report_crm_applicant_section as ( select min(c.id) as id, to_char(c.create_date, 'YYYY') as name, @@ -123,9 +123,9 @@ class report_crm_job_section(osv.osv): 0.0 as perc_cancel, to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close from - crm_job c + crm_applicant c group by to_char(c.create_date, 'YYYY'),to_char(c.create_date, 'MM'),c.section_id )""") -report_crm_job_section() +report_crm_applicant_section() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm_hr/report_crm_hr_view.xml b/addons/crm_hr/report_crm_hr_view.xml index 7359b6ecade..6c51f03bc8a 100644 --- a/addons/crm_hr/report_crm_hr_view.xml +++ b/addons/crm_hr/report_crm_hr_view.xml @@ -6,8 +6,8 @@ --> <record id="view_crm_job_user_tree" model="ir.ui.view"> - <field name="name">report.crm.job.user.tree</field> - <field name="model">report.crm.job.user</field> + <field name="name">report.crm.applicant.user.tree</field> + <field name="model">report.crm.applicant.user</field> <field name="inherit_id" ref="report_crm.view_crm_case_user_tree"/> <field name="type">tree</field> <field name="arch" type="xml"> @@ -21,8 +21,8 @@ </field> </record> <record id="view_crm_job_user_form" model="ir.ui.view"> - <field name="name">report.crm.job.user.form</field> - <field name="model">report.crm.job.user</field> + <field name="name">report.crm.applicant.user.form</field> + <field name="model">report.crm.applicant.user</field> <field name="inherit_id" ref="report_crm.view_crm_case_user_form"/> <field name="type">form</field> <field name="arch" type="xml"> @@ -37,8 +37,8 @@ </record> <record id="view_crm_job_user_graph" model="ir.ui.view"> - <field name="name">report.crm.job.user.graph</field> - <field name="model">report.crm.job.user</field> + <field name="name">report.crm.applicant.user.graph</field> + <field name="model">report.crm.applicant.user</field> <field name="type">graph</field> <field name="arch" type="xml"> <graph orientation="horizontal" string="jobs by User and Section" type="bar"> @@ -50,8 +50,8 @@ </record> <record id="view_crm_job_user_filter" model="ir.ui.view"> - <field name="name">report.crm.job.user.select</field> - <field name="model">report.crm.job.user</field> + <field name="name">report.crm.applicant.user.select</field> + <field name="model">report.crm.applicant.user</field> <field name="inherit_id" ref="report_crm.view_crm_case_user_filter"/> <field name="type">search</field> <field name="arch" type="xml"> @@ -61,8 +61,8 @@ </record> <record id="action_report_crm_job_user_tree" model="ir.actions.act_window"> - <field name="name">Jobs by User and Section</field> - <field name="res_model">report.crm.job.user</field> + <field name="name">Applicant by User and Section</field> + <field name="res_model">report.crm.applicant.user</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> <field name="view_id" ref="view_crm_job_user_graph"/> @@ -73,14 +73,14 @@ name="Reporting" parent="hr.menu_hr_root" sequence="40" /> - <menuitem name="Jobs" id="menu_crm_jobs_tree" parent="hr.menu_hr_reporting"/> + <menuitem name="Applicant" id="menu_crm_jobs_tree" parent="hr.menu_hr_reporting" sequence="4"/> <menuitem action="action_report_crm_job_user_tree" id="menu_crm_job_user_tree" parent="menu_crm_jobs_tree"/> <!-- # jobs by section and category of case --> <record id="view_crm_job_categ_tree" model="ir.ui.view"> - <field name="name">report.crm.job.categ.tree</field> - <field name="model">report.crm.job.categ</field> + <field name="name">report.crm.applicant.categ.tree</field> + <field name="model">report.crm.applicant.categ</field> <field name="inherit_id" ref="report_crm.view_crm_case_categ_tree"/> <field name="type">tree</field> <field name="arch" type="xml"> @@ -94,8 +94,8 @@ </field> </record> <record id="view_crm_job_categ_form" model="ir.ui.view"> - <field name="name">report.crm.job.categ.form</field> - <field name="model">report.crm.job.categ</field> + <field name="name">report.crm.applicant.categ.form</field> + <field name="model">report.crm.applicant.categ</field> <field name="inherit_id" ref="report_crm.view_crm_case_categ_form"/> <field name="type">form</field> <field name="arch" type="xml"> @@ -110,8 +110,8 @@ </record> <record id="view_crm_job_categ_graph" model="ir.ui.view"> - <field name="name">report.crm.job.categ.graph</field> - <field name="model">report.crm.job.categ</field> + <field name="name">report.crm.applicant.categ.graph</field> + <field name="model">report.crm.applicant.categ</field> <field name="type">graph</field> <field name="arch" type="xml"> <graph orientation="horizontal" string="jobs by Section and Categories" type="bar"> @@ -123,8 +123,8 @@ </record> <record id="view_crm_job_categ_filter" model="ir.ui.view"> - <field name="name">report.crm.job.categ.select</field> - <field name="model">report.crm.job.categ</field> + <field name="name">report.crm.applicant.categ.select</field> + <field name="model">report.crm.applicant.categ</field> <field name="inherit_id" ref="report_crm.view_crm_case_categ_filter"/> <field name="type">search</field> <field name="arch" type="xml"> @@ -134,8 +134,8 @@ </record> <record id="action_report_crm_job_categ_tree" model="ir.actions.act_window"> - <field name="name">Jobs by Categories and Section</field> - <field name="res_model">report.crm.job.categ</field> + <field name="name">Applicant by Categories and Section</field> + <field name="res_model">report.crm.applicant.categ</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> <field name="view_id" ref="view_crm_job_categ_graph"/> @@ -146,8 +146,8 @@ <!-- jobs by Section --> <record id="view_report_crm_job_section_tree" model="ir.ui.view"> - <field name="name">report.crm.job.section.tree</field> - <field name="model">report.crm.job.section</field> + <field name="name">report.crm.applicant.section.tree</field> + <field name="model">report.crm.applicant.section</field> <field name="inherit_id" ref="report_crm.view_report_crm_case_section_tree"/> <field name="type">tree</field> <field name="arch" type="xml"> @@ -161,8 +161,8 @@ </record> <record id="view_report_crm_job_section_graph" model="ir.ui.view"> - <field name="name">report.crm.job.section.graph</field> - <field name="model">report.crm.job.section</field> + <field name="name">report.crm.applicant.section.graph</field> + <field name="model">report.crm.applicant.section</field> <field name="type">graph</field> <field name="arch" type="xml"> <graph orientation="horizontal" string="jobs by Section" type="bar"> @@ -173,8 +173,8 @@ </record> <record id="view_report_crm_job_section_filter" model="ir.ui.view"> - <field name="name">report.crm.job.section.select</field> - <field name="model">report.crm.job.section</field> + <field name="name">report.crm.applicant.section.select</field> + <field name="model">report.crm.applicant.section</field> <field name="inherit_id" ref="report_crm.view_report_crm_case_section_filter"/> <field name="type">search</field> <field name="arch" type="xml"> @@ -184,8 +184,8 @@ </record> <record id="action_report_crm_job_section_tree" model="ir.actions.act_window"> - <field name="name">Jobs by Section</field> - <field name="res_model">report.crm.job.section</field> + <field name="name">Applicant by Section</field> + <field name="res_model">report.crm.applicant.section</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> <field name="view_id" ref="view_report_crm_job_section_graph"/> diff --git a/addons/crm_hr/security/ir.model.access.csv b/addons/crm_hr/security/ir.model.access.csv index a237d65ad78..6f5dac74dfa 100644 --- a/addons/crm_hr/security/ir.model.access.csv +++ b/addons/crm_hr/security/ir.model.access.csv @@ -1,5 +1,5 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_crm_job","crm.job","model_crm_job","crm.group_crm_manager",1,1,1,1 -"access_report_crm_job_user","report.crm.job.user","model_report_crm_job_user","crm.group_crm_manager",1,0,0,0 -"access_report_crm_job_categ","report.crm.job.categ","model_report_crm_job_categ","crm.group_crm_manager",1,0,0,0 -"access_repor_crm_job_section","report.crm.job.section","model_report_crm_job_section","crm.group_crm_manager",1,0,0,0 +"access_crm_applicant","crm.applicant","model_crm_applicant","crm.group_crm_manager",1,1,1,1 +"access_report_crm_applicant_user","report.crm.applicant.user","model_report_crm_applicant_user","crm.group_crm_manager",1,0,0,0 +"access_report_crm_applicant_categ","report.crm.applicant.categ","model_report_crm_applicant_categ","crm.group_crm_manager",1,0,0,0 +"access_repor_crm_applicant_section","report.crm.applicant.section","model_report_crm_applicant_section","crm.group_crm_manager",1,0,0,0 diff --git a/addons/crm_hr/wizard/crm_hr_wizard.py b/addons/crm_hr/wizard/crm_hr_wizard.py index 66736c5ce47..00a3c967d6e 100644 --- a/addons/crm_hr/wizard/crm_hr_wizard.py +++ b/addons/crm_hr/wizard/crm_hr_wizard.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved # $Id$ # @@ -40,7 +40,7 @@ class job2phonecall(wizard.interface): <newline /> <field name='note' colspan="4"/> <newline /> - <field name='section_id' /> + <field name='section_id' /> <field name='category_id'/> </form>""" @@ -50,29 +50,30 @@ class job2phonecall(wizard.interface): 'note' : {'string' : 'Goals', 'type' : 'text'}, 'category_id' : {'string' : 'Category', 'type' : 'many2one', 'relation' : 'crm.case.categ', 'required' : True}, 'section_id' : {'string' : 'Section', 'type' : 'many2one', 'relation' : 'crm.case.section'}, - + } - def _default_values(self, cr, uid, data, context): - case_obj = pooler.get_pool(cr.dbname).get('crm.job') - categ_id=pooler.get_pool(cr.dbname).get('crm.case.categ').search(cr, uid, [('name','=','Outbound')]) - case = case_obj.browse(cr, uid, data['id']) + def _default_values(self, cr, uid, data, context): + + case_obj = pooler.get_pool(cr.dbname).get('crm.applicant') + categ_id=pooler.get_pool(cr.dbname).get('crm.case.categ').search(cr, uid, [('name','=','Outbound')]) + case = case_obj.browse(cr, uid, data['id']) return { 'user_id' : case.user_id and case.user_id.id, - 'category_id' : categ_id and categ_id[0] or case.categ_id and case.categ_id.id, - 'section_id' : case.section_id and case.section_id.id or False, + 'category_id' : categ_id and categ_id[0] or case.categ_id and case.categ_id.id, + 'section_id' : case.section_id and case.section_id.id or False, 'note' : case.description } def _doIt(self, cr, uid, data, context): form = data['form'] pool = pooler.get_pool(cr.dbname) - mod_obj = pool.get('ir.model.data') + mod_obj = pool.get('ir.model.data') result = mod_obj._get_id(cr, uid, 'crm', 'view_crm_case_phonecalls_filter') res = mod_obj.read(cr, uid, result, ['res_id']) phonecall_case_obj = pool.get('crm.phonecall') - job_case_obj = pool.get('crm.job') + job_case_obj = pool.get('crm.applicant') # Select the view - + data_obj = pool.get('ir.model.data') id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_tree_view') id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_form_view') @@ -80,7 +81,7 @@ class job2phonecall(wizard.interface): id2 = data_obj.browse(cr, uid, id2, context=context).res_id if id3: id3 = data_obj.browse(cr, uid, id3, context=context).res_id - + for job in job_case_obj.browse(cr, uid, data['ids']): #TODO : Take other info from job new_phonecall_id = phonecall_case_obj.create(cr, uid, { @@ -88,7 +89,7 @@ class job2phonecall(wizard.interface): 'user_id' : form['user_id'], 'categ_id' : form['category_id'], 'description' : form['note'], - 'date' : form['deadline'], + 'date' : form['deadline'], 'section_id' : form['section_id'], 'description':job.description, 'partner_id':job.partner_id.id, @@ -105,7 +106,7 @@ class job2phonecall(wizard.interface): job_case_obj.write(cr, uid, [job.id], vals) job_case_obj.case_cancel(cr, uid, [job.id]) phonecall_case_obj.case_open(cr, uid, [new_phonecall_id]) - value = { + value = { 'name': _('Phone Call'), 'view_type': 'form', 'view_mode': 'tree,form', @@ -129,14 +130,14 @@ class job2phonecall(wizard.interface): } } -job2phonecall('crm.job.reschedule_phone_call') +job2phonecall('crm.applicant.reschedule_phone_call') class job2meeting(wizard.interface): def _makeMeeting(self, cr, uid, data, context): pool = pooler.get_pool(cr.dbname) - job_case_obj = pool.get('crm.job') - meeting_case_obj = pool.get('crm.meeting') + job_case_obj = pool.get('crm.applicant') + meeting_case_obj = pool.get('crm.meeting') for job in job_case_obj.browse(cr, uid, data['ids']): new_meeting_id = meeting_case_obj.create(cr, uid, { 'name': job.name, @@ -147,8 +148,8 @@ class job2meeting(wizard.interface): vals = {} job_case_obj.write(cr, uid, [job.id], vals) job_case_obj.case_cancel(cr, uid, [job.id]) - meeting_case_obj.case_open(cr, uid, [new_meeting_id]) - + meeting_case_obj.case_open(cr, uid, [new_meeting_id]) + data_obj = pool.get('ir.model.data') result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter') id = data_obj.read(cr, uid, result, ['res_id']) @@ -161,7 +162,7 @@ class job2meeting(wizard.interface): id2 = data_obj.browse(cr, uid, id2, context=context).res_id if id3: id3 = data_obj.browse(cr, uid, id3, context=context).res_id - return { + return { 'name': _('Meetings'), 'view_type': 'form', 'view_mode': 'calendar,form,tree', @@ -183,7 +184,7 @@ class job2meeting(wizard.interface): } } -job2meeting('crm.job.meeting_set') +job2meeting('crm.applicant.meeting_set') class partner_create(wizard.interface): @@ -201,7 +202,7 @@ class partner_create(wizard.interface): def _selectPartner(self, cr, uid, data, context): pool = pooler.get_pool(cr.dbname) - case_obj = pool.get('crm.job') + case_obj = pool.get('crm.applicant') for case in case_obj.browse(cr, uid, data['ids']): if case.partner_id: raise wizard.except_wizard(_('Warning !'), @@ -210,10 +211,10 @@ class partner_create(wizard.interface): def _makeOrder(self, cr, uid, data, context): pool = pooler.get_pool(cr.dbname) - mod_obj = pool.get('ir.model.data') + mod_obj = pool.get('ir.model.data') result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter') res = mod_obj.read(cr, uid, result, ['res_id']) - case_obj = pool.get('crm.job') + case_obj = pool.get('crm.applicant') partner_obj = pool.get('res.partner') contact_obj = pool.get('res.partner.address') for case in case_obj.browse(cr, uid, data['ids']): @@ -250,7 +251,7 @@ class partner_create(wizard.interface): 'res_id': int(partner_id), 'view_id': False, 'type': 'ir.actions.act_window', - 'search_view_id': res['res_id'] + 'search_view_id': res['res_id'] } return value @@ -266,7 +267,7 @@ class partner_create(wizard.interface): } } -partner_create('crm.job.partner_create') +partner_create('crm.applicant.partner_create') # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr/__init__.py b/addons/hr/__init__.py index 2551ce843d1..b2396739116 100644 --- a/addons/hr/__init__.py +++ b/addons/hr/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). # @@ -15,13 +15,13 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## +import hr_department import hr import installer -import hr_department import report import wizard diff --git a/addons/hr/hr.py b/addons/hr/hr.py index abd9e668a2e..1d816acc2d8 100755 --- a/addons/hr/hr.py +++ b/addons/hr/hr.py @@ -61,6 +61,33 @@ class hr_employee_marital_status(osv.osv): } hr_employee_marital_status() +class crm_job(osv.osv): + + def _no_of_employee(self, cr, uid, ids, name,args,context=None): + res = {} + for emp in self.browse(cr, uid, ids): + res[emp.id] = str(len(emp.employee_ids)) + return res + + _name = "crm.job" + _description = "Job Information" + _columns = { + 'name': fields.char('Name', size=128, required=True, select=True), + 'ref': fields.char('Code', size=64), + 'expected_employees':fields.integer('Expected Employees'), + 'no_of_employee': fields.function(_no_of_employee, method=True, string='No of Employee', type='char'), + 'employee_ids':fields.one2many('hr.employee', 'job_id','Employees'), + 'description': fields.text('Job Description'), + 'requirements':fields.text('Requirements'), + 'department_id':fields.many2one('hr.department','Department') + + } + _defaults = { + 'expected_employees': lambda *a: 1, + } + +crm_job() + class hr_employee(osv.osv): _name = "hr.employee" _description = "Employee" @@ -87,6 +114,9 @@ class hr_employee(osv.osv): 'category_id' : fields.many2one('hr.employee.category', 'Category'), 'child_ids': fields.one2many('hr.employee', 'parent_id','Subordinates'), 'resource_id': fields.many2one('resource.resource','Resource',ondelete='cascade'), + 'coach_id':fields.many2one('res.users','Coach'), + 'job_id':fields.many2one('crm.job', 'Job'), + } _defaults = { 'active' : lambda *a: True, @@ -107,4 +137,6 @@ class hr_employee(osv.osv): ] hr_employee() + + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr/hr_department.py b/addons/hr/hr_department.py index d9efe2ce448..fd3146b33d0 100644 --- a/addons/hr/hr_department.py +++ b/addons/hr/hr_department.py @@ -23,9 +23,27 @@ from osv import fields,osv import tools class hr_department(osv.osv): + + def name_get(self, cr, uid, ids, context=None): + if not len(ids): + return [] + reads = self.read(cr, uid, ids, ['name','parent_id'], context) + res = [] + for record in reads: + name = record['name'] + if record['parent_id']: + name = record['parent_id'][1]+' / '+name + res.append((record['id'], name)) + return res + + def _dept_name_get_fnc(self, cr, uid, ids, prop, unknow_none, context): + res = self.name_get(cr, uid, ids, context) + return dict(res) + _name = "hr.department" _columns = { 'name': fields.char('Department Name', size=64, required=True), + 'complete_name': fields.function(_dept_name_get_fnc, method=True, type="char", string='Name'), 'company_id': fields.many2one('res.company', 'Company', select=True, required=True), 'parent_id': fields.many2one('hr.department', 'Parent Department', select=True), 'child_ids': fields.one2many('hr.department', 'parent_id', 'Child Departments'), @@ -148,4 +166,11 @@ class res_users(osv.osv): } res_users() +#class users(osv.osv): +# _inherit = 'res.users' +# _description = "Users" +# _columns = { +# 'context_department_id': fields.many2one('hr.department', 'Departments'), +# } +#users() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr/hr_department_view.xml b/addons/hr/hr_department_view.xml index 80d13dec797..e34c96ec762 100644 --- a/addons/hr/hr_department_view.xml +++ b/addons/hr/hr_department_view.xml @@ -37,17 +37,31 @@ <field name="field_parent">child_ids</field> <field name="arch" type="xml"> <tree string="Companies"> - <field name="name"/> + <field name="complete_name"/> <field name="company_id" groups="base.group_multi_company"/> <field name="manager_id"/> </tree> </field> </record> + <record id="view_department_filter" model="ir.ui.view"> + <field name="name">Departments</field> + <field name="model">hr.department</field> + <field name="type">search</field> + <field name="arch" type="xml"> + <search string="Departments"> + <group col='4' colspan='2'> + <field name="name" /> + <field name="manager_id" widget="selection"/> + </group> + </search> + </field> + </record> <record id="open_module_tree_department_tree" model="ir.actions.act_window"> <field name="name">Departments</field> <field name="res_model">hr.department</field> <field name="view_type">tree</field> <field name="domain">[('parent_id','=',False)]</field> + <field name="search_view_id" ref="view_department_filter"/> </record> <menuitem action="open_module_tree_department_tree" id="menu_department_tree" parent="base.menu_users"/> @@ -55,10 +69,51 @@ <field name="name">Departments</field> <field name="res_model">hr.department</field> <field name="view_type">form</field> + <field name="search_view_id" ref="view_department_filter"/> </record> <menuitem action="open_module_tree_department" id="menu_department_def" parent="hr.menu_department_tree"/> <menuitem action="open_module_tree_department" id="menu_hr_department_tree" parent="menu_hr_human_resources"/> - </data> + <record model="ir.ui.view" id="view_users_form_inherit"> + <field name="name">res.users.form</field> + <field name="type">form</field> + <field name="model">res.users</field> + <field name="inherit_id" ref="base.view_users_form"/> + <field name="arch" type="xml"> + <notebook position="inside"> + <page string="Departements Informations"> + <separator string="Managers" colspan="4"/> + <field name="parent_id" nolabel="1" colspan="4"/> + <separator string="Subordinates" colspan="4"/> + <field name="child_ids" nolabel="1" colspan="4"/> + </page> + </notebook> + </field> + </record> + <!--<record model="ir.ui.view" id="view_department_form_simple_modif_inherited1"> + <field name="name">view.department.form.hr.inherited1</field> + <field name="model">res.users</field> + <field name="inherit_id" ref="base.view_users_form_simple_modif" /> + <field name="type">form</field> + <field name="arch" type="xml"> + <page string="Current Activity" position="inside"> + <field name="context_department_id" widget="selection" /> + </page> + </field> + </record> + + <record id="view_department_form_simple_modif_inherited2" model="ir.ui.view"> + <field name="name">view.department.form.hr.inherited2</field> + <field name="model">res.users</field> + <field name="type">form</field> + <field name="inherit_id" ref="base.view_users_form"/> + <field eval="18" name="priority"/> + <field name="arch" type="xml"> + <field name="password" position="after"> + <field name="context_department_id" completion="1" widget="selection"/> + </field> + </field> + </record> + --></data> </openerp> diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index cf5f6dd80e6..185fe539af6 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -65,8 +65,9 @@ <group col="4" colspan="2"> <separator string="Job Information" colspan="4"/> <field name="parent_id" select="1" colspan="4"/> - - <field name="category_id" colspan="4" widget="selection"/> + <field name="coach_id" select="1" colspan="4"/> +<!-- <field name="category_id" colspan="4" widget="selection"/>--> + <field name="job_id" select="1" colspan="4"/> </group> </page> <page string="Notes"> @@ -92,6 +93,21 @@ </tree> </field> </record> + <record id="view_employee_filter" model="ir.ui.view"> + <field name="name">Employees</field> + <field name="model">hr.employee</field> + <field name="type">search</field> + <field name="arch" type="xml"> + <search string="Employees"> + <group col='6' colspan='2'> + <field name="name"/> + <field name="parent_id" widget="selection"> + <filter icon="terp-partner" domain="[('parent_id','child_of',uid)]" help="Employees under me"/> + </field> + </group> + </search> + </field> + </record> <record id="open_view_employee_tree" model="ir.actions.act_window"> <field name="name">Employees Structure</field> <field name="res_model">hr.employee</field> @@ -99,6 +115,7 @@ <field name="view_mode">tree,form</field> <field name="view_id" ref="view_employee_tree"/> <field name="domain">[('parent_id','=',False)]</field> + <field name="search_view_id" ref="view_employee_filter"/> </record> <record id="open_view_employee_list" model="ir.actions.act_window"> @@ -107,6 +124,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="view_id" eval="False"/> + <field name="search_view_id" ref="view_employee_filter"/> </record> <!-- <menuitem id="menu_open_view_employee_list" @@ -125,6 +143,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="domain">[]</field> + <field name="search_view_id" ref="view_employee_filter"/> </record> <!--<menuitem action="open_view_employee_list_my" @@ -160,11 +179,11 @@ <field name="view_mode">tree,form</field> </record> - <menuitem - action="action_hr_marital_status" - id="hr_menu_marital_status" + <menuitem + action="action_hr_marital_status" + id="hr_menu_marital_status" parent="hr.menu_view_employee_category_configuration_form" sequence="3"/> - + <!-- ======================= Employee architecture @@ -265,8 +284,8 @@ <field name="res_model">hr.employee</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> - <field name="domain">[('category_id','child_of',[active_id])]</field> - <field name="context">{'category_id':active_id}</field> +<!-- <field name="domain">[('category_id','child_of',[active_id])]</field>--> +<!-- <field name="context">{'category_id':active_id}</field>--> </record> <record id="hr_employee_category_open" model="ir.values"> @@ -279,5 +298,77 @@ <menuitem action="open_view_categ_tree" id="menu_view_employee_category_tree" parent="hr.menu_view_employee_category_form"/> + <record id="view_crm_job_form" model="ir.ui.view"> + <field name="name">crm.job.form</field> + <field name="model">crm.job</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form string="Job"> + <field name="name" select="1"/> + <field name="ref"/> + <field name="department_id" select="1"/> + <newline/> + <notebook colspan="4"> + <page string="Employee"> + <field name="employee_ids" colspan='4' nolabel="1" mode="tree,form"/> + <field name="expected_employees"/> + <field name="no_of_employee"/> + </page> + <page string="Description"> + <field name="description" colspan='4'/> + <field name="description"/> + </page> + </notebook> + </form> + </field> + </record> + <record id="view_crm_job_tree" model="ir.ui.view"> + <field name="name">crm.job.tree</field> + <field name="model">crm.job</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Job"> + <field name="name" select="1"/> + <field name="ref"/> + <field name="expected_employees"/> + <field name="department_id" /> + <field name="no_of_employee"/> + </tree> + </field> + </record> + <record id="view_job_filter" model="ir.ui.view"> + <field name="name">Job</field> + <field name="model">crm.job</field> + <field name="type">search</field> + <field name="arch" type="xml"> + <search string="Job"> + <group col='3' colspan='4'> + <field name="name"/> + <field name="department_id" widget="selection"> + <filter icon="terp-crm" + domain="[('department_id','=',context.get('department_id',False))]" + help="My Departments Jobs"/> + </field> + </group> + </search> + </field> + </record> + <record model="ir.actions.act_window" id="action_crm_job"> + <field name="name">Job</field> + <field name="res_model">crm.job</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="view_id" ref="view_crm_job_tree"/> + <field name="search_view_id" ref="view_job_filter"/> + </record> + + <menuitem icon="terp-hr" id="base.menu_hr" name="Human Resources"/> + <menuitem + name="Recruitment" + id="base.menu_crm_case_job_req_main" + parent="base.menu_hr"/> + + <menuitem name="Job" parent="base.menu_crm_case_job_req_main" id="menu_crm_job" action="action_crm_job" sequence="2"/> + </data> </openerp> diff --git a/addons/hr_attendance/hr_attendance_view.xml b/addons/hr_attendance/hr_attendance_view.xml index a39af8cabf4..05cce8b282b 100644 --- a/addons/hr_attendance/hr_attendance_view.xml +++ b/addons/hr_attendance/hr_attendance_view.xml @@ -97,7 +97,7 @@ <field name="type">form</field> <field name="inherit_id" ref="hr.view_employee_form"/> <field name="arch" type="xml"> - <field name="parent_id" position="after"> + <field name="coach_id" position="after"> <field name="state"/> <button name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}"/> <button name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}"/> diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 5e71e4614df..e270396d122 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -68,7 +68,8 @@ class hr_expense_expense(osv.osv): 'amount': fields.function(_amount, method=True, string='Total Amount'), 'invoice_id': fields.many2one('account.invoice', 'Invoice'), 'currency_id': fields.many2one('res.currency', 'Currency', required=True), - + 'department_id':fields.many2one('hr.department','Department'), + 'company_id': fields.many2one('res.company', 'Company', required=True), 'state': fields.selection([ ('draft', 'Draft'), ('confirm', 'Waiting confirmation'), @@ -85,6 +86,7 @@ class hr_expense_expense(osv.osv): 'employee_id' : _employee_get, 'user_id' : lambda cr,uid,id,c={}: id, 'currency_id': _get_currency, + 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, } def expense_confirm(self, cr, uid, ids, *args): #for exp in self.browse(cr, uid, ids): @@ -215,12 +217,12 @@ class hr_expense_line(osv.osv): if product_id: product=self.pool.get('product.product').browse(cr,uid,product_id, context=context) v['name']=product.name - + # Compute based on pricetype of employee company pricetype_id = self.pool.get('hr.employee').browse(cr,uid,employee_id).user_id.company_id.property_valuation_price_type.id pricetype=self.pool.get('product.price.type').browse(cr,uid,pricetype_id) amount_unit=product.price_get(pricetype.field, context)[product.id] - + v['unit_amount']=amount_unit if not uom_id: v['uom_id']=product.uom_id.id diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 5427aa23063..16828a87a1a 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -29,10 +29,13 @@ <tree string="Expenses"> <field name="date"/> <field name="employee_id"/> + <field name="department_id"/> <field name="name"/> <field name="ref"/> <field name="amount"/> <field name="state"/> + <button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/> + <button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/> </tree> </field> </record> @@ -45,10 +48,13 @@ <tree string="Expenses" editable="top"> <field name="date"/> <field name="employee_id"/> + <field name="department_id"/> <field name="name"/> <field name="ref"/> <field name="amount"/> <field name="state"/> + <button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/> + <button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/> </tree> </field> </record> @@ -66,6 +72,8 @@ <field name="date" select="1"/> <field name="amount"/> <field name="currency_id"/> + <field name="department_id"/> + <field name="company_id"/> </group> <notebook colspan="4"> <page string="Expense Sheet"> @@ -92,7 +100,7 @@ <button name="cancel" states="cancel" string="Cancel" type="workflow" icon="gtk-cancel"/> <button name="validate" states="confirm" string="Accept" type="workflow" icon="gtk-ok"/> <button name="invoice" states="accepted" string="Invoice" type="workflow" icon="gtk-print"/> - <button name="draft" states="confirm" string="Set to Draft" type="workflow" icon="gtk-convert"/> + <button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" icon="gtk-convert"/> <button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/> </group> </page> @@ -145,6 +153,11 @@ domain="[('user_id','=',uid)]"/> </field> <field name="state" select="1"/> + <field name="department_id" widget="selection"> + <filter icon="terp-crm" + domain="[('department_id','=',context.get('department_id',False))]" + help="Expenses of My Department"/> + </field> </group> </search> </field> diff --git a/addons/hr_expense/hr_expense_workflow.xml b/addons/hr_expense/hr_expense_workflow.xml index cbd33ba94aa..57163b6df5f 100644 --- a/addons/hr_expense/hr_expense_workflow.xml +++ b/addons/hr_expense/hr_expense_workflow.xml @@ -1,25 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - + <!-- Roles definition --> - + <record id="HR" model="res.roles"> <field name="name">Human Resources - Expenses</field> </record> - + <record id="HR_INV" model="res.roles"> <field name="name">Human Resources - Expenses invoice</field> </record> - + <!-- Workflow definition --> - + <record id="wkf_expenses" model="workflow"> <field name="name">hr.wkf.expenses</field> <field name="osv">hr.expense.expense</field> <field name="on_create">True</field> </record> - + <record id="act_draft" model="workflow.activity"> <field name="wkf_id" ref="wkf_expenses"/> <field name="name">draft</field> @@ -51,7 +51,7 @@ <field name="name">refused</field> <field name="kind">function</field> <field name="action">expense_canceled()</field> - <field name="flow_stop">True</field> +<!-- <field name="flow_stop">True</field>--> </record> <record id="act_invoice" model="workflow.activity"> <field name="wkf_id" ref="wkf_expenses"/> @@ -60,7 +60,7 @@ <field name="subflow_id" ref="account.wkf"/> <field name="action">action_invoice_create()</field> </record> - + <record id="t1" model="workflow.transition"> <field name="act_from" ref="act_draft"/> <field name="act_to" ref="act_confirm"/> @@ -89,7 +89,7 @@ <field name="act_to" ref="act_refused"/> <field name="signal">refuse</field> </record> - + <record id="t6" model="workflow.transition"> <field name="act_from" ref="act_accepted"/> <field name="act_to" ref="act_refused"/> @@ -118,6 +118,11 @@ <field name="act_to" ref="act_refused"/> <field name="signal">subflow.cancel</field> </record> - + <record id="t11" model="workflow.transition"> + <field name="act_from" ref="act_refused"/> + <field name="act_to" ref="act_draft"/> + <field name="signal">draft</field> + <field name="role_id" ref="HR"/> + </record> </data> </openerp> diff --git a/addons/hr_holidays/hr.py b/addons/hr_holidays/hr.py index 8fce5431988..b6c0313e13f 100755 --- a/addons/hr_holidays/hr.py +++ b/addons/hr_holidays/hr.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- ################################################################################## # -# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com) +# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com) # and 2004-2010 Tiny SPRL (<http://tiny.be>). # # $Id: hr.py 4656 2006-11-24 09:58:42Z Cyp $ @@ -37,13 +37,17 @@ class hr_holidays_status(osv.osv): for record in self.browse(cr, uid, ids, context): res[record.id] = {} max_leaves = leaves_taken = 0 + obj_ids = self.pool.get('hr.holidays.per.user').search(cr, uid, [('user_id','=',uid),('employee_id','=',employee_id),('holiday_status','=',record.id)]) + if obj_ids: + br_ob=self.pool.get('hr.holidays.per.user').browse(cr, uid, obj_ids)[0] + max_leaves=br_ob.max_leaves if not return_false: cr.execute("""SELECT type, sum(number_of_days) FROM hr_holidays WHERE employee_id = %s AND state='validate' AND holiday_status_id = %s GROUP BY type""", (str(employee_id), str(record.id))) for line in cr.fetchall(): if line[0] =='remove': - leaves_taken = -line[1] + leaves_taken = -line[1] if line[0] =='add': - max_leaves = line[1] + max_leaves = line[1] res[record.id]['max_leaves'] = max_leaves res[record.id]['leaves_taken'] = leaves_taken res[record.id]['remaining_leaves'] = max_leaves - leaves_taken @@ -92,11 +96,11 @@ class hr_holidays_per_user(osv.osv): result = {} for holiday_user in self.browse(cr, uid, ids): days = 0.0 - ids_request = obj_holiday.search(cr, uid, [('employee_id', '=', holiday_user.employee_id.id),('state', '=', 'validate'),('holiday_status', '=', holiday_user.holiday_status.id)]) + ids_request = obj_holiday.search(cr, uid, [('employee_id', '=', holiday_user.employee_id.id),('state', '=', 'validate'),('holiday_status_id', '=', holiday_user.holiday_status.id)]) if ids_request: holidays = obj_holiday.browse(cr, uid, ids_request) for holiday in holidays: - days += holiday.number_of_days + days -= holiday.number_of_days days = holiday_user.max_leaves - days result[holiday_user.id] = days return result @@ -153,7 +157,8 @@ class hr_holidays(osv.osv): 'allocation_type': fields.selection([('employee','Employee Request'),('company','Company Allocation')], 'Allocation Type', required=True, readonly=True, states={'draft':[('readonly',False)]}, help='This field is only for informative purposes, to depict if the leave request/allocation comes from an employee or from the company'), 'parent_id': fields.many2one('hr.holidays', 'Parent'), 'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',), - 'holiday_user_id' : fields.many2one('res.users', 'User'), + 'holiday_user_id' : fields.many2one('hr.holidays.per.user', 'User'), + 'department_id':fields.many2one('hr.department','Department'), } _defaults = { @@ -183,7 +188,7 @@ class hr_holidays(osv.osv): def _update_user_holidays(self, cr, uid, ids): for record in self.browse(cr, uid, ids): if record.state=='validate': - holiday_id=self.pool.get('hr.holidays.per.user').search(cr, uid, [('employee_id','=', record.employee_id.id),('holiday_status','=',record.holiday_status.id)]) + holiday_id=self.pool.get('hr.holidays.per.user').search(cr, uid, [('employee_id','=', record.employee_id.id),('holiday_status','=',record.holiday_status_id.id)]) if holiday_id: obj_holidays_per_user=self.pool.get('hr.holidays.per.user').browse(cr, uid,holiday_id[0]) self.pool.get('hr.holidays.per.user').write(cr,uid,obj_holidays_per_user.id,{'leaves_taken':obj_holidays_per_user.leaves_taken - record.number_of_days}) @@ -193,10 +198,10 @@ class hr_holidays(osv.osv): _('You can not cancel this holiday request. first You have to make its case in draft state.')) else: self.pool.get('crm.case').unlink(cr,uid,[record.case_id.id]) - + def _check_date(self, cr, uid, ids): if ids: - cr.execute('select number_of_days from hr_holidays where id in ('+','.join(map(str, ids))+')') + cr.execute('select number_of_days_temp from hr_holidays where id in ('+','.join(map(str, ids))+')') res = cr.fetchall() if res and res[0][0] < 0: return False @@ -208,7 +213,7 @@ class hr_holidays(osv.osv): id_holiday = super(hr_holidays, self).create(cr, uid, vals, *args, **kwargs) self._create_holiday(cr, uid, [id_holiday]) return id_holiday - + def unlink(self, cr, uid, ids, context={}): self._update_user_holidays(cr, uid, ids) return super(hr_holidays, self).unlink(cr, uid, ids, context) @@ -217,7 +222,7 @@ class hr_holidays(osv.osv): holidays_user_obj = self.pool.get('hr.holidays.per.user') holidays_data = self.browse(cr, uid, ids[0]) list_holiday = [] - ids_user_hdays = holidays_user_obj.search(cr, uid, [('employee_id', '=', holidays_data.employee_id.id),('holiday_status', '=', holidays_data.holiday_status.id)]) + ids_user_hdays = holidays_user_obj.search(cr, uid, [('employee_id', '=', holidays_data.employee_id.id),('holiday_status', '=', holidays_data.holiday_status_id.id)]) for hdays in holidays_user_obj.browse(cr, uid, ids_user_hdays): for req in hdays.holiday_ids: list_holiday.append(req.id) @@ -303,7 +308,7 @@ class hr_holidays(osv.osv): 'company_id':record.employee_id.company_id.id, 'resource_id':record.employee_id.resource_id.id } - self.pool.get('resource.calendar.leaves').create(cr,uid,vals) + #self.pool.get('resource.calendar.leaves').create(cr,uid,vals) return True diff --git a/addons/hr_holidays/hr_holidays_wizard.xml b/addons/hr_holidays/hr_holidays_wizard.xml index ce5014773b0..fb505d65497 100644 --- a/addons/hr_holidays/hr_holidays_wizard.xml +++ b/addons/hr_holidays/hr_holidays_wizard.xml @@ -6,10 +6,15 @@ name="Reporting" parent="hr.menu_hr_root" sequence="40" /> + <menuitem + id="menu_hr_reporting_holidays" + name="Holidays" + parent="hr.menu_hr_reporting" + sequence="3" /> <wizard string="Print Summary of Holidays" name="hr.holidays.summary" id="holidays_summary"/> - <menuitem name="Print Summary of Holidays" parent="hr.menu_hr_reporting" + <menuitem name="Print Summary of Holidays" parent="menu_hr_reporting_holidays" action="holidays_summary" type="wizard" id="menu_holidays_summary" sequence="20"/> diff --git a/addons/hr_holidays/hr_view.xml b/addons/hr_holidays/hr_view.xml index 68138977d96..146e06d25a3 100644 --- a/addons/hr_holidays/hr_view.xml +++ b/addons/hr_holidays/hr_view.xml @@ -14,16 +14,22 @@ <field name="type">search</field> <field name="arch" type="xml"> <search string="Search Leave"> - <group col='6' colspan='4'> - <filter icon="gtk-execute" string="My Leaves" domain="[('user_id','=',uid)]" separator="1" help="Leaves Related to Current User"/> - <filter icon="gtk-execute" string="My Departments Leaves" domain="[('user_id','child_of',[uid])]" help="Leaves Related to Department"/> + <group col='8' colspan='4'> + <filter icon="terp-hr" domain="[('state','=','draft')]" string="To Confirm"/> + <filter icon="terp-hr" domain="[('state','=','confirm')]" string="To Validate"/> + <separator orientation="vertical"/> + <field name="name" select='1'/> <field name="state" select="1"> - <filter icon="terp-hr" domain="[('state','=','confirm')]" help="Confirmed Holidays"/> <filter icon="terp-hr" domain="[('state','=','refuse')]" help="Refused Holidays"/> <filter icon="terp-hr" domain="[('state','=','validate')]" help="Validated Holidays"/> + </field> + <field name="user_id" select="1" widget="selection"> + <filter icon="gtk-execute" help="My Leaves" domain="[('user_id','=',uid)]" /> + </field> + <field name="department_id" select="1" widget="selection"> + <filter icon="gtk-execute" domain="[('department_id','=',context.get('department_id',False))]" + help="My Departments Leaves"/> </field> - <field name="name" select='1'/> - <field name="user_id" select="1" widget="selection"/> </group> </search> </field> @@ -49,6 +55,7 @@ <field name="employee_id" select="1" required="1"/> <field name="number_of_days_temp"/> <field name="manager_id"/> + <field name="department_id"/> <field name="notes" colspan="4"/> <newline/> <field name="state" select="1" colspan="2"/> @@ -76,6 +83,7 @@ <field name="name" select="1"/> <field name="holiday_status_id" select="1" /> <field name="employee_id" select="1" required="1"/> + <field name="department_id"/> <field name="number_of_days_temp"/> <notebook colspan="4"> <page string="General"> @@ -107,6 +115,7 @@ <field name="name" select="1"/> <field name="holiday_status_id" select="1"/> <field name="employee_id" select="1" /> + <field name="department_id"/> <field name="type"/> <field name="date_from" select="1" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/> <field name="date_to" select="1" on_change="onchange_date_to(date_from, date_to)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/> @@ -138,27 +147,49 @@ <tree string="Leaves"> <field name="name"/> <field name="employee_id"/> + <field name="department_id"/> <field name="number_of_days" string="Number of Days" sum='Remaining Days'/> <field name="date_from"/> <field name="date_to"/> <field name="holiday_status_id"/> <field name="state"/> - <field name="type"/> +<!-- <field name="type"/>--> </tree> </field> </record> <!-- My leave dashboard --> - <record model="ir.ui.view" id="view_my_leave_board_tree"> + <record model="ir.ui.view" id="view_my_leave_board_form"> <field name="name">hr.holidays.per.user.form</field> <field name="model">hr.holidays.per.user</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form string="My Leaves" > + <field name="employee_id"/> + <field name="user_id"/> + <field name="holiday_status"/> + <field name="max_leaves"/> + <field name="leaves_taken" /> + <field name="remaining_leaves"/> + <field name="notes" colspan="4"/> + </form> + </field> + </record> + + <record model="ir.ui.view" id="view_my_leave_board_tree"> + <field name="name">hr.holidays.per.user.tree</field> + <field name="model">hr.holidays.per.user</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree string="My Leaves" editable="top"> + <tree string="My Leaves" /> + <field name="employee_id"/> + <field name="user_id"/> <field name="holiday_status"/> <field name="max_leaves"/> <field name="leaves_taken" /> <field name="remaining_leaves"/> + <field name="notes"/> </tree> </field> </record> @@ -289,5 +320,18 @@ view_id ="eval('edit_holiday_new')" id="act_hr_employee_holiday_request"/> + <record model="ir.actions.act_window" id="action_holiday_per_user"> + <field name="name">Holiday Per User</field> + <field name="res_model">hr.holidays.per.user</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="view_id" ref="view_my_leave_board_tree"/> + </record> + + <menuitem name="Holiday Per User" + action="action_holiday_per_user" + id="menu_holiday_per_user" + parent="hr.menu_open_view_attendance_reason_config"/> + </data> </openerp> diff --git a/addons/hr_timesheet/hr_timesheet_report.xml b/addons/hr_timesheet/hr_timesheet_report.xml index 4f6c32bbdce..9b7c527fea9 100644 --- a/addons/hr_timesheet/hr_timesheet_report.xml +++ b/addons/hr_timesheet/hr_timesheet_report.xml @@ -6,6 +6,11 @@ name="Reporting" parent="hr.menu_hr_root" sequence="40" /> + <menuitem + id="menu_hr_reporting_timesheet" + name="Timesheet" + parent="hr.menu_hr_reporting" + sequence="1" /> <report auto="False" id="report_user_timesheet" menu="False" model="hr.employee" name="hr.analytical.timesheet" string="Employee timesheet" xsl="hr_timesheet/report/user_timesheet.xsl"/> <wizard id="wizard_hr_timesheet" menu="False" model="hr.employee" name="hr.analytical.timesheet" string="Employee Timesheet"/> @@ -13,7 +18,7 @@ <!--<menuitem id="next_id_48" name="Timesheet" parent="hr.menu_hr_reporting"/>--> <!-- <menuitem action="wizard_hr_timesheet" id="menu_wizard_hr_timesheet" parent="next_id_48" type="wizard" groups="hr.group_hr_manager"/>--> - <menuitem action="wizard_hr_timesheet" id="menu_wizard_hr_timesheet" parent="hr.menu_hr_reporting" type="wizard" + <menuitem action="wizard_hr_timesheet" id="menu_wizard_hr_timesheet" parent="menu_hr_reporting_timesheet" type="wizard" groups="hr.group_hr_manager" /> @@ -21,7 +26,7 @@ <menuitem action="wizard_hr_timesheet_my" id="menu_wizard_hr_timesheet_my" - parent="hr.menu_hr_reporting" + parent="menu_hr_reporting_timesheet" type="wizard" groups="hr.group_hr_user" /> @@ -33,7 +38,7 @@ action="wizard_hr_timesheet_users" id="menu_wizard_hr_timesheet_users" groups="hr.group_hr_manager" - parent="hr.menu_hr_reporting" type="wizard"/> + parent="menu_hr_reporting_timesheet" type="wizard"/> </data> </openerp> diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_report.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_report.xml index 4b6f2c3d91d..5db8bfeb921 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_report.xml +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_report.xml @@ -6,6 +6,11 @@ name="Reporting" parent="hr.menu_hr_root" sequence="40" /> + <menuitem + id="menu_hr_reporting_timesheet_invoice" + name="Timesheet Invoice" + parent="hr.menu_hr_reporting" + sequence="2" /> <report auto="False" id="account_analytic_account_cost_ledger" menu="False" model="account.analytic.account" name="hr.timesheet.invoice.account.analytic.account.cost_ledger" rml="account/project/report/cost_ledger.rml" string="Cost Ledger"/> <wizard id="account_analytic_account_cost_ledger_report" keyword="client_print_multi" model="account.analytic.account" name="hr.timesheet.invoice.account.analytic.account.cost_ledger.report" string="Cost Ledger"/> @@ -29,7 +34,7 @@ <menuitem action="account_analytic_profit" id="print_account_analytic_profit" - parent="hr.menu_hr_reporting" + parent="menu_hr_reporting_timesheet_invoice" type="wizard" groups="hr.group_hr_manager"/> diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py index 81b5e99d1f5..a738ee55ace 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py @@ -246,6 +246,7 @@ class hr_timesheet_sheet(osv.osv): 'period_ids': fields.one2many('hr_timesheet_sheet.sheet.day', 'sheet_id', 'Period', readonly=True), 'account_ids': fields.one2many('hr_timesheet_sheet.sheet.account', 'sheet_id', 'Analytic accounts', readonly=True), 'company_id': fields.many2one('res.company', 'Company'), + 'department_id':fields.many2one('hr.department','Department'), } def _default_date_from(self,cr, uid, context={}): diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml index e47662152c2..ef1df892668 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml @@ -8,6 +8,7 @@ <field name="arch" type="xml"> <tree string="Timesheets"> <field name="user_id"/> + <field name="department_id"/> <field name="date_from"/> <field name="date_to"/> <field name="name"/> @@ -27,6 +28,7 @@ <field name="arch" type="xml"> <tree string="Timesheets" editable="top"> <field name="user_id"/> + <field name="department_id"/> <field name="date_from"/> <field name="date_to"/> <field name="name"/> @@ -107,6 +109,7 @@ <field name="date_from"/> <field name="date_to"/> <field name="company_id" select="1" groups="base.group_multi_company"/> + <field name="department_id"/> <notebook colspan="4"> <page string="Daily View"> <group col="6" colspan="4"> @@ -194,10 +197,7 @@ <field name="type">search</field> <field name="arch" type="xml"> <search string="Search Timesheet"> - <group col="10" colspan="4"> - <filter icon="terp-partner" string="My Timesheets" domain="[('user_id','=',uid)]" help="My Timesheet"/> - <filter icon="terp-crm" string="My departments timesheets" domain="[('user_id', 'child_of', [uid])]" help="My Departments Timesheet"/> - <separator orientation="vertical"/> + <group col="10" colspan="4"> <filter icon="terp-crm" string="Unvalidated" domain="[('state','<>','done'),('date_to','<',time.strftime('%%Y-%%m-%%d'))]" help="Unvalidated Timesheets"/> <separator orientation="vertical"/> <field name="state"> @@ -205,7 +205,14 @@ <filter icon="terp-hr" domain="[('state','=','confirm')]" help="Confirmed Timesheets"/> </field> <field name="name" select="1"/> - <field name="user_id" select="1" widget="selection"/> + <field name="user_id" select="1" widget="selection"> + <filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Timesheet"/> + </field> + <field name="department_id" widget="selection"> + <filter icon="terp-crm" + domain="[('department_id','=',context.get('department_id',False))]" + help="My Departments Timesheet"/> + </field> </group> </search> </field> diff --git a/addons/resource/hr_demo.xml b/addons/resource/hr_demo.xml deleted file mode 100755 index fc01109d86c..00000000000 --- a/addons/resource/hr_demo.xml +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - - <!-- Example employee --> - - <record id="timesheet_group1" model="resource.calendar"> - <field name="name">38 Hours/Week</field> - </record> - - <record id="employee1" model="hr.employee"> - <field name="name">Fabien Pinckaers</field> - <!--<field name="regime">45</field>--> - <field name="user_id" ref="base.user_root"/> - <!--<field name="holiday_max">25</field>--> - </record> - - <record model="resource.calendar.week"> - <field name="name">Monday morning</field> - <field name="dayofweek">0</field> - <field name="hour_from">08</field> - <field name="hour_to">12</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Monday evening</field> - <field name="dayofweek">0</field> - <field name="hour_from">13</field> - <field name="hour_to">18</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Tuesday morning</field> - <field name="dayofweek">1</field> - <field name="hour_from">08</field> - <field name="hour_to">12</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Tuesday evening</field> - <field name="dayofweek">1</field> - <field name="hour_from">13</field> - <field name="hour_to">18</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Wednesday morning</field> - <field name="dayofweek">2</field> - <field name="hour_from">08</field> - <field name="hour_to">12</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Wednesday evening</field> - <field name="dayofweek">2</field> - <field name="hour_from">13</field> - <field name="hour_to">18</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Thursday morning</field> - <field name="dayofweek">3</field> - <field name="hour_from">08</field> - <field name="hour_to">12</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Thursday evening</field> - <field name="hour_from">13</field> - <field name="hour_to">18</field> - <field name="dayofweek">3</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Friday morning</field> - <field name="dayofweek">4</field> - <field name="hour_from">08</field> - <field name="hour_to">12</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - <record model="resource.calendar.week"> - <field name="name">Friday evening</field> - <field name="dayofweek">4</field> - <field name="hour_from">13</field> - <field name="hour_to">18</field> - <field name="calendar_id" ref="timesheet_group1"/> - </record> - - </data> -</openerp> diff --git a/addons/resource/hr_department.py b/addons/resource/hr_department.py deleted file mode 100755 index 907bc55a435..00000000000 --- a/addons/resource/hr_department.py +++ /dev/null @@ -1,153 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -############################################################################## - -from osv import fields,osv -import tools - -class hr_department(osv.osv): - _name = "hr.department" - _columns = { - 'name': fields.char('Department Name', size=64, required=True), - 'company_id': fields.many2one('res.company', 'Company', select=True, required=True), - 'parent_id': fields.many2one('hr.department', 'Parent Department', select=True), - 'child_ids': fields.one2many('hr.department', 'parent_id', 'Child Departments'), - 'note': fields.text('Note'), - 'manager_id': fields.many2one('res.users', 'Manager', required=True), - 'member_ids': fields.many2many('res.users', 'hr_department_user_rel', 'department_id', 'user_id', 'Members'), - } - def _get_members(self,cr, uid, context={}): - mids = self.search(cr, uid, [('manager_id','=',uid)]) - result = {uid:1} - for m in self.browse(cr, uid, mids, context): - for user in m.member_ids: - result[user.id] = 1 - return result.keys() - def _check_recursion(self, cr, uid, ids): - level = 100 - while len(ids): - cr.execute('select distinct parent_id from hr_department where id in ('+','.join(map(str, ids))+')') - ids = filter(None, map(lambda x:x[0], cr.fetchall())) - if not level: - return False - level -= 1 - return True - - _constraints = [ - (_check_recursion, 'Error! You can not create recursive departments.', ['parent_id']) - ] - -hr_department() - - -class ir_action_window(osv.osv): - _inherit = 'ir.actions.act_window' - - def read(self, cr, uid, ids, fields=None, context=None, - load='_classic_read'): - select = ids - if isinstance(ids, (int, long)): - select = [ids] - res = super(ir_action_window, self).read(cr, uid, select, fields=fields, - context=context, load=load) - for r in res: - mystring = 'department_users_get()' - if mystring in (r.get('domain', '[]') or ''): - r['domain'] = r['domain'].replace(mystring, str( - self.pool.get('hr.department')._get_members(cr, uid))) - if isinstance(ids, (int, long)): - if res: - return res[0] - else: - return False - return res - -ir_action_window() - -class res_users(osv.osv): - _inherit = 'res.users' - _description = 'res.users' - - def _parent_compute(self, cr, uid, ids, name, args, context={}): - result = {} - obj_dept = self.pool.get('hr.department') - for user_id in ids: - ids_dept = obj_dept.search(cr, uid, [('member_ids', 'in', [user_id])]) - parent_ids = [] - if ids_dept: - data_dept = obj_dept.read(cr, uid, ids_dept, ['manager_id']) - parent_ids = map(lambda x: x['manager_id'][0], data_dept) - result[user_id] = parent_ids - return result - - def _parent_search(self, cr, uid, obj, name, args): - parent = [] - for arg in args: - if arg[0] == 'parent_id': - parent = arg[2] - child_ids = self._child_compute(cr, uid, parent,name, args, {}) - if not child_ids: - return [('id', 'in', [0])] - return [('id', 'in', child_ids.get(uid,[]))] - - def _child_compute(self, cr, uid, ids, name, args, context={}): - obj_dept = self.pool.get('hr.department') - obj_user = self.pool.get('res.users') - result = {} - for manager_id in ids: - child_ids = [] - mgnt_dept_ids = obj_dept.search(cr, uid, [('manager_id', '=', manager_id)]) - ids_dept = obj_dept.search(cr, uid, [('id', 'child_of', mgnt_dept_ids)]) - if ids_dept: - data_dept = obj_dept.read(cr, uid, ids_dept, ['member_ids']) - childs = map(lambda x: x['member_ids'], data_dept) - childs = tools.flatten(childs) - childs = obj_user.search(cr, uid, [('id','in',childs),('active','=',True)]) - if manager_id in childs: - childs.remove(manager_id) - - child_ids.extend(tools.flatten(childs)) - set = {} - map(set.__setitem__, child_ids, []) - child_ids = set.keys() - else: - child_ids = [] - result[manager_id] = child_ids - return result - - def _child_search(self, cr, uid, obj, name, args): - parent = [] - for arg in args: - if arg[0] == 'child_ids': - parent = arg[2] - child_ids = self._child_compute(cr, uid, parent,name, args, {}) - if not child_ids: - return [('id', 'in', [0])] - return [('id', 'in', child_ids.get(uid,[]))] - - _columns = { - 'parent_id': fields.function(_parent_compute, relation='res.users',fnct_search=_parent_search, method=True, string="Managers", type='many2many'), - 'child_ids': fields.function(_child_compute, relation='res.users', fnct_search=_child_search,method=True, string="Subordinates", type='many2many'), - } - - -res_users() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file diff --git a/addons/resource/hr_department_demo.xml b/addons/resource/hr_department_demo.xml deleted file mode 100755 index c7ea68f1dc3..00000000000 --- a/addons/resource/hr_department_demo.xml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data noupdate="1"> - - <record id="dep_management" model="hr.department"> - <field name="name">Management</field> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - </record> - <record id="dep_administration" model="hr.department"> - <field name="name">Administration</field> - <field name="parent_id" ref="dep_management"/> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - </record> - - <record id="dep_technical" model="hr.department"> - <field name="name">Technical department</field> - <field name="parent_id" ref="dep_management"/> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - </record> - - <record id="dep_it" model="hr.department"> - <field name="name">IT</field> - <field name="parent_id" ref="dep_technical"/> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - </record> - - <record id="dep_marketing" model="hr.department"> - <field name="name">Marketing</field> - <field name="parent_id" ref="dep_management"/> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - </record> - - <record id="dep_sales" model="hr.department"> - <field name="name">Sales</field> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - <field name="parent_id" ref="dep_management"/> - </record> - - <record id="dep_sales_europe" model="hr.department"> - <field name="name">Sales Europe</field> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - <field name="parent_id" ref="dep_sales"/> - </record> - - <record id="dep_sales_america" model="hr.department"> - <field name="name">Sales America</field> - <field name="company_id" ref="base.main_company"/> - <field name="manager_id" ref="base.user_root"/> - <field name="parent_id" ref="dep_sales"/> - </record> - - - - - </data> -</openerp> diff --git a/addons/resource/hr_department_view.xml b/addons/resource/hr_department_view.xml deleted file mode 100755 index fe65d988237..00000000000 --- a/addons/resource/hr_department_view.xml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - - <!-- - ====================== - department - ====================== - --> - <record id="view_department_form" model="ir.ui.view"> - <field name="name">hr.department.form</field> - <field name="model">hr.department</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="department"> - <field colspan="4" name="name" select="1"/> - <field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/> - <field name="parent_id" select="2"/> - <field colspan="4" name="manager_id" select="1"/> - <notebook colspan="4" > - <page string="Members"> - <field colspan="4" name="member_ids" nolabel="1"/> - </page> - <page string="Notes"> - <field colspan="4" name="note" nolabel="1"/> - </page> - </notebook> - </form> - </field> - </record> - <record id="view_department_tree" model="ir.ui.view"> - <field name="name">hr.department.tree</field> - <field name="model">hr.department</field> - <field name="type">tree</field> - <field name="field_parent">child_ids</field> - <field name="arch" type="xml"> - <tree string="Companies"> - <field name="name"/> - <field name="company_id" groups="base.group_multi_company"/> - <field name="manager_id"/> - </tree> - </field> - </record> - <record id="open_module_tree_department_tree" model="ir.actions.act_window"> - <field name="name">Departments</field> - <field name="res_model">hr.department</field> - <field name="view_type">tree</field> - <field name="domain">[('parent_id','=',False)]</field> - </record> - <menuitem action="open_module_tree_department_tree" id="menu_department_tree" parent="base.menu_users"/> - - <record id="open_module_tree_department" model="ir.actions.act_window"> - <field name="name">Departments</field> - <field name="res_model">hr.department</field> - <field name="view_type">form</field> - </record> - - <menuitem action="open_module_tree_department" id="menu_department_def" parent="hr.menu_department_tree"/> - - <!-- res.users inherit --> - <record model="ir.ui.view" id="view_users_form_inherit"> - <field name="name">res.users.form</field> - <field name="type">form</field> - <field name="model">res.users</field> - <field name="inherit_id" ref="base.view_users_form"/> - <field name="arch" type="xml"> - <notebook position="inside"> - <page string="Departements Informations"> - <separator string="Managers" colspan="4"/> - <field name="parent_id" nolabel="1" colspan="4"/> - <separator string="Subordinates" colspan="4"/> - <field name="child_ids" nolabel="1" colspan="4"/> - </page> - </notebook> - </field> - </record> - - </data> -</openerp> diff --git a/addons/resource/hr_view.xml b/addons/resource/hr_view.xml deleted file mode 100755 index c0fc3c54ffd..00000000000 --- a/addons/resource/hr_view.xml +++ /dev/null @@ -1,296 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - <menuitem icon="terp-hr" id="menu_hr_root" name="Human Resources" sequence="6"/> - <menuitem - id="menu_hr_reporting" - name="Reporting" - parent="hr.menu_hr_root" - sequence="40" /> - <menuitem - id="menu_hr_configuration" - name="Configuration" - parent="hr.menu_hr_root" - sequence="5" groups="group_hr_manager"/> - - <!-- - ========== - Employee - ========== - --> - <record id="view_employee_form" model="ir.ui.view"> - <field name="name">hr.employee.form</field> - <field name="model">hr.employee</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Employee"> - <group colspan="4" col="4"> - <field name="name" select="1"/> - <field name="active" select="1"/> - <field name="company_id" widget="selection" groups="base.group_multi_company"/> - <field name="user_id"/> - </group> - <notebook colspan="4"> - <page string="Personal Information"> - <group col="2" colspan="2"> - <separator colspan="2" string="Social IDs"/> - <field name="ssnid"/> - <field name="sinid"/> - <field name="otherid"/> - </group> - <group col="2" colspan="2"> - <separator string="Status" colspan="2"/> - <field name="gender"/> - <field name="marital"/> - <field name="country_id"/> - <field name="birthday"/> - </group> - - <group col="2" colspan="2"> - <separator string="Contact Information" colspan="2"/> - <field name="address_home_id" colspan="2"/> - <field name="address_id" colspan="2"/> - <field name="work_phone"/> - <field name="work_email" widget="email" /> - <field name="work_location"/> - </group> - - <group col="4" colspan="2"> - <separator string="Job Information" colspan="4"/> - <field name="parent_id" select="1" colspan="4"/> - - <field name="category_id" colspan="4" widget="selection"/> - </group> - </page> - <page string="Notes"> - <field colspan="4" nolabel="1" name="notes"/> - </page> - </notebook> - </form> - </field> - </record> - - <record id="view_employee_tree" model="ir.ui.view"> - <field name="name">hr.employee.tree</field> - <field name="model">hr.employee</field> - <field name="type">tree</field> - <field name="field_parent">child_ids</field> - <field name="arch" type="xml"> - <tree string="Employees"> - <field name="name"/> - <field name="work_phone"/> - <field name="work_email"/> - <field name="address_id"/> - <field name="parent_id"/> - </tree> - </field> - </record> - <record id="open_view_employee_tree" model="ir.actions.act_window"> - <field name="name">Employees Structure</field> - <field name="res_model">hr.employee</field> - <field name="view_type">tree</field> - <field name="view_mode">tree,form</field> - <field name="view_id" ref="view_employee_tree"/> - <field name="domain">[('parent_id','=',False)]</field> - </record> - - <record id="open_view_employee_list" model="ir.actions.act_window"> - <field name="name">Employees</field> - <field name="res_model">hr.employee</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="view_id" eval="False"/> - </record> - <menuitem - id="menu_open_view_employee_list" - name="Employees" - groups="group_hr_manager" - parent="hr.menu_hr_root"/> - - <menuitem - action="open_view_employee_tree" - id="menu_open_view_employee_tree" - parent="menu_open_view_employee_list"/> - - <record id="open_view_employee_list_my" model="ir.actions.act_window"> - <field name="name">All Employees</field> - <field name="res_model">hr.employee</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="domain">[]</field> - </record> - <menuitem - action="open_view_employee_list_my" - id="menu_open_view_employee_list_my" - parent="menu_open_view_employee_list"/> - - <!-- - ======================= - Employee architecture - ======================= - --> - <record id="view_partner_tree2" model="ir.ui.view"> - <field name="name">hr.employee.tree</field> - <field name="model">hr.employee</field> - <field name="type">tree</field> - <field name="field_parent">child_ids</field> - <field name="arch" type="xml"> - <tree string="Employees"> - <field name="name"/> - <field name="user_id"/> - <field name="address_id"/> - - </tree> - </field> - </record> - <record id="action2" model="ir.actions.act_window"> - <field name="name">Employee Hierarchy</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">hr.employee</field> - <field name="domain">[('id','in',active_ids)]</field> - <field name="view_type">tree</field> - <field name="view_id" ref="view_partner_tree2"/> - </record> - <ir_set> - <field eval="'action'" name="key"/> - <field eval="'client_action_multi'" name="key2"/> - <field eval="['hr.employee']" name="models"/> - <field name="name">Employees Hierarchy</field> - <field eval="'ir.actions.act_window,'+str(action2)" name="value"/> - <field eval="True" name="isobject"/> - <field eval="True" name="replace"/> - </ir_set> - - - <!-- - ============ - Working Time - ============ - --> - <record id="create_group" model="ir.ui.view"> - <field name="name">resource.calendar.form</field> - <field name="model">resource.calendar</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Working Time Category"> - <field name="name" select="1"/> - <field name="manager" select="1"/> - <newline/> - <field colspan="4" name="week_id" nolabel="1" widget="one2many_list"/> - </form> - </field> - </record> - <record id="edit_workgroup" model="ir.actions.act_window"> - <field name="name">Working Time Categories</field> - <field name="res_model">resource.calendar</field> - <field name="view_type">form</field> - <field name="view_id" eval="False"/> - </record> - <menuitem action="edit_workgroup" id="menu_edit_workgroup" parent="hr.menu_hr_configuration"/> - - <record id="view_timesheet_tree" model="ir.ui.view"> - <field name="name">resource.calendar.week.tree</field> - <field name="model">resource.calendar.week</field> - <field name="type">tree</field> - <field name="arch" type="xml"> - <tree string="Working Time"> - <field name="name"/> - <field name="dayofweek"/> - <field name="hour_from" widget="float_time"/> - <field name="hour_to" widget="float_time"/> - </tree> - </field> - </record> - <record id="view_timesheet_form" model="ir.ui.view"> - <field name="name">resource.calendar.week.form</field> - <field name="model">resource.calendar.week</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Working Time"> - <field colspan="4" name="name" select="1"/> - <field name="date_from"/> - <field name="dayofweek" select="1"/> - <field name="hour_from" widget="float_time"/> - <field name="hour_to" widget="float_time"/> - </form> - </field> - </record> - - <!-- - ============ - Employee Category - ============ - --> - - <record id="view_employee_category_form" model="ir.ui.view"> - <field name="name">hr.employee.category.form</field> - <field name="model">hr.employee.category</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Employee Category"> - <field name="name" select="1"/> - <field name="parent_id" select="1"/> - </form> - </field> - </record> - <record id="view_employee_category_list" model="ir.ui.view"> - <field name="name">hr.employee.category.list</field> - <field name="model">hr.employee.category</field> - <field name="type">tree</field> - <field eval="8" name="priority"/> - <field name="arch" type="xml"> - <tree string="Employees Categories"> - <field name="name"/> - <field name="parent_id"/> - </tree> - </field> - </record> - <record id="view_employee_category_tree" model="ir.ui.view"> - <field name="name">hr.employee.category.tree</field> - <field name="model">hr.employee.category</field> - <field name="type">tree</field> - <field name="field_parent">child_ids</field> - <field name="arch" type="xml"> - <tree string="Employees Categories"> - <field name="name"/> - </tree> - </field> - </record> - <record id="open_view_categ_form" model="ir.actions.act_window"> - <field name="name">Categories of Employee</field> - <field name="res_model">hr.employee.category</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - </record> - <menuitem action="open_view_categ_form" id="menu_view_employee_category_form" parent="hr.menu_hr_configuration"/> - - <record id="open_view_categ_tree" model="ir.actions.act_window"> - <field name="name">Categories structure</field> - <field name="res_model">hr.employee.category</field> - <field name="view_type">tree</field> - <field name="view_id" ref="view_employee_category_tree"/> - <field name="domain">[('parent_id','=',False)]</field> - </record> - - <record id="hr_employee_normal_action_tree" model="ir.actions.act_window"> - <field name="name">Employees</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">hr.employee</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="domain">[('category_id','child_of',[active_id])]</field> - <field name="context">{'category_id':active_id}</field> - </record> - - <record id="hr_employee_category_open" model="ir.values"> - <field eval="'tree_but_open'" name="key2"/> - <field eval="'hr.employee.category'" name="model"/> - <field name="name">Employees by Categories</field> - <field eval="'ir.actions.act_window,%d'%hr_employee_normal_action_tree" name="value"/> - <field eval="True" name="object"/> - </record> - - <menuitem action="open_view_categ_tree" id="menu_view_employee_category_tree" parent="hr.menu_view_employee_category_form"/> - - </data> -</openerp> |
