[IMP] stock_picking_ui: back and forward picking navigation
authorFrédéric van der Essen <fva@openerp.com>
Tue, 1 Oct 2013 09:21:22 +0000 (11:21 +0200)
committerFrédéric van der Essen <fva@openerp.com>
Tue, 1 Oct 2013 09:21:22 +0000 (11:21 +0200)
bzr revid: fva@openerp.com-20131001092122-l4rgh0ynch45huai

addons/stock/static/src/css/picking.css
addons/stock/static/src/js/widgets.js
addons/stock/static/src/xml/picking.xml

index b11f23f..58cb3df 100644 (file)
@@ -47,7 +47,7 @@
 }
 .oe_pick_widget .oe_pick_button{
     display: inline-block;
-    min-width: 120px;
+    min-width: 64px;
     padding: 5px;
     font-size: 18px;
     border-radius: 3px;
     cursor: pointer;
     text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
 }
+.oe_pick_widget .oe_pick_button.oe_disabled {
+    cursor: default;
+    background: linear-gradient(#666666, #474747);
+    border: solid 1px rgb(44, 44, 44);
+    color: rgb(53, 53, 53);
+    box-shadow: 0px 1px 1px rgba(255, 255, 255, 0.32) inset;
+}
 
-.oe_pick_widget .oe_pick_button:active{
+.oe_pick_widget .oe_pick_button:not(.oe_disabled):active{
     background: rgb(92, 84, 133);
     box-shadow: 0px 1px 0px 1px rgba(0,0,0,0.3) inset;
     margin: 11px 6px;
 }
 .oe_pick_widget .oe_pick_right_toolbar{
     float: right;
-}
-.oe_pick_widget .oe_pick_right_toolbar .oe_pick_button{
-    margin-right: 10px;
+    border-left: solid 1px black;
+    padding-left:  8px;
+    padding-right: 8px;
+    margin-left:  8px;
 }
 .oe_pick_widget .oe_pick_col_small{     width: 60px; }
 .oe_pick_widget .oe_pick_col_medium{    width: 100px; }
index c8f9145..517216f 100644 (file)
@@ -104,6 +104,7 @@ function openerp_picking_widgets(instance){
             var self = this;
 
             this.picking = null;
+            this.pickings = [];
             this.movelines = null;
             this.operations = null;
             this.packages = null;
@@ -125,10 +126,12 @@ function openerp_picking_widgets(instance){
             if(picking_id){
                 var picking = new instance.web.Model('stock.picking').call('read',[[picking_id], []]);
             }else{ 
-                var picking = new instance.web.Model('stock.picking')
+                var picking  = new $.Deferred();
+                var pickings = new instance.web.Model('stock.picking')
                     .call('get_picking_for_packing_ui')
-                    .then(function(picking_id){
-                        if(!picking_id){
+                    .then(function(picking_ids){
+                        console.log('Picking Ids',picking_ids);
+                        if(!picking_ids || picking_ids.length === 0){
                             (new instance.web.Dialog(self,{
                                 title: _t('No Picking Available'),
                                 buttons: [{ 
@@ -139,9 +142,13 @@ function openerp_picking_widgets(instance){
                                 }]
                             }, _t('<p>We could not find a picking to display.</p>'))).open();
 
-                            return (new $.Deferred()).reject();
+                            picking.reject();
                         }else{
-                            return new instance.web.Model('stock.picking').call('read',[[picking_id],[]]);
+                            self.pickings = picking_ids;
+                            new instance.web.Model('stock.picking').call('read',[[picking_ids[0]],[]])
+                                .then(function(pick){
+                                    picking.resolve(pick);
+                                });
                         }
                     });
             }
@@ -188,6 +195,8 @@ function openerp_picking_widgets(instance){
             this.$('.js_pick_quit').click(function(){ self.quit(); });
             this.$('.js_pick_pack').click(function(){ self.pack(); });
             this.$('.js_pick_done').click(function(){ self.done(); });
+            this.$('.js_pick_prev').click(function(){ self.picking_prev(); });
+            this.$('.js_pick_next').click(function(){ self.picking_next(); });
 
             $.when(this.loaded).done(function(){
                 self.picking_editor = new module.PickingEditorWidget(self);
@@ -198,6 +207,19 @@ function openerp_picking_widgets(instance){
 
                 self.package_selector = new module.PackageSelectorWidget(self);
                 self.package_selector.replace(self.$('.oe_placeholder_package_selector'));
+                
+                if( self.picking.id === self.pickings[0]){
+                    self.$('.js_pick_prev').addClass('oe_disabled');
+                }else{
+                    self.$('.js_pick_prev').removeClass('oe_disabled');
+                }
+                
+                if( self.picking.id === self.pickings[self.pickings.length-1] ){
+                    self.$('.js_pick_next').addClass('oe_disabled');
+                }else{
+                    self.$('.js_pick_next').removeClass('oe_disabled');
+                }
+
             });
 
 
@@ -213,6 +235,17 @@ function openerp_picking_widgets(instance){
                     self.picking_editor.renderElement();
                     self.package_editor.renderElement();
                     self.package_selector.renderElement();
+                    if( self.picking.id === self.pickings[0]){
+                        self.$('.js_pick_prev').addClass('oe_disabled');
+                    }else{
+                        self.$('.js_pick_prev').removeClass('oe_disabled');
+                    }
+                    
+                    if( self.picking.id === self.pickings[self.pickings.length-1] ){
+                        self.$('.js_pick_next').addClass('oe_disabled');
+                    }else{
+                        self.$('.js_pick_next').removeClass('oe_disabled');
+                    }
                 });
         },
         scan: function(ean){
@@ -257,6 +290,26 @@ function openerp_picking_widgets(instance){
                     return self.do_action(action);
                 });
         },
+        picking_next: function(){
+            for(var i = 0; i < this.pickings.length; i++){
+                if(this.pickings[i] === this.picking.id){
+                    if(i < this.pickings.length -1){
+                        this.refresh_ui(this.pickings[i+1]);
+                        return;
+                    }
+                }
+            }
+        },
+        picking_prev: function(){
+            for(var i = 0; i < this.pickings.length; i++){
+                if(this.pickings[i] === this.picking.id){
+                    if(i > 0){
+                        this.refresh_ui(this.pickings[i-1]);
+                        return;
+                    }
+                }
+            }
+        },
         copy_package: function(package_id){
             var self = this;
             console.log('Copy Package:',package_id);
index 72129bd..6b15dbb 100644 (file)
         </div>
     </t>
 
+    <t t-name='PickingMenuWidget'>
+    </t>
+
     <t t-name="PickingMainWidget">
         <div class='oe_pick_widget'>
             <table class='oe_pick_layout'>
                     <td class='oe_pick_header'>
 
                         <div class='oe_pick_right_toolbar'>
+                            <div class='oe_pick_button js_pick_menu'> Menu </div>
                             <div class='oe_pick_button js_pick_quit'> Quit </div>
                         </div>
                         
                                 <div class='oe_placeholder_picking_editor'></div>
                                 <div class='oe_placeholder_package_editor'></div>
                                 <div class='oe_placeholder_package_selector'></div>
+                                <div class='oe_placeholder_menu'></div>
 
                             </div>
                         </div>