(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('');
_.each(statementOpen, function(item) {
statementSelected.append('');
});
}
}
});
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);
},
});
}
})();