5 <menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>
10 ======================
13 <record model="ir.ui.view" id="view_marketing_campaign_form">
14 <field name="name">marketing.campaign.form</field>
15 <field name="model">marketing.campaign</field>
16 <field name="type">form</field>
17 <field name="arch" type="xml">
18 <form string="Campaign">
19 <group colspan="4" col="6">
20 <group colspan="2" col="2">
21 <separator string="Campaign" colspan="2" />
22 <field name="name" select="1"/>
25 <group colspan="2" col="2">
26 <separator string="Resource" colspan="2" />
27 <field name="object_id"/>
28 <field name="partner_field_id"/>
29 <field name="unique_field_id"/>
31 <group colspan="2" col="2">
32 <separator string="Cost" colspan="2" />
33 <field name="fixed_cost"/>
36 <field name="activity_ids" nolabel = "1" colspan="4" context="{'default_object_id': object_id, 'default_campaign_id': active_id}" />
37 <separator string="" colspan="4" />
38 <group col="10" colspan="4">
39 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
40 <button name="state_cancel_set" string="Cancel" states="running" icon="terp-gtk-stop"/>
41 <button name="state_running_set" string="Run" states="draft" icon="gtk-apply"/>
42 <button name="state_draft_set" string="Set to Draft" states="done,cancelled" icon="gtk-convert"/>
43 <button name="state_done_set" string="Done" states="running" icon="terp-dialog-close"/>
49 <record model="ir.ui.view" id="view_marketing_campaign_tree">
50 <field name="name">marketing.campaign.tree</field>
51 <field name="model">marketing.campaign</field>
52 <field name="type">tree</field>
53 <field name="arch" type="xml">
54 <tree colors="blue:state == 'draft';black:state == 'running';gray:state in ('done','cancelled')" string="Campaigns">
55 <field name="name" select="1"/>
56 <field name="object_id" select="1"/>
58 <field name="fixed_cost"/>
64 <record id="view_marketing_campaign_diagram" model="ir.ui.view">
65 <field name="name">marketing.campaign.diagram</field>
66 <field name="model">marketing.campaign</field>
67 <field name="type">diagram</field>
68 <field name="arch" type="xml">
69 <diagram string="Campaign Editor">
70 <node object="marketing.campaign.activity" shape="rectangle:type=='subcampaign'" bgcolor="gray:start==True">
73 <field name="start" invisible="1"/>
74 <field name="condition" widget="char"/>
76 <arrow object="marketing.campaign.transition" source="activity_from_id" destination="activity_to_id" label="['name']">
77 <field name="activity_from_id"/>
78 <field name="activity_to_id"/>
79 <field name="interval_nbr"/>
80 <field name="interval_type"/>
86 <record id="view_marketing_campaign_search" model="ir.ui.view">
87 <field name="name">marketing.campaign.search</field>
88 <field name="model">marketing.campaign</field>
89 <field name="type">search</field>
90 <field name="arch" type="xml">
91 <search string="Campaigns">
92 <filter icon="terp-document-new" string="Draft" name = "draft" domain="[('state','=','draft')]"/>
93 <filter icon="terp-check" string="Running" domain="[('state','=','running')]"/>
94 <separator orientation="vertical"/>
95 <filter icon="terp-gtk-jump-to-rtl" string="Test Mode" name = "test" domain="[('mode','=','test')]"/>
96 <filter icon="terp-gtk-jump-to-rtl" string="Manual Mode" domain="[('mode','=','manual')]"/>
97 <separator orientation="vertical"/>
99 <field name="object_id" string="Resource"/>
101 <group expand="0" string="Group By...">
102 <filter string="Resource" name="Object" icon="terp-accessories-archiver" context="{'group_by':'object_id'}" />
103 <separator orientation="vertical"/>
104 <filter string="Mode" name="Mode" icon="terp-gtk-jump-to-rtl" context="{'group_by':'mode'}" />
105 <separator orientation="vertical"/>
106 <filter string="State" name="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}" />
112 <record model="ir.actions.act_window" id="action_marketing_campaign_form">
113 <field name="name">Campaigns</field>
114 <field name="type">ir.actions.act_window</field>
115 <field name="res_model">marketing.campaign</field>
116 <field name="view_type">form</field>
117 <field name="view_mode">tree,form,diagram</field>
118 <field name="view_id" ref="view_marketing_campaign_tree"/>
119 <field name="context">{'group_by': []}</field>
120 <field name="search_view_id" ref="view_marketing_campaign_search"/>
121 <field name="help">A marketing campaign is an event or activity that will help you manage and reach your partners with specific messages. A campaign can have many activities that will be triggered from a specific situation. One action could be sending an email template that has previously been created in the system.</field>
124 <menuitem name="Campaigns" id="menu_marketing_campaign" parent="base.marketing_menu"/>
125 <menuitem id="menu_marketing_campaign_form" parent="menu_marketing_campaign" action="action_marketing_campaign_form" sequence="10" />
128 ======================
130 ======================
133 <record model="ir.ui.view" id="view_marketing_campaign_segment_form">
134 <field name="name">marketing.campaign.segment.form</field>
135 <field name="model">marketing.campaign.segment</field>
136 <field name="type">form</field>
137 <field name="arch" type="xml">
138 <form string="Segments">
139 <group colspan="2" col="2">
140 <separator string="Segment" colspan="4"/>
142 <field name="campaign_id" select="1" on_change="onchange_campaign_id(campaign_id)"/>
143 <field name="object_id" invisible="1"/>
145 <group colspan="2" col="2">
146 <separator string="Filter" colspan="4"/>
147 <field name="ir_filter_id"/>
150 <group colspan="2" col="4">
151 <separator string="Synchronization" colspan="4"/>
152 <field name="sync_mode" required="True" colspan="4"/>
153 <field name="sync_last_date" colspan="3"/>
154 <button string="Synchronize Manually" states="running" name="synchroniz" icon="terp-project" type="object"/>
155 <field name="date_next_sync" colspan="3"/>
157 <group colspan="2" col="2">
158 <separator string="History" colspan="2"/>
159 <field name="date_run" readonly="1"/>
160 <field name="date_done" readonly="1"/>
162 <separator string="" colspan="4"/>
163 <group col="6" colspan="4">
164 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
165 <button name="state_cancel_set" string="Cancel" states="running" icon="terp-gtk-stop"/>
166 <button name="state_running_set" string="Run" states="draft" icon="gtk-apply"/>
167 <button name="state_done_set" string="Close" states="running" icon="terp-dialog-close"/>
168 <button name="state_draft_set" string="Set to Draft" states="done,cancelled" icon="gtk-convert"/>
174 <record model="ir.ui.view" id="view_marketing_campaign_segment_tree">
175 <field name="name">marketing.campaign.segment.tree</field>
176 <field name="model">marketing.campaign.segment</field>
177 <field name="type">tree</field>
178 <field name="arch" type="xml">
179 <tree colors="blue:state == 'draft';black:state == 'running';gray:state in ('done','cancelled')" string="Segments">
181 <field name="campaign_id"/>
182 <field name="date_run"/>
183 <field name="sync_last_date"/>
184 <button string="Synchronize Manually" states="running" name="synchroniz" icon="terp-project" type="object"/>
185 <field name="state" />
190 <record id="view_marketing_campaign_segment_search" model="ir.ui.view">
191 <field name="name">marketing.campaign.segment.search</field>
192 <field name="model">marketing.campaign.segment</field>
193 <field name="type">search</field>
194 <field name="arch" type="xml">
195 <search string="Segments">
196 <filter icon="terp-check" string="Running" name="running" domain="[('state','=','running')]"/>
197 <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]"/>
198 <separator orientation="vertical"/>
199 <filter icon="terp-gtk-jump-to-ltr" string="Newly Created" help="Sync mode: only records created after last sync" domain="[('sync_mode','=','create_date')]"/>
200 <filter icon="terp-stock_effects-object-colorize" string="Newly Modified" help="Sync mode: only records updated after last sync" domain="[('sync_mode','=','write_date')]"/>
201 <filter icon="terp-emblem-documents" string="All" help="Sync mode: all records" domain="[('sync_mode','=','all')]"/>
202 <separator orientation="vertical"/>
204 <field name="campaign_id"/>
205 <field name="object_id"/>
206 <field name="date_run"/>
208 <group expand="0" string="Group By...">
209 <filter string="Campaign" name="Campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}" />
210 <separator orientation="vertical"/>
211 <filter string="State" name="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}" />
212 <separator orientation="vertical"/>
213 <filter string="Launch Date" name="Launch Date" icon="terp-go-month" context="{'group_by':'date_run'}" />
219 <record model="ir.actions.act_window" id="action_marketing_campaign_segment_form">
220 <field name="name">Segments</field>
221 <field name="type">ir.actions.act_window</field>
222 <field name="res_model">marketing.campaign.segment</field>
223 <field name="view_type">form</field>
224 <field name="view_mode">tree,form</field>
225 <field name="view_id" ref="view_marketing_campaign_segment_tree"/>
226 <field name="search_view_id" ref="view_marketing_campaign_segment_search"/>
227 <field name="context">{'group_by': [], 'search_default_running': 1}</field>
230 <menuitem id="menu_marketing_campaign_segment_form" parent="menu_marketing_campaign" action="action_marketing_campaign_segment_form" sequence="20" />
233 ======================
235 ======================
237 these views are not intended to be used outside the campaign context.
240 <record model="ir.ui.view" id="view_marketing_campaign_activity_form">
241 <field name="name">marketing.campaign.activity.form</field>
242 <field name="model">marketing.campaign.activity</field>
243 <field name="type">form</field>
244 <field name="arch" type="xml">
245 <form string="Activities">
246 <group colspan="2" col="2">
247 <separator string="Activity" colspan="2"/>
248 <field name="name" select="1"/>
249 <field name="signal" groups="base.group_extended"/>
250 <field name="start"/>
251 <field name="object_id" invisible="1"/>
252 <field name="campaign_id" invisible="1"/>
254 <group colspan="2" col="2">
255 <separator string="Cost / Revenue" colspan="2"/>
256 <field name="variable_cost"/>
257 <field name="revenue"/>
260 <group colspan="4" col="4">
261 <separator string="Condition" colspan="4"/>
262 <field name="condition" widget="char" colspan="4"/>
263 <field name="keep_if_condition_not_met"/>
265 <group colspan="4" col="4">
266 <separator string="Action" colspan="4"/>
268 <group colspan="2" col="2">
269 <field name="email_template_id" attrs="{'required':[('type','=','email')], 'invisible':[('type','!=','email')]}"
270 context="{'default_model_id':object_id}" />
271 <field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]" />
272 <group attrs="{ 'invisible':[('type','!=','report')]}">
273 <field name="report_id" attrs="{'required':[('type','=','report')]}" context="{'object_id':object_id}" />
274 <field name="report_directory_id" attrs="{'required':[('type','=','report')]}" />
278 <separator string="Transitions" colspan="4"/>
279 <field name="from_ids" nolabel="1" mode="tree,form" context="{'default_activity_to_id': active_id}" colspan="2">
280 <tree string="Incoming Transitions" editable="bottom">
281 <field name="activity_from_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
282 <field name='trigger'/>
283 <field name="interval_nbr"/>
284 <field name="interval_type"/>
286 <form string="Incoming Transitions">
287 <field name="activity_from_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
288 <field name='trigger'/>
289 <field name="interval_nbr"/>
290 <field name="interval_type"/>
293 <field name="to_ids" nolabel="1" mode="tree,form" context="{'default_activity_from_id': active_id}" colspan="2">
294 <tree string="Outgoing Transitions" editable="bottom">
295 <field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
296 <field name='trigger'/>
297 <field name="interval_nbr"/>
298 <field name="interval_type"/>
300 <form string="Outgoing Transitions">
301 <field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
302 <field name='trigger'/>
303 <field name="interval_nbr"/>
304 <field name="interval_type"/>
311 <record model="ir.ui.view" id="view_marketing_campaign_activity_tree">
312 <field name="name">marketing.campaign.activity.tree</field>
313 <field name="model">marketing.campaign.activity</field>
314 <field name="type">tree</field>
315 <field name="arch" type="xml">
316 <tree string="Activities">
317 <field name="name" select="1"/>
318 <field name="condition"/>
320 <field name="start"/>
327 ======================
329 ======================
332 <record model="ir.ui.view" id="view_marketing_campaign_workitem_tree">
333 <field name="name">marketing.campaign.workitem.tree</field>
334 <field name="model">marketing.campaign.workitem</field>
335 <field name="type">tree</field>
336 <field name="arch" type="xml">
337 <tree colors="red:state == 'exception';black:state == 'todo';gray:state == 'cancelled'" string="Marketing Campaign Activities">
338 <field name="campaign_id"/>
339 <field name="segment_id"/>
340 <field name="activity_id" />
341 <field name="object_id" invisible="1"/>
342 <field name="res_id" invisible="1"/>
343 <field name="res_name" />
344 <field name="partner_id"/>
346 <field name="state"/>
347 <button string="Cancel" states="todo" name="button_cancel" type="object" icon="terp-gtk-stop"/>
348 <button string="Preview" states="todo" name="preview" icon="gtk-zoom-fit" type="object"/>
349 <button string="Process" states="todo" name="process" type="object" icon="terp-gtk-go-back-rtl"/>
354 <record model="ir.ui.view" id="view_marketing_campaign_workitem_form">
355 <field name="name">marketing.campaign.workitem.form</field>
356 <field name="model">marketing.campaign.workitem</field>
357 <field name="type">form</field>
358 <field name="arch" type="xml">
359 <form string="Marketing Campaign Activities">
360 <group colspan="4" col="6">
361 <group colspan="2" col="2">
362 <separator string="Campaign Step" colspan="2"/>
363 <field name="campaign_id" select="1"/>
364 <field name="segment_id" select="1"/>
365 <field name="activity_id" context="{'segment_id':segment_id}" select="1"/>
366 </group><group colspan="2" col="2">
367 <separator string="Related Resource" colspan="2"/>
368 <field name="object_id" readonly="True"/>
369 <field name="res_name"/>
370 <field name="res_id"/>
371 <field name="partner_id" select="1"/>
372 </group><group colspan="2" col="2">
373 <separator string="Date" colspan="2"/>
375 <label string="" colspan="1"/>
376 <button string="Preview" states="todo" name="preview" icon="gtk-zoom-fit" type="object"/>
379 <group colspan="4" col="4" attrs="{'invisible':[('state','!=','exception')]}">
380 <separator string="Error Message" colspan="4"/>
381 <field name="error_msg" nolabel="1" colspan="4"/>
383 <separator string="" colspan="4"/>
384 <group colspan="4" col="11">
385 <field name="state" readonly="True" widget="statusbar" statusbar_visible="todo,done" statusbar_colors='{"exception":"red"}'/>
386 <button string="Cancel" states="todo,exception" name="button_cancel" type="object" icon="terp-gtk-stop"/>
387 <button string="Reset" states="exception,cancelled" name="button_draft" type="object" icon="gtk-undo"/>
388 <button string="Process" states="todo" name="process" type="object" icon="terp-gtk-go-back-rtl"/>
394 <record id="view_marketing_campaign_workitem_search" model="ir.ui.view">
395 <field name="name">marketing.campaign.workitem.search</field>
396 <field name="model">marketing.campaign.workitem</field>
397 <field name="type">search</field>
398 <field name="arch" type="xml">
399 <search string="Marketing Campaign Activities">
401 <filter icon="terp-go-today" string="Today" name="today" domain="[('date','<', time.strftime('%%Y-%%m-%%d 23:59:59')), ('date','>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]"/>
402 <filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','todo')]"/>
403 <filter icon="terp-emblem-important" string="Exception" domain="[('state','=','exception')]"/>
404 <separator orientation="vertical"/>
405 <field name="campaign_id"/>
406 <field name="segment_id"/>
409 <field name="object_id"/>
410 <field name="res_name"/>
411 <field name="res_id"/>
412 <field name="partner_id"/>
415 <group expand="0" string="Group By...">
416 <filter string="Campaign" name="campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}" />
417 <filter string="Segment" name="segment" icon="terp-stock_symbol-selection" context="{'group_by':'segment_id'}" />
418 <filter string="Activity" name="activity" icon="terp-stock_align_left_24" context="{'group_by':'activity_id'}" />
419 <separator orientation="vertical"/>
420 <filter string="Resource" name="resource" icon="terp-accessories-archiver" context="{'group_by':'object_id'}" />
421 <filter string="Resource ID" name="res_id" icon="terp-accessories-archiver" context="{'group_by':'res_id'}" />
422 <separator orientation="vertical"/>
423 <filter string="State" name="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}" />
424 <separator orientation="vertical"/>
425 <filter string="Execution Date" name="Date" icon="terp-go-month" context="{'group_by':'date'}" />
431 <record model="ir.actions.act_window" id="action_marketing_campaign_workitem">
432 <field name="name">Campaign Followup</field>
433 <field name="type">ir.actions.act_window</field>
434 <field name="res_model">marketing.campaign.workitem</field>
435 <field name="view_type">form</field>
436 <field name="view_mode">tree,form</field>
437 <field name="view_id" ref="view_marketing_campaign_workitem_tree"/>
438 <field name="search_view_id" ref="view_marketing_campaign_workitem_search"/>
439 <field name="context">{'group_by': [], 'search_default_todo': 1, 'search_default_today': 1}</field>
442 <menuitem id="menu_action_marketing_campaign_workitem" parent="menu_marketing_campaign" action="action_marketing_campaign_workitem" sequence="30"/>
444 <act_window name="All Segments"
445 res_model="marketing.campaign.segment"
446 src_model="marketing.campaign"
448 view_mode="tree,form"
449 id="act_marketing_campaing_segment_opened"
450 context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
453 <!-- Campaign Followups -->
455 context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
456 id="act_marketing_campaing_followup"
457 name="Campaign Follow-up" res_model="marketing.campaign.workitem"
458 src_model="marketing.campaign" view_mode="tree,form"
461 <!-- Campaign Statistics -->
463 context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
464 id="act_marketing_campaing_stat"
465 name="Campaign Statistics" res_model="campaign.analysis"
466 src_model="marketing.campaign" view_mode="tree,form"