1 openerp.locadis = function(instance){
3 var module = instance.point_of_sale;
4 var QWeb = instance.web.qweb;
6 console.log('PosModel?', module.PosModel);
8 module.PosModel = module.PosModel.extend({
9 // all this copy paste just to load the product.dont_vidange field ... :(
10 load_server_data: function(){
11 console.log('loading');
14 var loaded = self.fetch('res.users',['name','company_id'],[['id','=',this.session.uid]])
15 .pipe(function(users){
16 self.set('user',users[0]);
18 return self.fetch('res.company',
29 [['id','=',users[0].company_id[0]]]);
30 }).pipe(function(companies){
31 self.set('company',companies[0]);
33 return self.fetch('res.partner',['contact_address'],[['id','=',companies[0].partner_id[0]]]);
34 }).pipe(function(company_partners){
35 self.get('company').contact_address = company_partners[0].contact_address;
37 return self.fetch('res.currency',['symbol','position'],[['id','=',self.get('company').currency_id[0]]]);
38 }).pipe(function(currencies){
39 self.set('currency',currencies[0]);
41 return self.fetch('product.uom', null, null);
42 }).pipe(function(units){
43 self.set('units',units);
45 for(var i = 0, len = units.length; i < len; i++){
46 units_by_id[units[i].id] = units[i];
48 self.set('units_by_id',units_by_id);
50 return self.fetch('product.packaging', null, null);
51 }).pipe(function(packagings){
52 self.set('product.packaging',packagings);
54 return self.fetch('res.users', ['name','ean13'], [['ean13', '!=', false]]);
55 }).pipe(function(users){
56 self.set('user_list',users);
58 return self.fetch('account.tax', ['amount', 'price_include', 'type']);
59 }).pipe(function(taxes){
60 self.set('taxes', taxes);
64 ['id', 'journal_ids','name','user_id','config_id','start_at','stop_at'],
65 [['state', '=', 'opened'], ['user_id', '=', self.session.uid]]
67 }).pipe(function(sessions){
68 self.set('pos_session', sessions[0]);
72 ['name','journal_ids','shop_id','journal_id',
73 'iface_self_checkout', 'iface_led', 'iface_cashdrawer',
74 'iface_payment_terminal', 'iface_electronic_scale', 'iface_barscan', 'iface_vkeyboard',
75 'iface_print_via_proxy','iface_cashdrawer','state','sequence_id','session_ids'],
76 [['id','=', self.get('pos_session').config_id[0]]]
78 }).pipe(function(configs){
79 var pos_config = configs[0];
80 self.set('pos_config', pos_config);
81 self.iface_electronic_scale = !!pos_config.iface_electronic_scale;
82 self.iface_print_via_proxy = !!pos_config.iface_print_via_proxy;
83 self.iface_vkeyboard = !!pos_config.iface_vkeyboard;
84 self.iface_self_checkout = !!pos_config.iface_self_checkout;
85 self.iface_cashdrawer = !!pos_config.iface_cashdrawer;
87 return self.fetch('sale.shop',[],[['id','=',pos_config.shop_id[0]]]);
88 }).pipe(function(shops){
89 self.set('shop',shops[0]);
91 return self.fetch('pos.category', ['id','name','parent_id','child_id','image'])
92 }).pipe(function(categories){
93 self.db.add_categories(categories);
97 ['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13',
98 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type',
99 'description_sale', 'description','dont_vidange'],
100 [['pos_categ_id','!=', false],['sale_ok','=',true]],
101 {pricelist: self.get('shop').pricelist_id[0]} // context for price
103 }).pipe(function(products){
104 self.db.add_products(products);
107 'account.bank.statement',
108 ['account_id','currency','journal_id','state','name','user_id','pos_session_id'],
109 [['state','=','open'],['pos_session_id', '=', self.get('pos_session').id]]
111 }).pipe(function(bank_statements){
112 self.set('bank_statements', bank_statements);
114 return self.fetch('account.journal', undefined, [['user_id','=', self.get('pos_session').user_id[0]]]);
115 }).pipe(function(journals){
116 self.set('journals',journals);
118 // associate the bank statements with their journals.
119 var bank_statements = self.get('bank_statements');
120 for(var i = 0, ilen = bank_statements.length; i < ilen; i++){
121 for(var j = 0, jlen = journals.length; j < jlen; j++){
122 if(bank_statements[i].journal_id[0] === journals[j].id){
123 bank_statements[i].journal = journals[j];
124 bank_statements[i].self_checkout_payment_method = journals[j].self_checkout_payment_method;
128 self.set({'cashRegisters' : new module.CashRegisterCollection(self.get('bank_statements'))});
129 self.log_loaded_data();
136 module.ProductListWidget = module.ProductListWidget.extend({
137 template_empty: 'ProductEmptyListWidget',
138 get_category: function(){
139 return this.getParent().product_categories_widget.category;
141 renderElement: function(){
142 var ss = this.pos_widget.screen_selector;
143 console.log('ss',ss);
144 if(this.get_category().name === 'Root' && ss && ss.get_user_mode() === 'cashier'){
145 this.replaceElement(_.str.trim(QWeb.render(this.template_empty,{widget:this})));