Launchpad automatic translations update.
[odoo/odoo.git] / addons / analytic / analytic.py
index fd893e9..c16ed82 100644 (file)
@@ -156,7 +156,12 @@ class account_analytic_account(osv.osv):
         'name': fields.char('Account Name', size=128, required=True),
         'complete_name': fields.function(_complete_name_calc, type='char', string='Full Account Name'),
         'code': fields.char('Code/Reference', size=24, select=True),
-        'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Project')], 'Type of Account', help='If you select the View Type, it means you won\'t allow to create journal entries using that account.'),
+        'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Project')], 'Type of Account', required=True, 
+                                 help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\
+                                  "The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\
+                                  "If you select Contract or Project, it offers you the possibility to manage the validity and the invoicing options for this account.\n"\
+                                  "The special type 'Template of Project' allows you to define a template with default data that you can reuse easily."),
+        'template_id': fields.many2one('account.analytic.account', 'Template of Contract'),
         'description': fields.text('Description'),
         'parent_id': fields.many2one('account.analytic.account', 'Parent Analytic Account', select=2),
         'child_ids': fields.one2many('account.analytic.account', 'parent_id', 'Child Accounts'),
@@ -180,13 +185,25 @@ class account_analytic_account(osv.osv):
             }, string='Currency', type='many2one', relation='res.currency'),
     }
     
+    def on_change_template(self, cr, uid, ids, template_id, context=None):
+        if not template_id:
+            return {}
+        res = {'value':{}}
+        template = self.browse(cr, uid, template_id, context=context)
+        res['value']['date_start'] = template.date_start
+        res['value']['date'] = template.date
+        res['value']['quantity_max'] = template.quantity_max
+        res['value']['description'] = template.description
+        return res
+    
     def on_change_partner_id(self, cr, uid, ids,partner_id, name, context={}):
         res={}
         if partner_id:
-            part = self.pool.get('res.partner').browse(cr, uid, partner_id,context=context)
+            partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
+            if partner.user_id:
+                res['manager_id'] = partner.user_id.id
             if not name:
-                res['name'] = part.name
-            if part.user_id:res['manager_id'] = part.user_id.id
+                res['name'] = _('Contract: ') + partner.name
         return {'value': res}
 
     def _default_company(self, cr, uid, context=None):
@@ -272,6 +289,17 @@ class account_analytic_account(osv.osv):
             account = self.search(cr, uid, args, limit=limit, context=context)
         return self.name_get(cr, uid, account, context=context)
 
+    def create(self, cr, uid, vals, context=None):
+        contract =  super(account_analytic_account, self).create(cr, uid, vals, context=context)
+        if contract:
+            self.create_send_note(cr, uid, [contract], context=context)
+        return contract
+
+    def create_send_note(self, cr, uid, ids, context=None):
+        for obj in self.browse(cr, uid, ids, context=context):
+            self.message_subscribe(cr, uid, [obj.id], [obj.user_id.id], context=context)
+            self.message_append_note(cr, uid, [obj.id], body=_("Contract for <em>%s</em> has been <b>created</b>.") % (obj.partner_id.name), context=context)
+
 account_analytic_account()
 
 
@@ -296,17 +324,17 @@ class account_analytic_line(osv.osv):
     }
 
     _order = 'date desc'
-    
+
     def _check_no_view(self, cr, uid, ids, context=None):
         analytic_lines = self.browse(cr, uid, ids, context=context)
         for line in analytic_lines:
             if line.account_id.type == 'view':
                 return False
         return True
-    
+
     _constraints = [
         (_check_no_view, 'You can not create analytic line on view account.', ['account_id']),
-    ]    
+    ]
 
 account_analytic_line()