[WIP] point_of_sale, pos_discount: action buttons + adapt the pos_discount code after pos refactor
This commit is contained in:
@@ -794,6 +794,49 @@ openerp.point_of_sale.load_screens = function load_screens(instance, module){ //
|
||||
},
|
||||
});
|
||||
|
||||
/* -------- The Action Buttons -------- */
|
||||
|
||||
// Above the numpad and the actionpad, buttons
|
||||
// for extra actions and controls by point of
|
||||
// sale extensions modules.
|
||||
|
||||
module.action_button_classes = [];
|
||||
module.define_action_button = function(classe, options){
|
||||
options = options || {};
|
||||
|
||||
var classes = module.action_button_classes;
|
||||
var index = classes.length;
|
||||
|
||||
if (options.after) {
|
||||
for (var i = 0; i < classes.length; i++) {
|
||||
if (classes[i].name === options.after) {
|
||||
index = i + 1;
|
||||
}
|
||||
}
|
||||
} else if (options.before) {
|
||||
for (var i = 0; i < classes.length; i++) {
|
||||
if (classes[i].name === options.after) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
classes.splice(i,0,classe);
|
||||
};
|
||||
|
||||
module.ActionButtonWidget = module.PosBaseWidget.extend({
|
||||
template: 'ActionButtonWidget',
|
||||
label: _t('Button'),
|
||||
renderElement: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
this.$el.click(function(){
|
||||
self.button_click();
|
||||
});
|
||||
},
|
||||
button_click: function(){},
|
||||
});
|
||||
|
||||
/* -------- The Product Screen -------- */
|
||||
|
||||
module.ProductScreenWidget = module.ScreenWidget.extend({
|
||||
@@ -824,6 +867,20 @@ openerp.point_of_sale.load_screens = function load_screens(instance, module){ //
|
||||
product_list_widget: this.product_list_widget,
|
||||
});
|
||||
this.product_categories_widget.replace(this.$('.placeholder-ProductCategoriesWidget'));
|
||||
|
||||
this.action_buttons = {};
|
||||
var classes = module.action_button_classes;
|
||||
for (var i = 0; i < classes.length; i++) {
|
||||
var classe = classes[i];
|
||||
if ( !classe.condition || classe.condition.call(this) ) {
|
||||
var widget = new classe.widget(this,{});
|
||||
widget.appendTo(this.$('.control-buttons'));
|
||||
this.action_buttons[classe.name] = widget;
|
||||
}
|
||||
}
|
||||
if (_.size(this.action_buttons)) {
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
}
|
||||
},
|
||||
|
||||
click_product: function(product) {
|
||||
|
||||
@@ -93,6 +93,12 @@
|
||||
<div>There are pending operations that could not be saved into the database, are you sure you want to exit?</div>
|
||||
</t>
|
||||
|
||||
<t t-name="ActionButtonWidget">
|
||||
<div class='control-button'>
|
||||
<t t-esc='widget.label' />
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="ActionpadWidget">
|
||||
<div class="actionpad">
|
||||
<button class='button set-customer'>
|
||||
|
||||
@@ -5,30 +5,24 @@ openerp.pos_discount = function(instance){
|
||||
|
||||
QWeb.add_template('/pos_discount/static/src/xml/discount.xml');
|
||||
|
||||
module.PosWidget.include({
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
if(!this.pos.config.discount_product_id){
|
||||
return;
|
||||
module.DiscountButton = module.ActionButtonWidget.extend({
|
||||
template: 'DiscountButton',
|
||||
button_click: function(){
|
||||
var order = this.pos.get_order();
|
||||
var product = this.pos.db.get_product_by_id(this.pos.config.discount_product_id[0]);
|
||||
var discount = - this.pos.config.discount_pc/ 100.0 * order.get_total_with_tax();
|
||||
if( discount < 0 ){
|
||||
order.add_product(product, { price: discount });
|
||||
}
|
||||
|
||||
var discount = $(QWeb.render('DiscountButton'));
|
||||
|
||||
discount.click(function(){
|
||||
var order = self.pos.get_order();
|
||||
var product = self.pos.db.get_product_by_id(self.pos.config.discount_product_id[0]);
|
||||
var discount = - self.pos.config.discount_pc/ 100.0 * order.get_total_tax_included();
|
||||
if( discount < 0 ){
|
||||
order.add_product(product, { price: discount });
|
||||
}
|
||||
});
|
||||
|
||||
discount.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
},
|
||||
});
|
||||
|
||||
module.define_action_button({
|
||||
'name': 'discount',
|
||||
'widget': module.DiscountButton,
|
||||
'condition': function(){
|
||||
return this.pos.config.discount_product_id;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user