Vidhin Mehta  (OpenERP) has proposed merging 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-float-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-float-vme/+merge/121130

Made monetary widget for currency value(float field).

<field name="amount"  widget="monetary" 
widget_option="{'monetary_currency':'currency_id'}"/>

-> currency_id is many2one field of res.currency model.
-> if widget_option not specifed warning display.
-> Before/After position of currency symbol is determine from res.currency 
model.
-> currency symbol not displayed on create mode.
-- 
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-monetary-widget-float-vme/+merge/121130
Your team OpenERP R&D Team is requested to review the proposed merge of 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-float-vme into 
lp:~openerp-dev/openerp-web/trunk-monetary-widget-float.
=== 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-08-24 08:13:22 +0000
@@ -111,6 +111,7 @@
             return value_if_empty === undefined ?  '' : value_if_empty;
     }
     var l10n = _t.database.parameters;
+    //console.log(descriptor.widget , descriptor.type , descriptor.field , descriptor.field.type);
     switch (descriptor.widget || descriptor.type || (descriptor.field && descriptor.field.type)) {
         case 'id':
             return value.toString();
@@ -118,6 +119,7 @@
             return instance.web.insert_thousand_seps(
                 _.str.sprintf('%d', value));
         case 'float':
+        case 'monetory':
             var digits = descriptor.digits ? descriptor.digits : [69,2];
             digits = typeof digits === "string" ? py.eval(digits) : digits;
             var precision = digits[1];
@@ -164,6 +166,7 @@
             if (result) { return result[1]; }
             return;
         default:
+            
             return value;
     }
 };

=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js	2012-08-23 15:37:10 +0000
+++ addons/web/static/src/js/view_form.js	2012-08-24 08:13:22 +0000
@@ -2167,7 +2167,63 @@
         this.$('input:first').select();
     }
 });
-
+instance.web.form.Monetary = instance.web.form.FieldFloat.extend({
+     template: 'FieldMonetary',
+     init: function (field_manager, node) {
+         console.log('iniit');
+        this._super(field_manager, node);
+        this.monetary_disable = false;
+        if(!_.has(node.attrs,"widget_option")){
+            this.monetary_disable = true;
+            this.do_warn(_t('widget_option not specifed'));
+            return; 
+        }
+        var temp = py.eval(node.attrs["widget_option"]);
+        this.currency_field_name = temp["monetary_currency"];
+        this.currency_value;
+        this.currency_position;
+        this.data_loaded = $.Deferred();
+    },
+    render_value: function(){
+        var self = this;
+        if(this.is_valid())return this._super.apply(this, arguments);
+        var show_value = instance.web.format_value(this.get('value'), this, '');
+        if (!this.get("effective_readonly")) {
+            this.$element.find('input').val(show_value);
+        } else {
+            this.$element.filter(".oe_form_field_float").text(show_value);
+        }
+        this.data_loaded.done(function(){
+            self.$element.filter(".monetary").text(self.currency_value[1]);
+        });
+    },
+    is_valid:function(){
+        return this.monetary_disable || (!this.monetary_disable && _.isNull(this.view.dataset.index));
+    },
+    renderElement:function(){
+      var self = this;
+      this._super.apply(this, arguments);
+      if(this.is_valid())return;
+      if(this.data_loaded.state() == "pending")this.get_currency_detail();
+      this.$element.addClass('oe_inline');
+      this.data_loaded.done(function(){
+        if(self.currency_position == "after")
+            self.$element.filter(".oe_form_field_float").after(self.$element.filter(".monetary"));
+      });
+    },
+    get_currency_detail: function(){
+        var self = this;
+        var id = this.view.dataset.ids[this.view.dataset.index];
+         this.view.dataset.read_ids([id],[self.currency_field_name]).done(function(res){
+             self.currency_value = res[0][self.currency_field_name];
+             var res_currency = new  instance.web.Model('res.currency',{},[['id','=',res[0]["id"]]]).query(['position'])
+             res_currency._execute().done(function(position){
+                 self.currency_position = position[0]['position'];
+                 self.data_loaded.resolve();
+             });    
+         });
+    }
+});
 instance.web.DateTimeWidget = instance.web.Widget.extend({
     template: "web.datepicker",
     jqueryui_object: 'datetimepicker',
@@ -4803,7 +4859,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-08-21 09:30:00 +0000
+++ addons/web/static/src/xml/base.xml	2012-08-24 08:13:22 +0000
@@ -941,6 +941,11 @@
         </t>
     </span>
 </t>
+<t t-name="FieldMonetary" t-extend="FieldChar">
+    <t t-jquery="span" t-operation="before">
+        <span t-if = "!widget.monetary_disable" 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