Modification : gère point_of_sale.patch dans ce module.
[burette/pos_membership.git] / static / src / js / screens.js
diff --git a/static/src/js/screens.js b/static/src/js/screens.js
new file mode 100644 (file)
index 0000000..3e35a81
--- /dev/null
@@ -0,0 +1,120 @@
+function openerp_pos_membership_screens(instance, module){
+       module.PartnerScreenWidget = module.ScreenWidget.extend({
+               template:'PartnerScreenWidget',
+               
+               next_screen: 'products',
+               
+               show_numpad:     false,
+               show_leftpane:   false,
+               init: function(parent, options) {
+                       //console.log("[pos_membership] [PartnerScreenWidget] [init]");
+                       this._super(parent, options);
+                       this.model = options.model;
+                       // TODO: this.pos.bind('change:selectedOrder', this.change_selected_order, this);
+                },
+               start: function(){
+                       //console.log("[pos_membership] [PartnerScreenWidget] [start]");
+                       var self = this;
+                       
+                       this.partner_search_widget = new module.PartnerSearchWidget(this,{});
+                       this.partner_search_widget.replace($('.placeholder-PartnerSearchWidget'));
+                       
+                       this.partner_list_widget = new module.PartnerListWidget(this,{
+                               click_partner_action: function(partner){
+                                       self.pos.get('selectedOrder').addPartner(partner);
+                                       self.pos_widget.screen_selector.set_current_screen(self.next_screen);
+                                },
+                        });
+                       this.partner_list_widget.replace($('.placeholder-PartnerListWidget'));
+                },
+               show: function(){
+                       //console.log("[pos_membership] [PartnerScreenWidget] [show]");
+                       this._super();
+                       
+                       this.partner_search_widget.renderElement();
+                       
+                       if(this.pos.iface_vkeyboard){
+                               this.pos_widget.onscreen_keyboard.connect();
+                        }
+                },
+               close: function(){
+                       this._super();
+                       this.pos_widget.order_widget.set_numpad_state(null);
+                       this.pos_widget.payment_screen.set_numpad_state(null);
+                },
+        });
+       module.ProductScreenWidget = module.ProductScreenWidget.extend({
+               back_screen: 'partner',
+               show: function(){
+                       this._super();
+                       var self = this;
+                       this.back_button = this.add_action_button({
+                               label: 'Back',
+                               icon: '/point_of_sale/static/src/img/icons/png48/go-previous.png',
+                               click: function(){
+                                       self.pos.get('selectedOrder').get('orderLines').reset([]);
+                                       self.pos_widget.numpad.state.trigger('set_value','remove');
+                                       self.pos_widget.screen_selector.set_current_screen(self.back_screen);
+                                },
+                        });
+                },
+        });
+       module.PartnerCreateScreenWidget = module.ScreenWidget.extend({
+               template: 'PartnerCreateScreenWidget',
+               show_numpad: false,
+               show_leftpane: false,
+               back_screen: 'partner',
+               next_screen: 'products',
+               init: function(parent, options) {
+                       this._super(parent, options);
+                       this.model = options.model;
+                },
+               show: function(){
+                       //console.log("[pos_membership] [PartnerCreateScreenWidget] [show]");
+                       this._super();
+                       var self = this;
+                       
+                       this.back_button = this.add_action_button({
+                               label: 'Back',
+                               icon: '/point_of_sale/static/src/img/icons/png48/go-previous.png',
+                               click: function(){
+                                       self.pos_widget.screen_selector.set_current_screen(self.back_screen);
+                                },
+                        });
+                       this.validate_button = this.add_action_button({
+                               label: 'Validate',
+                               name: 'validation',
+                               icon: '/point_of_sale/static/src/img/icons/png48/validate.png',
+                               click: function(){
+                                       self.validatePartner();
+                                },
+                        });
+                       this.updatePartnerCreateSummary();
+                },
+               close: function(){
+                       this._super();
+                },
+               back: function() {
+                       this.pos_widget.screen_selector.set_current_screen(self.back_screen);
+                },
+               validatePartner: function() {
+                       var partner = this.pos.get('selectedPartner');
+                       
+                       this.pos.push_partner(partner.exportAsJSON());
+                       this.pos.get('selectedOrder').addPartner({name:partner.name}); // NOTE: .id set asynchronously in .done()
+                       this.pos_widget.screen_selector.set_current_screen(this.next_screen);
+                },
+               renderElement: function() {
+                       //console.log("[pos_membership] [PartnerCreateScreenWidget] [renderElement]");
+                       this._super();
+                       this.updatePartnerCreateSummary();
+                },
+               updatePartnerCreateSummary: function() {
+                       var partner = this.pos.get('selectedPartner');
+                       if(partner){
+                               //console.log("[pos_membership] [PartnerCreateScreenWidget] [updatePartnerCreateSummary] partner=",partner.get('name'));
+                               this.$('#partner-create-name').html(partner.get('name'));
+                        }
+                },
+        });
+ }