payments_today_counters.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. function payments_today_counters (widget) {
  2. "use strict";
  3. var model= openerp;
  4. widget.PaymentsTodayCountersWidget = widget.Base.extend({
  5. template: 'PaymentsTodayCounters',
  6. accountVoucher: [],
  7. resCompany: [],
  8. currencyRate: [],
  9. events: {
  10. 'click a': 'showCustomers',
  11. 'click h2': 'showCustomers',
  12. },
  13. init: function (parent) {
  14. this._super(parent, {
  15. width : 3,
  16. height: 2
  17. });
  18. },
  19. start: function () {
  20. var self = this;
  21. self.fetchInitial();
  22. },
  23. fetchInitial: function () {
  24. var self = this;
  25. self.$el.find('#morosidad').block({
  26. message: null,
  27. overlayCSS: {
  28. backgroundColor: '#FAFAFA'
  29. }
  30. });
  31. self.$el.find('.widget-content.widget-loading').css('display','flex');
  32. self.fetchAccountVoucher().then(function (accountVoucher) {
  33. return accountVoucher;
  34. }).then(function (accountVoucher) {
  35. self.accountVoucher = accountVoucher;
  36. return self.fetchResCompany();
  37. }).then(function (resCompany) {
  38. self.resCompany = resCompany;
  39. return self.fetchCurrency();
  40. }).then(function (currencyRate) {
  41. self.currencyRate = currencyRate;
  42. return self.fetchVoucherCurrency();
  43. });
  44. },
  45. // Account Voucher
  46. fetchAccountVoucher: function () {
  47. var self = this;
  48. var defer = $.Deferred();
  49. var hoy =moment().format('YYYY-MM-DD');
  50. var fields = ['id', 'amount', 'currency_id', 'payment_rate_currency_id'];
  51. var domain = [['state', '=', 'posted'], ['type', '=', 'payment'], ['date', '=', hoy]];
  52. var accountVoucher = new model.web.Model('account.voucher');
  53. accountVoucher.query(fields).filter(domain).all().then(function (results) {
  54. defer.resolve(results);
  55. });
  56. return defer;
  57. },
  58. //Comapnia
  59. fetchResCompany: function () {
  60. var self = this;
  61. var defer = $.Deferred();
  62. var fields =['id','name', 'currency_id','logo'];
  63. var domain =[['id', '=', 1]];
  64. var resCompany = new model.web.Model('res.company');
  65. resCompany.query(fields).filter(domain).all().then(function (results) {
  66. defer.resolve(results);
  67. });
  68. return defer;
  69. },
  70. // Buscar Cambio de Monedas USD,PYG,ARG,BRL
  71. fetchCurrency: function () {
  72. var defer = $.Deferred();
  73. var currency_Rate = new model.web.Model('res.currency.rate');
  74. var fields = ['id', 'name', 'currency_id', 'rate', 'create_date'];
  75. var domain = [['currency_id', 'in', [166 , 20, 7, 3]]];
  76. currency_Rate.query(fields).filter(domain).all().then(function (results) {
  77. defer.resolve(results);
  78. });
  79. return defer;
  80. },
  81. // voucherCurrencyRate
  82. fetchVoucherCurrency: function () {
  83. var self = this;
  84. var newVoucher=[];
  85. var itemvoucher;
  86. var itemCurrencyRate;
  87. for (var i = 0; i < self.accountVoucher.length; i++) {
  88. itemvoucher = self.accountVoucher[i];
  89. itemCurrencyRate = self.getCutrrencyRate(itemvoucher.currency_id[0]);
  90. if(!itemCurrencyRate){
  91. itemCurrencyRate={};
  92. itemCurrencyRate.rate=1;
  93. }
  94. newVoucher.push({ amount : itemvoucher.amount,
  95. amount_rate : (itemvoucher.amount/itemCurrencyRate.rate)
  96. });
  97. }
  98. self.fetchReduceMoveLine(newVoucher)
  99. },
  100. getCutrrencyRate: function (currency_id) {
  101. var self = this;
  102. return _.filter(self.currencyRate,function (item) {
  103. return item.currency_id[0] == currency_id
  104. }).shift();
  105. },
  106. // // Reduce Move line
  107. fetchReduceMoveLine: function (newVoucher) {
  108. var self = this;
  109. var residual =0;
  110. var company = _.map(self.resCompany, function (map) {
  111. return map.currency_id[1];
  112. });
  113. if (newVoucher.length > 0) {
  114. residual = _.reduce(_.map(newVoucher, function (map) {
  115. return map.amount_rate;
  116. }), function (memo, num) {
  117. return memo + num;
  118. });
  119. }
  120. self.$el.find('.widget-content.widget-loading').css('display','none');
  121. self.$el.find('.widget-content').find('a').text(accounting.formatNumber(residual, 2, ".", ",")).append(' <small>'+company+'</small>');
  122. // self.$el.find('.widget-footer').find('span').text("Monto en "+ company);
  123. self.$el.find('#morosidad').unblock();
  124. },
  125. showCustomers: function (e) {
  126. var hoy =moment().format('YYYY-MM-DD');
  127. this.do_action({
  128. name:"Listado de pagos realizados hoy",
  129. type: 'ir.actions.act_window',
  130. res_model: "account.voucher",
  131. views: [[false, 'list']],
  132. target: 'new',
  133. domain: [['state', '=', 'posted'], ['type', '=', 'payment'], ['date', '=', hoy]],
  134. context: {},
  135. });
  136. }
  137. });
  138. }