(function() { openerp.widgetInstanceStatementConfirm = null; openerp.parentInstanceStatementConfirm = {}; var QWeb = openerp.web.qweb; var instanceWeb = openerp.web; // Abrir caja openerp.EiruStatementConfirm = openerp.Widget.extend({ template: 'EiruStatementUtility.Confirm', id: undefined, buttons: undefined, bankStatement: [], statementGeneral: [], 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.parentInstanceStatementConfirm.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.fetchBankStatementGeneral(self.id); }).then(function(statementGeneral) { self.statementGeneral = statementGeneral; 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_confirm_user, self.resUser[0].id))){ instanceWeb.notification.do_warn("Atencion", "El usuario no tiene autorización para cerrar la caja."); return false; } return self.showModal(); }); }, /* Account bank Statement */ fetchBankStatement: function(id) { var bankStatement = new instanceWeb.Model('account.bank.statement'); return bankStatement.call('get_account_bank_statement_utility',[id], { context: new instanceWeb.CompoundContext() }); }, /* Get statement General */ fetchBankStatementGeneral: function(id) { var bankStatementGeneral = new instanceWeb.Model('account.bank.statement'); return bankStatementGeneral.call('get_account_bank_statement_general',[id], { context: new instanceWeb.CompoundContext() }); }, /* Confirm Statement */ confirm_statement: function(values) { var bankStatementTransfer = new instanceWeb.Model('account.bank.statement'); return bankStatementTransfer.call('account_bank_statement_confirm',[values], { 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_confirm_user','statement_confirm_transfer_user','statement_confirm_balance','statement_confirm_negative_amount']; var domain = [['active', '=', true]]; var statementConfig = new openerp.web.Model('account.bank.statement.config'); return statementConfig.query(fields).filter(domain).all(); }, /*Modal */ showModal: function() { var self = this; var defer =$.Deferred(); var results = true; var statementGeneral = self.statementGeneral; var selectedTrnasfer = false; if(!!statementGeneral.length){ statementGeneral.unshift({ 'id':' ', 'statementname':' ' }); } var modal = QWeb.render('ModalStatementUtility.Confirm',{ 'statement': statementGeneral }); $('.openerp_webclient_container').after(modal); $('.expired-account-modal').modal(); /* Balance */ var amountSymbol = $('.expired-account-modal').find('.statement-amount-symbol'); var amountCashbox = $('.expired-account-modal').find('.amount-cashbox'); var amountReal = $('.expired-account-modal').find('.amount-real'); var amountDiffer = $('.expired-account-modal').find('.amount-difference'); var refBalance = $('.expired-account-modal').find('.ref-balance'); /*transfer*/ var transferCasbox = $('.expired-account-modal').find('.confirm-transfer-casbox'); var cashboxTransfer = $('.expired-account-modal').find('.cashbox-transfer'); var amountTransfer = $('.expired-account-modal').find('.amount-transfer'); var refTransfer = $('.expired-account-modal').find('.ref-transfer'); /* Open cashBox*/ var amountOpen = $('.expired-account-modal').find('.amount-cashbox-open'); var buttonSave = $('.expired-account-modal').find('.button-save'); var currency = self.bankStatement[0].currencystatement; var transferSelected = null; amountSymbol.text(currency.symbol); amountCashbox.val(instanceWeb.formatCurrency(self.bankStatement[0].amount, currency)); amountReal.val(instanceWeb.formatCurrency(self.bankStatement[0].amount, currency)); amountOpen.val(instanceWeb.formatCurrency(self.bankStatement[0].amount, currency)); amountDiffer.val(0); amountTransfer.val('0'); refBalance.val('Balance de cierre correcto.'); $('.expired-account-modal').find('.is-not-transfer').css('display','none'); $('.expired-account-modal').find('.is-not-transfer').text(''); transferCasbox.removeAttr("disabled"); if (!statementGeneral.length) { $('.expired-account-modal').find('.is-not-transfer').css('display','inline-block'); $('.expired-account-modal').find('.is-not-transfer').text("No tienes ninguna caja general abierta"); transferCasbox.attr("disabled", true); } $('.expired-account-modal').find('.is-not-balance').css('display','none'); $('.expired-account-modal').find('.is-not-balance').text(""); amountReal.removeAttr("disabled"); refBalance.removeAttr("disabled"); // Ajsuste de saldo if (!(_.contains(self.statementConfig[0].statement_confirm_balance, self.resUser[0].id))) { $('.expired-account-modal').find('.is-not-balance').css('display','inline-block'); $('.expired-account-modal').find('.is-not-balance').text("El usuario no tiene autorización para realizar ajuste de cierre."); amountReal.attr("disabled", true); refBalance.attr("disabled", true); } // Transferencia if (!(_.contains(self.statementConfig[0].statement_confirm_transfer_user, self.resUser[0].id))){ $('.expired-account-modal').find('.is-not-transfer').css('display','inline-block'); $('.expired-account-modal').find('.is-not-transfer').text("El usuario no tiene autorización para realizar transferencia."); transferCasbox.attr("disabled", true); } /* Amount Real .keyup*/ amountReal.keyup(function(e) { if (e.key === currency.decimalSeparator && currency.decimalPlaces > 0) return false ; var cashBoxAmount = instanceWeb.unFormatCurrency(amountCashbox.val()); var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); var differenceAmount = (realAmount - cashBoxAmount); amountReal.val(instanceWeb.formatCurrency(realAmount, currency)); amountDiffer.val(instanceWeb.formatCurrency(differenceAmount, currency)); amountOpen.val(instanceWeb.formatCurrency(realAmount, currency)); amountReal.css('border-color','#ccc'); amountDiffer.css('color','#555'); if (differenceAmount < 0) amountDiffer.css('color','red'); if (e.keyCode === 13) refBalance.focus(); }); amountReal.focusout(function(e) { var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); var cashBoxAmount = instanceWeb.unFormatCurrency(amountCashbox.val()); if ((realAmount <= 0) && !(_.contains(self.statementConfig[0].statement_confirm_negative_amount, self.resUser[0].id))) { instanceWeb.notification.do_warn("Atencion", "El valor de cierre debes de ser mayo que 0."); amountReal.css('border-color','red'); amountReal.focus(); return false; } if (realAmount !== cashBoxAmount) refBalance.val('') var differenceAmount = (realAmount - cashBoxAmount); amountDiffer.css('color','#555'); if (differenceAmount < 0 ) amountDiffer.css('color','red'); }); /** * [Transferencia] */ transferCasbox.click(function(e){ var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); amountOpen.val(instanceWeb.formatCurrency(realAmount,currency)); amountTransfer.val('0'); transferSelected = e.target; selectedTrnasfer = false cashboxTransfer.val(''); refTransfer.val(""); $('.expired-account-modal').find('.is-transfer-confirm').css('display','none'); if (this.checked) { $('.expired-account-modal').find('.is-transfer-confirm').css('display','flex'); selectedTrnasfer = true; amountTransfer.val(instanceWeb.formatCurrency(realAmount,currency)); amountOpen.val('0'); } }) cashboxTransfer.change(function(e) { var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); }) /* amount transfer Keyup */ amountTransfer.keyup(function(e){ if (e.key === currency.decimalSeparator && currency.decimalPlaces > 0) return false ; var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); var transferAmount = instanceWeb.unFormatCurrency(amountTransfer.val()); var amount = (realAmount - transferAmount); amountTransfer.val(instanceWeb.formatCurrency(transferAmount,currency)); amountOpen.val(instanceWeb.formatCurrency(amount,currency)); if (e.keyCode === 13) buttonSave.focus(); }); /* amount transfer focus */ amountTransfer.focusout(function(e) { var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); var transferAmount = instanceWeb.unFormatCurrency(amountTransfer.val()); if (transferAmount <= 0) { instanceWeb.notification.do_warn("Atencion", "El monto a transferir no puede ser 0"); amountTransfer.css('border-color','red'); amountTransfer.focus(); return false; } if (transferAmount > realAmount){ instanceWeb.notification.do_warn("Atencion", "El monto a transferir no puede superar el monto de cierre."); amountTransfer.css('border-color','red'); amountTransfer.focus(); return false; } amountTransfer.css('border-color','#ccc'); var amount = (realAmount - transferAmount); // amountTransfer.val(instanceWeb.formatCurrency(transferAmount,currency)); amountOpen.val(instanceWeb.formatCurrency(amount,currency)); }); /*Click buttonSave*/ buttonSave.click(function(e) { var cashBoxAmount = instanceWeb.unFormatCurrency(amountCashbox.val()); var realAmount = instanceWeb.unFormatCurrency(amountReal.val()); var transferAmount = instanceWeb.unFormatCurrency(amountTransfer.val()); var amount_negative = _.contains(self.statementConfig[0].statement_confirm_negative_amount, self.resUser[0].id) // amountReal if ((realAmount <= 0) && (!amount_negative)) { instanceWeb.notification.do_warn("Atencion", "El valor de cierre debes de ser mayo que 0."); amountReal.css('border-color','red'); amountReal.focus(); return false; } amountReal.css('border-color','#ccc'); // refBalance if ((!refBalance.val()) && (cashBoxAmount !== realAmount)) { instanceWeb.notification.do_warn("Atencion", "Debes de ingresar una observación para el ajuste de saldo de cierre."); refBalance.css('border-color','red'); refBalance.focus(); return false; } refBalance.css('border-color','#ccc'); if (!!selectedTrnasfer){ /* cashboxTransfer */ if (!cashboxTransfer.val()) { instanceWeb.notification.do_warn("Atencion", "Debes seleccionar una caja general."); cashboxTransfer.css('border-color','red'); cashboxTransfer.focus(); return false; } cashboxTransfer.css('border-color','#ccc'); // amountTransfer if (transferAmount <= 0) { instanceWeb.notification.do_warn("Atencion", "El monto a transferir debe ser mayor a 0."); amountTransfer.css('border-color','red'); amountTransfer.focus(); return false; } if (transferAmount > realAmount){ instanceWeb.notification.do_warn("Atencion", "El monto a transferir no puede superar el monto de cierre."); amountTransfer.css('border-color','red'); amountTransfer.focus(); return false; } amountTransfer.css('border-color','#ccc'); /* refTransfer */ if (!refTransfer.val()) { instanceWeb.notification.do_warn("Atencion", "Debes ingresar el motivo de la transferencia."); refTransfer.css('border-color','red'); refTransfer.focus(); return false; } refTransfer.css('border-color','#ccc'); } cashBoxConfirm = { 'statementId': self.id, 'amountReal': realAmount, 'refBalance': refBalance.val().trim(), 'transfer': selectedTrnasfer, 'statementTransfer': !!selectedTrnasfer ? parseInt(cashboxTransfer.val()) : '', 'amountTransfer': !!selectedTrnasfer ? transferAmount : 0, 'refTransfer': !!selectedTrnasfer ? refTransfer.val() : '', } /* Confirm Statement */ self.confirm_statement(cashBoxConfirm).then(function(resultsConfirm) { return resultsConfirm; }).then(function(resultsConfirm) { self.reloadPage(); self.removeModal(e); if (!resultsConfirm) 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; }, }); 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.parentInstanceStatementConfirm = this; if (openerp.widgetInstanceStatementConfirm) { openerp.widgetInstanceStatementConfirm.updateId(record.id); if (this.$el.find('.button-statement-confirm').length !== 0 ) return ; } if (this.$el.find('.button-statement-confirm').length !== 0 ) return; openerp.widgetInstanceStatementConfirm = new openerp.EiruStatementConfirm(this); var element =this.$el.find('.oe_form').find('.eiru-statement-utility'); openerp.widgetInstanceStatementConfirm.appendTo(element[0]); openerp.widgetInstanceStatementConfirm.updateId(record.id); } }); } })();