[WIP] point_of_sale: indexeddb : products and categories are no longer in memory

bzr revid: fva@openerp.com-20120809195555-oluxe7xe8k2ugcoi
This commit is contained in:
Frédéric van der Essen 2012-08-09 21:55:55 +02:00
parent 03b79a9832
commit 78d8b5d394
2 changed files with 12 additions and 20 deletions

View File

@ -429,7 +429,7 @@ function openerp_pos_db(instance, module){
_set_categories: function(categories){
localStorage[this.categories] = JSON.stringify(categories);
},
add_product: function(products){
add_products: function(products){
var stored_products = this._get_products();
var stored_categories = this._get_categories();

View File

@ -72,6 +72,7 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
this.barcode_reader = new module.BarcodeReader({'pos': this}); // used to read barcodes
this.proxy = new module.ProxyDevice(); // used to communicate to the hardware devices via a local proxy
this.db = new module.PosLS(); // a database used to store the products and categories
this.db.clear();
window.db = this.db;
@ -98,12 +99,10 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
'products': new module.ProductCollection(),
'cashRegisters': null,
'product_list': null, // the list of all products, does not change.
'bank_statements': null,
'taxes': null,
'pos_session': null,
'pos_config': null,
'categories': null,
'selectedOrder': undefined,
});
@ -139,10 +138,6 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
self.set('currency',currencies[0]);
});
var cat_def = fetch('pos.category', ['id','name', 'parent_id', 'child_id', 'category_image_small'])
.pipe(function(result){
return self.set({'categories': result});
});
var uom_def = fetch( //unit of measure
'product.uom',
@ -213,18 +208,20 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
self.use_selfcheckout = pos_config.iface_self_checkout || false;
self.use_cashbox = pos_config.iface_cashdrawer || false;
return shop_def = fetch('sale.shop',[], [['id','=',pos_config.shop_id[0]]])
return fetch('sale.shop',[], [['id','=',pos_config.shop_id[0]]])
}).pipe(function(shops){
self.set('shop',shops[0]);
return fetch('pos.category', ['id','name', 'parent_id', 'child_id', 'category_image_small'])
}).pipe( function(categories){
self.db.add_categories(categories);
return fetch(
'product.product',
//context {pricelist: shop.pricelist_id[0]}
['name', 'list_price','price','pos_categ_id', 'taxes_id','product_image_small', 'ean13', 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type'],
[['pos_categ_id','!=', false]],
{pricelist: shops[0].pricelist_id[0]} // context for price
);
}).pipe( function(product_list){
self.set({'product_list': product_list});
{pricelist: self.get('shop').pricelist_id[0]} // context for price
);
}).pipe( function(products){
self.db.add_products(products);
});
var bank_def = fetch(
@ -267,13 +264,10 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
});
// when all the data has loaded, we compute some stuff, and declare the Pos ready to be used.
$.when(pack_def, cat_def, user_def, users_def, uom_def, session_def, tax_def, user_def, this.flush())
$.when(pack_def, user_def, users_def, uom_def, session_def, tax_def, user_def, this.flush())
.then(function(){
self.db.clear();
self.db.add_categories(self.get('categories'));
self.db.add_product(self.get('product_list'));
self.set({'cashRegisters' : new module.CashRegisterCollection(self.get('bank_statements'))});
self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging
//self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging
self.ready.resolve();
},function(){
//we failed to load some backend data, or the backend was badly configured.
@ -286,7 +280,6 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
log_loaded_data: function(){
console.log('PosModel data has been loaded:');
console.log('PosModel: categories:',this.get('categories'));
console.log('PosModel: product_list:',this.get('product_list'));
console.log('PosModel: units:',this.get('units'));
console.log('PosModel: bank_statements:',this.get('bank_statements'));
console.log('PosModel: journals:',this.get('journals'));
@ -300,7 +293,6 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
console.log('PosModel: user_list:',this.get('user_list'));
console.log('PosModel: user:',this.get('user'));
console.log('PosModel.session:',this.session);
console.log('PosModel.categories:',this.categories);
console.log('PosModel end of data log.');
},