|
@@ -0,0 +1,378 @@
|
|
|
|
+(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));
|
|
|
|
+ amountDiffer.val('0');
|
|
|
|
+ amountTransfer.val('0');
|
|
|
|
+ amountOpen.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
|
|
|
|
+ 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(0);
|
|
|
|
+ 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(0);
|
|
|
|
+ });
|
|
|
|
+ /**
|
|
|
|
+ * [Transferencia]
|
|
|
|
+ */
|
|
|
|
+ transferCasbox.click(function(e){
|
|
|
|
+ var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
|
|
|
|
+ amountOpen.val(accounting.formatNumber(realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
|
|
|
|
+
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+})();
|