123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- function monthly_purchases(widget) {
- "use strict";
- var model= openerp;
- widget.MonthlyPurchasesWidget = widget.Base.extend({
- template: 'MonthlyPurchases',
- accountVoucher:[],
- accountInvoice:[],
- currencyRate :[],
- resCompany:[],
- events: {
- 'click a': 'showCustomers',
- 'click h2': 'showCustomers',
- },
- init: function (parent) {
- this._super(parent, {
- width : 3,
- height: 2
- });
- },
- start: function () {
- var self = this;
- self.fetchInitial();
- },
- fetchInitial: function(){
- var self = this;
- self.$el.find('#morosidad').block({
- message: null,
- overlayCSS: {
- backgroundColor: '#FAFAFA'
- }
- });
- self.$el.find('.widget-content.widget-loading').css('display','flex');
- self.fetchAccountVoucher().then(function (accountVoucher) {
- return accountVoucher;
- }).then(function (accountVoucher) {
- self.accountVoucher = accountVoucher;
- return self.fetchAccountInvoice(accountVoucher);
- }).then(function(accountInvoice){
- self.accountInvoice = accountInvoice;
- return self.fetchCurrency();
- }).then(function(currencyRate){
- self.currencyRate = currencyRate;
- return self.fetchResCompany();
- }).then(function(resCompany){
- self.resCompany = resCompany;
- return self.fetchResCurrecy(resCompany);
- }).then(function(resCurrecy){
- self.resCurrecy = resCurrecy;
- return self.fetchReduceVoucher();
- });
- },
- // Account Voucher Pagos a facturas Proveedores
- fetchAccountVoucher: function(){
- var self = this;
- var defer = $.Deferred();
- var desde =moment().format('YYYY-MM-01');
- var hasta =moment().add(1,'months').format('YYYY-MM-01');
- var fields = ['id', 'amount', 'currency_id', 'payment_rate_currency_id', 'reference'];
- var domain= [['type', '=', 'payment'],['state', '=', 'posted'],['date', '>=',desde],['date','<',hasta]];
- var accountVoucher = new model.web.Model('account.voucher');
- accountVoucher.query(fields).filter(domain).all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
- // invoice
- fetchAccountInvoice:function(voucher){
- var self = this;
- var defer = $.Deferred();
- var number = _.map(voucher,function(map){return map.reference});
- var fields = ['id','number','date_invoice','origin'];
- var domain = [['type', '=', 'in_invoice'],['origin', '!=', false ],['number', 'in', number]];
- var accountInvoice= new model.web.Model('account.invoice');
- accountInvoice.query(fields).filter(domain).all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
- fetchCurrency: function () {
- var defer = $.Deferred();
- var currency_Rate = new model.web.Model('res.currency.rate');
- var fields = ['id', 'name', 'currency_id', 'rate', 'create_date'];
- var domain = [['currency_id', 'in', [166 , 20, 7, 3]]];
- currency_Rate.query(fields).filter(domain).all().then(function (results) {
- defer.resolve(results);
- });
- return defer;
- },
- //Comapnia
- fetchResCompany: function(){
- var self = this;
- var defer = $.Deferred();
- var fields =['id','name', 'currency_id', 'logo'];
- var domain =[['id', '=', 1]];
- var resCompany = new model.web.Model('res.company');
- resCompany.query(fields).filter(domain).all().then(function (results) {
- defer.resolve(results);
- });
- return defer;
- },
- // Res currecy
- fetchResCurrecy : function(company){
- var self = this;
- var defer = $.Deferred();
- var id_curency = _.flatten(_.map(company,function(map){
- return map.currency_id[0];
- }));
- var fields =['id','name', 'symbol'];
- var domain =[['id','in',id_curency]];
- var resCurrecy = new model.web.Model('res.currency');
- resCurrecy.query(fields).filter(domain).all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
- fetchReduceVoucher: function () {
- var self = this;
- var newVoucher;
- var voucher=[];
- var cat = 0;
- var itemVoucher;
- var itemCurrencyRate;
- var company;
- var moneda = self.resCurrecy.shift();
- newVoucher = self.getVoucherInvoice();
- for (var i = 0; i < newVoucher.length; i++) {
- itemVoucher = newVoucher[i];
- itemCurrencyRate = self.getCutrrencyRate(itemVoucher.payment_rate_currency_id[0]);
- if(!itemCurrencyRate){
- itemCurrencyRate={};
- itemCurrencyRate.rate=1;
- }
- voucher.push({ ammount : itemVoucher.amount,
- amount_rate :(itemVoucher.amount/itemCurrencyRate.rate)
- });
- }
- if (voucher.length >0){
- cat = _.reduce(_.map(voucher, function (map) {
- return map.amount_rate;
- }), function (memo, num) {
- return memo + num;
- });
- }
- company = _.map(self.resCompany, function (map) {
- return map.currency_id[1];
- });
- if (moneda.id != 166){
- cat = accounting.formatNumber(cat,2, ".", ",");
- }else{
- cat = accounting.formatNumber(cat, ",", ".");
- }
- self.$el.find('.widget-content.widget-loading').css('display','none');
- self.$el.find('.widget-content').find('a').text(cat).append(' <small>'+moneda.symbol+'</small>');
- // self.$el.find('.widget-footer').find('span').text("Monto en "+ company);
- self.$el.find('#morosidad').unblock();
- },
- getCutrrencyRate: function (currency_id) {
- var self = this;
- return _.filter(self.currencyRate,function (item) {
- return item.currency_id[0] == currency_id
- }).shift();
- },
- getVoucherInvoice:function(){
- var self = this;
- var number = _.map(self.accountInvoice, function(map){
- return map.number;
- });
- return _.flatten(_.filter(self.accountVoucher,function(item){
- return _.contains(number,item.reference);
- }));
- },
- showCustomers: function (e) {
- var self = this;
- var hoy =moment().format('YYYY-MM-DD');
- var desde =moment().format('YYYY-MM-01');
- var hasta =moment().add(1,'months').format('YYYY-MM-01');
- var number = _.map(self.accountInvoice,function(map){return map.number});
- this.do_action({
- name:"Listado de compras del mes",
- type: 'ir.actions.act_window',
- res_model: "account.voucher",
- views: [[false, 'list'],[false,'form']],
- target: 'new',
- domain: [['type', '=', 'payment'],['state', '=', 'posted'],['date', '>=',desde],['date','<',hasta],['reference','in',number]],
- context: {},
- flags: {'form': {'action_buttons': false, 'options': {'mode': 'view'}}},
- });
- }
- });
- }
|