123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- (function() {
- openerp.widgetInstanceStatementTransfer = null;
- openerp.parentInstanceStatementTransfer = {};
- var QWeb = openerp.web.qweb;
- var instanceWeb = openerp.web;
- openerp.EiruStatementTransfer = openerp.Widget.extend({
- template: 'EiruStatementUtility.Transfer',
- id: undefined,
- buttons: undefined,
- bankStatement: [],
- accountJournal :[],
- statementOpen: [],
- /** config */
- statementConfig: [],
- resUser: [],
- statementUser: [],
- /* 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.parentInstanceStatementTransfer.reload();
- },
- /* Description: Función para remover el modal */
- removeModal: function() {
- $('.expired-account-modal').remove();
- $('.modal-backdrop').remove();
- },
- /*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','transfer_user_ids','transfer_statement_ids','transfer_negative_amount'];
- var domain = [['active', '=', true]];
- var statementConfig = new openerp.web.Model('account.bank.statement.config');
- return statementConfig.query(fields).filter(domain).all();
- },
- /* 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.fetchStatementConfigTransfer();
- }).then(function(statementConfig){
- self.statementConfig = statementConfig;
- return self.fetchGetUserLogin();
- }).then(function(resUser) {
- self.resUser = resUser;
- if (!self.statementConfig.length){
- instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar transferencia, no existe configuración de caja.");
- return false;
- }
- if (!self.resUser.length) {
- instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar transferencia.");
- return false;
- }
- // if (!!self.statementConfig.length && !!self.resUser.length && !!self.bankStatement.length) {
- if (!!self.bankStatement.length) {
- var statementConfig = self.statementConfig[0];
- var resUser = self.resUser[0];
- var statementUser = self.bankStatement[0];
- /* Verificar si el tipo caja tiene permiso para la transferencia */
- if (!(_.contains(statementConfig.transfer_statement_ids, statementUser.typeStatement))) {
- instanceWeb.notification.do_warn("Atencion", "El tipo de caja no tiene autorización para realizar transferencia.");
- return false;
- }
- /* Verificar si el usuario tiene permiso para la transferencia*/
- if (!(_.contains(statementConfig.transfer_user_ids, resUser.id))) {
- instanceWeb.notification.do_warn("Atencion", "El usuario no tiene autorización para realizar transferencia.");
- return false;
- }
- }
- if (self.bankStatement[0].amount <= 0) {
- if (!self.statementConfig.length){
- instanceWeb.notification.do_warn("Atencion", "Caja sin saldo.");
- return false;
- }
- if (!self.statementConfig[0].transfer_negative_amount){
- instanceWeb.notification.do_warn("Atencion", "Caja sin saldo.");
- return false;
- }
- }
- self.fetchAccountJournal(self.id).then(function(accountJournal) {
- return accountJournal;
- }).then(function(accountJournal) {
- self.accountJournal = accountJournal;
- if (!accountJournal[0].statementJournal.length){
- instanceWeb.notification.do_warn("Atencion", "No tienes otra caja abierta para realizar la transferencia.");
- return false;
- }
- return self.showModalTransfer();
- });
- });
- },
- /* 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()
- });
- },
- /* Account Journal*/
- fetchAccountJournal: function(id) {
- var accountJournal = new instanceWeb.Model('account.bank.statement');
- return accountJournal.call('get_account_journal_utility',[id], {
- context: new instanceWeb.CompoundContext()
- });
- },
- /* Get statement Journal */
- getStatementJournal(id) {
- var self = this;
- var journal = _.filter(self.accountJournal, function(item) {
- return item.id === id ;
- });
- return _.flatten(_.map(journal, function(map) {
- return map.statementJournal;
- }));
- },
- /* Save Statement transfer */
- statementCompletTransfers: function(values) {
- var bankStatementTransfer = new instanceWeb.Model('account.bank.statement');
- return bankStatementTransfer.call('statement_complet_transfers',[values], {
- context: new instanceWeb.CompoundContext()
- });
- },
- /*Modal Transfer */
- showModalTransfer: function() {
- var self = this;
- var defer =$.Deferred();
- var results = true;
- var accountJournal = self.accountJournal;
- accountJournal.unshift({'name': '', 'id': ''});
- var modal = QWeb.render('ModalStatementUtility.Transfer',{
- 'journal': accountJournal
- });
- $('.openerp_webclient_container').after(modal);
- $('.expired-account-modal').modal();
- var statementAmount = $('.expired-account-modal').find('.statement-amount');
- var statementAmountSymbol = $('.expired-account-modal').find('.statement-amount-symbol');
- var selectedJournal = $('.expired-account-modal').find('.selected-Journal');
- var statementOpen = $('.expired-account-modal').find('.statement-open-selected');
- var amountTransfer = $('.expired-account-modal').find('.amount-transfer');
- var amountTransferSymbol = $('.expired-account-modal').find('.amount-transfer-symbol');
- var refTransfer = $('.expired-account-modal').find('.ref-transfer');
- /* Button */
- var buttonSave = $('.expired-account-modal').find('.button-save');
- var currency = self.bankStatement[0].currencystatement;
- /* Monto */
- statementAmount.val(instanceWeb.formatCurrency(self.bankStatement[0].amount,currency));
- /* Symbol */
- statementAmountSymbol.text(currency.symbol);
- amountTransferSymbol.text(currency.symbol);
- /*select Journal */
- selectedJournal.focus();
- selectedJournal.change(function(e) {
- statementOpen.empty();
- var statementJournal = self.getStatementJournal(parseInt(selectedJournal.val()));
- if (!!statementJournal.length)
- statementOpen.append('<option value=""></option>');
- _.each(statementJournal, function(item) {
- statementOpen.append('<option value="' + item.id + '">' + item.statementname + '</option>');
- });
- });
- /* amountTransfer.keyup */
- amountTransfer.keyup(function(e) {
- if (e.key === currency.decimalSeparator && currency.decimalPlaces > 0)
- return false ;
- var amount = instanceWeb.unFormatCurrency(amountTransfer.val());
- amount = instanceWeb.formatCurrency(amount,currency)
- amountTransfer.val(amount);
- amountTransfer.css('border-color','#ccc');
- if (e.keyCode === 13)
- refTransfer.focus();
- });
- /* amountTransfer.focusout*/
- amountTransfer.focusout(function(e) {
- var amountAvailable = instanceWeb.unFormatCurrency(statementAmount.val());
- var amount = Math.abs(instanceWeb.unFormatCurrency(amountTransfer.val()));
- if (amountAvailable < amount && !self.statementConfig[0].transfer_negative_amount) {
- instanceWeb.notification.do_warn("Atencion", "El valor a transferir supera el saldo disponible de la caja.");
- amountTransfer.css('border-color','red');
- amountTransfer.focus();
- return false;
- }
- amountTransfer.css('border-color','#ccc');
- amountTransfer.val(instanceWeb.formatCurrency(amount,currency))
- });
- /* Click buttonSave */
- buttonSave.click(function(e){
- var amountAvailable = instanceWeb.unFormatCurrency(statementAmount.val());
- var amount = instanceWeb.unFormatCurrency(amountTransfer.val());
- /* Journal */
- if (!selectedJournal.val()) {
- instanceWeb.notification.do_warn("Atencion", "Debes seleccionar un tipo de pago para continuar.");
- selectedJournal.css('border-color','red');
- selectedJournal.focus();
- return false;
- }
- selectedJournal.css('border-color','#ccc');
- /* Statement Open */
- if (!statementOpen.val()) {
- instanceWeb.notification.do_warn("Atencion", "Debes seleccionar la caja donde vas a transferir.");
- statementOpen.css('border-color','red');
- statementOpen.focus();
- return false;
- }
- statementOpen.css('border-color','#ccc');
- /* ammount transfer*/
- if (amount <= 0.00) {
- instanceWeb.notification.do_warn("Atencion", "El valor a transferir debe ser mayor a cero.");
- amountTransfer.css('border-color','red');
- amountTransfer.focus();
- return false;
- }
- if (amountAvailable < amount) {
- if (!self.statementConfig.length){
- instanceWeb.notification.do_warn("Atencion", "El valor a transferir supera el saldo disponible de la caja .");
- amountTransfer.css('border-color','red');
- amountTransfer.focus();
- return false;
- }
- if (!self.statementConfig[0].transfer_negative_amount){
- instanceWeb.notification.do_warn("Atencion", "El valor a transferir supera el saldo disponible de la caja .");
- amountTransfer.css('border-color','red');
- amountTransfer.focus();
- return false;
- }
- }
- amountTransfer.css('border-color','#ccc');
- /* Ref transfer */
- if (!refTransfer.val()) {
- instanceWeb.notification.do_warn("Atencion", "Debes de ingresar un motivo para la transferencia.");
- refTransfer.css('border-color','red');
- refTransfer.focus();
- return false;
- }
- refTransfer.css('border-color','#ccc');
- statementTransfer = {
- 'statementOriginId': self.bankStatement[0].id,
- 'statementDestinyId': parseInt(statementOpen.val()),
- 'amountTransfer': amount,
- 'refTransfer': refTransfer.val().trim(),
- 'journalID': parseInt(selectedJournal.val())
- }
- /* Save Payments */
- self.statementCompletTransfers(statementTransfer).then(function(resultsTransfer) {
- return resultsTransfer;
- }).then(function(resultsTransfer) {
- self.reloadPage();
- self.removeModal(e);
- if (!resultsTransfer)
- 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.parentInstanceStatementTransfer = this;
- if (openerp.widgetInstanceStatementTransfer) {
- openerp.widgetInstanceStatementTransfer.updateId(record.id);
- if (this.$el.find('.button-statement-transfer').length !== 0 )
- return ;
- }
- if (this.$el.find('.button-statement-transfer').length !== 0 )
- return;
- openerp.widgetInstanceStatementTransfer = new openerp.EiruStatementTransfer(this);
- var element =this.$el.find('.oe_form').find('.eiru-statement-utility');
- openerp.widgetInstanceStatementTransfer.appendTo(element[0]);
- openerp.widgetInstanceStatementTransfer.updateId(record.id);
- }
- });
- }
- })();
|