123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- (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);
- }
- });
- }
- })();
|