--- /dev/null
+function openerp_pos_membership_db(instance, module){
+ module.PosLS = module.PosLS.extend({
+ init: function(options){
+ //console.log("[pos_membership] [PosLS] [init]: options=", options, "this=", this);
+ this._super(this, options);
+ this.partner_search_string = '';
+ this.partner_by_id = {};
+ this.partner_list = [];
+ },
+ _partner_search_string: function(partner){
+ var str = '' + partner.id + ':' + partner.name;
+ return str + '\n';
+ },
+ add_partners: function(partners){
+ if(!partners instanceof Array){
+ partners = [partners];
+ }
+ //console.log("[pos_membership] [add_partners] :", partners);
+ for(var i = 0, len = partners.length; i < len; i++){
+ var partner = partners[i];
+ //console.log("[db] [add_partners] partner.name:",partner.name);
+ this.partner_by_id[partner.id] = partner;
+ this.partner_list.push(partner);
+ this.partner_search_string += this._partner_search_string(partner);
+ }
+ //console.log("[db] [add_partners] partner_search_string:", this.partner_search_string);
+ },
+ get_partner_by_id: function(id){
+ return this.partner_by_id[id];
+ },
+ search_partner: function(query){
+ var re = RegExp("([0-9]+):.*?"+query,"gi");
+ var results = [];
+ //console.log("[db] [search_partner] query:",query);
+ for(var i = 0; i < this.limit; i++){
+ r = re.exec(this.partner_search_string);
+ if(r){
+ var id = Number(r[1]);
+ //console.log("[db] [search_partner] id:",id);
+ results.push(this.get_partner_by_id(id));
+ }
+ else{
+ break;
+ }
+ }
+ return results;
+ },
+ get_partner_list: function(){
+ return this.partner_list;
+ },
+ add_partner: function(partner){
+ //console.log("[pos_membership] [PosLS] [add_partner] partner=", partner.name);
+ var last_id = this.load('last_partner_id',0);
+ var partners = this.load('partners',[]);
+ partners.push({id: last_id + 1, data: partner});
+ this.save('last_partner_id',last_id+1);
+ this.save('partners',partners);
+ },
+ remove_partner: function(partner_id){
+ var partners = this.load('partners',[]);
+ partners = _.filter(partners, function(partner){
+ return partner.id !== partner_id;
+ });
+ this.save('partners',partners);
+ },
+ get_partners: function(){
+ return this.load('partners',[]);
+ },
+ });
+ }