--- /dev/null
+function openerp_pos_membership_widgets(instance, module){
+ module.PartnerWidget = module.PosBaseWidget.extend({
+ template: 'PartnerWidget',
+ init: function(parent, options){
+ this._super(parent,options);
+ this.model = options.model;
+ this.next_screen = options.next_screen; //when a partner is clicked, this screen is set
+ this.click_partner_action = options.click_partner_action;
+ },
+ renderElement: function(){
+ // NOTE: returns the url of the partner thumbnail
+ //console.log("[pos_membership] [PartnerWidget] [renderElement]");
+ this._super();
+ this.$('img').replaceWith(this.pos_widget.image_cache.get_image(this.model.get_image_url()));
+ var self = this;
+ $("a", this.$el).click(function(e){
+ if(self.click_partner_action){
+ self.click_partner_action(self.model);
+ }
+ });
+ },
+ });
+ module.PartnerSearchWidget = module.PosBaseWidget.extend({
+ template: 'PartnerSearchWidget',
+ init: function(parent, options){
+ var self = this;
+ this._super(parent,options);
+ },
+ get_image_url: function(partner){
+ return instance.session.url('/web/binary/image', {model: 'res.partner', field: 'image', id: partner.id});
+ },
+ renderElement: function(){
+ //console.log("[pos_membership] [PartnerSearchWidget] [renderElement]");
+ var self = this;
+ this._super();
+ this.filter();
+ },
+ filter: function(category){
+ var self = this;
+
+ var partners = self.pos.db.get_partner_list();
+ //console.log("[pos_membership] [PartnerSearchWidget] [filter] partners=",partners);
+ self.pos.get('partners').reset(partners);
+
+ this.$('.searchbox input').keyup(function(){
+ query = $(this).val();
+ if(query){
+ //console.log("[pos_membership] [PartnerSearchWidget] [filter]: query:", query);
+ var partners = self.pos.db.search_partner(query);
+ self.pos.get('partners').reset(partners);
+ //if(partners.length == 0) {
+ //console.log("[pos_membership] [PartnerSearchWidget] [filter]: no result");
+ self.query = query;
+ self.$('.search-create').fadeIn();
+ //}else{
+ // self.$('.search-create').fadeOut();
+ //}
+ self.$('.search-clear').fadeIn();
+ }
+ else{
+ var partners = self.pos.db.get_partner_list();
+ self.pos.get('partners').reset(partners);
+ self.$('.search-clear').fadeOut();
+ self.$('.search-create').fadeOut();
+ }
+ });
+ this.$('.searchbox input').click(function(){}); //Why ???
+ this.$('.search-clear').click(function(){
+ var partners = self.pos.db.get_partner_list();
+ self.pos.get('partners').reset(partners);
+ self.$('.searchbox input').val('').focus();
+ self.$('.search-clear').fadeOut();
+ self.$('.search-create').fadeOut();
+ });
+ this.$('.search-create').click(function(){
+ var partners = self.pos.db.get_partner_list();
+ self.pos.get('partners').reset(partners);
+ self.$('.searchbox input').val('').focus();
+ self.$('.search-clear').fadeOut();
+ self.$('.search-create').fadeOut();
+ //console.log("[pos_membership] [PartnerSearchWidget] [filter] [search-create] query=",self.query);
+ self.pos.add_new_partner({name:self.query});
+ self.pos_widget.screen_selector.set_current_screen('partner_create');
+ });
+ },
+ });
+ module.PartnerListWidget = module.ScreenWidget.extend({
+ template:'PartnerListWidget',
+ init: function(parent, options) {
+ //console.log("[pos_membership] [PartnerListWidget] [init]");
+ var self = this;
+ this._super(parent, options);
+ this.model = options.model;
+ this.partnerwidgets = [];
+ this.weight = options.weight || 0;
+ this.show_scale = options.show_scale || false;
+ this.next_screen = options.next_screen || false;
+ this.back_screen = options.back_screen || false;
+ this.click_partner_action = options.click_partner_action;
+
+ this.pos.get('partners').bind('reset', function(){
+ //console.log("[pos_membership] [PartnerListWidget] [bind] [reset]");
+ self.renderElement();
+ });
+ },
+ renderElement: function() {
+ //console.log("[pos_membership] [PartnerListWidget] [renderElement]");
+ var self = this;
+ this._super();
+
+ // free subwidgets memory from previous renders
+ for(var i = 0, len = this.partnerwidgets.length; i < len; i++){
+ this.partnerwidgets[i].destroy();
+ }
+ this.partnerwidgets = [];
+ if(this.scrollbar){
+ this.scrollbar.destroy();
+ }
+ var partners = this.pos.get('partners').models || [];
+ for(var i = 0, len = partners.length; i < len; i++){
+ //console.log("[pos_membership] [PartnerListWidget] [renderElement]: partners[i].get('name')=",partners[i].get('name'));
+ var partner = new module.PartnerWidget(self, {
+ model: partners[i],
+ click_partner_action: this.click_partner_action,
+ });
+ this.partnerwidgets.push(partner);
+ partner.appendTo(this.$('.partner-list'));
+ }
+ this.scrollbar = new module.ScrollbarWidget(this,{
+ target_widget: this,
+ target_selector: '.partner-list-scroller',
+ on_show: function(){
+ self.$('.partner-list-scroller').css({'padding-right':'62px'},100);
+ },
+ on_hide: function(){
+ self.$('.partner-list-scroller').css({'padding-right':'0px'},100);
+ },
+ });
+
+ this.scrollbar.replace(this.$('.placeholder-ScrollbarWidget'));
+ },
+ });
+ module.PosWidget = module.PosWidget.extend({
+ build_widgets: function() {
+ var self = this;
+
+ // -------- Screens ---------
+
+ // BEGIN pos_membership
+ this.partner_screen = new module.PartnerScreenWidget(this,{});
+ this.partner_screen.appendTo($('#rightpane'));
+ // END pos_membership
+
+ this.product_screen = new module.ProductScreenWidget(this,{});
+ this.product_screen.appendTo($('#rightpane'));
+
+ this.receipt_screen = new module.ReceiptScreenWidget(this, {});
+ this.receipt_screen.appendTo($('#rightpane'));
+
+ this.payment_screen = new module.PaymentScreenWidget(this, {});
+ this.payment_screen.appendTo($('#rightpane'));
+
+ // BEGIN pos_membership
+ this.partner_create_screen = new module.PartnerCreateScreenWidget(this, {});
+ this.partner_create_screen.appendTo($('#rightpane'));
+ // END pos_membership
+
+ this.welcome_screen = new module.WelcomeScreenWidget(this,{});
+ this.welcome_screen.appendTo($('#rightpane'));
+
+ this.client_payment_screen = new module.ClientPaymentScreenWidget(this, {});
+ this.client_payment_screen.appendTo($('#rightpane'));
+
+ this.scale_invite_screen = new module.ScaleInviteScreenWidget(this, {});
+ this.scale_invite_screen.appendTo($('#rightpane'));
+
+ this.scale_screen = new module.ScaleScreenWidget(this,{});
+ this.scale_screen.appendTo($('#rightpane'));
+
+ // -------- Popups ---------
+
+ this.help_popup = new module.HelpPopupWidget(this, {});
+ this.help_popup.appendTo($('.point-of-sale'));
+
+ this.error_popup = new module.ErrorPopupWidget(this, {});
+ this.error_popup.appendTo($('.point-of-sale'));
+
+ this.error_product_popup = new module.ProductErrorPopupWidget(this, {});
+ this.error_product_popup.appendTo($('.point-of-sale'));
+
+ this.error_session_popup = new module.ErrorSessionPopupWidget(this, {});
+ this.error_session_popup.appendTo($('.point-of-sale'));
+
+ this.choose_receipt_popup = new module.ChooseReceiptPopupWidget(this, {});
+ this.choose_receipt_popup.appendTo($('.point-of-sale'));
+
+ this.error_negative_price_popup = new module.ErrorNegativePricePopupWidget(this, {});
+ this.error_negative_price_popup.appendTo($('.point-of-sale'));
+
+ // -------- Misc ---------
+
+ this.notification = new module.SynchNotificationWidget(this,{});
+ this.notification.appendTo(this.$('#rightheader'));
+
+ this.username = new module.UsernameWidget(this,{});
+ this.username.replace(this.$('.placeholder-UsernameWidget'));
+
+ this.action_bar = new module.ActionBarWidget(this);
+ this.action_bar.appendTo($(".point-of-sale #rightpane"));
+
+ this.left_action_bar = new module.ActionBarWidget(this);
+ this.left_action_bar.appendTo($(".point-of-sale #leftpane"));
+
+ this.paypad = new module.PaypadWidget(this, {});
+ this.paypad.replace($('#placeholder-PaypadWidget'));
+
+ this.numpad = new module.NumpadWidget(this);
+ this.numpad.replace($('#placeholder-NumpadWidget'));
+
+ this.order_widget = new module.OrderWidget(this, {});
+ this.order_widget.replace($('#placeholder-OrderWidget'));
+
+ this.onscreen_keyboard = new module.OnscreenKeyboardWidget(this, {
+ 'keyboard_model': 'simple'
+ });
+ this.onscreen_keyboard.appendTo($(".point-of-sale #content"));
+
+ this.close_button = new module.HeaderButtonWidget(this,{
+ label:'Close',
+ action: function(){ self.try_close(); },
+ });
+ this.close_button.appendTo(this.$('#rightheader'));
+
+ this.client_button = new module.HeaderButtonWidget(this,{
+ label:'Self-Checkout',
+ action: function(){ self.screen_selector.set_user_mode('client'); },
+ });
+ this.client_button.appendTo(this.$('#rightheader'));
+
+
+ // -------- Screen Selector ---------
+
+ this.screen_selector = new module.ScreenSelector({
+ pos: this.pos,
+ screen_set:{
+ 'products': this.product_screen,
+ 'payment' : this.payment_screen,
+ 'client_payment' : this.client_payment_screen,
+ 'scale_invite' : this.scale_invite_screen,
+ 'scale': this.scale_screen,
+ 'receipt' : this.receipt_screen,
+ 'welcome' : this.welcome_screen,
+ // BEGIN pos_membership
+ 'partner' : this.partner_screen,
+ 'partner_create' : this.partner_create_screen,
+ // END pos_membership
+ },
+ popup_set:{
+ 'help': this.help_popup,
+ 'error': this.error_popup,
+ 'error-product': this.error_product_popup,
+ 'error-session': this.error_session_popup,
+ 'error-negative-price': this.error_negative_price_popup,
+ 'choose-receipt': this.choose_receipt_popup,
+ },
+ default_client_screen: 'welcome',
+ // BEGIN pos_membership
+ default_cashier_screen: 'partner',
+ // END pos_membership
+ default_mode: this.pos.iface_self_checkout ? 'client' : 'cashier',
+ });
+
+ if(this.pos.debug){
+ this.debug_widget = new module.DebugWidget(this);
+ this.debug_widget.appendTo(this.$('#content'));
+ }
+ },
+ });
+ }