From b87e0a1790195af940c89b4884645727e448e1f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Tue, 1 Oct 2013 11:21:22 +0200 Subject: [PATCH] [IMP] stock_picking_ui: back and forward picking navigation bzr revid: fva@openerp.com-20131001092122-l4rgh0ynch45huai --- addons/stock/static/src/css/picking.css | 18 +++++-- addons/stock/static/src/js/widgets.js | 63 +++++++++++++++++++++++-- addons/stock/static/src/xml/picking.xml | 5 ++ 3 files changed, 76 insertions(+), 10 deletions(-) diff --git a/addons/stock/static/src/css/picking.css b/addons/stock/static/src/css/picking.css index b11f23f6021..58cb3dfc685 100644 --- a/addons/stock/static/src/css/picking.css +++ b/addons/stock/static/src/css/picking.css @@ -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; @@ -62,8 +62,15 @@ 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; @@ -78,9 +85,10 @@ } .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; } diff --git a/addons/stock/static/src/js/widgets.js b/addons/stock/static/src/js/widgets.js index c8f91452adf..517216f4376 100644 --- a/addons/stock/static/src/js/widgets.js +++ b/addons/stock/static/src/js/widgets.js @@ -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('

We could not find a picking to display.

'))).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); diff --git a/addons/stock/static/src/xml/picking.xml b/addons/stock/static/src/xml/picking.xml index 72129bd0dc2..6b15dbb70cf 100644 --- a/addons/stock/static/src/xml/picking.xml +++ b/addons/stock/static/src/xml/picking.xml @@ -154,6 +154,9 @@ + + +
@@ -161,6 +164,7 @@
+
Menu
Quit
@@ -183,6 +187,7 @@
+