|
@@ -30,6 +30,7 @@
|
|
|
var editAdvancement = this.$el.find('.edit-advancement');
|
|
|
var refreshAdvancement = this.$el.find('.refresh-advancement');
|
|
|
var printAdvancement = this.$el.find('.print-advancement');
|
|
|
+ var printCommission = this.$el.find('.print-commission');
|
|
|
var exportCash = this.$el.find('.export-cash');
|
|
|
|
|
|
// create
|
|
@@ -44,9 +45,13 @@
|
|
|
refreshAdvancement.click(function() {
|
|
|
self.fetchRecomputeSheet();
|
|
|
});
|
|
|
- // Imprimir Adelanto y comision
|
|
|
+ // Imprimir Adelanto
|
|
|
printAdvancement.click(function() {
|
|
|
- self.fetchPrintAdvancement();
|
|
|
+ self.fetchPrintAdvancement('ADL', 'Adelanto');
|
|
|
+ });
|
|
|
+ // Imprimir Comision
|
|
|
+ printCommission.click(function() {
|
|
|
+ self.fetchPrintAdvancement('CMS', 'Comisión');
|
|
|
});
|
|
|
exportCash.click(function() {
|
|
|
self.fetchExportCash();
|
|
@@ -565,7 +570,7 @@
|
|
|
* Description : Imprimir adelanto y comisión de funcionario
|
|
|
* -------------------------------------------------------------------*/
|
|
|
/* Description : Metodo Inicial de imprecion */
|
|
|
- fetchPrintAdvancement: function() {
|
|
|
+ fetchPrintAdvancement: function(type, title) {
|
|
|
var self = this;
|
|
|
self.fetchPayslip().then(function(hrPayslip) {
|
|
|
return hrPayslip;
|
|
@@ -586,7 +591,7 @@
|
|
|
return self.fetchSalaryRule();
|
|
|
}).then(function(salaryRule) {
|
|
|
self.salaryRule = salaryRule;
|
|
|
- return self.jsPdfPrintAdvancement();
|
|
|
+ return self.showPrintAdvancement(type, title);
|
|
|
});
|
|
|
//
|
|
|
},
|
|
@@ -604,15 +609,96 @@
|
|
|
});
|
|
|
|
|
|
},
|
|
|
+ /* Modal Selected print advancement */
|
|
|
+ showPrintAdvancement: function(type, title) {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var payslipInput = self.getpayslipInput(type);
|
|
|
+
|
|
|
+ if (payslipInput.length === 0){
|
|
|
+ openerp.web.notification.do_warn("Atención","El funcionario no cuenta con "+title+" registrado");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var inputBody = [];
|
|
|
+ var inputSelect = [];
|
|
|
+ var salaryRule;
|
|
|
+ var company = self.resCompany[0];
|
|
|
+ var currency = self.getCurrencyCompany(company.currency_id[0]).shift();
|
|
|
+
|
|
|
+ _.each(payslipInput, function(input) {
|
|
|
+ salaryRule = self.getSalaryRule(input.code).shift();
|
|
|
+ if (!salaryRule){
|
|
|
+ salaryRule ={};
|
|
|
+ salaryRule.name="N/A";
|
|
|
+ }
|
|
|
+ var ammount = input.amount;
|
|
|
+ if (ammount < 0)
|
|
|
+ ammount = -1* ammount;
|
|
|
+
|
|
|
+ inputBody.push({
|
|
|
+ id: input.id,
|
|
|
+ code_name : salaryRule.name,
|
|
|
+ code: input.code,
|
|
|
+ input_name: input.name,
|
|
|
+ amount_input: accounting.formatNumber((ammount), currency.decimal_places, currency.thousands_separator, currency.decimal_separator),
|
|
|
+ amount: (ammount),
|
|
|
+ date: moment(input.create_date).format('DD/MM/YYYY')
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ var titleData = [
|
|
|
+ {
|
|
|
+ title: "Impresión de "+title
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ var modalModifyAdvancement = QWeb.render('EiruPayslipPrintAdvancement', {
|
|
|
+ advancementList: inputBody,
|
|
|
+ modalTitle: titleData
|
|
|
+ });
|
|
|
+ $('.openerp_webclient_container').after(modalModifyAdvancement);
|
|
|
+ $('.expired-account-modal').modal();
|
|
|
+
|
|
|
+ var tableRow = $('.expired-account-modal').find('.table-tbody').find('tr');
|
|
|
+ var printAdvancement = $('.expired-account-modal').find('.print-advancement-selected')
|
|
|
+ /* Salir*/
|
|
|
+ $('.expired-account-modal').on('hidden.bs.modal', function (e) {
|
|
|
+ defer.resolve('salir');
|
|
|
+ self.removeModal(e);
|
|
|
+ });
|
|
|
+
|
|
|
+ printAdvancement.click(function(e){
|
|
|
+ self.jsPdfPrintAdvancement(inputSelect, type, title)
|
|
|
+ })
|
|
|
+
|
|
|
+ tableRow.click(function(e){
|
|
|
+ if ($(e.target).index() !== 0)
|
|
|
+ return;
|
|
|
+
|
|
|
+ idRow = parseInt(($(e.target).closest('tr').children()[0].textContent).trim());
|
|
|
+ if (e.target.checked === true){
|
|
|
+ inputSelect.push(idRow)
|
|
|
+ } else {
|
|
|
+ var indexRow = undefined;
|
|
|
+ _.each(inputSelect, function(input, index){
|
|
|
+ if (input === idRow) {
|
|
|
+ indexRow = index;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ inputSelect.splice(indexRow,1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
/* Generar la impresion de Adelanto */
|
|
|
- jsPdfPrintAdvancement: function() {
|
|
|
+ jsPdfPrintAdvancement: function(inputSelect, type, titlePDF) {
|
|
|
var self = this;
|
|
|
- var payslipInput = self.getpayslipInput('ADL');
|
|
|
+ var payslipInput = self.getpayslipInput(type);
|
|
|
|
|
|
if (payslipInput.length === 0){
|
|
|
- openerp.web.notification.do_warn("Atención","El funcionario no cuenta con adelantos registrado");
|
|
|
+ openerp.web.notification.do_warn("Atención","El funcionario no cuenta con "+titlePDF+" registrado");
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
var inputBody = [];
|
|
|
var inputHead = [
|
|
|
{
|
|
@@ -633,20 +719,30 @@
|
|
|
},
|
|
|
];
|
|
|
var salaryRule;
|
|
|
- var company = self.resCompany.shift();
|
|
|
+ var company = self.resCompany[0];
|
|
|
var currency = self.getCurrencyCompany(company.currency_id[0]).shift();
|
|
|
|
|
|
+ if (!!inputSelect.length){
|
|
|
+ payslipInput = _.filter(payslipInput, function(input){
|
|
|
+ return _.contains(inputSelect, input.id);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
_.each(payslipInput, function(input) {
|
|
|
salaryRule = self.getSalaryRule(input.code).shift();
|
|
|
if (!salaryRule){
|
|
|
salaryRule ={};
|
|
|
salaryRule.name="N/A";
|
|
|
}
|
|
|
+ var ammount = input.amount
|
|
|
+ if (ammount < 0)
|
|
|
+ ammount = -1* ammount;
|
|
|
+
|
|
|
inputBody.push({
|
|
|
code_name : salaryRule.name,
|
|
|
input_name: input.name,
|
|
|
- amount_input: accounting.formatNumber((-1 * input.amount), currency.decimal_places, currency.thousands_separator, currency.decimal_separator),
|
|
|
- amount: (-1 * input.amount),
|
|
|
+ amount_input: accounting.formatNumber((ammount), currency.decimal_places, currency.thousands_separator, currency.decimal_separator),
|
|
|
+ amount: (ammount),
|
|
|
date: moment(input.create_date).format('DD/MM/YYYY')
|
|
|
});
|
|
|
});
|
|
@@ -664,18 +760,19 @@
|
|
|
amount: total,
|
|
|
date: ""
|
|
|
});
|
|
|
- self.drawPDF(inputHead, inputBody, total, currency);
|
|
|
+ self.drawPDF(inputHead, inputBody, total, currency, titlePDF);
|
|
|
},
|
|
|
/* Generar el pdf*/
|
|
|
- drawPDF: function(inputHead, inputBody, total, currency) {
|
|
|
+ drawPDF: function(inputHead, inputBody, total, currency, titlePDF) {
|
|
|
var self = this;
|
|
|
- var hrPayslip = self.hrPayslip.shift();
|
|
|
- var resUser = self.resUser.shift();
|
|
|
+ var hrPayslip = self.hrPayslip[0];
|
|
|
+ var resUser = self.resUser[0];
|
|
|
var pdfDoc = new jsPDF();
|
|
|
+ var title =titlePDF.toUpperCase();
|
|
|
/* titulo */
|
|
|
pdfDoc.setFontType('bold');
|
|
|
pdfDoc.setFontSize(18);
|
|
|
- pdfDoc.text(105, 20, "RECIBO DE ADELANTO", null, null, 'center');
|
|
|
+ pdfDoc.text(105, 20, "RECIBO DE "+title, null, null, 'center');
|
|
|
/* Subtitulos*/
|
|
|
pdfDoc.setFontType('bold');
|
|
|
pdfDoc.setFontSize(12);
|
|
@@ -726,7 +823,8 @@
|
|
|
pdfDoc.text(10, fila,resUser.name);
|
|
|
pdfDoc.text(150, fila, hrPayslip.employee_id[1] );
|
|
|
/* Guardar */
|
|
|
- pdfDoc.save('RECIBO DE ADELANTO de'+hrPayslip.employee_id[1]+'.pdf');
|
|
|
+ var pdfTitle ='RECIBO DE '+title+' de'+hrPayslip.employee_id[1]+'.pdf';
|
|
|
+ pdfDoc.save(pdfTitle.toUpperCase());
|
|
|
|
|
|
},
|
|
|
/* Obtener el nombre de la moneda */
|