(function() { openerp.widgetInstanceStatementCancel = null; openerp.parentInstanceStatementCancel = {}; var QWeb = openerp.web.qweb; var instanceWeb = openerp.web; // Abrir caja openerp.EiruStatementCancel = openerp.Widget.extend({ template: 'EiruStatementUtility.Cancel', id: undefined, buttons: undefined, bankStatement: [], resUser: [], statementConfig: [], /* init */ init: function(parent) { this._super(parent); this.buttons = parent.$buttons; }, /* start */ start: function () { var self = this this.$el.click(function() { self.fetchInitial(); }); self.buttons.click(function(e) { /* C (Crear) */ if (e.target.accessKey === 'C') self.$el.css('display','none'); /* E (Editar) */ if (e.target.accessKey === 'E') self.$el.css('display','none'); /* S (Guarrdar) */ if (e.target.accessKey === 'S') self.$el.css('display','flex'); /* D (Cancelar) */ if (e.target.accessKey === 'D') self.$el.css('display','flex'); }); }, /* Actualizar Id de la visat actual */ updateId: function(id) { var self = this; self.id = id; }, /* Reload Page*/ reloadPage: function() { openerp.parentInstanceStatementCancel.reload(); }, /* Description: Función para remover el modal */ removeModal: function() { $('.expired-account-modal').remove(); $('.modal-backdrop').remove(); }, /* Método inicial */ fetchInitial: function() { var self = this; self.fetchBankStatement(self.id).then(function(bankStatement) { return bankStatement; }).then(function(bankStatement) { self.bankStatement = bankStatement; return self.fetchGetUserLogin(); }).then(function(resUser){ self.resUser = resUser; return self.fetchStatementConfigTransfer(); }).then(function(statementConfig){ self.statementConfig = statementConfig; /* Verificar el usuario */ if (!self.resUser.length){ instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación."); return false; } /* Verificar si existe configuracion */ if (!self.statementConfig.length){ instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación, no existe configuración de caja."); return false; } /* Verificar si el usuario tiene autorización para cerrar la caja */ if (!(_.contains(self.statementConfig[0].statement_cancel_user, self.resUser[0].id))){ instanceWeb.notification.do_warn("Atencion", "El usuario no tiene autorización para cancelar la caja."); return false; } return self.showModal(); }); }, /* Account bank Statement */ fetchBankStatement: function(id) { var bankStatement = new instanceWeb.Model('account.bank.statement'); return bankStatement.call('eiru_get_bank_statement_cancel',[parseInt(id)], { context: new instanceWeb.CompoundContext() }); }, /*Get User*/ fetchGetUserLogin: function(){ var bankStatementUser = new instanceWeb.Model('account.bank.statement'); return bankStatementUser.call('eiru_transfers_get_user', { context: new instanceWeb.CompoundContext() }); }, /* statement Config */ fetchStatementConfigTransfer: function() { var fields = ['id','name','statement_cancel_user']; var domain = [['active', '=', true]]; var statementConfig = new openerp.web.Model('account.bank.statement.config'); return statementConfig.query(fields).filter(domain).all(); }, /* get Transferencia */ getTransfer: function(){ var self = this; var statement = self.bankStatement[0]; var transfer = []; var currency = statement.currencystatement; if(!currency) return transfer; _.each(statement.statementTransfer, function(item) { transfer.push({ 'id': item.id, 'date': moment(item.date).format("DD-MM-YYYY"), 'amount': accounting.formatNumber(item.amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator), 'statementUser': item.type === 'out' ? item.inputStatement.statementUser :item.outputStatement.statementUser, 'statement': item.type === 'out' ? item.inputStatement.name :item.outputStatement.name, 'statementState': item.type === 'out' ? item.inputStatement.state : item.outputStatement.state, 'type': item.type === 'in' ?'Entrada' :'Salida', 'typeStatement': item.type }); }); return transfer; }, getStatementState: function(statement, state){ return _.filter(statement,function(item){ return item.statementState === state; }); }, getStateTransfer: function(statement, id) { return _.filter(statement, function(item){ return item.id === id; }); }, /* Get Statement Confirm*/ getStatementConfirm: function(){ var self = this; var statement = self.bankStatement[0]; var confirm = []; var currency = statement.currencystatement; if (!currency) return confirm; _.each(statement.statementConfirm, function(item) { if ((item.type === 'confirm') && (!item.statementOpen.statementUser)) return false; confirm.push({ 'id': item.id, 'date': moment(item.date).format("DD-MM-YYYY"), 'amountNextOpen': accounting.formatNumber(item.amountNextOpen, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator), 'statement': item.type === 'open' ?item.statementConfirm.name :item.statementOpen.name, 'statementUser': item.type === 'open' ?item.statementConfirm.statementUser :item.statementOpen.statementUser, 'messege': 'Saldo de Apertura', }); }) return confirm; }, /*Modal */ showModal: function() { var self = this; var defer =$.Deferred(); var results = true; var transfer = self.getTransfer(); var confirm = self.getStatementConfirm(); var modal = QWeb.render('ModalStatementUtility.Cancel',{ 'transfer': transfer, 'confirm': confirm }); $('.openerp_webclient_container').after(modal); $('.expired-account-modal').modal(); /* Transferencia */ var cancelTransferMessege = $('.expired-account-modal').find('.cancel-transfer-messege'); var tableTransfer = $('.expired-account-modal').find('.table-tbody-transfer').find('tr'); /* confirm */ var cancelConfirmMessege = $('.expired-account-modal').find('.cancel-confirm-messege'); /* Motivo */ var messegeCancel = $('.expired-account-modal').find('.messege-cancel'); /* button */ var buttonSave = $('.expired-account-modal').find('.button-save'); if (!transfer.length) $('.expired-account-modal').find('.cancel-transfer').css('display','none'); if (!confirm.length) $('.expired-account-modal').find('.cancel-confirm').css('display','none'); _.each(tableTransfer, function(tr) { var idTransfer = (($(tr).children()[0]).textContent).trim(); var stateTransfer = self.getStateTransfer(transfer, parseInt(idTransfer)); if (!stateTransfer.length) return false; if (stateTransfer[0].statementState === 'confirm'){ $(tr).css('color','red') } }); /* Caja Cerrada */ stateStatement = self.getStatementState(transfer, 'confirm'); cancelTransferMessege.css('display','none'); cancelTransferMessege.text(""); if (stateStatement.length) cancelTransferMessege.css('display','flex'); cancelTransferMessege.text("Existe "+stateStatement.length+" caja cerrada "); /*Click buttonSave*/ buttonSave.click(function(e) { if (!(messegeCancel.val().trim())){ instanceWeb.notification.do_warn("Atencion", "Debes ingresar el motivo para continuar."); messegeCancel.css('border-color','red'); messegeCancel.focus(); return false; } messegeCancel.css('border-color','#ccc'); cancel = { 'statementId': self.id, 'messege':messegeCancel.val() }; self.cancelStatement(cancel).then(function(resultsCancel) { return resultsCancel; }).then(function(resultsCancel) { self.reloadPage(); self.removeModal(e); if (!resultsCancel) results = false; }); defer.resolve(results); }); /* Click Cerrar */ $('.expired-account-modal').on('hidden.bs.modal', function(e) { results = false; defer.resolve(results); self.removeModal(e); }); return defer; }, cancelStatement:function(values){ var bankStatementUser = new instanceWeb.Model('account.bank.statement'); return bankStatementUser.call('eiru_statement_cancel',[values], { context: new instanceWeb.CompoundContext() }); } }); 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.parentInstanceStatementCancel = this; if (openerp.widgetInstanceStatementCancel) { openerp.widgetInstanceStatementCancel.updateId(record.id); if (this.$el.find('.button-statement-cancel').length !== 0 ) return ; } if (this.$el.find('.button-statement-cancel').length !== 0 ) return; openerp.widgetInstanceStatementCancel = new openerp.EiruStatementCancel(this); var element =this.$el.find('.oe_form').find('.eiru-statement-utility-cancel'); openerp.widgetInstanceStatementCancel.appendTo(element[0]); openerp.widgetInstanceStatementCancel.updateId(record.id); } }); } })();