|
@@ -0,0 +1,324 @@
|
|
|
+(function() {
|
|
|
+
|
|
|
+ openerp.widgetInstanceStatementConfirmPrint = null;
|
|
|
+ openerp.parentInstanceStatementConfirmPrint = {};
|
|
|
+ var QWeb = openerp.web.qweb;
|
|
|
+ var instanceWeb = openerp.web;
|
|
|
+
|
|
|
+ openerp.EiruStatementConfirmPrint = openerp.Widget.extend({
|
|
|
+ template: 'EiruStatementUtility.ConfirmPrint',
|
|
|
+ id: undefined,
|
|
|
+ buttons: undefined,
|
|
|
+ statementConfirm: [],
|
|
|
+
|
|
|
+ init: function(parent) {
|
|
|
+ this._super(parent);
|
|
|
+ this.buttons = parent.$buttons;
|
|
|
+ },
|
|
|
+
|
|
|
+ start: function () {
|
|
|
+ var self = this
|
|
|
+ this.$el.click(function() {
|
|
|
+ self.fetchInitial();
|
|
|
+ });
|
|
|
+ self.buttons.click(function(e) {
|
|
|
+
|
|
|
+ if (e.target.accessKey === 'C')
|
|
|
+ self.$el.css('display','none');
|
|
|
+
|
|
|
+ if (e.target.accessKey === 'E')
|
|
|
+ self.$el.css('display','none');
|
|
|
+
|
|
|
+ if (e.target.accessKey === 'S')
|
|
|
+ self.$el.css('display','flex');
|
|
|
+
|
|
|
+ if (e.target.accessKey === 'D')
|
|
|
+ self.$el.css('display','flex');
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ updateId: function(id) {
|
|
|
+ var self = this;
|
|
|
+ self.id = id;
|
|
|
+ self.$el.css('display','flex');
|
|
|
+ if(!id)
|
|
|
+ self.$el.css('display','none');
|
|
|
+ },
|
|
|
+
|
|
|
+ reloadPage: function() {
|
|
|
+ openerp.parentInstanceStatementConfirmPrint.reload();
|
|
|
+ },
|
|
|
+ removeModal: function() {
|
|
|
+ $('.expired-account-modal').remove();
|
|
|
+ $('.modal-backdrop').remove();
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchInitial: function() {
|
|
|
+ var self = this;
|
|
|
+ self.fetchCashboxStatementConfirm(self.id).then(function(statementConfirm) {
|
|
|
+ return statementConfirm;
|
|
|
+ }).then(function(statementConfirm) {
|
|
|
+ self.statementConfirm = statementConfirm;
|
|
|
+ return self.printSelectedType();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchCashboxStatementConfirm: function(id) {
|
|
|
+ var statementConfirm = new instanceWeb.Model('cashbox.statement.confirm');
|
|
|
+ return statementConfirm.call('get_cashbox_statement_confirm',[id], {
|
|
|
+ context: new instanceWeb.CompoundContext()
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ printSelectedType: function(){
|
|
|
+ var self = this;
|
|
|
+ var modal = QWeb.render('ModalStatementUtility.ConfirmPrint');
|
|
|
+ $('.openerp_webclient_container').after(modal);
|
|
|
+ $('.expired-account-modal').modal();
|
|
|
+
|
|
|
+ var printTicket = $('.expired-account-modal').find('.print-ticket');
|
|
|
+ var printNormal = $('.expired-account-modal').find('.print-normal');
|
|
|
+
|
|
|
+
|
|
|
+ printTicket.click(function(e){
|
|
|
+ self.drawPdfConfirmStatementTicket();
|
|
|
+ self.removeModal(e);
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ printNormal.click(function(e){
|
|
|
+ self.drawPdfConfirmStatementNormal();
|
|
|
+ self.removeModal(e);
|
|
|
+ });
|
|
|
+
|
|
|
+ $('.openerp_webclient_container').after(modal);
|
|
|
+ $('.expired-account-modal').modal();
|
|
|
+ $('.expired-account-modal').on('hidden.bs.modal', function(e) {
|
|
|
+ self.removeModal(e);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ drawPdfConfirmStatementNormal: function() {
|
|
|
+ var self = this;
|
|
|
+ var pdfDoc = new jsPDF();
|
|
|
+ var statementConfirm = self.statementConfirm[0];
|
|
|
+
|
|
|
+ if (!statementConfirm) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ var currency = statementConfirm.statement.currencystatement;
|
|
|
+ var y = 0;
|
|
|
+ var space = 7;
|
|
|
+ y = 15;
|
|
|
+ pdfDoc.setFontSize('15');
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.text(105,y, pdfDoc.splitTextToSize(statementConfirm.statement.name, 180) , null, null, 'center');
|
|
|
+
|
|
|
+ y += space;
|
|
|
+ pdfDoc.setFontSize('12');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(105,y, pdfDoc.splitTextToSize(statementConfirm.statement.typeStatementName, 180) , null, null, 'center');
|
|
|
+
|
|
|
+ y += space;
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.text(70,y, 'Fecha de apertura:');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(110,y, moment(statementConfirm.statement.dateOpen).format('DD-MM-YYYY'));
|
|
|
+
|
|
|
+ y += space;
|
|
|
+ pdfDoc.text(70,y, 'Fecha de cierre:');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(110, y, moment(statementConfirm.statement.dateConfirm).format('DD-MM-YYYY'));
|
|
|
+
|
|
|
+ y += space;
|
|
|
+ pdfDoc.setFontSize('12');
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.text(70,y, 'Moneda:');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(110, y, currency.name);
|
|
|
+
|
|
|
+
|
|
|
+ var getColumns = [
|
|
|
+ {
|
|
|
+ 'title': 'Operación ',
|
|
|
+ 'dataKey': 'ref'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'title': 'Monto',
|
|
|
+ 'dataKey': 'amount'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ rowsPdf = [
|
|
|
+ {
|
|
|
+ 'ref': 'Saldo teórico de cierre',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountStatement, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Saldo real de cierre',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountReal, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Diferencia de cierre',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountDifference, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Transferencia a caja general ',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.transferCasBox.amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Reserva para la próxima apertura',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountNextOpen, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ }
|
|
|
+
|
|
|
+ ]
|
|
|
+
|
|
|
+ pdfDoc.autoTable(getColumns, rowsPdf, {
|
|
|
+ theme: 'grid',
|
|
|
+ startY: 50,
|
|
|
+ columnStyles: {
|
|
|
+ amount : {halign:'right' },
|
|
|
+ },
|
|
|
+ margin: { top: 5, horizontal: 20},
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ y += 100;
|
|
|
+ pdfDoc.setFontSize('12');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(50,y, pdfDoc.splitTextToSize('.......................................................', 180) , null, null, 'center');
|
|
|
+ pdfDoc.text(150,y, pdfDoc.splitTextToSize('.......................................................', 180) , null, null, 'center');
|
|
|
+ y +=5;
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.text(50,y, pdfDoc.splitTextToSize(statementConfirm.userStatementName, 180) , null, null, 'center');
|
|
|
+ pdfDoc.text(150,y, pdfDoc.splitTextToSize(statementConfirm.userConfirmName, 180) , null, null, 'center');
|
|
|
+ y +=5;
|
|
|
+ pdfDoc.setFontSize('9');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(50,y, pdfDoc.splitTextToSize('Responsable de la caja ', 180) , null, null, 'center');
|
|
|
+ pdfDoc.text(150,y, pdfDoc.splitTextToSize('Responsable del cierre ', 180) , null, null, 'center');
|
|
|
+
|
|
|
+ pdfDoc.save('RESUME DE CAJA '+statementConfirm.name.toUpperCase()+'.pdf');
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+
|
|
|
+ drawPdfConfirmStatementTicket: function () {
|
|
|
+ var self = this;
|
|
|
+ var pdfDoc = new jsPDF({
|
|
|
+ orientation: 'p',
|
|
|
+ unit: 'mm',
|
|
|
+ format: [70, 297]
|
|
|
+ })
|
|
|
+
|
|
|
+ var statementConfirm = self.statementConfirm[0];
|
|
|
+
|
|
|
+ if (!statementConfirm)
|
|
|
+ return false
|
|
|
+
|
|
|
+ var currency = statementConfirm.statement.currencystatement;
|
|
|
+ rowsPdf = [
|
|
|
+ {
|
|
|
+ 'ref': 'Saldo teórico de cierre',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountStatement, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Saldo real de cierre',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountReal, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Diferencia de cierre',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountDifference, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Transferencia a caja general ',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.transferCasBox.amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'ref': 'Reserva para la próxima apertura',
|
|
|
+ 'amount': accounting.formatNumber(statementConfirm.amountNextOpen, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)
|
|
|
+ }
|
|
|
+ ]
|
|
|
+
|
|
|
+ var y = 0;
|
|
|
+ var space = 7;
|
|
|
+ y = 4;
|
|
|
+ pdfDoc.setFontSize('14');
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize(statementConfirm.statement.name, 70) , null, null, 'center');
|
|
|
+ y += space;
|
|
|
+ pdfDoc.setFontSize('12');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize(statementConfirm.statement.typeStatementName, 180) , null, null, 'center');
|
|
|
+ pdfDoc.setFontSize('9');
|
|
|
+ y += space;
|
|
|
+ pdfDoc.text(4,y, 'Fecha de apertura:');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(38,y, moment(statementConfirm.statement.dateOpen).format('DD-MM-YYYY'));
|
|
|
+ y += space;
|
|
|
+ pdfDoc.text(4,y, 'Fecha de cierre:');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(38, y, moment(statementConfirm.statement.dateConfirm).format('DD-MM-YYYY'));
|
|
|
+ y += space;
|
|
|
+ pdfDoc.text(4,y, 'Moneda:');
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.text(38, y, currency.name);
|
|
|
+ y += space;
|
|
|
+ pdfDoc.text(2, y, "==============================");
|
|
|
+ _.each(rowsPdf, function(item){
|
|
|
+ y += 5;
|
|
|
+ pdfDoc.text(3, y, item.ref);
|
|
|
+ y += 5;
|
|
|
+ var x = (40 - item.amount.length)
|
|
|
+ pdfDoc.text(x, y, item.amount);
|
|
|
+ });
|
|
|
+ y += 5;
|
|
|
+ pdfDoc.text(2, y, "==============================");
|
|
|
+
|
|
|
+ y += 20;
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize('.........................................', 70) , null, null, 'center');
|
|
|
+ y+= 5;
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize(statementConfirm.userStatementName, 70) , null, null, 'center');
|
|
|
+ y+= 5;
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize('Responsable de la caja ', 70) , null, null, 'center');
|
|
|
+
|
|
|
+ y+= 20;
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize('.........................................', 70) , null, null, 'center');
|
|
|
+ y+= 5;
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize(statementConfirm.userConfirmName, 180) , null, null, 'center');
|
|
|
+ y+= 5;
|
|
|
+ pdfDoc.text(30,y, pdfDoc.splitTextToSize('Responsable del cierre ', 180) , null, null, 'center');
|
|
|
+
|
|
|
+ pdfDoc.save('RESUME DE CAJA '+statementConfirm.name.toUpperCase()+'.pdf');
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ if (openerp.web && openerp.web.FormView) {
|
|
|
+ openerp.web.FormView.include({
|
|
|
+ load_record: function(record) {
|
|
|
+ this._super.apply(this, arguments);
|
|
|
+
|
|
|
+ if (this.model !== 'account.bank.statement')
|
|
|
+ return;
|
|
|
+
|
|
|
+ openerp.parentInstanceStatementConfirmPrint = this;
|
|
|
+
|
|
|
+ if (openerp.widgetInstanceStatementConfirmPrint) {
|
|
|
+ openerp.widgetInstanceStatementConfirmPrint.updateId(record.id);
|
|
|
+ if (this.$el.find('.button-statement-confirm-print').length !== 0 )
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.$el.find('.button-statement-confirm-print').length !== 0 )
|
|
|
+ return;
|
|
|
+
|
|
|
+ openerp.widgetInstanceStatementConfirmPrint = new openerp.EiruStatementConfirmPrint(this);
|
|
|
+ var element =this.$el.find('.oe_form').find('.eiru-statement-print');
|
|
|
+
|
|
|
+ openerp.widgetInstanceStatementConfirmPrint.appendTo(element[0]);
|
|
|
+ openerp.widgetInstanceStatementConfirmPrint.updateId(record.id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+})();
|