background: linear-gradient(#b2b3d7, #7f82ac);
}
-.point-of-sale #rightheader button.neworder-button {
+.point-of-sale #rightheader button.square{
width: 32px;
margin-left:4px;
- margin-right:4px;
}
.point-of-sale div#order-selector {
}
.point-of-sale ol#orders {
display: inline;
+ margin-left: 8px;
}
.point-of-sale li.order-selector-button {
display: inline;
}
.point-of-sale li.selected-order button {
font-weight: 900;
+ background: #7174A8 !important;
+ color: rgb(236, 237, 255) !important;
+ text-shadow: 0px 1px rgba(0, 0, 0, 0.31);
+ -webkit-box-shadow: 0px 1px 2px rgb(63, 66, 139) inset;
+ -moz-box-shadow: 0px 1px 2px rgb(63, 66, 139) inset;
+ -ms-box-shadow: 0px 1px 2px rgb(63, 66, 139) inset;
+ box-shadow: 0px 1px 2px rgb(63, 66, 139) inset;
}
/* c) The session buttons */
'selectedOrder': null,
});
- this.get('orders').bind('remove', function(){ self.on_removed_order(); });
+ this.get('orders').bind('remove', function(order,_unused_,options){
+ self.on_removed_order(order,options.index,options.reason);
+ });
// We fetch the backend data on the server asynchronously. this is done only when the pos user interface is launched,
// Any change on this data made on the server is thus not reflected on the point of sale until it is relaunched.
// this is called when an order is removed from the order collection. It ensures that there is always an existing
// order and a valid selected order
- on_removed_order: function(removed_order){
- if( this.get('orders').isEmpty()){
- this.add_new_order();
+ on_removed_order: function(removed_order,index,reason){
+ if(reason === 'abandon' && this.get('orders').size() > 0){
+ // when we intentionally remove an unfinished order, and there is another existing one
+ this.set({'selectedOrder' : this.get('orders').at(index) || this.get('orders').last()});
}else{
- this.set({ selectedOrder: this.get('orders').last() });
+ // when the order was automatically removed after completion,
+ // or when we intentionally delete the only concurrent order
+ this.add_new_order();
}
},
this.set('selectedOrder', order);
},
+ //removes the current order
+ delete_current_order: function(){
+ this.get('selectedOrder').destroy({'reason':'abandon'});
+ console.log('coucou!');
+ },
+
// saves the order locally and try to send it to the backend.
// it returns a deferred that succeeds after having tried to send the order and all the other pending orders.
push_order: function(order) {
this.order = options.order;
this.order.bind('destroy',function(){ self.destroy(); });
this.order.bind('change', function(){ self.renderElement(); });
- this.pos.bind('change:selectedOrder', _.bind( function(pos) {
- var selectedOrder;
- selectedOrder = pos.get('selectedOrder');
- if (this.order === selectedOrder) {
- this.setButtonSelected();
- }
- }, this));
+ this.pos.bind('change:selectedOrder', function() {
+ self.renderElement();
+ }, this);
},
renderElement:function(){
this._super();
this.$('button.select-order').off('click').click(_.bind(this.selectOrder, this));
this.$('button.close-order').off('click').click(_.bind(this.closeOrder, this));
+ if( this.order === this.pos.get('selectedOrder') ){
+ this.$el.addClass('selected-order');
+ }
},
selectOrder: function(event) {
this.pos.set({
selectedOrder: this.order
});
},
- setButtonSelected: function() {
- $('.selected-order').removeClass('selected-order');
- this.$el.addClass('selected-order');
- },
closeOrder: function(event) {
this.order.destroy();
},
this.leftpane_width = '440px';
this.cashier_controls_visible = true;
this.image_cache = new module.ImageCache(); // for faster products image display
+
+ $('.oe_tooltip').remove(); // remove tooltip from the start session button
},
start: function() {
self.$('.neworder-button').click(function(){
self.pos.add_new_order();
});
+
+ self.$('.deleteorder-button').click(function(){
+ self.pos.delete_current_order();
+ });
//when a new order is created, add an order button widget
self.pos.get('orders').bind('add', function(new_order){
</div>
<div id="rightheader">
<div id="order-selector">
- <button class="neworder-button">+</button>
+ <button class="neworder-button square">➕</button>
+ <button class="deleteorder-button square">➖</button>
<ol id="orders"></ol>
</div>
<!-- here goes header buttons -->