123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- openerp.account_bank_statement_print = function (instance, local) {
- local.widgetInstance = null;
- local.parentInstance = null;
- local.PrintStatementWidget = instance.Widget.extend({
- template : "account_bank_statement_print.PrintStatement",
- resStatement:[],
- jsonDoc:[],
- // Init
- init:function(parent){
- this._super(parent);
- },
- updateId : function(id){
- var self = this;
- self.id=id;
- },
- start: function () {
- var self = this;
- this.$el.click(function (e) {
- self.fecthInitial();
- });
- },
- fecthInitial: function(){
- var id= openerp.webclient._current_state.id;
- var self = this;
- self.fecthStatement(id).then(function(statement){
- return statement;
- }).then(function(statement){
- self.resStatement = statement;
- return self.fetchStatementLine();
- }).then(function(statementLine){
- self.resStatementLine = statementLine;
- return self.drawPDF();
- });
- return false;
- },
- // Consultar Statement
- fecthStatement: function(id){
- var defer = $.Deferred();
- var fields=['id','name','journal_id','user_id','date','balance_start','total_entry_encoding','balance_end','company_id','closing_date'];
- var domain=[['id','=', id]];
- var Statement = new instance.web.Model('account.bank.statement');
- Statement.query(fields).filter(domain).order_by('id').all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
- // Consultar Statement Line
- fetchStatementLine: function () {
- var self = this;
- var defer = $.Deferred();
- var statement_id = _.flatten(_.map(self.resStatement,function(map){
- return map.id;
- }));
- var fields=['id','partner_id','statement_id','name','ref', 'amount','date'];
- var domain=[['statement_id','=', statement_id]];
- var StatementLine = new instance.web.Model('account.bank.statement.line');
- StatementLine.query(fields).filter(domain).order_by('id').all().then(function(results){
- defer.resolve(results);
- });
- return defer;
- },
- valorNull:function(dato){
- var valor ="";
- if (dato){
- if(dato == true && typeof dato == 'boolean'){
- valor=" ";
- }else{
- valor=dato;
- }
- }
- return valor;
- },
- // Generar el PDF
- drawPDF:function(){
- var self = this;
- var doc=[];
- var docItem=[];
- var getColumns=[];
- var cabecera=['Fecha','Comunicacion','Referencia','Socio','Importe']
- var pdfDoc = new jsPDF();
- var resStatement = self.resStatement;
- var resStatementLine = self.resStatementLine;
- var positive;
- var negative;
- var total_ingreso=0;
- var total_egreso=0;
- for (var i = 0; i < resStatementLine.length; i++) {
- if(resStatement[0].id = resStatementLine[i].id){
- if(resStatementLine[i].amount>0){
- positive = accounting.formatNumber(resStatementLine[i].amount,'0','.',',');
- total_ingreso+=resStatementLine[i].amount;
- negative = 0;
- }else{
- negative = accounting.formatNumber(resStatementLine[i].amount*-1,'0','.',',');
- positive = 0;
- total_egreso+=resStatementLine[i].amount;
- }
- docItem.push({
- line_date : moment(resStatementLine[i].date).format("DD/MM/YYYY"),
- line_name : resStatementLine[i].name,
- line_ref : self.valorNull(resStatementLine[i].ref),
- line_partner_id : resStatementLine[i].partner_id[1],
- line_negative_amount : negative,
- line_positive_amount : positive
- })
- }
- }
- docItem.push({
- line_date : '',
- line_name : 'Totales',
- line_ref : '',
- line_partner_id : '',
- line_negative_amount : accounting.formatNumber(total_egreso*-1,'0','.',','),
- line_positive_amount : accounting.formatNumber(total_ingreso,'0','.',',')
- });
- doc.push({
- name : resStatement[0].name,
- journal_id : resStatement[0].journal_id[1],
- date : moment(resStatement[0].date).format("DD/MM/YYYY"),
- closing_date : moment(resStatement[0].closing_date).format("DD/MM/YYYY"),
- user_id : resStatement[0].user_id[1],
- balance_start : accounting.formatNumber(resStatement[0].balance_start,'0','.',','),
- total_entry_encoding : accounting.formatNumber(resStatement[0].total_entry_encoding,'0','.',','),
- balance_end : resStatement[0].balance_end,
- company_id : resStatement[0].company_id[1],
- });
- getColumns.push({
- title : 'Fecha',
- dataKey: 'line_date',
- });
- getColumns.push({
- title : 'Comunicacion',
- dataKey: 'line_name'
- });
- getColumns.push({
- title : 'Referencia',
- dataKey: 'line_ref'
- });
- getColumns.push({
- title : 'Nombre',
- dataKey: 'line_partner_id'
- });
- getColumns.push({
- title : 'Egreso',
- dataKey: 'line_negative_amount'
- });
- getColumns.push({
- title : 'Ingreso',
- dataKey: 'line_positive_amount'
- });
- var rows = docItem;
- pdfDoc.autoTable(getColumns, rows, {
- styles: { overflow: 'linebreak', fontSize: 8, columnWidth: 'wrap'},
- columnStyles: {
- line_date : {columnWidth: '8px'},
- line_name : {columnWidth: '8px'},
- line_ref : {columnWidth: '8px'},
- line_partner_id : {columnWidth: '8px'},
- line_negative_amount : {columnWidth: '8px',halign:'right',fontStyle: 'bold'},
- line_positive_amount : {columnWidth: '8px',halign:'right',fontStyle: 'bold'},
- },
- // ,fillColor: [249, 61, 61],textColor:255
- margin: { top: 45, horizontal: 7},
- addPageContent: function (data) {
- pdfDoc.setFontSize(15);
- pdfDoc.setFontStyle('bold');
- pdfDoc.setTextColor(40);
- pdfDoc.text(80,10,'Resumen de caja');
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text('Numero de Registro: ' + doc[0].name, data.settings.margin.left, 20);
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text(120,20,'Metodo de Pago: ' + doc[0].journal_id);
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text('Fecha de apertura: ' + doc[0].date, data.settings.margin.left, 25);
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text(120,25,'Fecha de cierre: ' + doc[0].closing_date);
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text(7,30,'Responsable: ' + doc[0].user_id);
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text(120,30,'Empresa: ' + doc[0].company_id);
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text(7,35,'Saldo de apertura: ' + accounting.formatNumber(doc[0].balance_start,'0','.',','));
- pdfDoc.setFontSize(10);
- pdfDoc.setFontStyle('normal');
- pdfDoc.setTextColor(40);
- pdfDoc.text(120,35,'Saldo Final: ' + accounting.formatNumber(doc[0].balance_end,'0','.',','));
- // FOOTER
- var str = "Página " + data.pageCount;
- pdfDoc.setFontSize(9);
- pdfDoc.setFontStyle('bold');
- pdfDoc.setTextColor(40);
- pdfDoc.text(str, data.settings.margin.left, pdfDoc.internal.pageSize.height - 5);
- }
- });
- pdfDoc.save('Resumen de caja.pdf')
- },
- });
- if (instance.web && instance.web.FormView) {
- instance.web.FormView.include({
- load_form: function (record) {
- this._super.apply(this, arguments);
- if (this.model !== 'account.bank.statement') return;
- local.parentInstance = this;
- if (local.widgetInstance) {
- local.widgetInstance.updateId(record.id);
- }
- local.widgetInstance = new local.PrintStatementWidget(this);
- var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
- elemento = elemento.find('.oe_right.oe_button_box.print_statement_box');
- local.widgetInstance.appendTo(elemento);
- local.widgetInstance.updateId(record.id);
- }
- });
- }
- }
|