expired_account_counters.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. 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('.grid-stack-item-content dashboard').block({
  26. message: null,
  27. overlayCSS: {
  28. backgroundColor: '#FAFAFA'
  29. }
  30. });
  31. self.$el.find('.widget-content.widget-loading').css('display','flex');
  32. self.fetchPartner().then(function (resPartner){
  33. return resPartner;
  34. }).then(function (resPartner){
  35. self.resPartner = resPartner;
  36. return self.fetchMoveLine(resPartner);
  37. }).then(function (moveLine){
  38. self.moveLine = moveLine;
  39. return self.fetchResCompany();
  40. }).then(function (resCompany){
  41. self.resCompany = resCompany;
  42. return self.fetchReduceMoveLine();
  43. });
  44. },
  45. // Partner
  46. fetchPartner: function () {
  47. var self = this;
  48. var defer = $.Deferred();
  49. var fields =['id', 'name', 'unreconciled_aml_ids', 'credit'];
  50. var domain =[['active', '=', true], ['credit', '>', 0]];
  51. var resPartner = new model.web.Model('res.partner');
  52. resPartner.query(fields).filter(domain).all().then(function (results){
  53. defer.resolve(results);
  54. });
  55. return defer;
  56. },
  57. // Move line
  58. fetchMoveLine: function (partner){
  59. var self = this;
  60. var hoy =moment().format('YYYY-MM-DD');
  61. var defer = $.Deferred();
  62. var move_id = _.flatten(_.map(partner, function (map) {
  63. return map.unreconciled_aml_ids
  64. }));
  65. var field =['id', 'partner_id', 'amount_residual', 'credit', 'debit', 'date_maturity'];
  66. var domain=[['credit', '<=', 0],['id', '=', move_id],['date_maturity', '<', hoy]];
  67. var moveLine = new model.web.Model('account.move.line');
  68. moveLine.query(field).filter(domain).all().then(function(results){
  69. defer.resolve(results);
  70. });
  71. return defer;
  72. },
  73. //Comapnia
  74. fetchResCompany: function(){
  75. var self = this;
  76. var defer = $.Deferred();
  77. var fields =['id','name', 'currency_id', 'logo'];
  78. var domain =[['id', '=', 1]];
  79. var resCompany = new model.web.Model('res.company');
  80. resCompany.query(fields).filter(domain).all().then(function (results) {
  81. defer.resolve(results);
  82. });
  83. return defer;
  84. },
  85. // Reduce Move line
  86. fetchReduceMoveLine: function () {
  87. var self = this;
  88. var residual =0;
  89. var company = _.map(self.resCompany, function (map) {
  90. return map.currency_id[1]
  91. });
  92. if (self.moveLine.length > 0){
  93. residual = _.reduce(_.map(self.moveLine, function (map) {
  94. return map.amount_residual;
  95. }), function (memo, num) {
  96. return memo + num;
  97. });
  98. }
  99. self.$el.find('.widget-content.widget-loading').css('display','none');
  100. self.$el.find('.widget-content').find('a').text(accounting.formatNumber(residual,2, ".", ",")).append(" <small>"+company+"</small>");
  101. self.$el.find('.grid-stack-item-content dashboard').unblock();
  102. },
  103. showCustomers: function (e) {
  104. var self = this;
  105. var hoy =moment().format('YYYY-MM-DD');
  106. var move_id = _.flatten(_.map(self.moveLine, function (map) {
  107. return map.id;
  108. }));
  109. console.log( this.do_action({
  110. name:"Listado de clientes con deudas atrasadas",
  111. type: 'ir.actions.act_window',
  112. res_model: "res.partner",
  113. views: [[false, 'list']],
  114. target: 'new',
  115. domain: [['unreconciled_aml_ids', '=', move_id]],
  116. context: {},
  117. }));
  118. }
  119. });
  120. }