ACCOUNT,PURCHASE,SALE: move project_id to line.account_analytic_id for invoice and purchase

bzr revid: ced-e509f9176b9d083913fcbde094911f1862833d81
This commit is contained in:
ced 2007-02-26 13:48:42 +00:00
parent 74817fde46
commit 98a8a9752b
5 changed files with 20 additions and 16 deletions

View File

@ -42,8 +42,10 @@
<form string="Invoice Line">
<notebook>
<page string="Line">
<field name="name" select="1"/>
<field name="name" select="1" colspan="3"/>
<field name="account_id" on_change="onchange_account_id(parent.partner_id,account_id)" />
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view')]" />
<newline/>
<field name="product_id" select="1" on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id)"/>
<field name="uos_id"/>
<field name="quantity" select="1"/>
@ -136,7 +138,6 @@
<field name="partner_bank_id" domain="[('partner_id','=',partner_id)]"/>
<field name="account_id" domain="[('type','&lt;&gt;','view')]" />
<field name="project_id" domain="[('type','&lt;&gt;','view')]" />
<field name="payment_term" on_change="onchange_payment_term(payment_term)" />
<field name="date_due" select="1"/>

View File

@ -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={}

View File

@ -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

View File

@ -23,7 +23,6 @@
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id)"/>
<field name="partner_address_id"/>
<field name="pricelist_id" domain="[('type','=','purchase')]"/>
<field name="project_id" select="1"/>
<field name="ref" select="1"/>
<field name="partner_ref" select="1"/>
<newline/>
@ -129,6 +128,8 @@
<form string="Purchase Order Line">
<notebook>
<page string="Order Line">
<field name="account_analytic_id"/>
<newline/>
<field name="product_qty"/>
<field name="product_uom"/>
<field name="product_id" colspan="3" on_change="product_id_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id)" context="partner_id=parent.partner_id,quantity=product_qty,pricelist=parent.pricelist_id,uom=product_uom,warehouse=parent.warehouse_id"/>

View File

@ -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})