[MERGE] lp881356
[odoo/odoo.git] / addons / account / account_analytic_line.py
index e24e763..da0bc96 100644 (file)
@@ -19,8 +19,6 @@
 #
 ##############################################################################
 
-import time
-
 from osv import fields
 from osv import osv
 from tools.translate import _
@@ -32,7 +30,7 @@ class account_analytic_line(osv.osv):
         'product_uom_id': fields.many2one('product.uom', 'UoM'),
         'product_id': fields.many2one('product.product', 'Product'),
         'general_account_id': fields.many2one('account.account', 'General Account', required=True, ondelete='restrict'),
-        'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='restrict', select=True),
+        'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True),
         'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),
         'code': fields.char('Code', size=8),
         'ref': fields.char('Ref.', size=64),
@@ -41,7 +39,7 @@ class account_analytic_line(osv.osv):
     }
 
     _defaults = {
-        'date': lambda *a: time.strftime('%Y-%m-%d'),
+        'date': fields.date.context_today,
         'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=c),
     }
     _order = 'date desc'
@@ -50,11 +48,9 @@ class account_analytic_line(osv.osv):
         if context is None:
             context = {}
         if context.get('from_date',False):
-            args.append(['date', '>=',context['from_date']])
-
+            args.append(['date', '>=', context['from_date']])
         if context.get('to_date',False):
-            args.append(['date','<=',context['to_date']])
-
+            args.append(['date','<=', context['to_date']])
         return super(account_analytic_line, self).search(cr, uid, args, offset, limit,
                 order, context=context, count=count)
 
@@ -82,7 +78,10 @@ class account_analytic_line(osv.osv):
         j_id = analytic_journal_obj.browse(cr, uid, journal_id, context=context)
         prod = product_obj.browse(cr, uid, prod_id, context=context)
         result = 0.0
-
+        if prod_id:
+            unit = prod.uom_id.id
+            if j_id.type == 'purchase':
+                unit = prod.uom_po_id.id
         if j_id.type <> 'sale':
             a = prod.product_tmpl_id.property_account_expense.id
             if not a:
@@ -122,14 +121,14 @@ class account_analytic_line(osv.osv):
             ctx['uom'] = unit
         amount_unit = prod.price_get(pricetype.field, context=ctx)[prod.id]
         prec = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
-        amount = amount_unit * quantity or 1.0
+        amount = amount_unit * quantity or 0.0
         result = round(amount, prec)
         if not flag:
             result *= -1
-
         return {'value': {
             'amount': result,
             'general_account_id': a,
+            'product_uom_id': unit
             }
         }