Vidhin Mehta  (OpenERP) has proposed merging 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-2-vme into 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-float.

Requested reviews:
  OpenERP R&D Team (openerp-dev)

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-monetary-widget-2-vme/+merge/122047
-- 
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-monetary-widget-2-vme/+merge/122047
Your team OpenERP R&D Team is requested to review the proposed merge of 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-2-vme into 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-float.
=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js	2012-08-30 12:07:10 +0000
+++ addons/web/static/src/js/view_form.js	2012-08-30 12:10:29 +0000
@@ -2973,7 +2973,63 @@
         return instance.web.form.CompletionFieldMixin._search_create_popup.apply(this, arguments);
     },
 });
-
+instance.web.form.Monetary = instance.web.form.FieldMany2One.extend({
+    init: function(field_manager, node){
+        this._super(field_manager, node);
+        this.currency_value;
+        this.data_loaded = $.Deferred();
+        this.currency_el;
+        this.old_position;
+        var temp = py.eval(node.attrs["widget_option"]);
+        this.amount_field_name = _.isArray(temp["monetary_amount"])?
+        temp["monetary_amount"]:[temp["monetary_amount"]];
+    },
+    set_value: function(value_){
+        var self = this;
+        var value = _.isArray(value_)?value_[0]:value_;
+        var call_rpc = (value != this.get("value"))?true:false;
+        this._super.apply(this,arguments);
+        if(this.get("effective_readonly") && call_rpc){
+            $.when(this.view.has_been_loaded,this.get_currency_detail(value)).then(function(){
+                self.render_monetary();
+            });
+        }
+    },
+    render_monetary:function(){
+        var self = this;
+        var render_mon = function(){
+            self.display_string(self.currency_value['symbol']);
+            var unique = _.uniqueId('monetary_');
+            var clone_span = self.$el.detach();
+              _.each(self.amount_field_name,function(field){
+                    var field_float = self.view.fields[field];
+                    var clone = clone_span.clone(true).addClass(unique);
+                    if (field_float){
+                        field_float.$el[self.old_position](clone);
+                    }
+            });
+            self.currency_el = self.view.$el.find("."+unique);
+        };
+        if(_.isUndefined(this.currency_el)){
+            this.old_position = this.currency_value['position'];
+            render_mon();
+        }else{
+            if(this.old_position != this.currency_value['position']){
+                this.old_position = this.currency_value['position'];
+                self.currency_el.remove();
+                render_mon();
+            }
+            this.currency_el.find(".oe_form_uri").html(this.currency_value['symbol']);
+        }
+    },
+    get_currency_detail: function(value_){
+        var self = this;
+        var res_currency = new  instance.web.Model('res.currency',{},[['id','=',value_]]).query(['position','symbol']);
+        return res_currency._execute().done(function(value){
+            self.currency_value = value[0];
+        });
+    }
+});
 /*
 # Values: (0, 0,  { fields })    create
 #         (1, ID, { fields })    update
@@ -4801,7 +4857,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'
 });
 
 /**

_______________________________________________
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

Reply via email to