[MRG] merge with lp:openobject-addons
authorTurkesh Patel (Open ERP) <tpa@tinyerp.com>
Fri, 11 Oct 2013 06:12:03 +0000 (11:42 +0530)
committerTurkesh Patel (Open ERP) <tpa@tinyerp.com>
Fri, 11 Oct 2013 06:12:03 +0000 (11:42 +0530)
bzr revid: tpa@tinyerp.com-20131011061203-z13xuqw5fzznr6qc

1  2 
addons/crm/crm.py
addons/sale_crm/sale_crm.py
addons/sale_crm/sale_crm_view.xml

@@@ -151,20 -136,15 +152,22 @@@ class crm_case_section(osv.osv)
          obj = self.pool.get('crm.lead')
          res = dict.fromkeys(ids, False)
          month_begin = date.today().replace(day=1)
-         groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+         date_begin = month_begin - relativedelta.relativedelta(months=self._period_number - 1)
+         date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1])
+         date_domain = [('create_date', '>=', date_begin.strftime(tools.DEFAULT_SERVER_DATE_FORMAT)), ('create_date', '<=', date_end.strftime(tools.DEFAULT_SERVER_DATE_FORMAT))]
          for id in ids:
              res[id] = dict()
-             lead_domain = [('type', '=', 'lead'), ('section_id', '=', id), ('create_date', '>=', groupby_begin)]
+             lead_domain = date_domain + [('type', '=', 'lead'), ('section_id', '=', id)]
 -            res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context)
 +            res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], type="Lead", context=context)
-             opp_domain = [('type', '=', 'opportunity'), ('section_id', '=', id), ('create_date', '>=', groupby_begin)]
+             opp_domain = date_domain + [('type', '=', 'opportunity'), ('section_id', '=', id)]
 -            res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date'], 'planned_revenue', 'create_date', context=context)
 +            res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date', 'company_id'], 'planned_revenue', ['create_date', 'company_id'], context=context)
 +        return res
 +
 +    def _get_currency_symbol(self, cr, uid, ids, name, arg, context=None):
 +        """Set currency symbole of company currency"""
 +        res = {}
 +        user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
 +        res = dict.fromkeys(ids, user.company_id.currency_id.symbol)
          return res
  
      _columns = {
@@@ -48,49 -49,29 +49,51 @@@ class crm_case_section(osv.osv)
          obj = self.pool.get('sale.order')
          res = dict.fromkeys(ids, False)
          month_begin = date.today().replace(day=1)
-         groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+         date_begin = (month_begin - relativedelta.relativedelta(months=self._period_number - 1)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+         date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
          for id in ids:
              res[id] = dict()
-             created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', groupby_begin)]
+             created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)]
 -            res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context)
 +            res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order', 'pricelist_id'], 'amount_total', ['date_order', 'pricelist_id'], context=context)
-             validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', groupby_begin)]
+             validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', date_begin), ('date_order', '<=', date_end)]
 -            res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm'], 'amount_total', 'date_confirm', context=context)
 +            res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm', 'pricelist_id'], 'amount_total', ['date_confirm', 'pricelist_id'], context=context)
          return res
  
      def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None):
          obj = self.pool.get('account.invoice.report')
          res = dict.fromkeys(ids, False)
          month_begin = date.today().replace(day=1)
-         groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+         date_begin = (month_begin - relativedelta.relativedelta(months=self._period_number - 1)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
+         date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
          for id in ids:
-             created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', groupby_begin)]
+             created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', date_begin), ('date', '<=', date_end)]
 -            res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context)
 +            res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date', 'currency_id'], 'price_total', ['date', 'currency_id'], context=context)
          return res
  
 +    def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None):
 +        """Compute the amounts in the currency of the user """
 +        res = {}
 +        currency_obj = self.pool.get('res.currency')
 +        user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id
 +        for item in self.browse(cr, uid, ids, context=context):
 +            base_currency_id = item.user_id.company_id.currency_id.id if item.user_id else item.create_uid.company_id.currency_id.id
 +            res[item.id] = {
 +                'user_currency_invoiced_forecast': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.invoiced_forecast, context=context),
 +                'user_currency_invoiced_target': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.invoiced_target, context=context),
 +            }
 +        return res
 +
 +    def _set_forecast_target(self, cr, uid, team_id, name, value, arg, context=None):
 +        user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id
 +        team = self.browse(cr, uid, team_id, context=context)
 +        base_currency_id = team.user_id.company_id.currency_id.id if team.user_id else team.create_uid.company_id.currency_id.id
 +        amount  = self.pool.get('res.currency').compute(cr, uid, user_currency_id, base_currency_id, value, context=context)
 +        self.write(cr, uid, [team_id], {name.strip("user_currency"): amount}, context=context)
 +        return True
 +
      _columns = {
 -        'invoiced_forecast': fields.integer(string='Invoice Forecast',
 +        'invoiced_forecast': fields.integer("Invoice Forecast"),
 +        'user_currency_invoiced_forecast': fields.function(_compute_amounts_in_user_currency, fnct_inv=_set_forecast_target, string='Invoice Forecast',type='integer', multi="_compute_amounts",
              help="Forecast of the invoice revenue for the current month. This is the amount the sales \n"
                      "team should invoice this month. It is used to compute the progression ratio \n"
                      " of the current and forecast revenue on the kanban view."),
                      </div>
                  </xpath>
                  <xpath expr="//div[@class='oe_salesteams_opportunities']" position="after">
-                     <div class="oe_salesteams_invoices">
-                         <a name="%(action_invoice_salesteams)d" type="action" groups="account.group_account_invoice">Invoices</a>
+                     <div class="oe_salesteams_invoices" groups="account.group_account_invoice">
+                         <a name="%(action_invoice_salesteams)d" type="action">Invoices</a>
 -                        <a name="%(account.action_account_invoice_report_all)d" type="action" class="oe_sparkline_bar_link">
 -                            <field name="monthly_invoiced" widget="sparkline_bar">
 +                        <a name="%(action_account_invoice_report_salesteam)d" type="action" class="oe_sparkline_bar_link">
 +                            <field name="monthly_invoiced" widget="sparkline_bar_sales" options="{'delayIn': '3000'}">
                                  Revenue of sent invoices per month.<br/>Click to see a detailed analysis of invoices.
                              </field>
                          </a>