diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py index e434090ad76..142d059e1f9 100644 --- a/addons/marketing_campaign/marketing_campaign.py +++ b/addons/marketing_campaign/marketing_campaign.py @@ -85,6 +85,15 @@ translate_selections = { class marketing_campaign(osv.osv): _name = "marketing.campaign" _description = "Marketing Campaign" + + def _count_segments(self, cr, uid, ids, field_name, arg, context=None): + res = {} + try: + for segments in self.browse(cr, uid, ids, context=context): + res[segments.id] = len(segments.segment_ids) + except: + pass + return res _columns = { 'name': fields.char('Name', size=64, required=True), @@ -121,6 +130,8 @@ Normal - the campaign runs normally and automatically sends all emails and repor 'activity_ids': fields.one2many('marketing.campaign.activity', 'campaign_id', 'Activities'), 'fixed_cost': fields.float('Fixed Cost', help="Fixed cost for running this campaign. You may also specify variable cost and revenue on each campaign activity. Cost and Revenue statistics are included in Campaign Reporting.", digits_compute=dp.get_precision('Product Price')), + 'segment_ids': fields.one2many('marketing.campaign.segment', 'campaign_id', 'Segments', readonly=False), + 'segments_count': fields.function(_count_segments, type='integer', string='Segments') } _defaults = { diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml index 6503cc482ab..c5789dd68ba 100644 --- a/addons/marketing_campaign/marketing_campaign_view.xml +++ b/addons/marketing_campaign/marketing_campaign_view.xml @@ -64,12 +64,19 @@