瀏覽代碼

[ADD] ultimas modificaciones

Rodney Elpidio Enciso Arias 7 年之前
父節點
當前提交
268c7689b5

+ 51 - 3
static/src/js/widgets/chart_ingreso_egreso.js

@@ -34,20 +34,68 @@ function chart_ingreso_egreso (widget) {
 
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fecthAccountBankStatementLine().then(function (AccountBankStatementLine) {
-                return AccountBankStatementLine;
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function (ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function (AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fecthAccountBankStatementLine();
             }).then(function (AccountBankStatementLine) {
                 self.AccountBankStatementLine = AccountBankStatementLine;
                 return self.showMonths();
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name', 'store_ids'];
+            var domain = [['type','in',['bank','cash']],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fecthAccountBankStatementLine: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(self.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id','date','amount'];
+            var domain = [['journal_id','in',journal_ids]];
             var AccountBankStatementLine = new model.web.Model('account.bank.statement.line');
-            AccountBankStatementLine.query(fields).filter().all().then(function (results) {
+            AccountBankStatementLine.query(fields).filter(domain).all().then(function (results) {
                 defer.resolve(results);
             });
             return defer;

+ 126 - 9
static/src/js/widgets/chart_pos_order.js

@@ -35,19 +35,69 @@ function chart_pos_order (widget) {
 
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fecthPosOrder().then(function (PosOrder) {
-                return PosOrder;
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function (ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function (AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchPosOrder();
             }).then(function (PosOrder) {
                 self.PosOrder = PosOrder;
+                return self.fetchAccountInvoice();
+            }).then(function (AccountInvoice) {
+                self.AccountInvoice = AccountInvoice;
                 return self.showMonth();
             });
         },
+
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name', 'store_ids'];
+            var domain = [['type','=','sale'],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
         
-        fecthPosOrder: function() {
+        fetchPosOrder: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id','date_order','amount_total'];
-            var domain = [['state','not in',['draft','cancel']]];
+            var domain = [['state','not in',['draft','cancel']],['sale_journal','in',journal_ids] ];
             var PosOrder = new model.web.Model('pos.order');
             PosOrder.query(fields).filter(domain).all().then(function (results) {
                 defer.resolve(results);
@@ -56,6 +106,22 @@ function chart_pos_order (widget) {
             return defer;
         },
 
+        fetchAccountInvoice: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
+            var fields = ['id', 'name', 'date_invoice', 'amount_total'];
+            var domain = [['state', 'not in', ['draft','cancel']],['type','=','out_invoice'],['journal_id','in',journal_ids]];
+            var AccountInvoice = new model.web.Model('account.invoice');
+            AccountInvoice.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         getMonthPosOrder:function(mes) {
             var self = this;
             if (mes < 10){
@@ -83,20 +149,55 @@ function chart_pos_order (widget) {
                 return moment(inv.date_order).format('YYYY-MM-DD') === date;
             }));
         },
-        
+
+        getMonthAccountInvoice:function(mes) {
+            var self = this;
+            if (mes < 10){
+                var fecha = moment().format('YYYY')+'-'+'0'+mes;    
+            }else{
+                var fecha = moment().format('YYYY')+'-'+mes;    
+            }
+            return _.flatten(_.filter(self.AccountInvoice,function (inv) {
+                return moment(inv.date_invoice).format('YYYY-MM') === fecha;
+            }));
+        },
+
+        getWeekAccountInvoice:function(day) {
+            var self = this;
+            var week = moment().week();
+            return _.flatten(_.filter(self.AccountInvoice,function (inv) {
+                return moment(inv.date_invoice).week() === week & moment(inv.date_invoice).isoWeekday() === day;
+            }));
+        },
+
+        getDaysAccountInvoice:function(day) {
+            var self = this;
+            var date = moment().subtract(day, 'days').format('YYYY-MM-DD');
+            return _.flatten(_.filter(self.AccountInvoice,function (inv) {
+                return moment(inv.date_invoice).format('YYYY-MM-DD') === date;
+            }));
+        },
+  
         showMonth: function() {
             var self = this;
             var order;
+            var invoice;
             var title = ['Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
             var data = [];
-            
             for (var i = 1; i <= 12; i++) {
                 order = self.getMonthPosOrder(i);
-                var total = _.reduce(_.map(order,function(item) {
+                invoice = self.getMonthAccountInvoice(i);
+                var order_total = _.reduce(_.map(order,function(item) {
+                    return item.amount_total;
+                }),function(memo, num) {
+                    return memo + num;
+                },0);
+                var invoice_total = _.reduce(_.map(invoice,function(item) {
                     return item.amount_total;
                 }),function(memo, num) {
                     return memo + num;
                 },0);
+                var total = order_total + invoice_total; 
                 data.push(total);
             }
             self.$el.unblock();
@@ -107,15 +208,23 @@ function chart_pos_order (widget) {
         showWeek: function (){
             var self = this;
             var order;
+            var invoice;
             var title = ['Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo'];
             var data = [];
             for (var i = 1; i <= 7; i++) {
                 order = self.getWeekPosOrder(i);
-                var total = _.reduce(_.map(order,function(item) {
+                order = self.getWeekAccountInvoice(i);
+                var order_total = _.reduce(_.map(order,function(item) {
                     return item.amount_total;
                 }),function(memo, num) {
                     return memo + num;
                 },0);
+                var invoice_total = _.reduce(_.map(invoice,function(item) {
+                    return item.amount_total;
+                }),function(memo, num) {
+                    return memo + num;
+                },0);
+                var total = order_total + invoice_total;
                 data.push(total);
             }
             self.$el.unblock();
@@ -126,15 +235,23 @@ function chart_pos_order (widget) {
         showDays: function() {
             var self = this;
             var order;
+            var invoice;
             var title = [];
             var data = [];
             for (var i = 15; i >= 0; i--) {
                 order = self.getDaysPosOrder(i);
-                var total = _.reduce(_.map(order,function(item) {
+                invoice = self.getDaysAccountInvoice(i);
+                var order_total = _.reduce(_.map(order,function(item) {
+                    return item.amount_total;
+                }),function(memo, num) {
+                    return memo + num;
+                },0);
+                var invoice_total = _.reduce(_.map(invoice,function(item) {
                     return item.amount_total;
                 }),function(memo, num) {
                     return memo + num;
                 },0);
+                var total = order_total + invoice_total;
                 data.push(total);
                 title.push(moment().subtract(i, 'days').format('DD / MM'));
             }

+ 56 - 9
static/src/js/widgets/widget_account_receivable.js

@@ -34,8 +34,17 @@ function widget_account_receivable(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountMoveLine().then(function (AccountMoveLine) {
-                return AccountMoveLine;
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser
+            }).then(function(CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchAccountMoveLine();
             }).then(function (AccountMoveLine) {
                 self.AccountMoveLine = _.filter(AccountMoveLine, function(item) {
                     return item.amount_residual  > 0
@@ -46,18 +55,56 @@ function widget_account_receivable(widget) {
                 return self.fetchResCompany();
             }).then(function(ResCompany) {
                 self.ResCompany = ResCompany;
-                return self.fetchResCurrecy();
-            }).then(function(ResCurrecy) {
-                self.ResCurrecy = ResCurrecy;
+                return self.fetchResCurrency();
+            }).then(function(ResCurrency) {
+                self.ResCurrency = ResCurrency;
                 return self.showExpire();
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name'];
+            var domain = [['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchAccountMoveLine: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id', 'partner_id', 'amount_residual', 'credit', 'debit', 'date_maturity', 'invoice','ref', 'invoice', 'amount_residual_currency', 'currency_id'];
-            var domain = [['credit', '<=', 0],['date_maturity', '!=', false]];
+            var domain = [['credit', '<=', 0],['date_maturity', '!=', false],['journal_id','in',journal_ids]];
             var AccountMoveLine = new model.web.Model('account.move.line');
             AccountMoveLine.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
@@ -94,11 +141,11 @@ function widget_account_receivable(widget) {
             return defer;
         },
 
-        fetchResCurrecy : function(){
+        fetchResCurrency : function(){
             var self = this;
             var defer = $.Deferred();
             var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
-            var domain = [['active', '=', true]];
+            var domain = [['active', '=', true],['base','=',true]];
             var ResCurrecy = new model.web.Model('res.currency');
             ResCurrecy.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
@@ -108,7 +155,7 @@ function widget_account_receivable(widget) {
 
         getResCurrency: function (id) {
             var self = this;
-            return _.filter(self.ResCurrecy,function (item) {
+            return _.filter(self.ResCurrency,function (item) {
                 return item.id === id;
             })
         },

+ 50 - 3
static/src/js/widgets/widget_account_to_pay.js

@@ -34,8 +34,17 @@ function widget_account_to_pay(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountMoveLine().then(function (AccountMoveLine) {
-                return AccountMoveLine;
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser
+            }).then(function(CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchAccountMoveLine();
             }).then(function (AccountMoveLine) {
                 self.AccountMoveLine = _.filter(AccountMoveLine, function(item) {
                     return item.amount_residual  > 0
@@ -53,11 +62,49 @@ function widget_account_to_pay(widget) {
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name'];
+            var domain = [['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchAccountMoveLine: function() {
             var self = this;
             var defer = $.Deferred();
+             var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id', 'partner_id', 'amount_residual', 'credit', 'debit', 'date_maturity', 'invoice','ref', 'invoice', 'amount_residual_currency', 'currency_id'];
-            var domain = [['debit', '<=', 0],['date_maturity', '!=', false]];
+            var domain = [['debit', '<=', 0],['date_maturity', '!=', false],['journal_id','in',journal_ids]];
             var AccountMoveLine = new model.web.Model('account.move.line');
             AccountMoveLine.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);

+ 56 - 8
static/src/js/widgets/widget_balance.js

@@ -34,9 +34,18 @@ function widget_balance(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountInvoice().then(function (AccountInvoice) {
-                return AccountInvoice;
-            }).then(function (AccountInvoice) {
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchAccountInvoice();
+            }).then(function(AccountInvoice) {
                 self.AccountInvoice = AccountInvoice;
                 return self.fetchPosOrder();
             }).then(function(PosOrder) {
@@ -51,24 +60,63 @@ function widget_balance(widget) {
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name', 'store_ids'];
+            var domain = [['type','in',['sale','purchase']],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+            return defer;
+        },
+
         fetchAccountInvoice: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id','type','date_invoice','amount_total'];
-            var domain = [['state', 'not in', ['draft','cancel']],['type','in',['in_invoice','out_invoice']]];
+            var domain = [['state', 'not in', ['draft','cancel']],['type','in',['in_invoice','out_invoice']],['journal_id','in',journal_ids]];
             var AccountInvoice = new model.web.Model('account.invoice');
             AccountInvoice.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
             });
-
             return defer;
         },
 
         fetchPosOrder: function() {
             var self = this;
             var defer = $.Deferred();
-            var fields = ['id', 'name', 'date_order', 'amount_total'];
-            var domain = [['state', 'not in', ['draft','cancel']]];
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
+            var fields = ['id', 'name', 'date_order', 'amount_total','sale_journal'];
+            var domain = [['state', 'not in', ['draft','cancel']],['sale_journal','in',journal_ids]];
             var PosOrder = new model.web.Model('pos.order');
             PosOrder.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
@@ -94,7 +142,7 @@ function widget_balance(widget) {
             var self = this;
             var defer = $.Deferred();
             var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
-            var domain = [['active', '=', true]];
+            var domain = [['active', '=', true],['base','=',true]];
             var ResCurrecy = new model.web.Model('res.currency');
             ResCurrecy.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);

+ 40 - 11
static/src/js/widgets/widget_bank.js

@@ -34,9 +34,15 @@ function widget_bank(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountJournal().then(function (AccountJournal) {
-                return AccountJournal;
-            }).then(function (AccountJournal) {
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
                 self.AccountJournal = AccountJournal;
                 return self.fetchAccountBankStatement();
             }).then(function(AccountBankStatement) {
@@ -44,20 +50,43 @@ function widget_bank(widget) {
                 return self.fetchResCompany();
             }).then(function(ResCompany) {
                 self.ResCompany = ResCompany;
-                return self.fetchResCurrecy();
-            }).then(function(ResCurrecy) {
-                self.ResCurrecy = ResCurrecy;
+                return self.fetchResCurrency();
+            }).then(function(ResCurrency) {
+                self.ResCurrency = ResCurrency;
                 return self.showThisMonth();
             });
         },
 
+
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchAccountJournal: function() {
             var self = this;
             var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
             var fields = ['id', 'name'];
-            var domain = [['type', '=', 'bank']];
-            var PosOrder = new model.web.Model('account.journal');
-            PosOrder.query(fields).filter(domain).all().then(function(results) {
+            var domain = [['type', '=', 'bank'],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
             });
 
@@ -93,7 +122,7 @@ function widget_bank(widget) {
             return defer;
         },
 
-        fetchResCurrecy : function(){
+        fetchResCurrency : function(){
             var self = this;
             var defer = $.Deferred();
             var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
@@ -107,7 +136,7 @@ function widget_bank(widget) {
 
         getResCurrency: function (id) {
             var self = this;
-            return _.filter(self.ResCurrecy,function (item) {
+            return _.filter(self.ResCurrency,function (item) {
                 return item.id === id;
             })
         },

+ 34 - 6
static/src/js/widgets/widget_cash.js

@@ -34,9 +34,15 @@ function widget_cash(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountJournal().then(function (AccountJournal) {
-                return AccountJournal;
-            }).then(function (AccountJournal) {
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
                 self.AccountJournal = AccountJournal;
                 return self.fetchAccountBankStatement();
             }).then(function(AccountBankStatement) {
@@ -51,13 +57,35 @@ function widget_cash(widget) {
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchAccountJournal: function() {
             var self = this;
             var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
             var fields = ['id', 'name'];
-            var domain = [['type', '=', 'cash']];
-            var PosOrder = new model.web.Model('account.journal');
-            PosOrder.query(fields).filter(domain).all().then(function(results) {
+            var domain = [['type', '=', 'cash'],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
             });
 

+ 51 - 4
static/src/js/widgets/widget_expense.js

@@ -34,9 +34,18 @@ function widget_expense(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountInvoice().then(function (AccountInvoice) {
-                return AccountInvoice;
-            }).then(function (AccountInvoice) {
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchAccountInvoice();
+            }).then(function(AccountInvoice) {
                 self.AccountInvoice = AccountInvoice;
                 return self.fetchResCompany();
             }).then(function(ResCompany) {
@@ -48,11 +57,49 @@ function widget_expense(widget) {
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name', 'store_ids'];
+            var domain = [['type','=','purchase'],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchAccountInvoice: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id', 'name', 'date_invoice', 'amount_total'];
-            var domain = [['state', 'not in', ['draft','cancel']],['origin','=',false],['type','=','in_invoice']];
+            var domain = [['state', 'not in', ['draft','cancel']],['origin','=',false],['type','=','in_invoice'],['journal_id','in',journal_ids]];
             var AccountInvoice = new model.web.Model('account.invoice');
             AccountInvoice.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);

+ 58 - 9
static/src/js/widgets/widget_pos_order.js

@@ -34,14 +34,23 @@ function widget_pos_order(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchPosOrder().then(function (PosOrder) {
-                return PosOrder;
-            }).then(function (PosOrder) {
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchPosOrder();
+            }).then(function(PosOrder) {
                 self.PosOrder = PosOrder;
                 return self.fetchAccountInvoice();
             }).then(function(AccountInvoice) {
                 self.AccountInvoice = AccountInvoice;
-            return self.fetchResCompany();
+                return self.fetchResCompany();
             }).then(function(ResCompany) {
                 self.ResCompany = ResCompany;
                 return self.fetchResCurrecy();
@@ -51,25 +60,65 @@ function widget_pos_order(widget) {
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id','name','store_ids'];
+            var domain = [['type','=','sale'],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchPosOrder: function() {
             var self = this;
             var defer = $.Deferred();
-            var fields = ['id', 'name', 'date_order', 'amount_total'];
-            var domain = [['state', 'not in', ['draft','cancel']]];
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
+            var fields = ['id', 'name', 'date_order', 'amount_total','sale_journal'];
+            var domain = [['state', 'not in', ['draft','cancel']],['sale_journal','in',journal_ids]];
             var PosOrder = new model.web.Model('pos.order');
             PosOrder.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
             });
-
             return defer;
         },
 
         fetchAccountInvoice: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var month = moment().format('YYYY-MM');
             var fields = ['id','name','amount_total','date_invoice'];
-            var domain = [['state', 'not in', ['draft','cancel']],['type','=','out_invoice']];
+            var domain = [['state', 'not in', ['draft','cancel']],['type','=','out_invoice'],['journal_id','in',journal_ids]];
             var AccountInvoice = new model.web.Model('account.invoice');
             AccountInvoice.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
@@ -95,7 +144,7 @@ function widget_pos_order(widget) {
             var self = this;
             var defer = $.Deferred();
             var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
-            var domain = [['active', '=', true]];
+            var domain = [['active', '=', true],['base','=',true]];
             var ResCurrecy = new model.web.Model('res.currency');
             ResCurrecy.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);

+ 52 - 5
static/src/js/widgets/widget_purchase.js

@@ -34,9 +34,18 @@ function widget_purchase(widget) {
             });
             self.$el.find('.widget-content.widget-loading').css('display','flex');
 
-            self.fetchAccountInvoice().then(function (AccountInvoice) {
-                return AccountInvoice;
-            }).then(function (AccountInvoice) {
+            self.fetchCurrentUser().then(function (CurrentUser) {
+                return CurrentUser;
+            }).then(function (CurrentUser) {
+                self.CurrentUser = CurrentUser;
+                return self.fetchResUser(CurrentUser);
+            }).then(function(ResUser) {
+                self.ResUser = ResUser;
+                return self.fetchAccountJournal();
+            }).then(function(AccountJournal) {
+                self.AccountJournal = AccountJournal;
+                return self.fetchAccountInvoice();
+            }).then(function(AccountInvoice) {
                 self.AccountInvoice = AccountInvoice;
                 return self.fetchResCompany();
             }).then(function(ResCompany) {
@@ -48,11 +57,49 @@ function widget_purchase(widget) {
             });
         },
 
+        fetchCurrentUser: function() {
+            var self = this;
+            var ResUser = new model.web.Model('res.users');
+            return ResUser.call('get_user', {
+                context: new model.web.CompoundContext()
+            });
+        },
+
+        fetchResUser: function(id) {
+            var self = this;
+            var defer = $.Deferred();
+            var fields = ['id','name','store_id'];
+            var domain = [['id','=',id]];
+            var ResUser = new model.web.Model('res.users');
+            ResUser.query(fields).filter(domain).all().then(function (results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
+        fetchAccountJournal: function() {
+            var self = this;
+            var defer = $.Deferred();
+            var store_ids = self.ResUser[0].store_id[0];
+            var fields = ['id', 'name', 'store_ids'];
+            var domain = [['type','=','purchase'],['store_ids','in',store_ids]];
+            var AccountJournal = new model.web.Model('account.journal');
+            AccountJournal.query(fields).filter(domain).all().then(function(results) {
+                defer.resolve(results);
+            });
+
+            return defer;
+        },
+
         fetchAccountInvoice: function() {
             var self = this;
             var defer = $.Deferred();
+            var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
+                return item.id;
+            }));
             var fields = ['id', 'name', 'date_invoice', 'amount_total'];
-            var domain = [['state', 'not in', ['draft','cancel']],['origin','!=',false],['type','=','in_invoice']];
+            var domain = [['state', 'not in', ['draft','cancel']],['origin','!=',false],['type','=','in_invoice'],['journal_id','in',journal_ids]];
             var AccountInvoice = new model.web.Model('account.invoice');
             AccountInvoice.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);
@@ -78,7 +125,7 @@ function widget_purchase(widget) {
             var self = this;
             var defer = $.Deferred();
             var fields = ['id','name', 'symbol', 'rate_silent', 'base', 'decimal_separator', 'decimal_places', 'thousands_separator', 'symbol_position'];
-            var domain = [['active', '=', true]];
+            var domain = [['active', '=', true],['base','=',true]];
             var ResCurrecy = new model.web.Model('res.currency');
             ResCurrecy.query(fields).filter(domain).all().then(function(results) {
                 defer.resolve(results);