expired_account_counters.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. function expired_account_counters (widget) {
  2. "use strict";
  3. var model = openerp;
  4. widget.ExpiredAccountCountersWidget = widget.Base.extend({
  5. template: 'ExpiredAccountCounters',
  6. resPartner : [],
  7. moveLine : [],
  8. resCompany : [],
  9. resCurrecy :[],
  10. events: {
  11. 'click a': 'showCustomers',
  12. 'click h2': 'showCustomers',
  13. },
  14. init: function (parent) {
  15. this._super(parent, {
  16. width : 3,
  17. height: 2
  18. });
  19. },
  20. start: function () {
  21. var self = this;
  22. self.fetchInitial();
  23. },
  24. fetchInitial: function(){
  25. var self = this;
  26. self.$el.find('.grid-stack-item-content dashboard').block({
  27. message: null,
  28. overlayCSS: {
  29. backgroundColor: '#FAFAFA'
  30. }
  31. });
  32. self.$el.find('.widget-content.widget-loading').css('display','flex');
  33. self.fetchPartner().then(function (resPartner){
  34. return resPartner;
  35. }).then(function (resPartner){
  36. self.resPartner = resPartner;
  37. return self.fetchMoveLine(resPartner);
  38. }).then(function (moveLine){
  39. self.moveLine = moveLine;
  40. return self.fetchResCompany();
  41. }).then(function (resCompany){
  42. self.resCompany = resCompany;
  43. return self.fetchResCurrecy(resCompany);
  44. }).then(function (resCurrecy){
  45. self.resCurrecy = resCurrecy;
  46. return self.fetchReduceMoveLine();
  47. });
  48. },
  49. // Partner
  50. fetchPartner: function () {
  51. var self = this;
  52. var defer = $.Deferred();
  53. var fields =['id', 'name', 'unreconciled_aml_ids', 'credit'];
  54. var domain =[['active', '=', true], ['credit', '>', 0]];
  55. var resPartner = new model.web.Model('res.partner');
  56. resPartner.query(fields).filter(domain).all().then(function (results){
  57. defer.resolve(results);
  58. });
  59. return defer;
  60. },
  61. // Move line
  62. fetchMoveLine: function (partner){
  63. var self = this;
  64. var hoy =moment().format('YYYY-MM-DD');
  65. var defer = $.Deferred();
  66. var move_id = _.flatten(_.map(partner, function (map) {
  67. return map.unreconciled_aml_ids
  68. }));
  69. var field =['id', 'partner_id', 'amount_residual', 'credit', 'debit', 'date_maturity'];
  70. var domain=[['credit', '<=', 0],['id', 'in', move_id],['date_maturity', '<', hoy]];
  71. var moveLine = new model.web.Model('account.move.line');
  72. moveLine.query(field).filter(domain).all().then(function(results){
  73. defer.resolve(results);
  74. });
  75. return defer;
  76. },
  77. //Comapnia
  78. fetchResCompany: function(){
  79. var self = this;
  80. var defer = $.Deferred();
  81. var fields =['id','name', 'currency_id', 'logo'];
  82. var domain =[['id', '=', 1]];
  83. var resCompany = new model.web.Model('res.company');
  84. resCompany.query(fields).filter(domain).all().then(function (results) {
  85. defer.resolve(results);
  86. });
  87. return defer;
  88. },
  89. // Res currecy
  90. fetchResCurrecy : function(company){
  91. var self = this;
  92. var defer = $.Deferred();
  93. var id_curency = _.flatten(_.map(company,function(map){
  94. return map.currency_id[0];
  95. }));
  96. var fields =['id','name', 'symbol'];
  97. var domain =[['id','=',id_curency]];
  98. var resCurrecy = new model.web.Model('res.currency');
  99. resCurrecy.query(fields).filter(domain).all().then(function(results){
  100. defer.resolve(results);
  101. });
  102. return defer;
  103. },
  104. // Reduce Move line
  105. fetchReduceMoveLine: function () {
  106. var self = this;
  107. var residual =0;
  108. var company = _.map(self.resCompany, function (map) {
  109. return map.currency_id[1]
  110. });
  111. var moneda = self.resCurrecy.shift();
  112. if (self.moveLine.length > 0){
  113. residual = _.reduce(_.map(self.moveLine, function (map) {
  114. return map.amount_residual;
  115. }), function (memo, num) {
  116. return memo + num;
  117. });
  118. }
  119. if (moneda.id != 166){
  120. residual=accounting.formatNumber(residual,2, ".", ",");
  121. }else {
  122. residual=accounting.formatNumber(residual, ",", ".");
  123. }
  124. self.$el.find('.widget-content.widget-loading').css('display','none');
  125. self.$el.find('.widget-content').find('a').text(residual).append(" <small>"+moneda.symbol+"</small>");
  126. self.$el.find('.grid-stack-item-content dashboard').unblock();
  127. },
  128. showCustomers: function (e) {
  129. var self = this;
  130. var hoy =moment().format('YYYY-MM-DD');
  131. var move_id = _.flatten(_.map(self.moveLine, function (map) {
  132. return map.id;
  133. }));
  134. this.do_action({
  135. name:"Listado de clientes con deudas atrasadas",
  136. type: 'ir.actions.act_window',
  137. res_model: "res.partner",
  138. views: [[false, 'list']],
  139. target: 'new',
  140. domain: [['unreconciled_aml_ids', 'in', move_id]],
  141. context: {},
  142. });
  143. }
  144. });
  145. }