|  | @@ -0,0 +1,256 @@
 | 
	
		
			
				|  |  | +(function() {
 | 
	
		
			
				|  |  | +    openerp.widgetInstancePayslipPaymentsIPSC = null;
 | 
	
		
			
				|  |  | +    openerp.parentInstancePayslipPaymentsIPSC = null;
 | 
	
		
			
				|  |  | +    var Qweb = openerp.web.qweb;
 | 
	
		
			
				|  |  | +    var instance = openerp;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    openerp.PayslipPaymentsIPSC = instance.Widget.extend({
 | 
	
		
			
				|  |  | +        template: 'eiru_payslip_payments.IPSC',
 | 
	
		
			
				|  |  | +        id: undefined,
 | 
	
		
			
				|  |  | +        payslipIpsc: [],
 | 
	
		
			
				|  |  | +        init: function(parent) {
 | 
	
		
			
				|  |  | +            this._super(parent);
 | 
	
		
			
				|  |  | +            this.buttons = parent.$buttons;
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        start: function() {
 | 
	
		
			
				|  |  | +            var self = this;
 | 
	
		
			
				|  |  | +            this.$el.click(function(){
 | 
	
		
			
				|  |  | +                self.fectchInitial()
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            self.buttons.click(function(e) {
 | 
	
		
			
				|  |  | +                /* 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');
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        updateId: function(id) {
 | 
	
		
			
				|  |  | +            var self = this;
 | 
	
		
			
				|  |  | +            self.id = id;
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /* Remover */
 | 
	
		
			
				|  |  | +        removeModal: function() {
 | 
	
		
			
				|  |  | +            $('.expired-account-modal').remove();
 | 
	
		
			
				|  |  | +            $('.modal-backdrop').remove();
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /* Metodo Inicial */
 | 
	
		
			
				|  |  | +        fectchInitial: function() {
 | 
	
		
			
				|  |  | +            var self = this;
 | 
	
		
			
				|  |  | +            self.fetchPayslipPaymentsIpsc(self.id).then(function(payslipIpsc) {
 | 
	
		
			
				|  |  | +                return payslipIpsc;
 | 
	
		
			
				|  |  | +            }).then(function(payslipIpsc) {
 | 
	
		
			
				|  |  | +                self.payslipIpsc = payslipIpsc;
 | 
	
		
			
				|  |  | +                return  self.fetchAccountJournal();
 | 
	
		
			
				|  |  | +            }).then(function(accountJournal) {
 | 
	
		
			
				|  |  | +                self.accountJournal = accountJournal;
 | 
	
		
			
				|  |  | +                if (!self.payslipIpsc.length){
 | 
	
		
			
				|  |  | +                    instance.web.notification.do_warn("Atención","No existe registro de I.P.S. Patronal a reconciliar.");
 | 
	
		
			
				|  |  | +                    return false;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                return self.showPaymentsIpse()
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        /* IPSC */
 | 
	
		
			
				|  |  | +        fetchPayslipPaymentsIpsc: function(id) {
 | 
	
		
			
				|  |  | +            var payslipRun = new openerp.web.Model('hr.payslip.run');
 | 
	
		
			
				|  |  | +            return payslipRun.call('eiru_get_payslip_payments_ipsc',[id],{
 | 
	
		
			
				|  |  | +                    context: new openerp.web.CompoundContext()
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        // Account Journal
 | 
	
		
			
				|  |  | +        fetchAccountJournal: function(id) {
 | 
	
		
			
				|  |  | +            var payslip = new openerp.web.Model('hr.payslip.run');
 | 
	
		
			
				|  |  | +            return payslip.call('eiru_get_payslip_account_journal',{
 | 
	
		
			
				|  |  | +                    context: new openerp.web.CompoundContext()
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        /* Get Account Journal Select */
 | 
	
		
			
				|  |  | +        getAccountJournal: function(){
 | 
	
		
			
				|  |  | +            var self = this;
 | 
	
		
			
				|  |  | +            var journal = [];
 | 
	
		
			
				|  |  | +            _.each(self.accountJournal, function(item) {
 | 
	
		
			
				|  |  | +                journal.push({
 | 
	
		
			
				|  |  | +                    'id': item.id,
 | 
	
		
			
				|  |  | +                    'name': item.name,
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (journal.length) {
 | 
	
		
			
				|  |  | +                journal.unshift({
 | 
	
		
			
				|  |  | +                    'id': '',
 | 
	
		
			
				|  |  | +                    'name': ''
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return journal
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /* Filter Journal select */
 | 
	
		
			
				|  |  | +        filterAccountJournal: function(id){
 | 
	
		
			
				|  |  | +            var self = this;
 | 
	
		
			
				|  |  | +            return _.filter(self.accountJournal, function(item){
 | 
	
		
			
				|  |  | +                return  item.id === id;
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /* Modal */
 | 
	
		
			
				|  |  | +        showPaymentsIpse: function(payslip, currency, journal) {
 | 
	
		
			
				|  |  | +            var self = this;
 | 
	
		
			
				|  |  | +            var defer = $.Deferred();
 | 
	
		
			
				|  |  | +            var state = true;
 | 
	
		
			
				|  |  | +            var payslispRun = self.payslipIpsc[0];
 | 
	
		
			
				|  |  | +            var currency = payslispRun.currency;
 | 
	
		
			
				|  |  | +            var accountJournal = self.getAccountJournal();
 | 
	
		
			
				|  |  | +            var ipsPayments = []
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var header = [];
 | 
	
		
			
				|  |  | +            if (payslispRun) {
 | 
	
		
			
				|  |  | +                header.push({
 | 
	
		
			
				|  |  | +                    'title': "Procesamiento "+ moment(payslispRun.date_start).format('DD/MM/YYYY')+" - "+moment(payslispRun.date_end).format('DD/MM/YYYY')
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var modal = Qweb.render('eiruPayslipPayments.IPSCModal',{
 | 
	
		
			
				|  |  | +                'header': header,
 | 
	
		
			
				|  |  | +                'journal': accountJournal,
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            $('.openerp_webclient_container').after(modal);
 | 
	
		
			
				|  |  | +            $('.expired-account-modal').modal();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // /* amount */
 | 
	
		
			
				|  |  | +            var ipsTotal = $('.expired-account-modal').find('.amount-total');
 | 
	
		
			
				|  |  | +            // /* journal && statement */
 | 
	
		
			
				|  |  | +            var journalSelected = $('.expired-account-modal').find('.journal-selected');
 | 
	
		
			
				|  |  | +            var statementSelected = $('.expired-account-modal').find('.statement-selected');
 | 
	
		
			
				|  |  | +            var refPaymsntIps = $('.expired-account-modal').find('.ref-paymsnt-ips');
 | 
	
		
			
				|  |  | +            /* button */
 | 
	
		
			
				|  |  | +            var buttonAccept  = $('.expired-account-modal').find('.button-accept');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            $('.expired-account-modal').find('.ref-payments-ips-select').text("Nóminas a reconciliar\t"+ payslispRun.slipLine.length);
 | 
	
		
			
				|  |  | +            ipsTotal.val(openerp.web.formatCurrency(payslispRun.amount, currency))
 | 
	
		
			
				|  |  | +            $('.expired-account-modal').find('.amount-symbol-payslip').text(currency[0].symbol);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            /* Journal Change */
 | 
	
		
			
				|  |  | +            journalSelected.change(function(e){
 | 
	
		
			
				|  |  | +                $('.expired-account-modal').find('.paymnet-payslip-statement-open').css('display','none');
 | 
	
		
			
				|  |  | +                statementSelected.empty();
 | 
	
		
			
				|  |  | +                if (!!journalSelected.val()) {
 | 
	
		
			
				|  |  | +                    var statementjournal =  self.filterAccountJournal(parseInt(journalSelected.val())).shift();
 | 
	
		
			
				|  |  | +                    var statementOpen = statementjournal.statementOpen;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if (!!statementOpen.length){
 | 
	
		
			
				|  |  | +                        $('.expired-account-modal').find('.paymnet-payslip-statement-open').css('display','flex');
 | 
	
		
			
				|  |  | +                        statementSelected.append('<option value=""></option>');
 | 
	
		
			
				|  |  | +                       _.each(statementOpen, function(item) {
 | 
	
		
			
				|  |  | +                           statementSelected.append('<option value="' + item.id + '">' + item.name+" - "+moment(item.date).format("DD-MM-YYYY")+ '</option>');
 | 
	
		
			
				|  |  | +                       });
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            buttonAccept.click(function(e) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (!journalSelected.val()) {
 | 
	
		
			
				|  |  | +                    instance.web.notification.do_warn("Atención","Tienes que seleccionar un método de pago para continuar.");
 | 
	
		
			
				|  |  | +                    journalSelected.css('border-color','red');
 | 
	
		
			
				|  |  | +                    journalSelected.focus();
 | 
	
		
			
				|  |  | +                    return false;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                journalSelected.css('border-color','#ccc');
 | 
	
		
			
				|  |  | +                var statementjournal =  self.filterAccountJournal(parseInt(journalSelected.val())).shift();
 | 
	
		
			
				|  |  | +                var statementOpen = statementjournal.statementOpen;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (!!statementOpen.length && !statementSelected.val()) {
 | 
	
		
			
				|  |  | +                    instance.web.notification.do_warn("Atención","Tienes que seleccionar una caja para continuar.");
 | 
	
		
			
				|  |  | +                    statementSelected.css('border-color','red');
 | 
	
		
			
				|  |  | +                    statementSelected.focus();
 | 
	
		
			
				|  |  | +                    return false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                statementSelected.css('border-color','#ccc');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (!refPaymsntIps.val().trim()) {
 | 
	
		
			
				|  |  | +                    instance.web.notification.do_warn("Atención","Debes ingresar una referencia de pago para continuar.");
 | 
	
		
			
				|  |  | +                    refPaymsntIps.css('border-color','red');
 | 
	
		
			
				|  |  | +                    refPaymsntIps.focus();
 | 
	
		
			
				|  |  | +                    return false;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                refPaymsntIps.css('border-color','#ccc');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var paymenstIps = {
 | 
	
		
			
				|  |  | +                    'runId': self.id,
 | 
	
		
			
				|  |  | +                    'journalId': parseInt(journalSelected.val()),
 | 
	
		
			
				|  |  | +                    'statementId': parseInt(statementSelected.val()),
 | 
	
		
			
				|  |  | +                    'refPayments': refPaymsntIps.val().trim(),
 | 
	
		
			
				|  |  | +                    'amount': payslispRun.amount,
 | 
	
		
			
				|  |  | +                    'partnerId': payslispRun.partnerId
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                /* Guardar */
 | 
	
		
			
				|  |  | +                $('.expired-account-modal').find('.widget-content.widget-loading-payments-ips').css('display','flex');
 | 
	
		
			
				|  |  | +                self.paymentsPayslipIpsc(paymenstIps).then(function(paymentsIps){
 | 
	
		
			
				|  |  | +                    return paymentsIps;
 | 
	
		
			
				|  |  | +                }).then(function(paymentsIps) {
 | 
	
		
			
				|  |  | +                    if (!paymentsIps.state) {
 | 
	
		
			
				|  |  | +                        instance.web.notification.do_warn("Atención", paymentsIps.message, true);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    $('.expired-account-modal').find('.widget-content.widget-loading-payments-ips').css('display','none');
 | 
	
		
			
				|  |  | +                    self.removeModal(e);
 | 
	
		
			
				|  |  | +                    defer.resolve(paymentsIps)
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            /* Click Cerrar */
 | 
	
		
			
				|  |  | +            $('.expired-account-modal').on('hidden.bs.modal', function (e) {
 | 
	
		
			
				|  |  | +                defer.resolve(false);
 | 
	
		
			
				|  |  | +                self.removeModal(e);
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return defer;
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /*Pagar nominas */
 | 
	
		
			
				|  |  | +        paymentsPayslipIpsc: function(paymenstIps) {
 | 
	
		
			
				|  |  | +            var payslipRun = new  instance.web.Model('hr.payslip.run');
 | 
	
		
			
				|  |  | +            return payslipRun.call('eiru_payslip_payments_ipsc', [paymenstIps],{
 | 
	
		
			
				|  |  | +                context: new instance.web.CompoundContext()
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (instance.web && instance.web.FormView) {
 | 
	
		
			
				|  |  | +        instance.web.FormView.include({
 | 
	
		
			
				|  |  | +            load_record: function(record) {
 | 
	
		
			
				|  |  | +                this._super.apply(this, arguments);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (this.model !== 'hr.payslip.run')
 | 
	
		
			
				|  |  | +                    return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                openerp.parentInstancePayslipPaymentsIPSC = this;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (openerp.widgetInstancePayslipPaymentsIPSC) {
 | 
	
		
			
				|  |  | +                    openerp.widgetInstancePayslipPaymentsIPSC.updateId(record.id);
 | 
	
		
			
				|  |  | +                    if (this.$el.find('.payslip-payments-ipsc').length !== 0){
 | 
	
		
			
				|  |  | +                        return
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (this.$el.find('.payslip-payments-ipsc').length !== 0 )
 | 
	
		
			
				|  |  | +                    return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                openerp.widgetInstancePayslipPaymentsIPSC = new openerp.PayslipPaymentsIPSC(this);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var elemento = this.$el.find('.oe_form').find('.eiru-payslip-payments');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                openerp.widgetInstancePayslipPaymentsIPSC.appendTo(elemento);
 | 
	
		
			
				|  |  | +                openerp.widgetInstancePayslipPaymentsIPSC.updateId(record.id);
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +})();
 |