|
@@ -0,0 +1,138 @@
|
|
|
+openerp.krazy_report = function (instance, local) {
|
|
|
+ var QWeb = instance.web.qweb;
|
|
|
+
|
|
|
+ console.log(instance);
|
|
|
+ console.log(local);
|
|
|
+
|
|
|
+ local.ReportWidget = instance.Widget.extend({
|
|
|
+ template: 'ReportWrapperTemplate',
|
|
|
+ columns: ['Id', 'Name', 'E-mail'],
|
|
|
+ start: function () {
|
|
|
+ var pdfDoc = new window.jsPDF();
|
|
|
+ var model = new instance.web.Model('res.partner');
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ model.query().all().then(function (results) {
|
|
|
+ pdfDoc.autoTable(self.columns, _.map(results, function (item) {
|
|
|
+ return _.values(_.pick(item, 'id', 'name', 'email'));
|
|
|
+ }), {
|
|
|
+ theme: 'grid', // 'striped', 'grid' or 'plain',
|
|
|
+ headerStyles: {
|
|
|
+ fontStyle: 'bold',
|
|
|
+ fillColor: '#000'
|
|
|
+ },
|
|
|
+ margin: {
|
|
|
+ top: 30
|
|
|
+ },
|
|
|
+ addPageContent: function (data) {
|
|
|
+ pdfDoc.text('Reporte de clientes', 15, 20);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ self.$el.find('.pdf_wrapper').attr('src', pdfDoc.output('datauristring'));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ local.ReportWidgetNewWindow = instance.Widget.extend({
|
|
|
+ template: 'ReportWrapperTemplate',
|
|
|
+ columns: ['Id', 'Name', 'E-mail', 'Foto'],
|
|
|
+ start: function () {
|
|
|
+ var pdfDoc = new window.jsPDF();
|
|
|
+ var model = new instance.web.Model('res.partner');
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ model.query().all().then(function (results) {
|
|
|
+ pdfDoc.autoTable(self.columns, _.map(results, function (item) {
|
|
|
+ return _.values(_.pick(item, 'id', 'name', 'email'));
|
|
|
+ }), {
|
|
|
+ theme: 'grid', // 'striped', 'grid' or 'plain',
|
|
|
+ headerStyles: {
|
|
|
+ fontStyle: 'bold',
|
|
|
+ fillColor: '#000'
|
|
|
+ },
|
|
|
+ margin: {
|
|
|
+ top: 30
|
|
|
+ },
|
|
|
+ addPageContent: function (data) {
|
|
|
+ pdfDoc.text('Reporte de clientes', 15, 20);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ pdfDoc.output('dataurlnewwindow');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ local.ReportWidgetModal = instance.Widget.extend({
|
|
|
+ template: 'ReportWrapperModalTemplate',
|
|
|
+ columns: ['Id', 'Name', 'E-mail'],
|
|
|
+ start: function () {
|
|
|
+ var pdfDoc = new window.jsPDF();
|
|
|
+ var model = new instance.web.Model('res.partner');
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ model.query().all().then(function (results) {
|
|
|
+ pdfDoc.autoTable(self.columns, _.map(results, function (item) {
|
|
|
+ return _.values(_.pick(item, 'id', 'name', 'email'));
|
|
|
+ }), {
|
|
|
+ theme: 'grid', // 'striped', 'grid' or 'plain',
|
|
|
+ headerStyles: {
|
|
|
+ fontStyle: 'bold',
|
|
|
+ fillColor: '#000'
|
|
|
+ },
|
|
|
+ margin: {
|
|
|
+ top: 30
|
|
|
+ },
|
|
|
+ addPageContent: function (data) {
|
|
|
+ pdfDoc.text('Reporte de clientes', 15, 20);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ self.$el.find('.pdf_wrapper').attr('src', pdfDoc.output('datauristring'));
|
|
|
+ self.$el.modal();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ local.ReportWidgetQWeb = instance.Widget.extend({
|
|
|
+ template: 'ReportWrapperTemplate',
|
|
|
+ columns: ['Id', 'Name', 'E-mail'],
|
|
|
+ start: function () {
|
|
|
+ var pdfDoc = new window.jsPDF();
|
|
|
+ var model = new instance.web.Model('res.partner');
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ model.query().all().then(function (results) {
|
|
|
+ var docRendered = QWeb.render('ReportQWebTemplate', { data: results });
|
|
|
+ var phantomDiv = document.createElement('div');
|
|
|
+ phantomDiv.innerHTML = docRendered;
|
|
|
+
|
|
|
+ var jsonExtracted = pdfDoc.autoTableHtmlToJson(phantomDiv.firstElementChild);
|
|
|
+ pdfDoc.autoTable(jsonExtracted.columns, jsonExtracted.data, {
|
|
|
+ theme: 'grid', // 'striped', 'grid' or 'plain',
|
|
|
+ headerStyles: {
|
|
|
+ fontStyle: 'bold',
|
|
|
+ fillColor: '#000'
|
|
|
+ },
|
|
|
+ margin: {
|
|
|
+ top: 30
|
|
|
+ },
|
|
|
+ addPageContent: function (data) {
|
|
|
+ pdfDoc.text('Reporte de clientes', 15, 20);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ self.$el.find('.pdf_wrapper').attr('src', pdfDoc.output('datauristring'));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ instance.web.client_actions.add('krazy_report.report', 'instance.krazy_report.ReportWidget');
|
|
|
+ instance.web.client_actions.add('krazy_report.report_new_window', 'instance.krazy_report.ReportWidgetNewWindow');
|
|
|
+ instance.web.client_actions.add('krazy_report.report_modal', 'instance.krazy_report.ReportWidgetModal');
|
|
|
+ instance.web.client_actions.add('krazy_report.report_qweb', 'instance.krazy_report.ReportWidgetQWeb');
|
|
|
+}
|