(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: [], 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.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() }); }, /*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(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountReal.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountOpen.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); // amountTransfer.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountDiffer.val('0'); amountTransfer.val('0'); amountOpen 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); } /** * [Saldo de cierre] */ /* Amount Real .keyup*/ amountReal.keyup(function(e) { var cashBoxAmount = accounting.unformat(amountCashbox.val(),currency.decimalSeparator); var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator); var differenceAmount = (realAmount - cashBoxAmount); amountReal.val(accounting.formatNumber(realAmount,0, currency.thousandsSeparator, currency.decimalSeparator)); amountDiffer.val(accounting.formatNumber(differenceAmount,0, currency.thousandsSeparator, currency.decimalSeparator)); amountOpen.val(accounting.formatNumber(realAmount,0, currency.thousandsSeparator, currency.decimalSeparator)); // amountTransfer.val(accounting.formatNumber(realAmount,0, currency.thousandsSeparator, currency.decimalSeparator)); 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 = accounting.unformat(amountReal.val(),currency.decimalSeparator); var cashBoxAmount = accounting.unformat(amountCashbox.val(),currency.decimalSeparator); if (realAmount <= 0) { 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'); amountDiffer.val(accounting.formatNumber(differenceAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountReal.val(accounting.formatNumber( realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountOpen.val(accounting.formatNumber( realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); // amountTransfer.val(accounting.formatNumber( realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); }); /** * [Transferencia] */ transferCasbox.click(function(e){ var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator); amountOpen.val(accounting.formatNumber(realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountTransfer.val('0'); transferSelected = e.target; selectedTrnasfer = false cashboxTransfer.val(''); // amountTransfer.val('0'); 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(accounting.formatNumber(realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountOpen.val('0'); } }) cashboxTransfer.change(function(e) { var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator); // amountOpen.val(accounting.formatNumber(realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); // amountTransfer.val('0') }) /* amount transfer Keyup */ amountTransfer.keyup(function(e){ var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator); var transferAmount = accounting.unformat(amountTransfer.val(),currency.decimalSeparator); var amount = (realAmount - transferAmount); amountTransfer.val(accounting.formatNumber(transferAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountOpen.val(accounting.formatNumber(amount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); if (e.keyCode === 13) buttonSave.focus(); }); /* amount transfer focus */ amountTransfer.focusout(function(e) { var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator); var transferAmount = accounting.unformat(amountTransfer.val(),currency.decimalSeparator); 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(accounting.formatNumber(transferAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); amountOpen.val(accounting.formatNumber(amount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator)); }); /*Click buttonSave*/ buttonSave.click(function(e){ var cashBoxAmount = accounting.unformat(amountCashbox.val(),currency.decimalSeparator); var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator); var transferAmount = accounting.unformat(amountTransfer.val(),currency.decimalSeparator); // amountReal if (realAmount <= 0){ 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); } }); } })();