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

Reply via email to