diff options
| author | Quentin (OpenERP) <qdp-launchpad@openerp.com> | 2012-10-10 17:17:10 +0200 |
|---|---|---|
| committer | Quentin (OpenERP) <qdp-launchpad@openerp.com> | 2012-10-10 17:17:10 +0200 |
| commit | e86e8433cdea8e3ac5f03c70a2ea89e7b52dc730 (patch) | |
| tree | cbf8aa9572339f0533847fd40c9e00717696711a | |
| parent | 672cec8eda609b696302cf4ae15045be60ad4357 (diff) | |
| parent | 1ec609f1a62876c40e08aa02c09c4e1402922cf3 (diff) | |
[MERGE] merged the branch with monetary widget on main objects
bzr revid: qdp-launchpad@openerp.com-20121010151710-m0iyijgsym6tweq4
| -rw-r--r-- | addons/account/account_bank_statement.py | 5 | ||||
| -rw-r--r-- | addons/account/account_invoice_view.xml | 16 | ||||
| -rw-r--r-- | addons/account/account_view.xml | 27 | ||||
| -rw-r--r-- | addons/account_asset/account_asset_view.xml | 34 | ||||
| -rw-r--r-- | addons/account_voucher/voucher_payment_receipt_view.xml | 44 | ||||
| -rw-r--r-- | addons/hr_expense/hr_expense_view.xml | 2 | ||||
| -rw-r--r-- | addons/purchase/purchase.py | 6 | ||||
| -rw-r--r-- | addons/purchase/purchase_view.xml | 9 | ||||
| -rw-r--r-- | addons/sale/sale.py | 10 | ||||
| -rw-r--r-- | addons/sale/sale_view.xml | 7 | ||||
| -rw-r--r-- | addons/sale_margin/sale_margin_view.xml | 2 |
11 files changed, 84 insertions, 78 deletions
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 8b2a9aff257..549363ce269 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -461,9 +461,10 @@ class account_bank_statement(osv.osv): return {} balance_start = self._compute_balance_end_real(cr, uid, journal_id, context=context) - journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['company_id'], context=context) + journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['company_id', 'currency'], context=context) company_id = journal_data['company_id'] - return {'value': {'balance_start': balance_start, 'company_id': company_id}} + currency_id = journal_data['currency'] or self.pool.get('res.company').browse(cr, uid, company_id[0], context=context).currency_id.id + return {'value': {'balance_start': balance_start, 'company_id': company_id, 'currency': currency_id}} def unlink(self, cr, uid, ids, context=None): stat = self.read(cr, uid, ids, ['state'], context=context) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 8421409d4ce..8516fcd96ae 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -211,17 +211,17 @@ </tree> </field> <group class="oe_subtotal_footer oe_right"> - <field name="amount_untaxed"/> + <field name="amount_untaxed" widget="monetary" options="{'currency_field': 'currency_id'}"/> <div> <label for="amount_tax"/> <button name="button_reset_taxes" states="draft,proforma2" string="(update)" class="oe_link oe_edit_only" type="object" help="Recompute taxes and total"/> </div> - <field name="amount_tax" nolabel="1"/> - <field name="amount_total" class="oe_subtotal_footer_separator"/> + <field name="amount_tax" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="amount_total" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/> - <field name="residual"/> + <field name="residual" widget="monetary" options="{'currency_field': 'currency_id'}"/> <field name="reconciled" invisible="1"/> </group> <div style="width: 50%%"> @@ -368,16 +368,16 @@ </tree> </field> <group class="oe_subtotal_footer oe_right"> - <field name="amount_untaxed"/> + <field name="amount_untaxed" widget="monetary" options="{'currency_field': 'currency_id'}"/> <div> <label for="amount_tax"/> <button name="button_reset_taxes" states="draft,proforma2" string="(update)" class="oe_link oe_edit_only" type="object" help="Recompute taxes and total"/> </div> - <field name="amount_tax" nolabel="1"/> - <field name="amount_total" class="oe_subtotal_footer_separator"/> - <field name="residual" groups="account.group_account_user"/> + <field name="amount_tax" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="amount_total" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="residual" groups="account.group_account_user" widget="monetary" options="{'currency_field': 'currency_id'}"/> <field name="reconciled" invisible="1"/> </group> <group> diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 1c40bebba52..d98b53ebbbd 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -633,13 +633,10 @@ <field name="period_id" class="oe_inline"/> </div> <field name='company_id' widget="selection" groups="base.group_multi_company" /> + <field name="currency" invisible="1"/> </group><group> - <label for="balance_start"/> - <div> - <field name="balance_start" class="oe_inline"/> - <field name="currency" class="oe_inline"/> - </div> - <field name="balance_end_real"/> + <field name="balance_start" widget="monetary" options='{"currency_field" : "currency"}'/> + <field name="balance_end_real" widget="monetary" options='{"currency_field" : "currency"}'/> </group> </group> @@ -1130,8 +1127,8 @@ <field name="account_tax_id" domain="[('parent_id','=',False)]"/> </group> <group attrs="{'readonly':[('state','=','valid')]}" string="Currency" groups="base.group_multi_currency"> - <field name="currency_id"/> - <field name="amount_currency"/> + <field name="currency_id" invisible="1"/> + <field name="amount_currency" widget="monetary" options="{'currency_field': 'currency_id'}"/> </group> <group string="Reconciliation"> <field name="reconcile_id"/> @@ -1177,8 +1174,8 @@ <field name="credit"/> <separator colspan="4" string="Optional Information"/> - <field name="currency_id" groups="base.group_multi_currency"/> - <field name="amount_currency" groups="base.group_multi_currency"/> + <field name="currency_id" invisible="1"/> + <field name="amount_currency" groups="base.group_multi_currency" widget="monetary" options="{'currency_field': 'currency_id'}"/> <field name="quantity"/> <field name="move_id" required="False"/> <newline/> @@ -2567,7 +2564,7 @@ action = pool.get('res.config').next(cr, uid, [], context) <field name="date" attrs="{'readonly':[('state','!=','draft')]}" on_change="onchange_date(date, company_id)"/> <field name="closing_date" readonly="1"/> <field name="period_id" class="oe_inline"/> - <field name="currency" invisible="1" groups="base.group_multi_currency"/> + <field name="currency" invisible="1"/> </group> </group> <notebook> @@ -2629,12 +2626,12 @@ action = pool.get('res.config').next(cr, uid, [], context) <group col="6" colspan="4"> <group col="2" colspan="2"> <separator string="Opening Balance" colspan="4"/> - <field name="balance_start" readonly="1" string="Opening Cash Control"/> - <field name="last_closing_balance" readonly="1" string="Last Closing Balance" /> - <field name="total_entry_encoding" /> + <field name="balance_start" readonly="1" string="Opening Cash Control" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="last_closing_balance" readonly="1" string="Last Closing Balance" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="total_entry_encoding" widget="monetary" options="{'currency_field': 'currency_id'}"/> </group> <group string="Closing Balance"> - <field name="balance_end"/> + <field name="balance_end" widget="monetary" options="{'currency_field': 'currency_id'}"/> </group> </group> </sheet> diff --git a/addons/account_asset/account_asset_view.xml b/addons/account_asset/account_asset_view.xml index 3fab306863c..520ee733e73 100644 --- a/addons/account_asset/account_asset_view.xml +++ b/addons/account_asset/account_asset_view.xml @@ -106,27 +106,27 @@ </group> <notebook colspan="4"> <page string="General"> - <group> - <group> - <field name="purchase_value"/> - <field name="salvage_value"/> - <field name="value_residual"/> + <group> + <group> + <field name="purchase_value" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="salvage_value" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="value_residual" widget="monetary" options="{'currency_field': 'currency_id'}"/> <field name="partner_id"/> - </group> - <group> - <field name="method"/> - <field name="method_progress_factor" attrs="{'invisible':[('method','=','linear')], 'required':[('method','=','degressive')]}"/> + </group> + <group> + <field name="method"/> + <field name="method_progress_factor" attrs="{'invisible':[('method','=','linear')], 'required':[('method','=','degressive')]}"/> <label for="method_time"/> <div> - <field name="method_time" on_change="onchange_method_time(method_time)" class="oe_inline"/> - <button name="%(action_asset_modify)d" states="open" string="Change Duration" type="action" icon="terp-stock_effects-object-colorize" class="oe_inline" colspan="1"/> + <field name="method_time" on_change="onchange_method_time(method_time)" class="oe_inline"/> + <button name="%(action_asset_modify)d" states="open" string="Change Duration" type="action" icon="terp-stock_effects-object-colorize" class="oe_inline" colspan="1"/> </div> - <field name="prorata" attrs="{'invisible': [('method_time','=','end')]}"/> - <field name="method_number" attrs="{'invisible':[('method_time','=','end')], 'required':[('method_time','=','number')]}"/> - <field name="method_period"/> - <field name="method_end" attrs="{'required': [('method_time','=','end')], 'invisible':[('method_time','=','number')]}"/> - </group> - </group> + <field name="prorata" attrs="{'invisible': [('method_time','=','end')]}"/> + <field name="method_number" attrs="{'invisible':[('method_time','=','end')], 'required':[('method_time','=','number')]}"/> + <field name="method_period"/> + <field name="method_end" attrs="{'required': [('method_time','=','end')], 'invisible':[('method_time','=','number')]}"/> + </group> + </group> </page> <page string="Depreciation Board"> <field name="depreciation_line_ids" mode="tree"> diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index 78b76e5c9b7..e1a48c6c535 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -136,11 +136,8 @@ <group> <group> <field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" context="{'invoice_currency':currency_id, 'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" string="Supplier"/> - <label for="amount" string="Amount"/> - <div> - <field name="amount" invisible="context.get('line_type', False)" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)" class="oe_inline"/> - <field name="currency_id" class="oe_inline"/> - </div> + <field name="currency_id" invisible="1"/> + <field name="amount" invisible="context.get('line_type', False)" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)" class="oe_inline" widget='monetary' options='{"currency_field": "currency_id"}'/> <field name="journal_id" domain="[('type','in',['bank', 'cash'])]" invisible="context.get('line_type', False)" @@ -203,7 +200,7 @@ </group> <group col="2"> <separator string="Payment Options" colspan="2"/> - <field name="writeoff_amount"/> + <field name="writeoff_amount" widget='monetary' options='{"currency_field": "currency_id"}'/> <field name="payment_option" required="1"/> <field name="writeoff_acc_id" attrs="{'invisible':[('payment_option','!=','with_writeoff')], 'required':[('payment_option','=','with_writeoff')]}" @@ -294,13 +291,12 @@ <group> <field name="state" invisible="1"/> <field name="partner_id" required="1" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer" context="{'search_default_customer': 1}"/> - <label for="amount" string="Paid Amount"/> - <div> - <field name="amount" class="oe_inline" - invisible="context.get('line_type', False)" - on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/> - <field name="currency_id" class="oe_inline"/> - </div> + <field name="currency_id" invisible="1"/> + <field name="amount" class="oe_inline" + string="Paid Amount" + widget='monetary' options='{"currency_field": "currency_id"}' + invisible="context.get('line_type', False)" + on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/> <field name="journal_id" domain="[('type','in',['bank', 'cash'])]" invisible="context.get('line_type', False)" @@ -323,7 +319,7 @@ </group> <notebook invisible="1"> <page string="Payment Information" groups="base.group_user"> - <label for="line_cr_ids"/> + <label for="line_cr_ids"/> <field name="line_cr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)"> <tree string="Invoices and outstanding transactions" editable="bottom" colors="gray:amount==0"> <field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}" @@ -367,7 +363,7 @@ <field name="paid_amount_in_company_currency" colspan="4" invisible="1"/> </group> <group> - <field name="writeoff_amount"/> + <field name="writeoff_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/> <field name="payment_option" required="1"/> <field name="writeoff_acc_id" attrs="{'invisible':[('payment_option','!=','with_writeoff')], 'required':[('payment_option','=','with_writeoff')]}" @@ -406,14 +402,12 @@ <group> <group> <field name="partner_id" domain="[('customer','=',True)]" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer" context="{'search_default_customer': 1}"/> - <label for="amount" string="Paid Amount"/> - <div> - <field name="amount" class="oe_inline" - invisible="context.get('line_type', False)" - on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/> - <field name="currency_id" class="oe_inline"/> - </div> - + <field name="currency_id" invisible="1"/> + <field name="amount" class="oe_inline" + string="Paid Amount" + widget="monetary" options="{'currency_field': 'currency_id'}" + invisible="context.get('line_type', False)" + on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/> <field name="journal_id" domain="[('type','in',['bank', 'cash'])]" invisible="context.get('line_type', False)" @@ -436,7 +430,7 @@ </group> <notebook> <page string="Payment Information" groups="base.group_user"> - <label for="line_cr_ids"/> + <label for="line_cr_ids"/> <field name="line_cr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)"> <tree string="Invoices and outstanding transactions" editable="bottom" colors="gray:amount==0"> <field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}" @@ -480,7 +474,7 @@ <field name="paid_amount_in_company_currency" colspan="4" invisible="1"/> </group> <group> - <field name="writeoff_amount"/> + <field name="writeoff_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/> <field name="payment_option" required="1"/> <field name="writeoff_acc_id" attrs="{'invisible':[('payment_option','!=','with_writeoff')], 'required':[('payment_option','=','with_writeoff')]}" diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 67d629eee6a..44853cee4f0 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -124,7 +124,7 @@ <field name="note" placeholder="Free Notes"/> </div> <group class="oe_subtotal_footer"> - <field name="amount"/> + <field name="amount" widget="monetary" options="{'currency_field': 'currency_id'}"/> </group> </group> </page> diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index d654078a055..c0516d09de3 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -166,6 +166,7 @@ class purchase_order(osv.osv): 'warehouse_id': fields.many2one('stock.warehouse', 'Destination Warehouse', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}), 'location_id': fields.many2one('stock.location', 'Destination', required=True, domain=[('usage','<>','view')]), 'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, help="The pricelist sets the currency used for this purchase order. It also computes the supplier price for the selected products/quantities."), + 'currency_id': fields.related('pricelist_id', 'currency_id', type="many2one", relation="res.currency", readonly=True, required=True), 'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, help="The state of the purchase order or the quotation request. A quotation is a purchase order in a 'Draft' state. Then the order has to be confirmed by the user, the state switch to 'Confirmed'. Then the supplier must confirm the order to change the state to 'Approved'. When the purchase order is paid and received, the state becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the state becomes in exception.", select=True), 'order_line': fields.one2many('purchase.order.line', 'order_id', 'Order Lines', states={'approved':[('readonly',True)],'done':[('readonly',True)]}), 'validator' : fields.many2one('res.users', 'Validated by', readonly=True), @@ -246,6 +247,11 @@ class purchase_order(osv.osv): def button_dummy(self, cr, uid, ids, context=None): return True + def onchange_pricelist(self, cr, uid, ids, pricelist_id, context=None): + if not pricelist_id: + return {} + return {'value': {'currency_id': self.pool.get('product.pricelist').browse(cr, uid, pricelist_id, context=context).currency_id.id}} + def onchange_dest_address_id(self, cr, uid, ids, address_id): if not address_id: return {} diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index bfff06f5eaf..446c17578cb 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -223,7 +223,8 @@ <group> <field name="partner_id" on_change="onchange_partner_id(partner_id)" context="{'search_default_supplier':1,'default_supplier':1,'default_customer':0}" domain="[('supplier','=',True)]"/> <field name="partner_ref"/> - <field domain="[('type','=','purchase')]" name="pricelist_id" groups="product.group_purchase_pricelist"/> + <field domain="[('type','=','purchase')]" name="pricelist_id" groups="product.group_purchase_pricelist" on_change="onchange_pricelist(pricelist_id, context)"/> + <field name="currency_id" invisible='1'/> </group> <group> <field name="date_order"/> @@ -249,14 +250,14 @@ </tree> </field> <group class="oe_subtotal_footer oe_right"> - <field name="amount_untaxed"/> - <field name="amount_tax"/> + <field name="amount_untaxed" widget="monetary" options="{'currency_field': 'currency_id'}"/> + <field name="amount_tax" widget="monetary" options="{'currency_field': 'currency_id'}"/> <div class="oe_subtotal_footer_separator oe_inline"> <label for="amount_total"/> <button name="button_dummy" states="draft" string="(update)" type="object" class="oe_edit_only oe_link"/> </div> - <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator"/> + <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}"/> </group> <div class="oe_clear"/> <label for="notes"/> diff --git a/addons/sale/sale.py b/addons/sale/sale.py index ed7a2835425..9ba6c43a588 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -201,6 +201,7 @@ class sale_order(osv.osv): help="""This field controls how invoice and delivery operations are synchronized. - With 'Before Delivery', a draft invoice is created, and it must be paid before delivery."""), 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Pricelist for current sales order."), + 'currency_id': fields.related('pricelist_id', 'currency_id', type="many2one", relation="res.currency", readonly=True, required=True), 'project_id': fields.many2one('account.analytic.account', 'Contract/Analytic Account', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="The analytic account related to a sales order."), 'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}), @@ -264,13 +265,18 @@ class sale_order(osv.osv): return osv.osv.unlink(self, cr, uid, unlink_ids, context=context) def onchange_pricelist_id(self, cr, uid, ids, pricelist_id, order_lines, context=None): - if (not pricelist_id) or (not order_lines): + if not pricelist_id: return {} + value = { + 'currency_id': self.pool.get('product.pricelist').browse(cr, uid, pricelist_id, context=context).currency_id.id + } + if not order_lines: + return {'value': value} warning = { 'title': _('Pricelist Warning!'), 'message' : _('If you change the pricelist of this order (and eventually the currency), prices of existing order lines will not be updated.') } - return {'warning': warning} + return {'warning': warning, 'value': value} def onchange_partner_id(self, cr, uid, ids, part): if not part: diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index a9ebca876a9..8b89e8047cb 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -184,6 +184,7 @@ <field name="shop_id" groups="base.group_no_one" on_change="onchange_shop_id(shop_id, context)" widget="selection"/> <field name="client_order_ref"/> <field domain="[('type','=','sale')]" name="pricelist_id" groups="product.group_sale_pricelist" on_change="onchange_pricelist_id(pricelist_id,order_line)"/> + <field name="currency_id" invisible="1"/> </group> </group> <notebook> @@ -261,14 +262,14 @@ </tree> </field> <group class="oe_subtotal_footer oe_right" colspan="2" name="sale_total"> - <field name="amount_untaxed"/> - <field name="amount_tax"/> + <field name="amount_untaxed" widget='monetary' options="{'currency_field': 'currency_id'}"/> + <field name="amount_tax" widget='monetary' options="{'currency_field': 'currency_id'}"/> <div class="oe_subtotal_footer_separator oe_inline"> <label for="amount_total" /> <button name="button_dummy" states="draft" string="(update)" type="object" class="oe_edit_only oe_link"/> </div> - <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator"/> + <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator" widget='monetary' options="{'currency_field': 'currency_id'}"/> </group> <group name="sale_margin_grp"> </group> diff --git a/addons/sale_margin/sale_margin_view.xml b/addons/sale_margin/sale_margin_view.xml index 69f49bd48ea..6aa34bae26c 100644 --- a/addons/sale_margin/sale_margin_view.xml +++ b/addons/sale_margin/sale_margin_view.xml @@ -11,7 +11,7 @@ <group> <label for="margin"/> <div> - <field name="margin"/> + <field name="margin" widget='monetary' options="{'currency_field': 'currency_id'}"/> </div> </group> </xpath> |
