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">
20 <button name="state_running_set" string="Run" states="draft" class="oe_highlight"/>
21 <button name="state_done_set" string="Done" states="running" class="oe_highlight"/>
22 <button name="state_draft_set" string="Set to Draft" states="done,cancelled"/>
23 <button name="state_cancel_set" string="Cancel" states="running"/>
24 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
26 <sheet string="Campaign">
28 <group string="Campaign">
32 <group string="Resource">
33 <field name="object_id"/>
34 <field name="partner_field_id"/>
35 <field name="unique_field_id"/>
38 <field name="fixed_cost"/>
41 <field name="activity_ids" context="{'default_object_id': object_id, 'default_campaign_id': active_id}" />
47 <record model="ir.ui.view" id="view_marketing_campaign_tree">
48 <field name="name">marketing.campaign.tree</field>
49 <field name="model">marketing.campaign</field>
50 <field name="type">tree</field>
51 <field name="arch" type="xml">
52 <tree colors="blue:state == 'draft';black:state == 'running';gray:state in ('done','cancelled')" string="Campaigns">
54 <field name="object_id"/>
56 <field name="fixed_cost"/>
62 <record id="view_marketing_campaign_diagram" model="ir.ui.view">
63 <field name="name">marketing.campaign.diagram</field>
64 <field name="model">marketing.campaign</field>
65 <field name="type">diagram</field>
66 <field name="arch" type="xml">
67 <diagram string="Campaign Editor">
68 <node object="marketing.campaign.activity" shape="rectangle:type=='subcampaign'" bgcolor="gray:start==True">
71 <field name="start" invisible="1"/>
72 <field name="condition" widget="char"/>
74 <arrow object="marketing.campaign.transition" source="activity_from_id" destination="activity_to_id" label="['name']">
75 <field name="activity_from_id"/>
76 <field name="activity_to_id"/>
77 <field name="interval_nbr"/>
78 <field name="interval_type"/>
84 <record id="view_marketing_campaign_search" model="ir.ui.view">
85 <field name="name">marketing.campaign.search</field>
86 <field name="model">marketing.campaign</field>
87 <field name="type">search</field>
88 <field name="arch" type="xml">
89 <search string="Campaigns">
90 <field name="name" string="Campaign"/>
91 <separator orientation="vertical"/>
92 <filter icon="terp-document-new" string="Draft" name="draft" domain="[('state','=','draft')]"/>
93 <filter icon="terp-check" string="Running" domain="[('state','=','running')]"/>
94 <filter icon="terp-gtk-jump-to-rtl" string="Test Mode" name="test" domain="[('mode','=','test')]"/>
95 <filter icon="terp-gtk-jump-to-rtl" string="Manual Mode" domain="[('mode','=','manual')]"/>
96 <separator orientation="vertical"/>
97 <field name="object_id" string="Resource"/>
99 <group expand="0" string="Group By...">
100 <filter string="Resource" name="Object" icon="terp-accessories-archiver" context="{'group_by':'object_id'}"/>
101 <separator orientation="vertical"/>
102 <filter string="Mode" name="Mode" icon="terp-gtk-jump-to-rtl" context="{'group_by':'mode'}"/>
103 <separator orientation="vertical"/>
104 <filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
110 <record model="ir.actions.act_window" id="action_marketing_campaign_form">
111 <field name="name">Campaigns</field>
112 <field name="type">ir.actions.act_window</field>
113 <field name="res_model">marketing.campaign</field>
114 <field name="view_type">form</field>
115 <field name="view_mode">tree,form,diagram</field>
116 <field name="view_id" ref="view_marketing_campaign_tree"/>
117 <field name="context">{'group_by': []}</field>
118 <field name="search_view_id" ref="view_marketing_campaign_search"/>
119 <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>
122 <menuitem name="Campaigns" id="menu_marketing_campaign" parent="base.marketing_menu"/>
123 <menuitem id="menu_marketing_campaign_form" parent="menu_marketing_campaign" action="action_marketing_campaign_form" sequence="30" />
126 ======================
128 ======================
131 <record model="ir.ui.view" id="view_marketing_campaign_segment_form">
132 <field name="name">marketing.campaign.segment.form</field>
133 <field name="model">marketing.campaign.segment</field>
134 <field name="type">form</field>
135 <field name="arch" type="xml">
138 <button name="state_running_set" string="Run" states="draft" class="oe_highlight"/>
139 <button name="state_done_set" string="Close" states="running" class="oe_highlight"/>
140 <button name="state_draft_set" string="Set to Draft" states="done,cancelled"/>
141 <button name="state_cancel_set" string="Cancel" states="running"/>
142 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
144 <sheet string="Segments" >
146 <group string="Segment">
148 <field name="campaign_id" on_change="onchange_campaign_id(campaign_id)"/>
149 <field name="object_id" invisible="1"/>
151 <group string="Filter">
152 <field name="ir_filter_id"/>
154 <group string="Synchronization">
155 <field name="sync_mode" required="True"/>
156 <label for="sync_last_date"/>
158 <field name="sync_last_date" class="oe_inline"/>
159 <button string="Synchronize Manually" states="running" name="synchroniz" type="object"/>
161 <field name="date_next_sync"/>
163 <group string="History">
164 <field name="date_run" readonly="1"/>
165 <field name="date_done" readonly="1"/>
173 <record model="ir.ui.view" id="view_marketing_campaign_segment_tree">
174 <field name="name">marketing.campaign.segment.tree</field>
175 <field name="model">marketing.campaign.segment</field>
176 <field name="type">tree</field>
177 <field name="arch" type="xml">
178 <tree colors="blue:state == 'draft';black:state == 'running';gray:state in ('done','cancelled')" string="Segments">
180 <field name="campaign_id"/>
181 <field name="date_run"/>
182 <field name="sync_last_date"/>
183 <field name="state" />
188 <record id="view_marketing_campaign_segment_search" model="ir.ui.view">
189 <field name="name">marketing.campaign.segment.search</field>
190 <field name="model">marketing.campaign.segment</field>
191 <field name="type">search</field>
192 <field name="arch" type="xml">
193 <search string="Segments">
194 <field name="name" string="Segment"/>
195 <separator orientation="vertical"/>
196 <field name="date_run"/>
197 <separator orientation="vertical"/>
198 <filter icon="terp-check" string="Running" name="running" domain="[('state','=','running')]"/>
199 <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]"/>
200 <filter icon="terp-gtk-jump-to-ltr" string="Newly Created" help="Sync mode: only records created after last sync" domain="[('sync_mode','=','create_date')]"/>
201 <filter icon="terp-stock_effects-object-colorize" string="Newly Modified" help="Sync mode: only records updated after last sync" domain="[('sync_mode','=','write_date')]"/>
202 <filter icon="terp-emblem-documents" string="All" help="Sync mode: all records" domain="[('sync_mode','=','all')]"/>
203 <separator orientation="vertical"/>
204 <field name="campaign_id"/>
205 <field name="object_id"/>
207 <group expand="0" string="Group By...">
208 <filter string="Campaign" name="Campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}"/>
209 <separator orientation="vertical"/>
210 <filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
211 <separator orientation="vertical"/>
212 <filter string="Launch Date" name="Launch Date" icon="terp-go-month" context="{'group_by':'date_run'}"/>
218 <record model="ir.actions.act_window" id="action_marketing_campaign_segment_form">
219 <field name="name">Segments</field>
220 <field name="type">ir.actions.act_window</field>
221 <field name="res_model">marketing.campaign.segment</field>
222 <field name="view_type">form</field>
223 <field name="view_mode">tree,form</field>
224 <field name="view_id" ref="view_marketing_campaign_segment_tree"/>
225 <field name="search_view_id" ref="view_marketing_campaign_segment_search"/>
226 <field name="context">{'group_by': []}</field>
229 <menuitem id="menu_marketing_campaign_segment_form" parent="menu_marketing_campaign" action="action_marketing_campaign_segment_form" sequence="20" />
232 ======================
234 ======================
236 these views are not intended to be used outside the campaign context.
239 <record model="ir.ui.view" id="view_marketing_campaign_activity_form">
240 <field name="name">marketing.campaign.activity.form</field>
241 <field name="model">marketing.campaign.activity</field>
242 <field name="type">form</field>
243 <field name="arch" type="xml">
244 <form string="Activities" version="7.0">
246 <group string="Activity">
248 <field name="signal" groups="base.group_no_one"/>
249 <field name="start"/>
250 <field name="object_id" invisible="1"/>
251 <field name="campaign_id" invisible="1"/>
253 <group string="Cost / Revenue">
254 <field name="variable_cost"/>
255 <field name="revenue"/>
258 <group string="Condition" col="4">
259 <field name="condition" widget="char" colspan="4"/>
260 <field name="keep_if_condition_not_met"/>
263 <separator string="Action" colspan="4"/>
265 <field name="email_template_id" attrs="{'required':[('type','=','email')], 'invisible':[('type','!=','email')]}"
266 context="{'default_model_id':object_id}" />
267 <field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]"/>
268 <field name="report_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}" context="{'object_id':object_id}"/>
269 <field name="report_directory_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}"/>
271 <separator string="Transitions"/>
272 <field name="from_ids" mode="tree,form" context="{'default_activity_to_id': active_id}">
273 <tree string="Incoming Transitions" editable="bottom">
274 <field name="activity_from_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
275 <field name='trigger'/>
276 <field name="interval_nbr"/>
277 <field name="interval_type"/>
279 <form string="Incoming Transitions" version="7.0">
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"/>
288 <field name="to_ids" nolabel="1" mode="tree,form" context="{'default_activity_from_id': active_id}" colspan="2">
289 <tree string="Outgoing Transitions" editable="bottom">
290 <field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
291 <field name='trigger'/>
292 <field name="interval_nbr"/>
293 <field name="interval_type"/>
295 <form string="Outgoing Transitions" version="7.0">
297 <field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
298 <field name='trigger'/>
299 <field name="interval_nbr"/>
300 <field name="interval_type"/>
308 <record model="ir.ui.view" id="view_marketing_campaign_activity_tree">
309 <field name="name">marketing.campaign.activity.tree</field>
310 <field name="model">marketing.campaign.activity</field>
311 <field name="type">tree</field>
312 <field name="arch" type="xml">
313 <tree string="Activities">
315 <field name="condition"/>
317 <field name="start"/>
324 ======================
326 ======================
329 <record model="ir.ui.view" id="view_marketing_campaign_workitem_tree">
330 <field name="name">marketing.campaign.workitem.tree</field>
331 <field name="model">marketing.campaign.workitem</field>
332 <field name="type">tree</field>
333 <field name="arch" type="xml">
334 <tree colors="red:state == 'exception';black:state == 'todo';gray:state == 'cancelled'" string="Marketing Campaign Activities">
335 <field name="campaign_id"/>
336 <field name="segment_id"/>
337 <field name="activity_id" />
338 <field name="object_id" invisible="1"/>
339 <field name="res_id" invisible="1"/>
340 <field name="res_name" />
341 <field name="partner_id"/>
343 <field name="state"/>
344 <button string="Cancel" states="todo" name="button_cancel" type="object" icon="terp-gtk-stop"/>
345 <button string="Preview" states="todo" name="preview" icon="gtk-zoom-fit" type="object"/>
346 <button string="Process" states="todo" name="process" type="object" icon="terp-gtk-go-back-rtl"/>
351 <record model="ir.ui.view" id="view_marketing_campaign_workitem_form">
352 <field name="name">marketing.campaign.workitem.form</field>
353 <field name="model">marketing.campaign.workitem</field>
354 <field name="type">form</field>
355 <field name="arch" type="xml">
356 <form string="Marketing Campaign Activities" version="7.0">
358 <button string="Process" states="todo" name="process" type="object"/>
359 <button string="Reset" states="exception,cancelled" name="button_draft" type="object"/>
360 <button string="Cancel" states="todo,exception" name="button_cancel" type="object"/>
361 <field name="state" readonly="True" widget="statusbar" statusbar_visible="todo,done" statusbar_colors='{"exception":"red"}'/>
362 <button string="Preview" states="todo" name="preview" icon="gtk-zoom-fit" type="object"/>
366 <group string="Campaign Step">
367 <field name="campaign_id"/>
368 <field name="segment_id"/>
369 <field name="activity_id" context="{'segment_id':segment_id}"/>
371 </group><group string="Related Resource">
372 <field name="object_id" readonly="True"/>
373 <field name="res_name"/>
374 <field name="res_id"/>
375 <field name="partner_id"/>
378 <group attrs="{'invisible':[('state','!=','exception')]}" string="Error Message">
379 <field name="error_msg" nolabel="1" colspan="2"/>
386 <record id="view_marketing_campaign_workitem_search" model="ir.ui.view">
387 <field name="name">marketing.campaign.workitem.search</field>
388 <field name="model">marketing.campaign.workitem</field>
389 <field name="type">search</field>
390 <field name="arch" type="xml">
391 <search string="Marketing Campaign Activities">
393 <field name="res_name" string="Marketing Campaign Activity"/>
394 <separator orientation="vertical"/>
396 <separator orientation="vertical"/>
397 <filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','todo')]"/>
398 <filter icon="terp-emblem-important" string="Exception" domain="[('state','=','exception')]"/>
399 <separator orientation="vertical"/>
400 <field name="campaign_id"/>
401 <field name="segment_id"/>
402 <field name="object_id"/>
403 <field name="partner_id"/>
404 <field name="res_id"/>
407 <group expand="0" string="Group By...">
408 <filter string="Campaign" name="campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}"/>
409 <filter string="Segment" name="segment" icon="terp-stock_symbol-selection" context="{'group_by':'segment_id'}"/>
410 <filter string="Activity" name="activity" icon="terp-stock_align_left_24" context="{'group_by':'activity_id'}"/>
411 <separator orientation="vertical"/>
412 <filter string="Resource" name="resource" icon="terp-accessories-archiver" context="{'group_by':'object_id'}"/>
413 <filter string="Resource ID" name="res_id" icon="terp-accessories-archiver" context="{'group_by':'res_id'}"/>
414 <separator orientation="vertical"/>
415 <filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
416 <separator orientation="vertical"/>
417 <filter string="Execution Date" name="Date" icon="terp-go-month" context="{'group_by':'date'}"/>
423 <record model="ir.actions.act_window" id="action_marketing_campaign_workitem">
424 <field name="name">Campaign Follow-up</field>
425 <field name="type">ir.actions.act_window</field>
426 <field name="res_model">marketing.campaign.workitem</field>
427 <field name="view_type">form</field>
428 <field name="view_mode">tree,form</field>
429 <field name="view_id" ref="view_marketing_campaign_workitem_tree"/>
430 <field name="search_view_id" ref="view_marketing_campaign_workitem_search"/>
431 <field name="context">{'group_by': []}</field>
434 <menuitem id="menu_action_marketing_campaign_workitem" parent="menu_marketing_campaign" action="action_marketing_campaign_workitem" sequence="10"/>
436 <act_window name="All Segments"
437 res_model="marketing.campaign.segment"
438 src_model="marketing.campaign"
440 view_mode="tree,form"
441 id="act_marketing_campaing_segment_opened"
442 context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
445 <!-- Campaign Follow-ups -->
447 context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
448 id="act_marketing_campaing_followup"
449 name="Campaign Follow-up" res_model="marketing.campaign.workitem"
450 src_model="marketing.campaign" view_mode="tree,form"
453 <!-- Campaign Statistics -->
455 context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
456 id="act_marketing_campaing_stat"
457 name="Campaign Statistics" res_model="campaign.analysis"
458 src_model="marketing.campaign" view_mode="tree,form"