(function(){ "use strict"; var QWeb = openerp.web.qweb; var number = openerp.web; openerp.edit_pagare_golden = {}; openerp.edit_pagare_golden.MovePrintGoldenWidget = openerp.Widget.extend({ template: "edit_pagare_golden.MovePrintGolden", accountInvoice:[], moveLine:[], currencyRate:[], resPartner:[], moveLineReconcile:[], pagare:[], doc:[], init: function (parent, id) { this._super(parent); // this.id = id; }, start: function () { var self = this; this.$el.click(function (e) { self.fecthInitial(); }); }, // inicial fecthInitial: function(){ var self= this; var id =openerp.webclient._current_state.id; this.fetchCurency().then(function(Currency){ self.currencyRate=Currency; return Currency; }).then(function(Currency){ return self.fetchInvoice(parseInt(id)); }).then(function(invoice){ self.accountInvoice = invoice; return self.fetchMoveLine(invoice); }).then(function(moveline){ self.moveLine = moveline; return self.fetchMoveLineReconcile(moveline); }).then(function(moveRecocile){ self.moveLineReconcile=moveRecocile; return self.fetchPartner(); }).then(function(partner){ self.resPartner = partner; return self.drawJSON(); }).then(function(doc){ self.doc = doc; return self.fetchJoint(); }); return false; }, // Buscar Cambio de Monedas USD,PYG,ARG,BRL fetchCurency: function (id_currency) { var defer = $.Deferred(); var currency_Rate = new openerp.web.Model('res.currency.rate'); var fields = ['currency_id', 'rate']; var domain = [['currency_id', '=', [166 , 20, 7, 3]]]; currency_Rate.query(fields).filter(domain).all().then(function (results) { defer.resolve(results); }); return defer; }, // Account invoice fetchInvoice: function(id) { var defer = $.Deferred(); var invoice = new openerp.web.Model('account.invoice'); var fields = ['id', 'number', 'currency_id', 'partner_id', 'date_invoice','move_line_debt']; var domain = [['id', '=', id]]; invoice.query(fields).filter(domain).all().then(function (results) { defer.resolve(results); }); return defer; }, // Move Line fetchMoveLine: function(invoice){ var defer = $.Deferred(); var id_move = _.flatten(_.map(invoice,function(item){return item.move_line_debt})); var moveLine = new openerp.web.Model('account.move.line'); var fields = ['id', 'debit','credit','date_maturity','currency_id','company_id','reconcile_partial_id','ref']; var domain = [['id', '=', id_move]]; moveLine.query(fields).filter(domain).order_by("id").all().then(function(results){ defer.resolve(results); }); return defer; }, // Move Line Reconcile fetchMoveLineReconcile: function(move){ var defer = $.Deferred(); var id_reco = _.flatten(_.map(move,function(item){return item.reconcile_partial_id[0]})); var moveLine = new openerp.web.Model('account.move.line'); var fields = ['id', 'debit','credit','date_maturity','currency_id','company_id','reconcile_partial_id']; var domain = [['reconcile_partial_id', '=', id_reco],['credit', '>', 0]]; moveLine.query(fields).filter(domain).all().then(function(results){ defer.resolve(results); }); return defer; }, // Partner fetchPartner: function(){ var defer = $.Deferred(); var defer = $.Deferred(); var partner_ids = _.flatten(_.map(this.accountInvoice,function(item){return item.partner_id[0]})); var resPartner = new openerp.web.Model('res.partner'); var fields =['id','name','phone','mobile','ruc', 'street']; var domain =[['id', '=', partner_ids]]; resPartner.query(fields).filter(domain).all().then(function(results){ defer.resolve(results); }); return defer; }, // Obtener EL JSON drawJSON: function(){ var defer = $.Deferred(); $.getJSON('/edit_pagare_golden/static/src/json/pagare.json').then(function(doc){ defer.resolve(doc); }); return defer; }, // Juntar datos fetchJoint: function(){ var self = this; var lineReconcile; var item; var partner; var rate; var invoice; invoice = this.accountInvoice.shift(); partner=this.resPartner.shift(); if (!partner){ partner={}; partner.name=""; partner.street=""; partner.ruc =" "; partner.phone=""; partner.mobile=""; }else{ if (!partner.name){partner.name=""}; if (!partner.street){partner.street=""}; if (!partner.ruc){partner.ruc =" "}; if (!partner.phone){partner.phone=""}; if (!partner.mobile){partner.mobile=""}; } for (var i = 0; i < self.moveLine.length; i++) { item = self.moveLine[i]; // Reconcile parcial lineReconcile = self.getLineReconcile(item.reconcile_partial_id[0]); if(!lineReconcile){ lineReconcile={}; lineReconcile.credit=0; } //Rate(cambio) rate=self.getRate(item.currency_id[0]); if (!rate){ rate={}; rate.rate=1; rate.currency_id = 3; rate.currency_simbol= "USD"; rate.simbol="$"; rate.currency_name="Dolares"; } self.pagare.push({number: invoice.number, pagar : accounting.formatNumber(((item.debit * rate.rate)-(lineReconcile.credit *rate.rate)), 2, ".", ","), date_invoice : self.formatDate(invoice.date_invoice), vencimiento: self.formatDate(item.date_maturity), company_id_name : item.company_id[1], montoletras : number.num2word(((item.debit * rate.rate)-(lineReconcile.credit *rate.rate))), partner_name : partner.name, street_res : partner.street, ruc_res : partner.ruc, phone_res : partner.phone, mobile_res : partner.mobile, credit : (lineReconcile.credit * rate.rate), debit : (item.debit * rate.rate), company_id : item.company_id[0], currency_simbol:rate.simbol, currecy_name : rate.currency_name, page : i+1+"/"+self.moveLine.length }); } self.drawPDF(); }, formatDate: function(date){ var fechaSel =date.split('-'); return (fechaSel[2]+"/"+fechaSel[1]+"/"+fechaSel[0]); }, // Get Reconile parcial getLineReconcile: function(id){ return _.filter(this.moveLineReconcile, function(item){return item.reconcile_partial_id[0] === id}).shift(); }, // Get rate getRate: function(id){ var rate; _.each(_.filter(this.currencyRate, function(item){return item.currency_id[0] === id}), function(item){ rate={}; rate.rate=item.rate; rate.currency_id = item.currency_id[0]; rate.currency_simbol= item.currency_id[1]; if (item.currency_id[1] == 'PYG'){ rate.simbol='Gs'; rate.currency_name='GuaranĂ­es'; } if (item.currency_id[1] == 'USD'){ rate.simbol="$"; rate.currency_name='Dolares'; } }); return rate; }, // Generar impresion drawPDF: function(){ var item; var self =this; var pdfDoc = new jsPDF(); for (var i = 0; i < self.pagare.length; i++) { item=self.pagare[i]; if (i > 0){ pdfDoc.addPage(); } _.each(self.doc, function(doc){ var texto =_.template(doc.content)(item); pdfDoc.setFontSize(doc.size); pdfDoc.setFontStyle(doc.fontStyle); pdfDoc.text(doc.x, doc.y, pdfDoc.splitTextToSize(texto, 180), null, null, doc.position); }); } // pdfDoc.output('dataurlnewwindow'); pdfDoc.save('Pagare.pdf'); self.deletObjet(); }, // Limpiar los Obejto deletObjet:function(){ var self=this; self.accountInvoice=[]; self.moveLine=[]; self.currencyRate=[]; self.resPartner=[]; self.moveLineReconcile=[]; self.pagare =[]; self.doc =[]; }, }); if(openerp.web && openerp.web.FormView) { openerp.web.FormView.include({ load_form: function(){ if (this.model === 'account.move.line') { var padre = this.$el.closest('.oe_notebook_page'); var hijo = padre.find('.oe_form_group.table-bordered'); // var id =openerp.webclient._current_state.id; if (hijo) { var moveprint = new openerp.edit_pagare_golden.MovePrintGoldenWidget(this); moveprint.insertBefore(hijo); } } return this._super.apply(this, arguments); } }); } })();