[WIP] wip
[odoo/odoo.git] / addons / marketing_campaign / marketing_campaign_view.xml
1 <?xml version="1.0"?>
2 <openerp>
3     <data>
4
5     <menuitem name="Configuration" id="menu_marketing_configuration" parent="base.marketing_menu" sequence="1"/>
6
7     <!--
8     ======================
9     Marketing Campaign
10     ======================
11     -->
12     <act_window name="All Segments"
13         res_model="marketing.campaign.segment"
14         src_model="marketing.campaign"
15         view_type="form"
16         view_mode="tree,form"
17         id="act_marketing_campaing_segment_opened"
18         context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
19     />
20
21     <!-- Campaign Followups -->
22     <act_window
23         context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
24         id="act_marketing_campaing_followup"
25         name="Campaign Follow-up" res_model="marketing.campaign.workitem"
26         src_model="marketing.campaign" view_mode="tree,form"
27         view_type="form" />
28
29     <record model="ir.ui.view" id="view_marketing_campaign_form">
30         <field name="name">marketing.campaign.form</field>
31         <field name="model">marketing.campaign</field>
32         <field name="type">form</field>
33         <field name="arch" type="xml">
34             <form version="7.0">
35             <header>
36                 <button name="state_running_set" string="Run" states="draft" class="oe_highlight"/>
37                 <button name="state_done_set" string="Done" states="running" class="oe_highlight"/>
38                 <button name="state_draft_set" string="Set to Draft" states="done,cancelled"/>
39                 <button name="state_cancel_set" string="Cancel" states="running"/>
40                 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
41             </header>
42             <sheet string="Campaign">
43                 <div class="oe_right oe_button_box" name="button_box">
44                         <button type="action"
45                         name="%(act_marketing_campaing_followup)d"
46                         string="Follow-Up" />
47                         <button type="action"
48                         name="%(act_marketing_campaing_segment_opened)d"
49                         string="Segments" />
50                 </div>
51                 <div class="oe_title">
52                     <label for="name" class="oe_edit_only"/>
53                     <h1><field name="name" class="oe_inline"/></h1>
54                 </div>
55                 <group>
56                     <group>
57                         <field name="mode"/>
58                         <field name="fixed_cost"/>
59                     </group>
60                     <group>
61                         <field name="object_id"/>
62                         <field name="partner_field_id"/>
63                         <field name="unique_field_id"/>
64                     </group>     
65                 </group>
66                 <separator string="Activities"/>
67                 <field name="activity_ids" context="{'default_object_id': object_id, 'default_campaign_id': active_id}" />
68             </sheet>
69             </form>
70         </field>
71     </record>
72
73     <record model="ir.ui.view" id="view_marketing_campaign_tree">
74         <field name="name">marketing.campaign.tree</field>
75         <field name="model">marketing.campaign</field>
76         <field name="type">tree</field>
77         <field name="arch" type="xml">
78             <tree colors="blue:state == 'draft';black:state == 'running';gray:state in ('done','cancelled')" string="Campaigns">
79                 <field name="name"/>
80                 <field name="object_id"/>
81                 <field name="mode"/>
82                 <field name="fixed_cost"/>
83                 <field name="state"/>
84             </tree>
85         </field>
86     </record>
87
88     <record id="view_marketing_campaign_diagram" model="ir.ui.view">
89         <field name="name">marketing.campaign.diagram</field>
90         <field name="model">marketing.campaign</field>
91         <field name="type">diagram</field>
92         <field name="arch" type="xml">
93             <diagram string="Campaign Editor">
94                 <node object="marketing.campaign.activity" shape="rectangle:type=='subcampaign'" bgcolor="gray:start==True">
95                     <field name="name"/>
96                     <field name="type"/>
97                     <field name="start" invisible="1"/>
98                     <field name="condition" widget="char"/>
99                 </node>
100                 <arrow object="marketing.campaign.transition" source="activity_from_id" destination="activity_to_id" label="['name']">
101                     <field name="activity_from_id"/>
102                     <field name="activity_to_id"/>
103                     <field name="interval_nbr"/>
104                     <field name="interval_type"/>
105                 </arrow>
106             </diagram>
107         </field>
108     </record>
109
110     <record id="view_marketing_campaign_search" model="ir.ui.view">
111         <field name="name">marketing.campaign.search</field>
112         <field name="model">marketing.campaign</field>
113         <field name="type">search</field>
114         <field name="arch" type="xml">
115             <search string="Campaigns">
116                 <field name="name" string="Campaign"/>
117                 <separator orientation="vertical"/>
118                 <filter icon="terp-document-new" string="Draft" name="draft" domain="[('state','=','draft')]"/>
119                 <filter icon="terp-check" string="Running" domain="[('state','=','running')]"/>
120                 <filter icon="terp-gtk-jump-to-rtl" string="Test Mode" name="test" domain="[('mode','=','test')]"/>
121                 <filter icon="terp-gtk-jump-to-rtl" string="Manual Mode" domain="[('mode','=','manual')]"/>
122                 <separator orientation="vertical"/>
123                 <field name="object_id" string="Resource"/>
124                 <newline/>
125                 <group expand="0" string="Group By...">
126                     <filter string="Resource" name="Object" icon="terp-accessories-archiver" context="{'group_by':'object_id'}"/>
127                     <separator orientation="vertical"/>
128                     <filter string="Mode" name="Mode" icon="terp-gtk-jump-to-rtl" context="{'group_by':'mode'}"/>
129                     <separator orientation="vertical"/>
130                     <filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
131                 </group>
132             </search>
133         </field>
134     </record>
135
136     <record model="ir.actions.act_window" id="action_marketing_campaign_form">
137         <field name="name">Campaigns</field>
138         <field name="type">ir.actions.act_window</field>
139         <field name="res_model">marketing.campaign</field>
140         <field name="view_type">form</field>
141         <field name="view_mode">tree,form,diagram</field>
142         <field name="view_id" ref="view_marketing_campaign_tree"/>
143         <field name="context">{'group_by': []}</field>
144         <field name="search_view_id" ref="view_marketing_campaign_search"/>
145         <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>
146     </record>
147
148     <menuitem name="Campaigns" id="menu_marketing_campaign" parent="base.marketing_menu"/>
149     <menuitem id="menu_marketing_campaign_form" parent="menu_marketing_campaign" action="action_marketing_campaign_form" sequence="30" />
150
151     <!--
152     ======================
153     Marketing Segments
154     ======================
155     -->
156
157     <record model="ir.ui.view" id="view_marketing_campaign_segment_form">
158         <field name="name">marketing.campaign.segment.form</field>
159         <field name="model">marketing.campaign.segment</field>
160         <field name="type">form</field>
161         <field name="arch" type="xml">
162             <form version="7.0">
163             <header>
164                 <button name="state_running_set" string="Run" states="draft" class="oe_highlight"/>
165                 <button name="state_done_set" string="Close" states="running" class="oe_highlight"/>
166                 <button name="state_draft_set" string="Set to Draft" states="done,cancelled"/>
167                 <button name="state_cancel_set" string="Cancel" states="running"/>
168                 <field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
169             </header>
170             <sheet string="Segments" >
171                 <group>
172                     <group>
173                         <field name="name"/>
174                         <field name="campaign_id" on_change="onchange_campaign_id(campaign_id)"/>
175                         <field name="object_id" invisible="1"/>
176                         <field name="sync_mode" required="True"/>
177                        <label for="sync_last_date"/>
178                        <div>
179                            <field name="sync_last_date" class="oe_inline"/>
180                            <button string="Synchronize Manually" states="running" name="synchroniz" type="object"/>
181                        </div>
182                        <field name="date_next_sync"/>
183                     </group>
184                     <group>
185                         <field name="ir_filter_id"/>
186                         <field name="date_run" readonly="1"/>
187                         <field name="date_done" readonly="1"/>
188                     </group>
189                 </group>
190             </sheet>
191             </form>
192         </field>
193     </record>
194
195     <record model="ir.ui.view" id="view_marketing_campaign_segment_tree">
196         <field name="name">marketing.campaign.segment.tree</field>
197         <field name="model">marketing.campaign.segment</field>
198         <field name="type">tree</field>
199         <field name="arch" type="xml">
200             <tree colors="blue:state == 'draft';black:state == 'running';gray:state in ('done','cancelled')" string="Segments">
201                 <field name="name"/>
202                 <field name="campaign_id"/>
203                 <field name="date_run"/>
204                 <field name="sync_last_date"/>
205                 <field name="state" />
206             </tree>
207         </field>
208     </record>
209
210     <record id="view_marketing_campaign_segment_search" model="ir.ui.view">
211         <field name="name">marketing.campaign.segment.search</field>
212         <field name="model">marketing.campaign.segment</field>
213         <field name="type">search</field>
214         <field name="arch" type="xml">
215             <search string="Segments">
216                 <field name="name" string="Segment"/>
217                 <separator orientation="vertical"/>
218                 <field name="date_run"/>
219                 <separator orientation="vertical"/>
220                 <filter icon="terp-check" string="Running" name="running" domain="[('state','=','running')]"/>
221                 <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]"/>
222                 <filter icon="terp-gtk-jump-to-ltr" string="Newly Created" help="Sync mode: only records created after last sync" domain="[('sync_mode','=','create_date')]"/>
223                 <filter icon="terp-stock_effects-object-colorize" string="Newly Modified" help="Sync mode: only records updated after last sync" domain="[('sync_mode','=','write_date')]"/>
224                 <filter icon="terp-emblem-documents" string="All" help="Sync mode: all records" domain="[('sync_mode','=','all')]"/>
225                 <separator orientation="vertical"/>
226                 <field name="campaign_id"/>
227                 <field name="object_id"/>
228                 <newline/>
229                 <group expand="0" string="Group By...">
230                     <filter string="Campaign" name="Campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}"/>
231                     <separator orientation="vertical"/>
232                     <filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
233                     <separator orientation="vertical"/>
234                     <filter string="Launch Date" name="Launch Date" icon="terp-go-month" context="{'group_by':'date_run'}"/>
235                 </group>
236             </search>
237         </field>
238     </record>
239
240     <record model="ir.actions.act_window" id="action_marketing_campaign_segment_form">
241         <field name="name">Segments</field>
242         <field name="type">ir.actions.act_window</field>
243         <field name="res_model">marketing.campaign.segment</field>
244         <field name="view_type">form</field>
245         <field name="view_mode">tree,form</field>
246         <field name="view_id" ref="view_marketing_campaign_segment_tree"/>
247         <field name="search_view_id" ref="view_marketing_campaign_segment_search"/>
248         <field name="context">{'group_by': []}</field>
249     </record>
250
251     <menuitem id="menu_marketing_campaign_segment_form" parent="menu_marketing_campaign" action="action_marketing_campaign_segment_form" sequence="20" />
252
253     <!--
254     ======================
255     Marketing Activities
256     ======================
257
258     these views are not intended to be used outside the campaign context.
259     -->
260
261     <record model="ir.ui.view" id="view_marketing_campaign_activity_form">
262         <field name="name">marketing.campaign.activity.form</field>
263         <field name="model">marketing.campaign.activity</field>
264         <field name="type">form</field>
265         <field name="arch" type="xml">
266             <form string="Activities" version="7.0">
267                 <group>
268                     <group>
269                         <field name="name"/>
270                         <field name="signal" groups="base.group_no_one"/>
271                         <field name="start"/>
272                         <field name="object_id" invisible="1"/>
273                         <field name="campaign_id" invisible="1"/>
274                     </group>
275                     <group>
276                         <field name="variable_cost"/>
277                         <field name="revenue"/>
278                     </group>
279                 </group>
280                 <group >
281                     <group>
282                         <field name="condition" widget="char"/>
283                         <field name="keep_if_condition_not_met"/>
284                     </group>
285                     <group>
286                         <field name="type"/>
287                         <field name="email_template_id" attrs="{'required':[('type','=','email')], 'invisible':[('type','!=','email')]}"
288                            context="{'default_model_id':object_id}" />
289                         <field name="server_action_id" attrs="{'required':[('type','=','action')],'invisible':[('type','!=','action')]}" domain="[('model_id','=',object_id)]"/>
290                         <field name="report_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}" context="{'object_id':object_id}"/>
291                         <field name="report_directory_id" attrs="{'required':[('type','=','report')],'invisible':[('type','!=','report')]}"/>
292                     </group>
293                 </group>
294                 <separator string="Previous Activities"/>
295                 <field name="from_ids" mode="tree" context="{'default_activity_to_id': active_id}">
296                     <tree string="Incoming Transitions" editable="bottom">
297                         <field name="activity_from_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
298                         <field name='trigger'/>
299                         <field name="interval_nbr"/>
300                         <field name="interval_type"/>
301                     </tree>
302                     <form string="Incoming Transitions" version="7.0">
303                         <group col="4">
304                             <field name="activity_from_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
305                             <field name='trigger'/>
306                             <field name="interval_nbr"/>
307                             <field name="interval_type"/>
308                         </group>
309                     </form>
310                 </field>
311                 <separator string="Next Activities"/>
312                 <field name="to_ids" mode="tree" context="{'default_activity_from_id': active_id}">
313                     <tree string="Outgoing Transitions" editable="bottom">
314                         <field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
315                         <field name='trigger'/>
316                         <field name="interval_nbr"/>
317                         <field name="interval_type"/>
318                     </tree>
319                     <form string="Outgoing Transitions" version="7.0">
320                         <group col="4">
321                             <field name="activity_to_id" domain="[('campaign_id', '=', parent.campaign_id)]"/>
322                             <field name='trigger'/>
323                             <field name="interval_nbr"/>
324                             <field name="interval_type"/>
325                         </group>
326                     </form>
327                 </field>
328             </form>
329         </field>
330     </record>
331
332     <record model="ir.ui.view" id="view_marketing_campaign_activity_tree">
333         <field name="name">marketing.campaign.activity.tree</field>
334         <field name="model">marketing.campaign.activity</field>
335         <field name="type">tree</field>
336         <field name="arch" type="xml">
337             <tree string="Activities">
338                 <field name="name"/>
339                 <field name="condition"/>
340                 <field name="type"/>
341                 <field name="start"/>
342             </tree>
343         </field>
344     </record>
345
346
347     <!--
348     ======================
349     Marketing Workitems
350     ======================
351     -->
352
353     <record model="ir.ui.view" id="view_marketing_campaign_workitem_tree">
354         <field name="name">marketing.campaign.workitem.tree</field>
355         <field name="model">marketing.campaign.workitem</field>
356         <field name="type">tree</field>
357         <field name="arch" type="xml">
358             <tree colors="red:state == 'exception';black:state == 'todo';gray:state == 'cancelled'" string="Marketing Campaign Activities">
359                 <field name="campaign_id"/>
360                 <field name="segment_id"/>
361                 <field name="activity_id" />
362                 <field name="object_id" invisible="1"/>
363                 <field name="res_id" invisible="1"/>
364                 <field name="res_name" />
365                 <field name="partner_id"/>
366                 <field name="date"/>
367                 <field name="state"/>
368                 <button string="Cancel" states="todo" name="button_cancel" type="object" icon="terp-gtk-stop"/>
369                 <button string="Preview" states="todo" name="preview" icon="gtk-zoom-fit" type="object"/>
370                 <button string="Process" states="todo" name="process" type="object" icon="terp-gtk-go-back-rtl"/>
371             </tree>
372         </field>
373     </record>
374
375     <record model="ir.ui.view" id="view_marketing_campaign_workitem_form">
376         <field name="name">marketing.campaign.workitem.form</field>
377         <field name="model">marketing.campaign.workitem</field>
378         <field name="type">form</field>
379         <field name="arch" type="xml">
380             <form string="Marketing Campaign Activities" version="7.0">
381             <header>
382                 <button string="Process" states="todo" name="process" type="object"/>
383                 <button string="Reset" states="exception,cancelled" name="button_draft" type="object"/>
384                 <button string="Cancel" states="todo,exception" name="button_cancel" type="object"/>
385                 <field name="state" readonly="True" widget="statusbar" statusbar_visible="todo,done" statusbar_colors='{"exception":"red"}'/>
386                 <button string="Preview" states="todo" name="preview" icon="gtk-zoom-fit" type="object"/>
387             </header>
388             <sheet>
389                 <group>
390                     <group>
391                         <field name="campaign_id"/>
392                         <field name="segment_id"/>
393                         <field name="activity_id" context="{'segment_id':segment_id}"/>
394                         <field name="date"/>
395                     </group>
396                     <group>
397                         <field name="object_id" readonly="True"/>
398                         <field name="res_name"/>
399                         <field name="res_id"/>
400                         <field name="partner_id"/>
401                     </group>
402                 </group>
403                 <group attrs="{'invisible':[('state','!=','exception')]}" string="Error Message">
404                     <field name="error_msg" nolabel="1" colspan="2"/>
405                 </group>
406             </sheet>
407             </form>
408         </field>
409     </record>
410
411     <record id="view_marketing_campaign_workitem_search" model="ir.ui.view">
412         <field name="name">marketing.campaign.workitem.search</field>
413         <field name="model">marketing.campaign.workitem</field>
414         <field name="type">search</field>
415         <field name="arch" type="xml">
416             <search string="Marketing Campaign Activities">
417                 <group>
418                     <field name="res_name" string="Marketing Campaign Activity"/>
419                     <separator orientation="vertical"/>
420                     <field name="date"/>
421                     <separator orientation="vertical"/>
422                     <filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','todo')]"/>
423                     <filter icon="terp-emblem-important" string="Exception" domain="[('state','=','exception')]"/>
424                     <separator orientation="vertical"/>
425                     <field name="campaign_id"/>
426                     <field name="segment_id"/>
427                     <field name="object_id"/>
428                     <field name="partner_id"/>
429                     <field name="res_id"/>
430                 </group>
431                 <newline/>
432                 <group expand="0" string="Group By...">
433                     <filter string="Campaign" name="campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}"/>
434                     <filter string="Segment" name="segment" icon="terp-stock_symbol-selection" context="{'group_by':'segment_id'}"/>
435                     <filter string="Activity" name="activity" icon="terp-stock_align_left_24" context="{'group_by':'activity_id'}"/>
436                     <separator orientation="vertical"/>
437                     <filter string="Resource" name="resource" icon="terp-accessories-archiver" context="{'group_by':'object_id'}"/>
438                     <filter string="Resource ID" name="res_id" icon="terp-accessories-archiver" context="{'group_by':'res_id'}"/>
439                     <separator orientation="vertical"/>
440                     <filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
441                     <separator orientation="vertical"/>
442                     <filter string="Execution Date" name="Date" icon="terp-go-month" context="{'group_by':'date'}"/>
443                 </group>
444             </search>
445         </field>
446     </record>
447
448     <record model="ir.actions.act_window" id="action_marketing_campaign_workitem">
449         <field name="name">Campaign Follow-up</field>
450         <field name="type">ir.actions.act_window</field>
451         <field name="res_model">marketing.campaign.workitem</field>
452         <field name="view_type">form</field>
453         <field name="view_mode">tree,form</field>
454         <field name="view_id" ref="view_marketing_campaign_workitem_tree"/>
455         <field name="search_view_id" ref="view_marketing_campaign_workitem_search"/>
456         <field name="context">{'group_by': []}</field>
457     </record>
458
459     <menuitem id="menu_action_marketing_campaign_workitem" parent="menu_marketing_campaign" action="action_marketing_campaign_workitem" sequence="10"/>
460
461     <act_window name="All Segments"
462         res_model="marketing.campaign.segment"
463         src_model="marketing.campaign"
464         view_type="form"
465         view_mode="tree,form"
466         id="act_marketing_campaing_segment_opened"
467         context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
468     />
469
470     <!-- Campaign Follow-ups -->
471     <act_window
472         context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
473         id="act_marketing_campaing_followup"
474         name="Campaign Follow-up" res_model="marketing.campaign.workitem"
475         src_model="marketing.campaign" view_mode="tree,form"
476         view_type="form" />
477
478     <!-- Campaign Statistics -->
479     <act_window
480         context="{'search_default_campaign_id': [active_id], 'default_campaign_id': active_id}"
481         id="act_marketing_campaing_stat"
482         name="Campaign Statistics" res_model="campaign.analysis"
483         src_model="marketing.campaign" view_mode="tree,form"
484         view_type="form" />
485
486     </data>
487 </openerp>