Odoo Help
Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM
|
e-Commerce
|
Accounting
|
Inventory
|
PoS
|
Project management
|
MRP
|
etc.
XML Button to call python function
I am getting an error when on the number of parameters passed when a user clicks my Calculate button. I want to pass some parameters to the function, user input data on the form, for use in the calculation.
<record id="view_dt_fx_transaction_form" model="ir.ui.view">
<field name="name">dt.fx.transaction.form.view</field>
<field name="model">dt.fx.transaction</field>
<!-- this will be our title of list/tree view -->
<form string="Forex Transaction">
<field name="txntype" />
<field name="fxamt" />
<field name="fxcurrency" />
<field name="fxrate" />
<field name="fxvalue" />
<button name="calculate_forex" string="(calculate) " type="object" context="{'fldAmt' : fxamt,'fldCurrency' : fxcurrency}"/>
<field name="customertype" />
<field name="nationality" />
<field name="idtype" />
<field name="idno" />
<field name="firstname" />
<field name="middlename" />
<field name="surname" />
<field name="address" />
</form>
</field>
</record>
def calculate_forex(self, cr, uid, ids,context={'fldAmt','fldCurrency'}):
for prod in self.browse(cr, uid, ids, context=context):
cr.execute("SELECT buyingrate,sellingrate FROM dt_fx_currency " )
values = cr.fetchone()
if values[0] >= 0:
buyrate = values[0]
if values[1] >= 0:
sellrate = values[1]
#if self.txntype == 'purchasing':
self.write(cr, uid, prod.id, {'fxrate': buyrate })
self.write(cr, uid, prod.id, {'fxvalue': buyrate * fldAmt })
There is something I am definetly doing wrong. Please assist
Hi,
You have to define your def as like below to get the value which are passed from context.
def calculate_forex(self, cr, uid, ids,context={}):
context = context or {}
for prod in self.browse(cr, uid, ids, context=context):
cr.execute("SELECT buyingrate,sellingrate FROM dt_fx_currency " )
values = cr.fetchone()
if values[0] >= 0:
buyrate = values[0]
if values[1] >= 0:
sellrate = values[1]
fldAmt = context.get('fldAmt',1) #get the value from context.
#if self.txntype == 'purchasing':
self.write(cr, uid, prod.id, {'fxrate': buyrate })
self.write(cr, uid, prod.id, {'fxvalue': buyrate * fldAmt })
I hope you will get your result.
About This Community
This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.
RegisterOdoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.
Test it nowQuestion tools
Stats
Asked: 11/19/14, 7:26 AM |
Seen: 7199 times |
Last updated: 8/23/15, 12:56 PM |