[IMP] account_voucher, usability: added currency_help_label to help at the understanding when using the payment rate fields
bzr revid: qdp-launchpad@openerp.com-20130514115213-cklf7s6r889ahen7
This commit is contained in:
parent
9b01552b79
commit
5a367b4c9a
|
@ -27,6 +27,7 @@ from openerp.osv import fields, osv
|
||||||
import openerp.addons.decimal_precision as dp
|
import openerp.addons.decimal_precision as dp
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp.tools import float_compare
|
from openerp.tools import float_compare
|
||||||
|
from openerp.report import report_sxw
|
||||||
|
|
||||||
class res_currency(osv.osv):
|
class res_currency(osv.osv):
|
||||||
_inherit = "res.currency"
|
_inherit = "res.currency"
|
||||||
|
@ -293,6 +294,36 @@ class account_voucher(osv.osv):
|
||||||
res[voucher.id] = self.pool.get('res.currency').compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, voucher.amount, context=ctx)
|
res[voucher.id] = self.pool.get('res.currency').compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, voucher.amount, context=ctx)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def _get_currency_help_label(self, cr, uid, currency_id, payment_rate, payment_rate_currency_id, context=None):
|
||||||
|
"""
|
||||||
|
This function builds a string to help the users to understand the behavior of the payment rate fields they can specify on the voucher.
|
||||||
|
This string is only used to improve the usability in the voucher form view and has no other effect.
|
||||||
|
|
||||||
|
:param currency_id: the voucher currency
|
||||||
|
:type currency_id: integer
|
||||||
|
:param payment_rate: the value of the payment_rate field of the voucher
|
||||||
|
:type payment_rate: float
|
||||||
|
:param payment_rate_currency_id: the value of the payment_rate_currency_id field of the voucher
|
||||||
|
:type payment_rate_currency_id: integer
|
||||||
|
:return: translated string giving a tip on what's the effect of the current payment rate specified
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
|
rml_parser = report_sxw.rml_parse(cr, uid, 'currency_help_label', context=context)
|
||||||
|
currency_pool = self.pool.get('res.currency')
|
||||||
|
currency_str = payment_rate_str = ''
|
||||||
|
if currency_id:
|
||||||
|
currency_str = rml_parser.formatLang(1, currency_obj=currency_pool.browse(cr, uid, currency_id, context=context))
|
||||||
|
if payment_rate_currency_id:
|
||||||
|
payment_rate_str = rml_parser.formatLang(payment_rate, currency_obj=currency_pool.browse(cr, uid, payment_rate_currency_id, context=context))
|
||||||
|
currency_help_label = _('At the operation date, the exchange rate was\n%s = %s') % (currency_str, payment_rate_str)
|
||||||
|
return currency_help_label
|
||||||
|
|
||||||
|
def _fnct_currency_help_label(self, cr, uid, ids, name, args, context=None):
|
||||||
|
res = {}
|
||||||
|
for voucher in self.browse(cr, uid, ids, context=context):
|
||||||
|
res[voucher.id] = self._get_currency_help_label(cr, uid, voucher.currency_id.id, voucher.payment_rate, voucher.payment_rate_currency_id.id, context=context)
|
||||||
|
return res
|
||||||
|
|
||||||
_name = 'account.voucher'
|
_name = 'account.voucher'
|
||||||
_description = 'Accounting Voucher'
|
_description = 'Accounting Voucher'
|
||||||
_inherit = ['mail.thread']
|
_inherit = ['mail.thread']
|
||||||
|
@ -364,6 +395,7 @@ class account_voucher(osv.osv):
|
||||||
help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'),
|
help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'),
|
||||||
'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True),
|
'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True),
|
||||||
'is_multi_currency': fields.boolean('Multi Currency Voucher', help='Fields with internal purpose only that depicts if the voucher is a multi currency one or not'),
|
'is_multi_currency': fields.boolean('Multi Currency Voucher', help='Fields with internal purpose only that depicts if the voucher is a multi currency one or not'),
|
||||||
|
'currency_help_label': fields.function(_fnct_currency_help_label, type='text', string="Helping Sentence", help="This sentence helps you to know how to specify the payment rate by giving you the direct effect it has"),
|
||||||
}
|
}
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'active': True,
|
'active': True,
|
||||||
|
@ -536,7 +568,7 @@ class account_voucher(osv.osv):
|
||||||
return default
|
return default
|
||||||
|
|
||||||
def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None):
|
def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None):
|
||||||
res = {'value': {'paid_amount_in_company_currency': amount}}
|
res = {'value': {'paid_amount_in_company_currency': amount, 'currency_help_label': self._get_currency_help_label(cr, uid, currency_id, rate, payment_rate_currency_id, context=context)}}
|
||||||
if rate and amount and currency_id:
|
if rate and amount and currency_id:
|
||||||
company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id
|
company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id
|
||||||
#context should contain the date, the payment currency and the payment rate specified on the voucher
|
#context should contain the date, the payment currency and the payment rate specified on the voucher
|
||||||
|
@ -815,7 +847,7 @@ class account_voucher(osv.osv):
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
res = {'value': {}}
|
res = {'value': {}}
|
||||||
if currency_id and currency_id == payment_rate_currency_id:
|
if currency_id:
|
||||||
#set the default payment rate of the voucher and compute the paid amount in company currency
|
#set the default payment rate of the voucher and compute the paid amount in company currency
|
||||||
ctx = context.copy()
|
ctx = context.copy()
|
||||||
ctx.update({'date': date})
|
ctx.update({'date': date})
|
||||||
|
|
|
@ -46,6 +46,9 @@
|
||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<!-- TODO: merge the 3 voucher form views of this file into a single view -->
|
||||||
|
<!-- Low priority view... If we open a voucher from a m2o, for example. -->
|
||||||
<record model="ir.ui.view" id="view_low_priority_payment_form">
|
<record model="ir.ui.view" id="view_low_priority_payment_form">
|
||||||
<field name="name">account.voucher.payment.low.priority.form</field>
|
<field name="name">account.voucher.payment.low.priority.form</field>
|
||||||
<field name="model">account.voucher</field>
|
<field name="model">account.voucher</field>
|
||||||
|
@ -119,6 +122,7 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<!-- Supplier Payment -->
|
||||||
<record model="ir.ui.view" id="view_vendor_payment_form">
|
<record model="ir.ui.view" id="view_vendor_payment_form">
|
||||||
<field name="name">account.voucher.payment.form</field>
|
<field name="name">account.voucher.payment.form</field>
|
||||||
<field name="model">account.voucher</field>
|
<field name="model">account.voucher</field>
|
||||||
|
@ -193,12 +197,16 @@
|
||||||
<field name="narration" colspan="2" nolabel="1"/>
|
<field name="narration" colspan="2" nolabel="1"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
|
<group col="2" attrs="{'invisible':[('is_multi_currency','=',False)]}">
|
||||||
<separator string="Currency Options" colspan="4"/>
|
<separator string="Currency Options" colspan="2"/>
|
||||||
<field name="is_multi_currency" invisible="1"/>
|
<field name="is_multi_currency" invisible="1"/>
|
||||||
<field name="payment_rate" required="1" colspan="3" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
|
<label for="payment_rate" colspan="1"/>
|
||||||
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
|
<div>
|
||||||
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
<field name="payment_rate" required="1" class="oe_inline" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
|
||||||
|
<field name="payment_rate_currency_id" class="oe_inline" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
|
||||||
|
</div>
|
||||||
|
<field name="currency_help_label" colspan="2" nolabel="1" class="oe_grey"/>
|
||||||
|
<field name="paid_amount_in_company_currency" colspan="2" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
<group col="2">
|
<group col="2">
|
||||||
<separator string="Payment Options" colspan="2"/>
|
<separator string="Payment Options" colspan="2"/>
|
||||||
|
@ -282,6 +290,7 @@
|
||||||
<menuitem action="action_vendor_payment" icon="STOCK_JUSTIFY_FILL" sequence="12"
|
<menuitem action="action_vendor_payment" icon="STOCK_JUSTIFY_FILL" sequence="12"
|
||||||
id="menu_action_vendor_payment" parent="account.menu_finance_payables"/>
|
id="menu_action_vendor_payment" parent="account.menu_finance_payables"/>
|
||||||
|
|
||||||
|
<!-- Register Payment Form (old Pay Invoice wizard) -->
|
||||||
<record model="ir.ui.view" id="view_vendor_receipt_dialog_form">
|
<record model="ir.ui.view" id="view_vendor_receipt_dialog_form">
|
||||||
<field name="name">account.voucher.receipt.dialog.form</field>
|
<field name="name">account.voucher.receipt.dialog.form</field>
|
||||||
<field name="model">account.voucher</field>
|
<field name="model">account.voucher</field>
|
||||||
|
@ -392,6 +401,7 @@
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Customer Payment -->
|
||||||
<record model="ir.ui.view" id="view_vendor_receipt_form">
|
<record model="ir.ui.view" id="view_vendor_receipt_form">
|
||||||
<field name="name">account.voucher.receipt.form</field>
|
<field name="name">account.voucher.receipt.form</field>
|
||||||
<field name="model">account.voucher</field>
|
<field name="model">account.voucher</field>
|
||||||
|
@ -474,8 +484,12 @@
|
||||||
</group>
|
</group>
|
||||||
<group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
|
<group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
|
||||||
<field name="is_multi_currency" invisible="1"/>
|
<field name="is_multi_currency" invisible="1"/>
|
||||||
<field name="payment_rate" required="1" colspan="3" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
|
<label for="payment_rate" colspan="1"/>
|
||||||
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
|
<div>
|
||||||
|
<field name="payment_rate" required="1" class="oe_inline" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
|
||||||
|
<field name="payment_rate_currency_id" class="oe_inline" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
|
||||||
|
</div>
|
||||||
|
<field name="currency_help_label" colspan="2" nolabel="1" class="oe_grey"/>
|
||||||
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
|
|
|
@ -147,8 +147,9 @@
|
||||||
</notebook>
|
</notebook>
|
||||||
<group col="4" invisible="1">
|
<group col="4" invisible="1">
|
||||||
<field name="is_multi_currency" invisible="1"/>
|
<field name="is_multi_currency" invisible="1"/>
|
||||||
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" colspan="3" invisible="1"/>
|
<field name="currency_help_label" invisible="1"/>
|
||||||
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency" invisible="1"/>
|
<field name="payment_rate" invisible="1"/>
|
||||||
|
<field name="payment_rate_currency_id" invisible="1"/>
|
||||||
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
|
@ -243,6 +244,7 @@
|
||||||
on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)"
|
on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)"
|
||||||
groups="account.group_account_user"/>
|
groups="account.group_account_user"/>
|
||||||
<field name="paid_amount_in_company_currency" invisible="1"/>
|
<field name="paid_amount_in_company_currency" invisible="1"/>
|
||||||
|
<field name="currency_help_label" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
|
|
Loading…
Reference in New Issue