Created
August 10, 2015 12:25
-
-
Save backstageel/bfe5027df276701af581 to your computer and use it in GitHub Desktop.
Funcao para preencher os campos do ficheiro de Financiamento
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
public function base_fund() | |
{ | |
//Lemos a biblioteca PHPExcel | |
App::import('Helper', 'PhpExcel'); | |
$this->PHPExcel = new PhpExcelHelper(new View()); | |
//Lemos o ficheiro excel a preencher. Aquele que foi fornecido pelos financiadores | |
$xls = $this->PHPExcel->loadWorksheetFromS3('/Reports/Financas/base_fund.xlsx'); | |
$worksheet = $xls->getActiveSheet(); | |
$linhaActual = 3; | |
$naoEnconttados = []; | |
//Vamos ler linha por linha do ficheiro por preencheer, comecando pela linha 3 | |
foreach ($worksheet->getRowIterator() as $row) { | |
//Se encontrar uma linha em branco eh porque terminamos o ficheiro todo | |
if ($worksheet->getCell('A' . $linhaActual)->getValue() == '') { | |
break; | |
} | |
//Pegamos o codigo da instuicao para apenas preencher as linhas da UEM(ou da UP nesse caso) | |
$codigoInstituicao = $worksheet->getCell('C' . $linhaActual)->getValue(); | |
if ($codigoInstituicao != 1) { | |
$this->out('Saltando Linha -------' . $linhaActual); | |
$linhaActual++; | |
continue; | |
} | |
$nomeCurso = $worksheet->getCell('F' . $linhaActual)->getValue(); | |
$nomeGrau = $worksheet->getCell('K' . $linhaActual)->getValue(); | |
$nomeCompletoCurso = $nomeGrau . ' em ' . $nomeCurso; | |
//Pegamos o nome do curso e procuramos por aquele curso na nossa BD MySQL | |
$curso = $this->Aluno->Curso->findByName($nomeCompletoCurso); | |
if (empty($curso)) { | |
$fim = substr($nomeCompletoCurso, -3); | |
$nomeCompletoCurso = str_replace(' ', '%', trim($nomeCompletoCurso)); | |
if ($fim === 'lab') { | |
$nomeCompletoCurso = $nomeCompletoCurso . '%'; | |
} | |
$curso = $this->Aluno->Curso->find('first', [ | |
'conditions' => [ | |
'Curso.name | |
LIKE' => $nomeCompletoCurso | |
] | |
]); | |
if (empty($curso)) { | |
$naoEnconttados[] = $nomeCompletoCurso; | |
$linhaActual++; | |
continue; | |
} | |
} | |
$ano = $worksheet->getCell('E' . $linhaActual)->getValue(); | |
$sexo = $worksheet->getCell('M' . $linhaActual)->getValue(); | |
if ($sexo == 1) { | |
$genero = 'Masculino'; | |
} else { | |
$genero = 'Feminino'; | |
} | |
$S = $worksheet->getCell('S' . $linhaActual)->getFormattedValue(); | |
$T = $worksheet->getCell('T' . $linhaActual)->getFormattedValue(); | |
$AG = $worksheet->getCell('AG' . $linhaActual)->getValue(); | |
$letras = ['V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE']; | |
foreach ($letras as $letra) { | |
$conditions = [ | |
'Aluno.ano_ingresso' => $ano, | |
'Entidade.genero_id' => $sexo, | |
'Aluno.curso_id' => $curso['Curso']['id'], | |
'Aluno.estado_aluno_id' => [1, 11, 14] | |
]; | |
$this->Aluno->contain(['Entidade']); | |
//Ja temos todos requisitos(Curso, Ano de Ingresso e Sexo) entao podemos fazer um Select count(*) | |
$total = $this->Aluno->find('count', [ | |
'conditions' => $conditions | |
]); | |
$worksheet->setCellValue($letra . $linhaActual, $total); | |
$this->out($nomeCompletoCurso . '-----' . $ano . '------------' . $genero . '----------' . $total . '------------' | |
. $letra); | |
$ano = $ano - 1; | |
$this->hr(); | |
} | |
unset($conditions['Aluno.ano_ingresso']); | |
$conditions['Aluno.ano_ingresso <=']=$ano; | |
$this->Aluno->contain(['Entidade']); | |
$total = $this->Aluno->find('count', [ | |
'conditions' => $conditions | |
]); | |
unset($conditions['Aluno.ano_ingresso <=']); | |
$worksheet->setCellValue('AF' . $linhaActual, $total); | |
$this->out($nomeCompletoCurso . '-----RESTO------------' . $genero . '----------' . $total . '------------' | |
. $letra); | |
$worksheet->getStyle('AG'.$linhaActual) | |
->getNumberFormat() | |
->setFormatCode( | |
PHPExcel_Style_NumberFormat::FORMAT_NUMBER | |
); | |
$this->hr(); | |
$worksheet->setCellValue('AG' . $linhaActual, $AG); | |
$worksheet->setCellValue('S' . $linhaActual, $S); | |
$worksheet->setCellValue('T' . $linhaActual, $T); | |
$linhaActual++; | |
} | |
//Por fim gravamos o excel ja preenchido num novo ficheiro. | |
$objWriter = PHPExcel_IOFactory::createWriter($xls, 'Excel2007'); | |
$objWriter->save('base_fund2.xlsx'); | |
$xls->disconnectWorksheets(); | |
unset($xls); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment