Jiten (OpenERP) has proposed merging
lp:~openerp-dev/openerp-web/trunk-monetary-widget-3-vme into lp:openerp-web.
Requested reviews:
OpenERP R&D Web Team (openerp-dev-web)
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-monetary-widget-3-vme/+merge/126852
Hello,
Create monetary widget for manage currency symbol with amount field.
For apply this monetary widget need to change view in addons for amount and
currency field.
Which is based on addons branch like,
lp:~openerp-dev/openobject-addons/trunk-monetary-widget-3-vme.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-monetary-widget-3-vme/+merge/126852
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-web/trunk-monetary-widget-3-vme.
=== modified file 'addons/web/static/src/js/formats.js'
--- addons/web/static/src/js/formats.js 2012-08-08 10:34:04 +0000
+++ addons/web/static/src/js/formats.js 2012-09-28 05:05:26 +0000
@@ -117,7 +117,8 @@
case 'integer':
return instance.web.insert_thousand_seps(
_.str.sprintf('%d', value));
- case 'float':
+ case 'float':
+ case 'monetary':
var digits = descriptor.digits ? descriptor.digits : [69,2];
digits = typeof digits === "string" ? py.eval(digits) : digits;
var precision = digits[1];
@@ -188,6 +189,7 @@
throw new Error(value + " is not a correct integer");
return tmp;
case 'float':
+ case 'monetary':
var tmp = Number(value);
if (!isNaN(tmp))
return tmp;
=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js 2012-09-27 17:49:08 +0000
+++ addons/web/static/src/js/view_form.js 2012-09-28 05:05:26 +0000
@@ -2233,6 +2233,80 @@
}
});
+instance.web.form.Monetary = instance.web.form.FieldFloat.extend({
+ template: 'FieldMonetary',
+ init: function (field_manager, node) {
+ this._super(field_manager, node);
+ var temp = py.eval(node.attrs["widget_option"]);
+ this.curr_field = temp["monetary_currency"];
+ this.curr_value = {};
+ this.check_curr_id;
+ },
+ start:function(){
+ this._super.apply(this, arguments);
+ $.when(this.view.has_been_loaded).then(this.proxy('bind_methods'));
+ },
+ bind_methods: function(){
+ var self = this;
+ var parent = this.getParent();
+ var set_value_stole = parent.fields[this.curr_field].set_value;
+ parent.on("change:actual_mode", self, self.proxy('value_validate'));
+ parent.fields[self.curr_field].set_value = function(value_){
+ self.check_curr_id = _.isArray(value_)?value_[0]:value_;
+ set_value_stole.apply(this,arguments);
+ self.value_validate();
+ };
+ },
+ value_validate : function(){
+ if(!this.check_curr_id)return this.clear_and_show();
+ var parent = this.getParent();
+ if(parent.get('actual_mode') === 'view' || parent.fields[this.curr_field].get('readonly')){
+ return this.data_load();
+ }
+ if(!parent.fields[this.curr_field].get('readonly')){
+ parent.fields[this.curr_field].set({force_invisible:false});
+ }
+ },
+ data_load: function(){
+ if( !_.has(this.curr_value,"id") || this.check_curr_id !== this.curr_value["id"]){
+ $.when(this.get_currency_detail()).done(this.proxy('show_symbol'));
+ return;
+ }
+ this.show_symbol();
+ return;
+ },
+ clear_and_show:function(){
+ this.renderElement();
+ this.render_value();
+ this.initialize_content();
+ },
+ show_symbol:function(){
+ var parent = this.getParent();
+ parent.fields[this.curr_field].set({force_invisible:true});
+ this.clear_and_show();
+ this.$el.addClass('oe_inline');
+ this.$el.filter(".monetary").text(this.curr_value['symbol']);
+ if(this.curr_value['position'] === 'after')
+ this.$el.filter(".oe_form_field_float").after(this.$el.filter(".monetary"));
+ },
+ render_value: function(){
+ var self = this;
+ var show_value = instance.web.format_value(this.get('value'), this, '');
+ if (!this.get("effective_readonly")) {
+ this.$el.find('input').val(show_value);
+ } else {
+ this.$el.filter(".oe_form_field_float").text(show_value);
+ }
+ },
+ get_currency_detail: function(){
+ var self = this;
+ var res_currency = new instance.web.Model('res.currency',{},[['id','=',this.check_curr_id]]).query(['position','symbol']);
+ return res_currency._execute().done(function(value){
+ self.curr_value = value[0];
+ });
+ }
+});
+
instance.web.DateTimeWidget = instance.web.Widget.extend({
template: "web.datepicker",
jqueryui_object: 'datetimepicker',
@@ -4923,7 +4997,8 @@
'progressbar': 'instance.web.form.FieldProgressBar',
'image': 'instance.web.form.FieldBinaryImage',
'binary': 'instance.web.form.FieldBinaryFile',
- 'statusbar': 'instance.web.form.FieldStatus'
+ 'statusbar': 'instance.web.form.FieldStatus',
+ 'monetary':'instance.web.form.Monetary'
});
/**
=== modified file 'addons/web/static/src/xml/base.xml'
--- addons/web/static/src/xml/base.xml 2012-09-27 13:29:20 +0000
+++ addons/web/static/src/xml/base.xml 2012-09-28 05:05:26 +0000
@@ -924,6 +924,11 @@
</t>
</span>
</t>
+<t t-name="FieldMonetary" t-extend="FieldChar">
+ <t t-jquery="span" t-operation="before">
+ <span class="monetary"></span>
+ </t>
+</t>
<t t-name="FieldEmail">
<span class="oe_form_field oe_form_field_email" t-att-style="widget.node.attrs.style">
<a t-if="widget.get('effective_readonly')" href="#" class="oe_form_uri" target="_blank"/>
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp