Hi NSC ,
This is the answer pls add openerp and init.py file
from osv import osv,fields
class account_new(osv.osv):
_inherit="account.invoice.line"
def onchange_schemid(self,cr,uid,ids,price_unit,quantity,context=None):
if price_unit:
amount_new=price_unit*quantity
return {'value':{'new_total':amount_new}}
return {}
_columns={
'new_total': fields.float('Gross Amount', required=True),
}
account_new()
class account_invoice_line(osv.osv):
_inherit='account.invoice.line'
_columns={
'ean_code':fields.char('EAN Code'),
'rack_id':fields.char('Rack Id')
#'rack_num_inhe':fields.integer('Rack Number')
}
#product_id_change=from product #rack number should come in invoice line,then quantity*unit_price ='gross_value'
def product_id_change(self, cr, uid, ids, product,uom_id, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, currency_id=False, context=None, company_id=None):
ean_val=self.pool.get('product.product').browse(cr,uid,product)
#ean_val=self.pool.get('product.product').read(cr,uid,ids,['ean13'],context=context)
print "###############################ean_val",ean_val
#print "###############################eanval##########",ean_val.ean13.id
if context is None:
context = {}
company_id = company_id if company_id != None else context.get('company_id',False)
context = dict(context)
context.update({'company_id': company_id, 'force_company': company_id})
if not partner_id:
raise osv.except_osv(_('No Partner Defined!'),_("You must first select a partner!") )
if not product:
if type in ('in_invoice', 'in_refund'):
return {'value': {}, 'domain':{'product_uom':[]}}
else:
return {'value': {'price_unit': 0.0}, 'domain':{'product_uom':[]}}
part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
fpos_obj = self.pool.get('account.fiscal.position')
fpos = fposition_id and fpos_obj.browse(cr, uid, fposition_id, context=context) or False
if part.lang:
context.update({'lang': part.lang})
result = {}
res = self.pool.get('product.product').browse(cr, uid, product, context=context)
if type in ('out_invoice','out_refund'):
a = res.property_account_income.id
if not a:
a = res.categ_id.property_account_income_categ.id
else:
a = res.property_account_expense.id
if not a:
a = res.categ_id.property_account_expense_categ.id
a = fpos_obj.map_account(cr, uid, fpos, a)
if a:
result['account_id'] = a
if type in ('out_invoice', 'out_refund'):
taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False)
else:
taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False)
tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes)
if type in ('in_invoice', 'in_refund'):
result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} )
else:
result.update({'price_unit': res.list_price, 'invoice_line_tax_id': tax_id,'ean_code':ean_val.ean13,'rack_id':ean_val.loc_rack})
result['name'] = res.partner_ref
result['uos_id'] = uom_id or res.uom_id.id
if res.description:
result['name'] += '\n'+res.description
domain = {'uos_id':[('category_id','=',res.uom_id.category_id.id)]}
res_final = {'value':result, 'domain':domain}
if not company_id or not currency_id:
return res_final
company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
currency = self.pool.get('res.currency').browse(cr, uid, currency_id, context=context)
if company.currency_id.id != currency.id:
if type in ('in_invoice', 'in_refund'):
res_final['value']['price_unit'] = res.standard_price
new_price = res_final['value']['price_unit'] * currency.rate
res_final['value']['price_unit'] = new_price
if result['uos_id'] and result['uos_id'] != res.uom_id.id:
selected_uom = self.pool.get('product.uom').browse(cr, uid, result['uos_id'], context=context)
new_price = self.pool.get('product.uom')._compute_price(cr, uid, res.uom_id.id, res_final['value']['price_unit'], result['uos_id'])
res_final['value']['price_unit'] = new_price
return res_final
account_invoice_line()
------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="project_view_inherited" model="ir.ui.view">
<field name="name">task view</field>
<field name="model">account.invoice</field>
<field name="type">form</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[9]" position="after">
<field name="new_total"/>
</xpath>
<xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[9]" position="attributes">
<attribute name='invisible'>1</attribute>
</xpath>
<xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[7]" position="attributes">
<attribute name='invisible'>1</attribute>
</xpath>
<xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[9]" position="after">
<field name="price_unit" on_change="onchange_schemid(price_unit,quantity)"/>
</xpath>
<xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[7]" position="after">
<field name="quantity" on_change="onchange_schemid(price_unit,quantity)"/>
</xpath>
<xpath expr="//page[@string='Invoice Lines']/field[@name='invoice_line']/tree[@string='Invoice Lines']/field[@name='name']" position="after">
<field name="ean_code"/>
<field name="rack_id"/>
</xpath>
</field>
</record>
</data>
</openerp>