[IMP]add blocked reason dialog
authorRashmin Lumbhani (OpenERP) <rlu@tinyerp.com>
Fri, 11 Apr 2014 12:23:20 +0000 (17:53 +0530)
committerRashmin Lumbhani (OpenERP) <rlu@tinyerp.com>
Fri, 11 Apr 2014 12:23:20 +0000 (17:53 +0530)
bzr revid: rlu@tinyerp.com-20140411122320-o0zmebvaz0985mrx

addons/web/static/src/js/view_form.js
addons/web_kanban/static/src/js/kanban.js

index 04e9687..5fbbd1e 100644 (file)
@@ -2367,7 +2367,42 @@ instance.web.form.DropdownSelection = instance.web.form.FieldChar.extend({
         this.$el.on('mouseenter mouseleave', function(e) {
             self.$el.find('.caret').toggleClass('hidden', e.type == 'mouseleave');
         });
-        
+    },
+    on_click_block_reason: function(event) {
+        var self = this;
+        var li = $(event.target).closest( "li" );
+        $('div.oe_edit_actions').remove();
+        self.$dialog = new instance.web.dialog($('<div class="oe_edit_actions"><textarea id="txtReason"rows="3" cols="40"></textarea></div>'), {
+            modal: true,
+            width: 'auto',
+            height: 'auto',
+            title: _t('Reason for blocking'),
+            buttons: [
+                        {   
+                            class: 'oe_highlight',
+                            text: _t("Block"), click: function() { 
+                                if ($("#txtReason").val() == "") {
+                                    alert('Reason Required');                                            
+                                } else {                                  
+                                    value[self.name] = String(li.data('value'));
+                                    var reason = $("#txtReason").val()
+                                    $(this).dialog("close");
+                                    if (self.record_id) {
+                                        self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()])
+                                        return self.view.dataset._model.call('message_post', [[self.record_id], reason]).done(self.reload_record.bind(self));
+                                    } else {
+                                        return self.view.on_button_save().done(function(result) {
+                                            if (result) {
+                                                self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self)); 
+                                            }
+                                        });
+                                    }
+                                };
+                            }
+                        },
+                        { text: _t("Cancel"), click: function() { $(this).dialog("close"); }}
+                    ],
+        });
     },
     do_action: function(e) {
         var self = this;
@@ -2375,12 +2410,22 @@ instance.web.form.DropdownSelection = instance.web.form.FieldChar.extend({
         if (li.length) {
             var value = {};
             value[self.name] = String(li.data('value'));
-            if (self.record_id) {
-                return self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
-            } else {
-                return self.view.on_button_save().done(function(result) {
-                    if (result) {
-                        self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
+            if (self.view.datarecord.stage_id) {
+                var stage_id = _.isArray(self.view.datarecord.stage_id) ? self.view.datarecord.stage_id[0] : self.view.datarecord.stage_id
+                new openerp.web.Model(self.view.fields.stage_id.field.relation).query([])
+                    .filter([["id", "=", stage_id]]).first().then(function(res) {
+                    if ((res.block_reason) && value[self.name] == 'blocked') {
+                        self.on_click_block_reason(e);
+                    } else {
+                        if (self.record_id) {
+                            return self.view.dataset._model.call('write', [[self.record_id], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
+                        } else {
+                            return self.view.on_button_save().done(function(result) {
+                                if (result) {
+                                    self.view.dataset._model.call('write', [[result], value, self.view.dataset.get_context()]).done(self.reload_record.bind(self));
+                                }
+                            });
+                        }
                     }
                 });
             }
index 934de72..919e5cb 100644 (file)
@@ -1334,15 +1334,54 @@ instance.web_kanban.DropdownSelection = instance.web_kanban.AbstractField.extend
             self.$el.find('.caret').toggleClass('hidden', e.type == 'mouseleave');
         });
     },
+
+    on_click_block_reason: function(event) {
+        var self = this;
+        var li = $(event.target).closest( "li" );
+        $('div.oe_edit_actions').remove();
+        self.$dialog = new instance.web.dialog($('<div class="oe_edit_actions"><textarea id="txtReason"rows="3" cols="40"></textarea></div>'), {
+            modal: true,
+            width: 'auto',
+            height: 'auto',
+            title: _t('Reason for blocking'),
+            buttons: [
+                        {
+                            class: 'oe_highlight',
+                            text: _t("Block"), click: function() {
+                                if ($("#txtReason").val() == "") {
+                                    alert('Reason Required');
+                                } else {
+                                    value[self.name] = String(li.data('value'));
+                                    var reason = $("#txtReason").val();
+                                    $(this).dialog("close");
+                                    self.parent.view.dataset._model.call('write', [[self.record_id], value, self.parent.view.dataset.get_context()]).done(self.reload_record.bind(self.parent));
+                                    return self.parent.view.dataset._model.call('message_post', [[self.record_id], reason]);        
+                                };
+                            }},
+                            { text: _t("Cancel"), click: function() { $(this).dialog("close"); }}
+                    ],
+                });
+},
     do_action: function(e) {
         var self = this;
         var li = $(e.target).closest( "li" );
         if (li.length) {
             var value = {};
             value[self.name] = String(li.data('value'));
-            return self.parent.view.dataset._model.call('write', [[self.record_id], value, self.parent.view.dataset.get_context()]).done(self.reload_record.bind(self.parent));
-        }
-    },
+            if (self.parent.group.value) {
+                var stage_id = self.parent.group.value
+                new openerp.web.Model(self.parent.record.stage_id.relation).query([])
+                    .filter([["id", "=", stage_id]]).first().then(function(res) {
+                        if ((res.block_reason) && value[self.name] == 'blocked') {
+                            self.on_click_block_reason(e);
+                        } else {
+                            return self.parent.view.dataset._model.call('write', [[self.record_id], value, self.parent.view.dataset.get_context()]).done(self.reload_record.bind(self.parent));
+                        }
+                    });
+                }
+            }
+        },
+
     reload_record: function() {
         this.do_reload();
     },