[IMP]: Merged crm and crm_configuration modules

bzr revid: rpa@tinyerp.com-20091204141517-kz8gmgih8kbtge6e
This commit is contained in:
rpa (Open ERP) 2009-12-04 19:45:17 +05:30
parent 04513f20a4
commit 6e24064d33
56 changed files with 5927 additions and 20 deletions

View File

@ -22,6 +22,7 @@
import crm
import crm_segmentation
import crm_calendar
import crm_config
import report
import wizard

View File

@ -45,15 +45,30 @@ between mails and Open ERP.""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': ['base',
'caldav'
'caldav',
'process'
],
'init_xml': ['crm_data.xml'],
'init_xml': ['crm_data.xml'
],
'update_xml': [
'crm_wizard.xml',
'crm_configuration_wizard.xml',
'crm_view.xml',
'crm_config_view.xml',
'crm_bugs_view.xml',
'crm_jobs_view.xml',
'crm_lead_view.xml',
'crm_meeting_view.xml',
'crm_opportunity_view.xml',
'crm_fund_view.xml',
'crm_claims_view.xml',
'crm_phonecall_view.xml',
'crm_report_view.xml',
'crm_helpdesk_view.xml',
'crm_report.xml',
'security/crm_security.xml',
'security/ir.model.access.csv'
'security/ir.model.access.csv',
'process/crm_configuration_process.xml'
],
'demo_xml': ['crm_demo.xml'],
'installable': True,

View File

@ -0,0 +1,78 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
Case Sections
-->
<record model="crm.case.section" id="section_support">
<field name="name">Bug Tracking</field>
<field name="code">BugSup</field>
</record>
<!--
Case Categories
-->
<!-- For Bugs -->
<record model="crm.case.categ" id="categ1">
<field name="name">Bugs</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.categ" id="categ2">
<field name="name">Patches</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.categ" id="categ3">
<field name="name">Feature Requests</field>
<field name="section_id" ref="section_support"/>
</record>
<!--
Case Category2
-->
<!-- For Bugs -->
<record model="crm.case.category2" id="category1">
<field name="name">Version 4.2</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.category2" id="category2">
<field name="name">Version 4.4</field>
<field name="section_id" ref="section_support"/>
</record>
<!--
Case Stage
-->
<!-- For Bugs -->
<record model="crm.case.stage" id="stage1">
<field name="name">Accepted as Bug</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage2">
<field name="name">Fixed</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage3">
<field name="name">Won't fix</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage4">
<field name="name">Invalid</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage5">
<field name="name">Awaiting Response</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage6">
<field name="name">Works For Me</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage7">
<field name="name">Future</field>
<field name="section_id" ref="section_support"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,276 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Bug Tracking-->
<record id="crm_case_buginaccountsmodule0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_8"/>
<field eval="time.strftime('%Y-%m-08 10:15:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;5&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_agrolait"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage1"/>
<field eval="15.0" name="duration"/>
<field eval="&quot;Bug in Accounts module&quot;" name="name"/>
<field eval="&quot;agr@agrolait.com&quot;" name="email_from"/>
</record>
<record id="crm_case_log_takecorrectiveactions0" model="crm.case.log">
<field eval="time.strftime('%Y-%m-08')" name="date"/>
<field name="case_id" ref="crm_case_buginaccountsmodule0"/>
<field name="som" ref="base.som_normal"/>
<field eval="&quot;Take corrective actions&quot;" name="name"/>
<field model="res.partner.canal" name="canal_id" search="[('name','=','website')]"/>
</record>
<record id="crm_case_programnotgivingproperoutput0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_tang"/>
<field eval="time.strftime('%Y-%m-15 12:50:00')" name="date"/>
<field name="category2_id" ref="crm.category2"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="3.5" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage2"/>
<field eval="&quot;Program not giving proper output&quot;" name="name"/>
</record>
<record id="crm_case_outputincorrect0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_9"/>
<field eval="time.strftime('%Y-%m-18 14:30:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_2"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="2.3" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage3"/>
<field eval="&quot;Output incorrect&quot;" name="name"/>
</record>
<record id="crm_case_problemloadingpage0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_13"/>
<field eval="time.strftime('%Y-%m-20 15:25:05')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_14"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="4.0" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage4"/>
<field eval="&quot;Problem loading page&quot;" name="name"/>
</record>
<record id="crm_case_pagenotfound0" model="crm.case">
<field eval="time.strftime('%Y-%m-22 18:15:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="1.0" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage5"/>
<field eval="&quot;Page not Found&quot;" name="name"/>
</record>
<record id="crm_case_programmingerror0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_10"/>
<field eval="time.strftime('%Y-%m-24 09:45:00')" name="date"/>
<field name="category2_id" ref="crm.category2"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="4.0" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage6"/>
<field eval="&quot;Programming Error&quot;" name="name"/>
</record>
<record id="crm_case_logicalerrorinprogram0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_6"/>
<field eval="time.strftime('%Y-%m-26 11:10:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="2.0" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage7"/>
<field eval="&quot;Logical Error in Program&quot;" name="name"/>
</record>
<record id="crm_case_constrainterror0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_6"/>
<field eval="time.strftime('%Y-%m-25 13:35:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="7.3" name="duration"/>
<field name="categ_id" ref="crm.categ1"/>
<field name="stage_id" ref="crm.stage5"/>
<field eval="&quot;Constraint Error&quot;" name="name"/>
</record>
<record id="crm_case_errorinprogram0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_10"/>
<field eval="time.strftime('%Y-%m-28 15:40:00')" name="date"/>
<field name="category2_id" ref="crm.category2"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="1.3" name="duration"/>
<field name="categ_id" ref="crm.categ2"/>
<field name="stage_id" ref="crm.stage5"/>
<field eval="&quot;Error in Program&quot;" name="name"/>
</record>
<record id="crm_case_patcheserrorinprogram0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_9"/>
<field eval="time.strftime('%Y-%m-28 16:30:00')" name="date"/>
<field name="category2_id" ref="crm.category2"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_2"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="13.0" name="duration"/>
<field name="categ_id" ref="crm.categ2"/>
<field name="stage_id" ref="crm.stage5"/>
<field eval="&quot;Patches Error in Program&quot;" name="name"/>
</record>
<record id="crm_case_newfeaturestobeadded0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_wong"/>
<field eval="time.strftime('%Y-%m-01 12:15:10')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_maxtor"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="3.2" name="duration"/>
<field name="categ_id" ref="crm.categ3"/>
<field name="stage_id" ref="crm.stage1"/>
<field eval="&quot;New Features To Be Added&quot;" name="name"/>
</record>
<record id="crm_case_addmenustothemodule0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="time.strftime('%Y-%m-05 18:00:00')" name="date"/>
<field name="category2_id" ref="crm.category2"/>
<field eval="&quot;1&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="3.0" name="duration"/>
<field name="categ_id" ref="crm.categ3"/>
<field name="stage_id" ref="crm.stage2"/>
<field eval="&quot;Add menus to the module&quot;" name="name"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
<record id="crm_case_includeattendancesheetinproject0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="time.strftime('%Y-%m-10 17:05:30')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="2.0" name="duration"/>
<field name="categ_id" ref="crm.categ3"/>
<field name="stage_id" ref="crm.stage3"/>
<field eval="&quot;Include Attendance sheet in Project&quot;" name="name"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
</record>
<record id="crm_case_createnewobject0" model="crm.case">
<field model="res.partner.canal" name="canal_id" search="[('name','=','phone')]"/>
<field name="partner_address_id" ref="base.res_partner_address_6"/>
<field name="som" ref="base.som_happy"/>
<field eval="time.strftime('%Y-%m-15 10:35:15')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="2.45" name="duration"/>
<field name="categ_id" ref="crm.categ3"/>
<field name="stage_id" ref="crm.stage5"/>
<field eval="&quot;Create new object&quot;" name="name"/>
</record>
<record id="crm_case_improvereportsinhrms0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="time.strftime('%Y-%m-19 12:15:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="15.0" name="duration"/>
<field name="categ_id" ref="crm.categ3"/>
<field name="stage_id" ref="crm.stage7"/>
<field eval="&quot;Improve Reports in HRMS&quot;" name="name"/>
</record>
<record id="crm_case_improvereportsinpms0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="time.strftime('%Y-%m-21 14:30:00')" name="date"/>
<field name="category2_id" ref="crm.category1"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support"/>
<field eval="1" name="active"/>
<field eval="06.15" name="duration"/>
<field name="categ_id" ref="crm.categ3"/>
<field name="stage_id" ref="crm.stage5"/>
<field eval="&quot;Improve Reports in PMS&quot;" name="name"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,67 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<menuitem id="menu_aftersale" name="After-Sale Services" parent="crm.menu_crm"/>
<record model="crm.case.categ" id="categ1">
<field name="name">Bugs</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.categ" id="categ2">
<field name="name">Patches</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.categ" id="categ3">
<field name="name">Feature Requests</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage2">
<field name="name">Fixed</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage5">
<field name="name">Awaiting Response</field>
<field name="section_id" ref="section_support"/>
</record>
<record model="crm.case.stage" id="stage7">
<field name="name">Future</field>
<field name="section_id" ref="section_support"/>
</record>
######################## BUG TRACKING (menu) ###########################
<!--
ALL BUGS
-->
<record model="ir.actions.act_window" id="crm_case_categ_act0">
<field name="name">Bugs</field>
<field name="res_model">crm.case</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_tree_view"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_bugs_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view0">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view"/>
<field name="act_window_id" ref="crm_case_categ_act0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_view0">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view"/>
<field name="act_window_id" ref="crm_case_categ_act0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view0">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view"/>
<field name="act_window_id" ref="crm_case_categ_act0"/>
</record>
<menuitem name="Bug Tracking" id="menu_crm_case_bug_track" parent="menu_aftersale" action="crm_case_categ_act0"/>
</data>
</openerp>

232
addons/crm/crm_bugs_view.xml Executable file
View File

@ -0,0 +1,232 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- <menuitem name="CRM &amp; SRM" icon="terp-crm" id="menu_crm1"/> -->
# ------------------------------------------------------
# Bug Tracking
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_form_view">
<field name="name">CRM - Bug Tracker Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Bug Tracker Form">
<group colspan="4" col="6">
<field name="name" string="Title" colspan="2"/>
<field name="section_id" colspan="1" widget="selection"/>
<label string="Resolution: " 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"/>
<field name="user_id" />
</group>
<notebook colspan="4">
<page string="General">
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<field name="email_from" colspan="2"/>
<separator colspan="4"/>
<field name="category2_id" string="Version"/>
<field name="categ_id" on_change="onchange_categ_id(categ_id)"/>
<field name="priority" string="Severity"/>
<group colspan="2">
<field name="case_id" select="1"/>
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</group>
<newline/>
<separator string= "Description" colspan="4"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" />
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active" />
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date_action_next"/>
<separator colspan="4" string="Estimates"/>
<field name="planned_revenue"/>
<field name="planned_cost"/>
<field name="probability"/>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date" />
<field name="user_id" />
<field name="som" />
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Events">
<field name="child_ids" colspan="4" nolabel="1">
<tree string="Related Cases">
<field name="id"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
</page>
<page string="Emails">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view">
<field name="name">CRM - Bug Tracker Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Bugs Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Title"/>
<field name="partner_id"/>
<field name="priority" string="Severity"/>
<field name="categ_id"/>
<field name="stage_id" string="Resolution"/>
<field name="category2_id" string="Version"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</tree>
</field>
</record>
<record id="view_crm_case_bugs_filter" model="ir.ui.view">
<field name="name">crm.case.bugs.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Bugs">
<group col="7" colspan="1">
<filter icon="gtk-apply" string="Fixed Bugs"
domain="[('section_id.name','=','Bug Tracking'),('stage_id.name','=','Fixed')]"
separator="1" help="All Fixed Bugs"
/>
<filter icon="gtk-media-pause" string="Waiting Bugs"
domain="[('section_id.name','=','Bug Tracking'),('stage_id.name','=','Awaiting Response')]"
separator="1" help="All Waiting Bugs"
/>
<filter icon="gtk-media-forward" string="Future Bugs"
domain="[('section_id.name','=','Bug Tracking'),('stage_id.name','=','Future')]"
separator="1" help="All Future Bugs"
/>
<separator orientation="vertical"/>
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's bugs"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
domain="[('date::date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date::date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Bugs during last 7 days"
/>
</group>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select='1' string="Subject"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Bugs" default="1"/>
<filter icon="terp-crm" domain="[('user_id','child_of',[uid])]" help="My department's Bugs"/>
</field>
<field name="state" select="1">
<filter icon="gtk-new" domain="[('state','=','draft')]" help="Draft Bugs"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Bugs"/>
<filter icon="gtk-media-pause" domain="[('state','=','pending')]" help="Pending Bugs"/>
</field>
</group>
</search>
</field>
</record>
<record id="view_crm_case_feature_request_filter" model="ir.ui.view">
<field name="name">crm.case.feature.request.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Feature Request">
<group col='6' colspan='4'>
<filter icon="gtk-execute" string="My Feature Request" domain="[('user_id','=',uid)]" separator="1" help="Feature Requests Related to Current User"/>
<field name="state" select="1">
<filter icon="terp-crm" domain="[('state','=','draft')]" help="Draft Feature Request"/>
<filter icon="terp-crm" domain="[('state','=','open')]" help="Open Feature Request"/>
<filter icon="terp-crm" domain="[('state','=','pending')]" help="Pending Feature Request"/>
</field>
<separator orientation="vertical"/>
<field name="name" select='1'/>
<field name="user_id" select="1" widget="selection"/>
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="crm_case_calendar_view">
<field name="name">CRM - Bug Tracker Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Bugs" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
</calendar>
</field>
</record>
</data>
</openerp>

View File

@ -3,7 +3,7 @@
<record id="caldav_attendee_form_view" model="ir.ui.view">
<field name="name">crm.case.caldav.attendee</field>
<field name="model">caldav.attendee</field>
<field name="model">crm.caldav.attendee</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Atendee details">
@ -24,7 +24,7 @@
<record id="caldav_attendee_tree_view" model="ir.ui.view">
<field name="name">crm.case.caldav.attendee</field>
<field name="model">caldav.attendee</field>
<field name="model">crm.caldav.attendee</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Atendee details">
@ -59,8 +59,6 @@
<field name="location" colspan="4" nolabel="1"/>
<separator string="Freebusy Value" colspan="4"/>
<field name="freebusy" colspan="4" nolabel="1"/>
<separator string="Attendee Details" colspan="4"/>
<field name="attendee" colspan="4" nolabel="1"/>
<separator string="RRule Details" colspan="4"/>
<field name="rrule" colspan="4" nolabel="1"/>
<separator string="Recurrenet Dates" colspan="4"/>

View File

@ -46,8 +46,8 @@ class crm_section(osv.osv):
# get all property of CalDAV
crm_section()
class caldav_attendee(osv.osv):
_name = 'caldav.attendee'
class crm_caldav_attendee(osv.osv):
_name = 'crm.caldav.attendee'
_description = 'Attendee information'
_rec_name = 'cutype'
@ -82,7 +82,7 @@ class caldav_attendee(osv.osv):
'language' : fields.char('LANGUAGE', size=124),
}
caldav_attendee()
crm_caldav_attendee()
class crm_case(osv.osv):
_name = 'crm.case'
@ -153,19 +153,16 @@ class crm_case(osv.osv):
return res
_columns = {
'categ_id': fields.many2many('crm.case.categ', 'crm_category_rel', 'case_id', 'category_id', 'Categories'),
'class' : fields.selection([('PUBLIC', 'PUBLIC'), ('PRIVATE', 'PRIVATE'), \
('CONFIDENTIAL', 'CONFIDENTIAL')], 'Class'),
'location' : fields.function(_get_location, method=True, store = True, string='Location', type='text'),
'freebusy' : fields.text('FreeBusy'),
'transparent' : fields.selection([('OPAQUE', 'OPAQUE'), ('TRANSPARENT', 'TRANSPARENT')], 'Trensparent'),
'caldav_url' : fields.char('Caldav URL', size=34),
# 'attachment_ids' : function ("one2many from ir.attachemnt"),
'attendee' : fields.text('Attendee'), #TODO : display dynamic view from text value
'rrule' : fields.text('Recurrent Rule'),
'rdates' : fields.function(_get_rdates, method=True, string='Recurrent Dates', \
store=True, type='text'),
'attendees': fields.many2many('caldav.attendee', 'crm_attendee_rel', 'case_id', 'attendee_id', 'Attendees'),
'attendees': fields.many2many('crm.caldav.attendee', 'crm_attendee_rel', 'case_id', 'attendee_id', 'Attendees'),
}
_defaults = {
@ -178,10 +175,13 @@ class crm_case(osv.osv):
crm_data = self.read(cr, uid, ids, [])
ical = vobject.iCalendar()
event_obj = self.pool.get('caldav.event')
uid_val = ''
for crm in crm_data:
ical.add('vevent')
vevent = ical.vevent
vevent = ical.add('vevent')
for key, val in self.__attribute__.items():
if key == 'uid':
uid_val += str(crm[val['field']])
continue
if val == None or key == 'rrule':
continue
if val.has_key('field') and val.has_key('sub-field') and crm[val['field']] and crm[val['field']]:
@ -197,8 +197,8 @@ class crm_case(osv.osv):
startdate = datetime.now()
rset1 = rrulestr(str(crm[event_obj.__attribute__['rrule']['field']]), dtstart=startdate, forceset=True)
vevent.rruleset = rset1
return ical.serialize().replace(vobject.icalendar.CRLF, vobject.icalendar.LF).strip()
vevent.add('uid').value = uid_val
return ical.serialize()#.replace(vobject.icalendar.CRLF, vobject.icalendar.LF).strip()
def import_cal(self, cr, uid, ids, data, context={}):
file_content = base64.decodestring(data['form']['file_path'])
@ -238,6 +238,10 @@ class crm_case(osv.osv):
return res
def browse(self, cr, uid, select, context=None, list_class=None, fields_process={}):
if not type(select) == list :
# Called from code
id = int(str(select).split('-')[0])
return super(crm_case, self).browse(cr, uid, id, context, list_class, fields_process)
select = map(lambda x:int(str(x).split('-')[0]), select)
return super(crm_case, self).browse(cr, uid, select, context, list_class, fields_process)
@ -247,13 +251,21 @@ class crm_case(osv.osv):
example : 123-20091111170822"""
if context and context.has_key('read'):
return super(crm_case, self).read(cr, uid, ids, fields=fields, context=context, load=load)
ids = map(lambda x:int(str(x).split('-')[0]), ids)
if not type(ids) == list :
# Called from code
ids = int(str(ids).split('-')[0])
res = super(crm_case, self).read(cr, uid, ids, fields=fields, context=context, load=load)
return res
else:
ids = map(lambda x:int(str(x).split('-')[0]), ids)
res = super(crm_case, self).read(cr, uid, ids, fields=fields, context=context, load=load)
result = res + []
read_ids = ",".join([str(x) for x in ids])
cr.execute('select id,rrule,rdates from crm_case where id in (%s)' % read_ids)
rrules = filter(lambda x: not x['rrule']==None, cr.dictfetchall())
rdates = []
if not rrules:
return res
result = res + []
for data in rrules:
if data['rrule'] and data['rdates']: # delete 2nd condition at last
rdates = eval(data['rdates'])

View File

@ -0,0 +1,61 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="crm.case.section" id="section_support_claims">
<field name="name">Claims</field>
<field name="code">Claim</field>
</record>
<!--
Case Categories
-->
<record model="crm.case.categ" id="categ_claim1">
<field name="name">Factual Claims</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.categ" id="categ_claim2">
<field name="name">Value Claims</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.categ" id="categ_claim3">
<field name="name">Policy Claims</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<!--
Case Category2
-->
<record model="crm.case.category2" id="category_claim1">
<field name="name">Corrective</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.category2" id="category_claim2">
<field name="name">Preventive</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<!--
Case Stage
-->
<record model="crm.case.stage" id="stage_claim1">
<field name="name">Accepted as Claim</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.stage" id="stage_claim2">
<field name="name">Fixed</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.stage" id="stage_claim3">
<field name="name">Won't fix</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.stage" id="stage_claim4">
<field name="name">Invalid</field>
<field name="section_id" ref="section_support_claims"/>
</record>
<record model="crm.case.stage" id="stage_claim5">
<field name="name">Awaiting Response</field>
<field name="section_id" ref="section_support_claims"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,120 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<record id="crm_case_claim01" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="time.strftime('%Y-%m-04 10:45:36')" name="date"/>
<field name="category2_id" ref="crm.category_claim1"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Problem with the delivery of goods&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot;(726) 782-0636&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_claim1"/>
<field name="stage_id" ref="crm.stage_claim1"/>
<field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
</record>
<record id="crm_case_claim02" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_6"/>
<field eval="time.strftime('%Y-%m-11 11:19:25')" name="date"/>
<field name="category2_id" ref="crm.category_claim2"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Damaged Products&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot;(392) 895-7917&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_claim2"/>
<field name="stage_id" ref="crm.stage_claim5"/>
<field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
</record>
<record id="crm_case_claim03" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="time.strftime('%Y-%m-15 17:44:12')" name="date"/>
<field name="category2_id" ref="crm.category_claim1"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Document related problems&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot;(820) 167-3208&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_claim3"/>
<field name="stage_id" ref="crm.stage_claim2"/>
<field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
</record>
<record id="crm_case_claim04" model="crm.case">
<field eval="time.strftime('%Y-%m-21 14:10:23')" name="date"/>
<field name="category2_id" ref="crm.category_claim2"/>
<field name="partner_id" ref="base.res_partner_tinyatwork"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Product quality not maintained&quot;" name="name"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot;(077) 582-4035&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_claim1"/>
<field name="stage_id" ref="crm.stage_claim5"/>
<field eval="&quot;(514) 698-4118&quot;" name="partner_phone"/>
</record>
<record id="crm_case_claim05" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_10"/>
<field eval="time.strftime('%Y-%m-28 16:20:43')" name="date"/>
<field name="category2_id" ref="crm.category_claim1"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Some products missing&quot;" name="name"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot;(333) 715-1450&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_claim3"/>
<field name="stage_id" ref="crm.stage_claim3"/>
<field eval="&quot;(855) 924-4364&quot;" name="partner_phone"/>
</record>
<record id="crm_case_claim06" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_claim2"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Problem with the delivery of assignments&quot;" name="name"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot;(468) 017-2684&quot;" name="partner_mobile"/>
<field eval="time.strftime('%Y-%m-28 14:15:30')" name="date"/>
<field name="categ_id" ref="crm.categ_claim1"/>
<field name="stage_id" ref="crm.stage_claim4"/>
<field eval="&quot;(373) 907-1009&quot;" name="partner_phone"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
<record id="crm_case_claims07" model="crm.case">
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_claim1"/>
<field name="partner_id" ref="base.res_partner_seagate"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Documents unclear&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_claims"/>
<field eval="&quot; (463) 014-1208&quot;" name="partner_mobile"/>
<field eval="time.strftime('%Y-%m-19 13:01:05')" name="date"/>
<field name="categ_id" ref="crm.categ_claim3"/>
<field name="stage_id" ref="crm.stage_claim2"/>
<field eval="&quot;(282) 603-7489&quot;" name="partner_phone"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,38 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<menuitem id="menu_aftersale" name="After-Sale Services" parent="crm.menu_crm"/>
######################## CLAIMS (menu) ###########################
<record model="ir.actions.act_window" id="crm_case_categ_claim0">
<field name="name">All Claims</field>
<field name="res_model">crm.case</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_claims_tree_view"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(ref('section_support_claims'))+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_claims_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_claim0">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_claims_tree_view"/>
<field name="act_window_id" ref="crm_case_categ_claim0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_claim0">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_claims_calendar_view"/>
<field name="act_window_id" ref="crm_case_categ_claim0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_claim0">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_claims_form_view"/>
<field name="act_window_id" ref="crm_case_categ_claim0"/>
</record>
<menuitem name="Claims" id="menu_crm_case_claims" parent="menu_aftersale" action="crm_case_categ_claim0"/>
</data>
</openerp>

186
addons/crm/crm_claims_view.xml Executable file
View File

@ -0,0 +1,186 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Claims
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_claims_tree_view">
<field name="name">CRM - Claims Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Claims" colors="red:state=='open'">
<field name="id"/>
<field name="name"/>
<field name="partner_id"/>
<field name="date" string="Date"/>
<field name="categ_id" string="Type" select="1"/>
<field name="user_id" string="Responsible" select="2"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_claims_form_view">
<field name="name">CRM - Claims Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Claims">
<group colspan="4" col="6">
<field name="name"/>
<field name="partner_id"/>
<field name="user_id" string="Responsible" select="2"/>
<newline/>
<field name="section_id" widget="selection"/>
<field name="date" string="Date of Claim"/>
<field name="categ_id" string="Type of claim" select="1" on_change="onchange_categ_id(categ_id)"/>
<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>
<group colspan="2">
<field name="case_id" select="1"/>
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</group>
</group>
<notebook>
<page string="Claims Info">
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<field name="email_from"/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
<newline/>
<field name="planned_cost" string="Claim Cost"/>
<newline/>
<field name="priority"/>
<field name="category2_id" string="Type of Action" select="1"/>
<field name="ref"/>
<field name="ref2"/>
<separator colspan="4" string="Claim/Action Description"/>
<field name="description" colspan="4" nolabel="1"/>
<separator colspan="4" string="Status"/>
<group col="8" colspan="4">
<field name="state" select="1"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active"/>
<field name="canal_id"/>
<field name="som"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date_action_next"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Events">
<field name="child_ids" colspan="4" nolabel="1">
<tree string="Related Cases">
<field name="id"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_claims_calendar_view">
<field name="name">CRM - Claims Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Claims" date_start="date" color="user_id">
<field name="name"/>
<field name="partner_name"/>
<field name="categ_id"/>
</calendar>
</field>
</record>
<record id="view_crm_case_claims_filter" model="ir.ui.view">
<field name="name">crm.case.claims.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Claims">
<group col="4" colspan="1">
<filter icon="gtk-new" string="New Claims"
domain="[('section_id.name','=','Claims'),('state','=','draft')]"
separator="1" help="New Claims"
/>
<filter icon="gtk-execute"
string="In Progress Claims"
domain="[('section_id.name','=','Claims'),('state','=','open')]"
separator="1" help="In Progress Claims"
/>
<filter icon="gtk-media-pause"
string="Pending Claims"
domain="[('section_id.name','=','Claims'),('state','=','pending')]"
separator="1" help="All pending Claims"
/>
</group>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select='1'/>
<field name="partner_id" select="1"/>
<field name="user_id" select="1" widget="selection"/>
</group>
</search>
</field>
</record>
</data>
</openerp>

231
addons/crm/crm_config.py Normal file
View File

@ -0,0 +1,231 @@
# -*- 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/>.
#
##############################################################################
import tools
from osv import fields, osv
import os
import pooler
import netsvc
from tools.translate import _
from osv.orm import except_orm
#AVAILABLE_STATES = [
# ('draft','Unreviewed'),
# ('open','Open'),
# ('cancel', 'Refuse Bug'),
# ('done', 'Done'),
# ('pending','Pending')
#]
class crm_case_category2(osv.osv):
_name = "crm.case.category2"
_description = "Category2 of case"
_rec_name = "name"
_columns = {
'name': fields.char('Case Category2 Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Case Section'),
}
crm_case_category2()
class crm_case_stage(osv.osv):
_name = "crm.case.stage"
_description = "Stage of case"
_rec_name = 'name'
_order = "sequence"
_columns = {
'name': fields.char('Stage Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Case Section'),
'sequence': fields.integer('Sequence'),
}
_defaults = {
'sequence': lambda *args: 1
}
crm_case_stage()
class crm_cases(osv.osv):
_name = "crm.case"
_inherit = "crm.case"
_columns = {
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id)]"),
'category2_id': fields.many2one('crm.case.category2', 'Category Name', domain="[('section_id','=',section_id)]"),
'duration': fields.float('Duration'),
'case_id': fields.many2one('crm.case', 'Related Case'),
'partner_name': fields.char('Employee 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),
'child_ids': fields.one2many('crm.case', 'case_id', 'Events'),
}
def stage_next(self, cr, uid, ids, context={}):
ok = False
sid = self.pool.get('crm.case.stage').search(cr, uid, [], context=context)
s = {}
previous = {}
for stage in self.pool.get('crm.case.stage').browse(cr, uid, sid, context=context):
section = stage.section_id.id or False
s.setdefault(section, {})
s[section][previous.get(section, False)] = stage.id
previous[section] = stage.id
for case in self.browse(cr, uid, ids, context):
section = (case.section_id.id or False)
if section in s:
st = case.stage_id.id or False
if st in s[section]:
self.write(cr, uid, [case.id], {'stage_id': s[section][st]})
return True
def onchange_case_id(self, cr, uid, ids, case_id, name, partner_id, context={}):
if not case_id:
return {}
case = self.browse(cr, uid, case_id, context=context)
value = {}
if not name:
value['name'] = case.name
if (not partner_id) and case.partner_id:
value['partner_id'] = case.partner_id.id
if case.partner_address_id:
value['partner_address_id'] = case.partner_address_id.id
if case.email_from:
value['email_from'] = case.email_from
return {'value': value}
crm_cases()
class crm_menu_config_wizard(osv.osv_memory):
_name = 'crm.menu.config_wizard'
_columns = {
'name': fields.char('Name', size=64),
'meeting': fields.boolean('Calendar of Meetings', help="Manages the calendar of meetings of the users."),
'lead': fields.boolean('Prospect', help="Allows you to track and manage leads which are pre-sales requests or contacts, the very first contact with a customer request."),
'opportunity': fields.boolean('Business Opportunities', help="Tracks identified business opportunities for your sales pipeline."),
'jobs': fields.boolean('Jobs Hiring Process', help="Help you to organise the jobs hiring process: evaluation, meetings, email integration..."),
'document_ics': fields.boolean('Shared Calendar', help=" Will allow you to synchronise your Open ERP calendars with your phone, outlook, Sunbird, ical, ..."),
'bugs': fields.boolean('Bug Tracking', help="Used by companies to track bugs and support requests on software"),
'helpdesk': fields.boolean('Helpdesk', help="Manages an Helpdesk service."),
'fund': fields.boolean('Fund Raising Operations', help="This may help associations in their fund raising process and tracking."),
'claims': fields.boolean('Claims', help="Manages the supplier and customers claims, including your corrective or preventive actions."),
'phonecall': fields.boolean('Phone Calls', help="Help you to encode the result of a phone call or to plan a list of phone calls to process."),
}
_defaults = {
'meeting': lambda *args: True,
'opportunity': lambda *args: True,
'phonecall': lambda *args: True,
}
def action_create(self, cr, uid, ids, context=None):
module_proxy = self.pool.get('ir.module.module')
modid = module_proxy.search(cr, uid, [('name', '=', 'crm')])
moddemo = module_proxy.browse(cr, uid, modid[0]).demo
lst = ('data', 'menu')
if moddemo:
lst = ('data', 'menu', 'demo')
res = self.read(cr, uid, ids)[0]
idref = {}
for section in ['meeting', 'lead', 'opportunity', 'jobs', 'bugs', 'fund', 'helpdesk', 'claims', 'phonecall']:
if (not res[section]):
continue
for fname in lst:
file_name = 'crm_' + section + '_' + fname + '.xml'
try:
fp = tools.file_open(os.path.join('crm', file_name))
except IOError, e:
fp = None
if fp:
tools.convert_xml_import(cr, 'crm', fp, idref, 'init', noupdate=True)
cr.commit()
modobj = self.pool.get('ir.module.module')
modids = modobj.search(cr, uid, [('name', '=', 'crm')])
modobj.update_translations(cr, 1, modids, None)
if res['document_ics']:
ids = module_proxy.search(cr, uid, [('name', '=', 'document_ics')])
module_proxy.button_install(cr, uid, ids, context=context)
cr.commit()
db, pool = pooler.restart_pool(cr.dbname, update_module=True)
return {
'view_type': 'form',
"view_mode": 'form',
'res_model': 'ir.actions.configuration.wizard',
'type': 'ir.actions.act_window',
'target': 'new',
}
def action_cancel(self, cr, uid, ids, context=None):
return {
'view_type': 'form',
"view_mode": 'form',
'res_model': 'ir.actions.configuration.wizard',
'type': 'ir.actions.act_window',
'target': 'new',
}
crm_menu_config_wizard()
class crm_generic_wizard(osv.osv_memory):
_name = 'crm.generic_wizard'
_columns = {
'section_id': fields.many2one('crm.case.section', 'Section', required=True),
'user_id': fields.many2one('res.users', 'Responsible'),
}
def _get_default_section(self, cr, uid, context):
case_id = context.get('active_id',False)
if not case_id:
return False
case_obj = self.pool.get('crm.case')
case = case_obj.read(cr, uid, case_id, ['state','section_id'])
if case['state'] in ('done'):
raise osv.except_osv(_('Error !'), _('You can not assign Closed Case.'))
return case['section_id']
_defaults = {
'section_id': _get_default_section
}
def action_create(self, cr, uid, ids, context=None):
case_obj = self.pool.get('crm.case')
case_id = context.get('active_id',[])
res = self.read(cr, uid, ids)[0]
case = case_obj.read(cr, uid, case_id, ['state'])
if case['state'] in ('done'):
raise osv.except_osv(_('Error !'), _('You can not assign Closed Case.'))
new_case_id = case_obj.copy(cr, uid, case_id, default=
{
'section_id':res.get('section_id',False),
'user_id':res.get('user_id',False)
}, context=context)
case_obj.write(cr, uid, case_id, {'case_id':new_case_id}, context=context)
case_obj.case_close(cr, uid, [case_id])
return {}
crm_generic_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- configartion view -->
<record id="view_config_crm_menu" model="ir.ui.view">
<field name="name">Configure Menu for Sections</field>
<field name="model">crm.menu.config_wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Configure CRM Sections">
<separator colspan="4" string="Install Pre-Configured Features"/>
<label colspan="4" align="0.0" string="The CRM module of OpenERP is able to manage any kind of relationship. But, as to help you to start quickly on the system, we configured a few of them for you."/>
<newline/>
<field name="meeting"/>
<field name="opportunity"/>
<field name="phonecall"/>
<field name="lead"/>
<field name="claims"/>
<field name="bugs"/>
<field name="helpdesk"/>
<field name="jobs"/>
<field name="fund"/>
<separator colspan="4" string="Calendar Sharing"/>
<field name="document_ics"/>
<newline/>
<group col="4" colspan="4">
<button icon="gtk-cancel" name="action_cancel" type="object" special="cancel" string="Cancel"/>
<button icon="gtk-go-forward" name="action_create" string="Next" type="object"/>
</group>
</form>
</field>
</record>
<record id="action_view_config_crm_menu" model="ir.actions.act_window">
<field name="name">Configure Menu for CRM case Section</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">crm.menu.config_wizard</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!-- register configuration wizard -->
<record id="config_wizard_step_case_section_menu" model="ir.actions.todo">
<field name="name">Create Menu for CRM Case Section</field>
<field name="note">This Configuration step use to create Menu for Case Sections</field>
<field name="action_id" ref="action_view_config_crm_menu"/>
</record>
<!-- graph view -->
<record model="ir.ui.view" id="crm_case_graph_view_stage_cost">
<field name="name">CRM -Graph</field>
<field name="model">crm.case</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases By Stage and Estimates" type="bar" orientation="vertical">
<field name="stage_id"/>
<field name="planned_cost" operator="+"/>
<field name="planned_revenue" operator="+"/>
</graph>
</field>
</record>
<!-- calendar view -->
<record id="crm_case_calendar_section-view" model="ir.ui.view">
<field name="name">crm.case.calendar.section</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="arch" type="xml">
<calendar color="section_id" date_start="date" date_stop="date_deadline" day_length="12" string="Cases">
<field name="name"/>
<field name="partner_id"/>
<field name="state"/>
</calendar>
</field>
</record>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_stage_tree">
<field name="name">crm.case.stage.tree</field>
<field name="model">crm.case.stage</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Stages">
<field name="sequence"/>
<field name="name"/>
<field name="section_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_stage_form">
<field name="name">crm.case.stage.form</field>
<field name="model">crm.case.stage</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Stage">
<field name="name" select="1"/>
<field name="section_id" select="1" widget="selection"/>
<field name="sequence"/>
</form>
</field>
</record>
<record id="crm_case_stage_act" model="ir.actions.act_window">
<field name="name">Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm_case_stage_tree"/>
</record>
<menuitem action="crm_case_stage_act" id="menu_crm_case_stage_act" parent="crm.next_id_51"/>
<record model="ir.ui.view" id="crm_generic_wizard">
<field name="name">crm.generic_wizard.form</field>
<field name="model">crm.generic_wizard</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Generic Wizard">
<group col="2">
<field name="section_id" select="1" widget="selection"/>
<field name="user_id"/>
</group>
<newline/>
<separator colspan="4"/>
<group col="2" colspan="2">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-execute" name="action_create" string="Assign" type="object"/>
</group>
</form>
</field>
</record>
<record id="crm_generic_wizard_act" model="ir.actions.act_window">
<field name="name">Generic Wizard</field>
<field name="res_model">crm.generic_wizard</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm_generic_wizard"/>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<wizard
string="History of Events"
name="crm.case.history.events"
model="crm.case"
id="wizard_case_history_event"
keyword="client_action_relate"
/>
<wizard
id="wizard_crm_partner_create"
keyword="client_action_multi"
model="crm.case"
name="crm.case.partner_create"
multi="True"
string="Create Partner"/>
<wizard
id="wizard_crm_meeting"
keyword="client_action_multi"
model="crm.case"
name="crm.case.meeting"
multi="True"
string="Schedule Meeting"/>
<wizard
id="wizard_crm_opportunity_set"
keyword="client_action_multi"
model="crm.case"
name="crm.case.opportunity_set"
multi="True"
string="Convert To Opportunity"/>
<wizard
id="wizard_partner_create_opportunity"
keyword="client_action_multi"
model="res.partner"
name="crm.case.partner.opportunity_create"
menu="False"
string="Create Opportunity"/>
<wizard
id="wizard_crm_reschedule_phone_call"
keyword="client_action_multi"
model="crm.case"
name="crm.case.reschedule_phone_call"
multi="True"
string="Schedule Phone Call" />
<wizard
id="wizard_partner_create_opportunity1"
keyword="client_action_relate"
model="res.partner"
name="crm.case.partner.opportunity_create"
string="Create Opportunity"/>
</data>
</openerp>

View File

@ -0,0 +1,54 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="crm.case.section" id="section_support4">
<field name="name">Fund Raising</field>
<field name="code">funds</field>
</record>
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_fund1">
<field name="name">Social Rehabilitation And Rural Upliftment</field>
<field name="section_id" ref="section_support4"/>
</record>
<record model="crm.case.categ" id="categ_fund2">
<field name="name">Learning And Education</field>
<field name="section_id" ref="section_support4"/>
</record>
<record model="crm.case.categ" id="categ_fund3">
<field name="name">Healthcare</field>
<field name="section_id" ref="section_support4"/>
</record>
<record model="crm.case.categ" id="categ_fund4">
<field name="name">Arts And Culture</field>
<field name="section_id" ref="section_support4"/>
</record>
<!-- CASE CATEGORY2(category2_id) -->
<record model="crm.case.category2" id="categ2_fund1">
<field name="name">Cash</field>
<field name="section_id" ref="section_support4"/>
</record>
<record model="crm.case.category2" id="categ2_fund2">
<field name="name">Cheque</field>
<field name="section_id" ref="section_support4"/>
</record>
<record model="crm.case.category2" id="categ2_fund3">
<field name="name">Credit Card</field>
<field name="section_id" ref="section_support4"/>
</record>
<record model="crm.case.category2" id="categ2_fund4">
<field name="name">Demand Draft</field>
<field name="section_id" ref="section_support4"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,146 @@
<?xml version="1.0" ?>
<openerp>
<data noupdate="1">
<record id="crm_case_helpingstreetchildren0" model="crm.case">
<field eval="50" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund3"/>
<field eval="3.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="250000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/>
<field name="categ_id" ref="categ_fund1"/>
<field eval="&quot;Helping Street Children&quot;" name="name"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_helpingearthquakevictims0" model="crm.case">
<field eval="80" name="probability"/>
<field name="partner_address_id" ref="base.main_address"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund4"/>
<field name="partner_id" ref="base.main_partner"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;draft&quot;" name="state"/>
<field eval="2000000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-05 12:35:50')" name="date"/>
<field eval="8.0" name="duration"/>
<field name="categ_id" ref="categ_fund1"/>
<field eval="&quot;Helping earthquake victims&quot;" name="name"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_donatingbookstoschoollibraries0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund1"/>
<field eval="5.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_3"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="500000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-07 13:50:50')" name="date"/>
<field name="categ_id" ref="categ_fund2"/>
<field eval="&quot;Donating books to school libraries&quot;" name="name"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_renovatinggovernmentschools0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_7"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund2"/>
<field eval="3.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_4"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;draft&quot;" name="state"/>
<field eval="1000000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-12 15:10:50')" name="date"/>
<field name="categ_id" ref="categ_fund2"/>
<field eval="4.3" name="duration"/>
<field eval="&quot;Renovating government schools&quot;" name="name"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_donatingambulancestohospitals0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_13"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund4"/>
<field name="partner_id" ref="base.res_partner_14"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="5000000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-17 19:00:15')" name="date"/>
<field eval="3" name="duration"/>
<field name="categ_id" ref="categ_fund3"/>
<field eval="&quot;Donating ambulances to hospitals&quot;" name="name"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_donatinghospitalequipments0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund3"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;done&quot;" name="state"/>
<field eval="10000000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-27 09:00:15')" name="date"/>
<field eval="12" name="duration"/>
<field name="categ_id" ref="categ_fund3"/>
<field eval="&quot;Donating hospital equipments&quot;" name="name"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_encouragingarts0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_14"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund2"/>
<field eval="7.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;draft&quot;" name="state"/>
<field eval="10000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-01 10:00:15')" name="date"/>
<field name="categ_id" ref="categ_fund4"/>
<field eval="&quot;Encouraging arts&quot;" name="name"/>
</record>
</data>
<data noupdate="1">
<record id="crm_case_promotingculturalprogramsandpreservingdyingartforms0" model="crm.case">
<field eval="10" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="categ2_fund1"/>
<field eval="6.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="800000.0" name="planned_cost"/>
<field name="section_id" ref="section_support4"/>
<field eval="time.strftime('%Y-%m-24 22:00:15')" name="date"/>
<field name="categ_id" ref="categ_fund4"/>
<field eval="&quot;Promoting cultural programs and preserving dying art forms&quot;" name="name"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,36 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- MENU -->
<record model="ir.actions.act_window" id="crm_case_category_act_fund_all1">
<field name="name">All Funds</field>
<field name="res_model">crm.case</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="crm.crm_case_tree_view_fund"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support4)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_fund_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_fund_all1">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm.crm_case_tree_view_fund"/>
<field name="act_window_id" ref="crm_case_category_act_fund_all1"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view_fund_all1">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm.crm_case_form_view_fund"/>
<field name="act_window_id" ref="crm_case_category_act_fund_all1"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_graph_view_fund_all1">
<field name="sequence" eval="3"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="crm.crm_case_graph_view_fund"/>
<field name="act_window_id" ref="crm_case_category_act_fund_all1"/>
</record>
<menuitem name="Fund Raising" id="menu_crm_case_fund_raise" parent="crm.menu_crm" action="crm_case_category_act_fund_all1"/>
</data>
</openerp>

View File

@ -0,0 +1,178 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Fund Raising
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_tree_view_fund">
<field name="name">CRM - Funds Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Funds Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Funds"/>
<field name="categ_id"/>
<field name="category2_id" string="Payment Mode"/>
<field name="planned_cost" string="Amount"/>
<field name="probability"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_form_view_fund">
<field name="name">CRM - Funds Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Funds Form">
<group colspan="4" col="6">
<field name="name" select="1" string="Name" colspan="2"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)"/>
<newline/>
<field name="date" string="Next Meeting"/>
<field name="duration"/>
<field name="category2_id" select="1" string="Payment Mode"/>
</group>
<notebook colspan="4">
<page string="Funds">
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<newline/>
<field name="email_from" colspan="2"/>
<field name="user_id" select="2" string="Responsible"/>
<separator colspan="4" string="Estimates"/>
<field name="planned_cost"/>
<field name="planned_revenue"/>
<field name="probability"/>
<separator colspan="4" string="Description Information"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active"/>
<field name="priority" string="Priority"/>
<newline/>
<field name="canal_id"/>
<field name="som"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date_action_next"/>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Emails">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_calendar_view_fund">
<field name="name">CRM - Funds Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Funds" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
</calendar>
</field>
</record>
<record model="ir.ui.view" id="crm_case_graph_view_fund">
<field name="name">CRM - Funds Graph</field>
<field name="model">crm.case</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Funds by Categories" type="bar" orientation="horizontal">
<field name="categ_id"/>
<field name="planned_cost" operator="+"/>
<field name="state" group="True"/>
</graph>
</field>
</record>
<record id="view_crm_case_fund_filter" model="ir.ui.view">
<field name="name">crm.case.fund.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Funds">
<group col='6' colspan='4'>
<filter icon="terp-partner" string="My Funds"
default="1" domain="[('user_id','=',uid)]"
separator="1"
help="Funds Related to Current User"
/>
<field name="state" select="1">
<filter icon="gtk-new" domain="[('state','=','draft')]" help="Draft Funds"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Funds"/>
<filter icon="gtk-media-pause" domain="[('state','=','pending')]" help="Pending Funds"/>
</field>
<field name="name" select='1'/>
<field name="user_id" select="1" widget="selection"/>
</group>
</search>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
Case Sections
-->
<record model="crm.case.section" id="section_support_help">
<field name="name">HelpDesk</field>
<field name="code">HD</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
</data>
</openerp>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<menuitem id="menu_aftersale" name="After-Sale Services" parent="crm.menu_crm"/>
######################## Help Desk (menu) ###########################
<record model="ir.actions.act_window" id="crm_case_helpdesk_act111">
<field name="name">All Helpdesk Requests</field>
<field name="res_model">crm.case</field>
<field name="view_mode">tree,calendar,form</field>
<field name="view_id" ref="crm_case_tree_view_helpdesk"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(ref('section_support_help'))+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_tree_view_act111">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_helpdesk"/>
<field name="act_window_id" ref="crm_case_helpdesk_act111"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_calendar_view_act111">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_helpdesk_calendar_view"/>
<field name="act_window_id" ref="crm_case_helpdesk_act111"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_form_view_act111">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_helpdesk"/>
<field name="act_window_id" ref="crm_case_helpdesk_act111"/>
</record>
<menuitem name="Helpdesk and Support" id="menu_help_support_main" parent="menu_aftersale" action="crm_case_helpdesk_act111"/>
</data>
</openerp>

View File

@ -0,0 +1,161 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Helpdesk Support
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_form_view_helpdesk">
<field name="name">CRM - Helpdesk Support Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Helpdesk Support">
<group colspan="4" col="7">
<field colspan="2" name="name" select="1"/>
<field colspan="1" name="section_id" widget="selection"/>
<field name="date" select="1"/>
<field name="date_deadline" select="2"/>
<field name="priority"/>
<group colspan="2">
<field name="case_id" select="1"/>
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</group>
</group>
<notebook colspan="4">
<page string="General">
<group col="8" colspan="4">
<field colspan="4" name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" select="1"/>
<field colspan="3" name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)" select="2"/>
<newline/>
<field colspan="3" name="email_from" select="2"/>
<button name="remind_partner" states="open,pending" string="Send Reminder" type="object" icon="gtk-go-forward"/>
<field name="user_id" select="1"/>
<button name="remind_user" states="open,pending" string="Send Reminder" type="object" icon="gtk-go-forward"/>
</group>
<separator colspan="4" string="Description"/>
<field name="description" colspan="4" nolabel="1"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="1"/>
<button name="case_close" states="open,draft,pending" string="Close" type="object" icon="gtk-close"/>
<button name="case_open" states="draft,pending" string="Open" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
<button name="case_pending" states="draft,open" string="Pending" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" states="open,draft,pending" string="Escalate" type="object" icon="gtk-go-up"/>
<button name="case_reset" states="done,cancel" string="Reset to Draft" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active" select="2"/>
<field name="categ_id" on_change="onchange_categ_id(categ_id)" select="2"/>
<field name="som" select="2"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date_action_next"/>
<separator colspan="4" string="Estimates"/>
<field name="planned_revenue"/>
<field name="planned_cost"/>
<field name="probability"/>
<separator colspan="4" string="References"/>
<field colspan="4" name="ref"/>
<field colspan="4" name="ref2"/>
<field colspan="4" name="log_ids" nolabel="1">
<form string="Actions">
<separator colspan="4" string="Action Information"/>
<field colspan="4" name="name"/>
<field name="date" select="2"/>
<field name="user_id" select="2"/>
<field name="som" select="2"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Events">
<field name="child_ids" colspan="4" nolabel="1">
<tree string="Related Cases">
<field name="id"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
</page>
<page string="Emails">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_helpdesk">
<field name="name">CRM - Helpdesk Support Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Helpdesk Support Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Support Query"/>
<field name="partner_id" string="Partner"/>
<field name="planned_revenue"/>
<field name="probability"/>
<field name="date" string="Deadline"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_helpdesk_calendar_view">
<field name="name">CRM - Helpdesk Support Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Helpdesk Supports" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
<field name="categ_id"/>
</calendar>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,67 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="crm.case.section" id="section_support0">
<field name="name">Jobs</field>
<field name="code">jobs</field>
</record>
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_job1">
<field name="name">Salesman</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.categ" id="categ_job2">
<field name="name">Junior Developer</field>
<field name="section_id" ref="section_support0"/>
</record>
<!-- CATEGORY2(category2_id) -->
<record model="crm.case.category2" id="category_job1">
<field name="name">Graduate</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.category2" id="category_job2">
<field name="name">Licenced</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.category2" id="category_job3">
<field name="name"> > Bac +5</field>
<field name="section_id" ref="section_support0"/>
</record>
<!-- STAGE(stage_id) -->
<record model="crm.case.stage" id="stage_job1">
<field name="name">Initial Jobs Demand</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.stage" id="stage_job2">
<field name="name">First Interview</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.stage" id="stage_job3">
<field name="name">Second Interview</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.stage" id="stage_job4">
<field name="name">Contract Proposed</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.stage" id="stage_job5">
<field name="name">Contract Signed</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.stage" id="stage_job6">
<field name="name">Refused by Employee</field>
<field name="section_id" ref="section_support0"/>
</record>
<record model="crm.case.stage" id="stage_job7">
<field name="name">Refused by Company</field>
<field name="section_id" ref="section_support0"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,149 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Jobs Requests-->
<record id="crm_case_salesman0" model="crm.case">
<field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/>
<field eval="time.strftime('%Y-%m-03')" name="date_deadline"/>
<field name="category2_id" ref="crm.category_job1"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Enrique Jones&quot;" name="partner_name"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="&quot;enrique@rediff.com&quot;" name="partner_name2"/>
<field eval="&quot;9963214587&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field eval="9.0" name="duration"/>
<field name="categ_id" ref="crm.categ_job1"/>
<field name="stage_id" ref="crm.stage_job1"/>
<field eval="&quot;Salesman&quot;" name="name"/>
<field eval="&quot;1236547890&quot;" name="partner_phone"/>
</record>
<record id="crm_case_traineemca0" model="crm.case">
<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"/>
<field eval="time.strftime('%Y-%m-10 18:15:00')" name="date"/>
<field name="category2_id" ref="crm.category_job3"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Marie Justine&quot;" name="partner_name"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="5.15" name="duration"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="&quot;marie@gmail.com&quot;" name="partner_name2"/>
<field eval="&quot;9988774455&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_job2"/>
<field name="stage_id" ref="crm.stage_job4"/>
<field eval="&quot;Trainee - MCA&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-15')" name="date_deadline"/>
<field eval="&quot;6633225&quot;" name="partner_phone"/>
</record>
<record id="crm_case_fresher0" model="crm.case">
<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"/>
<field eval="time.strftime('%Y-%m-18')" name="date_deadline"/>
<field name="category2_id" ref="crm.category_job2"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;1&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="1.45" name="duration"/>
<field eval="&quot;Jose&quot;" name="partner_name"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="&quot;jose@timesgroup.com&quot;" name="partner_name2"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_job1"/>
<field name="stage_id" ref="crm.stage_job3"/>
<field eval="&quot;Fresher&quot;" name="name"/>
<field eval="&quot;999666735&quot;" name="partner_phone"/>
</record>
<record id="crm_case_yrsexperienceinphp0" model="crm.case">
<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.categ_job2"/>
<field name="category2_id" ref="crm.category_job3"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="1.35" name="duration"/>
<field eval="&quot;Sandra Elvis&quot;" name="partner_name"/>
<field eval="&quot;sandra@example.com&quot;" name="partner_name2"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="1" name="active"/>
<field name="stage_id" ref="crm.stage_job6"/>
<field eval="&quot;More than 5 yrs Experience in PHP&quot;" name="name"/>
</record>
<record id="crm_case_marketingjob0" model="crm.case">
<field eval="time.strftime('%Y-%m-26 17:15:32')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="category2_id" ref="crm.category_job2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="2.0" name="duration"/>
<field eval="&quot;John Bruno&quot;" name="partner_name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="&quot;john@market.edu&quot;" name="partner_name2"/>
<field eval="&quot;9966332214&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_job1"/>
<field name="stage_id" ref="crm.stage_job5"/>
<field eval="&quot;Marketing Job&quot;" name="name"/>
<field eval="&quot;33968745&quot;" name="partner_phone"/>
</record>
<record id="crm_case_financejob0" model="crm.case">
<field eval="time.strftime('%Y-%m-26 17:39:42')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="category2_id" ref="crm.category_job2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;David Armstrong&quot;" name="partner_name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="&quot;david@market.edu&quot;" name="partner_name2"/>
<field eval="&quot;9966332214&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field eval="2.20" name="duration"/>
<field name="categ_id" ref="crm.categ_job1"/>
<field name="stage_id" ref="crm.stage_job5"/>
<field eval="&quot;Finance Job&quot;" name="name"/>
<field eval="&quot;33968745&quot;" name="partner_phone"/>
</record>
<record id="crm_case_traineemca1" model="crm.case">
<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"/>
<field eval="time.strftime('%Y-%m-12 17:49:19')" name="date"/>
<field name="category2_id" ref="crm.category_job3"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Tina Augustie&quot;" name="partner_name"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="1.15" name="duration"/>
<field name="section_id" ref="crm.section_support0"/>
<field eval="&quot;tina_augustie@example.com&quot;" name="partner_name2"/>
<field eval="&quot;9898745745&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_job2"/>
<field name="stage_id" ref="crm.stage_job4"/>
<field eval="&quot;Trainee - MCA&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-15')" name="date_deadline"/>
<field eval="&quot;6630125&quot;" name="partner_phone"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,51 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<menuitem icon="terp-hr" id="menu_hr" name="Human Resources"/>
######################## JOB OPPORTUNITIES (menu) ###########################
<record model="ir.actions.act_window" id="crm_case_categ0_act_job">
<field name="name">All Jobs Requests</field>
<field name="res_model">crm.case</field>
<field name="view_mode">tree,calendar,form,graph</field>
<field name="view_id" ref="crm_case_tree_view_job"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support0)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_jobs_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_tree_view_act_job">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<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>
<field name="view_id" ref="crm_case_form_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_graph_view_act_job">
<field name="sequence" eval="4"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="crm_case_graph_view_stage_cost"/>
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
</record>
<menuitem
name="Jobs - Hiring Process"
id="menu_crm_case_job_req_main"
parent="menu_hr"/>
<!--
ALL JOBS REQUESTS
-->
<menuitem parent="menu_crm_case_job_req_main" id="menu_crm_case_categ0_act_job" action="crm_case_categ0_act_job"/>
</data>
</openerp>

204
addons/crm/crm_jobs_view.xml Executable file
View File

@ -0,0 +1,204 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Jobs
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_tree_view_job">
<field name="name">CRM - Jobs Requests Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Jobs - Recruitment Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Description"/>
<field name="partner_name" string="Name"/>
<field name="email_from" string="Candidate Email"/>
<field name="partner_phone" string="Candidate Phone"/>
<field name="categ_id" string="Applied Job" select="1"/>
<field name="stage_id"/>
<field name="priority" string="Appreciation"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_close" string="Candidate Hired" states="open,draft,pending" type="object" icon="terp-partner"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Candidate Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</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.case</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="user_id" string="Responsible" select="2"/>
<button string="Schedule a Phone Call"
name="%(wizard_crm_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"/>
<button name="set_meeting" string="Schedule Meeting" icon="terp-crm"/>
</group>
<notebook colspan="4">
<page string="Job Info">
<field name="partner_name" string="Candidate Name"/>
<field name="partner_name2" string="Candidate Name2"/>
<newline/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
<field name="email_from" string="Candidate Email"/>
<newline/>
<group col="6" colspan="4">
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
<button name="set_partner" string="Convert to Partner" icon="terp-partner"/>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
</group>
<separator colspan="4" string="Contract Data"/>
<field name="probability" string="Availability (weeks)"/>
<newline/>
<field name="planned_cost" string="Expected Salary"/>
<field name="planned_revenue" string="Proposed Salary"/>
<field name="categ_id" string="Applied Job" select="1" on_change="onchange_categ_id(categ_id)"/>
<field name="category2_id" string="Degree" select="1"/>
<separator colspan="4" string="Qualication"/>
<field name="priority" string="Appreciation" select="2"/>
<separator colspan="4" string="Status"/>
<group col="8" colspan="4">
<field name="state" select="1"/>
<button name="case_close" string="Candidate Hired" states="open,draft,pending" type="object" icon="terp-partner"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Candidate Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Internal Notes">
<field name="description" nolabel="1" colspan="4"/>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active"/>
<field name="canal_id"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date_action_next"/>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</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.case</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 id="view_crm_case_jobs_filter" model="ir.ui.view">
<field name="name">crm.case.jobs.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Jobs">
<group col="7" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Jobs"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
domain="[('date::date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date::date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Jobs during last 7 days"
/>
<separator orientation="vertical"/>
<filter icon="gtk-new" string="New Jobs"
domain="[('section_id.name','=','Jobs'),('stage_id.name','=','Initial Jobs Demand')]"
separator="1" help="All Initial Jobs"
/>
<filter icon="gtk-yes" string="Open Jobs"
domain="[('section_id.name','=','Jobs'),('state','=','open')]"
separator="1" help="Open Jobs"
/>
<filter icon="gtk-media-pause" string="Pending Jobs"
domain="[('section_id.name','=','Jobs'),('state','=','pending')]"
separator="1" help="Pending Jobs"
/>
</group>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select='1' string="Name"/>
<field name="email_from" select='1' string="Email"/>
<field name="user_id" select="1" widget="selection"/>
</group>
</search>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,101 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- CASE SECTION -->
<record model="crm.case.section" id="section_support2">
<field name="name">Prospects</field>
<field name="code">prospects</field>
</record>
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_lead1">
<field name="name">Existing Customer</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.categ" id="categ_lead2">
<field name="name">Self Generated</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.categ" id="categ_lead3">
<field name="name">Employee</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.categ" id="categ_lead4">
<field name="name">Partner</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.categ" id="categ_lead6">
<field name="name">Website</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.categ" id="categ_lead7">
<field name="name">Word of mouth</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.categ" id="categ_lead8">
<field name="name">Other</field>
<field name="section_id" ref="section_support2"/>
</record>
<!-- CASE STATUS(stage_id) -->
<record model="crm.case.stage" id="stage_lead1">
<field name="name">New</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.stage" id="stage_lead2">
<field name="name">Assigned</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.stage" id="stage_lead3">
<field name="name">In Process</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.stage" id="stage_lead4">
<field name="name">Converted</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.stage" id="stage_lead5">
<field name="name">Recycled</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.stage" id="stage_lead6">
<field name="name">Dead</field>
<field name="section_id" ref="section_support2"/>
</record>
<!-- CASE CATEGORY2(category2_id) -->
<record model="crm.case.category2" id="category_lead1">
<field name="name">Telesales</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead2">
<field name="name">Mail</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead3">
<field name="name">Email</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead4">
<field name="name">Print</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead5">
<field name="name">Web</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead6">
<field name="name">Radio</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead7">
<field name="name">Television</field>
<field name="section_id" ref="section_support2"/>
</record>
<record model="crm.case.category2" id="category_lead8">
<field name="name">Newsletter</field>
<field name="section_id" ref="section_support2"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,118 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Leads-->
<record id="crm_case_itisatelesalescampaign0" model="crm.case">
<field name="category2_id" ref="crm.category_lead1"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;Michel Lafont&quot;" name="partner_name2"/>
<field eval="&quot;(726) 782-0636&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_lead6"/>
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="&quot;The Oil Company&quot;" name="partner_name"/>
<field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
</record>
<record id="crm_case_electonicgoodsdealer0" model="crm.case">
<field name="category2_id" ref="crm.category_lead7"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;Luc Latour&quot;" name="partner_name2"/>
<field eval="&quot;(392) 895-7917&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_lead2"/>
<field name="stage_id" ref="crm.stage_lead2"/>
<field eval="&quot;Le Club SARL&quot;" name="partner_name"/>
<field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
</record>
<record id="crm_case_developingwebapplications0" model="crm.case">
<field name="category2_id" ref="crm.category_lead5"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;Mike Gardner&quot;" name="partner_name2"/>
<field eval="&quot;(820) 167-3208&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_lead4"/>
<field name="stage_id" ref="crm.stage_lead4"/>
<field eval="&quot;TheKompany&quot;" name="partner_name"/>
<field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
</record>
<record id="crm_case_qrecorp0" model="crm.case">
<field name="category2_id" ref="crm.category_lead8"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;(077) 582-4035&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_lead1"/>
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="&quot;The Gas Company&quot;" name="partner_name"/>
<field eval="&quot;(514) 698-4118&quot;" name="partner_phone"/>
</record>
<record id="crm_case_itdeveloper0" model="crm.case">
<field name="category2_id" ref="crm.category_lead4"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Carrie Helle&quot;" name="name"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;Sam Stone&quot;" name="partner_name2"/>
<field eval="&quot;(333) 715-1450&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_lead6"/>
<field name="stage_id" ref="crm.stage_lead3"/>
<field eval="&quot;Stonage IT&quot;" name="partner_name"/>
<field eval="&quot;(855) 924-4364&quot;" name="partner_phone"/>
</record>
<record id="crm_case_mgroperations0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_lead3"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Tina Pinero&quot;" name="name"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;Benoit Mortier&quot;" name="partner_name2"/>
<field eval="&quot;(468) 017-2684&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_lead8"/>
<field name="stage_id" ref="crm.stage_lead6"/>
<field eval="&quot;Opensides SPRL&quot;" name="partner_name"/>
<field eval="&quot;(373) 907-1009&quot;" name="partner_phone"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
<record id="crm_case_vpoperations0" model="crm.case">
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_lead8"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Wendi Baltz&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support2"/>
<field eval="&quot;Will Smith&quot;" name="partner_name2"/>
<field eval="&quot;(463) 014-1208&quot;" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_lead4"/>
<field name="stage_id" ref="crm.stage_lead4"/>
<field eval="&quot;Gardner Group&quot;" name="partner_name"/>
<field eval="&quot;(282) 603-7489&quot;" name="partner_phone"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,86 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<menuitem id="menu_presale" name="Sales" parent="crm.menu_crm" sequence="4"/>
<!-- MENU -->
<record model="ir.actions.act_window" id="crm_case_category_act_leads_all">
<field name="name">All Prospects</field>
<field name="res_model">crm.case</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="crm_case_tree_view_leads"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support2)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_leads_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_leads_all">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_leads"/>
<field name="act_window_id" ref="crm_case_category_act_leads_all"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view_leads_all">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_leads"/>
<field name="act_window_id" ref="crm_case_category_act_leads_all"/>
</record>
<menuitem parent="menu_presale" name="Prospects" id="menu_crm_case_categ0_act_leads" action="crm_case_category_act_leads_all"/>
<!-- REPORTS -->
<menuitem id="next_id_64" name="Reporting" parent="crm.menu_crm" sequence="50"/>
<menuitem name="Prospects" id="menu_action_report_crm_case_lead" parent="next_id_64"/>
<!-- <record model="ir.actions.act_window" id="action_report_crm_case_lead_user">-->
<!-- <field name="res_model">report.crm.case.user</field>-->
<!-- <field name="view_type">form</field>-->
<!-- <field name="view_mode">graph,tree</field>-->
<!-- <field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support2)+')]'"/>-->
<!-- <field name="context" eval="{'default_state':'open'}"/>-->
<!-- </record>-->
<!-- <menuitem name="Cases by Prospects and User" parent="menu_action_report_crm_case_lead" action="action_report_crm_case_lead_user" id="menu_action_report_crm_case_lead_user"/>-->
<!-- -->
<record model="ir.actions.act_window" id="action_report_crm_case_lead_categ">
<field name="res_model">report.crm.case.section.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support2)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem parent="menu_action_report_crm_case_lead" name="Cases by Prospects and Type" action="action_report_crm_case_lead_categ" id="menu_action_report_crm_case_lead_categ"/>
<record model="ir.actions.act_window" id="action_report_crm_case_lead_stage">
<field name="res_model">report.crm.case.section.stage</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support2)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Prospects and Stage" parent="menu_action_report_crm_case_lead" action="action_report_crm_case_lead_stage" id="menu_action_report_crm_case_lead_stage"/>
<record model="ir.actions.act_window" id="action_report_crm_case_lead_categ_stage">
<field name="res_model">report.crm.case.section.categ.stage</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support2)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Section, Category and Stage" parent="menu_action_report_crm_case_lead" action="action_report_crm_case_lead_categ_stage" id="menu_action_report_crm_case_lead_categ_stage"/>
<record model="ir.actions.act_window" id="action_report_crm_case_lead_categ_categ2">
<field name="res_model">report.crm.case.section.categ.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support2)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Section, Category and Type" parent="menu_action_report_crm_case_lead" action="action_report_crm_case_lead_categ_categ2" id="menu_action_report_crm_case_lead_categ_categ2"/>
</data>
</openerp>

View File

@ -0,0 +1,217 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Prospects
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_form_view_leads">
<field name="name">CRM - Prospects Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Prospects Form">
<group colspan="4" col="7">
<field name="name" select="1" string="Prospect Subject"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="user_id" select="2"/>
<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="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Prospect Source"/>
<field name="category2_id" string="Campaign Type" select="1"/>
<button string="Convert to Opportunity" name="%(wizard_crm_opportunity_set)d" icon="gtk-index" type="action"/>
</group>
<notebook colspan="4">
<page string="Prospects">
<separator string="Prospect Information" colspan="4"/>
<field name="partner_name" string="Prospect Name"/>
<field name="partner_name2" string="Contact Name"/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
<field name="email_from" string="Prospect Email"/>
<newline/>
<label string="Partner:" colspan="1" align="1.0"/>
<group colspan="2" col="2">
<field name="partner_id" nolabel="1" colspan="1"/>
<button string="Convert to Partner"
icon="terp-partner" name="%(wizard_crm_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)"/>
<field name="priority" string="Priority"/>
<newline/>
<separator colspan="4" string="Prospect Details"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active" select="2"/>
<newline/>
<field name="planned_revenue"/>
<field name="planned_cost"/>
<field name="probability"/>
<newline/>
<field name="canal_id"/>
<field name="som"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date"/>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Events" groups="base.group_extended">
<field name="child_ids" colspan="4" nolabel="1">
<tree string="Related Cases">
<field name="id"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-go-forward" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_leads">
<field name="name">CRM - Prospects Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Prospects Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Prospect Subject"/>
<field name="partner_phone"/>
<field name="partner_name2" string="Contact Name"/>
<field name="stage_id"/>
<field name="categ_id" string="Prospects Source"/>
<field name="category2_id" string="Campaign Type"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_calendar_view_leads">
<field name="name">CRM - Prospects Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meeting For Prospects Generation" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_name"/>
<field name="partner_name2"/>
</calendar>
</field>
</record>
<record id="view_crm_case_leads_filter" model="ir.ui.view">
<field name="name">crm.case.leads.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Prospects">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Prospects"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Prospects during last 7 days"
domain="[('date::date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date::date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]" help="My Prospects"
default="1"
/>
<filter icon="terp-crm"
domain="[('user_id','child_of',[uid])]"
help="My department's Prospects"
/>
</field>
<field name="state" select="1">
<filter icon="gtk-new" domain="[('state','=','draft')]" help="Draft Prospects"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Prospects"/>
</field>
</group>
</search>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,64 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="crm.case.section" id="section_support1">
<field name="name">Meetings</field>
<field name="code">Mtngs</field>
<field name="calendar">True</field>
</record>
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_meet1">
<field name="name">Customer Meeting</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.categ" id="categ_meet2">
<field name="name">Internal Meeting</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.categ" id="categ_meet3">
<field name="name">Phone Call</field>
<field name="section_id" ref="section_support1"/>
</record>
<!-- CASE CATEGORY2(category2_id) -->
<record model="crm.case.category2" id="category_meet1">
<field name="name">Office</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.category2" id="category_meet2">
<field name="name">Home</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.category2" id="category_meet3">
<field name="name">Customer Office</field>
<field name="section_id" ref="section_support1"/>
</record>
<!-- CASE STAGE(stage_id) -->
<record model="crm.case.stage" id="stage_meet1">
<field name="name">Fixed</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.stage" id="stage_meet2">
<field name="name">Not fixed</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.stage" id="stage_meet3">
<field name="name">Invalid</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.stage" id="stage_meet4">
<field name="name">Awaiting Response</field>
<field name="section_id" ref="section_support1"/>
</record>
<record model="crm.case.stage" id="stage_meet5">
<field name="name">Future</field>
<field name="section_id" ref="section_support1"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Meetings-->
<record id="crm_case_followuponproposal0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_wong"/>
<field eval="1" name="active"/>
<field name="partner_id" ref="base.res_partner_maxtor"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Meeting to discuss project plan and hash out the details of implementation &quot;" name="description"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support1"/>
<field eval="time.strftime('%Y-%m-03 10:20:03')" name="date"/>
<field name="categ_id" ref="crm.categ_meet2"/>
<field name="stage_id" ref="crm.stage_meet2"/>
<field eval="&quot;Follow-up on proposal&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-10')" name="date_deadline"/>
<field eval="6.3" name="duration"/>
</record>
<record id="crm_case_initialdiscussion0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_meet1"/>
<field eval="7.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support1"/>
<field eval="time.strftime('%Y-%m-05 12:01:01')" name="date"/>
<field name="categ_id" ref="crm.categ_meet3"/>
<field name="stage_id" ref="crm.stage_meet4"/>
<field eval="&quot;Initial discussion&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-12')" name="date_deadline"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
</record>
<record id="crm_case_discusspricing0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_meet3"/>
<field eval="3.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_3"/>
<field eval="&quot;1&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Meeting to discuss project plan and hash out the details of implementation &quot;" name="description"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support1"/>
<field eval="time.strftime('%Y-%m-12 15:55:05')" name="date"/>
<field name="categ_id" ref="crm.categ_meet1"/>
<field name="stage_id" ref="crm.stage_meet1"/>
<field eval="&quot;Discuss pricing&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-20')" name="date_deadline"/>
</record>
<record id="crm_case_reviewneeds0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_meet2"/>
<field eval="6.0" name="duration"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_support1"/>
<field eval="time.strftime('%Y-%m-20 10:02:02')" name="date"/>
<field name="categ_id" ref="crm.categ_meet3"/>
<field name="stage_id" ref="crm.stage_meet5"/>
<field eval="&quot;Review needs&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-25')" name="date_deadline"/>
</record>
<record id="crm_case_changesindesigning0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_meet1"/>
<field eval="05" name="duration"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support1"/>
<field eval="time.strftime('%Y-%m-22 11:05:05')" name="date"/>
<field name="categ_id" ref="crm.categ_meet2"/>
<field name="stage_id" ref="crm.stage_meet2"/>
<field eval="&quot;Changes in Designing&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
<record id="crm_case_updatethedata0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_7"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_meet2"/>
<field name="partner_id" ref="base.res_partner_4"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_support1"/>
<field eval="time.strftime('%Y-%m-18 13:12:49')" name="date"/>
<field name="categ_id" ref="crm.categ_meet2"/>
<field name="stage_id" ref="crm.stage_meet1"/>
<field eval="&quot;Update the data&quot;" name="name"/>
<field eval="13.3" name="duration"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
</record>
</data>
</openerp>

155
addons/crm/crm_meeting_menu.xml Executable file
View File

@ -0,0 +1,155 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<act_window
id="crm_case_categ_meet_create_partner"
name="Schedule a Meeting"
res_model="crm.case"
src_model="res.partner"
view_mode="calendar,tree,form,gantt"
context="{'default_partner_id': active_id, 'default_duration': 4.0}"
domain="[('section_id','=','Meetings')]"/>
<record model="ir.actions.act_window" id="crm_case_categ_meet_create_partner">
<field name="domain" eval="'[(\'section_id\',\'=\','+str(ref('section_support1'))+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet_partner">
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet_partner">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_meet_partner">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet_partner">
<field name="sequence" eval="3"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="crm_case_gantt_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window" id="crm_case_categ_meet">
<field name="res_model">crm.case</field>
<field name="view_mode">calendar,tree,form,gantt</field>
<field name="view_id" ref="crm_case_calendar_view"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
<field name="domain" eval="[('section_id.calendar','=',1)]"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet">
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form__meet">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet">
<field name="sequence" eval="1"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="crm_case_gantt_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<menuitem parent="crm.menu_crm" name="Calendar" id="menu_crm_case_category_act_meetings"/>
<!--
MY MEETINGS
-->
<record model="ir.actions.act_window" id="crm_case_categ_meetmy">
<field name="res_model">crm.case</field>
<field name="view_mode">calendar,tree,form,graph,gantt</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="domain" eval="'[(\'user_id\',\'=\',uid),(\'section_id.calendar\',\'=\',1)]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="filter" eval="True"/>
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet_my">
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meetmy"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet_my">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meetmy"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_meet_my">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meetmy"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet_my">
<field name="sequence" eval="1"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="crm_case_gantt_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meetmy"/>
</record>
<menuitem name="My Meetings" id="menu_crm_case_categ_meet_my" action="crm_case_categ_meetmy" parent="menu_crm_case_category_act_meetings"/>
<!--
ALL MEETINGS
-->
<menuitem name="All Meetings" id="menu_crm_case_categ_meet" action="crm_case_categ_meet" parent="menu_crm_case_category_act_meetings"/>
<record model="ir.actions.act_window" id="crm_case_category_act_meetall3">
<field name="name">Next Meetings</field>
<field name="res_model">crm.case</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar,form,gantt</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="domain" eval="[('state','in',('pending','draft','open')),('date','>=',time.strftime('%Y-%m-%d'))]"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_view_meetall3">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="act_window_id" ref="crm_case_category_act_meetall3"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_meetall3">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_meet"/>
<field name="act_window_id" ref="crm_case_category_act_meetall3"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view_meetall3">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_meet"/>
<field name="act_window_id" ref="crm_case_category_act_meetall3"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_view_meetall3">
<field name="sequence" eval="2"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="crm_case_gantt_view_meet"/>
<field name="act_window_id" ref="crm_case_category_act_meetall3"/>
</record>
</data>
</openerp>

118
addons/crm/crm_meeting_view.xml Executable file
View File

@ -0,0 +1,118 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Meetings
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_form_view_meet">
<field name="name">CRM - Meetings Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Meetings Form">
<group colspan="4" col="6">
<field name="name" select="1" string="Title"/>
<field name="section_id" widget="selection"/>
<field name="user_id" select="2" string="Responsible" required="1"/>
<newline/>
<field name="date" string="Meeting Date" required="1"/>
<field name="duration" colspan="1" widget="float_time" required="1"/>
<group colspan="2">
<field name="case_id" on_change="onchange_case_id(case_id, name, partner_id)"/>
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</group>
</group>
<notebook colspan="4">
<page string="Meeting">
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" />
<field name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)"/>
<field name="email_from"/>
<newline/>
<field name="categ_id" select="2" on_change="onchange_categ_id(categ_id)"/>
<field name="category2_id" select="1" string="Location"/>
<separator string="Description" colspan="4"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_open" string="Confirm Meeting" states="draft,cancel,pending" type="object" icon="terp-crm"/>
<button name="case_cancel" string="Cancel Meeting" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_reset" string="Reset to Unconfirmed" states="done,open,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_meet">
<field name="name">CRM - Meetings Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Meetings Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Title"/>
<field name="date" string="Next Meeting"/>
<field name="section_id" widget="selection"/>
<field name="priority"/>
<field name="categ_id"/>
<field name="category2_id" string="Type"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Confirm Meeting" states="draft,cancel,pending" type="object" icon="terp-crm"/>
<button name="case_cancel" string="Cancel Meeting" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_reset" string="Reset to Unconfirmed" states="done,open,cancel" type="object" icon="gtk-convert"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_calendar_view_meet">
<field name="name">CRM - Meetings Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meetings" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
<field name="section_id" widget="selection"/>
</calendar>
</field>
</record>
<record id="crm_case_gantt_view_meet" model="ir.ui.view">
<field name="name">CRM - Meetings Gantt</field>
<field name="model">crm.case</field>
<field name="type">gantt</field>
<field name="arch" type="xml">
<gantt color="user_id" date_delay="duration" date_start="date" string="Meetings">
<level object="crm.case" link="id" domain="[]">
<field name="name"/>
<field name="partner_id"/>
</level>
</gantt>
</field>
</record>
<record id="view_crm_case_meetings_filter" model="ir.ui.view">
<field name="name">crm.case.meetings.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Meetings">
<group col="10" colspan="4">
<filter icon="terp-crm" string="Draft" domain="[('state','=','draft')]" />
<filter icon="terp-crm" string="Confirmed" domain="[('state','=','done')]" />
<separator orientation="vertical"/>
<field name="name" select="1" string="Subject"/>
<field name="partner_id" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-crm" domain="[('user_id','=',uid)]" help="My Meetings"/>
<filter icon="terp-crm" domain="[('user_id','child_of',[uid])]" help="My Departments Meetings"/>
</field>
</group>
</search>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,83 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="crm.case.section" id="section_support3">
<field name="name">Opportunities</field>
<field name="code">oppor</field>
</record>
<record model="crm.case.categ" id="categ_oppor1">
<field name="name">Existing Customer</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor2">
<field name="name">Self Generated</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor3">
<field name="name">Employee</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor4">
<field name="name">Partner</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor5">
<field name="name">Campaign</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor6">
<field name="name">Website</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor7">
<field name="name">Word of mouth</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.categ" id="categ_oppor8">
<field name="name">Other</field>
<field name="section_id" ref="section_support3"/>
</record>
<!-- CASE STATUS(stage_id) -->
<record model="crm.case.stage" id="stage_oppor1">
<field name="name">Prospecting</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.stage" id="stage_oppor2">
<field name="name">Needs Analysis</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.stage" id="stage_oppor3">
<field name="name">Value Proposition</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.stage" id="stage_oppor4">
<field name="name">Proposal/Price Quote</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.stage" id="stage_oppor5">
<field name="name">Negotiation/Review</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.stage" id="stage_oppor6">
<field name="name">Closed Won</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.stage" id="stage_oppor7">
<field name="name">Closed Lost</field>
<field name="section_id" ref="section_support3"/>
</record>
<!-- CASE CATEGORY2(category2_id) -->
<record model="crm.case.category2" id="category_oppor1">
<field name="name">Existing Business</field>
<field name="section_id" ref="section_support3"/>
</record>
<record model="crm.case.category2" id="category_oppor2">
<field name="name">New Business</field>
<field name="section_id" ref="section_support3"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,103 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Opportunity-->
<record id="crm_case_construstazunits0" model="crm.case">
<field eval="60" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
<field eval="1" name="active"/>
<field eval="17.0" name="duration"/>
<field name="category2_id" ref="crm.category_oppor1"/>
<field name="partner_id" ref="base.res_partner_3"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="75000.0" name="planned_cost"/>
<field eval="85000.0" name="planned_revenue"/>
<field name="section_id" ref="crm.section_support3"/>
<field eval="time.strftime('%Y-%m-07 10:05:15')" name="date"/>
<field name="categ_id" ref="crm.categ_oppor1"/>
<field name="stage_id" ref="crm.stage_oppor3"/>
<field eval="&quot;CONS TRUST (AZ) 529701 - 1000 units&quot;" name="name"/>
</record>
<record id="crm_case_rdroundfundingunits0" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_oppor2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;draft&quot;" name="state"/>
<field eval="30000.0" name="planned_cost"/>
<field eval="45000.0" name="planned_revenue"/>
<field eval="50" name="probability"/>
<field eval="8.0" name="duration"/>
<field name="section_id" ref="crm.section_support3"/>
<field eval="time.strftime('%Y-%m-05 12:25:15')" name="date"/>
<field name="categ_id" ref="crm.categ_oppor5"/>
<field name="stage_id" ref="crm.stage_oppor1"/>
<field eval="&quot;3rd Round Funding - 1000 units &quot;" name="name"/>
</record>
<record id="crm_case_mediapoleunits0" model="crm.case">
<field eval="10" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_3"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_oppor1"/>
<field name="partner_id" ref="base.res_partner_8"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;pending&quot;" name="state"/>
<field eval="50000.0" name="planned_cost"/>
<field eval="55000.0" name="planned_revenue"/>
<field eval="70" name="probability"/>
<field eval="10.0" name="duration"/>
<field name="section_id" ref="crm.section_support3"/>
<field eval="time.strftime('%Y-%m-14 13:55:10')" name="date"/>
<field name="categ_id" ref="crm.categ_oppor7"/>
<field name="stage_id" ref="crm.stage_oppor5"/>
<field eval="&quot;Mediapole - 5000 units&quot;" name="name"/>
<field eval="&quot;info@mediapole.net&quot;" name="email_from"/>
</record>
<record id="crm_case_abcfuelcounits0" model="crm.case">
<field eval="40" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="category2_id" ref="crm.category_oppor1"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="50000.0" name="planned_cost"/>
<field eval="45000.0" name="planned_revenue"/>
<field eval="24.0" name="duration"/>
<field name="section_id" ref="crm.section_support3"/>
<field eval="time.strftime('%Y-%m-23 16:32:23')" name="date"/>
<field name="categ_id" ref="crm.categ_oppor5"/>
<field name="stage_id" ref="crm.stage_oppor4"/>
<field eval="&quot;ABC FUEL CO 829264 - 1000 units &quot;" name="name"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
<record id="crm_case_dirtminingltdunits0" model="crm.case">
<field eval="80" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_wong"/>
<field eval="1" name="active"/>
<field eval="2.25" name="duration"/>
<field name="partner_id" ref="base.res_partner_maxtor"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;done&quot;" name="state"/>
<field eval="25000.0" name="planned_cost"/>
<field eval="42000.0" name="planned_revenue"/>
<field name="section_id" ref="crm.section_support3"/>
<field eval="time.strftime('%Y-%m-25 16:05:15')" name="date"/>
<field name="categ_id" ref="crm.categ_oppor2"/>
<field name="stage_id" ref="crm.stage_oppor6"/>
<field eval="&quot;Dirt Mining Ltd 271742 - 1000 units&quot;" name="name"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,91 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<menuitem id="menu_presale" name="Sales" parent="crm.menu_crm" sequence="4"/>
<record model="ir.actions.act_window" id="crm_case_category_act_oppor11">
<field name="name">All Opportunities</field>
<field name="res_model">crm.case</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="crm_case_tree_view_oppor"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support3)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_oppor11">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_oppor"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_view_oppor11">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_oppor"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_graph_view_oppor11">
<field name="sequence" eval="4"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="crm_case_graph_view_stage_cost"/>
<field name="act_window_id" ref="crm_case_category_act_oppor11"/>
</record>
<menuitem name="Opportunities" id="menu_crm_case_opp" parent="menu_presale" action="crm_case_category_act_oppor11"/>
<!-- MENU -->
<!-- REPORTS -->
<!-- <record model="ir.actions.act_window" id="action_report_crm_case_oppor_user">-->
<!-- <field name="res_model">report.crm.case.user</field>-->
<!-- <field name="view_type">form</field>-->
<!-- <field name="view_mode">graph,tree</field>-->
<!-- <field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support3)+')]'"/>-->
<!-- <field name="context" eval="{'default_state':'open'}"/>-->
<!-- </record>-->
<!-- -->
<menuitem id="next_id_64" name="Reporting" parent="crm.menu_crm" sequence="50"/>
<menuitem name="Opportunity" parent="next_id_64" id="menu_action_report_crm_case_oppor"/>
<!-- <menuitem name="Cases by Opportunities and User" parent="menu_action_report_crm_case_oppor" action="action_report_crm_case_oppor_user" id="menu_action_report_crm_case_oppor_user"/>-->
<record model="ir.actions.act_window" id="action_report_crm_case_oppor_categ">
<field name="res_model">report.crm.case.section.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support3)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Opportunities and Type" parent="menu_action_report_crm_case_oppor" action="action_report_crm_case_oppor_categ" id="menu_action_report_crm_case_oppor_categ"/>
<record model="ir.actions.act_window" id="action_report_crm_case_oppor_stage">
<field name="res_model">report.crm.case.section.stage</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support3)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Opportunities and Stage" parent="menu_action_report_crm_case_oppor" action="action_report_crm_case_oppor_stage" id="menu_action_report_crm_case_oppor_stage"/>
<record model="ir.actions.act_window" id="action_report_crm_case_oppor_categ_stage">
<field name="res_model">report.crm.case.section.categ.stage</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support3)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Opportunities, Category and Stage" parent="menu_action_report_crm_case_oppor" action="action_report_crm_case_oppor_categ_stage" id="menu_action_report_crm_case_oppor_categ_stage"/>
<record model="ir.actions.act_window" id="action_report_crm_case_oppor_categ_categ2">
<field name="res_model">report.crm.case.section.categ.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(section_support3)+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
</record>
<menuitem name="Cases by Opportunities, Category and Type" parent="menu_action_report_crm_case_oppor" action="action_report_crm_case_oppor_categ_categ2" id="menu_action_report_crm_case_oppor_categ_categ2"/>
</data>
</openerp>

View File

@ -0,0 +1,201 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Opportunities
# ------------------------------------------------------
<act_window
id="crm_case_categ_meet_opportunity"
name="Schedule a Meeting"
res_model="crm.case"
src_model="crm.case"
view_mode="calendar,tree,form,gantt"
context="{'default_case_id': active_id, 'default_duration': 4.0}"
domain="[('section_id','=','Meetings')]"/>
<record model="ir.ui.view" id="crm_case_form_view_oppor">
<field name="name">CRM - Opportunities Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Opportunities">
<group colspan="4" col="7">
<field name="name" select="1" string="Opportunity" colspan="2"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="user_id" select="2" string="Responsible"/>
<button string="Schedule a Phone Call"
name="%(wizard_crm_reschedule_phone_call)d" icon="gtk-redo" type="action" />
<newline/>
<label string="Sales 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="Deadline"/>
<group colspan="2">
<field name="case_id" select="1"/>
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</group>
<button string="Schedule Meeting" icon="terp-crm" name="%(crm_case_categ_meet_opportunity)d" type="action"/>
</group>
<notebook colspan="4">
<page string="Description">
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<field name="email_from" colspan="2"/>
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Source"/>
<field name="priority" string="Priority"/>
<field name="category2_id" select="1" string="Category"/>
<separator colspan="4" string="Estimates"/>
<field name="planned_revenue"/>
<field name="planned_cost"/>
<field name="probability"/>
<separator colspan="4" string="Description Information"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History">
<field name="active"/>
<field name="canal_id"/>
<field name="som"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="date_action_last"/>
<field name="date_action_next"/>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Events">
<field name="child_ids" colspan="4" nolabel="1">
<tree string="Related Cases">
<field name="id"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" widget="selection"/>
<field name="state"/>
</tree>
</field>
</page>
<page string="Emails">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_oppor">
<field name="name">CRM - Opportunities Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Opportunities Tree" colors="red:state=='open'">
<field name="id"/>
<field name="name" string="Opportunities"/>
<field name="stage_id" string="Sales Stage"/>
<field name="partner_id" string="Partner"/>
<field name="planned_revenue"/>
<field name="probability"/>
<field name="date" string="Deadline"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
</field>
</record>
<record id="view_crm_case_opportunities_filter" model="ir.ui.view">
<field name="name">crm.case.opportunities.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Opportunities"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Opportunities during last 7 days"
domain="[('date::date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date::date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="5" colspan="2">
<field name="name" select="1" string="Opportunity"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]"
help="My Opportunities" default="1"
/>
<filter icon="terp-crm"
domain="[('user_id','child_of',[uid])]"
help="My department's Opportunities"
/>
</field>
<field name="partner_id" select="1"/>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current "/>
</field>
</group>
</search>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,37 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="crm.case.section" id="section_support_phone">
<field name="name">Phone Calls</field>
<field name="code">Phone</field>
</record>
<!--
Case Categories
-->
<record model="crm.case.categ" id="categ_phone1">
<field name="name">Inbound</field>
<field name="section_id" ref="section_support_phone"/>
</record>
<record model="crm.case.categ" id="categ_phone2">
<field name="name">Outbound</field>
<field name="section_id" ref="section_support_phone"/>
</record>
<!--
Case Stage
-->
<record model="crm.case.stage" id="stage_phone1">
<field name="name">Planned</field>
<field name="section_id" ref="section_support_phone"/>
</record>
<record model="crm.case.stage" id="stage_phone2">
<field name="name">Held</field>
<field name="section_id" ref="section_support_phone"/>
</record>
<record model="crm.case.stage" id="stage_phone3">
<field name="name">Not Held</field>
<field name="section_id" ref="section_support_phone"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,99 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<record id="crm_case_phone01" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="time.strftime('%Y-%m-04 10:45:36')" name="date"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Left the message&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_phone"/>
<field eval="&quot;(726) 782-0636&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_phone1"/>
<field name="stage_id" ref="crm.stage_phone1"/>
<field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
</record>
<record id="crm_case_phone02" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_6"/>
<field eval="time.strftime('%Y-%m-11 11:19:25')" name="date"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Get More information on the proposed deal&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_phone"/>
<field eval="&quot;(392) 895-7917&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_phone1"/>
<field name="stage_id" ref="crm.stage_phone2"/>
<field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
</record>
<record id="crm_case_phone03" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="time.strftime('%Y-%m-15 17:44:12')" name="date"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Bad time, will call back&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_phone"/>
<field eval="&quot;(820) 167-3208&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_phone1"/>
<field name="stage_id" ref="crm.stage_phone3"/>
<field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
</record>
<record id="crm_case_phone04" model="crm.case">
<field eval="time.strftime('%Y-%m-21 14:10:23')" name="date"/>
<field name="partner_id" ref="base.res_partner_tinyatwork"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Discuss Review Process&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_phone"/>
<field eval="&quot;(077) 582-4035&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_phone2"/>
<field name="stage_id" ref="crm.stage_phone1"/>
<field eval="&quot;(514) 698-4118&quot;" name="partner_phone"/>
</record>
<record id="crm_case_phone05" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_10"/>
<field eval="time.strftime('%Y-%m-28 16:20:43')" name="date"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;More information on the proposed deal&quot;" name="name"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_phone"/>
<field eval="&quot;(333) 715-1450&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_phone2"/>
<field name="stage_id" ref="crm.stage_phone2"/>
<field eval="&quot;(855) 924-4364&quot;" name="partner_phone"/>
</record>
<record id="crm_case_phone06" model="crm.case">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Bad time&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field name="section_id" ref="crm.section_support_phone"/>
<field eval="&quot;(468) 017-2684&quot;" name="partner_mobile"/>
<field eval="time.strftime('%Y-%m-28 14:15:30')" name="date"/>
<field name="categ_id" ref="crm.categ_phone2"/>
<field name="stage_id" ref="crm.stage_phone3"/>
<field eval="&quot;(373) 907-1009&quot;" name="partner_phone"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,77 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<act_window
id="crm_case_categ_phone_create_partner"
name="Schedule Phone Call"
res_model="crm.case"
src_model="res.partner"
view_mode="calendar,tree,form"
context="{'default_partner_id': active_id, 'default_duration': 1.0}"
domain="[('section_id','=','Phone Calls')]"/>
<record model="ir.actions.act_window" id="crm_case_categ_phone_create_partner">
<field name="domain" eval="'[(\'section_id\',\'=\','+str(ref('section_support_phone'))+')]'"/>
</record>
######################## PHONE CALLS (menu) ###########################
<record model="ir.actions.act_window" id="crm_case_categ_phone0">
<field name="name">Phone Calls</field>
<field name="res_model">crm.case</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(ref('section_support_phone'))+')]'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone0">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="act_window_id" ref="crm_case_categ_phone0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_phone0">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_phone_calendar_view"/>
<field name="act_window_id" ref="crm_case_categ_phone0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_phone0">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_phone_form_view"/>
<field name="act_window_id" ref="crm_case_categ_phone0"/>
</record>
<menuitem name="Phone Calls" id="menu_crm_case_phone" parent="crm.menu_crm" action="crm_case_categ_phone0"/>
<record model="ir.actions.act_window" id="crm_case_categ_phone_incoming0">
<field name="name">Inbound</field>
<field name="res_model">crm.case</field>
<field name="view_type">form</field>
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="domain" eval="'[(\'section_id\',\'=\','+str(ref('section_support_phone'))+'), (\'categ_id\',\'=\','+str(ref('categ_phone1'))+')]'"/>
<field name="context" eval="{'default_state':'open'}"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_incoming0">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="act_window_id" ref="crm_case_categ_phone_incoming0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_phone_incoming0">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_phone_calendar_view"/>
<field name="act_window_id" ref="crm_case_categ_phone_incoming0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_phone_incoming0">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_phone_form_view"/>
<field name="act_window_id" ref="crm_case_categ_phone_incoming0"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,144 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Phone Calls
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_phone_tree_view">
<field name="name">CRM - Phone Calls Tree</field>
<field name="model">crm.case</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Phone Calls" editable="bottom" colors="red:state=='open'">
<field name="date" string="Date"/>
<field name="name" string="Call Summary"/>
<field name="partner_id" string="Partner"/>
<field name="partner_address_id" string="Contact"/>
<field name="case_id"/>
<button string="Opportunity" name="%(wizard_crm_opportunity_set)d" type="action"/>
<button string="Meeting"
name="%(wizard_crm_reschedule_phone_call)d" type="action" />
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_phone_form_view">
<field name="name">CRM - Phone Call Form</field>
<field name="model">crm.case</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Claims">
<group colspan="4" col="7">
<field name="name" string="Subject"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="user_id" string="Assigned to" select="2"/>
<button string="Convert to Opportunity" name="%(wizard_crm_opportunity_set)d" icon="gtk-index" type="action"/>
<newline/>
<field name="date" string="Planned Date"/>
<field name="duration"/>
<group colspan="2">
<field name="case_id" on_change="onchange_case_id(case_id, name, partner_id)"
context="{'default_name':name,'default_section_id':section_id,'default_user_id':user_id,'default_duration':duration,
'default_partner_id':partner_id,'default_partner_address_id':partner_address_id,'default_partner_phone':partner_phone,
'default_partner_mobile':partner_mobile,'default_categ_id':categ_id}"/>
<button string="Assign" name="%(crm_generic_wizard_act)d" type="action" />
</group>
<button string="Schedule a Phone Call"
name="%(wizard_crm_reschedule_phone_call)d" icon="gtk-redo" type="action" />
</group>
<notebook colspan="4">
<page string="General">
<field name="categ_id" string="Direction" select="1" on_change="onchange_categ_id(categ_id)" required="1"/>
<field name="active" string="Reminder"/>
<label string="Partner:" align="1.0"/>
<group colspan="1">
<field name="partner_id" string="Partner" nolabel="1"/>
<button string="Convert to Partner" icon="terp-crm" name="%(wizard_crm_partner_create)d" type="action" attrs="{'invisible':[('partner_id','!=',False)]}"/>
</group>
<field name="partner_address_id" string="Contact"/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
<newline/>
<field name="som"/>
<field name="priority" string="Relevant"/>
<separator string= "Description" colspan="4"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="1"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-undo"/>
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_phone_calendar_view">
<field name="name">CRM - Phone Calls Calendar</field>
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Phone Calls" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
<field name="categ_id"/>
</calendar>
</field>
</record>
<record id="view_crm_case_phonecalls_filter" model="ir.ui.view">
<field name="name">crm.case.phonecalls.select</field>
<field name="model">crm.case</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Phonecalls">
<group col="6" colspan="1">
<filter icon="gtk-jump-to"
string="Inbound"
domain="[('section_id.name','=','Phone Calls'),('categ_id.name','=','Inbound')]"
separator="1" help="All Inbound Phonecalls"
/>
<filter icon="gtk-redo"
string="Outbound"
domain="[('section_id.name','=','Phone Calls'),('categ_id.name','=','Outbound')]"
separator="1" help="All Outbound Phonecalls"
/>
<separator orientation="vertical"/>
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Phonecalls"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
help="Phonecalls during last 7 days"
domain="[('date::date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date::date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select='1' string="Subject"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Phonecalls" default="1"/>
<filter icon="terp-crm" domain="[('user_id','child_of',[uid])]" help="My department's Phonecalls"/>
</field>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current "/>
</field>
</group>
</search>
</field>
</record>
</data>
</openerp>

187
addons/crm/crm_report.py Normal file
View File

@ -0,0 +1,187 @@
# -*- 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.sql
AVAILABLE_STATES = [
('draft','Draft'),
('open','Open'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('pending','Pending')
]
class report_crm_case_section_categ2(osv.osv):
_name = "report.crm.case.section.categ2"
_description = "Cases by section and category2"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'category2_id, section_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ2")
cr.execute("""
create view report_crm_case_section_categ2 as (
select
min(c.id) as id,
to_char(c.create_date,'YYYY-MM')||'-01' as name,
c.user_id,
c.state,
c.category2_id,
c.stage_id,
c.section_id,
count(*) as nbr,
sum(planned_revenue) as amount_revenue,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.category2_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.state, c.stage_id, c.category2_id, c.section_id)""")
report_crm_case_section_categ2()
class report_crm_case_section_stage(osv.osv):
_name = "report.crm.case.section.stage"
_description = "Cases by section and stage"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'stage_id, section_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_stage")
cr.execute("""
create view report_crm_case_section_stage as (
select
min(c.id) as id,
to_char(c.create_date,'YYYY-MM')||'-01' as name,
c.user_id,
c.state,
c.stage_id,
c.section_id,
count(*) as nbr,
sum(planned_revenue) as amount_revenue,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.stage_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.state, c.stage_id, c.section_id)""")
report_crm_case_section_stage()
class report_crm_case_section_categ_stage(osv.osv):
_name = "report.crm.case.section.categ.stage"
_description = "Cases by section, Category and stage"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'stage_id, section_id, categ_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_stage")
cr.execute("""
create view report_crm_case_section_categ_stage as (
select
min(c.id) as id,
to_char(c.create_date,'YYYY-MM')||'-01' as name,
c.user_id,
c.categ_id,
c.state,
c.stage_id,
c.section_id,
count(*) as nbr,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.categ_id is not null AND c.stage_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""")
report_crm_case_section_categ_stage()
class report_crm_case_section_categ_categ2(osv.osv):
_name = "report.crm.case.section.categ.categ2"
_description = "Cases by section, Category and Category2"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'section_id, categ_id, category2_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_categ2")
cr.execute("""
create view report_crm_case_section_categ_categ2 as (
select
min(c.id) as id,
to_char(c.create_date, 'YYYY-MM')||'-01' as name,
c.user_id,
c.categ_id,
c.category2_id,
c.state,
c.stage_id,
c.section_id,
count(*) as nbr,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.categ_id is not null AND c.category2_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.categ_id, c.category2_id, c.state, c.stage_id, c.section_id)""")
report_crm_case_section_categ_categ2()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,250 @@
<?xml version="1.0"?>
<openerp>
<data>
#
# Cases by section and category2 of case
#
<menuitem id="next_id_64" name="Reporting" parent="crm.menu_crm"
sequence="50"/>
<menuitem id="next_id_65" name="This Month" parent="next_id_64" />
<menuitem id="next_id_66" name="All Months"
parent="next_id_64"/>
<record model="ir.ui.view" id="view_crm_case_section_categ_tree">
<field name="name">CRM Report - Sections and Type(Tree)</field>
<field name="model">report.crm.case.section.categ2</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Cases by Section and Type">
<field name="name"/>
<field name="user_id"/>
<field name="section_id"/>
<field name="category2_id"/>
<field name="stage_id"/>
<field name="amount_revenue"/>
<field name="nbr"/>
<field name="delay_close"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_crm_case_section_categ_form">
<field name="name">CRM Report - Sections and Type(Form)</field>
<field name="model">report.crm.case.section.categ2</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Cases by Section and Category2">
<field name="name"/>
<field name="user_id"/>
<field name="section_id" select="1" widget="selection"/>
<field name="category2_id" select="1"/>
<field name="stage_id"/>
<field name="amount_revenue"/>
<field name="nbr" select="1"/>
<field name="state" select="1"/>
<field name="delay_close"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_crm_case_section_categ_graph">
<field name="name">CRM Report - Sections and Type(Graph)</field>
<field name="model">report.crm.case.section.categ2</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases by Section and Type" type="bar" orientation="horizontal">
<field name="category2_id"/>
<field name="amount_revenue" operator="+"/>
<field name="section_id" group="True"/>
</graph>
</field>
</record>
<record model="ir.actions.act_window" id="action_report_crm_case_section_categ_tree_month">
<field name="res_model">report.crm.case.section.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem parent="next_id_65" name="Cases by Section and Type" action="action_report_crm_case_section_categ_tree_month" id="menu_crm_case_section_categ_tree_month"/>
<record model="ir.actions.act_window" id="action_report_crm_case_section_categ_tree">
<field name="res_model">report.crm.case.section.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
</record>
<menuitem parent="next_id_66" name="Cases by Section and Type" action="action_report_crm_case_section_categ_tree" id="menu_crm_case_section_categ_tree"/>
#
# Cases by section and stage
#
<record model="ir.ui.view" id="view_crm_case_section_stage_tree">
<field name="name">CRM Report - Sections and Stage(Tree)</field>
<field name="model">report.crm.case.section.stage</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Cases by Section and Stage">
<field name="name"/>
<field name="user_id"/>
<field name="section_id"/>
<field name="stage_id"/>
<field name="amount_revenue"/>
<field name="nbr"/>
<field name="delay_close"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_crm_case_section_stage_form">
<field name="name">CRM Report - Sections and Stage(Form)</field>
<field name="model">report.crm.case.section.stage</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Cases by Section and Stage">
<field name="name"/>
<field name="user_id"/>
<field name="section_id" select="1" widget="selection"/>
<field name="stage_id"/>
<field name="amount_revenue"/>
<field name="nbr" select="1"/>
<field name="state" select="1"/>
<field name="delay_close"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_crm_case_section_stage_graph">
<field name="name">CRM Report - Sections and Stage(Graph)</field>
<field name="model">report.crm.case.section.stage</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases by Section and Stage" type="bar" orientation="horizontal">
<field name="stage_id"/>
<field name="amount_revenue" operator="+"/>
<field name="section_id" group="True"/>
</graph>
</field>
</record>
<record model="ir.actions.act_window" id="action_report_crm_case_section_stage_tree_month">
<field name="res_model">report.crm.case.section.stage</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem parent="next_id_65" name="Cases by Section and Stage" action="action_report_crm_case_section_stage_tree_month" id="menu_crm_case_section_stage_tree_month"/>
<record model="ir.actions.act_window" id="action_report_crm_case_section_stage_tree">
<field name="res_model">report.crm.case.section.stage</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
</record>
<menuitem parent="next_id_66" name="Cases by Section and Stage" action="action_report_crm_case_section_stage_tree" id="menu_crm_case_section_stage_tree"/>
#
# Cases by section, category and stage
#
<record model="ir.ui.view" id="view_crm_case_section_categ_stage_tree">
<field name="name">CRM Report - Section, Category and Stage(Tree)</field>
<field name="model">report.crm.case.section.categ.stage</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Cases by Section, Category and Stage">
<field name="name"/>
<field name="user_id"/>
<field name="section_id"/>
<field name="categ_id"/>
<field name="stage_id"/>
<field name="nbr"/>
<field name="delay_close"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_crm_case_section_categ_stage_form">
<field name="name">CRM Report - Section, Category and Stage(Form)</field>
<field name="model">report.crm.case.section.categ.stage</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Cases by Section, Category and Stage">
<field name="name"/>
<field name="user_id"/>
<field name="section_id" select="1" widget="selection"/>
<field name="categ_id"/>
<field name="stage_id"/>
<field name="nbr" select="1"/>
<field name="state" select="1"/>
<field name="delay_close"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_report_crm_case_section_categ_stage_tree_month">
<field name="res_model">report.crm.case.section.categ.stage</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem parent="next_id_65" name="Cases by Section, Category and Stage" action="action_report_crm_case_section_categ_stage_tree_month" id="menu_crm_case_section_categ_stage_tree_month"/>
<record model="ir.actions.act_window" id="action_report_crm_case_section_categ_stage_tree">
<field name="res_model">report.crm.case.section.categ.stage</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<menuitem parent="next_id_66" name="Cases by Section, Category and Stage" action="action_report_crm_case_section_categ_stage_tree" id="menu_crm_case_section_categ_stage_tree"/>
#
# Cases by section, category and category2
#
<record model="ir.ui.view" id="view_crm_case_section_categ_categ2_tree">
<field name="name">CRM Report - Section, Category and Type(Tree)</field>
<field name="model">report.crm.case.section.categ.categ2</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Cases by Section, Category and Type">
<field name="name"/>
<field name="user_id"/>
<field name="section_id"/>
<field name="categ_id"/>
<field name="category2_id"/>
<field name="stage_id"/>
<field name="nbr"/>
<field name="delay_close"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_crm_case_section_categ_categ2_form">
<field name="name">CRM Report - Section, Category and Type(Form)</field>
<field name="model">report.crm.case.section.categ.categ2</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Cases by Section, Category and Type">
<field name="name"/>
<field name="user_id"/>
<field name="section_id" select="1" widget="selection"/>
<field name="categ_id"/>
<field name="category2_id"/>
<field name="stage_id"/>
<field name="nbr" select="1"/>
<field name="state" select="1"/>
<field name="delay_close"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_report_crm_case_section_categ_categ2_tree_month">
<field name="res_model">report.crm.case.section.categ.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
<field name="domain">[('name','=',time.strftime('%Y-%m-01'))]</field>
</record>
<menuitem parent="next_id_65" name="Cases by Section, Category and Type" action="action_report_crm_case_section_categ_categ2_tree_month" id="menu_crm_case_section_categ_categ2_tree_month"/>
<record model="ir.actions.act_window" id="action_report_crm_case_section_categ_categ2_tree">
<field name="res_model">report.crm.case.section.categ.categ2</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<menuitem parent="next_id_66" name="Cases by Section, Category and Type" action="action_report_crm_case_section_categ_categ2_tree" id="menu_crm_case_section_categ_categ2_tree"/>
</data>
</openerp>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" ?>
<openerp>
<data>
<!--
Process
-->
<record id="process_process_contractprocess0" model="process.process">
<field eval="1" name="active"/>
<field name="model_id" ref="crm.model_crm_case"/>
<field eval="&quot;&quot;&quot;Contract&quot;&quot;&quot;" name="name"/>
</record>
<!--
Process Node
-->
<record id="process_node_leads0" model="process.node">
<field name="model_id" ref="crm.model_crm_case"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Prospects&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Very first contact with new prospect&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_contractprocess0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'done', 'cancel')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_partner0" model="process.node">
<field name="menu_id" ref="base.menu_partner_form"/>
<field name="model_id" ref="base.model_res_partner"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Partner&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Convert to prospect to business partner&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_contractprocess0"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_opportunities0" model="process.node">
<field name="model_id" ref="crm.model_crm_case"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Opportunities&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;When a real project/opportunity is detected&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_contractprocess0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'done', 'cancel')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_meeting0" model="process.node">
<field name="model_id" ref="crm.model_crm_case"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Meeting&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Schedule a normal or phone meeting&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_contractprocess0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'done', 'cancel')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<!--
Process Transition
-->
<record id="process_transition_leadopportunity0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Prospect Opportunity&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Creating business opportunities from prospects&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_opportunities0"/>
<field model="process.node" name="source_node_id" ref="process_node_leads0"/>
</record>
<record id="process_transition_leadpartner0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Prospect Partner&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Prospect is converting to business partner&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_partner0"/>
<field model="process.node" name="source_node_id" ref="process_node_leads0"/>
</record>
<record id="process_transition_opportunitymeeting0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Opportunity Meeting&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Normal or phone meeting for opportunity&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_meeting0"/>
<field model="process.node" name="source_node_id" ref="process_node_opportunities0"/>
</record>
</data>
</openerp>

View File

@ -20,6 +20,7 @@
##############################################################################
import report_businessopp
import crm_report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,187 @@
# -*- 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.sql
AVAILABLE_STATES = [
('draft','Draft'),
('open','Open'),
('cancel', 'Cancelled'),
('done', 'Closed'),
('pending','Pending')
]
class report_crm_case_section_categ2(osv.osv):
_name = "report.crm.case.section.categ2"
_description = "Cases by section and category2"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'category2_id, section_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ2")
cr.execute("""
create view report_crm_case_section_categ2 as (
select
min(c.id) as id,
to_char(c.create_date,'YYYY-MM')||'-01' as name,
c.user_id,
c.state,
c.category2_id,
c.stage_id,
c.section_id,
count(*) as nbr,
sum(planned_revenue) as amount_revenue,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.category2_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.state, c.stage_id, c.category2_id, c.section_id)""")
report_crm_case_section_categ2()
class report_crm_case_section_stage(osv.osv):
_name = "report.crm.case.section.stage"
_description = "Cases by section and stage"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'stage_id, section_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_stage")
cr.execute("""
create view report_crm_case_section_stage as (
select
min(c.id) as id,
to_char(c.create_date,'YYYY-MM')||'-01' as name,
c.user_id,
c.state,
c.stage_id,
c.section_id,
count(*) as nbr,
sum(planned_revenue) as amount_revenue,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.stage_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.state, c.stage_id, c.section_id)""")
report_crm_case_section_stage()
class report_crm_case_section_categ_stage(osv.osv):
_name = "report.crm.case.section.categ.stage"
_description = "Cases by section, Category and stage"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'stage_id, section_id, categ_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_stage")
cr.execute("""
create view report_crm_case_section_categ_stage as (
select
min(c.id) as id,
to_char(c.create_date,'YYYY-MM')||'-01' as name,
c.user_id,
c.categ_id,
c.state,
c.stage_id,
c.section_id,
count(*) as nbr,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.categ_id is not null AND c.stage_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.categ_id, c.state, c.stage_id, c.section_id)""")
report_crm_case_section_categ_stage()
class report_crm_case_section_categ_categ2(osv.osv):
_name = "report.crm.case.section.categ.categ2"
_description = "Cases by section, Category and Category2"
_auto = False
_columns = {
'name': fields.date('Month', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
_order = 'section_id, categ_id, category2_id'
def init(self, cr):
tools.sql.drop_view_if_exists(cr, "report_crm_case_section_categ_categ2")
cr.execute("""
create view report_crm_case_section_categ_categ2 as (
select
min(c.id) as id,
to_char(c.create_date, 'YYYY-MM')||'-01' as name,
c.user_id,
c.categ_id,
c.category2_id,
c.state,
c.stage_id,
c.section_id,
count(*) as nbr,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_case c
where c.categ_id is not null AND c.category2_id is not null
group by to_char(c.create_date,'YYYY-MM'), c.user_id, c.categ_id, c.category2_id, c.state, c.stage_id, c.section_id)""")
report_crm_case_section_categ_categ2()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -21,3 +21,17 @@
"access_crm_email_history_user","crm.email.history","model_crm_email_history","crm.group_crm_user",1,0,0,0
"access_crm_email_add_cc_manager","crm.email.add.cc","model_crm_email_add_cc","crm.group_crm_manager",1,1,1,1
"access_crm_email_add_cc_user","crm.email.add.cc","model_crm_email_add_cc","crm.group_crm_user",1,0,0,0
"access_crm_case_stage","crm.case.stage","model_crm_case_stage","crm.group_crm_user",1,0,0,0
"access_report_crm_case_section_stage","report.crm.case.section.stage","model_report_crm_case_section_stage","crm.group_crm_manager",1,0,0,0
"access_report_crm_case_section_categ_stage","report.crm.case.section.categ.stage","model_report_crm_case_section_categ_stage","crm.group_crm_manager",1,0,0,0
"access_report_crm_case_section_categ_categ2","report.crm.case.section.categ.categ2","model_report_crm_case_section_categ_categ2","crm.group_crm_manager",1,0,0,
"access_report_crm_case_section_categ2","report.crm.case.section.categ2","model_report_crm_case_section_categ2","crm.group_crm_manager",1,0,0,
"access_crm_case_stage_manager","crm.case.stage","model_crm_case_stage","crm.group_crm_manager",1,1,1,1
"access_crm_menu_config_wizard","crm config wizard manager","model_crm_menu_config_wizard","crm.group_crm_manager",1,1,1,1
"access_crm_menu_config_wizard system","crm config wizard manager system","model_crm_menu_config_wizard","base.group_system",1,1,1,1
"access_crm_case_category2_user","crm_case_category2 user","model_crm_case_category2","crm.group_crm_user",1,0,0,0
"access_crm_case_category2_manager","crm_case_category2 manager","model_crm_case_category2","crm.group_crm_manager",1,1,1,1
"access_crm_generic_wizard_manager","crm.generic_wizard","model_crm_generic_wizard","crm.group_crm_manager",1,1,1,1
"access_crm_generic_wizard_manager","crm.generic_wizard","model_crm_generic_wizard","crm.group_crm_user",1,0,0,0
"access_crm_calendar_config_wizard","crm.calendar.config_wizard","model_crm_calendar_config_wizard",,1,1,1,1
"access_crm_caldav_attendee","crm.caldav.attendee","model_crm_caldav_attendee",,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
21 access_crm_email_history_user crm.email.history model_crm_email_history crm.group_crm_user 1 0 0 0
22 access_crm_email_add_cc_manager crm.email.add.cc model_crm_email_add_cc crm.group_crm_manager 1 1 1 1
23 access_crm_email_add_cc_user crm.email.add.cc model_crm_email_add_cc crm.group_crm_user 1 0 0 0
24 access_crm_case_stage crm.case.stage model_crm_case_stage crm.group_crm_user 1 0 0 0
25 access_report_crm_case_section_stage report.crm.case.section.stage model_report_crm_case_section_stage crm.group_crm_manager 1 0 0 0
26 access_report_crm_case_section_categ_stage report.crm.case.section.categ.stage model_report_crm_case_section_categ_stage crm.group_crm_manager 1 0 0 0
27 access_report_crm_case_section_categ_categ2 report.crm.case.section.categ.categ2 model_report_crm_case_section_categ_categ2 crm.group_crm_manager 1 0 0
28 access_report_crm_case_section_categ2 report.crm.case.section.categ2 model_report_crm_case_section_categ2 crm.group_crm_manager 1 0 0
29 access_crm_case_stage_manager crm.case.stage model_crm_case_stage crm.group_crm_manager 1 1 1 1
30 access_crm_menu_config_wizard crm config wizard manager model_crm_menu_config_wizard crm.group_crm_manager 1 1 1 1
31 access_crm_menu_config_wizard system crm config wizard manager system model_crm_menu_config_wizard base.group_system 1 1 1 1
32 access_crm_case_category2_user crm_case_category2 user model_crm_case_category2 crm.group_crm_user 1 0 0 0
33 access_crm_case_category2_manager crm_case_category2 manager model_crm_case_category2 crm.group_crm_manager 1 1 1 1
34 access_crm_generic_wizard_manager crm.generic_wizard model_crm_generic_wizard crm.group_crm_manager 1 1 1 1
35 access_crm_generic_wizard_manager crm.generic_wizard model_crm_generic_wizard crm.group_crm_user 1 0 0 0
36 access_crm_calendar_config_wizard crm.calendar.config_wizard model_crm_calendar_config_wizard 1 1 1 1
37 access_crm_caldav_attendee crm.caldav.attendee model_crm_caldav_attendee 1 1 1 1

View File

@ -26,5 +26,12 @@ import wizard_fetch_mail
import wizard_cal_export
import wizard_cal_import
import meeting_planify
import wizard_partner_create
import wizard_opportunity_set
import schedule_phone_call
import wizard_history_event
import wizard_partner_opportunity
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,109 @@
# -*- 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 mx.DateTime import now
import wizard
import netsvc
import ir
import pooler
from tools.translate import _
case_form = """<?xml version="1.0"?>
<form string="Plan Meeting">
<field name="date"/>
<field name="duration" widget="float_time"/>
<label string="Note that you can also use the calendar view to graphically schedule your next meeting." colspan="4"/>
</form>"""
case_fields = {
'date': {'string': 'Meeting date', 'type': 'datetime', 'required': 1},
'duration': {'string': 'Duration (Hours)', 'type': 'float', 'required': 1}
}
class make_meeting(wizard.interface):
def _selectPartner(self, cr, uid, data, context):
case_obj = pooler.get_pool(cr.dbname).get('crm.case')
case = case_obj.browse(cr, uid, data['id'])
return {'date': case.date, 'duration': case.duration or 2.0}
def _makeMeeting(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.case')
sec_obj = pool.get('crm.case.section')
meeting_id = sec_obj.search(cr, uid, [('code','=','Mtngs')])
if not meeting_id:
raise wizard.except_wizard(_('Error !'),
_('You did not installed the Meetings when you configured the crm module.' \
'\nyou must create a section with the code \'Mtngs\'.'
))
for case in case_obj.browse(cr, uid, data['ids']):
new_id=case_obj.copy(cr, uid, case.id)
modif = {
'date': data['form']['date'],
'duration': data['form']['duration'],
'case_id': case.id,
}
if meeting_id:
modif['section_id']=meeting_id[0]
new_id = case_obj.write(cr, uid, [new_id], modif, context=context)
# case_obj._history(cr, uid, case_obj.browse(cr, uid, data['ids']), _('meeting'))
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'])
id1 = data_obj._get_id(cr, uid, 'crm', 'crm_case_calendar_view_meet')
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_meet')
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_meet')
if id1:
id1 = data_obj.browse(cr, uid, id1, context=context).res_id
if id2:
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 {
'domain':"[('section_id','=','Meetings')]",
'name': _('Meetings'),
'view_type': 'form',
'view_mode': 'calendar,form,tree',
'res_model': 'crm.case',
'view_id': False,
'views': [(id1,'calendar'),(id2,'form'),(id3,'tree'),(False,'graph')],
'type': 'ir.actions.act_window',
'search_view_id': id['res_id']
}
states = {
'init': {
'actions': [_selectPartner],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel','gtk-cancel'),('order', 'Set Meeting','gtk-go-forward')]}
},
'order': {
'actions': [],
'result': {'type': 'action', 'action': _makeMeeting, 'state': 'end'}
}
}
make_meeting('crm.case.meeting')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,127 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from mx.DateTime import now
import wizard
import netsvc
import ir
import pooler
import time
from tools.translate import _
case_form = """<?xml version="1.0"?>
<form string="Schedule Phone Call">
<separator string="Phone Call Description" colspan="4" />
<newline />
<field name='user_id' />
<field name='deadline' />
<newline />
<field name='note' colspan="4"/>
<newline />
<field name='section_id' />
<field name='category_id' domain="[('section_id','=',section_id)]"/>
</form>"""
case_fields = {
'user_id' : {'string' : 'Assign To', 'type' : 'many2one', 'relation' : 'res.users'},
'deadline' : {'string' : 'Planned Date', 'type' : 'datetime'},
'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', 'required' : True},
}
class reschedule_phone_call(wizard.interface):
def _default_values(self, cr, uid, data, context):
case_obj = pooler.get_pool(cr.dbname).get('crm.case')
sec_obj = pooler.get_pool(cr.dbname).get('crm.case.section')
sec_id = sec_obj.search(cr, uid, [('code', '=', 'Phone')])
if not sec_id:
raise wizard.except_wizard(_('Error !'),
_('You did not installed the Phone Calls when you configured the crm module.' \
'\nyou must create a section with the code \'Phone\'.'
))
categ_id=pooler.get_pool(cr.dbname).get('crm.case.categ').search(cr, uid, [('name','=','Outbound')])
case = case_obj.browse(cr, uid, data['ids'][0])
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' : sec_id and sec_id[0],
'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')
result = mod_obj._get_id(cr, uid, 'crm', 'view_crm_case_phonecalls_filter')
res = mod_obj.read(cr, uid, result, ['res_id'])
case_obj = pool.get('crm.case')
# 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')
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
# We duplicate the current object
for id in data['ids']:
new_case = case_obj.copy(cr, uid, id, {'case_id':id,'user_id':form['user_id'],'categ_id':form['category_id'],'description':form['note'],'date' : form['deadline'], 'section_id' : form['section_id']}, context=context)
# Don't forget to cancel the current object,
for case in case_obj.browse(cr, uid, data['ids']):
if case.section_id.code == 'Phone':
case_obj.write(cr, uid, [case.id], {'state' : 'cancel'})
value = {
'domain': "[('section_id','=',%d)]"%form['section_id'],
'name': _('Phone Call'),
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'crm.case',
'res_id' : new_case,
'views': [(id3,'form'),(id2,'tree'),(False,'calendar'),(False,'graph')],
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
states = {
'init': {
'actions': [_default_values],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel','gtk-cancel'),('order', 'Schedule Phone Call','gtk-go-forward')]}
},
'order': {
'actions': [],
'result': {'type': 'action', 'action': _doIt, 'state': 'end'}
}
}
reschedule_phone_call('crm.case.reschedule_phone_call')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,61 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import wizard
import pooler
import time
def _open_history_event(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
data_obj = pool.get('ir.model.data')
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_filter')
id = data_obj.read(cr, uid, result, ['res_id'])
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_calendar_section-view')
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
res = ''
if data.get('model',False) and data.get('ids',False):
model_obj = pooler.get_pool(cr.dbname).get(data['model'])
res = model_obj.browse(cr,uid,data['ids'])
if len(res):
res = res[0].name
return {
'name': 'History : ' + res,
'view_type': 'form',
"view_mode": 'calendar, tree, form',
'view_id' : False,
'views': [(id2,'calendar'),(False,'form'),(False,'tree'),(False,'graph')],
'res_model': 'crm.case',
'type': 'ir.actions.act_window',
'domain': data.get('id',False) and "[('case_id','=',%d)]" % (data['id']) or "[]",
'search_view_id': id['res_id']
}
class case_history_event(wizard.interface):
states = {
'init': {
'actions': [],
'result': {'type': 'action', 'action': _open_history_event, 'state':'end'}
}
}
case_history_event('crm.case.history.events')

View File

@ -0,0 +1,201 @@
# -*- 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 mx.DateTime import now
import wizard
import netsvc
import ir
import pooler
from tools.translate import _
partner_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this prospect ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<newline />
<field name="action"/>
<group attrs="{'invisible':[('action','=','create')]}">
<field name="partner_id" attrs="{'required':[('action','=','exist')]}"/>
</group>
</form>"""
partner_fields = {
'action': {'type':'selection',
'selection':[('exist','Link to an existing partner'),('create','Create a new partner')],
'string':'Action', 'required':True, 'default': lambda *a:'create'},
'partner_id' : {'type':'many2one', 'relation':'res.partner', 'string':'Partner'},
}
case_form = """<?xml version="1.0"?>
<form string="Convert To Opportunity">
<field name="name"/>
<field name="partner_id"/>
<newline/>
<field name="planned_revenue"/>
<field name="probability"/>
</form>"""
case_fields = {
'name': {'type':'char', 'size':64, 'string':'Opportunity Summary', 'required':True},
'planned_revenue': {'type':'float', 'digits':(16,2), 'string': 'Expected Revenue'},
'probability': {'type':'float', 'digits':(16,2), 'string': 'Success Probability'},
'partner_id' : {'type':'many2one', 'relation':'res.partner', 'string':'Partner'},
}
class make_opportunity(wizard.interface):
def _selectopportunity(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.case')
for case in case_obj.browse(cr, uid, data['ids']):
if not case.partner_id:
return 'create_partner'
return {'name': case.name, 'probability': case.probability or 20.0,
'planned_revenue':case.planned_revenue, 'partner_id':case.partner_id.id}
def _selectChoice(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.case')
for case in case_obj.browse(cr, uid, data['ids']):
if not case.partner_id:
return 'create_partner'
return 'opportunity'
def _makeOrder(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
data_obj = pool.get('ir.model.data')
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_opportunities_filter')
res = data_obj.read(cr, uid, result, ['res_id'])
section_obj = pool.get('crm.case.section')
id = section_obj.search(cr, uid, [('code','=','oppor')], context=context)
if not id:
raise wizard.except_wizard(_('Error !'),
_('You did not installed the opportunities tracking when you configured the crm module.' \
'\nYou can not convert the prospect to an opportunity, you must create a section with the code \'oppor\'.'
))
id = id[0]
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_oppor')
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_oppor')
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
case_obj = pool.get('crm.case')
new_pros=case_obj.copy(cr, uid, data['id'])
# case_obj._history(cr, uid, case_obj.browse(cr, uid, [new_pros]), 'convert')
case_obj.write(cr, uid, [new_pros], {
'section_id': id,
'name': data['form']['name'],
'planned_revenue': data['form']['planned_revenue'],
'probability': data['form']['probability'],
'partner_id': data['form']['partner_id'],
'case_id':data['id'],
'state':'open',
})
vals = {
'partner_id': data['form']['partner_id'],
'state':'done',
}
case_id = case_obj.read(cr, uid, data['id'], ['case_id'])['case_id']
if not case_id:
vals.update({'case_id' : new_pros})
case_obj.write(cr, uid, [data['id']], vals)
value = {
'domain': "[('section_id','=',%d)]"%(id),
'name': _('Opportunity'),
'view_type': 'form',
'view_mode': 'form,tree',
'res_model': 'crm.case',
'res_id': int(new_pros),
'view_id': False,
'views': [(id2,'form'),(id3,'tree'),(False,'calendar'),(False,'graph')],
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
def _makePartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.case')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
if data['form']['action']=='create':
for case in case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
if partner_id:
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
else:
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.partner_name2,
'phone': case.partner_phone,
'mobile': case.partner_mobile,
'email': case.email_from
})
else:
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
partner_id=partner.id
contact_id=partner.address and partner.address[0].id
case_obj.write(cr, uid, data['ids'], {
'partner_id': partner_id,
'partner_address_id': contact_id
})
return {}
states = {
'init': {
'actions': [],
'result': {'type':'choice','next_state':_selectChoice}
},
'create_partner': {
'actions': [],
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
},
'create': {
'actions': [],
'result': {'type': 'action', 'action': _makePartner, 'state':'opportunity' }
},
'opportunity': {
'actions': [_selectopportunity],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('confirm', 'Create Opportunity', 'gtk-go-forward')]}
},
'confirm': {
'actions': [],
'result': {'type': 'action', 'action': _makeOrder, 'state': 'end'}
}
}
make_opportunity('crm.case.opportunity_set')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,113 @@
# -*- 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 mx.DateTime import now
import wizard
import netsvc
import ir
import pooler
from tools.translate import _
case_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this prospect ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<!--field name="close"/-->
</form>"""
case_fields = {
'close': {'type':'boolean', 'string':'Close Prospect'}
}
class make_partner(wizard.interface):
def _selectPartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.case')
for case in case_obj.browse(cr, uid, data['ids']):
if case.partner_id:
raise wizard.except_wizard(_('Warning !'),
_('A partner is already defined on this prospect.'))
return {}
def _makeOrder(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
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.case')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
for case in case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
if partner_id:
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
else:
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.partner_name2,
'phone': case.partner_phone,
'mobile': case.partner_mobile,
'email': case.email_from
})
case_obj.write(cr, uid, data['ids'], {
'partner_id': partner_id,
'partner_address_id': contact_id
})
if data['form']['close']:
case_obj.case_close(cr, uid, data['ids'])
value = {
'domain': "[]",
'view_type': 'form',
'view_mode': 'form,tree',
'res_model': 'res.partner',
'res_id': int(partner_id),
'view_id': False,
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
states = {
'init': {
'actions': [_selectPartner],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('confirm', 'Create Partner', 'gtk-go-forward')]}
},
'confirm': {
'actions': [],
'result': {'type': 'action', 'action': _makeOrder, 'state': 'end'}
}
}
make_partner('crm.case.partner_create')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,124 @@
# -*- 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 mx.DateTime import now
import wizard
import netsvc
import ir
import pooler
from tools.translate import _
case_form = """<?xml version="1.0"?>
<form string="Create Opportunity">
<field name="name"/>
<field name="partner_id" readonly="1"/>
<newline/>
<field name="planned_revenue"/>
<field name="probability"/>
</form>"""
case_fields = {
'name' : {'type' :'char', 'size' :64, 'string' :'Opportunity Name', 'required' :True},
'planned_revenue' : {'type' :'float', 'digits' :(16, 2), 'string' : 'Expected Revenue'},
'probability' : {'type' :'float', 'digits' :(16, 2), 'string' : 'Success Probability'},
'partner_id' : {'type' :'many2one', 'relation' :'res.partner', 'string' :'Partner'},
}
class create_opportunity(wizard.interface):
def _select_data(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
part_obj = pool.get('res.partner')
part = part_obj.read(cr, uid, data['id' ], ['name'])
return {'partner_id' : data['id'], 'name' : part['name'] }
def _make_opportunity(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
data_obj = pool.get('ir.model.data')
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_opportunities_filter')
res = data_obj.read(cr, uid, result, ['res_id'])
section_obj = pool.get('crm.case.section')
id = section_obj.search(cr, uid, [('code', '=', 'oppor')], context=context)
if not id:
raise wizard.except_wizard(_('Error !'),
_('You did not installed the opportunities tracking when you configured the crm module.' \
'\nYou can not convert the prospect to an opportunity, you must create a section with the code \'oppor\'.'
))
id = id[0]
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_oppor')
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_oppor')
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
part_obj = pool.get('res.partner')
address = part_obj.address_get(cr, uid, data['ids' ])
categ_obj = pool.get('crm.case.categ')
categ_ids = categ_obj.search(cr, uid, [('section_id','=',id), ('name','ilike','Part%')])
case_obj = pool.get('crm.case')
opp_id = case_obj.create(cr, uid, {
'section_id' : id,
'name' : data['form']['name'],
'planned_revenue' : data['form']['planned_revenue'],
'probability' : data['form']['probability'],
'partner_id' : data['form']['partner_id'],
'partner_address_id' : address['default'],
'categ_id' : categ_ids[0],
'case_id' :data['id'],
'state' :'draft',
})
value = {
'domain' : "[('section_id','=',%d)]"%(id),
'name' : _('Opportunity'),
'view_type' : 'form',
'view_mode' : 'form,tree',
'res_model' : 'crm.case',
'res_id' : opp_id,
'view_id' : False,
'views' : [(id2, 'form'), (id3, 'tree'), (False, 'calendar'), (False, 'graph')],
'type' : 'ir.actions.act_window',
'search_view_id' : res['res_id']
}
return value
states = {
'init' : {
'actions' : [_select_data],
'result' : {'type' : 'form', 'arch' : case_form, 'fields' : case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'), ('confirm', 'Create Opportunity', 'gtk-go-forward')]}
},
'confirm' : {
'actions' : [],
'result' : {'type' : 'action', 'action' : _make_opportunity, 'state' : 'end'}
}
}
create_opportunity('crm.case.partner.opportunity_create')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: