bzr revid: uco@tinyerp.com-20100719112734-ermr3z3jbao1i9gf
This commit is contained in:
uco (Open ERP) 2010-07-19 16:57:34 +05:30
commit aacb16f9b8
47 changed files with 143 additions and 208 deletions

View File

@ -8,8 +8,8 @@
<field name="arch" type="xml">
<form string="Setup">
<group colspan="4" col="8">
<group colspan="3" width="200">
<field name="config_logo" widget="image" width="150" height="100" nolabel="1" colspan="1"/>
<group colspan="3" width="220">
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
<newline/>
<label align="0.0" string="You can start configuring the system or connect directly to the database as an administrator." width="200" colspan="2"/>
</group>

View File

@ -115,9 +115,7 @@ class crm_lead(osv.osv, crm_case):
'section_id': fields.many2one('crm.case.section', 'Sales Team', \
select=True, help='Sales team to which this case belongs to. Defines responsible user and e-mail address for the mail gateway.'),
'create_date': fields.datetime('Creation Date' , readonly=True),
'email_cc': fields.text('Watchers Emails', size=252 , help="These \
addresses(Comma-separated) will receive a copy of the future e-mail communication between partner \
and users"),
'email_cc': fields.text('Watchers Emails', size=252 , help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'description': fields.text('Notes'),
'write_date': fields.datetime('Update Date' , readonly=True),

View File

@ -11,6 +11,7 @@
<field name="context">{"search_default_user_id":uid,'search_default_current':1}</field>
<field name="search_view_id" ref="crm.view_crm_case_leads_filter"/>
<field name="context">{'search_default_current':1, 'default_type': 'lead'}</field>
<field name="help">A lead is a first, unqualified, contact with a new prospect. Use leads when you import a database of prospects or integrate your website's contact form with OpenERP. After having been qualified, the lead can be converted to a partner and a business opportunity for a further detailed tracking of the related activities.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_leads_all">

View File

@ -165,7 +165,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -187,16 +187,16 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="2" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.lead'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
<button colspan="2" string="Forward"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
icon="terp-mail-forward" type="action" />
</page>
</notebook>
</form>

View File

@ -52,6 +52,7 @@
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
<field name="help">The calendar of meetings is shared between sales teams and fully integrated with the others applications like the employee holidays. You can also synchronize meetings with your mobile phone using the caldav interface.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet">

View File

@ -150,6 +150,19 @@ class crm_opportunity(osv.osv):
return {'value':{}}
return {'value':{'probability': stage.probability}}
def onchange_assign_id(self, cr, uid, ids, partner_assigned_id, context={}):
"""This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of stages IDs
@stage_id: change state id on run time """
if not partner_assigned_id:
return {'value':{'date_assign': False}}
else:
return {'value':{'date_assign': time.strftime('%Y-%m-%d')}}
_defaults = {
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c),
'priority': crm.AVAILABLE_PRIORITIES[2][0],

View File

@ -30,6 +30,8 @@
<field name="context">{'search_default_user_id':uid,'search_default_current':1, 'default_type': 'opportunity'}</field>
<field name="view_id" ref="crm_case_tree_view_oppor"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help">Opportunities allows you to track your best deals pipeline: history of the communication, expected revenues, stage of each opportunity, excepted closings, etc. Opportunities are usually connected with the email gateway: new emails may create opportunities and each opportunity automatically gets the history of the conversation with the customer.
Your teams will be able to plan meeting and phonecalls from opportunities, to convert opportunities into quotations, to manage documents related to the opportunity, to track all activities related to this customer, etc.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_oppor11">

View File

@ -29,8 +29,8 @@
<field name="planned_revenue"/>
<field name="probability"/>
<field name="date_deadline" string="Expected Closing"/>
<button string="Schedule Call"
name="%(opportunity2phonecall_act)d" icon="gtk-redo" type="action" />
<button string="Schedule/Log Call"
name="%(opportunity2phonecall_act)d" icon="terp-call-start" type="action" />
<newline/>
<field name="date_action"/>
<field name="title_action"/>
@ -127,7 +127,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -149,16 +149,16 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="2" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.lead'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
<button colspan="2" string="Forward to Partner"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
icon="terp-mail-forward" type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group col="2" colspan="2">
@ -182,7 +182,7 @@
<page string="Assignation" groups="base.group_extended">
<group name="partner_assign_group" col="5" colspan="4">
<separator string="Partner Assignation" colspan="5"/>
<field name="partner_assigned_id"/>
<field name="partner_assigned_id" on_change="onchange_assign_id(partner_assigned_id)"/>
<field name="date_assign"/>
<group colspan="1" col="1">
<button string="Forward"
@ -214,6 +214,7 @@
<field name="country_id" invisible="context.get('invisible_country', True)" />
<field name="date_action"/>
<field name="stage_id"/>
<field name="partner_assigned_id" invisible="1"/>
<button name="stage_previous" string="Previous Stage"
states="open,pending" type="object" icon="gtk-go-back" />
<button name="stage_next" string="Next Stage"
@ -328,11 +329,12 @@
context="{'group_by':'priority'}" />
<filter string="Category" icon="terp-stock_symbol-selection"
domain="[]" context="{'group_by':'categ_id'}" />
<separator orientation="vertical" />
<filter string="Salesman" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Assigned Partner" icon="terp-personal"
domain="[]" context="{'group_by':'partner_assigned_id'}" />
<separator orientation="vertical" />
<filter string="Creation" icon="terp-go-month"
domain="[]" context="{'group_by':'create_date'}" />

View File

@ -12,7 +12,7 @@
domain="[('partner_id', '=', active_id)]"
groups="base.group_extended"
/>
<act_window
id="act_crm_phonecall_crm_meeting_new"
name="Meetings"
@ -69,6 +69,8 @@
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone1'))+')]'"/>
<field name="context" eval="'{\'set_editable\':True,\'default_state\':\'open\', \'search_default_current\':1,\'search_default_today\':1, \'default_categ_id\': ' + str(ref('categ_phone1')) +'}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">Trace easily all your Inbound calls. The Inbound menu open a search view in editable mode, so you can easily modify or add a new call record. With the actions buttons convert a lead into an opportunity or plan a meeting.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_incoming0">
@ -105,6 +107,7 @@
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone2'))+')]'"/>
<field name="context" eval="'{\'default_state\':\'open\', \'search_default_current\':1, \'default_categ_id\': ' + str(ref('categ_phone2')) +'}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">The Outbound menu open a search view in editable mode, so you can easily modify or plan a new call. Actions buttons allows you to to make you call status evolved for a better follow up of your planned calls. During calls, convert your lead into an opportunity, plan a meeting or canceled it.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_outgoing0">

View File

@ -45,6 +45,7 @@
<field name="partner_contact"/>
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" string="Type"/>
<button string="Opportunity"
name="%(phonecall2opportunity_act)d"
states="draft,open,pending"
@ -107,6 +108,9 @@
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="priority"/>
<field name="opportunity_id"/>
</group>
@ -182,6 +186,9 @@
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="priority"/>
<field name="opportunity_id"/>
</group>
@ -209,6 +216,9 @@
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="state" invisible="1"/>
<field name="create_date" invisible="1"/>
<button string="Opportunity"

View File

@ -556,7 +556,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.case.custom', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -578,16 +578,16 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.case.custom', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="2" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.case.custom'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
<button colspan="2" string="Forward to Partner"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
icon="terp-mail-forward" type="action" />
</page>
</notebook>
</form>

View File

@ -59,7 +59,7 @@
</graph>
</field>
</record>
<!-- Leads by user and section Search View -->
<record id="view_report_crm_lead_filter" model="ir.ui.view">
@ -188,6 +188,7 @@
<field name="context">{'search_default_lead':1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('type', '=', 'lead')]</field>
<field name="help">Leads Analysis allows you to consult different informations relative to CRM. Check for treatments delays, number of responses given and emails send. You can sort out your leads analysis on different groups to get fine grained analysis.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_lead_tree">
@ -211,6 +212,7 @@
<field name="context">{"search_default_opportunity": 1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('type', '=', 'opportunity')]</field>
<field name="help">Opportunities Analysis menu gives you an instant access to your opportunities like expected revenue, planned cost, overpassed deadline or the number of exchanges by opportunity.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_opportunity_tree">

View File

@ -171,6 +171,7 @@
<field name="context">{"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_id" ref="view_report_crm_phonecall_tree"/>
<field name="search_view_id" ref="view_report_crm_phonecall_filter"/>
<field name="help">Get an anlysis of Phone Calls number and delay to close, stage, user suits to different groups for a global or a fine grained analysis.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_phonecall_tree">

View File

@ -110,7 +110,7 @@ class crm_opportunity2phonecall(osv.osv_memory):
'categ_id' : categ_id,
'description' : opp.description or False,
'date' : this.date,
'section_id' : opp.section_id and opp.section_id.id or False,
'section_id' : this.section_id.id or opp.section_id.id or False,
'partner_id': opp.partner_id and opp.partner_id.id or False,
'partner_address_id': opp.partner_address_id and opp.partner_address_id.id or False,
'partner_phone' : opp.phone or (opp.partner_address_id and opp.partner_address_id.phone or False),

View File

@ -48,7 +48,7 @@ class crm_send_new_email(osv.osv_memory):
'email_to' : fields.char('To', size=512, required=True),
'email_from' : fields.char('From', size=128, required=True),
'reply_to' : fields.char('Reply To', size=128, required=True, help="Reply-to of the Sales team defined on this case"),
'email_cc' : fields.char('CC', size=512, help="Carbon Copy: list of recipients that will receive a copy of this mail"),
'email_cc' : fields.char('CC', size=512, help="These addresses will receive a copy of this email. To modify the permanent CC list, edit the global CC field of this case"),
'subject': fields.char('Subject', size=512, required=True),
'body': fields.text('Message Body', required=True),
'state': fields.selection(crm.AVAILABLE_STATES, string='Set New State To', required=True),

View File

@ -75,7 +75,7 @@ class crm_claim(osv.osv, crm.crm_case):
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
# domain="[('partner_id','=',partner_id)]"
),
'email_cc': fields.text('Watchers Emails', size=252, help="These addresses(Comma-separated) will receive a copy of the future communication between partner and users"),
'email_cc': fields.text('Watchers Emails', size=252, help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'partner_name': fields.char("Employee's Name", size=64),
'partner_mobile': fields.char('Mobile', size=32),

View File

@ -16,6 +16,7 @@
<field name="view_id" ref="crm_case_claims_tree_view"/>
<field name="context">{"search_default_section_id":section_id,"search_default_current":1,"search_default_user_id":uid}</field>
<field name="search_view_id" ref="crm_claim.view_crm_case_claims_filter"/>
<field name="help">Record and trace your customers' claims here. A claim is defined by a client name, several types, a status and a priority level. A claim can also be a preventive or repairing action. A claim can be linked to a reference like a sales order, or a lot. You can send emails with attachments and get the history of the claim treatment (emails send, interventions type, etc.). </field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_claim0">

View File

@ -175,7 +175,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.claim', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -197,7 +197,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.claim', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"

View File

@ -46,7 +46,7 @@ class crm_fundraising(osv.osv, crm.crm_case):
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These addresses(Comma-separated) will receive a copy of the future communication between partner and users"),
'email_cc': fields.text('Watchers Emails', size=252 , help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),

View File

@ -15,6 +15,7 @@
<field name="view_id" ref="crm_fundraising.crm_case_tree_view_fund"/>
<field name="context">{"search_default_user_id":uid,"search_default_current":1}</field>
<field name="search_view_id" ref="crm_fundraising.view_crm_case_fund_filter"/>
<field name="help">When you wish to support your organization or a campaign, trace here all your activities for collecting money. The menu open a search list where you can find funds description, email, history, probability of success. Several actions buttons allows you to easily modify your different fund status.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_fund_all1">

View File

@ -165,7 +165,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.fundraising', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -187,13 +187,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.fundraising', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.fundraising'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group col="2" colspan="2">

View File

@ -181,10 +181,10 @@
<field name="context">{"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_id" ref="view_report_crm_fundraising_tree"/>
<field name="search_view_id" ref="view_report_crm_fundraising_filter"/>
<field name="help">With Fund Raising get at a glance a view to your fund raising campaigns with the estimated revenue, average probability and delay to close.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_fundrising_tree">
<record model="ir.actions.act_window.view" id="action_report_crm_fundrising_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_report_crm_fundraising_tree"/>

View File

@ -49,7 +49,7 @@ class crm_helpdesk(osv.osv, crm.crm_case):
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These addresses(Comma-separated) will receive a copy of the future communication between partner and users"),
'email_cc': fields.text('Watchers Emails', size=252 , help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'date': fields.datetime('Date'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),

View File

@ -13,6 +13,7 @@
<field name="view_id" ref="crm_case_tree_view_helpdesk"/>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_crm_case_helpdesk_filter"/>
<field name="help">Alike records and processing of claims, Helpdesk and Support is a good tool to trace your interventions. This menu is more adapted to an oral communication, which is not necessarily related to a claim. Select a customer, add notes and categorize your interventions with a channel and a priority level.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_tree_view_act111">

View File

@ -103,7 +103,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.helpdesk', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -125,13 +125,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.helpdesk', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.helpdesk'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group colspan="2" col="2">

View File

@ -163,6 +163,7 @@
<field name="view_mode">tree,graph</field>
<field name="view_id" ref="view_report_crm_helpdesk_tree"/>
<field name="search_view_id" ref="view_report_crm_helpdesk_filter"/>
<field name="help">Helpdesk allows you to consult different informations relative to support demands. Check for treatments delays, number of responses given and emails send and costs. You can sort out your analysis on different groups to get fine grained analysis.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_helpdesk_tree">

View File

@ -317,6 +317,8 @@
<field name="res_model">ir.attachment</field>
<field name="name">Document</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_attach_filter"/>
<field name="help">Documents give your access to all attached documents; it's a repository of all attached documents (mails, documents attached to a project, etc.)</field>
</record>
<menuitem name="Documents" id="menu_document_doc" parent="knowledge.menu_document" sequence="0"/>
<menuitem

View File

@ -300,7 +300,7 @@ class event_registration(osv.osv):
_columns = {
'name': fields.char('Summary', size=124, readonly=True, states={'draft': [('readonly', False)]}),
'email_cc': fields.text('CC', size=252 , readonly=False, states={'done': [('readonly', True)]}, help="These people will receive a copy of the future communication between partner and users by email"),
'email_cc': fields.text('CC', size=252 , readonly=False, states={'done': [('readonly', True)]}, help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'nb_register': fields.integer('Quantity', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Number of Registrations or Tickets"),
'event_id': fields.many2one('event.event', 'Event Related', required=True, readonly=True, states={'draft': [('readonly', False)]}),
"partner_invoice_id": fields.many2one('res.partner', 'Partner Invoiced', readonly=True, states={'draft': [('readonly', False)]}),

View File

@ -376,7 +376,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'event.registration', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -398,13 +398,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'event.registration', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'event.registration'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
</notebook>
</form>

View File

@ -72,9 +72,7 @@ class hr_applicant(osv.osv, crm.crm_case):
select=True, help='Sales team to which Case belongs to.\
Define Responsible user and Email account for mail gateway.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'email_cc': fields.text('Watchers Emails', size=252 , help="These people\
will receive a copy of the future" \
" communication between partner and users by email"),
'email_cc': fields.text('Watchers Emails', size=252 , help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'probability': fields.float('Probability'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \

View File

@ -152,7 +152,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'hr.applicant', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -174,13 +174,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'hr.applicant', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'hr.applicant'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
</notebook>
</form>

View File

@ -475,7 +475,7 @@ class mailgate_tool(osv.osv_memory):
'partner_id': False
}
from_email = self.to_email(from_email)[0]
address_ids = address_pool.search(cr, uid, [('email', '=', from_email)])
address_ids = address_pool.search(cr, uid, [('email', 'like', from_email)])
if address_ids:
address = address_pool.browse(cr, uid, address_ids[0])
res['partner_address_id'] = address_ids[0]

View File

@ -192,6 +192,7 @@
<field name="view_type">form</field>
<field name="view_id" ref="product_product_tree_view"/>
<field name="search_view_id" ref="product_search_form_view"/>
<field name="help">In OpenERP, a product is something you can buy and sell. It can be a raw material, a stockable product, a consumable or a service. The product form contains a detailed information on the products like procurement logistic, sales price, product category, suppliers, etc.</field>
</record>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/>
@ -250,6 +251,7 @@
<field name="domain">[('parent_id','=',False)]</field>
<field name="view_type">tree</field>
<field name="view_id" ref="product_category_tree_view"/>
<field name="help">Products category opens a tree structure view of your products by category.</field>
</record>
<menuitem
action="product_category_action"
@ -488,7 +490,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Product Variant">
<field name="product_tmpl_id" select="1"/>
<field name="product_tmpl_id" select="1"/>
<field name="active" select="1"/>
<field name="variants" select="1"/>
<field name="default_code" select="1"/>

View File

@ -1,103 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 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 pooler
import datetime
def timeformat_convert(cr, uid, time_string):
# Function to convert input time string:: 8.5 to output time string 8:30
split_list = str(time_string).split('.')
hour_part = split_list[0]
mins_part = split_list[1]
round_mins = int(round(float(mins_part) * 60,-2))
converted_string = hour_part + ':' + str(round_mins)[0:2]
return converted_string
def leaves_resource(cr, uid, calendar_id, resource_id=False, resource_calendar=False):
# To get the leaves for the resource_ids working on phase
pool = pooler.get_pool(cr.dbname)
resource_leaves_pool = pool.get('resource.calendar.leaves')
leaves = []
if resource_id:
resource_leave_ids = resource_leaves_pool.search(cr, uid, ['|',('calendar_id','=',calendar_id),('calendar_id','=',resource_calendar),('resource_id','=',resource_id)])
else:
resource_leave_ids = resource_leaves_pool.search(cr, uid, [('calendar_id','=',calendar_id),('resource_id','=',False)])
res_leaves = resource_leaves_pool.read(cr, uid, resource_leave_ids, ['date_from','date_to'])
for leave in range(len(res_leaves)):
dt_start = datetime.datetime.strptime(res_leaves[leave]['date_from'],'%Y-%m-%d %H:%M:%S')
dt_end = datetime.datetime.strptime(res_leaves[leave]['date_to'],'%Y-%m-%d %H:%M:%S')
no = dt_end - dt_start
[leaves.append((dt_start + datetime.timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(no.days + 1))]
leaves.sort()
return leaves
def compute_working_calendar(cr, uid, calendar_id):
# To change the format of working calendar to bring it into 'faces' format
pool = pooler.get_pool(cr.dbname)
resource_week_pool = pool.get('resource.calendar.week')
time_range = "8:00-8:00"
non_working = ""
wk = {"0":"mon", "1":"tue", "2":"wed", "3":"thu", "4":"fri", "5":"sat", "6":"sun"}
wk_days = {}
wk_time = {}
wktime_list = []
wktime_cal = []
week_ids = resource_week_pool.search(cr, uid, [('calendar_id','=',calendar_id)])
week_obj = resource_week_pool.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'])
# Converting time formats into appropriate format required
# and creating a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')]
for week in week_obj:
res_str = ""
if wk.has_key(week['dayofweek']):
day = wk[week['dayofweek']]
wk_days[week['dayofweek']] = wk[week['dayofweek']]
hour_from_str = timeformat_convert(cr, uid, week['hour_from'])
hour_to_str = timeformat_convert(cr, uid, week['hour_to'])
res_str = hour_from_str + '-' + hour_to_str
wktime_list.append((day,res_str))
# Converting it to format like [('mon', '8:00-12:00', '13:00-18:00')]
for item in wktime_list:
if wk_time.has_key(item[0]):
wk_time[item[0]].append(item[1])
else:
wk_time[item[0]] = [item[0]]
wk_time[item[0]].append(item[1])
for k,v in wk_time.items():
wktime_cal.append(tuple(v))
# For non working days adding [('tue,wed,fri,sat,sun', '8:00-8:00')]
for k,v in wk_days.items():
if wk.has_key(k):
wk.pop(k)
for v in wk.itervalues():
non_working += v + ','
if non_working:
wktime_cal.append((non_working[:-1],time_range))
return wktime_cal
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -159,9 +159,7 @@ class project_issue(osv.osv, crm.crm_case):
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'email_cc': fields.char('Watchers Emails', size=256, help="These people\
will receive a copy of the future" \
" communication between partner and users by email"),
'email_cc': fields.char('Watchers Emails', size=256, help="Every email sent or received for the related record will be forwarded to these addresses(Comma-separated)"),
'date_open': fields.datetime('Opened', readonly=True),
# Project Issue fields
'date_closed': fields.datetime('Closed', readonly=True),

View File

@ -82,7 +82,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'project.issue', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -104,14 +104,14 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'project.issue', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<separator colspan="4"/>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'project.issue'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
<page string="History" groups="base.group_extended">
<group col="2" colspan="2">

View File

@ -73,7 +73,7 @@
<field name="res_model">project.resource.allocation</field>
<field name="view_type">form</field>
<field name="view_mode">gantt,tree,form</field>
<field name="context">{'search_default_resource': 1} </field>
<field name="context">{}</field>
<!--<field name="search_view_id" ref="view_project_phase_search"/>-->
</record>

View File

@ -37,7 +37,6 @@
-
!record {model: project.task, id: project_task_t00}:
name: t1
occupation_rate: 1.0
planned_hours: 20.0
remaining_hours: 20.0
state: draft
@ -50,7 +49,6 @@
-
!record {model: project.task, id: project_task_t11}:
name: t2
occupation_rate: 1.0
planned_hours: 25.0
remaining_hours: 25.0
state: draft
@ -62,7 +60,6 @@
-
!record {model: project.task, id: project_task_t22}:
name: t3
occupation_rate: 1.0
planned_hours: 30.0
remaining_hours: 30.0
state: draft
@ -75,7 +72,6 @@
-
!record {model: project.task, id: project_task_t33}:
name: t4
occupation_rate: 1.0
planned_hours: 25.0
remaining_hours: 25.0
state: draft
@ -105,4 +101,4 @@
prj=self.browse(cr, uid, [ref("project_project_project1")])[0]
for task in prj.tasks:
if (not task.user_id) or (not task.date_start) or (not task.date_end):
raise AssertionError("Project Tasks not scheduled")
raise AssertionError("Project Tasks not scheduled")

View File

@ -81,7 +81,7 @@ def compute_working_calendar(cr, uid, calendar_id, context=None):
"""
pool = pooler.get_pool(cr.dbname)
resource_week_obj = pool.get('resource.calendar.week')
resource_attendance_obj = pool.get('resource.calendar.attendance')
time_range = "8:00-8:00"
non_working = ""
week_days = {"0": "mon", "1": "tue", "2": "wed","3": "thu", "4": "fri", "5": "sat", "6": "sun"}
@ -89,8 +89,8 @@ def compute_working_calendar(cr, uid, calendar_id, context=None):
wk_time = {}
wktime_list = []
wktime_cal = []
week_ids = resource_week_obj.search(cr, uid, [('calendar_id', '=', calendar_id)], context=context)
weeks = resource_week_obj.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'], context=context)
week_ids = resource_attendance_obj.search(cr, uid, [('calendar_id', '=', calendar_id)], context=context)
weeks = resource_attendance_obj.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'], context=context)
# Convert time formats into appropriate format required
# and create a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')]
for week in weeks:

View File

@ -31,7 +31,7 @@ class resource_calendar(osv.osv):
_columns = {
'name' : fields.char("Name", size=64, required=True),
'company_id' : fields.many2one('res.company', 'Company', required=False),
'week_id' : fields.one2many('resource.calendar.week', 'calendar_id', 'Working Time'),
'attendance_ids' : fields.one2many('resource.calendar.attendance', 'calendar_id', 'Working Time'),
'manager' : fields.many2one('res.users', 'Workgroup manager'),
}
_defaults = {
@ -65,7 +65,7 @@ class resource_calendar(osv.osv):
maxrecur = 100
current_hour = dt_from.hour
while (todo>0) and maxrecur:
cr.execute("select hour_from,hour_to from resource_calendar_week where dayofweek='%s' and calendar_id=%s order by hour_from desc", (dt_from.day_of_week,id))
cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from desc", (dt_from.day_of_week,id))
for (hour_from,hour_to) in cr.fetchall():
leave_flag = False
if (hour_from<current_hour) and (todo>0):
@ -101,7 +101,7 @@ class resource_calendar(osv.osv):
maxrecur = 100
current_hour = dt_from.hour
while (todo>0) and maxrecur:
cr.execute("select hour_from,hour_to from resource_calendar_week where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
for (hour_from,hour_to) in cr.fetchall():
leave_flag = False
if (hour_to>current_hour) and (todo>0):
@ -136,7 +136,7 @@ class resource_calendar(osv.osv):
current_hour = dt_from.hour
while (dt_from <= dt_to):
cr.execute("select hour_from,hour_to from resource_calendar_week where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
der = cr.fetchall()
for (hour_from,hour_to) in der:
if hours != 0.0:#For first time of the loop only,hours will be 0
@ -169,8 +169,8 @@ class resource_calendar(osv.osv):
resource_calendar()
class resource_calendar_week(osv.osv):
_name = "resource.calendar.week"
class resource_calendar_attendance(osv.osv):
_name = "resource.calendar.attendance"
_description = "Work Detail"
_columns = {
'name' : fields.char("Name", size=64, required=True),
@ -181,7 +181,7 @@ class resource_calendar_week(osv.osv):
'calendar_id' : fields.many2one("resource.calendar", "Resource's Calendar", required=True),
}
_order = 'dayofweek, hour_from'
resource_calendar_week()
resource_calendar_attendance()
class resource_resource(osv.osv):
_name = "resource.resource"

View File

@ -8,70 +8,70 @@
<field name="name">38 Hours/Week</field>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Monday morning</field>
<field name="dayofweek">0</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Monday evening</field>
<field name="dayofweek">0</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Tuesday morning</field>
<field name="dayofweek">1</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Tuesday evening</field>
<field name="dayofweek">1</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Wednesday morning</field>
<field name="dayofweek">2</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Wednesday evening</field>
<field name="dayofweek">2</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Thursday morning</field>
<field name="dayofweek">3</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Thursday evening</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="dayofweek">3</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Friday morning</field>
<field name="dayofweek">4</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Friday evening</field>
<field name="dayofweek">4</field>
<field name="hour_from">13</field>

View File

@ -106,9 +106,9 @@
<field name="search_view_id" ref="view_resource_calendar_search"/>
</record>
<record id="view_resource_calendar_week_tree" model="ir.ui.view">
<field name="name">resource.calendar.week.tree</field>
<field name="model">resource.calendar.week</field>
<record id="view_resource_calendar_attendance_tree" model="ir.ui.view">
<field name="name">resource.calendar.attendance.tree</field>
<field name="model">resource.calendar.attendance</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Working Time">
@ -119,9 +119,9 @@
</tree>
</field>
</record>
<record id="view_resource_calendar_week_form" model="ir.ui.view">
<field name="name">resource.calendar.week.form</field>
<field name="model">resource.calendar.week</field>
<record id="view_resource_calendar_attendance_form" model="ir.ui.view">
<field name="name">resource.calendar.attendance.form</field>
<field name="model">resource.calendar.attendance</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Working Time">

View File

@ -1,6 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_resource_calendar","resource.calendar","model_resource_calendar","base.group_system",1,1,1,1
"access_resource_calendar_week","resource.calendar.week","model_resource_calendar_week","base.group_system",1,1,1,1
"access_resource_calendar_attendance","resource.calendar.attendance","model_resource_calendar_attendance","base.group_system",1,1,1,1
"access_resource_resource","resource.resource","model_resource_resource","base.group_system",1,1,1,1
"access_resource_resource_all","resource.resource all","model_resource_resource",,1,0,0,0
"access_resource_calendar_leaves","resource.calendar.leaves","model_resource_calendar_leaves","base.group_system",1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_resource_calendar resource.calendar model_resource_calendar base.group_system 1 1 1 1
3 access_resource_calendar_week access_resource_calendar_attendance resource.calendar.week resource.calendar.attendance model_resource_calendar_week model_resource_calendar_attendance base.group_system 1 1 1 1
4 access_resource_resource resource.resource model_resource_resource base.group_system 1 1 1 1
5 access_resource_resource_all resource.resource all model_resource_resource 1 0 0 0
6 access_resource_calendar_leaves resource.calendar.leaves model_resource_calendar_leaves base.group_system 1 1 1 1

View File

@ -124,6 +124,7 @@
<field name="search_view_id" ref="view_order_product_search"/>
<field name="view_id" ref="view_order_product_tree"/>
<field name="context">{'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="help">With Sales Analysis consult your sales total amount suits to different group criteria (salesman, partner, product, etc.)</field>
</record>
<menuitem id="base.next_id_64" name="Reporting" parent="base.menu_base_partner" sequence="11"/>
@ -135,6 +136,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_month':1, 'search_default_group_product':1, 'search_default_group_partner':1, 'search_default_done':1, 'search_default_out': 1, 'group_by':[], 'group_by_no_leaf':1}</field>
<field name="help">Shipments Analysis opens a search views with all your shipments (in and out quantities), their total value, planned and actual dates. You can sort out your analysis on different groups to get fine grained analysis.</field>
</record>
<menuitem action="action_stock_move_report_so" id="menu_action_stock_move_report_so" parent="base.next_id_64" sequence="25"/>

View File

@ -294,6 +294,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="search_view_id" ref="view_sales_order_filter"/>
<field name="help">The sale order manages the invoicing, the product fullfilment and the delivery processes. OpenERP can handle products, services and consumables so that a sale order can trigger tasks, manufacturing orders, purchases, etc. It support several invoicing methods according to your configuration: from the sale order, from the pickings, etc.</field>
</record>
<menuitem action="action_order_form" id="menu_sale_order" parent="base.menu_sales" sequence="3"/>
@ -500,6 +501,7 @@
<field name="search_view_id" ref="view_sales_order_uninvoiced_line_filter" />
<field name="context">{"search_default_uninvoiced":1}</field>
<field name="filter" eval="True"/>
<field name="help">Lines to invoice opens a search view with sales order and their status.</field>
</record>
<record id="action_order_line_tree3" model="ir.actions.act_window">

View File

@ -25,10 +25,8 @@
name="product_id"
on_change="product_id_change(product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], True, product_packaging, False)"
/>
<group colspan="2">
<field name="product_uom_qty"/>
<field name="product_uom" nolabel="1"/>
</group>
<field name="product_uom"/>
<group colspan="2" groups="product.group_uos">
<field name="product_uos_qty"/>
<field name="product_uos" nolabel="1"/></group>

View File

@ -8,20 +8,23 @@
parent="base.menu_base_partner"/>
<record model="ir.actions.act_window" id="action_document_form">
<field name="type">ir.actions.act_window</field>
<field name="res_model">ir.attachment</field>
<field name="view_type">form</field>
<field name="domain" eval="[('parent_id','=',ref('dir_sale'))]"></field>
</record>
<field name="name">Documents</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ir.attachment</field>
<field name="view_type">form</field>
<field name="domain" eval="[('parent_id','=',ref('dir_sale'))]"></field>
<field name="help">Documents give your access to all attached documents; it's a repository of all attached documents (mails, documents attached to a project, etc.)</field>
</record>
<record model="ir.actions.act_window" id="action_wiki_test">
<field name="name">Wiki Pages</field>
<field name="res_model">wiki.wiki</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain" eval="[('group_id','=',ref('wiki_groups_sale_faq'))]"/>
<field name="search_view_id" ref="wiki.view_wiki_filter"/>
</record>
<record model="ir.actions.act_window" id="action_wiki_test">
<field name="name">Wiki Pages</field>
<field name="res_model">wiki.wiki</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain" eval="[('group_id','=',ref('wiki_groups_sale_faq'))]"/>
<field name="search_view_id" ref="wiki.view_wiki_filter"/>
<field name="help">FAQ is a wiki page used to share frequently ask questions.</field>
</record>
<menuitem
name="Documents"