diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 4102e7fb514..51c2784cff3 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -42,8 +42,10 @@
- + + + @@ -136,7 +138,6 @@ - diff --git a/addons/account/invoice.py b/addons/account/invoice.py index bedd7d35806..990778a0f23 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -94,7 +94,6 @@ class account_invoice(osv.osv): 'number': fields.char('Invoice Number', size=32,readonly=True), 'reference': fields.char('Invoice Reference', size=64), - 'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft':[('readonly',False)]}, relate=True), 'comment': fields.text('Additionnal Information'), 'state': fields.selection([ @@ -270,16 +269,17 @@ class account_invoice(osv.osv): sign = -1 # one move line per invoice line iml = self.pool.get('account.invoice.line').move_line_get(cr, uid, inv['id']) - if inv['project_id']: - for il in iml: + for il in iml: + print "il:", il + if il['account_analytic_id']: il['analytic_lines'] = [(0,0, { 'name': il['name'], 'date': time.strftime('%Y-%m-%d'), - 'account_id': inv['project_id'], + 'account_id': il['account_analytic_id'], 'unit_amount': il['quantity'], 'amount': il['price'] * sign, - 'product_id': il['product_id'] and il['product_id'][0], - 'product_uom_id': il['uos_id'] and il['uos_id'][0], + 'product_id': il['product_id'], + 'product_uom_id': il['uos_id'], 'general_account_id': il['account_id'], 'journal_id': self._get_journal_analytic(cr, uid, inv['type']) })] @@ -426,7 +426,7 @@ class account_invoice(osv.osv): return self.name_get(cr, user, ids) def refund(self, cr, uid, ids): - invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'project_id', 'comment', 'date_due', 'partner_id', 'address_contact_id', 'address_invoice_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line']) + invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'comment', 'date_due', 'partner_id', 'address_contact_id', 'address_invoice_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line']) new_ids = [] for invoice in invoices: @@ -467,7 +467,7 @@ class account_invoice(osv.osv): # take the id part of the tuple returned for many2one fields for field in ('address_contact_id', 'address_invoice_id', 'partner_id', - 'project_id', 'account_id', 'currency_id', 'payment_term'): + 'account_id', 'currency_id', 'payment_term'): invoice[field] = invoice[field] and invoice[field][0] # create the new invoice @@ -535,6 +535,7 @@ class account_invoice_line(osv.osv): 'discount': fields.float('Discount (%)', digits=(16,2)), 'invoice_line_tax_id': fields.many2many('account.tax', 'account_invoice_line_tax', 'invoice_line_id', 'tax_id', 'Taxes', domain=[('parent_id','=',False)]), 'note': fields.text('Notes'), + 'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account', relate=True), } _defaults = { 'quantity': lambda *a: 1, @@ -611,6 +612,7 @@ class account_invoice_line(osv.osv): 'account_id':line.account_id.id, 'product_id':line.product_id.id, 'uos_id':line.uos_id.id, + 'account_analytic_id':line.account_analytic_id.id, }) for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, (line.price_unit *(1.0-(line['discount'] or 0.0)/100.0)), line.quantity, inv.address_invoice_id.id, line.product_id, inv.partner_id): val={} diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 4bb69e33f28..3b06924cd99 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -94,7 +94,6 @@ class purchase_order(osv.osv): 'dest_address_id':fields.many2one('res.partner.address', 'Destination Address', states={'posted':[('readonly',True)]}), 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', states={'posted':[('readonly',True)]}, relate=True), 'location_id': fields.many2one('stock.location', 'Delivery destination', required=True), - 'project_id':fields.many2one('account.analytic.account', 'Analytic Account', states={'posted':[('readonly',True)]}), 'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}), @@ -200,7 +199,8 @@ class purchase_order(osv.osv): 'quantity': ol.product_qty, 'product_id': ol.product_id.id or False, 'uos_id': ol.product_uom.id or False, - 'invoice_line_tax_id': [(6, 0, [x.id for x in ol.taxes_id])] + 'invoice_line_tax_id': [(6, 0, [x.id for x in ol.taxes_id])], + 'account_analytic_id': ol.account_analytic_id.id, })) a = o.partner_id.property_account_payable[0] @@ -211,7 +211,6 @@ class purchase_order(osv.osv): 'type': 'in_invoice', 'partner_id': o.partner_id.id, 'currency_id': o.pricelist_id.currency_id.id, - 'project_id': o.project_id.id, 'address_invoice_id': o.partner_address_id.id, 'address_contact_id': o.partner_address_id.id, 'origin': o.name, @@ -305,7 +304,8 @@ class purchase_order_line(osv.osv): 'price_unit': fields.float('Unit Price', required=True, digits=(16, int(config['price_accuracy']))), 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal'), 'notes': fields.text('Notes'), - 'order_id': fields.many2one('purchase.order', 'Order Ref', select=True, required=True, ondelete='cascade') + 'order_id': fields.many2one('purchase.order', 'Order Ref', select=True, required=True, ondelete='cascade'), + 'account_analytic_id':fields.many2one('account.analytic.account', 'Analytic Account',), } _defaults = { 'product_qty': lambda *a: 1.0 diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 458b89baf8e..1c9b2a04985 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -23,7 +23,6 @@ - @@ -129,6 +128,8 @@ + + diff --git a/addons/sale/sale.py b/addons/sale/sale.py index e978ad5ca81..5e885bbdde5 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -229,7 +229,6 @@ class sale_order(osv.osv): 'partner_id': order.partner_id.id, 'address_invoice_id': order.partner_invoice_id.id, 'address_contact_id': order.partner_invoice_id.id, - 'project_id': order.project_id.id, 'invoice_line': [(6,0,lines)], 'currency_id' : order.pricelist_id.currency_id.id, 'comment': order.note, @@ -592,6 +591,7 @@ class sale_order_line(osv.osv): 'product_id': line.product_id.id or False, 'invoice_line_tax_id': [(6,0,[x.id for x in line.tax_id])], 'note': line.notes, + 'account_analytic_id': line.order_id.project_id.id, }) cr.execute('insert into sale_order_line_invoice_rel (order_line_id,invoice_id) values (%d,%d)', (line.id, inv_id)) self.write(cr, uid, [line.id], {'invoiced':True})