From 157544738a68855a2adfc7b837238c76d77f32e7 Mon Sep 17 00:00:00 2001 From: elyambay Date: Mon, 18 Mar 2019 12:09:25 -0300 Subject: [PATCH] =?UTF-8?q?Revisi=C3=B3n=20de=20f=C3=B3rmulas=20y=20Excel?= =?UTF-8?q?=20Universo=20Cargos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Detalle_encuesta.php | 97 +- app/Http/Controllers/CargosController.php | 3 +- app/Http/Controllers/ReporteController.php | 2829 +++++++----- .../Controllers/ReporteController_bkp.php | 3877 +++++++++++++++++ 4 files changed, 5670 insertions(+), 1136 deletions(-) create mode 100644 app/Http/Controllers/ReporteController_bkp.php diff --git a/app/Detalle_encuesta.php b/app/Detalle_encuesta.php index 1583607..9cacf40 100644 --- a/app/Detalle_encuesta.php +++ b/app/Detalle_encuesta.php @@ -101,37 +101,51 @@ public function zona(){ } public function getAdicionalesBancosAttribute(){ - $adicionales = $this->fallo_caja + - $this->fallo_caja_ext + - $this->comision + - $this->gratificacion_contrato + - $this->adicional_nivel_cargo + - $this->adicional_titulo; + $adicionales = $this->fallo_caja * 12 + + $this->fallo_caja_ext * 12 + + $this->comision * 12 + + $this->gratificacion_contrato * 12 + + $this->adicional_nivel_cargo * 12 + + $this->adicional_titulo * 12; return $adicionales; } public function getAdicionalesRestoAttribute(){ - $adicionales = $this->fallo_caja + - $this->fallo_caja_ext + - $this->gratificacion_contrato + - $this->adicional_nivel_cargo + - $this->adicional_titulo; + $adicionales = $this->fallo_caja * 12 + + $this->fallo_caja_ext * 12 + + $this->comision * 12 + + $this->gratificacion_contrato * 12 + + $this->adicional_nivel_cargo * 12 + + $this->adicional_titulo * 12; return $adicionales; } + public function getAdicionalesNavierasAttribute(){ + $adicionales = $this->fallo_caja * 12 + + $this->fallo_caja_ext * 12 + + $this->comision * 12 + + $this->gratificacion_contrato * 12 + + $this->adicional_nivel_cargo * 12 + + $this->adicional_titulo * 12 + + $this->adicional_amarre + + $this->adicional_tipo_combustible + + $this->adicional_embarque + + $this->adicional_carga; + + return $adicionales; + + } + public function getBeneficiosBancosAttribute(){ $beneficios = $this->refrigerio + $this->costo_seguro_medico * ($this->cobertura_seguro_medico/100) + $this->costo_seguro_vida + - //$this->costo_poliza_muerte_accidente + - //$this->costo_poliza_muerte_natural + $this->monto_movil / 60 + $this->gratificacion_contrato + $this->flota+ $this->seguro_movil + - $this->monto_km_recorrido + $this->monto_ayuda_escolar + $this->monto_comedor_interno + $this->monto_curso_idioma * ($this->cobertura_curso_idioma/100) + @@ -145,45 +159,40 @@ public function getBeneficiosBancosAttribute(){ public function getBeneficiosNavierasAttribute(){ - $beneficios = $this->refrigerio + - $this->costo_seguro_medico * ($this->cobertura_seguro_medico/100) + - $this->costo_seguro_vida + - //$this->costo_poliza_muerte_accidente + - //$this->costo_poliza_muerte_natural + - $this->monto_movil / 60 + - $this->flota+ - $this->seguro_movil + - $this->monto_km_recorrido + + $beneficios = $this->refrigerio * 12+ + ($this->costo_seguro_medico * ($this->cobertura_seguro_medico/100)) * 12+ + $this->costo_seguro_vida * 12+ + ($this->monto_movil / 60) * 12 + + $this->flota * 12+ + $this->seguro_movil * 12 + $this->monto_ayuda_escolar + - $this->monto_comedor_interno + - $this->monto_curso_idioma * ($this->cobertura_curso_idioma/100) + - $this->monto_post_grado * ($this->cobertura_post_grado/100)/ 24 + - $this->monto_celular_corporativo + - $this->monto_vivienda + - $this->monto_colegiatura_hijos /12; + $this->monto_comedor_interno * 12 + + ($this->monto_curso_idioma * ($this->cobertura_curso_idioma/100)) * 12 + + $this->monto_post_grado * ($this->cobertura_post_grado/100)/ 2 + + $this->monto_celular_corporativo * 12+ + $this->monto_vivienda * 12 + + $this->monto_colegiatura_hijos; return $beneficios; } public function getBeneficiosRestoAttribute(){ - $beneficios = $this->refrigerio + - $this->costo_seguro_medico * ($this->cobertura_seguro_medico/100) + - $this->costo_seguro_vida + - //$this->costo_poliza_muerte_accidente + - //$this->costo_poliza_muerte_natural + - $this->monto_movil / 60 + - $this->flota+ - $this->seguro_movil + - $this->monto_km_recorrido + + $beneficios = $this->refrigerio * 12+ + ($this->costo_seguro_medico * ($this->cobertura_seguro_medico/100)) * 12+ + $this->costo_seguro_vida * 12+ + ($this->monto_movil / 60) * 12 + + $this->flota * 12+ + $this->seguro_movil * 12 + $this->monto_ayuda_escolar + - $this->monto_comedor_interno + - $this->monto_curso_idioma * ($this->cobertura_curso_idioma/100) + - $this->monto_post_grado * ($this->cobertura_post_grado/100)/ 24 + - $this->monto_celular_corporativo + - $this->monto_vivienda + - $this->monto_colegiatura_hijos/12; + $this->monto_comedor_interno * 12 + + ($this->monto_curso_idioma * ($this->cobertura_curso_idioma/100)) * 12 + + $this->monto_post_grado * ($this->cobertura_post_grado/100)/ 2 + + $this->monto_celular_corporativo * 12+ + $this->monto_vivienda * 12 + + $this->monto_colegiatura_hijos; return $beneficios; } + } diff --git a/app/Http/Controllers/CargosController.php b/app/Http/Controllers/CargosController.php index abd5274..b02ce6d 100644 --- a/app/Http/Controllers/CargosController.php +++ b/app/Http/Controllers/CargosController.php @@ -129,7 +129,8 @@ public function update(Request $request, $id){ } public function destroy($id){ - $dbData = Cargo::find($id); + $dbData = Cargo::find($id); + $dbDataEn = Cargo_en::find($id); $dbData->delete(); return redirect()->route('cargos.index'); diff --git a/app/Http/Controllers/ReporteController.php b/app/Http/Controllers/ReporteController.php index 697329a..e9be94c 100644 --- a/app/Http/Controllers/ReporteController.php +++ b/app/Http/Controllers/ReporteController.php @@ -370,8 +370,9 @@ public function cargoReportClubExcel(Request $request){ $itemArrayNac = $itemArray; $itemArrayInt = $itemArray; // por cada item del detalle + //$cantConceptos = 0; foreach ($respuesta as $key => $item) { - //dd($item); + // dd($item); switch ($key) { case 'detalle_universo': $this->CargaDetalle($item, $itemArray); @@ -393,8 +394,8 @@ public function cargoReportClubExcel(Request $request){ } $filename = 'Resultados_'.$periodo; - Excel::create($filename, function($excel) use($detalleUniverso, $detalleNacional, $detalleInternacional) { - $excel->sheet("universo", function($sheet) use($detalleUniverso){ + Excel::create($filename, function($excel) use($detalleUniverso, $detalleNacional, $detalleInternacional, $rubro) { + $excel->sheet("universo", function($sheet) use($detalleUniverso, $rubro){ $objDrawing = new PHPExcel_Worksheet_Drawing; $objDrawing->setPath(public_path('images/logo.jpg')); //your image path @@ -402,6 +403,7 @@ public function cargoReportClubExcel(Request $request){ $objDrawing->setWidthAndHeight(304,60); $objDrawing->setWorksheet($sheet); + $sheet->cell('A5', function($cell){ $cell->setValue('CARGO'); }); @@ -424,187 +426,347 @@ public function cargoReportClubExcel(Request $request){ $cells->setFontWeight("bold"); // $cells->setValignment('center'); $cells->setAlignment('center'); - }); - // Salario Efectivo Anual Garantizado - $sheet->cell('K5', function($cell){ - $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); - }); - $sheet->mergeCells('K5:P5'); - $sheet->cells('K5:P5', function($cells){ - $cells->setBackground('#388e3c'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual - $sheet->cell('Q5', function($cell){ - $cell->setValue('VARIABLE ANUAL'); - }); - $sheet->mergeCells('Q5:V5'); - $sheet->cells('Q5:V5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Total Adicional Anual - $sheet->cell('W5', function($cell){ - $cell->setValue('TOTAL ADICIONAL ANUAL'); - }); - $sheet->mergeCells('W5:AB5'); - $sheet->cells('W5:AB5', function($cells){ - $cells->setBackground('#fbc02d'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Bono Anual - $sheet->cell('AC5', function($cell){ - $cell->setValue('BONO ANUAL'); - }); - $sheet->mergeCells('AC5:AH5'); - $sheet->cells('AC5:AH5', function($cells){ - $cells->setBackground('#ffa000'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Comision - - $sheet->cell('AI5', function($cell){ - $cell->setValue('COMISION'); - }); - $sheet->mergeCells('AI5:AN5'); - $sheet->cells('AI5:AN5', function($cells){ - $cells->setBackground('#6a1b9a'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Efectivo Total Anual - $sheet->cell('AO5', function($cell){ - $cell->setValue('COMPENSACION ANUAL TOTAL'); - }); - $sheet->mergeCells('AO5:AT5'); - $sheet->cells('AO5:AT5', function($cells){ - $cells->setBackground('#f57c00'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Base Comparativo Header - $sheet->cell('AU5', function($cell){ - $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('AU5:AZ5'); - $sheet->cells('AU5:AZ5', function($cells){ - $cells->setBackground('#0288d1'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual comp. - $sheet->cell('BA5', function($cell){ - $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('BA5:BF5'); - $sheet->cells('BA5:BF5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Variable Anual comp. - $sheet->cell('BG5', function($cell){ - $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); - }); - $sheet->mergeCells('BG5:BL5'); - $sheet->cells('BG5:BL5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); }); + if($rubro == 1){ + + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + + // Compensación Total Anual + $sheet->cell('AI5', function($cell){ + $cell->setValue('COMPENSACION TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AO5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 8; + $rango = 'A6:AZ6'; + + }elseif($rubro == 4){ + // Salario Variable Anual + $sheet->cell('K5', function($cell){ + $cell->setValue('VARIABLE ANUAL'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Comisión + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Total Anual + + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Compensación Total Anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION ANUAL TOTAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Comparativo Header + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BG5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BG5:BL5'); + $sheet->cells('BG5:BL5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 10; + $rango = 'A6:BL6'; + + }else{ + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Total Anual + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Compensación total anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION TOTAL ANUAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 9; + $rango = 'A6:BF6'; + } -/* - $sheet->cell('AI5', function($cell){ - $cell->setValue('EFECTIVO TOTAL ANUAL'); - }); - $sheet->mergeCells('AI5:AN5'); - $sheet->cells('AI5:AN5', function($cells){ - $cells->setBackground('#6a1b9a'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Base Comparativo Header - $sheet->cell('AO5', function($cell){ - $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('AO5:AT5'); - $sheet->cells('AO5:AT5', function($cells){ - $cells->setBackground('#0288d1'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual comp. - $sheet->cell('AU5', function($cell){ - $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('AU5:AZ5'); - $sheet->cells('AU5:AZ5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - */ $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); - for ($i= 0; $i < 10; $i++) { + + for ($i= 0; $i < $topeHeader; $i++) { foreach ($itemsHeader as $key => $value) { array_push($cargoHeader, $value); } } - /*for ($i= 0; $i < 8; $i++) { - foreach ($itemsHeader as $key => $value) { - array_push($cargoHeader, $value); - } - }*/ $sheet->row(6, $cargoHeader); - //dd($detalleUniverso); $sheet->rows($detalleUniverso); - - $sheet->cells('A6:BL6', function($cells){ - $cells->setBackground('#a7ffeb'); - }); - - /*$sheet->cells('A6:AZ6', function($cells){ + $sheet->cells($rango, function($cells){ $cells->setBackground('#a7ffeb'); - }); */ + }); $sheet->setFreeze('A7'); }); // hoja nacional - $excel->sheet("nacional", function($sheet) use($detalleNacional){ + $excel->sheet("nacional", function($sheet) use($detalleNacional, $rubro){ $objDrawing = new PHPExcel_Worksheet_Drawing; $objDrawing->setPath(public_path('images/logo.jpg')); //your image path $objDrawing->setCoordinates('A1'); @@ -633,140 +795,347 @@ public function cargoReportClubExcel(Request $request){ $cells->setFontWeight("bold"); // $cells->setValignment('center'); $cells->setAlignment('center'); - }); - // Salario Efectivo Anual Garantizado - $sheet->cell('K5', function($cell){ - $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); - }); - $sheet->mergeCells('K5:P5'); - $sheet->cells('K5:P5', function($cells){ - $cells->setBackground('#388e3c'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual - $sheet->cell('Q5', function($cell){ - $cell->setValue('VARIABLE ANUAL'); - }); - $sheet->mergeCells('Q5:V5'); - $sheet->cells('Q5:V5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Total Adicional Anual - $sheet->cell('W5', function($cell){ - $cell->setValue('TOTAL ADICIONAL ANUAL'); - }); - $sheet->mergeCells('W5:AB5'); - $sheet->cells('W5:AB5', function($cells){ - $cells->setBackground('#fbc02d'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Bono Anual - $sheet->cell('AC5', function($cell){ - $cell->setValue('BONO ANUAL'); - }); - $sheet->mergeCells('AC5:AH5'); - $sheet->cells('AC5:AH5', function($cells){ - $cells->setBackground('#ffa000'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Comision - - $sheet->cell('AI5', function($cell){ - $cell->setValue('COMISION'); - }); - $sheet->mergeCells('AI5:AN5'); - $sheet->cells('AI5:AN5', function($cells){ - $cells->setBackground('#6a1b9a'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Efectivo Total Anual - $sheet->cell('AO5', function($cell){ - $cell->setValue('EFECTIVO TOTAL ANUAL'); - }); - $sheet->mergeCells('AO5:AT5'); - $sheet->cells('AO5:AT5', function($cells){ - $cells->setBackground('#f57c00'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Base Comparativo Header - $sheet->cell('AU5', function($cell){ - $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('AU5:AZ5'); - $sheet->cells('AU5:AZ5', function($cells){ - $cells->setBackground('#0288d1'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual comp. - $sheet->cell('BA5', function($cell){ - $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); - }); - - $sheet->mergeCells('BA5:BF5'); - $sheet->cells('BA5:BF5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Variable Anual comp. - $sheet->cell('BG5', function($cell){ - $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); - }); - $sheet->mergeCells('BG5:BL5'); - $sheet->cells('BG5:BL5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - $cells->setAlignment('center'); }); + if($rubro == 1){ + + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + + // Compensación Total Anual + $sheet->cell('AI5', function($cell){ + $cell->setValue('COMPENSACION TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AO5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 8; + $rango = 'A6:AZ6'; + + }elseif($rubro == 4){ + // Salario Variable Anual + $sheet->cell('K5', function($cell){ + $cell->setValue('VARIABLE ANUAL'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Comisión + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Total Anual + + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Compensación Total Anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION ANUAL TOTAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Comparativo Header + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BG5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BG5:BL5'); + $sheet->cells('BG5:BL5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 10; + $rango = 'A6:BL6'; + }else{ + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Total Anual + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Compensación total anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION TOTAL ANUAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 9; + $rango = 'A6:BF6'; + } + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); - for ($i= 0; $i < 10; $i++) { + + for ($i= 0; $i < $topeHeader; $i++) { foreach ($itemsHeader as $key => $value) { array_push($cargoHeader, $value); } } - + $sheet->row(6, $cargoHeader); - $sheet->cells('A6:BL6', function($cells){ + $sheet->rows($detalleNacional); + $sheet->cells($rango, function($cells){ $cells->setBackground('#a7ffeb'); }); - - $sheet->rows($detalleNacional); $sheet->setFreeze('A7'); }); // hoja internacional - $excel->sheet("internacional", function($sheet) use($detalleInternacional){ + $excel->sheet("internacional", function($sheet) use($detalleInternacional, $rubro){ $objDrawing = new PHPExcel_Worksheet_Drawing; $objDrawing->setPath(public_path('images/logo.jpg')); //your image path $objDrawing->setCoordinates('A1'); @@ -795,132 +1164,342 @@ public function cargoReportClubExcel(Request $request){ $cells->setFontWeight("bold"); // $cells->setValignment('center'); $cells->setAlignment('center'); - }); - // Salario Efectivo Anual Garantizado - $sheet->cell('K5', function($cell){ - $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); - }); - $sheet->mergeCells('K5:P5'); - $sheet->cells('K5:P5', function($cells){ - $cells->setBackground('#388e3c'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual - $sheet->cell('Q5', function($cell){ - $cell->setValue('VARIABLE ANUAL'); - }); - $sheet->mergeCells('Q5:V5'); - $sheet->cells('Q5:V5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Total Adicional Anual - $sheet->cell('W5', function($cell){ - $cell->setValue('TOTAL ADICIONAL ANUAL'); - }); - $sheet->mergeCells('W5:AB5'); - $sheet->cells('W5:AB5', function($cells){ - $cells->setBackground('#fbc02d'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Bono Anual - $sheet->cell('AC5', function($cell){ - $cell->setValue('BONO ANUAL'); - }); - $sheet->mergeCells('AC5:AH5'); - $sheet->cells('AC5:AH5', function($cells){ - $cells->setBackground('#ffa000'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Comision - $sheet->cell('AI5', function($cell){ - $cell->setValue('COMISION'); - }); - $sheet->mergeCells('AI5:AN5'); - $sheet->cells('AI5:AN5', function($cells){ - $cells->setBackground('#6a1b9a'); - $cells->setFontColor('#FFFFFF'); - $cells->setFontWeight("bold"); - $cells->setAlignment('center'); - }); - - // Salario Efectivo Total Anual - $sheet->cell('AO5', function($cell){ - $cell->setValue('EFECTIVO TOTAL ANUAL'); - }); - $sheet->mergeCells('AO5:AT5'); - $sheet->cells('AO5:AT5', function($cells){ - $cells->setBackground('#f57c00'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Base Comparativo Header - $sheet->cell('AU5', function($cell){ - $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('AU5:AZ5'); - $sheet->cells('AU5:AZ5', function($cells){ - $cells->setBackground('#0288d1'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - // Salario Variable Anual comp. - $sheet->cell('BA5', function($cell){ - $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); - }); - $sheet->mergeCells('BA5:BF5'); - $sheet->cells('BA5:BF5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Salario Variable Anual comp. - $sheet->cell('BG5', function($cell){ - $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); - }); - $sheet->mergeCells('BG5:BL5'); - $sheet->cells('BG5:BL5', function($cells){ - $cells->setBackground('#afb42b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); }); + if($rubro == 1){ + + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + + // Compensación Total Anual + $sheet->cell('AI5', function($cell){ + $cell->setValue('COMPENSACION TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AO5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 8; + $rango = 'A6:AZ6'; + + }elseif($rubro == 4){ + // Salario Variable Anual + $sheet->cell('K5', function($cell){ + $cell->setValue('VARIABLE ANUAL'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Comisión + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Total Anual + + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Compensación Total Anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION ANUAL TOTAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Comparativo Header + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BG5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BG5:BL5'); + $sheet->cells('BG5:BL5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 10; + $rango = 'A6:BL6'; + }else{ + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total Adicional Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Bono Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AC5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Total Anual + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Compensación total anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION TOTAL ANUAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $topeHeader = 9; + $rango = 'A6:BF6'; + } + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); - for ($i= 0; $i < 10; $i++) { + + for ($i= 0; $i < $topeHeader; $i++) { foreach ($itemsHeader as $key => $value) { array_push($cargoHeader, $value); } } - + $sheet->row(6, $cargoHeader); - $sheet->rows($detalleInternacional); - $sheet->cells('A6:BL6', function($cells){ + $sheet->cells($rango, function($cells){ $cells->setBackground('#a7ffeb'); }); $sheet->setFreeze('A7'); @@ -1217,6 +1796,8 @@ public function nivelReportClubExcel(Request $request){ } private function cargaDetalle($item, &$itemArray){ $variableAnual = false; + $efectivoTotal = false; + $efectivoGarantizado = false; $salarioEmpresa = 0; $variableAnualEmp = 0; //dd($item); @@ -1226,13 +1807,15 @@ private function cargaDetalle($item, &$itemArray){ $this->cargador($value, $itemArray, false); break; case Lang::get('reportReport.concept_salary'): + //dd("salario"); $this->cargador($value, $itemArray, true); $salarioEmpresa = intval(str_replace(".", "", $value["Empresa"])); break; case Lang::get('reportReport.concept_annual_cash'): + $efectivoGarantizado = true; $this->cargador($value, $itemArray, false); break; - case Lang::get('reportReport.variable_pay'): + case Lang::get('reportReport.concept_variable_pay'): $variableAnual = true; $this->cargador($value, $itemArray, false); $variableAnualEmp = $value["Empresa"]; @@ -1246,17 +1829,21 @@ private function cargaDetalle($item, &$itemArray){ case Lang::get('reportReport.concept_total_compensation'): $this->cargador($value, $itemArray, false); break; + case Lang::get('reportReport.concept_annual_cash_total'): + $efectivoTotal = true; + $this->cargador($value, $itemArray, false); + break; } } //dd($item); - if(!$variableAnual){ + /*if(!$variableAnual){ // agregamos 0 a los lugares de Variable Anual $aux = array_slice($itemArray, 0, 16, true); array_push($aux, 0,0,0,0,0,0); $aux2 = array_merge($aux, array_slice($itemArray, 16)); $itemArray = $aux2; - } + }*/ // comparativo salario base if($itemArray[4] > 0){ $compMinSal = round($salarioEmpresa/$itemArray[4] - 1, 2); @@ -1289,88 +1876,185 @@ private function cargaDetalle($item, &$itemArray){ }else{ $compMaxSal = 0; } - // comparativo variable anual - if($itemArray[16] > 0){ - $compMinVar = round($salarioEmpresa/$itemArray[16] - 1, 2); - }else{ - $compMinVar = 0; - } - if($itemArray[17] > 0){ - $comp25PercVar = round($salarioEmpresa/$itemArray[17] - 1 , 2); - }else{ - $comp25PercVar = 0; - } - if($itemArray[18] > 0){ - $compPromVar = round($salarioEmpresa/$itemArray[18] - 1 , 2); - }else{ - $compPromVar = 0; - } - if($itemArray[19] > 0){ - $compMedVar = round($salarioEmpresa/$itemArray[19] - 1, 2); - }else{ - $compMedVar = 0; - } - if($itemArray[20] > 0){ - $comp75PercVar = round($salarioEmpresa/$itemArray[20] - 1, 2); - }else{ - $comp75PercVar = 0; - } - if($itemArray[21] > 0){ - $compMaxVar = round($salarioEmpresa/$itemArray[21] - 1, 2); - }else{ - $compMaxVar = 0; - } + + //dd($itemArray); + + if($variableAnual){ + // comparativo variable anual + if($itemArray[10] > 0){ + $compMinVar = round($salarioEmpresa/$itemArray[10] - 1, 2); + }else{ + $compMinVar = 0; + } + if($itemArray[11] > 0){ + $comp25PercVar = round($salarioEmpresa/$itemArray[11] - 1 , 2); + }else{ + $comp25PercVar = 0; + } + if($itemArray[12] > 0){ + $compPromVar = round($salarioEmpresa/$itemArray[12] - 1 , 2); + }else{ + $compPromVar = 0; + } + if($itemArray[13] > 0){ + $compMedVar = round($salarioEmpresa/$itemArray[13] - 1, 2); + }else{ + $compMedVar = 0; + } + if($itemArray[14] > 0){ + $comp75PercVar = round($salarioEmpresa/$itemArray[14] - 1, 2); + }else{ + $comp75PercVar = 0; + } + if($itemArray[15] > 0){ + $compMaxVar = round($salarioEmpresa/$itemArray[15] - 1, 2); + }else{ + $compMaxVar = 0; + } + + if($itemArray[34] > 0){ + $ratioSalBaseTotalEfectivoMin = round(($itemArray[4]*12)/$itemArray[34], 2); + }else{ + $ratioSalBaseTotalEfectivoMin = 0; + } + if($itemArray[35] > 0){ + $ratioSalBaseTotalEfectivo25 = round(($itemArray[5]*12)/$itemArray[35], 2); + }else{ + $ratioSalBaseTotalEfectivo25 = 0; + } + if($itemArray[36] > 0){ + $ratioSalBaseTotalEfectivoProm = round(($itemArray[6]*12)/$itemArray[36], 2); + }else{ + $ratioSalBaseTotalEfectivoProm = 0; + } + if($itemArray[37] > 0){ + $ratioSalBaseTotalEfectivoMed = round(($itemArray[7]*12)/$itemArray[37], 2); + }else{ + $ratioSalBaseTotalEfectivoMed = 0; + } + if($itemArray[38] > 0){ + $ratioSalBaseTotalEfectivo75 = round(($itemArray[8]*12)/$itemArray[38], 2); + }else{ + $ratioSalBaseTotalEfectivo75 = 0; + } + if($itemArray[39] > 0){ + $ratioSalBaseTotalEfectivoMax = round(($itemArray[9]*12)/$itemArray[39], 2); + }else{ + $ratioSalBaseTotalEfectivoMax = 0; + } + array_push( $itemArray, + $compMinSal, + $comp25PercSal, + $compPromSal, + $compMedSal, + $comp75PercSal, + $compMaxSal, + $compMinVar, + $comp25PercVar, + $compPromVar, + $compMedVar, + $comp75PercVar, + $compMaxVar, + $ratioSalBaseTotalEfectivoMin, + $ratioSalBaseTotalEfectivo25, + $ratioSalBaseTotalEfectivoProm, + $ratioSalBaseTotalEfectivoMed, + $ratioSalBaseTotalEfectivo75, + $ratioSalBaseTotalEfectivoMax); + }elseif($efectivoTotal){ + // comparativo efectivo total anual + if($itemArray[34] > 0){ + $ratioSalBaseTotalEfectivoMin = round(($itemArray[4]*12)/$itemArray[34], 2); + }else{ + $ratioSalBaseTotalEfectivoMin = 0; + } + if($itemArray[35] > 0){ + $ratioSalBaseTotalEfectivo25 = round(($itemArray[5]*12)/$itemArray[35], 2); + }else{ + $ratioSalBaseTotalEfectivo25 = 0; + } + if($itemArray[36] > 0){ + $ratioSalBaseTotalEfectivoProm = round(($itemArray[6]*12)/$itemArray[36], 2); + }else{ + $ratioSalBaseTotalEfectivoProm = 0; + } + if($itemArray[37] > 0){ + $ratioSalBaseTotalEfectivoMed = round(($itemArray[7]*12)/$itemArray[37], 2); + }else{ + $ratioSalBaseTotalEfectivoMed = 0; + } + if($itemArray[38] > 0){ + $ratioSalBaseTotalEfectivo75 = round(($itemArray[8]*12)/$itemArray[38], 2); + }else{ + $ratioSalBaseTotalEfectivo75 = 0; + } + if($itemArray[39] > 0){ + $ratioSalBaseTotalEfectivoMax = round(($itemArray[9]*12)/$itemArray[39], 2); + }else{ + $ratioSalBaseTotalEfectivoMax = 0; + } - if($itemArray[40] > 0){ - $ratioSalBaseTotalEfectivoMin = round(($itemArray[4]*12)/$itemArray[40], 2); - }else{ - $ratioSalBaseTotalEfectivoMin = 0; - } - if($itemArray[41] > 0){ - $ratioSalBaseTotalEfectivo25 = round(($itemArray[5]*12)/$itemArray[41], 2); - }else{ - $ratioSalBaseTotalEfectivo25 = 0; - } - if($itemArray[42] > 0){ - $ratioSalBaseTotalEfectivoProm = round(($itemArray[6]*12)/$itemArray[42], 2); - }else{ - $ratioSalBaseTotalEfectivoProm = 0; - } - if($itemArray[43] > 0){ - $ratioSalBaseTotalEfectivoMed = round(($itemArray[7]*12)/$itemArray[43], 2); - }else{ - $ratioSalBaseTotalEfectivoMed = 0; - } - if($itemArray[44] > 0){ - $ratioSalBaseTotalEfectivo75 = round(($itemArray[8]*12)/$itemArray[44], 2); + array_push( $itemArray, + $compMinSal, + $comp25PercSal, + $compPromSal, + $compMedSal, + $comp75PercSal, + $compMaxSal, + $ratioSalBaseTotalEfectivoMin, + $ratioSalBaseTotalEfectivo25, + $ratioSalBaseTotalEfectivoProm, + $ratioSalBaseTotalEfectivoMed, + $ratioSalBaseTotalEfectivo75, + $ratioSalBaseTotalEfectivoMax); }else{ - $ratioSalBaseTotalEfectivo75 = 0; - } - if($itemArray[45] > 0){ - $ratioSalBaseTotalEfectivoMax = round(($itemArray[9]*12)/$itemArray[45], 2); - }else{ - $ratioSalBaseTotalEfectivoMax = 0; + + if($itemArray[10] > 0){ + $ratioSalBaseTotalEfectivoMin = round(($itemArray[4]*12)/$itemArray[10], 2); + }else{ + $ratioSalBaseTotalEfectivoMin = 0; + } + if($itemArray[11] > 0){ + $ratioSalBaseTotalEfectivo25 = round(($itemArray[5]*12)/$itemArray[11], 2); + }else{ + $ratioSalBaseTotalEfectivo25 = 0; + } + if($itemArray[12] > 0){ + $ratioSalBaseTotalEfectivoProm = round(($itemArray[6]*12)/$itemArray[12], 2); + }else{ + $ratioSalBaseTotalEfectivoProm = 0; + } + if($itemArray[13] > 0){ + $ratioSalBaseTotalEfectivoMed = round(($itemArray[7]*12)/$itemArray[13], 2); + }else{ + $ratioSalBaseTotalEfectivoMed = 0; + } + if($itemArray[14] > 0){ + $ratioSalBaseTotalEfectivo75 = round(($itemArray[8]*12)/$itemArray[14], 2); + }else{ + $ratioSalBaseTotalEfectivo75 = 0; + } + if($itemArray[15] > 0){ + $ratioSalBaseTotalEfectivoMax = round(($itemArray[9]*12)/$itemArray[15], 2); + }else{ + $ratioSalBaseTotalEfectivoMax = 0; + } + + array_push( $itemArray, + $compMinSal, + $comp25PercSal, + $compPromSal, + $compMedSal, + $comp75PercSal, + $compMaxSal, + $ratioSalBaseTotalEfectivoMin, + $ratioSalBaseTotalEfectivo25, + $ratioSalBaseTotalEfectivoProm, + $ratioSalBaseTotalEfectivoMed, + $ratioSalBaseTotalEfectivo75, + $ratioSalBaseTotalEfectivoMax); } - array_push( $itemArray, - $compMinSal, - $comp25PercSal, - $compPromSal, - $compMedSal, - $comp75PercSal, - $compMaxSal, - $compMinVar, - $comp25PercVar, - $compPromVar, - $compMedVar, - $comp75PercVar, - $compMaxVar, - $ratioSalBaseTotalEfectivoMin, - $ratioSalBaseTotalEfectivo25, - $ratioSalBaseTotalEfectivoProm, - $ratioSalBaseTotalEfectivoMed, - $ratioSalBaseTotalEfectivo75, - $ratioSalBaseTotalEfectivoMax); } private function cargador($value, &$itemArray, $casos){ @@ -1378,12 +2062,13 @@ private function cargador($value, &$itemArray, $casos){ array_push($itemArray, $value["ocupantes"]); array_push($itemArray, $value["Casos"]); } + //array_push($itemArray, $value["Concepto"]); array_push($itemArray, $value["Min"]); array_push($itemArray, $value["25 Percentil"]); array_push($itemArray, round($value["Promedio"], 2)); array_push($itemArray, $value["Mediana"]); array_push($itemArray, $value["75 Percentil"]); - array_push($itemArray, $value["Max"]); + array_push($itemArray, $value["Max"]); } @@ -1415,10 +2100,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_salary'), $salarioMin, $salarioMax, - $salarioProm, - $salarioMed, - $salario25Per, - $salario75Per, + round($salarioProm, 0), + round($salarioMed, 0), + round($salario25Per, 0), + round($salario75Per, 0), $dbClienteEnc->salario_base, $segmento, $dbCargo); @@ -1438,10 +2123,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_salary'), $salarioAnualMin, $salarioAnualMax, - $salarioAnualProm, - $salarioAnualMed, - $salarioAnual25Per, - $salarioAnual75Per, + round($salarioAnualProm, 0), + round($salarioAnualMed, 0), + round($salarioAnual25Per, 0), + round($salarioAnual75Per, 0), $dbClienteEnc->salario_base * 12, $segmento, $dbCargo); @@ -1460,10 +2145,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_gratif.'), $gratificacionMin, $gratificacionMax, - $gratificacionProm, - $gratificacionMed, - $gratificacion25Per, - $gratificacion75Per, + round($gratificacionProm, 0), + round($gratificacionMed, 0), + round($gratificacion25Per, 0), + round($gratificacion75Per, 0), $dbClienteEnc->gratificacion, $segmento, $dbCargo); @@ -1482,10 +2167,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_13month'), $aguinaldoMin, $aguinaldoMax, - $aguinaldoProm, - $aguinaldoMed, - $aguinaldo25Per, - $aguinaldo75Per, + round($aguinaldoProm, 0), + round($aguinaldoMed, 0), + round($aguinaldo25Per, 0), + round($aguinaldo75Per, 0), $dbClienteEnc->aguinaldo, $segmento, $dbCargo); @@ -1518,10 +2203,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_cash'), $efectivoMin, $efectivoMax, - $efectivoProm, - $efectivoMed, - $efectivo25Per, - $efectivo75Per, + round($efectivoProm, 0), + round($efectivoMed, 0), + round($efectivo25Per, 0), + round($efectivo75Per, 0), $efectivoEmpresa, $segmento, $dbCargo); @@ -1540,13 +2225,13 @@ private function segmenter( &$collection, $this->pusher( $collection, $casosAdicionalesBancos, Lang::get('reportReport.concept_total_incentives'), - $adicionalesMin * 12, - $adicionalesMax * 12, - $adicionalesProm * 12, - $adicionalesMed * 12, - $adicionales25Per * 12, - $adicionales75Per * 12, - $dbClienteEnc->adicionales_bancos * 12, + $adicionalesMin, + $adicionalesMax, + round($adicionalesProm, 0), + round($adicionalesMed, 0), + round($adicionales25Per, 0), + round($adicionales75Per, 0), + $dbClienteEnc->adicionales_bancos, $segmento, $dbCargo); @@ -1590,10 +2275,10 @@ private function segmenter( &$collection, "Comision", $comisionMin, $comisionMax, - $comisionProm, - $comisionMed, - $comision25Per, - $comision75Per, + round($comisionProm, 0) * 12, + round($comisionMed, 0) * 12, + round($comision25Per, 0) * 12, + round($comision75Per, 0) *12, $dbClienteEnc->comision, $segmento, $dbCargo); @@ -1638,10 +2323,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_13month_impacted'), $aguinaldoImpMin, $aguinaldoImpMax, - $aguinaldoImpProm, - $aguinaldoImpMed, - $aguinaldoImp25Per, - $aguinaldoImp75Per, + round($aguinaldoImpProm, 0), + round($aguinaldoImpMed, 0), + round($aguinaldoImp25Per, 0), + round($aguinaldoImp75Per, 0), $aguinaldoImpEmpresa, $segmento, $dbCargo); @@ -1651,7 +2336,7 @@ private function segmenter( &$collection, $item['total_comp_anual'] = ($item['salario_base'] * 12) + $item['gratificacion'] + $item['bono_anual'] + - $item['adicionales_bancos']*12+ + $item['adicionales_bancos']+ $item['aguinaldo']; return $item; }); @@ -1677,10 +2362,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_total_compensation'), $totalCompAnualMin, $totalCompAnualMax, - $totalCompAnualProm, - $totalCompAnualMed, - $totalCompAnual25Per, - $totalCompAnual75Per, + round($totalCompAnualProm, 0), + round($totalCompAnualMed, 0), + round($totalCompAnual25Per, 0), + round($totalCompAnual75Per, 0), $totalCompAnualEmpresa, $segmento, $dbCargo); @@ -1700,10 +2385,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_salary'), $salarioMin, $salarioMax, - $salarioProm, - $salarioMed, - $salario25Per, - $salario75Per, + round($salarioProm, 0), + round($salarioMed, 0), + round($salario25Per, 0), + round($salario75Per, 0), $dbClienteEnc->salario_base, $segmento, $dbCargo); @@ -1723,10 +2408,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_salary'), $salarioAnualMin, $salarioAnualMax, - $salarioAnualProm, - $salarioAnualMed, - $salarioAnual25Per, - $salarioAnual75Per, + round($salarioAnualProm, 0), + round($salarioAnualMed, 0), + round($salarioAnual25Per, 0), + round($salarioAnual75Per, 0), $dbClienteEnc->salario_base * 12, $segmento, $dbCargo); @@ -1744,16 +2429,16 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_13month'), $aguinaldoMin, $aguinaldoMax, - $aguinaldoProm, - $aguinaldoMed, - $aguinaldo25Per, - $aguinaldo75Per, + round($aguinaldoProm, 0), + round($aguinaldoMed, 0), + round($aguinaldo25Per, 0), + round($aguinaldo75Per, 0), $dbClienteEnc->aguinaldo, $segmento, $dbCargo); // Efectivo Anual Garantizado - $detalle = $detalle->map(function($item){ + /*$detalle = $detalle->map(function($item){ $item['efectivo_anual_garantizado'] = ($item['salario_base'] * 12) + $item['aguinaldo']; return $item; @@ -1786,7 +2471,7 @@ private function segmenter( &$collection, $efectivoEmpresa, $segmento, $dbCargo); - + */ // Variable Anual $plusRendimiento = $detalle->where('plus_rendimiento', '>', '0')->pluck('plus_rendimiento'); @@ -1802,10 +2487,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_variable_pay'), $plusMin, $plusMax, - $plusProm, - $plusMed, - $plus25Per, - $plus75Per, + round($plusProm, 0), + round($plusMed,0), + round($plus25Per, 0), + round($plus75Per, 0), $dbClienteEnc->plus_rendimiento, $segmento, $dbCargo); @@ -1824,10 +2509,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_mooring'), $amarreMin, $amarreMax, - $amarreProm, - $amarreMed, - $amarre25Per, - $amarre75Per, + round($amarreProm, 0), + round($amarreMed, 0), + round($amarre25Per, 0), + round($amarre75Per, 0), $dbClienteEnc->adicional_amarre, $segmento, $dbCargo); @@ -1847,10 +2532,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_fuel_type'), $TipoCombustibleMin, $TipoCombustibleMax, - $TipoCombustibleProm, - $TipoCombustibleMed, - $TipoCombustible25Per, - $TipoCombustible75Per, + round($TipoCombustibleProm, 0), + round($TipoCombustibleMed, 0), + round($TipoCombustible25Per, 0), + round($TipoCombustible75Per, 0), $dbClienteEnc->adicional_tipo_combustible, $segmento, $dbCargo); @@ -1869,10 +2554,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_shipping'), $embarqueMin, $embarqueMax, - $embarqueProm, - $embarqueMed, - $embarque25Per, - $embarque75Per, + round($embarqueProm, 0), + round($embarqueMed, 0), + round($embarque25Per, 0), + round($embarque75Per, 0), $dbClienteEnc->adicional_embarque, $segmento, $dbCargo); @@ -1891,50 +2576,35 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_load'), $cargaMin, $cargaMax, - $cargaProm, - $cargaMed, - $carga25Per, - $carga75Per, + round($cargaProm, 0), + round($cargaMed, 0), + round($carga25Per, 0), + round($carga75Per, 0), $dbClienteEnc->adicional_carga, $segmento, $dbCargo); // Total Adicional - $casosAdicionales = collect([$countCasosAmarre, $countCasosTipoCombustible, $countCasosEmbarque, $countCasosCarga])->max(); - $adicionalAnual = $detalle->map(function($item){ - $item['total_adicional_anual'] = $item['adicional_amarre'] + - $item['adicional_tipo_combustible']+ - $item['adicional_embarque']+ - $item['adicional_carga']; - return $item; - }); - - $adicionalAnual = $adicionalAnual->where('total_adicional_anual', '>', 0); - $totalAdicionalMin = $adicionalAnual->pluck('total_adicional_anual')->min(); - $totalAdicionalMax = $adicionalAnual->pluck('total_adicional_anual')->max(); - $totalAdicionalProm = $adicionalAnual->pluck('total_adicional_anual')->avg(); - $totalAdicionalMed = $this->median($adicionalAnual->pluck('total_adicional_anual')); - $totalAdicional25Per = $this->percentile(25, $adicionalAnual->pluck('total_adicional_anual')); - $totalAdicional75Per = $this->percentile(75, $adicionalAnual->pluck('total_adicional_anual')); + $casosAdicionales = $detalle->where('adicionales_navieras', '>', '0')->unique('cabecera_encuesta_id')->count(); + $adicionalAnual = $detalle->where('adicionales_navieras', '>', '0')->pluck('adicionales_navieras'); + $totalAdicionalMin = $adicionalAnual->min(); + $totalAdicionalMax = $adicionalAnual->max(); + $totalAdicionalProm = $adicionalAnual->avg(); + $totalAdicionalMed = $this->median($adicionalAnual); + $totalAdicional25Per = $this->percentile(25, $adicionalAnual); + $totalAdicional75Per = $this->percentile(75, $adicionalAnual); - $found = $adicionalAnual->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) - ->first(); - if($found){ - $totalAdicionalEmpresa = $found->total_adicional_anual; - }else{ - $totalAdicionalEmpresa = 0; - } $this->pusher( $collection, $casosAdicionales, Lang::get('reportReport.concept_total_incentives'), $totalAdicionalMin, $totalAdicionalMax, - $totalAdicionalProm, - $totalAdicionalMed, - $totalAdicional25Per, - $totalAdicional75Per, - $totalAdicionalEmpresa, + round($totalAdicionalProm, 0), + round($totalAdicionalMed, 0), + round($totalAdicional25Per, 0), + round($totalAdicional75Per, 0), + $dbClienteEnc->adicionales_navieras, $segmento, $dbCargo); @@ -1952,10 +2622,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_bonus'), $bonoMin, $bonoMax, - $bonoProm, - $bonoMed, - $bono25Per, - $bono75Per, + round($bonoProm, 0), + round($bonoMed, 0), + round($bono25Per, 0), + round($bono75Per, 0), $dbClienteEnc->bono_anual, $segmento, $dbCargo); @@ -1975,24 +2645,22 @@ private function segmenter( &$collection, $countCasosComision, //Lang::get('reportReport.concept_bonus'), "Comision", - $comisionMin, - $comisionMax, - $comisionProm, - $comisionMed, - $comision25Per, - $comision75Per, - $dbClienteEnc->comision, + $comisionMin *12, + $comisionMax *12, + round($comisionProm, 0) *12, + round($comisionMed, 0) *12, + round($comision25Per, 0) *12, + round($comision75Per, 0) *12, + $dbClienteEnc->comision *12, $segmento, $dbCargo); } - // Efectivo Anual Garantizado + // Efectivo Total Anual $detalle = $detalle->map(function($item){ - $item['efectivo_total_anual'] = $item['efectivo_anual_garantizado'] + - $item['plus_rendimiento']+ - $item['total_adicional_anual']+ - $item['bono_anual']; + $item['efectivo_total_anual'] = $item['salario_base'] * 12 + + $item['aguinaldo']; return $item; }); @@ -2016,10 +2684,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_cash_total'), $efectivoTotalMin, $efectivoTotalMax, - $efectivoTotalProm, - $efectivoTotalMed, - $efectivoTotal25Per, - $efectivoTotal75Per, + round($efectivoTotalProm, 0), + round($efectivoTotalMed, 0), + round($efectivoTotal25Per, 0), + round($efectivoTotal75Per, 0), $efectivoTotalEmpresa, $segmento, $dbCargo); @@ -2038,23 +2706,68 @@ private function segmenter( &$collection, $this->pusher( $collection, $casosBeneficiosNavieras, Lang::get('reportReport.concept_total_benefits'), - $beneficiosMin * 12, - $beneficiosMax * 12, - $beneficiosProm * 12, - $beneficiosMed * 12, - $beneficios25Per * 12, - $beneficios75Per * 12, - $dbClienteEnc->beneficios_bancos * 12, + $beneficiosMin, + $beneficiosMax, + round($beneficiosProm, 0), + round($beneficiosMed, 0), + round($beneficios25Per, 0), + round($beneficios75Per, 0), + $dbClienteEnc->beneficios_bancos, $segmento, $dbCargo); + //Aguinaldo Impactado + $aguinaldoImpMin = 0; + $aguinaldoImpMax = 0; + $aguinaldoImpProm = 0; + $aguinaldoImpMed = 0; + $aguinaldoImp25Per = 0; + $aguinaldoImp75Per = 0; + $aguinaldoImpEmpresa = 0; + + $detalle = $detalle->map(function($item){ + $item['aguinaldo_impactado'] = (($item['salario_base'] * 12) + + $item['gratificacion'] + + $item['bono_anual'] + + $item['adicionales_navieras'])/12; + return $item; + }); + + $aguinaldoImpMin = $detalle->pluck('aguinaldo_impactado')->min(); + $aguinaldoImpMax = $detalle->pluck('aguinaldo_impactado')->max(); + $aguinaldoImpProm = $detalle->pluck('aguinaldo_impactado')->avg(); + $aguinaldoImpMed = $this->median($detalle->pluck('aguinaldo_impactado')); + $aguinaldoImp25Per = $this->percentile(25, $detalle->pluck('aguinaldo_impactado')); + $aguinaldoImp75Per = $this->percentile(75, $detalle->pluck('aguinaldo_impactado')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $aguinaldoImpEmpresa = $found->aguinaldo_impactado; + }else{ + $aguinaldoImpEmpresa = 0; + } + + //dd($detalle); + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_13month_impacted'), + $aguinaldoImpMin, + $aguinaldoImpMax, + round($aguinaldoImpProm, 0), + round($aguinaldoImpMed, 0), + round($aguinaldoImp25Per, 0), + round($aguinaldoImp75Per, 0), + $aguinaldoImpEmpresa, + $segmento, + $dbCargo); //Total Compensación anual $detalle = $detalle->map(function($item){ $item['total_comp_anual'] = $item['efectivo_total_anual'] + - $item['beneficios_navieras']*12; + $item['beneficios_navieras']; return $item; }); @@ -2079,10 +2792,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_total_compensation'), $totalCompAnualMin, $totalCompAnualMax, - $totalCompAnualProm, - $totalCompAnualMed, - $totalCompAnual25Per, - $totalCompAnual75Per, + round($totalCompAnualProm, 0), + round($totalCompAnualMed, 0), + round($totalCompAnual25Per, 0), + round($totalCompAnual75Per, 0), $totalCompAnualEmpresa, $segmento, $dbCargo); @@ -2101,13 +2814,14 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_salary'), $salarioMin, $salarioMax, - $salarioProm, - $salarioMed, - $salario25Per, - $salario75Per, + round($salarioProm, 0), + round($salarioMed, 0), + round($salario25Per, 0), + round($salario75Per, 0), $dbClienteEnc->salario_base, $segmento, $dbCargo); + // Salario Base Anual $salariosBaseAnual = $salariosBase->map(function($item){ return $item * 12; @@ -2124,13 +2838,14 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_salary'), $salarioAnualMin, $salarioAnualMax, - $salarioAnualProm, - $salarioAnualMed, - $salarioAnual25Per, - $salarioAnual75Per, + round($salarioAnualProm, 0), + round($salarioAnualMed, 0), + round($salarioAnual25Per, 0), + round($salarioAnual75Per, 0), $dbClienteEnc->salario_base * 12, $segmento, $dbCargo); + // Gratificacion $gratificaciones = $detalle->where('gratificacion', '>', '0')->pluck('gratificacion'); $gratificacionMin = $gratificaciones->min(); @@ -2145,10 +2860,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_gratif.'), $gratificacionMin, $gratificacionMax, - $gratificacionProm, - $gratificacionMed, - $gratificacion25Per, - $gratificacion75Per, + round($gratificacionProm, 0), + round($gratificacionMed, 0), + round($gratificacion25Per, 0), + round($gratificacion75Per, 0), $dbClienteEnc->gratificacion, $segmento, $dbCargo); @@ -2167,27 +2882,21 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_13month'), $aguinaldoMin, $aguinaldoMax, - $aguinaldoProm, - $aguinaldoMed, - $aguinaldo25Per, - $aguinaldo75Per, + round($aguinaldoProm, 0), + round($aguinaldoMed, 0), + round($aguinaldo25Per, 0), + round($aguinaldo75Per, 0), $dbClienteEnc->aguinaldo, $segmento, $dbCargo); // Efectivo Anual Garantizado - $detalle = $detalle->map(function($item){ $item['efectivo_anual_garantizado'] = ($item['salario_base'] * 12) + $item['gratificacion']+ $item['aguinaldo']; return $item; }); - /*if($segmento == "nacional"){ - dd($detalle); - }*/ - - $efectivoMin = $detalle->pluck('efectivo_anual_garantizado')->min(); $efectivoMax = $detalle->pluck('efectivo_anual_garantizado')->max(); $efectivoProm = $detalle->pluck('efectivo_anual_garantizado')->avg(); @@ -2208,10 +2917,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_cash'), $efectivoMin, $efectivoMax, - $efectivoProm, - $efectivoMed, - $efectivo25Per, - $efectivo75Per, + round($efectivoProm, 0), + round($efectivoMed, 0), + round($efectivo25Per, 0), + round($efectivo75Per, 0), $efectivoEmpresa, $segmento, $dbCargo); @@ -2229,13 +2938,13 @@ private function segmenter( &$collection, $this->pusher( $collection, $countCasosAdicionales, Lang::get('reportReport.concept_total_additional'), - $adicionalesMin * 12, - $adicionalesMax * 12, - $adicionalesProm * 12, - $adicionalesMed * 12, - $adicionales25Per * 12, - $adicionales75Per * 12, - $dbClienteEnc->adicionales_resto * 12, + $adicionalesMin, + $adicionalesMax, + round($adicionalesProm, 0), + round($adicionalesMed, 0), + round($adicionales25Per, 0), + round($adicionales75Per, 0), + $dbClienteEnc->adicionales_resto, $segmento, $dbCargo); @@ -2253,10 +2962,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_bonus'), $bonoMin, $bonoMax, - $bonoProm, - $bonoMed, - $bono25Per, - $bono75Per, + round($bonoProm, 0), + round($bonoMed, 0), + round($bono25Per, 0), + round($bono75Per, 0), $dbClienteEnc->bono_anual, $segmento, $dbCargo); @@ -2279,10 +2988,10 @@ private function segmenter( &$collection, "Comision", $comisionMin * 12, $comisionMax * 12, - $comisionProm * 12, - $comisionMed * 12, - $comision25Per * 12, - $comision75Per * 12, + round($comisionProm, 0) * 12, + round($comisionMed, 0) * 12, + round($comision25Per, 0) * 12, + round($comision75Per, 0) * 12, $dbClienteEnc->comision * 12, $segmento, $dbCargo); @@ -2292,8 +3001,7 @@ private function segmenter( &$collection, // Efectivo Total Anual $detalle = $detalle->map(function($item){ $item['efectivo_total_anual'] = $item['efectivo_anual_garantizado'] + - $item['comision']*12+ - $item['adicionales_resto']*12+ + $item['adicionales_resto']+ $item['bono_anual']; return $item; }); @@ -2318,10 +3026,10 @@ private function segmenter( &$collection, Lang::get('reportReport.concept_annual_cash_total'), $efectivoTotalMin, $efectivoTotalMax, - $efectivoTotalProm, - $efectivoTotalMed, - $efectivoTotal25Per, - $efectivoTotal75Per, + round($efectivoTotalProm, 0), + round($efectivoTotalMed, 0), + round($efectivoTotal25Per, 0), + round($efectivoTotal75Per, 0), $efectivoTotalEmpresa, $segmento, $dbCargo); @@ -2339,22 +3047,63 @@ private function segmenter( &$collection, $this->pusher( $collection, $countCasosBeneficios, Lang::get('reportReport.concept_total_benefits'), - $beneficiosMin * 12, - $beneficiosMax * 12, - $beneficiosProm * 12, - $beneficiosMed * 12, - $beneficios25Per * 12, - $beneficios75Per * 12, - $dbClienteEnc->beneficios_resto * 12, + $beneficiosMin, + $beneficiosMax, + round($beneficiosProm, 0), + round($beneficiosMed, 0), + round($beneficios25Per, 0), + round($beneficios75Per, 0), + $dbClienteEnc->beneficios_resto, $segmento, $dbCargo); + //Aguinaldo Impactado + $aguinaldoImpMin = 0; + $aguinaldoImpMax = 0; + $aguinaldoImpProm = 0; + $aguinaldoImpMed = 0; + $aguinaldoImp25Per = 0; + $aguinaldoImp75Per = 0; + $aguinaldoImpEmpresa = 0; + + $detalle = $detalle->map(function($item){ + $item['aguinaldo_impactado'] = (($item['salario_base'] * 12) + + $item['gratificacion'] + + $item['bono_anual'] + + $item['adicionales_resto'])/12; + return $item; + }); + + $aguinaldoImpMin = $detalle->pluck('aguinaldo_impactado')->min(); + $aguinaldoImpMax = $detalle->pluck('aguinaldo_impactado')->max(); + $aguinaldoImpProm = $detalle->pluck('aguinaldo_impactado')->avg(); + $aguinaldoImpMed = $this->median($detalle->pluck('aguinaldo_impactado')); + $aguinaldoImp25Per = $this->percentile(25, $detalle->pluck('aguinaldo_impactado')); + $aguinaldoImp75Per = $this->percentile(75, $detalle->pluck('aguinaldo_impactado')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $aguinaldoImpEmpresa = $found->aguinaldo_impactado; + }else{ + $aguinaldoImpEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_13month_impacted'), + $aguinaldoImpMin, + $aguinaldoImpMax, + round($aguinaldoImpProm, 0), + round($aguinaldoImpMed, 0), + round($aguinaldoImp25Per, 0), + round($aguinaldoImp75Per, 0), + $aguinaldoImpEmpresa, + $segmento, + $dbCargo); + //Total Compensación anual $detalle = $detalle->map(function($item){ -/* if($item->beneficios_resto > 0){ - dd($item->efectivo_total_anual, $item->beneficios_resto*12); - } -*/ $item['total_comp_anual'] = $item['efectivo_total_anual'] + $item['beneficios_resto'] * 12; return $item; @@ -2374,18 +3123,15 @@ private function segmenter( &$collection, $totalCompAnualEmpresa = 0; } - - - $this->pusher( $collection, $countCasos, Lang::get('reportReport.concept_total_compensation'), $totalCompAnualMin, $totalCompAnualMax, - $totalCompAnualProm, - $totalCompAnualMed, - $totalCompAnual25Per, - $totalCompAnual75Per, + round($totalCompAnualProm, 0), + round($totalCompAnualMed, 0), + round($totalCompAnual25Per, 0), + round($totalCompAnual75Per, 0), $totalCompAnualEmpresa, $segmento, $dbCargo); @@ -2521,8 +3267,8 @@ public function resultadosExcel(Request $request){ monto_colegiatura_hijos, condicion_ocupante FROM detalle_encuestas d, encuestas_cargos e, cabecera_encuestas c, cargos ca, rubros r, areas a, niveles n, empresas em, niveles n1, areas a1 - where c.periodo = '".$periodo."' - and c.rubro_id = '".$rubro."' + where c.periodo = :periodo + and c.rubro_id = :rubro and c.id = d.cabecera_encuesta_id and d.encuestas_cargo_id = e.id and e.cargo_id = ca.id @@ -2533,426 +3279,328 @@ public function resultadosExcel(Request $request){ and ca.nivel_id = n1.id and ca.area_id = a1.id order by 1"; - $dbDetalle = DB::select($query); - // dd($query); + $dbDetalle = DB::select($query, ["periodo" => $periodo, "rubro" => $rubro]); $detalle = array(); foreach ($dbDetalle as $key => $item) { - + // Efectivo Anual Garantizado $efectivoAnual = $item->salario_anual + $item->gratificacion + $item->aguinaldo; - - $adicionalNav = $item->adicional_amarre + - $item->adicional_tipo_combustible + - $item->adicional_embarque + - $item->adicional_carga; - - $adicionalOtros = ( $item->fallo_caja + - $item->fallo_caja_ext + - $item->comision + - $item->gratificacion_contrato + - $item->adicional_nivel_cargo + - $item->adicional_titulo) * 12; - - $efectivoTotalAnualNav = $efectivoAnual + - $item->plus_rendimiento + - $adicionalNav + - $item->bono_anual; - - $efectivoTotalAnual = $efectivoAnual + $adicionalOtros + $item->bono_anual; - - $totalBeneficios = $item->refrigerio + - $item->costo_seguro_medico * ($item->cobertura_seguro_medico/100) + - $item->costo_seguro_vida + - //$item->costo_poliza_muerte_accidente + - //$item->costo_poliza_muerte_natural + - $item->monto_movil / 60 + - $item->monto_tarjeta_flota+ - $item->seguro_movil + - $item->monto_km_recorrido + - $item->monto_ayuda_escolar + - $item->monto_comedor_interno + - $item->monto_curso_idioma * ($item->cobertura_curso_idioma/100) + - $item->monto_post_grado * ($item->cobertura_post_grado/100)/ 24 + - $item->monto_celular_corporativo + - $item->monto_vivienda + - $item->monto_colegiatura_hijos; - - $aguinaldoImpactado = ( $item->salario_anual + - $item->gratificacion + - $adicionalOtros + - $item->bono_anual ) / 12; - - $compensacionEfectiva = ( $item->salario_anual + - $item->gratificacion + - $item->aguinaldo + - $adicionalOtros + - $item->bono_anual ); - - $detalle[] = array( "id_encuesta"=>$item->cabecera_encuesta_id, - "id_empresa"=>$item->empresa_id, - "Empresa"=>$item->empresa, - "Cant. Empleados"=>$item->cantidad_empleados, - "Excluir"=>$item->excluir, - "Periodo"=>$item->periodo, - "id_cargo_cliente"=>$item->encuestas_cargo_id, - "Cargo Cliente"=> $item->cargo_cliente, - "id_area"=>$item->area_id, - "Area"=>$item->area_cliente, - "id_nivel"=>$item->nivel_id, - "Nivel"=>$item->nivel_cliente, - "id_rubro"=> $item->rubro_id, - "Rubro"=> $item->rubro, - "id_cargo_oficial"=> $item->id, - "Cargo Oficial"=> $item->cargo_oficial, - "id_area_oficial"=>$item->id_area_oficial, - "Area Oficial"=>$item->area_oficial, - "id_nivel_oficial"=>$item->id_nivel_oficial, - "Nivel Oficial"=>$item->nivel_oficial, - "Ocupantes"=>$item->cantidad_ocupantes, - "Salario Base"=>$item->salario_base, - "salario Anual"=>$item->salario_anual, - "Gratificación"=> $item->gratificacion, - "Aguinaldo"=> $item->aguinaldo, - "Efectivo Anual Garantizado" => $efectivoAnual, - "comision"=> $item->comision, - "Variable Anual (plus_rendimiento)" => $item->plus_rendimiento, - "Adicional Amarre"=>$item->adicional_amarre, - "Adicional Tipo Combustible"=>$item->adicional_tipo_combustible, - "Adicional Embarque"=>$item->adicional_embarque, - "Adicional Tipo Carga"=>$item->adicional_carga, - "Total Adicional Naviera" => $adicionalNav, - "Fallo Caja"=> $item->fallo_caja, - "Fallo Caja Ext."=> $item->fallo_caja_ext, - "Gratif. Contrato"=>$item->gratificacion_contrato, - "Adicional Nivel Cargo"=>$item->adicional_nivel_cargo, - "Adicional Título"=>$item->adicional_titulo, - "Total Adicional (Otros)"=>$adicionalOtros, - "Bono Anual"=>$item->bono_anual, -// "bono_anual_salarios"=>$item->bono_anual_salarios, - "Incentivo a Largo Plazo"=>$item->incentivo_largo_plazo, - "Efectivo Total Anual Nav" => $efectivoTotalAnualNav, - "Efectivo Total Anual (Otros)" => $efectivoTotalAnual, - "Refrigerio"=>$item->refrigerio, - "Costo Seguro Médico"=>$item->costo_seguro_medico, - "Cobertura Seguro Médico"=>$item->cobertura_seguro_medico, - "Costo Seguro Vida"=>$item->costo_seguro_vida, -// "costo_poliza_muerte_natural"=>$item->costo_poliza_muerte_natural, -// "costo_poliza_muerte_accidente"=>$item->costo_poliza_muerte_accidente, -// "aseguradora_id"=>$item->aseguradora_id, - "Car Company"=>$item->car_company, - "Movilidad Full"=>$item->movilidad_full, - "Monto Tarj. Flota"=>$item->monto_tarjeta_flota, -// "autos_marca_id"=>$item->autos_marca_id, -// "autos_modelo_id"=>$item->autos_modelo_id, - "Tarj. Flota"=>$item->tarjeta_flota, - "Monto Automóvil"=>$item->monto_movil, - "Seguro Automóvil"=>$item->seguro_movil, - "Mantenimiento Automóvil"=>$item->mantenimiento_movil, - "Km recorrido"=>$item->monto_km_recorrido, - "Ayuda Escolar"=>$item->monto_ayuda_escolar, - "Comedor Interno"=>$item->monto_comedor_interno, - "Curso Idioma"=>$item->monto_curso_idioma, - "Cobertura idioma"=>$item->cobertura_curso_idioma, -// "tipo clase idioma"=>$item->tipo_clase_idioma, - "Post Grado"=>$item->monto_post_grado, - "Cobertura Post Grado"=>$item->cobertura_post_grado, - "Celular"=>$item->monto_celular_corporativo, - "Vivienda"=>$item->monto_vivienda, - "Colegiatura"=>$item->monto_colegiatura_hijos, - "Condición Ocupante"=>$item->condicion_ocupante, - "Total Beneficios Anual"=>$totalBeneficios*12, - "Compensación Anual Total" => ($totalBeneficios*12 + $efectivoTotalAnual), - "Compensación Anual Total Navieras" => ($totalBeneficios*12 + $efectivoTotalAnualNav), - "Aguinaldo Impactado"=> $aguinaldoImpactado, - "Compensación Efectiva Anual" => $compensacionEfectiva - ); - - - } - $periodo = implode('_', explode('/', $periodo)); - $filename = 'Resultados_'.$periodo.'_'.$rubroDesc; - Excel::create($filename, function($excel) use($detalle, $periodo) { - $excel->sheet($periodo, function($sheet) use($detalle){ - - $sheet->cells('A10:BR10', function($cells){ - $cells->setBackground('#00897b'); - $cells->setFontColor("#FFFFFF"); - $cells->setFontWeight("bold"); - // $cells->setValignment('center'); - $cells->setAlignment('center'); - }); - - // Efectivo Anual Garantizado - $sheet->cell('A1', function($cell){ - $cell->setBackground('#1976d2'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Efectivo Anual Garantizado'); - }); - - $sheet->cell('B1', function($cell){ - $cell->setValue('Salario Base Anual'); - }); - - $sheet->cell('C1', function($cell){ - $cell->setValue('Gratificación'); - }); - - $sheet->cell('D1', function($cell){ - $cell->setValue('Aguinaldo'); - }); - - // Adicional Navieras - $sheet->cell('A2', function($cell){ - $cell->setBackground('#ffff00'); - $cell->setFontColor("#000000"); - $cell->setFontWeight("bold"); - $cell->setValue('Adicional Navieras'); - }); - - $sheet->cell('B2', function($cell){ - $cell->setValue('Adicional Amarre'); - }); - - $sheet->cell('C2', function($cell){ - $cell->setValue('Adicional Tipo Combustible'); - }); - - $sheet->cell('D2', function($cell){ - $cell->setValue('Adicional Embarque'); - }); - - $sheet->cell('E2', function($cell){ - $cell->setValue('Adicional Carga'); - }); - - // Adicional Otros - $sheet->cell('A3', function($cell){ - $cell->setBackground('#388e3c'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Adicional Otros'); - }); - - $sheet->cell('B3', function($cell){ - $cell->setValue('Fallo Caja'); - }); - - $sheet->cell('C3', function($cell){ - $cell->setValue('Fallo Caja Mon. Ext.'); - }); - - $sheet->cell('D3', function($cell){ - $cell->setValue('Comisión'); - }); - - $sheet->cell('E3', function($cell){ - $cell->setValue('Gratificación por Contrato'); - }); - - $sheet->cell('F3', function($cell){ - $cell->setValue('Adicional por Nivel de Cargo'); - }); - - $sheet->cell('F3', function($cell){ - $cell->setValue('Adicional por Título'); - }); - - // Efectivo Total Navieras - $sheet->cell('A4', function($cell){ - $cell->setBackground('#ff80ab'); - $cell->setFontColor("#000000"); - $cell->setFontWeight("bold"); - $cell->setValue('Efectivo Total Anual Navieras'); - }); - - $sheet->cell('B4', function($cell){ - $cell->setValue('Efectivo Anual Garantizado'); - }); - - $sheet->cell('C4', function($cell){ - $cell->setValue('Variable Anual'); - }); - - $sheet->cell('D4', function($cell){ - $cell->setValue('Adicional Navieras'); - }); - - $sheet->cell('E4', function($cell){ - $cell->setValue('Bono'); - }); - - // Efectivo total anual otros - $sheet->cell('A5', function($cell){ - $cell->setBackground('#afb42b'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Efectivo Total Anual Otros'); - }); - - $sheet->cell('B5', function($cell){ - $cell->setValue('Efectivo Anual Garantizado'); - }); - - $sheet->cell('C5', function($cell){ - $cell->setValue('Adicional Otros'); - }); - - $sheet->cell('D5', function($cell){ - $cell->setValue('Bono'); - }); - - - // Total Beneficios - $sheet->cell('A6', function($cell){ - $cell->setBackground('#ff9800'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Total Beneficios'); - }); - - // Compensación anual Total - $sheet->cell('A7', function($cell){ - $cell->setBackground('#5d4037'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Compensación Anual Total'); - }); - - $sheet->cell('B7', function($cell){ - $cell->setValue('Efectivo Total Anual'); - }); - - $sheet->cell('C7', function($cell){ - $cell->setValue('Total Beneficios'); - }); - - // Aguinaldo Impactado - $sheet->cell('A8', function($cell){ - $cell->setBackground('#424242'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Aguinaldo Impactado'); - }); - - $sheet->cell('B8', function($cell){ - $cell->setValue('(Salario Base Anual'); - }); - $sheet->cell('C8', function($cell){ - $cell->setValue('Gratificación'); - }); - - $sheet->cell('D8', function($cell){ - $cell->setValue('Adicional Otros'); - }); + // Total Adicional Anual + if($rubro == 4){ + $adicional = $item->adicional_amarre + + $item->adicional_tipo_combustible + + $item->adicional_embarque + + $item->adicional_carga + + ( ( $item->fallo_caja + + $item->fallo_caja_ext + + $item->comision + + $item->gratificacion_contrato + + $item->adicional_nivel_cargo + + $item->adicional_titulo) * 12); - $sheet->cell('E8', function($cell){ - $cell->setValue('Bono)/12'); - }); + }elseif($rubro == 1){ + $adicional = ( $item->fallo_caja + + $item->fallo_caja_ext + + $item->comision + + $item->gratificacion_contrato + + $item->adicional_nivel_cargo + + $item->adicional_titulo) * 12; - // Compensación Efectiva anual Total - $sheet->cell('A9', function($cell){ - $cell->setBackground('#e53935'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - $cell->setValue('Compensación Efectiva Anual Total'); - }); + }else{ + $adicional = ( $item->fallo_caja + + $item->fallo_caja_ext + + $item->comision + + $item->gratificacion_contrato + + $item->adicional_nivel_cargo + + $item->adicional_titulo) * 12; - $sheet->cell('B9', function($cell){ - $cell->setValue('Salario Base Anual'); - }); + } - $sheet->cell('C9', function($cell){ - $cell->setValue('Gratificación'); - }); + // Efectivo Total Anual + if($rubro == 4){ + $efectivoTotalAnual = $item->salario_anual + + $item->aguinaldo; + }else{ + $efectivoTotalAnual = $efectivoAnual + + $adicional + + $item->bono_anual; + } + // Aguinaldo impactado + if($rubro == 1){ + $aguinaldoImpactado = round( ( $item->salario_anual + + $item->gratificacion + + $adicional + + $item->bono_anual ) / 12, 0); + }elseif($rubro == 4){ + $aguinaldoImpactado = round( ( $item->salario_anual + + $item->gratificacion + + $adicional + + $item->bono_anual ) / 12, 0); + }else{ + $aguinaldoImpactado = round( ( $item->salario_anual + + $item->gratificacion + + $adicional + + $item->bono_anual ) / 12, 0); + } + + // Total Compensación Efectiva Anual + $compensacionEfectiva = ( $item->salario_anual + + $item->gratificacion + + $item->aguinaldo + + $adicional + + $item->bono_anual ); + + $totalBeneficios = $item->refrigerio * 12 + + ($item->costo_seguro_medico * ($item->cobertura_seguro_medico/100)) * 12 + + $item->costo_seguro_vida * 12 + + ($item->monto_movil / 60) * 12 + + $item->gratificacion_contrato * 12+ + $item->monto_tarjeta_flota * 12+ + $item->seguro_movil * 12+ + $item->monto_ayuda_escolar + + $item->monto_comedor_interno * 12+ + ($item->monto_curso_idioma * ($item->cobertura_curso_idioma/100)) * 12 + + ($item->monto_post_grado * ($item->cobertura_post_grado/100))/ 2 + + $item->monto_celular_corporativo * 12 + + $item->monto_vivienda * 12+ + $item->monto_colegiatura_hijos; + + + + if($rubro == 1){ + $detalle[] = array( "id_encuesta"=>$item->cabecera_encuesta_id, + "id_empresa"=>$item->empresa_id, + "Empresa"=>$item->empresa, + "Cant. Empleados"=>$item->cantidad_empleados, + "Excluir"=>$item->excluir, + "Periodo"=>$item->periodo, + "id_cargo_cliente"=>$item->encuestas_cargo_id, + "Cargo Cliente"=> $item->cargo_cliente, + "id_area"=>$item->area_id, + "Area"=>$item->area_cliente, + "id_nivel"=>$item->nivel_id, + "Nivel"=>$item->nivel_cliente, + "id_rubro"=> $item->rubro_id, + "Rubro"=> $item->rubro, + "id_cargo_oficial"=> $item->id, + "Cargo Oficial"=> $item->cargo_oficial, + "id_area_oficial"=>$item->id_area_oficial, + "Area Oficial"=>$item->area_oficial, + "id_nivel_oficial"=>$item->id_nivel_oficial, + "Nivel Oficial"=>$item->nivel_oficial, + "Ocupantes"=>$item->cantidad_ocupantes, + "Salario Base"=>$item->salario_base, + "Salario Anual"=>$item->salario_anual, + "Gratificación"=> $item->gratificacion, + "Aguinaldo"=> $item->aguinaldo, + "Efectivo Anual Garantizado" => $efectivoAnual, + "Comision"=> $item->comision, + "Fallo Caja"=> $item->fallo_caja, + "Fallo Caja Ext."=> $item->fallo_caja_ext, + "Gratif. Contrato"=>$item->gratificacion_contrato, + "Adicional Nivel Cargo"=>$item->adicional_nivel_cargo, + "Adicional Título"=>$item->adicional_titulo, + "Total Adicional"=>$adicional, + "Bono Anual"=>$item->bono_anual, + "Incentivo a Largo Plazo"=>$item->incentivo_largo_plazo, + "Refrigerio"=>$item->refrigerio, + "Costo Seguro Médico"=>$item->costo_seguro_medico, + "Cobertura Seguro Médico"=>$item->cobertura_seguro_medico, + "Costo Seguro Vida"=>$item->costo_seguro_vida, + "Car Company"=>$item->car_company, + "Movilidad Full"=>$item->movilidad_full, + "Monto Tarj. Flota"=>$item->monto_tarjeta_flota, + "Tarj. Flota"=>$item->tarjeta_flota, + "Monto Automóvil"=>$item->monto_movil, + "Seguro Automóvil"=>$item->seguro_movil, + "Mantenimiento Automóvil"=>$item->mantenimiento_movil, + "Km recorrido"=>$item->monto_km_recorrido, + "Ayuda Escolar"=>$item->monto_ayuda_escolar, + "Comedor Interno"=>$item->monto_comedor_interno, + "Curso Idioma"=>$item->monto_curso_idioma, + "Cobertura idioma"=>$item->cobertura_curso_idioma, + "Post Grado"=>$item->monto_post_grado, + "Cobertura Post Grado"=>$item->cobertura_post_grado, + "Celular"=>$item->monto_celular_corporativo, + "Vivienda"=>$item->monto_vivienda, + "Colegiatura"=>$item->monto_colegiatura_hijos, + "Condición Ocupante"=>$item->condicion_ocupante, + "Aguinaldo Impactado"=> $aguinaldoImpactado, + "Total Compensación Efectiva Anual" => $compensacionEfectiva, + + + ); - $sheet->cell('D9', function($cell){ - $cell->setValue('Adicional Otros'); - }); + }elseif($rubro == 4){ + $detalle[] = array( "id_encuesta"=>$item->cabecera_encuesta_id, + "id_empresa"=>$item->empresa_id, + "Empresa"=>$item->empresa, + "Cant. Empleados"=>$item->cantidad_empleados, + "Excluir"=>$item->excluir, + "Periodo"=>$item->periodo, + "id_cargo_cliente"=>$item->encuestas_cargo_id, + "Cargo Cliente"=> $item->cargo_cliente, + "id_area"=>$item->area_id, + "Area"=>$item->area_cliente, + "id_nivel"=>$item->nivel_id, + "Nivel"=>$item->nivel_cliente, + "id_rubro"=> $item->rubro_id, + "Rubro"=> $item->rubro, + "id_cargo_oficial"=> $item->id, + "Cargo Oficial"=> $item->cargo_oficial, + "id_area_oficial"=>$item->id_area_oficial, + "Area Oficial"=>$item->area_oficial, + "id_nivel_oficial"=>$item->id_nivel_oficial, + "Nivel Oficial"=>$item->nivel_oficial, + "Ocupantes"=>$item->cantidad_ocupantes, + "Salario Base"=>$item->salario_base, + "Salario Anual"=>$item->salario_anual, + "Gratificación"=> $item->gratificacion, + "Aguinaldo"=> $item->aguinaldo, + "comision"=> $item->comision, + "Variable Anual (plus_rendimiento)" => $item->plus_rendimiento, + "Adicional Amarre"=>$item->adicional_amarre, + "Adicional Tipo Combustible"=>$item->adicional_tipo_combustible, + "Adicional Embarque"=>$item->adicional_embarque, + "Adicional Tipo Carga"=>$item->adicional_carga, + "Fallo Caja"=> $item->fallo_caja, + "Fallo Caja Ext."=> $item->fallo_caja_ext, + "Gratif. Contrato"=>$item->gratificacion_contrato, + "Adicional Nivel Cargo"=>$item->adicional_nivel_cargo, + "Adicional Título"=>$item->adicional_titulo, + "Total Adicional"=>$adicional, + "Bono Anual"=>$item->bono_anual, + "Incentivo a Largo Plazo"=>$item->incentivo_largo_plazo, + "Efectivo Total Anual" => $efectivoTotalAnual, + "Refrigerio"=>$item->refrigerio, + "Costo Seguro Médico"=>$item->costo_seguro_medico, + "Cobertura Seguro Médico"=>$item->cobertura_seguro_medico, + "Costo Seguro Vida"=>$item->costo_seguro_vida, + "Car Company"=>$item->car_company, + "Movilidad Full"=>$item->movilidad_full, + "Monto Tarj. Flota"=>$item->monto_tarjeta_flota, + "Tarj. Flota"=>$item->tarjeta_flota, + "Monto Automóvil"=>$item->monto_movil, + "Seguro Automóvil"=>$item->seguro_movil, + "Mantenimiento Automóvil"=>$item->mantenimiento_movil, + "Km recorrido"=>$item->monto_km_recorrido, + "Ayuda Escolar"=>$item->monto_ayuda_escolar, + "Comedor Interno"=>$item->monto_comedor_interno, + "Curso Idioma"=>$item->monto_curso_idioma, + "Cobertura idioma"=>$item->cobertura_curso_idioma, + "Post Grado"=>$item->monto_post_grado, + "Cobertura Post Grado"=>$item->cobertura_post_grado, + "Celular"=>$item->monto_celular_corporativo, + "Vivienda"=>$item->monto_vivienda, + "Colegiatura"=>$item->monto_colegiatura_hijos, + "Condición Ocupante"=>$item->condicion_ocupante, + "Total Beneficios Anual"=>$totalBeneficios, + "Aguinaldo Impactado"=> $aguinaldoImpactado, + "Compensación Anual Total" => ($totalBeneficios + $efectivoTotalAnual), + + ); - $sheet->cell('E9', function($cell){ - $cell->setValue('Aguinaldo'); - }); + }else{ + $detalle[] = array( "id_encuesta"=>$item->cabecera_encuesta_id, + "id_empresa"=>$item->empresa_id, + "Empresa"=>$item->empresa, + "Cant. Empleados"=>$item->cantidad_empleados, + "Excluir"=>$item->excluir, + "Periodo"=>$item->periodo, + "id_cargo_cliente"=>$item->encuestas_cargo_id, + "Cargo Cliente"=> $item->cargo_cliente, + "id_area"=>$item->area_id, + "Area"=>$item->area_cliente, + "id_nivel"=>$item->nivel_id, + "Nivel"=>$item->nivel_cliente, + "id_rubro"=> $item->rubro_id, + "Rubro"=> $item->rubro, + "id_cargo_oficial"=> $item->id, + "Cargo Oficial"=> $item->cargo_oficial, + "id_area_oficial"=>$item->id_area_oficial, + "Area Oficial"=>$item->area_oficial, + "id_nivel_oficial"=>$item->id_nivel_oficial, + "Nivel Oficial"=>$item->nivel_oficial, + "Ocupantes"=>$item->cantidad_ocupantes, + "Salario Base"=>$item->salario_base, + "salario Anual"=>$item->salario_anual, + "Gratificación"=> $item->gratificacion, + "Aguinaldo"=> $item->aguinaldo, + "Efectivo Anual Garantizado" => $efectivoAnual, + "Comision"=> $item->comision, + "Fallo Caja"=> $item->fallo_caja, + "Fallo Caja Ext."=> $item->fallo_caja_ext, + "Gratif. Contrato"=>$item->gratificacion_contrato, + "Adicional Nivel Cargo"=>$item->adicional_nivel_cargo, + "Adicional Título"=>$item->adicional_titulo, + "Total Adiciona"=>$adicional, + "Bono Anual"=>$item->bono_anual, + "Incentivo a Largo Plazo"=>$item->incentivo_largo_plazo, + "Efectivo Total Anual" => $efectivoTotalAnual, + "Refrigerio"=>$item->refrigerio, + "Costo Seguro Médico"=>$item->costo_seguro_medico, + "Cobertura Seguro Médico"=>$item->cobertura_seguro_medico, + "Costo Seguro Vida"=>$item->costo_seguro_vida, + "Car Company"=>$item->car_company, + "Movilidad Full"=>$item->movilidad_full, + "Monto Tarj. Flota"=>$item->monto_tarjeta_flota, + "Tarj. Flota"=>$item->tarjeta_flota, + "Monto Automóvil"=>$item->monto_movil, + "Seguro Automóvil"=>$item->seguro_movil, + "Mantenimiento Automóvil"=>$item->mantenimiento_movil, + "Km recorrido"=>$item->monto_km_recorrido, + "Ayuda Escolar"=>$item->monto_ayuda_escolar, + "Comedor Interno"=>$item->monto_comedor_interno, + "Curso Idioma"=>$item->monto_curso_idioma, + "Cobertura idioma"=>$item->cobertura_curso_idioma, + "Post Grado"=>$item->monto_post_grado, + "Cobertura Post Grado"=>$item->cobertura_post_grado, + "Celular"=>$item->monto_celular_corporativo, + "Vivienda"=>$item->monto_vivienda, + "Colegiatura"=>$item->monto_colegiatura_hijos, + "Condición Ocupante"=>$item->condicion_ocupante, + "Compensación Efectiva Anual" => $compensacionEfectiva, + "Total Beneficios Anual" => $totalBeneficios, + "Compensación Anual Total" => ($totalBeneficios + $efectivoTotalAnual), + "Aguinaldo Impactado"=> $aguinaldoImpactado + ); - $sheet->cell('F9', function($cell){ - $cell->setValue('Bono'); - }); + } - // Efectivo Anual Garantizado - $sheet->cell('V10', function($cell){ - $cell->setBackground('#1976d2'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Adicional Navieras - $sheet->cell('AC10', function($cell){ - $cell->setBackground('#ffff00'); - $cell->setFontColor("#000000"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Adicional Otros - $sheet->cell('AI10', function($cell){ - $cell->setBackground('#388e3c'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Efectivo Total Navieras - $sheet->cell('AL10', function($cell){ - $cell->setBackground('#ff80ab'); - $cell->setFontColor("#000000"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Efectivo total anual otros - $sheet->cell('AM10', function($cell){ - $cell->setBackground('#afb42b'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Total Beneficios - $sheet->cell('BJ10', function($cell){ - $cell->setBackground('#ff9800'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Compensación anual Total - $sheet->cell('BK10', function($cell){ - $cell->setBackground('#5d4037'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Aguinaldo Impactado - $sheet->cell('BL10', function($cell){ - $cell->setBackground('#424242'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - // Compensación Efectiva anual Total - $sheet->cell('BM10', function($cell){ - $cell->setBackground('#e53935'); - $cell->setFontColor("#FFFFFF"); - $cell->setFontWeight("bold"); - // $cells->setValignment('center'); - $cell->setAlignment('center'); - }); - $sheet->fromArray($detalle, null, 'A10'); + + } + $periodo = implode('_', explode('/', $periodo)); + $filename = 'Resultados_'.$periodo.'_'.$rubroDesc; + Excel::create($filename, function($excel) use($detalle, $periodo, $rubro) { + $excel->sheet($periodo, function($sheet) use($detalle, $rubro){ + if($rubro == 1){ + $sheet->cells('A1:BG1', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + }elseif($rubro == 4){ + $sheet->cells('A1:BM1', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + }else{ + $sheet->cells('A1:BJ1', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + } + $sheet->fromArray($detalle, null, 'A1'); }); })->export('xlsx'); @@ -3142,7 +3790,6 @@ private function cargoReportAll(Request $request, $tipo, $muestraComision = true // Recuperamos los datos de las encuestas $dbDetalle = Detalle_encuesta::whereIn('encuestas_cargo_id', $cargosEncuestasIds)->get(); - // Datos de la encuesta llenada por el cliente $dbClienteEnc = $dbDetalle->where('cabecera_encuesta_id', $dbEncuesta->id)->first(); // dd($dbEncuesta, $dbClienteEnc, $cargo); diff --git a/app/Http/Controllers/ReporteController_bkp.php b/app/Http/Controllers/ReporteController_bkp.php new file mode 100644 index 0000000..2a38f15 --- /dev/null +++ b/app/Http/Controllers/ReporteController_bkp.php @@ -0,0 +1,3877 @@ +route('encuestas.index'); + + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $empresa = Empresa::find($id); + $club = $this->club($empresa->rubro_id); + $rubro = $empresa->rubro_id; + $locale = $this->getIdioma(); + + $imagen = $this->club($empresa->rubro_id, true); + + if($id == '95'){ + $imagen = "images/ccfc-caratula.PNG"; + } + + + return view('report.home')->with('dbEmpresa', $id) + ->with('imagen', $imagen) + ->with('club', $club) + ->with('locale', $locale); + } + + + public function lista($id){ + $dbEmpresa = $id; + $empresa = Empresa::find($id); + $club = $this->club($empresa->rubro_id); + $rubro = $empresa->rubro_id; + if(Session::has('periodo')){ + $per = Session::get('periodo'); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw("periodo = '". $per."'")->first(); + }else{ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $id.')')->first(); + } + $periodo = $dbEncuesta->periodo; // periodo de la encuesta actual + + $encuestasCargos = Encuestas_cargo::where('cabecera_encuesta_id', $dbEncuesta->id)->whereNotNull('cargo_id')->get(); + $cargosIds = collect(); + foreach ($encuestasCargos as $encuestaCargo) { + if($encuestaCargo->detalleEncuestas){ + if($encuestaCargo->detalleEncuestas->cantidad_ocupantes > 0){ + $cargosIds->push($encuestaCargo->cargo_id); + } + } + } + $cargosIds = $cargosIds->unique(); + $cargos = Cargos_rubro::where('rubro_id', $rubro)->whereIn('cargo_id', $cargosIds)->get(); + //$cargos = Cargos_rubro::where('rubro_id', $rubro)->get(); + $cargos = $cargos->map(function($item){ + $item['nivel_id'] = $item->cargo->nivel->id; + $item['descripcion'] = $item->cargo->descripcion; + return $item; + }); + $colNiveles = collect(); + foreach ($cargos as $key => $value) { + $colNiveles->push($value->cargo->nivel->id); + } + $niveles = Nivel::whereIn('id', $colNiveles->unique())->get(); + return view('report.cargos_club_print')->with('dbEmpresa', $dbEmpresa) + ->with('club', $club) + ->with('niveles', $niveles) + ->with('cargos', $cargos); + } + + public function conceptos($id){ + $dbEmpresa = $id; + $empresa = Empresa::find($id); + $rubro = $empresa->rubro_id; + $club = $this->club($empresa->rubro_id); + $locale = $this->getIdioma(); + if($locale == 'en'){ + return view('report.conceptos_en')->with('club', $club)->with('dbEmpresa', $dbEmpresa)->with('locale', $locale); + }else{ + return view('report.conceptos')->with('club', $club)->with('dbEmpresa', $dbEmpresa)->with('locale', $locale); + } + + } + + public function metodologia($id){ + $dbEmpresa = $id; + $empresa = Empresa::find($id); + $rubro = $empresa->rubro_id; + $club = $this->club($empresa->rubro_id); + $locale = $this->getIdioma(); + if($locale == 'en'){ + return view('report.metodologia_en')->with('club', $club)->with('dbEmpresa', $dbEmpresa)->with("locale", $locale); + } + + return view('report.metodologia')->with('club', $club)->with('dbEmpresa', $dbEmpresa)->with("locale", $locale); + } + + public function ficha($id){ + $dbEmpresa = $id; + $empresa = Empresa::find($id); + $rubro = $empresa->rubro_id; + $locale = $this->getIdioma(); + + if(Session::has('periodo')){ + $per = Session::get('periodo'); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw("periodo = '". $per."'")->first(); + $dbFicha = Ficha_dato::where('rubro_id', $rubro) + ->where('periodo', $per) + ->first(); + }else{ + $dbFicha = Ficha_dato::activa()->where('rubro_id', $rubro)->first(); + if($dbFicha){ + $periodo = $dbFicha->periodo; + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->where('periodo', $periodo)->first(); + }else{ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $id.')')->first(); + } + + } + $cargos = Encuestas_cargo::where('cabecera_encuesta_id', $dbEncuesta->id)->get()->count(); + $periodo = $dbEncuesta->periodo; + + if($dbFicha){ + $cargos = $dbFicha->cargos_emergentes; + $tipoCambio = $dbFicha = $dbFicha->tipo_cambio; + }else{ + if ($rubro == 4){ + if($per == "12/2016"){ + $cargos = 160; + }else{ + $cargos = 174; + } + }elseif($rubro == 1){ + $cargos = 400; + }elseif($rubro == 2){ + $cargos = 172; + }elseif($rubro == 3){ + $cargos = 175; + } + $tipoCambio = 5600; + } + + $participantes = Cabecera_encuesta::where('periodo', $periodo)->where('rubro_id', $rubro)->get(); + + $participantes = $participantes->map(function($item){ + return $item->empresa; + })->reject(function($item){ + if(!$item->listable){ + return $item; + } + })->count(); + + $club = $this->club($empresa->rubro_id); + return view('report.ficha')->with('dbEmpresa', $dbEmpresa) + ->with('cargos', $cargos) + ->with('periodo', $periodo) + ->with('club', $club) + ->with('tipoCambio', $tipoCambio) + ->with('locale', $locale) + ->with('participantes', $participantes); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function filter($id) + { + $empresa = Empresa::find($id); + $cargosRubros = Cargos_rubro::where('rubro_id', $empresa->rubro_id)->pluck('cargo_id'); + $nivelesId = array(); + foreach($cargosRubros as $cargoId){ + $cargo = Cargo::find($cargoId); + $nivelesId[] = $cargo->nivel_id; + } + if($this->getIdioma() == "en"){ + $dbNiveles = Nivel_en::whereIn('id', $nivelesId)->pluck('descripcion', 'id'); + $dbCargos = Cargo_en::orderBy('descripcion') + ->whereIn('id', $cargosRubros) + ->pluck('descripcion', 'id'); + }else{ + $dbNiveles = Nivel::whereIn('id', $nivelesId)->pluck('descripcion', 'id'); + $dbCargos = Cargo::orderBy('descripcion') + ->whereIn('id', $cargosRubros) + ->pluck('descripcion', 'id'); + } + $dbEmpresa = $id; + return view('report.filter')->with('dbNiveles', $dbNiveles)->with('dbCargos', $dbCargos)->with('dbEmpresa', $dbEmpresa); + } + + public function showCargosClub($id){ + $dbEmpresa = $id; + $empresa = Empresa::find($id); + $club = $this->club($empresa->rubro_id); + $rubro = $empresa->rubro_id; + $locale = $this->getIdioma(); + if(Session::has('periodo')){ + $per = Session::get('periodo'); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw("periodo = '". $per."'")->first(); + }else{ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $id.')')->first(); + } + $periodo = $dbEncuesta->periodo; // periodo de la encuesta actual + $empresasId = Empresa::where('rubro_id', $rubro)->pluck('id'); + $encuestasRubro = Cabecera_encuesta::whereIn('empresa_id', $empresasId)->where('periodo', $periodo)->pluck('id'); + $encuestasCargos = Encuestas_cargo::whereIn('cabecera_encuesta_id', $encuestasRubro)->whereNotNull('cargo_id')->get(); + + $cargosEmpresas = collect(); + foreach ($encuestasCargos as $encuestaCargo) { + if($encuestaCargo->detalleEncuestas){ + if($encuestaCargo->detalleEncuestas->cantidad_ocupantes > 0){ + $cargosEmpresas->push(["cargo"=> $encuestaCargo->cargo_id, "empresa"=>$encuestaCargo->cabeceraEncuestas->empresa_id]); + } + } + } + + + + $groupedCargosEmpresas = $cargosEmpresas->groupBy('cargo'); + + $cargosIds = $groupedCargosEmpresas->map(function($item, $key){ + if($item->groupBy('empresa')->count() > 1){ + return $key; + } + })->values()->reject(function($value, $key){ + return is_null($value); + })->sort(); + + $cargos = Cargos_rubro::where('rubro_id', $rubro) + ->whereIn('cargo_id', $cargosIds)->get(); + //$cargos = Cargos_rubro::where('rubro_id', $rubro)->get(); + $cargos = $cargos->map(function($item) use($locale){ + if($locale == "es"){ + $item['nivel_id'] = $item->cargo->nivel->id; + $item['descripcion'] = $item->cargo->descripcion; + }else{ + $item['nivel_id'] = $item->cargoEn->nivel->id; + $item['descripcion'] = $item->cargoEn->descripcion; + } + + return $item; + }); + $colNiveles = collect(); + foreach ($cargos as $key => $value) { + $colNiveles->push($value->cargo->nivel->id); + } + if($locale == "es"){ + $niveles = Nivel::whereIn('id', $colNiveles->unique())->orderBy('descripcion')->get(); + }else{ + $niveles = Nivel_en::whereIn('id', $colNiveles->unique())->orderBy('descripcion')->get(); + } + + return view('report.cargos_club')->with('dbEmpresa', $dbEmpresa) + ->with('club', $club) + ->with('niveles', $niveles) + ->with('cargos', $cargos); + } + + + public function cargoReport(Request $request){ + + return $this->cargoReportAll($request, "view"); + } + + public function cargoReportExcel(Request $request){ + + return $this->cargoReportAll($request, "excel"); + } + + public function cargoReportClubExcel(Request $request){ + ini_set('max_execution_time', 0); + // datos de la empresa del cliente + $dbEmpresa = Empresa::find($request->empresa_id); + // si la variable de sesion "periodo" está cargada (solo se carga con navieras) + if(Session::has('periodo')){ + $per = Session::get('periodo'); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id)->whereRaw("periodo = '". $per."'")->first(); + }else{ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $dbEmpresa->id.')')->first(); + } + // periodo de la encuesta actual (semestral para navieras) + $periodo = $dbEncuesta->periodo; + // rubro de la empresa del cliente + $rubro = $dbEmpresa->rubro_id; + // recupera los cargos del periodo para todos los que tengan homologación + $encuestasCargos = Encuestas_cargo::where('cabecera_encuesta_id', $dbEncuesta->id) + ->whereNotNull('cargo_id') + ->get(); + // variables de detalle para cada segmento + $detalleUniverso = collect(); + $detalleNacional = collect(); + $detalleInternacional = collect(); + // Procesamiento por cargo + foreach ($encuestasCargos as $encuestaCargo) { + $request->request->add(["cargo_id"=> $encuestaCargo->cargo->id]); + // procesamos el reporte + $respuesta = $this->cargoReportAll($request, "clubExcel", true); + // preparamos los datos para el array final del cargo + $itemArray = array( $encuestaCargo->descripcion, + $encuestaCargo->cargo->descripcion, + ); + $itemArrayNac = $itemArray; + $itemArrayInt = $itemArray; + // por cada item del detalle + foreach ($respuesta as $key => $item) { + //dd($item); + switch ($key) { + case 'detalle_universo': + $this->CargaDetalle($item, $itemArray); + break; + + case 'detalle_nacional': + $this->CargaDetalle($item, $itemArrayNac); + break; + case 'detalleInternacional': + $this->CargaDetalle($item, $itemArrayInt); + break; + } + + } + //dd($itemArray); + $detalleUniverso->push($itemArray); + $detalleNacional->push($itemArrayNac); + $detalleInternacional->push($itemArrayInt); + } + $filename = 'Resultados_'.$periodo; + + Excel::create($filename, function($excel) use($detalleUniverso, $detalleNacional, $detalleInternacional) { + $excel->sheet("universo", function($sheet) use($detalleUniverso){ + + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setPath(public_path('images/logo.jpg')); //your image path + $objDrawing->setCoordinates('A1'); + $objDrawing->setWidthAndHeight(304,60); + $objDrawing->setWorksheet($sheet); + + $sheet->cell('A5', function($cell){ + $cell->setValue('CARGO'); + }); + $sheet->mergeCells('A5:D5'); + $sheet->cells('A5:D5', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Header + $sheet->cell('E5', function($cell){ + $cell->setValue('SALARIO BASE'); + }); + $sheet->mergeCells('E5:J5'); + $sheet->cells('E5:J5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('VARIABLE ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Total Adicional Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Bono Anual + $sheet->cell('AC5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AI5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Efectivo Total Anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('COMPENSACION ANUAL TOTAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Comparativo Header + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BG5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BG5:BL5'); + $sheet->cells('BG5:BL5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + +/* + $sheet->cell('AI5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Base Comparativo Header + $sheet->cell('AO5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('AU5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + */ + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); + $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); + for ($i= 0; $i < 10; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + + } + /*for ($i= 0; $i < 8; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + }*/ + + $sheet->row(6, $cargoHeader); + //dd($detalleUniverso); + $sheet->rows($detalleUniverso); + + $sheet->cells('A6:BL6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); + + /*$sheet->cells('A6:AZ6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); */ + $sheet->setFreeze('A7'); + }); + // hoja nacional + $excel->sheet("nacional", function($sheet) use($detalleNacional){ + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setPath(public_path('images/logo.jpg')); //your image path + $objDrawing->setCoordinates('A1'); + $objDrawing->setWidthAndHeight(304,60); + $objDrawing->setWorksheet($sheet); + + $sheet->cell('A5', function($cell){ + $cell->setValue('CARGO'); + }); + $sheet->mergeCells('A5:D5'); + $sheet->cells('A5:D5', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Header + $sheet->cell('E5', function($cell){ + $cell->setValue('SALARIO BASE'); + }); + $sheet->mergeCells('E5:J5'); + $sheet->cells('E5:J5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('VARIABLE ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Total Adicional Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Bono Anual + $sheet->cell('AC5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + + $sheet->cell('AI5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Efectivo Total Anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Base Comparativo Header + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BG5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BG5:BL5'); + $sheet->cells('BG5:BL5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + $cells->setAlignment('center'); + }); + + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); + $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); + for ($i= 0; $i < 10; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + + } + + $sheet->row(6, $cargoHeader); + $sheet->cells('A6:BL6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); + + $sheet->rows($detalleNacional); + $sheet->setFreeze('A7'); + }); + // hoja internacional + $excel->sheet("internacional", function($sheet) use($detalleInternacional){ + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setPath(public_path('images/logo.jpg')); //your image path + $objDrawing->setCoordinates('A1'); + $objDrawing->setWidthAndHeight(304,60); + $objDrawing->setWorksheet($sheet); + + $sheet->cell('A5', function($cell){ + $cell->setValue('CARGO'); + }); + $sheet->mergeCells('A5:D5'); + $sheet->cells('A5:D5', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Header + $sheet->cell('E5', function($cell){ + $cell->setValue('SALARIO BASE'); + }); + $sheet->mergeCells('E5:J5'); + $sheet->cells('E5:J5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Efectivo Anual Garantizado + $sheet->cell('K5', function($cell){ + $cell->setValue('EFECTIVO ANUAL GARANTIZADO'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#388e3c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('VARIABLE ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Total Adicional Anual + $sheet->cell('W5', function($cell){ + $cell->setValue('TOTAL ADICIONAL ANUAL'); + }); + $sheet->mergeCells('W5:AB5'); + $sheet->cells('W5:AB5', function($cells){ + $cells->setBackground('#fbc02d'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Bono Anual + $sheet->cell('AC5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('AC5:AH5'); + $sheet->cells('AC5:AH5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Comision + $sheet->cell('AI5', function($cell){ + $cell->setValue('COMISION'); + }); + $sheet->mergeCells('AI5:AN5'); + $sheet->cells('AI5:AN5', function($cells){ + $cells->setBackground('#6a1b9a'); + $cells->setFontColor('#FFFFFF'); + $cells->setFontWeight("bold"); + $cells->setAlignment('center'); + }); + + // Salario Efectivo Total Anual + $sheet->cell('AO5', function($cell){ + $cell->setValue('EFECTIVO TOTAL ANUAL'); + }); + $sheet->mergeCells('AO5:AT5'); + $sheet->cells('AO5:AT5', function($cells){ + $cells->setBackground('#f57c00'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Comparativo Header + $sheet->cell('AU5', function($cell){ + $cell->setValue('SALARIO BASE COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('AU5:AZ5'); + $sheet->cells('AU5:AZ5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Variable Anual comp. + $sheet->cell('BA5', function($cell){ + $cell->setValue('VARIABLE ANUAL COMPARATIVO ORGANIZACION VS MERCADO'); + }); + $sheet->mergeCells('BA5:BF5'); + $sheet->cells('BA5:BF5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Salario Variable Anual comp. + $sheet->cell('BG5', function($cell){ + $cell->setValue('RATIO SALARIO BASE ANUAL / TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('BG5:BL5'); + $sheet->cells('BG5:BL5', function($cells){ + $cells->setBackground('#afb42b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); + $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); + for ($i= 0; $i < 10; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + + } + + $sheet->row(6, $cargoHeader); + + $sheet->rows($detalleInternacional); + + $sheet->cells('A6:BL6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); + $sheet->setFreeze('A7'); + }); + $excel->setActiveSheetIndex(0); + })->export('xlsx'); + } + + public function nivelReportClubExcel(Request $request){ + ini_set('max_execution_time', 0); + // periodo de la encuesta actual (semestral para navieras) + $periodo = $request->periodo; + // rubro de la empresa del cliente + $rubro = $request->rubro_id; + + $encuestasIDs = Cabecera_encuesta::where('periodo', $periodo) + ->where('rubro_id', $rubro) + ->pluck('id'); + // recupera los cargos del periodo para todos los que tengan homologación con niveles + $nivelesCargos = Detalle_encuestas_nivel::distinct() + ->whereIn('cabecera_encuesta_id', $encuestasIDs) + ->whereNotNull('cargo_oficial_id') + ->pluck('nivel_oficial_id'); + // variables de detalle para cada segmento + $detalleUniverso = collect(); + $detalleNacional = collect(); + $detalleInternacional = collect(); + + $detalleInternacional = collect(); + // Procesamiento por cargo + foreach ($nivelesCargos as $value) { + $request->request->add(["nivel_id"=> $value]); + // procesamos el reporte + $respuesta = $this->nivelReport($request, $encuestasIDs, true); + $nivel = Nivel::find($value); + // preparamos los datos para el array final del cargo + $itemArray = array( $nivel->descripcion, + $nivel->descripcion, + ); + $itemArrayNac = $itemArray; + $itemArrayInt = $itemArray; + // por cada item del detalle + foreach ($respuesta as $key => $item) { + + switch ($key) { + + case 'detalle_universo': + $this->cargaDetalleNivel($item, $itemArray); + break; + case 'detalle_nacional': + $this->cargaDetalleNivel($item, $itemArrayNac); + break; + case 'detalleInternacional': + $this->cargaDetalleNivel($item, $itemArrayInt); + break; + } + + } + + $detalleUniverso->push($itemArray); + $detalleNacional->push($itemArrayNac); + $detalleInternacional->push($itemArrayInt); + } + + + $filename = 'Resultados_Niveles'.$periodo; + + Excel::create($filename, function($excel) use($detalleUniverso, $detalleNacional, $detalleInternacional) { + //Excel::create($filename, function($excel) use($detalleNacional) { + $excel->sheet("universo", function($sheet) use($detalleUniverso){ + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setPath(public_path('images/logo.jpg')); //your image path + $objDrawing->setCoordinates('A1'); + $objDrawing->setWidthAndHeight(304,60); + $objDrawing->setWorksheet($sheet); + + $sheet->cell('A5', function($cell){ + $cell->setValue('NIVEL'); + }); + $sheet->mergeCells('A5:D5'); + $sheet->cells('A5:D5', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Header + $sheet->cell('E5', function($cell){ + $cell->setValue('SALARIO BASE'); + }); + $sheet->mergeCells('E5:J5'); + $sheet->cells('E5:J5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Bono Anual + $sheet->cell('K5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total efectivo anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#4a148c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); + $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); + for ($i= 0; $i < 3; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + + } + + $sheet->row(6, $cargoHeader); + $sheet->cells('A6:V6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); + + $sheet->rows($detalleUniverso); + $sheet->setFreeze('A7'); + + }); + // hoja nacional + $excel->sheet("nacional", function($sheet) use($detalleNacional){ + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setPath(public_path('images/logo.jpg')); //your image path + $objDrawing->setCoordinates('A1'); + $objDrawing->setWidthAndHeight(304,60); + $objDrawing->setWorksheet($sheet); + + $sheet->cell('A5', function($cell){ + $cell->setValue('NIVEL'); + }); + $sheet->mergeCells('A5:D5'); + $sheet->cells('A5:D5', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Header + $sheet->cell('E5', function($cell){ + $cell->setValue('SALARIO BASE'); + }); + $sheet->mergeCells('E5:J5'); + $sheet->cells('E5:J5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Bono Anual + $sheet->cell('K5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total efectivo anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#4a148c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); + $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); + for ($i= 0; $i < 3; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + + } + + $sheet->row(6, $cargoHeader); + $sheet->cells('A6:V6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); + + $sheet->rows($detalleNacional); + $sheet->setFreeze('A7'); + }); + // hoja internacional + $excel->sheet("internacional", function($sheet) use($detalleInternacional){ + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setPath(public_path('images/logo.jpg')); //your image path + $objDrawing->setCoordinates('A1'); + $objDrawing->setWidthAndHeight(304,60); + $objDrawing->setWorksheet($sheet); + + $sheet->cell('A5', function($cell){ + $cell->setValue('NIVEL'); + }); + $sheet->mergeCells('A5:D5'); + $sheet->cells('A5:D5', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + // Salario Base Header + $sheet->cell('E5', function($cell){ + $cell->setValue('SALARIO BASE'); + }); + $sheet->mergeCells('E5:J5'); + $sheet->cells('E5:J5', function($cells){ + $cells->setBackground('#0288d1'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Bono Anual + $sheet->cell('K5', function($cell){ + $cell->setValue('BONO ANUAL'); + }); + $sheet->mergeCells('K5:P5'); + $sheet->cells('K5:P5', function($cells){ + $cells->setBackground('#ffa000'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Total efectivo anual + $sheet->cell('Q5', function($cell){ + $cell->setValue('TOTAL EFECTIVO ANUAL'); + }); + $sheet->mergeCells('Q5:V5'); + $sheet->cells('Q5:V5', function($cells){ + $cells->setBackground('#4a148c'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + $itemsHeader = array("Mínimo", "25 Perc.", "Promedio", "Mediana", "75 Perc.", "Máximo"); + $cargoHeader = array("Cargo Company", "Oficial", "Ocupantes", "Casos"); + for ($i= 0; $i < 3; $i++) { + foreach ($itemsHeader as $key => $value) { + array_push($cargoHeader, $value); + } + + } + + $sheet->row(6, $cargoHeader); + $sheet->cells('A6:V6', function($cells){ + $cells->setBackground('#a7ffeb'); + }); + + $sheet->rows($detalleInternacional); + $sheet->setFreeze('A7'); + }); + $excel->setActiveSheetIndex(0); + })->export('xlsx'); + } + private function cargaDetalle($item, &$itemArray){ + $variableAnual = false; + $salarioEmpresa = 0; + $variableAnualEmp = 0; + //dd($item); + foreach ($item as $key => $value) { + switch ($value["Concepto"]) { + case "Comision": + $this->cargador($value, $itemArray, false); + break; + case Lang::get('reportReport.concept_salary'): + $this->cargador($value, $itemArray, true); + $salarioEmpresa = intval(str_replace(".", "", $value["Empresa"])); + break; + case Lang::get('reportReport.concept_annual_cash'): + $this->cargador($value, $itemArray, false); + break; + case Lang::get('reportReport.variable_pay'): + $variableAnual = true; + $this->cargador($value, $itemArray, false); + $variableAnualEmp = $value["Empresa"]; + break; + case Lang::get('reportReport.concept_total_incentives'): + $this->cargador($value, $itemArray, false); + break; + case Lang::get('reportReport.concept_bonus'): + $this->cargador($value, $itemArray, false); + break; + case Lang::get('reportReport.concept_total_compensation'): + $this->cargador($value, $itemArray, false); + break; + + } + } + //dd($item); + if(!$variableAnual){ + // agregamos 0 a los lugares de Variable Anual + $aux = array_slice($itemArray, 0, 16, true); + array_push($aux, 0,0,0,0,0,0); + $aux2 = array_merge($aux, array_slice($itemArray, 16)); + $itemArray = $aux2; + } + // comparativo salario base + if($itemArray[4] > 0){ + $compMinSal = round($salarioEmpresa/$itemArray[4] - 1, 2); + }else{ + $compMinSal = 0; + } + if($itemArray[5] > 0){ + $comp25PercSal = round($salarioEmpresa/$itemArray[5] - 1, 2); + }else{ + $comp25PercSal = 0; + } + if($itemArray[6] > 0){ + $compPromSal = round($salarioEmpresa/$itemArray[6] - 1, 2); + }else{ + $compPromSal = 0; + } + if($itemArray[7] > 0){ + $compMedSal = round($salarioEmpresa/$itemArray[7] - 1, 2); + }else{ + $compMedSal = 0; + } + + if($itemArray[8] > 0){ + $comp75PercSal = round($salarioEmpresa/$itemArray[8] - 1, 2); + }else{ + $comp75PercSal = 0; + } + if($itemArray[9] > 0){ + $compMaxSal = round($salarioEmpresa/$itemArray[9] - 1, 2); + }else{ + $compMaxSal = 0; + } + // comparativo variable anual + if($itemArray[16] > 0){ + $compMinVar = round($salarioEmpresa/$itemArray[16] - 1, 2); + }else{ + $compMinVar = 0; + } + if($itemArray[17] > 0){ + $comp25PercVar = round($salarioEmpresa/$itemArray[17] - 1 , 2); + }else{ + $comp25PercVar = 0; + } + if($itemArray[18] > 0){ + $compPromVar = round($salarioEmpresa/$itemArray[18] - 1 , 2); + }else{ + $compPromVar = 0; + } + if($itemArray[19] > 0){ + $compMedVar = round($salarioEmpresa/$itemArray[19] - 1, 2); + }else{ + $compMedVar = 0; + } + if($itemArray[20] > 0){ + $comp75PercVar = round($salarioEmpresa/$itemArray[20] - 1, 2); + }else{ + $comp75PercVar = 0; + } + if($itemArray[21] > 0){ + $compMaxVar = round($salarioEmpresa/$itemArray[21] - 1, 2); + }else{ + $compMaxVar = 0; + } + + if($itemArray[40] > 0){ + $ratioSalBaseTotalEfectivoMin = round(($itemArray[4]*12)/$itemArray[40], 2); + }else{ + $ratioSalBaseTotalEfectivoMin = 0; + } + if($itemArray[41] > 0){ + $ratioSalBaseTotalEfectivo25 = round(($itemArray[5]*12)/$itemArray[41], 2); + }else{ + $ratioSalBaseTotalEfectivo25 = 0; + } + if($itemArray[42] > 0){ + $ratioSalBaseTotalEfectivoProm = round(($itemArray[6]*12)/$itemArray[42], 2); + }else{ + $ratioSalBaseTotalEfectivoProm = 0; + } + if($itemArray[43] > 0){ + $ratioSalBaseTotalEfectivoMed = round(($itemArray[7]*12)/$itemArray[43], 2); + }else{ + $ratioSalBaseTotalEfectivoMed = 0; + } + if($itemArray[44] > 0){ + $ratioSalBaseTotalEfectivo75 = round(($itemArray[8]*12)/$itemArray[44], 2); + }else{ + $ratioSalBaseTotalEfectivo75 = 0; + } + if($itemArray[45] > 0){ + $ratioSalBaseTotalEfectivoMax = round(($itemArray[9]*12)/$itemArray[45], 2); + }else{ + $ratioSalBaseTotalEfectivoMax = 0; + } + + array_push( $itemArray, + $compMinSal, + $comp25PercSal, + $compPromSal, + $compMedSal, + $comp75PercSal, + $compMaxSal, + $compMinVar, + $comp25PercVar, + $compPromVar, + $compMedVar, + $comp75PercVar, + $compMaxVar, + $ratioSalBaseTotalEfectivoMin, + $ratioSalBaseTotalEfectivo25, + $ratioSalBaseTotalEfectivoProm, + $ratioSalBaseTotalEfectivoMed, + $ratioSalBaseTotalEfectivo75, + $ratioSalBaseTotalEfectivoMax); + + } + private function cargador($value, &$itemArray, $casos){ + if($casos){ + array_push($itemArray, $value["ocupantes"]); + array_push($itemArray, $value["Casos"]); + } + array_push($itemArray, $value["Min"]); + array_push($itemArray, $value["25 Percentil"]); + array_push($itemArray, round($value["Promedio"], 2)); + array_push($itemArray, $value["Mediana"]); + array_push($itemArray, $value["75 Percentil"]); + array_push($itemArray, $value["Max"]); + } + + + private function segmenter( &$collection, + $countCasosSeg, + $detalle, + $countCasos, + $countCasosGratif, + $countCasosAguinaldo, + //$countCasosBeneficios, + $countCasosBono, + $dbClienteEnc, + $rubro, + $segmento, + $dbCargo, + $muestraComision){ + if($rubro == 1 ){ // Bancos + $salariosBase = $detalle->where('salario_base', '>', '0')->pluck('salario_base'); + $salarioMin = $salariosBase->min(); + $salarioMax = $salariosBase->max(); + $salarioProm = $salariosBase->avg(); + $salarioMed = $this->median($salariosBase); + $salario25Per = $this->percentile(25,$salariosBase); + $salario75Per = $this->percentile(75, $salariosBase); + + // Salario Base y Anual + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_salary'), + $salarioMin, + $salarioMax, + $salarioProm, + $salarioMed, + $salario25Per, + $salario75Per, + $dbClienteEnc->salario_base, + $segmento, + $dbCargo); + + $salariosBaseAnual = $salariosBase->map(function($item){ + return $item * 12; + }); + + $salarioAnualMin = $salariosBaseAnual->min(); + $salarioAnualMax = $salariosBaseAnual->max(); + $salarioAnualProm = $salariosBaseAnual->avg(); + $salarioAnualMed = $this->median($salariosBaseAnual); + $salarioAnual25Per = $this->percentile(25,$salariosBaseAnual); + $salarioAnual75Per = $this->percentile(75, $salariosBaseAnual); + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_salary'), + $salarioAnualMin, + $salarioAnualMax, + $salarioAnualProm, + $salarioAnualMed, + $salarioAnual25Per, + $salarioAnual75Per, + $dbClienteEnc->salario_base * 12, + $segmento, + $dbCargo); + + // Gratificacion + $gratificaciones = $detalle->where('gratificacion', '>', '0')->pluck('gratificacion'); + $gratificacionMin = $gratificaciones->min(); + $gratificacionMax = $gratificaciones->max(); + $gratificacionProm = $gratificaciones->avg(); + $gratificacionMed = $this->median($gratificaciones); + $gratificacion25Per = $this->percentile(25, $gratificaciones); + $gratificacion75Per = $this->percentile(75, $gratificaciones); + + $this->pusher( $collection, + $countCasosGratif, + Lang::get('reportReport.concept_annual_gratif.'), + $gratificacionMin, + $gratificacionMax, + $gratificacionProm, + $gratificacionMed, + $gratificacion25Per, + $gratificacion75Per, + $dbClienteEnc->gratificacion, + $segmento, + $dbCargo); + + //Aguinaldo + $aguinaldos = $detalle->where('aguinaldo', '>', '0')->pluck('aguinaldo'); + $aguinaldoMin = $aguinaldos->min(); + $aguinaldoMax = $aguinaldos->max(); + $aguinaldoProm = $aguinaldos->avg(); + $aguinaldoMed = $this->median($aguinaldos); + $aguinaldo25Per = $this->percentile(25, $aguinaldos); + $aguinaldo75Per = $this->percentile(75, $aguinaldos); + + $this->pusher( $collection, + $countCasosAguinaldo, + Lang::get('reportReport.concept_13month'), + $aguinaldoMin, + $aguinaldoMax, + $aguinaldoProm, + $aguinaldoMed, + $aguinaldo25Per, + $aguinaldo75Per, + $dbClienteEnc->aguinaldo, + $segmento, + $dbCargo); + + // Efectivo Anual Garantizado + $detalle = $detalle->map(function($item){ + $item['efectivo_anual_garantizado'] = ($item['salario_base'] * 12) + + $item['aguinaldo'] + + $item['gratificacion']; + return $item; + }); + + $efectivoMin = $detalle->pluck('efectivo_anual_garantizado')->min(); + $efectivoMax = $detalle->pluck('efectivo_anual_garantizado')->max(); + $efectivoProm = $detalle->pluck('efectivo_anual_garantizado')->avg(); + $efectivoMed = $this->median($detalle->pluck('efectivo_anual_garantizado')); + $efectivo25Per = $this->percentile(25, $detalle->pluck('efectivo_anual_garantizado')); + $efectivo75Per = $this->percentile(75, $detalle->pluck('efectivo_anual_garantizado')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $efectivoEmpresa = $found->efectivo_anual_garantizado; + }else{ + $efectivoEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_cash'), + $efectivoMin, + $efectivoMax, + $efectivoProm, + $efectivoMed, + $efectivo25Per, + $efectivo75Per, + $efectivoEmpresa, + $segmento, + $dbCargo); + + + //Adicional + $casosAdicionalesBancos = $detalle->where('adicionales_bancos', '>', '0')->unique('cabecera_encuesta_id')->count(); + $adicionalesBancos = $detalle->where('adicionales_bancos', '>', '0')->pluck('adicionales_bancos'); + $adicionalesMin = $adicionalesBancos->min(); + $adicionalesMax = $adicionalesBancos->max(); + $adicionalesProm = $adicionalesBancos->avg(); + $adicionalesMed = $this->median($adicionalesBancos); + $adicionales25Per = $this->percentile(25, $adicionalesBancos); + $adicionales75Per = $this->percentile(75, $adicionalesBancos); + + $this->pusher( $collection, + $casosAdicionalesBancos, + Lang::get('reportReport.concept_total_incentives'), + $adicionalesMin * 12, + $adicionalesMax * 12, + $adicionalesProm * 12, + $adicionalesMed * 12, + $adicionales25Per * 12, + $adicionales75Per * 12, + $dbClienteEnc->adicionales_bancos * 12, + $segmento, + $dbCargo); + + + //Bono + $bonos = $detalle->where('bono_anual', '>', '0')->pluck('bono_anual'); + $bonoMin = $bonos->min(); + $bonoMax = $bonos->max(); + $bonoProm = $bonos->avg(); + $bonoMed = $this->median($bonos); + $bono25Per = $this->percentile(25, $bonos); + $bono75Per = $this->percentile(75, $bonos); + + $this->pusher( $collection, + $countCasosBono, + Lang::get('reportReport.concept_bonus'), + $bonoMin, + $bonoMax, + $bonoProm, + $bonoMed, + $bono25Per, + $bono75Per, + $dbClienteEnc->bono_anual, + $segmento, + $dbCargo); + + if($muestraComision){ + //Comisión + $countCasosComision = $detalle->where('comision', '>', '0')->unique('cabecera_encuesta_id')->count(); + $comision = $detalle->where('comision', '>', '0')->pluck('comision'); + $comisionMin = $comision->min(); + $comisionMax = $comision->max(); + $comisionProm = $comision->avg(); + $comisionMed = $this->median($comision); + $comision25Per = $this->percentile(25, $comision); + $comision75Per = $this->percentile(75, $comision); + + $this->pusher( $collection, + $countCasosComision, + //Lang::get('reportReport.concept_bonus'), + "Comision", + $comisionMin, + $comisionMax, + $comisionProm, + $comisionMed, + $comision25Per, + $comision75Per, + $dbClienteEnc->comision, + $segmento, + $dbCargo); + + } + + + //Aguinaldo Impactado + $aguinaldoImpMin = 0; + $aguinaldoImpMax = 0; + $aguinaldoImpProm = 0; + $aguinaldoImpMed = 0; + $aguinaldoImp25Per = 0; + $aguinaldoImp75Per = 0; + $aguinaldoImpEmpresa = 0; + + $detalle = $detalle->map(function($item){ + $item['aguinaldo_impactado'] = (($item['salario_base'] * 12) + + $item['gratificacion'] + + $item['bono_anual'] + + $item['adicionales_bancos'])/12; + return $item; + }); + + $aguinaldoImpMin = $detalle->pluck('aguinaldo_impactado')->min(); + $aguinaldoImpMax = $detalle->pluck('aguinaldo_impactado')->max(); + $aguinaldoImpProm = $detalle->pluck('aguinaldo_impactado')->avg(); + $aguinaldoImpMed = $this->median($detalle->pluck('aguinaldo_impactado')); + $aguinaldoImp25Per = $this->percentile(25, $detalle->pluck('aguinaldo_impactado')); + $aguinaldoImp75Per = $this->percentile(75, $detalle->pluck('aguinaldo_impactado')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $aguinaldoImpEmpresa = $found->aguinaldo_impactado; + }else{ + $aguinaldoImpEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_13month_impacted'), + $aguinaldoImpMin, + $aguinaldoImpMax, + $aguinaldoImpProm, + $aguinaldoImpMed, + $aguinaldoImp25Per, + $aguinaldoImp75Per, + $aguinaldoImpEmpresa, + $segmento, + $dbCargo); + + //Total Compensación Efectiva anual + $detalle = $detalle->map(function($item){ + $item['total_comp_anual'] = ($item['salario_base'] * 12) + + $item['gratificacion'] + + $item['bono_anual'] + + $item['adicionales_bancos']*12+ + $item['aguinaldo']; + return $item; + }); + + $totalCompAnualMin = $detalle->pluck('total_comp_anual')->min(); + $totalCompAnualMax = $detalle->pluck('total_comp_anual')->max(); + $totalCompAnualProm = $detalle->pluck('total_comp_anual')->avg(); + $totalCompAnualMed = $this->median($detalle->pluck('total_comp_anual')); + $totalCompAnual25Per = $this->percentile(25, $detalle->pluck('total_comp_anual')); + $totalCompAnual75Per = $this->percentile(75, $detalle->pluck('total_comp_anual')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $totalCompAnualEmpresa = $found->total_comp_anual; + }else{ + $totalCompAnualEmpresa = 0; + } + + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_total_compensation'), + $totalCompAnualMin, + $totalCompAnualMax, + $totalCompAnualProm, + $totalCompAnualMed, + $totalCompAnual25Per, + $totalCompAnual75Per, + $totalCompAnualEmpresa, + $segmento, + $dbCargo); + + }elseif ($rubro == 4) { // Navieras + // Salario Base + $salariosBase = $detalle->where('salario_base', '>', '0')->pluck('salario_base'); + $salarioMin = $salariosBase->min(); + $salarioMax = $salariosBase->max(); + $salarioProm = $salariosBase->avg(); + $salarioMed = $this->median($salariosBase); + $salario25Per = $this->percentile(25,$salariosBase); + $salario75Per = $this->percentile(75, $salariosBase); + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_salary'), + $salarioMin, + $salarioMax, + $salarioProm, + $salarioMed, + $salario25Per, + $salario75Per, + $dbClienteEnc->salario_base, + $segmento, + $dbCargo); + // Salario Base Anual + $salariosBaseAnual = $salariosBase->map(function($item){ + return $item * 12; + }); + + $salarioAnualMin = $salariosBaseAnual->min(); + $salarioAnualMax = $salariosBaseAnual->max(); + $salarioAnualProm = $salariosBaseAnual->avg(); + $salarioAnualMed = $this->median($salariosBaseAnual); + $salarioAnual25Per = $this->percentile(25,$salariosBaseAnual); + $salarioAnual75Per = $this->percentile(75, $salariosBaseAnual); + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_salary'), + $salarioAnualMin, + $salarioAnualMax, + $salarioAnualProm, + $salarioAnualMed, + $salarioAnual25Per, + $salarioAnual75Per, + $dbClienteEnc->salario_base * 12, + $segmento, + $dbCargo); + //Aguinaldo + $aguinaldos = $detalle->where('aguinaldo', '>', '0')->pluck('aguinaldo'); + $aguinaldoMin = $aguinaldos->min(); + $aguinaldoMax = $aguinaldos->max(); + $aguinaldoProm = $aguinaldos->avg(); + $aguinaldoMed = $this->median($aguinaldos); + $aguinaldo25Per = $this->percentile(25, $aguinaldos); + $aguinaldo75Per = $this->percentile(75, $aguinaldos); + + $this->pusher( $collection, + $countCasosAguinaldo, + Lang::get('reportReport.concept_13month'), + $aguinaldoMin, + $aguinaldoMax, + $aguinaldoProm, + $aguinaldoMed, + $aguinaldo25Per, + $aguinaldo75Per, + $dbClienteEnc->aguinaldo, + $segmento, + $dbCargo); + + // Efectivo Anual Garantizado + $detalle = $detalle->map(function($item){ + $item['efectivo_anual_garantizado'] = ($item['salario_base'] * 12) + + $item['aguinaldo']; + return $item; + }); + + $efectivoMin = $detalle->pluck('efectivo_anual_garantizado')->min(); + $efectivoMax = $detalle->pluck('efectivo_anual_garantizado')->max(); + $efectivoProm = $detalle->pluck('efectivo_anual_garantizado')->avg(); + $efectivoMed = $this->median($detalle->pluck('efectivo_anual_garantizado')); + $efectivo25Per = $this->percentile(25, $detalle->pluck('efectivo_anual_garantizado')); + $efectivo75Per = $this->percentile(75, $detalle->pluck('efectivo_anual_garantizado')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $efectivoEmpresa = $found->efectivo_anual_garantizado; + }else{ + $efectivoEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_cash'), + $efectivoMin, + $efectivoMax, + $efectivoProm, + $efectivoMed, + $efectivo25Per, + $efectivo75Per, + $efectivoEmpresa, + $segmento, + $dbCargo); + + + // Variable Anual + $plusRendimiento = $detalle->where('plus_rendimiento', '>', '0')->pluck('plus_rendimiento'); + $plusMin = $plusRendimiento->min(); + $plusMax = $plusRendimiento->max(); + $plusProm = $plusRendimiento->avg(); + $plusMed = $this->median($plusRendimiento); + $plus25Per = $this->percentile(25,$plusRendimiento); + $plus75Per = $this->percentile(75, $plusRendimiento); + $countCasosPlus = $detalle->where('plus_rendimiento', '>', '0')->unique('cabecera_encuesta_id')->count(); + $this->pusher( $collection, + $countCasosPlus, + Lang::get('reportReport.concept_variable_pay'), + $plusMin, + $plusMax, + $plusProm, + $plusMed, + $plus25Per, + $plus75Per, + $dbClienteEnc->plus_rendimiento, + $segmento, + $dbCargo); + + // Adicional Amarre + $adicionalAmarre = $detalle->where('adicional_amarre', '>', '0')->pluck('adicional_amarre'); + $amarreMin = $adicionalAmarre->min(); + $amarreMax = $adicionalAmarre->max(); + $amarreProm = $adicionalAmarre->avg(); + $amarreMed = $this->median($adicionalAmarre); + $amarre25Per = $this->percentile(25,$adicionalAmarre); + $amarre75Per = $this->percentile(75, $adicionalAmarre); + $countCasosAmarre = $detalle->where('adicional_amarre', '>', '0')->unique('cabecera_encuesta_id')->count(); + $this->pusher( $collection, + $countCasosAmarre, + Lang::get('reportReport.concept_mooring'), + $amarreMin, + $amarreMax, + $amarreProm, + $amarreMed, + $amarre25Per, + $amarre75Per, + $dbClienteEnc->adicional_amarre, + $segmento, + $dbCargo); + + + // Adicional Tipo de Combustible + $adicionalTipoCombustible = $detalle->where('adicional_tipo_combustible', '>', '0')->pluck('adicional_tipo_combustible'); + $TipoCombustibleMin = $adicionalTipoCombustible->min(); + $TipoCombustibleMax = $adicionalTipoCombustible->max(); + $TipoCombustibleProm = $adicionalTipoCombustible->avg(); + $TipoCombustibleMed = $this->median($adicionalTipoCombustible); + $TipoCombustible25Per = $this->percentile(25,$adicionalTipoCombustible); + $TipoCombustible75Per = $this->percentile(75, $adicionalTipoCombustible); + $countCasosTipoCombustible = $detalle->where('adicional_tipo_combustible', '>', '0')->unique('cabecera_encuesta_id')->count(); + $this->pusher( $collection, + $countCasosTipoCombustible, + Lang::get('reportReport.concept_fuel_type'), + $TipoCombustibleMin, + $TipoCombustibleMax, + $TipoCombustibleProm, + $TipoCombustibleMed, + $TipoCombustible25Per, + $TipoCombustible75Per, + $dbClienteEnc->adicional_tipo_combustible, + $segmento, + $dbCargo); + + // Adicional por disponiblidad/embarque + $adicionalEmbarque = $detalle->where('adicional_embarque', '>', '0')->pluck('adicional_embarque'); + $embarqueMin = $adicionalEmbarque->min(); + $embarqueMax = $adicionalEmbarque->max(); + $embarqueProm = $adicionalEmbarque->avg(); + $embarqueMed = $this->median($adicionalEmbarque); + $embarque25Per = $this->percentile(25,$adicionalEmbarque); + $embarque75Per = $this->percentile(75, $adicionalEmbarque); + $countCasosEmbarque = $detalle->where('adicional_embarque', '>', '0')->unique('cabecera_encuesta_id')->count(); + $this->pusher( $collection, + $countCasosEmbarque, + Lang::get('reportReport.concept_shipping'), + $embarqueMin, + $embarqueMax, + $embarqueProm, + $embarqueMed, + $embarque25Per, + $embarque75Per, + $dbClienteEnc->adicional_embarque, + $segmento, + $dbCargo); + + // Adicional Carga + $adicionalCarga = $detalle->where('adicional_carga', '>', '0')->pluck('adicional_carga'); + $cargaMin = $adicionalCarga->min(); + $cargaMax = $adicionalCarga->max(); + $cargaProm = $adicionalCarga->avg(); + $cargaMed = $this->median($adicionalCarga); + $carga25Per = $this->percentile(25,$adicionalCarga); + $carga75Per = $this->percentile(75, $adicionalCarga); + $countCasosCarga = $detalle->where('adicional_carga', '>', '0')->unique('cabecera_encuesta_id')->count(); + $this->pusher( $collection, + $countCasosCarga, + Lang::get('reportReport.concept_load'), + $cargaMin, + $cargaMax, + $cargaProm, + $cargaMed, + $carga25Per, + $carga75Per, + $dbClienteEnc->adicional_carga, + $segmento, + $dbCargo); + + // Total Adicional + $casosAdicionales = collect([$countCasosAmarre, $countCasosTipoCombustible, $countCasosEmbarque, $countCasosCarga])->max(); + $adicionalAnual = $detalle->map(function($item){ + $item['total_adicional_anual'] = $item['adicional_amarre'] + + $item['adicional_tipo_combustible']+ + $item['adicional_embarque']+ + $item['adicional_carga']; + return $item; + }); + + $adicionalAnual = $adicionalAnual->where('total_adicional_anual', '>', 0); + $totalAdicionalMin = $adicionalAnual->pluck('total_adicional_anual')->min(); + $totalAdicionalMax = $adicionalAnual->pluck('total_adicional_anual')->max(); + $totalAdicionalProm = $adicionalAnual->pluck('total_adicional_anual')->avg(); + $totalAdicionalMed = $this->median($adicionalAnual->pluck('total_adicional_anual')); + $totalAdicional25Per = $this->percentile(25, $adicionalAnual->pluck('total_adicional_anual')); + $totalAdicional75Per = $this->percentile(75, $adicionalAnual->pluck('total_adicional_anual')); + + $found = $adicionalAnual->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $totalAdicionalEmpresa = $found->total_adicional_anual; + }else{ + $totalAdicionalEmpresa = 0; + } + + $this->pusher( $collection, + $casosAdicionales, + Lang::get('reportReport.concept_total_incentives'), + $totalAdicionalMin, + $totalAdicionalMax, + $totalAdicionalProm, + $totalAdicionalMed, + $totalAdicional25Per, + $totalAdicional75Per, + $totalAdicionalEmpresa, + $segmento, + $dbCargo); + + //Bono + $bonos = $detalle->where('bono_anual', '>', '0')->pluck('bono_anual'); + $bonoMin = $bonos->min(); + $bonoMax = $bonos->max(); + $bonoProm = $bonos->avg(); + $bonoMed = $this->median($bonos); + $bono25Per = $this->percentile(25, $bonos); + $bono75Per = $this->percentile(75, $bonos); + + $this->pusher( $collection, + $countCasosBono, + Lang::get('reportReport.concept_bonus'), + $bonoMin, + $bonoMax, + $bonoProm, + $bonoMed, + $bono25Per, + $bono75Per, + $dbClienteEnc->bono_anual, + $segmento, + $dbCargo); + + if($muestraComision){ + //Comisión + $countCasosComision = $detalle->where('comision', '>', '0')->unique('cabecera_encuesta_id')->count(); + $comision = $detalle->where('comision', '>', '0')->pluck('comision'); + $comisionMin = $comision->min(); + $comisionMax = $comision->max(); + $comisionProm = $comision->avg(); + $comisionMed = $this->median($comision); + $comision25Per = $this->percentile(25, $comision); + $comision75Per = $this->percentile(75, $comision); + + $this->pusher( $collection, + $countCasosComision, + //Lang::get('reportReport.concept_bonus'), + "Comision", + $comisionMin, + $comisionMax, + $comisionProm, + $comisionMed, + $comision25Per, + $comision75Per, + $dbClienteEnc->comision, + $segmento, + $dbCargo); + + } + + // Efectivo Anual Garantizado + $detalle = $detalle->map(function($item){ + $item['efectivo_total_anual'] = $item['efectivo_anual_garantizado'] + + $item['plus_rendimiento']+ + $item['total_adicional_anual']+ + $item['bono_anual']; + return $item; + }); + + $efectivoTotalMin = $detalle->pluck('efectivo_total_anual')->min(); + $efectivoTotalMax = $detalle->pluck('efectivo_total_anual')->max(); + $efectivoTotalProm = $detalle->pluck('efectivo_total_anual')->avg(); + $efectivoTotalMed = $this->median($detalle->pluck('efectivo_total_anual')); + $efectivoTotal25Per = $this->percentile(25, $detalle->pluck('efectivo_total_anual')); + $efectivoTotal75Per = $this->percentile(75, $detalle->pluck('efectivo_total_anual')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $efectivoTotalEmpresa = $found->efectivo_total_anual; + }else{ + $efectivoTotalEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_cash_total'), + $efectivoTotalMin, + $efectivoTotalMax, + $efectivoTotalProm, + $efectivoTotalMed, + $efectivoTotal25Per, + $efectivoTotal75Per, + $efectivoTotalEmpresa, + $segmento, + $dbCargo); + + + //Beneficios + $beneficiosNavieras = $detalle->where('beneficios_navieras', '>', '0')->pluck('beneficios_navieras'); + //dd($detalle->where('beneficios_navieras', 1)); + $beneficiosMin = $beneficiosNavieras->min(); + $beneficiosMax = $beneficiosNavieras->max(); + $beneficiosProm = $beneficiosNavieras->avg(); + $beneficiosMed = $this->median($beneficiosNavieras); + $beneficios25Per = $this->percentile(25, $beneficiosNavieras); + $beneficios75Per = $this->percentile(75, $beneficiosNavieras); + $casosBeneficiosNavieras = $detalle->where('beneficios_navieras', '>', '0')->unique('cabecera_encuesta_id')->count(); + $this->pusher( $collection, + $casosBeneficiosNavieras, + Lang::get('reportReport.concept_total_benefits'), + $beneficiosMin * 12, + $beneficiosMax * 12, + $beneficiosProm * 12, + $beneficiosMed * 12, + $beneficios25Per * 12, + $beneficios75Per * 12, + $dbClienteEnc->beneficios_bancos * 12, + $segmento, + $dbCargo); + + + + + //Total Compensación anual + $detalle = $detalle->map(function($item){ + $item['total_comp_anual'] = $item['efectivo_total_anual'] + + $item['beneficios_navieras']*12; + return $item; + }); + + $totalCompAnualMin = $detalle->pluck('total_comp_anual')->min(); + $totalCompAnualMax = $detalle->pluck('total_comp_anual')->max(); + $totalCompAnualProm = $detalle->pluck('total_comp_anual')->avg(); + $totalCompAnualMed = $this->median($detalle->pluck('total_comp_anual')); + $totalCompAnual25Per = $this->percentile(25, $detalle->pluck('total_comp_anual')); + $totalCompAnual75Per = $this->percentile(75, $detalle->pluck('total_comp_anual')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $totalCompAnualEmpresa = $found->total_comp_anual; + }else{ + $totalCompAnualEmpresa = 0; + } + + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_total_compensation'), + $totalCompAnualMin, + $totalCompAnualMax, + $totalCompAnualProm, + $totalCompAnualMed, + $totalCompAnual25Per, + $totalCompAnual75Per, + $totalCompAnualEmpresa, + $segmento, + $dbCargo); + }else{ // Los otros rubros son iguales + // Salario Base + $salariosBase = $detalle->where('salario_base', '>', '0')->pluck('salario_base'); + $salarioMin = $salariosBase->min(); + $salarioMax = $salariosBase->max(); + $salarioProm = $salariosBase->avg(); + $salarioMed = $this->median($salariosBase); + $salario25Per = $this->percentile(25,$salariosBase); + $salario75Per = $this->percentile(75, $salariosBase); + //dd($dbClienteEnc); + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_salary'), + $salarioMin, + $salarioMax, + $salarioProm, + $salarioMed, + $salario25Per, + $salario75Per, + $dbClienteEnc->salario_base, + $segmento, + $dbCargo); + // Salario Base Anual + $salariosBaseAnual = $salariosBase->map(function($item){ + return $item * 12; + }); + + $salarioAnualMin = $salariosBaseAnual->min(); + $salarioAnualMax = $salariosBaseAnual->max(); + $salarioAnualProm = $salariosBaseAnual->avg(); + $salarioAnualMed = $this->median($salariosBaseAnual); + $salarioAnual25Per = $this->percentile(25,$salariosBaseAnual); + $salarioAnual75Per = $this->percentile(75, $salariosBaseAnual); + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_salary'), + $salarioAnualMin, + $salarioAnualMax, + $salarioAnualProm, + $salarioAnualMed, + $salarioAnual25Per, + $salarioAnual75Per, + $dbClienteEnc->salario_base * 12, + $segmento, + $dbCargo); + // Gratificacion + $gratificaciones = $detalle->where('gratificacion', '>', '0')->pluck('gratificacion'); + $gratificacionMin = $gratificaciones->min(); + $gratificacionMax = $gratificaciones->max(); + $gratificacionProm = $gratificaciones->avg(); + $gratificacionMed = $this->median($gratificaciones); + $gratificacion25Per = $this->percentile(25, $gratificaciones); + $gratificacion75Per = $this->percentile(75, $gratificaciones); + + $this->pusher( $collection, + $countCasosGratif, + Lang::get('reportReport.concept_annual_gratif.'), + $gratificacionMin, + $gratificacionMax, + $gratificacionProm, + $gratificacionMed, + $gratificacion25Per, + $gratificacion75Per, + $dbClienteEnc->gratificacion, + $segmento, + $dbCargo); + + //Aguinaldo + $aguinaldos = $detalle->where('aguinaldo', '>', '0')->pluck('aguinaldo'); + $aguinaldoMin = $aguinaldos->min(); + $aguinaldoMax = $aguinaldos->max(); + $aguinaldoProm = $aguinaldos->avg(); + $aguinaldoMed = $this->median($aguinaldos); + $aguinaldo25Per = $this->percentile(25, $aguinaldos); + $aguinaldo75Per = $this->percentile(75, $aguinaldos); + + $this->pusher( $collection, + $countCasosAguinaldo, + Lang::get('reportReport.concept_13month'), + $aguinaldoMin, + $aguinaldoMax, + $aguinaldoProm, + $aguinaldoMed, + $aguinaldo25Per, + $aguinaldo75Per, + $dbClienteEnc->aguinaldo, + $segmento, + $dbCargo); + + // Efectivo Anual Garantizado + + $detalle = $detalle->map(function($item){ + $item['efectivo_anual_garantizado'] = ($item['salario_base'] * 12) + + $item['gratificacion']+ + $item['aguinaldo']; + return $item; + }); + /*if($segmento == "nacional"){ + dd($detalle); + }*/ + + + $efectivoMin = $detalle->pluck('efectivo_anual_garantizado')->min(); + $efectivoMax = $detalle->pluck('efectivo_anual_garantizado')->max(); + $efectivoProm = $detalle->pluck('efectivo_anual_garantizado')->avg(); + $efectivoMed = $this->median($detalle->pluck('efectivo_anual_garantizado')); + $efectivo25Per = $this->percentile(25, $detalle->pluck('efectivo_anual_garantizado')); + $efectivo75Per = $this->percentile(75, $detalle->pluck('efectivo_anual_garantizado')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $efectivoEmpresa = $found->efectivo_anual_garantizado; + }else{ + $efectivoEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_cash'), + $efectivoMin, + $efectivoMax, + $efectivoProm, + $efectivoMed, + $efectivo25Per, + $efectivo75Per, + $efectivoEmpresa, + $segmento, + $dbCargo); + + //Adicional + $countCasosAdicionales = $detalle->where('adicionales_resto', '>', '0')->unique('cabecera_encuesta_id')->count(); + $adicionales = $detalle->where('adicionales_resto', '>', '0')->pluck('adicionales_resto'); + $adicionalesMin = $adicionales->min(); + $adicionalesMax = $adicionales->max(); + $adicionalesProm = $adicionales->avg(); + $adicionalesMed = $this->median($adicionales); + $adicionales25Per = $this->percentile(25, $adicionales); + $adicionales75Per = $this->percentile(75, $adicionales); + + $this->pusher( $collection, + $countCasosAdicionales, + Lang::get('reportReport.concept_total_additional'), + $adicionalesMin * 12, + $adicionalesMax * 12, + $adicionalesProm * 12, + $adicionalesMed * 12, + $adicionales25Per * 12, + $adicionales75Per * 12, + $dbClienteEnc->adicionales_resto * 12, + $segmento, + $dbCargo); + + //Bono + $bonos = $detalle->where('bono_anual', '>', '0')->pluck('bono_anual'); + $bonoMin = $bonos->min(); + $bonoMax = $bonos->max(); + $bonoProm = $bonos->avg(); + $bonoMed = $this->median($bonos); + $bono25Per = $this->percentile(25, $bonos); + $bono75Per = $this->percentile(75, $bonos); + + $this->pusher( $collection, + $countCasosBono, + Lang::get('reportReport.concept_bonus'), + $bonoMin, + $bonoMax, + $bonoProm, + $bonoMed, + $bono25Per, + $bono75Per, + $dbClienteEnc->bono_anual, + $segmento, + $dbCargo); + + + if($muestraComision){ + //Comisión + $countCasosComision = $detalle->where('comision', '>', '0')->unique('cabecera_encuesta_id')->count(); + $comision = $detalle->where('comision', '>', '0')->pluck('comision'); + $comisionMin = $comision->min(); + $comisionMax = $comision->max(); + $comisionProm = $comision->avg(); + $comisionMed = $this->median($comision); + $comision25Per = $this->percentile(25, $comision); + $comision75Per = $this->percentile(75, $comision); + + $this->pusher( $collection, + $countCasosComision, + //Lang::get('reportReport.concept_bonus'), + "Comision", + $comisionMin * 12, + $comisionMax * 12, + $comisionProm * 12, + $comisionMed * 12, + $comision25Per * 12, + $comision75Per * 12, + $dbClienteEnc->comision * 12, + $segmento, + $dbCargo); + + } + + // Efectivo Total Anual + $detalle = $detalle->map(function($item){ + $item['efectivo_total_anual'] = $item['efectivo_anual_garantizado'] + + $item['comision']*12+ + $item['adicionales_resto']*12+ + $item['bono_anual']; + return $item; + }); + + $efectivoTotalMin = $detalle->pluck('efectivo_total_anual')->min(); + $efectivoTotalMax = $detalle->pluck('efectivo_total_anual')->max(); + $efectivoTotalProm = $detalle->pluck('efectivo_total_anual')->avg(); + $efectivoTotalMed = $this->median($detalle->pluck('efectivo_total_anual')); + $efectivoTotal25Per = $this->percentile(25, $detalle->pluck('efectivo_total_anual')); + $efectivoTotal75Per = $this->percentile(75, $detalle->pluck('efectivo_total_anual')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $efectivoTotalEmpresa = $found->efectivo_total_anual; + }else{ + $efectivoTotalEmpresa = 0; + } + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_annual_cash_total'), + $efectivoTotalMin, + $efectivoTotalMax, + $efectivoTotalProm, + $efectivoTotalMed, + $efectivoTotal25Per, + $efectivoTotal75Per, + $efectivoTotalEmpresa, + $segmento, + $dbCargo); + + //Beneficios + $countCasosBeneficios = $detalle->where('beneficios_resto', '>', '0')->unique('cabecera_encuesta_id')->count(); + $beneficiosResto = $detalle->where('beneficios_resto', '>', '0')->pluck('beneficios_resto'); + $beneficiosMin = $beneficiosResto->min(); + $beneficiosMax = $beneficiosResto->max(); + $beneficiosProm = $beneficiosResto->avg(); + $beneficiosMed = $this->median($beneficiosResto); + $beneficios25Per = $this->percentile(25, $beneficiosResto); + $beneficios75Per = $this->percentile(75, $beneficiosResto); + + $this->pusher( $collection, + $countCasosBeneficios, + Lang::get('reportReport.concept_total_benefits'), + $beneficiosMin * 12, + $beneficiosMax * 12, + $beneficiosProm * 12, + $beneficiosMed * 12, + $beneficios25Per * 12, + $beneficios75Per * 12, + $dbClienteEnc->beneficios_resto * 12, + $segmento, + $dbCargo); + + //Total Compensación anual + $detalle = $detalle->map(function($item){ +/* if($item->beneficios_resto > 0){ + dd($item->efectivo_total_anual, $item->beneficios_resto*12); + } +*/ + $item['total_comp_anual'] = $item['efectivo_total_anual'] + + $item['beneficios_resto'] * 12; + return $item; + }); + $totalCompAnualMin = $detalle->pluck('total_comp_anual')->min(); + $totalCompAnualMax = $detalle->pluck('total_comp_anual')->max(); + $totalCompAnualProm = $detalle->pluck('total_comp_anual')->avg(); + $totalCompAnualMed = $this->median($detalle->pluck('total_comp_anual')); + $totalCompAnual25Per = $this->percentile(25, $detalle->pluck('total_comp_anual')); + $totalCompAnual75Per = $this->percentile(75, $detalle->pluck('total_comp_anual')); + + $found = $detalle->where('cabecera_encuesta_id', $dbClienteEnc->cabecera_encuesta_id) + ->first(); + if($found){ + $totalCompAnualEmpresa = $found->total_comp_anual; + }else{ + $totalCompAnualEmpresa = 0; + } + + + + + $this->pusher( $collection, + $countCasos, + Lang::get('reportReport.concept_total_compensation'), + $totalCompAnualMin, + $totalCompAnualMax, + $totalCompAnualProm, + $totalCompAnualMed, + $totalCompAnual25Per, + $totalCompAnual75Per, + $totalCompAnualEmpresa, + $segmento, + $dbCargo); + + } + + } + private function pusher(&$collection, $casos, $concepto, $min, $max, $prom, $med, $per25, $per75, $empresa, $segmento, $dbCargo){ + if($casos >= 4){ + $collection->push([ "concepto"=> $concepto, + "casos"=> $casos, + "min"=>$min, + "max"=>$max, + "prom"=>$prom, + "med"=>$med, + "per25"=>$per25, + "per75"=> $per75, + "empresa"=>$empresa, + "segmento"=>$segmento + ]); + }elseif($casos <= 3 and $casos > 1){ + $collection->push([ "concepto"=> $concepto, + "casos"=> $casos, + "min"=>"", + "max"=>"", + "prom"=>$prom, + "med"=>"", + "per25"=>$per25, + "per75"=> $per75, + "empresa"=>$empresa, + "segmento"=>$segmento + ]); + + }elseif ($casos <= 1) { + if($dbCargo->is_temporal == '1'){ + $collection->push([ "concepto"=> $concepto, + "casos"=> $casos, + "min"=>$min, + "max"=>$max, + "prom"=>$prom, + "med"=>$med, + "per25"=>$per25, + "per75"=> $per75, + "empresa"=>$empresa, + "segmento"=>$segmento + ]); + }else{ + $collection->push([ "concepto"=> $concepto, + "casos"=> $casos, + "min"=>"", + "max"=>"", + "prom"=>"", + "med"=>"", + "per25"=>"", + "per75"=>"", + "empresa"=>"", + "segmento"=>$segmento + ]); + } + } + } + + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + return redirect()->route('home'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } + + public function resultados(){ + //$dbData = Cabecera_encuesta::select(DB::Raw('distinct periodo'))->get(); + dd("nde tembo"); + $dbData = Cabecera_encuesta::get(); + $dbData = $dbData->map(function($item){ + $rubro = $item->rubro->descripcion; + $periodo = $item->periodo; + $item['periodo'] = $periodo.' - '.$rubro; + $item['periodo_rubro_id'] = $periodo.'-'.$item->rubro->id; + return $item; + })->unique('periodo'); + //dd($dbData); + return view('report.periodos')->with('dbData', $dbData); + } + + public function resultadosExcel(Request $request){ + + ini_set('max_execution_time', 0); + ini_set('memory_limit', '512M'); + $periodo_array = explode('-', $request->periodo); + $periodo = $periodo_array[0]; + $rubro = $periodo_array[1]; + $rubroDesc = Rubro::find($rubro)->descripcion; + $query = "SELECT d.cabecera_encuesta_id, IF(e.incluir = 1, 'NO', 'SI') excluir, c.periodo, + c.empresa_id, em.descripcion empresa, c.cantidad_empleados, + d.encuestas_cargo_id, convert(e.descripcion using utf8) cargo_cliente, d.area_id, convert(a.descripcion using utf8) area_cliente, d.nivel_id, n.descripcion nivel_cliente, c.rubro_id, + r.descripcion rubro, ca.id, ca.descripcion cargo_oficial, ca.area_id id_area_oficial, convert(a1.descripcion using utf8) area_oficial, ca.nivel_id id_nivel_oficial, n1.descripcion nivel_oficial, cantidad_ocupantes, + + salario_base, salario_base * 12 salario_anual, gratificacion, aguinaldo, comision, plus_rendimiento, fallo_caja, + fallo_caja_ext, gratificacion_contrato, adicional_nivel_cargo, adicional_titulo, + adicional_amarre, adicional_tipo_combustible, adicional_embarque, adicional_carga, + bono_anual, bono_anual_salarios, incentivo_largo_plazo, refrigerio, costo_seguro_medico, + cobertura_seguro_medico, costo_seguro_vida, costo_poliza_muerte_natural, + costo_poliza_muerte_accidente, aseguradora_id, car_company, movilidad_full, flota monto_tarjeta_flota, autos_marca_id, autos_modelo_id, tarjeta_flota, monto_movil, + seguro_movil, mantenimiento_movil, monto_km_recorrido, monto_ayuda_escolar, + monto_comedor_interno, monto_curso_idioma, cobertura_curso_idioma, tipo_clase_idioma, + monto_post_grado, cobertura_post_grado, monto_celular_corporativo, monto_vivienda, + monto_colegiatura_hijos, condicion_ocupante + FROM detalle_encuestas d, encuestas_cargos e, cabecera_encuestas c, cargos ca, rubros r, + areas a, niveles n, empresas em, niveles n1, areas a1 + where c.periodo = :periodo + and c.rubro_id = :rubro + and c.id = d.cabecera_encuesta_id + and d.encuestas_cargo_id = e.id + and e.cargo_id = ca.id + and c.rubro_id = r.id + and d.area_id = a.id + and d.nivel_id = n.id + and c.empresa_id = em.id + and ca.nivel_id = n1.id + and ca.area_id = a1.id + order by 1"; + $dbDetalle = DB::select($query, ["periodo" => $periodo, "rubro" => $rubro]); + dd($dbDetalle); + $detalle = array(); + foreach ($dbDetalle as $key => $item) { + + $efectivoAnual = $item->salario_anual + + $item->gratificacion + + $item->aguinaldo; + + $adicionalNav = $item->adicional_amarre + + $item->adicional_tipo_combustible + + $item->adicional_embarque + + $item->adicional_carga; + + $adicionalOtros = ( $item->fallo_caja + + $item->fallo_caja_ext + + $item->comision + + $item->gratificacion_contrato + + $item->adicional_nivel_cargo + + $item->adicional_titulo) * 12; + + $efectivoTotalAnualNav = $efectivoAnual + + $item->plus_rendimiento + + $adicionalNav + + $item->bono_anual; + + $efectivoTotalAnual = $efectivoAnual + $adicionalOtros + $item->bono_anual; + + $totalBeneficios = $item->refrigerio + + $item->costo_seguro_medico * ($item->cobertura_seguro_medico/100) + + $item->costo_seguro_vida + + //$item->costo_poliza_muerte_accidente + + //$item->costo_poliza_muerte_natural + + $item->monto_movil / 60 + + $item->monto_tarjeta_flota+ + $item->seguro_movil + + $item->monto_km_recorrido + + $item->monto_ayuda_escolar + + $item->monto_comedor_interno + + $item->monto_curso_idioma * ($item->cobertura_curso_idioma/100) + + $item->monto_post_grado * ($item->cobertura_post_grado/100)/ 24 + + $item->monto_celular_corporativo + + $item->monto_vivienda + + $item->monto_colegiatura_hijos; + + $aguinaldoImpactado = ( $item->salario_anual + + $item->gratificacion + + $adicionalOtros + + $item->bono_anual ) / 12; + + $compensacionEfectiva = ( $item->salario_anual + + $item->gratificacion + + $item->aguinaldo + + $adicionalOtros + + $item->bono_anual ); + + $detalle[] = array( "id_encuesta"=>$item->cabecera_encuesta_id, + "id_empresa"=>$item->empresa_id, + "Empresa"=>$item->empresa, + "Cant. Empleados"=>$item->cantidad_empleados, + "Excluir"=>$item->excluir, + "Periodo"=>$item->periodo, + "id_cargo_cliente"=>$item->encuestas_cargo_id, + "Cargo Cliente"=> $item->cargo_cliente, + "id_area"=>$item->area_id, + "Area"=>$item->area_cliente, + "id_nivel"=>$item->nivel_id, + "Nivel"=>$item->nivel_cliente, + "id_rubro"=> $item->rubro_id, + "Rubro"=> $item->rubro, + "id_cargo_oficial"=> $item->id, + "Cargo Oficial"=> $item->cargo_oficial, + "id_area_oficial"=>$item->id_area_oficial, + "Area Oficial"=>$item->area_oficial, + "id_nivel_oficial"=>$item->id_nivel_oficial, + "Nivel Oficial"=>$item->nivel_oficial, + "Ocupantes"=>$item->cantidad_ocupantes, + "Salario Base"=>$item->salario_base, + "salario Anual"=>$item->salario_anual, + "Gratificación"=> $item->gratificacion, + "Aguinaldo"=> $item->aguinaldo, + "Efectivo Anual Garantizado" => $efectivoAnual, + "comision"=> $item->comision, + "Variable Anual (plus_rendimiento)" => $item->plus_rendimiento, + "Adicional Amarre"=>$item->adicional_amarre, + "Adicional Tipo Combustible"=>$item->adicional_tipo_combustible, + "Adicional Embarque"=>$item->adicional_embarque, + "Adicional Tipo Carga"=>$item->adicional_carga, + "Total Adicional Naviera" => $adicionalNav, + "Fallo Caja"=> $item->fallo_caja, + "Fallo Caja Ext."=> $item->fallo_caja_ext, + "Gratif. Contrato"=>$item->gratificacion_contrato, + "Adicional Nivel Cargo"=>$item->adicional_nivel_cargo, + "Adicional Título"=>$item->adicional_titulo, + "Total Adicional (Otros)"=>$adicionalOtros, + "Bono Anual"=>$item->bono_anual, +// "bono_anual_salarios"=>$item->bono_anual_salarios, + "Incentivo a Largo Plazo"=>$item->incentivo_largo_plazo, + "Efectivo Total Anual Nav" => $efectivoTotalAnualNav, + "Efectivo Total Anual (Otros)" => $efectivoTotalAnual, + "Refrigerio"=>$item->refrigerio, + "Costo Seguro Médico"=>$item->costo_seguro_medico, + "Cobertura Seguro Médico"=>$item->cobertura_seguro_medico, + "Costo Seguro Vida"=>$item->costo_seguro_vida, +// "costo_poliza_muerte_natural"=>$item->costo_poliza_muerte_natural, +// "costo_poliza_muerte_accidente"=>$item->costo_poliza_muerte_accidente, +// "aseguradora_id"=>$item->aseguradora_id, + "Car Company"=>$item->car_company, + "Movilidad Full"=>$item->movilidad_full, + "Monto Tarj. Flota"=>$item->monto_tarjeta_flota, +// "autos_marca_id"=>$item->autos_marca_id, +// "autos_modelo_id"=>$item->autos_modelo_id, + "Tarj. Flota"=>$item->tarjeta_flota, + "Monto Automóvil"=>$item->monto_movil, + "Seguro Automóvil"=>$item->seguro_movil, + "Mantenimiento Automóvil"=>$item->mantenimiento_movil, + "Km recorrido"=>$item->monto_km_recorrido, + "Ayuda Escolar"=>$item->monto_ayuda_escolar, + "Comedor Interno"=>$item->monto_comedor_interno, + "Curso Idioma"=>$item->monto_curso_idioma, + "Cobertura idioma"=>$item->cobertura_curso_idioma, +// "tipo clase idioma"=>$item->tipo_clase_idioma, + "Post Grado"=>$item->monto_post_grado, + "Cobertura Post Grado"=>$item->cobertura_post_grado, + "Celular"=>$item->monto_celular_corporativo, + "Vivienda"=>$item->monto_vivienda, + "Colegiatura"=>$item->monto_colegiatura_hijos, + "Condición Ocupante"=>$item->condicion_ocupante, + "Total Beneficios Anual"=>$totalBeneficios*12, + "Compensación Anual Total" => ($totalBeneficios*12 + $efectivoTotalAnual), + "Compensación Anual Total Navieras" => ($totalBeneficios*12 + $efectivoTotalAnualNav), + "Aguinaldo Impactado"=> $aguinaldoImpactado, + "Compensación Efectiva Anual" => $compensacionEfectiva + ); + + + } + $periodo = implode('_', explode('/', $periodo)); + $filename = 'Resultados_'.$periodo.'_'.$rubroDesc; + Excel::create($filename, function($excel) use($detalle, $periodo) { + $excel->sheet($periodo, function($sheet) use($detalle){ + + $sheet->cells('A10:BR10', function($cells){ + $cells->setBackground('#00897b'); + $cells->setFontColor("#FFFFFF"); + $cells->setFontWeight("bold"); + // $cells->setValignment('center'); + $cells->setAlignment('center'); + }); + + // Efectivo Anual Garantizado + $sheet->cell('A1', function($cell){ + $cell->setBackground('#1976d2'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Efectivo Anual Garantizado'); + }); + + $sheet->cell('B1', function($cell){ + $cell->setValue('Salario Base Anual'); + }); + + $sheet->cell('C1', function($cell){ + $cell->setValue('Gratificación'); + }); + + $sheet->cell('D1', function($cell){ + $cell->setValue('Aguinaldo'); + }); + + // Adicional Navieras + $sheet->cell('A2', function($cell){ + $cell->setBackground('#ffff00'); + $cell->setFontColor("#000000"); + $cell->setFontWeight("bold"); + $cell->setValue('Adicional Navieras'); + }); + + $sheet->cell('B2', function($cell){ + $cell->setValue('Adicional Amarre'); + }); + + $sheet->cell('C2', function($cell){ + $cell->setValue('Adicional Tipo Combustible'); + }); + + $sheet->cell('D2', function($cell){ + $cell->setValue('Adicional Embarque'); + }); + + $sheet->cell('E2', function($cell){ + $cell->setValue('Adicional Carga'); + }); + + // Adicional Otros + $sheet->cell('A3', function($cell){ + $cell->setBackground('#388e3c'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Adicional Otros'); + }); + + $sheet->cell('B3', function($cell){ + $cell->setValue('Fallo Caja'); + }); + + $sheet->cell('C3', function($cell){ + $cell->setValue('Fallo Caja Mon. Ext.'); + }); + + $sheet->cell('D3', function($cell){ + $cell->setValue('Comisión'); + }); + + $sheet->cell('E3', function($cell){ + $cell->setValue('Gratificación por Contrato'); + }); + + $sheet->cell('F3', function($cell){ + $cell->setValue('Adicional por Nivel de Cargo'); + }); + + $sheet->cell('F3', function($cell){ + $cell->setValue('Adicional por Título'); + }); + + // Efectivo Total Navieras + $sheet->cell('A4', function($cell){ + $cell->setBackground('#ff80ab'); + $cell->setFontColor("#000000"); + $cell->setFontWeight("bold"); + $cell->setValue('Efectivo Total Anual Navieras'); + }); + + $sheet->cell('B4', function($cell){ + $cell->setValue('Efectivo Anual Garantizado'); + }); + + $sheet->cell('C4', function($cell){ + $cell->setValue('Variable Anual'); + }); + + $sheet->cell('D4', function($cell){ + $cell->setValue('Adicional Navieras'); + }); + + $sheet->cell('E4', function($cell){ + $cell->setValue('Bono'); + }); + + // Efectivo total anual otros + $sheet->cell('A5', function($cell){ + $cell->setBackground('#afb42b'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Efectivo Total Anual Otros'); + }); + + $sheet->cell('B5', function($cell){ + $cell->setValue('Efectivo Anual Garantizado'); + }); + + $sheet->cell('C5', function($cell){ + $cell->setValue('Adicional Otros'); + }); + + $sheet->cell('D5', function($cell){ + $cell->setValue('Bono'); + }); + + + // Total Beneficios + $sheet->cell('A6', function($cell){ + $cell->setBackground('#ff9800'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Total Beneficios'); + }); + + // Compensación anual Total + $sheet->cell('A7', function($cell){ + $cell->setBackground('#5d4037'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Compensación Anual Total'); + }); + + $sheet->cell('B7', function($cell){ + $cell->setValue('Efectivo Total Anual'); + }); + + $sheet->cell('C7', function($cell){ + $cell->setValue('Total Beneficios'); + }); + + // Aguinaldo Impactado + $sheet->cell('A8', function($cell){ + $cell->setBackground('#424242'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Aguinaldo Impactado'); + }); + + $sheet->cell('B8', function($cell){ + $cell->setValue('(Salario Base Anual'); + }); + + $sheet->cell('C8', function($cell){ + $cell->setValue('Gratificación'); + }); + + $sheet->cell('D8', function($cell){ + $cell->setValue('Adicional Otros'); + }); + + $sheet->cell('E8', function($cell){ + $cell->setValue('Bono)/12'); + }); + + // Compensación Efectiva anual Total + $sheet->cell('A9', function($cell){ + $cell->setBackground('#e53935'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + $cell->setValue('Compensación Efectiva Anual Total'); + }); + + $sheet->cell('B9', function($cell){ + $cell->setValue('Salario Base Anual'); + }); + + $sheet->cell('C9', function($cell){ + $cell->setValue('Gratificación'); + }); + + $sheet->cell('D9', function($cell){ + $cell->setValue('Adicional Otros'); + }); + + $sheet->cell('E9', function($cell){ + $cell->setValue('Aguinaldo'); + }); + + $sheet->cell('F9', function($cell){ + $cell->setValue('Bono'); + }); + + // Efectivo Anual Garantizado + $sheet->cell('V10', function($cell){ + $cell->setBackground('#1976d2'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Adicional Navieras + $sheet->cell('AC10', function($cell){ + $cell->setBackground('#ffff00'); + $cell->setFontColor("#000000"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Adicional Otros + $sheet->cell('AI10', function($cell){ + $cell->setBackground('#388e3c'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Efectivo Total Navieras + $sheet->cell('AL10', function($cell){ + $cell->setBackground('#ff80ab'); + $cell->setFontColor("#000000"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Efectivo total anual otros + $sheet->cell('AM10', function($cell){ + $cell->setBackground('#afb42b'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Total Beneficios + $sheet->cell('BJ10', function($cell){ + $cell->setBackground('#ff9800'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Compensación anual Total + $sheet->cell('BK10', function($cell){ + $cell->setBackground('#5d4037'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Aguinaldo Impactado + $sheet->cell('BL10', function($cell){ + $cell->setBackground('#424242'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + // Compensación Efectiva anual Total + $sheet->cell('BM10', function($cell){ + $cell->setBackground('#e53935'); + $cell->setFontColor("#FFFFFF"); + $cell->setFontWeight("bold"); + // $cells->setValignment('center'); + $cell->setAlignment('center'); + }); + $sheet->fromArray($detalle, null, 'A10'); + + }); + })->export('xlsx'); + return redirect()->route('resultados'); + + } + public function panel($id){ + $dbEmpresa = $id; + $rubro = Auth::user()->empresa->rubro_id; + $club = $this->club($rubro); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $id.')')->first(); + $participantes = Cabecera_encuesta::where('periodo', $dbEncuesta->periodo)->where('rubro_id', $rubro)->get(); + $dbData = $participantes->map(function($item){ + return $item->empresa; + })->reject(function($item){ + if(!$item->listable){ + return $item; + } + }); + + + return view('report.panel') ->with('dbData', $dbData) + ->with('club', $club) + ->with('locale', $this->getIdioma()) + ->with('dbEmpresa', $dbEmpresa); + } + + public function getCargos(Request $request){ + $id = $request->nivel_id; + $empresa = Empresa::find($request->empresa_id); + + $cargosRubros = Cargos_rubro::where('rubro_id', $empresa->rubro_id) + ->pluck('cargo_id'); + + if($this->getIdioma() == "en"){ + $dbData = Cargo_en::orderBy('descripcion') + ->whereIn('id', $cargosRubros) + ->where('nivel_id', $id) + ->pluck('id', 'descripcion'); + }else{ + $dbData = Cargo::orderBy('descripcion') + ->whereIn('id', $cargosRubros) + ->where('nivel_id', $id) + ->pluck('id', 'descripcion'); + } + + + return $dbData; + } + + private function median($arr) { + if($arr->count() <= 0){ + return 0; + } + $sorted = $arr->sort()->values(); + $count = count($sorted); //total numbers in array + $middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value + if($count % 2) { // odd number, middle is the median + $median = $sorted[$middleval]; + } else { // even number, calculate avg of 2 medians + $low = $sorted[$middleval]; + $high = $sorted[$middleval+1]; + $median = (($low+$high)/2); + } + return $median; + } + + private function percentile($percentile, $arr) { + if($arr->count() <= 1){ + return 0; + } + $sorted = $arr->sort()->values(); + + $count = $sorted->count(); + + // percentil.exc -- método de cálculo de la fórmula percentil.exc en excel + //$perN = (($count+1) * ($percentile/100)); + + // percentil.inc -- método de cálculo de la fórmula percentil.inc en excel + $perN = (($count-1)* ($percentile/100) + 1 ); + + if (is_int($perN)) { + $result = $sorted[$perN - 1]; + } + else { + $int = floor($perN); + $dec = $perN - $int; + + $result = $dec * ($sorted[$int] - $sorted[$int - 1]) + $sorted[$int-1]; + } + return $result; + } + + public function setSession(Request $request){ + $request->session()->put('periodo', $request->periodo); + return "ok"; + } + + private function cargoReportAll(Request $request, $tipo, $muestraComision = true){ + //dd($request->all()); + + $dbEmpresa = Empresa::find($request->empresa_id); // datos de la empresa del cliente + if(Session::has('periodo')){ + $per = Session::get('periodo'); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id) + ->whereRaw("periodo = '". $per."'") + ->first(); + }else{ + if(Auth::user()->is_admin){ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id) + ->whereRaw("periodo = '". $request->periodo."'") + ->first(); + //dd($dbEncuesta, $request->periodo); + }else{ + $ficha = Ficha_dato::activa()->where('rubro_id', $dbEmpresa->rubro_id)->first(); + if($ficha){ + $per = $ficha->periodo; + }else{ + $per = null; + } + if($per){ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id) + ->where("periodo",$per) + ->first(); + }else{ + if($dbEmpresa->rubro_id == '1'){ + $per = '06/2018'; + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id) + ->whereRaw("periodo = '". $per."'") + ->first(); + }else{ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $dbEmpresa->id) + ->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $dbEmpresa->id.')') + ->first(); + } + } + + + + } + } + //dd($dbEmpresa, $ficha, $per); + $periodo = $dbEncuesta->periodo; // periodo de la encuesta actual + + $rubro = $dbEmpresa->rubro_id; // rubro de la empresa del cliente + // cargo oficial para el informe + $cargo = $request->cargo_id; + if($this->getIdioma() == "es"){ + $dbCargo = Cargo::find($cargo); + }else{ + $dbCargo = Cargo_en::find($cargo); + } + + // empresas y cabeceras de encuestas de este periodo para empresas del rubro del cliente + $dbEncuestadas = Cabecera_encuesta::where('periodo', $periodo) + ->where('rubro_id', $rubro) + ->get(); + + $encuestadasIds = $dbEncuestadas->pluck("id"); // Ids de las encuestas para where in + // conteo de encuestas según origen + $dbNacionales = 0; + $dbInternacionales = 0; + $dbUniverso = $dbEncuestadas->count(); + $encuestadasNacIds = collect(); + $encuestadasInterIds = collect(); + foreach ($dbEncuestadas as $key => $value) { + if($value->empresa->tipo == 0){ + $dbNacionales++; + $encuestadasNacIds[] = $value->id; + }else{ + $dbInternacionales++; + $encuestadasInterIds[] = $value->id; + }; + } + // Recuperamos los datos de los cargos proveídos por las empresas encuestadas + $dbCargosEncuestas = Encuestas_cargo::whereIn('cabecera_encuesta_id', $encuestadasIds) + ->where('cargo_id', $cargo) + ->where('incluir', 1) + ->get(); + + $dbCargosEncuestasNac = Encuestas_cargo::whereIn('cabecera_encuesta_id', $encuestadasNacIds)->where('cargo_id', $cargo)->where('incluir', 1)->get(); + $dbCargosEncuestasInter = Encuestas_cargo::whereIn('cabecera_encuesta_id', $encuestadasInterIds)->where('cargo_id', $cargo)->where('incluir', 1)->get(); + + $cargosEncuestasIds = $dbCargosEncuestas->pluck('id'); + $cargosEncuestasNacIds = $dbCargosEncuestasNac->pluck('id'); + $cargosEncuestasInterIds = $dbCargosEncuestasInter->pluck('id'); + + // Recuperamos los datos de las encuestas + $dbDetalle = Detalle_encuesta::whereIn('encuestas_cargo_id', $cargosEncuestasIds)->get(); + + // Datos de la encuesta llenada por el cliente + $dbClienteEnc = $dbDetalle->where('cabecera_encuesta_id', $dbEncuesta->id)->first(); + // dd($dbEncuesta, $dbClienteEnc, $cargo); + if(empty($dbClienteEnc)){ + // get the column names for the table + $columns = Schema::getColumnListing('detalle_encuestas'); + // create array where column names are keys, and values are null + $columns = array_fill_keys($columns, 0); + $dbClienteEnc = new Detalle_encuesta(); + $dbClienteEnc = $dbClienteEnc->newInstance($columns, true); + } + // conteo de casos encontrados + $countCasos = $dbDetalle->where('cantidad_ocupantes', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $countOcupantes = $dbDetalle->sum('cantidad_ocupantes'); + $countCasosGratif = $dbDetalle->where('cantidad_ocupantes', '>', '0') + ->where('gratificacion', '>', '0') + ->unique('cabecera_encuesta_id')->count(); + $countCasosAguinaldo = $dbDetalle->where('cantidad_ocupantes', '>', '0') + ->where('aguinaldo', '>', '0') + ->unique('cabecera_encuesta_id')->count(); + //$countCasosBeneficios = $dbDetalle->where('beneficios_bancos', '>', 0)->unique('cabecera_encuesta_id')->count(); + $countCasosBono = $dbDetalle->where('cantidad_ocupantes', '>', '0') + ->where('bono_anual', '>', 0) + ->unique('cabecera_encuesta_id')->count(); + + + + $universo = collect(); + $segmento = "universo"; + $this->segmenter( $universo, + $dbUniverso, + $dbDetalle, + $countCasos, + $countCasosGratif, + $countCasosAguinaldo, + // $countCasosBeneficios, + $countCasosBono, + $dbClienteEnc, + $rubro, + $segmento, + $dbCargo, + $muestraComision); + + // conteo de casos encontrados nacionales + $countCasosNac = $encuestadasNacIds->count(); + // buscamos los detalles de las encuestas + $dbDetalleNac = Detalle_encuesta::whereIn('encuestas_cargo_id', $cargosEncuestasNacIds)->get(); + // conteo de casos encontrados + $countOcupantesNac = $dbDetalleNac->sum('cantidad_ocupantes'); + $countCasos = $dbDetalleNac->where('cantidad_ocupantes', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $countCasosGratif = $dbDetalleNac->where('cantidad_ocupantes', '>', '0') + ->where('gratificacion', '>', '0') + ->unique('cabecera_encuesta_id')->count(); + $countCasosAguinaldo = $dbDetalleNac->where('cantidad_ocupantes', '>', '0') + ->where('aguinaldo', '>', '0') + ->unique('cabecera_encuesta_id')->count(); + + $countCasosBono = $dbDetalleNac->where('cantidad_ocupantes', '>', '0') + ->where('bono_anual', '>', 0) + ->unique('cabecera_encuesta_id') + ->count(); + + $nacional = collect(); + $segmento = "nacional"; + $this->segmenter( $nacional, + $countCasosNac, + $dbDetalleNac, + $countCasos, + $countCasosGratif, + $countCasosAguinaldo, + // $countCasosBeneficios, + $countCasosBono, + $dbClienteEnc, + $rubro, + $segmento, + $dbCargo, + $muestraComision); + + // conteo de casos encontrados internacionales + $countCasosInt = $encuestadasInterIds->count(); + // buscamos los detalles de las encuestas + $dbDetalleInt = Detalle_encuesta::whereIn('encuestas_cargo_id', $cargosEncuestasInterIds)->get(); + $countOcupantesInt = $dbDetalleInt->sum('cantidad_ocupantes'); + // conteo de casos encontrados + $countCasos = $dbDetalleInt->where('cantidad_ocupantes', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $countCasosGratif = $dbDetalleInt->where('cantidad_ocupantes', '>', '0') + ->where('gratificacion', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $countCasosAguinaldo = $dbDetalleInt->where('cantidad_ocupantes', '>', '0') + ->where('aguinaldo', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + + //$countCasosBeneficios = $dbDetalleInt->where('beneficios_bancos', '>', 0)->unique('cabecera_encuesta_id')->count(); + + + + + $countCasosBono = $dbDetalleInt->where('cantidad_ocupantes', '>', '0') + ->where('bono_anual', '>', 0) + ->unique('cabecera_encuesta_id') + ->count(); + + $internacional = collect(); + $segmento = "internacional"; + + $this->segmenter( $internacional, + $countCasosInt, + $dbDetalleInt, + $countCasos, + $countCasosGratif, + $countCasosAguinaldo, + // $countCasosBeneficios, + $countCasosBono, + $dbClienteEnc, + $rubro, + $segmento, + $dbCargo, + $muestraComision); + if($tipo == "view"){ + if($request->tour){ + $tour = true; + }else{ + $tour = false; + } + + if($request->moneda == "local"){ + $convertir = false; + }else{ + $convertir = true; + } + + $ficha = Ficha_dato::where('periodo', $periodo)->first(); + //dd($ficha); + if($ficha){ + $tipoCambio = $ficha->tipo_cambio; + }else{ + $tipoCambio = 5600; + } + + + return view('report.report')->with('dbCargo', $dbCargo) + ->with('dbEmpresa', $dbEmpresa) + ->with('universo', $universo) + ->with('nacional', $nacional) + ->with('internacional', $internacional) + ->with('countOcupantes', $countOcupantes) + ->with('countOcupantesNac', $countOcupantesNac) + ->with('countOcupantesInt', $countOcupantesInt) + ->with('tour', $tour) + ->with('tipoCambio', $tipoCambio) + ->with('periodo', $periodo) + ->with('convertir', $convertir); + + }elseif($tipo == "excel"){ + $periodo = implode('_', explode('/', $periodo)); + $cargoFileName = str_replace("-", "_", str_replace(" ", "_", $dbCargo->descripcion)); + $filename = 'Resultados_'.$periodo.'_'.$cargoFileName; + $detalleUniverso = $this->segmentArrayFactory($universo); + $detalleNacional = $this->segmentArrayFactory($nacional); + $detalleInternacional = $this->segmentArrayFactory($internacional); + + Excel::create($filename, function($excel) use($detalleUniverso, $detalleNacional, $detalleInternacional ) { + $excel->sheet("universo", function($sheet) use($detalleUniverso){ + $sheet->fromArray($detalleUniverso); + }); + $excel->sheet("nacional", function($sheet) use($detalleNacional){ + $sheet->fromArray($detalleNacional); + }); + $excel->sheet("internacional", function($sheet) use($detalleInternacional){ + $sheet->fromArray($detalleInternacional); + }); + + })->export('xlsx'); + return redirect()->route('resultados'); + }elseif ($tipo == "clubExcel") { + + $cargoFileName = str_replace("-", "_", str_replace(" ", "_", $dbCargo->descripcion)); + $filename = 'Resultados_'.$periodo.'_'.$cargoFileName; + $detalleUniverso = array(); + $detalleNacional = array(); + $detalleInternacional = array(); + foreach ($universo as $value) { + + $detalleUniverso[] = array( "Concepto"=>$value["concepto"], + "ocupantes"=> $countOcupantes, + "Casos"=>$value["casos"], + "Min"=>$value["min"], + "25 Percentil"=>$value["per25"], + "Promedio"=>$value["prom"], + "Mediana"=>$value["med"], + "75 Percentil"=>$value["per75"], + "Max"=>$value["max"], + "Empresa"=>$value["empresa"] + ); + } + foreach ($nacional as $value) { + $detalleNacional[] = array( "Concepto"=>$value["concepto"], + "ocupantes"=> $countOcupantesNac, + "Casos"=>$value["casos"], + "Min"=>$value["min"], + "25 Percentil"=>$value["per25"], + "Promedio"=>$value["prom"], + "Mediana"=>$value["med"], + "75 Percentil"=>$value["per75"], + "Max"=>$value["max"], + "Empresa"=>$value["empresa"] + ); + } + + foreach ($internacional as $value) { + $detalleInternacional[] = array( "Concepto"=>$value["concepto"], + "ocupantes"=> $countOcupantesInt, + "Casos"=>$value["casos"], + "Min"=>$value["min"], + "25 Percentil"=>$value["per25"], + "Promedio"=>$value["prom"], + "Mediana"=>$value["med"], + "75 Percentil"=>$value["per75"], + "Max"=>$value["max"], + "Empresa"=>$value["empresa"] + ); + } + $resultado = collect([ + "detalle_universo"=> $detalleUniverso, + "detalle_nacional"=> $detalleNacional, + "detalleInternacional"=>$detalleInternacional + ]); + + return $resultado; + } + + } + + private function segmentArrayFactory($segmentArray){ + foreach ($segmentArray as $value) { + + $response[] = array( Lang::get('reportReport.table_concepts') => $value["concepto"], + Lang::get('reportReport.table_occupants') => $value["casos"], + Lang::get('reportReport.table_cases') => $value["casos"], + Lang::get('reportReport.table_min') => $value["min"], + Lang::get('reportReport.table_perc25') => $value["per25"], + Lang::get('reportReport.table_average') => $value["prom"], + Lang::get('reportReport.table_median') => $value["med"], + Lang::get('reportReport.table_perc75') => $value["per75"], + Lang::get('reportReport.table_max') => $value["max"], + Lang::get('reportReport.table_company') => $value["empresa"] + ); + } + + return $response; + } + + private function getIdioma(){ + return $locale = app()->getLocale(); + } + + private function nivelReport(Request $request, $encuestasIDs, $muestraComision = false){ + + $periodo = $request->periodo; // periodo de la encuesta actual + + $rubro = $request->rubro_id; // rubro de la empresa del cliente + // cargo oficial para el informe + $nivel = $request->nivel_id; + if($this->getIdioma() == "es"){ + $dbNivel = Nivel::find($nivel); + }else{ + $dbNivel = Nivel_en::find($nivel); + } + + $dbEncuestadas = Cabecera_encuesta::whereIn('id', $encuestasIDs)->get(); + // conteo de encuestas según origen + $dbNacionales = 0; + $dbInternacionales = 0; + $dbUniverso = $dbEncuestadas->count(); + $encuestadasNacIds = collect(); + $encuestadasInterIds = collect(); + foreach ($dbEncuestadas as $key => $value) { + if($value->empresa->tipo == 0){ + $dbNacionales++; + $encuestadasNacIds[] = $value->id; + }else{ + $dbInternacionales++; + $encuestadasInterIds[] = $value->id; + }; + } + // Recuperamos los datos de los cargos proveídos por las empresas encuestadas + + $dbEncuestasNivel = Detalle_encuestas_nivel::whereIn('cabecera_encuesta_id', $encuestasIDs) + ->where('nivel_oficial_id', $nivel) + ->where('incluir', 1) + ->get(); + $dbEncuestasNivelNac = Detalle_encuestas_nivel::whereIn('cabecera_encuesta_id', $encuestadasNacIds) + ->where('nivel_oficial_id', $nivel) + ->where('incluir', 1) + ->get(); + $dbEncuestasNivelInter = Detalle_encuestas_nivel::whereIn('cabecera_encuesta_id', $encuestadasInterIds) + ->where('nivel_oficial_id', $nivel) + ->where('incluir', 1) + ->get(); + + // conteo de casos encontrados universo + $countCasos = $dbEncuestasNivel->where('cantidad_ocupantes', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + // conteo de casos encontrados nacionales + $countCasosNac = $dbEncuestasNivelNac->where('cantidad_ocupantes', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + // conteo de casos encontrados internacionales + $countCasosInter = $dbEncuestasNivelInter->where('cantidad_ocupantes', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + + // conteo de casos encontrados + $countOcupantes = $dbEncuestasNivel->sum('cantidad_ocupantes'); + $universo = collect(); + $segmento = "universo"; + // Salario Base + $salariosBase = $dbEncuestasNivel->where('salario_base', '>', '0') + ->pluck('salario_base'); + $salarioMin = $salariosBase->min(); + $salarioMax = $salariosBase->max(); + $salarioProm = $salariosBase->avg(); + $salarioMed = $this->median($salariosBase); + $salario25Per = $this->percentile(25,$salariosBase); + $salario75Per = $this->percentile(75, $salariosBase); + + //dd($dbClienteEnc); + $this->pusherNivel( $universo, + $countCasos, + Lang::get('reportReport.concept_salary'), + $salarioMin, + $salarioMax, + $salarioProm, + $salarioMed, + $salario25Per, + $salario75Per, + $segmento, + $dbNivel); + + //Bono + $bonos = $dbEncuestasNivel->where('bono_anual', '>', '0') + ->pluck('bono_anual'); + $bonoMin = $bonos->min(); + $bonoMax = $bonos->max(); + $bonoProm = $bonos->avg(); + $bonoMed = $this->median($bonos); + $bono25Per = $this->percentile(25, $bonos); + $bono75Per = $this->percentile(75, $bonos); + + $countCasosBonos = $dbEncuestasNivel->where('bono_anual', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $this->pusherNivel( $universo, + $countCasosBonos, + Lang::get('reportReport.concept_bonus'), + $bonoMin, + $bonoMax, + $bonoProm, + $bonoMed, + $bono25Per, + $bono75Per, + $segmento, + $dbNivel); + + // Efectivo Total Anual + $efectivoAnual = $dbEncuestasNivel->where('salario_base', '>', '0') + ->pluck('total_efectivo_anual'); + + $efectivoTotalMin = $efectivoAnual->min(); + $efectivoTotalMax = $efectivoAnual->max(); + $efectivoTotalProm = $efectivoAnual->avg(); + $efectivoTotalMed = $this->median($efectivoAnual); + $efectivoTotal25Per = $this->percentile(25, $efectivoAnual); + $efectivoTotal75Per = $this->percentile(75, $efectivoAnual); + + $this->pusherNivel( $universo, + $countCasos, + Lang::get('reportReport.concept_bonus'), + $efectivoTotalMin, + $efectivoTotalMax, + $efectivoTotalProm, + $efectivoTotalMed, + $efectivoTotal25Per, + $efectivoTotal75Per, + $segmento, + $dbNivel); + + //$detalleUniverso = $this->nivelSegmentArrayFactory($universo); + $detalleUniverso = array(); + foreach ($universo as $value) { + $detalleUniverso[] = array( "Concepto"=>$value["concepto"], + "ocupantes"=> $countOcupantes, + "Casos"=>$value["casos"], + "Min"=>$value["min"], + "25 Percentil"=>$value["per25"], + "Promedio"=>$value["prom"], + "Mediana"=>$value["med"], + "75 Percentil"=>$value["per75"], + "Max"=>$value["max"], + "nivel"=>$value["nivel"] + ); + } + + $nacional = collect(); + $salarioBase = 0; + $salarioMin = 0; + $salarioMax = 0; + $salarioProm = 0; + $salarioMed = 0; + $salario25Per = 0; + $salario75Per = 0; + $bonos = 0; + $bonoMin = 0; + $bonoMax = 0; + $bonoProm = 0; + $bonoMed = 0; + $bono25Per = 0; + $bono75Per = 0; + $efectivoAnual = 0; + $efectivoTotalMin = 0; + $efectivoTotalMax = 0; + $efectivoTotalProm = 0; + $efectivoTotalMed = 0; + $efectivoTotal25Per = 0; + $efectivoTotal75Per = 0; + + $segmento = "nacional"; + $countOcupantesNac = $dbEncuestasNivelNac->sum('cantidad_ocupantes'); + // Salario Base + $salariosBase = $dbEncuestasNivelNac->where('salario_base', '>', '0')->pluck('salario_base'); + $salarioMin = $salariosBase->min(); + $salarioMax = $salariosBase->max(); + $salarioProm = $salariosBase->avg(); + $salarioMed = $this->median($salariosBase); + $salario25Per = $this->percentile(25,$salariosBase); + $salario75Per = $this->percentile(75, $salariosBase); + + //dd($dbClienteEnc); + $this->pusherNivel( $nacional, + $countCasosNac, + Lang::get('reportReport.concept_salary'), + $salarioMin, + $salarioMax, + $salarioProm, + $salarioMed, + $salario25Per, + $salario75Per, + $segmento, + $dbNivel); + + //Bono + $bonos = $dbEncuestasNivelNac->where('bono_anual', '>', '0')->pluck('bono_anual'); + $bonoMin = $bonos->min(); + $bonoMax = $bonos->max(); + $bonoProm = $bonos->avg(); + $bonoMed = $this->median($bonos); + $bono25Per = $this->percentile(25, $bonos); + $bono75Per = $this->percentile(75, $bonos); + + $countCasosBonosNac = $dbEncuestasNivelNac->where('bono_anual', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $this->pusherNivel( $nacional, + $countCasosBonosNac, + Lang::get('reportReport.concept_bonus'), + $bonoMin, + $bonoMax, + $bonoProm, + $bonoMed, + $bono25Per, + $bono75Per, + $segmento, + $dbNivel); + + // Efectivo Total Anual + $efectivoAnual = $dbEncuestasNivelNac->where('salario_base', '>', '0') + ->pluck('total_efectivo_anual'); + + $efectivoTotalMin = $efectivoAnual->min(); + $efectivoTotalMax = $efectivoAnual->max(); + $efectivoTotalProm = $efectivoAnual->avg(); + $efectivoTotalMed = $this->median($efectivoAnual); + $efectivoTotal25Per = $this->percentile(25, $efectivoAnual); + $efectivoTotal75Per = $this->percentile(75, $efectivoAnual); + + $this->pusherNivel( $nacional, + $countCasosBonosNac, + Lang::get('reportReport.concept_bonus'), + $efectivoTotalMin, + $efectivoTotalMax, + $efectivoTotalProm, + $efectivoTotalMed, + $efectivoTotal25Per, + $efectivoTotal75Per, + $segmento, + $dbNivel); + + //$detalleNacional = $this->nivelSegmentArrayFactory($nacional); + $detalleNacional = array(); + foreach ($nacional as $value) { + $detalleNacional[] = array( "Concepto"=>$value["concepto"], + "ocupantes"=> $countOcupantesNac, + "Casos"=>$value["casos"], + "Min"=>$value["min"], + "25 Percentil"=>$value["per25"], + "Promedio"=>$value["prom"], + "Mediana"=>$value["med"], + "75 Percentil"=>$value["per75"], + "Max"=>$value["max"], + "nivel"=>$value["nivel"] + ); + } + + $internacional = collect(); + $salarioBase = 0; + $salarioMin = 0; + $salarioMax = 0; + $salarioProm = 0; + $salarioMed = 0; + $salario25Per = 0; + $salario75Per = 0; + $bonos = 0; + $bonoMin = 0; + $bonoMax = 0; + $bonoProm = 0; + $bonoMed = 0; + $bono25Per = 0; + $bono75Per = 0; + $efectivoAnual = 0; + $efectivoTotalMin = 0; + $efectivoTotalMax = 0; + $efectivoTotalProm = 0; + $efectivoTotalMed = 0; + $efectivoTotal25Per = 0; + $efectivoTotal75Per = 0; + $countOcupantesInter = $dbEncuestasNivelInter->sum('cantidad_ocupantes'); + $segmento = "internacional"; + // Salario Base + $salariosBase = $dbEncuestasNivelInter->where('salario_base', '>', '0') + ->pluck('salario_base'); + $salarioMin = $salariosBase->min(); + $salarioMax = $salariosBase->max(); + $salarioProm = $salariosBase->avg(); + $salarioMed = $this->median($salariosBase); + $salario25Per = $this->percentile(25,$salariosBase); + $salario75Per = $this->percentile(75, $salariosBase); + + //dd($dbClienteEnc); + $this->pusherNivel( $internacional, + $countCasosInter, + Lang::get('reportReport.concept_salary'), + $salarioMin, + $salarioMax, + $salarioProm, + $salarioMed, + $salario25Per, + $salario75Per, + $segmento, + $dbNivel); + + //Bono + $bonos = $dbEncuestasNivelInter->where('bono_anual', '>', '0') + ->pluck('bono_anual'); + $bonoMin = $bonos->min(); + $bonoMax = $bonos->max(); + $bonoProm = $bonos->avg(); + $bonoMed = $this->median($bonos); + $bono25Per = $this->percentile(25, $bonos); + $bono75Per = $this->percentile(75, $bonos); + + $countCasosBonosInter = $dbEncuestasNivelInter->where('bono_anual', '>', '0') + ->unique('cabecera_encuesta_id') + ->count(); + $this->pusherNivel( $internacional, + $countCasosBonosInter, + Lang::get('reportReport.concept_bonus'), + $bonoMin, + $bonoMax, + $bonoProm, + $bonoMed, + $bono25Per, + $bono75Per, + $segmento, + $dbNivel); + + // Efectivo Total Anual + $efectivoAnual = $dbEncuestasNivelInter->where('salario_base', '>', '0') + ->pluck('total_efectivo_anual'); + + $efectivoTotalMin = $efectivoAnual->min(); + $efectivoTotalMax = $efectivoAnual->max(); + $efectivoTotalProm = $efectivoAnual->avg(); + $efectivoTotalMed = $this->median($efectivoAnual); + $efectivoTotal25Per = $this->percentile(25, $efectivoAnual); + $efectivoTotal75Per = $this->percentile(75, $efectivoAnual); + + $this->pusherNivel( $internacional, + $countCasosInter, + Lang::get('reportReport.concept_bonus'), + $efectivoTotalMin, + $efectivoTotalMax, + $efectivoTotalProm, + $efectivoTotalMed, + $efectivoTotal25Per, + $efectivoTotal75Per, + $segmento, + $dbNivel); + + //$detalleInternacional = $this->nivelSegmentArrayFactory($internacional); + $detalleInternacional = array(); + foreach ($internacional as $value) { + $detalleInternacional[] = array("Concepto"=>$value["concepto"], + "ocupantes"=> $countOcupantesInter, + "Casos"=>$value["casos"], + "Min"=>$value["min"], + "25 Percentil"=>$value["per25"], + "Promedio"=>$value["prom"], + "Mediana"=>$value["med"], + "75 Percentil"=>$value["per75"], + "Max"=>$value["max"], + "nivel"=>$value["nivel"] + ); + } + + $resultado = collect([ + "detalle_universo"=> $detalleUniverso, + "detalle_nacional"=> $detalleNacional, + "detalleInternacional"=>$detalleInternacional + ]); + return $resultado; + + } + private function pusherNivel(&$collection, $casos, $concepto, $min, $max, $prom, $med, $per25, $per75, $segmento, $dbNivel){ + + $collection->push([ "concepto"=> $concepto, + "casos"=> $casos, + "min"=>$min, + "max"=>$max, + "prom"=>$prom, + "med"=>$med, + "per25"=>$per25, + "per75"=> $per75, + "segmento"=>$segmento, + "nivel" => $dbNivel->descripcion + ]); + + } + + private function nivelSegmentArrayFactory($segmentArray){ + foreach ($segmentArray as $value) { + + $response[] = array( Lang::get('reportReport.table_concepts') => $value["concepto"], + Lang::get('reportReport.table_occupants') => $value["casos"], + Lang::get('reportReport.table_cases') => $value["casos"], + Lang::get('reportReport.table_min') => $value["min"], + Lang::get('reportReport.table_perc25') => $value["per25"], + Lang::get('reportReport.table_average') => $value["prom"], + Lang::get('reportReport.table_median') => $value["med"], + Lang::get('reportReport.table_perc75') => $value["per75"], + Lang::get('reportReport.table_max') => $value["max"] + ); + } + + return $response; + } + private function cargaDetalleNivel($item, &$itemArray){ + $variableAnual = false; + + foreach ($item as $key => $value) { + switch ($value["Concepto"]) { + case "Comision": + $this->cargadorNivel($value, $itemArray, false); + break; + case Lang::get('reportReport.concept_salary'): + $this->cargadorNivel($value, $itemArray, true); + break; + case Lang::get('reportReport.concept_annual_cash'): + $this->cargadorNivel($value, $itemArray, false); + break; + case Lang::get('reportReport.variable_pay'): + $variableAnual = true; + $this->cargadorNivel($value, $itemArray, false); + + break; + case Lang::get('reportReport.concept_total_incentives'): + $this->cargadorNivel($value, $itemArray, false); + break; + case Lang::get('reportReport.concept_bonus'): + $this->cargadorNivel($value, $itemArray, false); + break; + case Lang::get('reportReport.concept_total_compensation'): + $this->cargadorNivel($value, $itemArray, false); + break; + + } + } + //dd($item); + /* if(!$variableAnual){ + // agregamos 0 a los lugares de Variable Anual + $aux = array_slice($itemArray, 0, 16, true); + array_push($aux, 0,0,0,0,0,0); + $aux2 = array_merge($aux, array_slice($itemArray, 16)); + $itemArray = $aux2; + } */ + + } + + private function cargadorNivel($value, &$itemArray, $casos){ + if($casos){ + array_push($itemArray, $value["ocupantes"]); + array_push($itemArray, $value["Casos"]); + } + array_push($itemArray, $value["Min"]); + array_push($itemArray, $value["25 Percentil"]); + array_push($itemArray, round($value["Promedio"], 2)); + array_push($itemArray, $value["Mediana"]); + array_push($itemArray, $value["75 Percentil"]); + array_push($itemArray, $value["Max"]); +} + +}