123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- function widget_cash(widget) {
- "use strict";
- var model = openerp;
- widget.WidgetCashWidget = widget.Base.extend({
- template: 'WidgetCash',
- events: {},
- init: function (parent) {
- this._super(parent, {
- width: 3,
- height: 2
- });
- },
- start: function () {
- var self = this;
- self.fetchInitial();
- },
- fetchInitial: function(){
- var self = this;
- self.fetchResUser().then(function (ResUser) {
- return ResUser;
- }).then(function (ResUser) {
- self.ResUser = ResUser;
- return self.fetchAccountJournal();
- }).then(function(AccountJournal) {
- self.AccountJournal = AccountJournal;
- return self.fetchAccountBankStatement();
- }).then(function(AccountBankStatement) {
- self.AccountBankStatement = AccountBankStatement;
- return self.fetchResCompany();
- }).then(function(ResCompany) {
- self.ResCompany = ResCompany;
- return self.fetchResCurrecy();
- }).then(function(ResCurrecy) {
- self.ResCurrecy = ResCurrecy;
- return self.show();
- });
- },
- fetchResUser: function() {
- var self = this;
- var defer = $.Deferred();
- var fields = ['id','name','store_id'];
- var domain = [['id','=',self.session.uid]];
- 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'],['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;
- },
- fetchAccountBankStatement: function() {
- var self = this;
- var defer = $.Deferred();
- var journal_ids = _.flatten(_.map(self.AccountJournal, function (item) {
- return item.id;
- }));
- var fields = ['id', 'name', 'date', 'balance_end','currency'];
- var domain = [['state', 'in', ['open']],['journal_id','in',journal_ids]];
- var AccountBankStatement = new model.web.Model('account.bank.statement');
- AccountBankStatement.query(fields).filter(domain).all().then(function(results) {
- defer.resolve(results);
- });
- return defer;
- },
- fetchResCompany: function() {
- var self = this;
- var defer = $.Deferred();
- var fields = ['id','name', 'currency_id'];
- var domain = [['id', '=', self.session.company_id]];
- var ResCompany = new model.web.Model('res.company');
- ResCompany.query(fields).filter(domain).all().then(function (results) {
- defer.resolve(results);
- });
- return defer;
- },
- fetchResCurrecy : 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 ResCurrecy = new model.web.Model('res.currency');
- ResCurrecy.query(fields).filter(domain).all().then(function(results) {
- defer.resolve(results);
- });
- return defer;
- },
- getResCurrency: function (id) {
- var self = this;
- return _.filter(self.ResCurrecy,function (item) {
- return item.id === id;
- })
- },
- show: function () {
- var self = this;
- var amount = 0;
- var data = [];
- var statement = self.AccountBankStatement;
- var CurrencyBase = self.getResCurrency(self.ResCompany[0].currency_id[0]).shift();
- if(statement.length > 0){
- var array = [];
- _.each(statement, function (item) {
- var currency = self.getResCurrency(item.currency[0]).shift();
- array.push({
- amount: item.balance_end * (CurrencyBase.rate_silent / currency.rate_silent),
- })
- });
- var invoice_total = 0;
- amount = _.reduce(_.map(array, function (map) {
- return map.amount;
- }), function (memo, num) {
- return memo + num;
- });
- }
- self.$el.find('.widget-content').find('a').text(accounting.formatMoney(amount, CurrencyBase.symbol, CurrencyBase.decimal_places, CurrencyBase.thousands_separator, CurrencyBase.decimal_separator))
- },
- });
- }
|