diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py
index f4129998bcc..df2d43d3a53 100644
--- a/addons/base_action_rule/base_action_rule.py
+++ b/addons/base_action_rule/base_action_rule.py
@@ -310,6 +310,7 @@ class base_action_rule_line(osv.osv):
('create','Creation Date'),
('action_last','Last Action Date'),
('date','Date'),
+ ('deadline', 'Deadline'),
], 'Trigger Date', size=16),
'trg_date_range': fields.integer('Delay after trigger date',help="Delay After Trigger Date,\
specifies you can put a negative number " \
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index adfbf0ca772..30e1db744cc 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -620,7 +620,9 @@ class crm_case(osv.osv):
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.__history(cr, uid, cases, _('Close'))
- self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
+ self.write(cr, uid, ids, {'state': 'done',
+ 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'probability' : 100.0})
#
# We use the cache of cases to keep the old case state
#
@@ -681,7 +683,9 @@ class crm_case(osv.osv):
cases = self.browse(cr, uid, ids)
cases[0].state # to fill the browse record cache
self.__history(cr, uid, cases, _('Cancel'))
- self.write(cr, uid, ids, {'state': 'cancel', 'active': True})
+ self.write(cr, uid, ids, {'state': 'cancel',
+ 'active': True,
+ 'probability' : 0.0})
self._action(cr, uid, cases, 'cancel')
return True
@@ -764,7 +768,7 @@ class crm_case_history(osv.osv):
_columns = {
'description': fields.text('Description'),
'note': fields.function(_note_get, method=True, string="Description", type="text"),
- 'email_to': fields.char('Email TO', size=84),
+ 'email_to': fields.char('Email To', size=84),
'email_from' : fields.char('Email From', size=84),
'log_id': fields.many2one('crm.case.log','Log',ondelete='cascade'),
'message_id': fields.char('Message Id', size=1024, readonly=True, help="Message Id on Email Server.", select=True),
diff --git a/addons/crm/crm_mailgate.py b/addons/crm/crm_mailgate.py
index 7ffc6c26ec5..fdb3c397f7b 100644
--- a/addons/crm/crm_mailgate.py
+++ b/addons/crm/crm_mailgate.py
@@ -144,7 +144,7 @@ class crm_cases(osv.osv):
select = ids
for case in self.browse(cr, uid, select):
user_email = (case.user_id and case.user_id.address_id and case.user_id.address_id.email) or False
- res += [(user_email, case.email_from, case.email_cc, getattr(case,'priority') and case.priority or False)]
+ res += [(user_email, case.email_from, case.email_cc or False, getattr(case,'priority') and case.priority or False)]
if isinstance(ids, (str, int, long)):
return len(res) and res[0] or False
return res
diff --git a/addons/crm/crm_opportunity.py b/addons/crm/crm_opportunity.py
index 3a8605cbbbe..204890e348c 100644
--- a/addons/crm/crm_opportunity.py
+++ b/addons/crm/crm_opportunity.py
@@ -27,7 +27,7 @@ import time
import mx.DateTime
AVAILABLE_STATES = [
- ('draft','New'),
+ ('draft','Draft'),
('open','Open'),
('cancel', 'Lost'),
('done', 'Converted'),
@@ -190,6 +190,7 @@ class crm_opportunity(osv.osv):
_defaults = {
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.opportunity', context=c),
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
+ 'state' : 'draft',
}
def action_makeMeeting(self, cr, uid, ids, context=None):
diff --git a/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py b/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
index bb0adb0444a..de8fac00fce 100755
--- a/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
+++ b/addons/crm/scripts/openerp_mailgate/openerp_mailgate.py
@@ -183,6 +183,7 @@ class email_parser(object):
'email_cc': msg_cc,
'user_id': False,
'description': message['body'],
+ 'state' : 'draft',
}
data.update(self.partner_get(msg_from))
diff --git a/addons/crm/wizard/crm_email_add_cc_view.xml b/addons/crm/wizard/crm_email_add_cc_view.xml
index 45ae389ba72..7c6ea96df23 100644
--- a/addons/crm/wizard/crm_email_add_cc_view.xml
+++ b/addons/crm/wizard/crm_email_add_cc_view.xml
@@ -1,43 +1,39 @@
-
+
-
+
-
+
Add CC
crm.email.add.cc
form
-
+
-
+
Add CC
@@ -48,5 +44,5 @@
new
-
+
diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py
index f4b97ad2f14..c8cce059f09 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity.py
+++ b/addons/crm/wizard/crm_lead_to_opportunity.py
@@ -51,74 +51,82 @@ class crm_lead2opportunity(osv.osv_memory):
@return : Dictionary value for created Opportunity form
"""
- value = {}
record_id = context and context.get('active_id', False) or False
- if record_id:
- lead_obj = self.pool.get('crm.lead')
- opp_obj = self. pool.get('crm.opportunity')
- data_obj = self.pool.get('ir.model.data')
- history_obj = self.pool.get('crm.case.history')
- model_obj = self.pool.get('ir.model')
+ if not record_id:
+ return {}
- # Get Opportunity views
- result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_opportunities_filter')
- res = data_obj.read(cr, uid, result, ['res_id'])
- id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_oppor')
- id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_oppor')
- if id2:
- id2 = data_obj.browse(cr, uid, id2, context=context).res_id
- if id3:
- id3 = data_obj.browse(cr, uid, id3, context=context).res_id
+ lead_obj = self.pool.get('crm.lead')
+ opp_obj = self. pool.get('crm.opportunity')
+ data_obj = self.pool.get('ir.model.data')
+ history_obj = self.pool.get('crm.case.history')
+ model_obj = self.pool.get('ir.model')
- lead = lead_obj.browse(cr, uid, record_id, context=context)
- model_ids = model_obj.search(cr, uid, [('model', '=', 'crm.opportunity')])
+ # Get Opportunity views
+ result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_opportunities_filter')
+ res = data_obj.read(cr, uid, result, ['res_id'])
+ id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_oppor')
+ id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_oppor')
+ if id2:
+ id2 = data_obj.browse(cr, uid, id2, context=context).res_id
+ if id3:
+ id3 = data_obj.browse(cr, uid, id3, context=context).res_id
+
+ lead = lead_obj.browse(cr, uid, record_id, context=context)
+ model_ids = model_obj.search(cr, uid, [('model', '=', 'crm.opportunity')])
- for this in self.browse(cr, uid, ids, context=context):
- new_opportunity_id = opp_obj.create(cr, uid, {
- 'name': this.name,
- 'referred': this.referred,
- 'planned_revenue': this.planned_revenue,
- 'probability': this.probability,
- 'partner_id': lead.partner_id and lead.partner_id.id or False ,
- 'section_id': lead.section_id and lead.section_id.id or False,
- 'description': lead.description or False,
- 'date_deadline': lead.date_deadline or False,
- 'partner_address_id': lead.partner_address_id and \
- lead.partner_address_id.id or False ,
- 'priority': lead.priority,
- 'phone': lead.phone,
- 'email_from': lead.email_from
- })
- new_opportunity = opp_obj.browse(cr, uid, new_opportunity_id)
- vals = {
- 'partner_id': this.partner_id and this.partner_id.id or False,
- }
- if not lead.opportunity_id:
- vals.update({'opportunity_id' : new_opportunity.id})
+ for this in self.browse(cr, uid, ids, context=context):
+ new_opportunity_id = opp_obj.create(cr, uid, {
+ 'name': this.name,
+ 'referred': lead.referred,
+ 'planned_revenue': this.planned_revenue,
+ 'probability': this.probability,
+ 'partner_id': lead.partner_id and lead.partner_id.id or False,
+ 'section_id': lead.section_id and lead.section_id.id or False,
+ 'description': lead.description or False,
+ 'date_deadline': lead.date_deadline or False,
+ 'partner_address_id': lead.partner_address_id and lead.partner_address_id.id or False ,
+ 'priority': lead.priority,
+ 'phone': lead.phone,
+ 'email_from': lead.email_from
+ })
+ new_opportunity = opp_obj.browse(cr, uid, new_opportunity_id)
+ vals = {
+ 'partner_id': this.partner_id and this.partner_id.id or False,
+ }
+ if not lead.opportunity_id:
+ vals.update({'opportunity_id' : new_opportunity.id})
- lead_obj.write(cr, uid, [lead.id], vals)
- lead_obj.case_close(cr, uid, [lead.id])
-
- # Copy lead history to opportunity
- for his_id in lead.history_line:
- history_ids = history_obj.copy(cr, uid, his_id.id, \
- {'model_id': model_ids[0], \
- 'res_id': new_opportunity_id})
+ model_opportunity_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'crm.opportunity')], context=context)[0]
- opp_obj.case_open(cr, uid, [new_opportunity_id])
+ for model in ('crm.case.log', 'crm.case.history'):
+ log_proxy = self.pool.get(model)
+ log_ids = log_proxy.search(cr, uid, [('model_id.model', '=', 'crm.lead'),('res_id', '=', lead.id)], context=context)
+ for log_id in log_ids:
+ log_proxy.copy(cr, uid, log_id, {'model_id':model_opportunity_id}, context=context)
- value = {
- 'name': _('Opportunity'),
- 'view_type': 'form',
- 'view_mode': 'form,tree',
- 'res_model': 'crm.opportunity',
- 'res_id': int(new_opportunity_id),
- 'view_id': False,
- 'views': [(id2, 'form'), (id3, 'tree'), (False, 'calendar'), (False, 'graph')],
- 'type': 'ir.actions.act_window',
- 'search_view_id': res['res_id']
- }
+ lead_obj.write(cr, uid, [lead.id], vals)
+ lead_obj.case_close(cr, uid, [lead.id])
+
+ # Copy lead history to opportunity
+ for his_id in lead.history_line:
+ history_ids = history_obj.copy(cr, uid, his_id.id, \
+ {'model_id': model_ids[0], \
+ 'res_id': new_opportunity_id})
+
+ #opp_obj.case_open(cr, uid, [new_opportunity_id])
+
+ value = {
+ 'name': _('Opportunity'),
+ 'view_type': 'form',
+ 'view_mode': 'form,tree',
+ 'res_model': 'crm.opportunity',
+ 'res_id': int(new_opportunity_id),
+ 'view_id': False,
+ 'views': [(id2, 'form'), (id3, 'tree'), (False, 'calendar'), (False, 'graph')],
+ 'type': 'ir.actions.act_window',
+ 'search_view_id': res['res_id']
+ }
return value
_columns = {
diff --git a/addons/crm/wizard/crm_send_email_view.xml b/addons/crm/wizard/crm_send_email_view.xml
index 7b3392ef8fa..4db670de61f 100644
--- a/addons/crm/wizard/crm_send_email_view.xml
+++ b/addons/crm/wizard/crm_send_email_view.xml
@@ -9,26 +9,26 @@
crm.send.mail
form
-
+
stock.location.search
stock.location
@@ -622,9 +623,9 @@
states="draft,waiting,confirmed,assigned" />
+ string="Scrap Products" type="action"
+ icon="gtk-convert" context="{'scrap': True}"
+ states="draft,waiting,confirmed,assigned" />
-
-
-
-
@@ -702,7 +699,7 @@
-
+
@@ -753,7 +750,6 @@
-
@@ -777,9 +773,9 @@
groups="base.group_extended"
states="draft,waiting,confirmed,assigned" />
+ string="Scrap Products" type="action"
+ icon="gtk-convert" context="{'scrap': True}"
+ states="draft,waiting,confirmed,assigned" />
-
-
-
-
@@ -852,7 +844,7 @@
-
+
@@ -878,7 +870,7 @@
form
tree,form,calendar
[('type','=','delivery')]
- {'contact_display': 'partner'}
+ {'contact_display': 'partner',"search_default_available":1}
@@ -999,10 +991,6 @@
-
-
-
-
@@ -1013,9 +1001,6 @@
-
-
-
@@ -1136,9 +1121,9 @@
type="action" icon="gtk-justify-fill"
states="draft,waiting,confirmed,assigned" />
+ string="Scrap Products" type="action"
+ icon="gtk-convert" context="{'scrap': True}"
+ states="draft,waiting,confirmed,assigned" />
-
- Picking lists
- stock.picking
- ir.actions.act_window
- form
- tree,form,calendar
-
- [('type','=','out')]
- {'contact_display': 'partner'}
-
-
-
- tree
-
-
-
-
-
====================================
Reception Picking (By Stock Move)
====================================
@@ -1517,7 +1481,7 @@
-
+
@@ -1543,6 +1507,7 @@
tree,form
[('picking_id','!=',False),('picking_id.type','=','in')]
+ {"search_default_receive":1}
@@ -1716,56 +1681,6 @@
graph,tree
-
-
- stock.delivery.from
- stock.delivery
- form
-
-
-
-
-
- stock.delivery.tree
- stock.delivery
- tree
-
-
-
-
-
-
-
-
-
-
- Delivered Products
- stock.delivery
- ir.actions.act_window
- form
- form,tree
-
-
-
-