123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432 |
- (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);
- }
- });
- }
- })();
|