diff --git a/app/Models/LegacyRegistration.php b/app/Models/LegacyRegistration.php
index 9e15683ac4..90ff229d6e 100644
--- a/app/Models/LegacyRegistration.php
+++ b/app/Models/LegacyRegistration.php
@@ -2,6 +2,7 @@
namespace App\Models;
+use App_Model_MatriculaSituacao;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -11,6 +12,8 @@
* LegacyRegistration
*
* @property int $id
+ * @property boolean isTransferred
+ * @property boolean isAbandoned
*
*/
class LegacyRegistration extends Model
@@ -119,4 +122,14 @@ public function exemptions()
{
return $this->hasMany(LegacyDisciplineExemption::class, 'ref_cod_matricula', 'cod_matricula');
}
+
+ public function getIsTransferredAttribute()
+ {
+ return $this->aprovado == App_Model_MatriculaSituacao::TRANSFERIDO;
+ }
+
+ public function getIsAbandonedAttribute()
+ {
+ return $this->aprovado == App_Model_MatriculaSituacao::ABANDONO;
+ }
}
diff --git a/app/Process.php b/app/Process.php
index 576e7b9422..a41a8fb11f 100644
--- a/app/Process.php
+++ b/app/Process.php
@@ -17,6 +17,7 @@ class Process
const ENROLLMENT_HISTORY = 1001;
const ATTENDED_CANDIDATE = 1002;
+ const BACK_TO_QUEUE = 1003;
const UNDO_STUDENT_UNIFICATION = 2001;
const EXEMPTION_LIST = 2002;
}
diff --git a/app/Services/StudentService.php b/app/Services/StudentService.php
new file mode 100644
index 0000000000..6f719cbc5d
--- /dev/null
+++ b/app/Services/StudentService.php
@@ -0,0 +1,33 @@
+registrations()->where('status', 3);
+
+ if ($levelId) {
+ $query->where('level_id', $levelId);
+ }
+
+ return $query->orderBy('year', 'desc')
+ ->exists();
+ }
+}
diff --git a/composer.json b/composer.json
index 2937d052b3..bfd1d7aa39 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"description": "Software livre de gestão escolar",
"type": "project",
"license": "GPL-2.0-or-later",
- "version": "2.2.10",
+ "version": "2.2.11",
"keywords": [
"Portabilis",
"i-Educar"
diff --git a/composer.lock b/composer.lock
index feb6086de9..3a722f99a1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "b809688eaf9970067bfc1abc85b1a398",
+ "content-hash": "67141df1d8ac1c6225bdf16215518566",
"packages": [
{
"name": "aws/aws-sdk-php",
- "version": "3.112.25",
+ "version": "3.112.28",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "f91e264e3cbf8ced5c93f5f786c9e0f079926749"
+ "reference": "dabae6df3fd53b470da8806d641d05dbb66859da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/f91e264e3cbf8ced5c93f5f786c9e0f079926749",
- "reference": "f91e264e3cbf8ced5c93f5f786c9e0f079926749",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/dabae6df3fd53b470da8806d641d05dbb66859da",
+ "reference": "dabae6df3fd53b470da8806d641d05dbb66859da",
"shasum": ""
},
"require": {
@@ -87,7 +87,7 @@
"s3",
"sdk"
],
- "time": "2019-10-18T18:08:55+00:00"
+ "time": "2019-10-24T18:14:24+00:00"
},
{
"name": "cocur/slugify",
@@ -911,27 +911,28 @@
},
{
"name": "guzzlehttp/guzzle",
- "version": "6.3.3",
+ "version": "6.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+ "reference": "0895c932405407fd3a7368b6910c09a24d26db11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
- "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11",
+ "reference": "0895c932405407fd3a7368b6910c09a24d26db11",
"shasum": ""
},
"require": {
+ "ext-json": "*",
"guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.4",
+ "guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.0"
+ "psr/log": "^1.1"
},
"suggest": {
"psr/log": "Required for using the Log middleware"
@@ -943,12 +944,12 @@
}
},
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
"GuzzleHttp\\": "src/"
- }
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -972,7 +973,7 @@
"rest",
"web service"
],
- "time": "2018-04-22T15:46:56+00:00"
+ "time": "2019-10-23T15:58:00+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -2065,16 +2066,16 @@
},
{
"name": "nesbot/carbon",
- "version": "2.25.2",
+ "version": "2.25.3",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "443fe5f1498147e0fbc792142b5dc43e2e8a533f"
+ "reference": "d07636581795383e2fea2d711212d30f941f2039"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/443fe5f1498147e0fbc792142b5dc43e2e8a533f",
- "reference": "443fe5f1498147e0fbc792142b5dc43e2e8a533f",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d07636581795383e2fea2d711212d30f941f2039",
+ "reference": "d07636581795383e2fea2d711212d30f941f2039",
"shasum": ""
},
"require": {
@@ -2128,7 +2129,7 @@
"datetime",
"time"
],
- "time": "2019-10-14T14:18:59+00:00"
+ "time": "2019-10-20T11:05:44+00:00"
},
{
"name": "nikic/php-parser",
@@ -2183,16 +2184,16 @@
},
{
"name": "opis/closure",
- "version": "3.4.0",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
- "reference": "60a97fff133b1669a5b1776aa8ab06db3f3962b7"
+ "reference": "e79f851749c3caa836d7ccc01ede5828feb762c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/60a97fff133b1669a5b1776aa8ab06db3f3962b7",
- "reference": "60a97fff133b1669a5b1776aa8ab06db3f3962b7",
+ "url": "https://api.github.com/repos/opis/closure/zipball/e79f851749c3caa836d7ccc01ede5828feb762c7",
+ "reference": "e79f851749c3caa836d7ccc01ede5828feb762c7",
"shasum": ""
},
"require": {
@@ -2240,7 +2241,7 @@
"serialization",
"serialize"
],
- "time": "2019-09-02T21:07:33+00:00"
+ "time": "2019-10-19T18:38:51+00:00"
},
{
"name": "paragonie/random_compat",
@@ -2735,16 +2736,16 @@
},
{
"name": "psr/log",
- "version": "1.1.0",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+ "reference": "bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
- "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2",
+ "reference": "bf73deb2b3b896a9d9c75f3f0d88185d2faa27e2",
"shasum": ""
},
"require": {
@@ -2753,7 +2754,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.1.x-dev"
}
},
"autoload": {
@@ -2778,7 +2779,7 @@
"psr",
"psr-3"
],
- "time": "2018-11-20T15:27:04+00:00"
+ "time": "2019-10-25T08:06:51+00:00"
},
{
"name": "psr/simple-cache",
@@ -4448,21 +4449,23 @@
},
{
"name": "tijsverkoyen/css-to-inline-styles",
- "version": "2.2.1",
+ "version": "2.2.2",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757"
+ "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
- "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/dda2ee426acd6d801d5b7fd1001cde9b5f790e15",
+ "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15",
"shasum": ""
},
"require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
"php": "^5.5 || ^7.0",
- "symfony/css-selector": "^2.7 || ^3.0 || ^4.0"
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
@@ -4491,7 +4494,7 @@
],
"description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
- "time": "2017-11-27T11:13:29+00:00"
+ "time": "2019-10-24T08:53:34+00:00"
},
{
"name": "tooleks/laravel-asset-version",
diff --git a/database/migrations/2019_10_24_083313_cria_parametro_ordena_alunos_por_sequencial_enturmacao.php b/database/migrations/2019_10_24_083313_cria_parametro_ordena_alunos_por_sequencial_enturmacao.php
new file mode 100644
index 0000000000..b5d5662879
--- /dev/null
+++ b/database/migrations/2019_10_24_083313_cria_parametro_ordena_alunos_por_sequencial_enturmacao.php
@@ -0,0 +1,32 @@
+boolean('ordenar_alunos_sequencial_enturmacao')->default(false);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('pmieducar.instituicao', function (Blueprint $table) {
+ $table->dropColumn('ordenar_alunos_sequencial_enturmacao');
+ });
+ }
+}
diff --git a/ieducar/intranet/educar_dispensa_disciplina_cad.php b/ieducar/intranet/educar_dispensa_disciplina_cad.php
index 7b2dfd614d..bf6bfb04db 100644
--- a/ieducar/intranet/educar_dispensa_disciplina_cad.php
+++ b/ieducar/intranet/educar_dispensa_disciplina_cad.php
@@ -1,5 +1,9 @@
rodaPromocao();
$this->mensagem .= 'Cadastro efetuado com sucesso.
';
$this->simpleRedirect('educar_dispensa_disciplina_lst.php?ref_cod_matricula=' . $this->ref_cod_matricula);
@@ -283,6 +289,7 @@ public function Editar()
$editou = $objetoDispensa->edita();
if ($editou) {
+ $this->rodaPromocao();
$this->mensagem .= 'Edição efetuada com sucesso.
';
$this->simpleRedirect('educar_dispensa_disciplina_lst.php?ref_cod_matricula=' . $this->ref_cod_matricula);
}
@@ -305,6 +312,7 @@ public function Excluir()
$excluiu = $objetoDispensa->excluir();
if ($excluiu) {
+ $this->rodaPromocao();
$this->mensagem .= 'Exclusão efetuada com sucesso.
';
$this->simpleRedirect('educar_dispensa_disciplina_lst.php?ref_cod_matricula=' . $this->ref_cod_matricula);
}
@@ -314,6 +322,33 @@ public function Excluir()
return false;
}
+ public function maiorEtapaUtilizada($registration)
+ {
+ $where = [
+ 'ref_ref_cod_escola' => $registration->ref_ref_cod_escola,
+ 'ref_ano' => $registration->ano,
+ ];
+
+ $totalEtapas['total'] = LegacySchoolStage::query()->where($where)->count();
+ $arrayEtapas = [];
+
+ for ($i = 1; $i <= $totalEtapas['total']; $i++)
+ {
+ $arrayEtapas[$i] = strval($i);
+ }
+
+ $arrayEtapas = array_diff($arrayEtapas, $this->etapa);
+ return max($arrayEtapas);
+ }
+
+ public function rodaPromocao()
+ {
+ $registration = LegacyRegistration::find($this->ref_cod_matricula);
+ $_GET['etapa'] = $this->maiorEtapaUtilizada($registration);
+ $promocao = new PromotionService($registration->lastEnrollment()->first());
+ $promocao->fakeRequest();
+ }
+
public function montaEtapas()
{
//Pega matricula para pegar curso, escola e ano
diff --git a/ieducar/intranet/educar_instituicao_cad.php b/ieducar/intranet/educar_instituicao_cad.php
index 889ba6d2fe..f4345b988a 100644
--- a/ieducar/intranet/educar_instituicao_cad.php
+++ b/ieducar/intranet/educar_instituicao_cad.php
@@ -73,6 +73,7 @@ class indice extends clsCadastro
public $exibir_apenas_professores_alocados;
public $bloquear_vinculo_professor_sem_alocacao_escola;
public $permitir_matricula_fora_periodo_letivo;
+ public $ordenar_alunos_sequencial_enturmacao;
public function Inicializar()
{
@@ -123,6 +124,7 @@ public function Inicializar()
$this->exibir_apenas_professores_alocados = dbBool($this->exibir_apenas_professores_alocados);
$this->bloquear_vinculo_professor_sem_alocacao_escola = dbBool($this->bloquear_vinculo_professor_sem_alocacao_escola);
$this->permitir_matricula_fora_periodo_letivo = dbBool($this->permitir_matricula_fora_periodo_letivo);
+ $this->ordenar_alunos_sequencial_enturmacao = dbBool($this->ordenar_alunos_sequencial_enturmacao);
return $retorno;
}
@@ -256,6 +258,15 @@ public function Gerar()
$this->campoCheck('permissao_filtro_abandono_transferencia', 'Não permitir a apresentação de alunos com matrícula em abandono ou transferida na emissão do relatório de frequência', $this->permissao_filtro_abandono_transferencia);
$this->campoCheck('altera_atestado_para_declaracao', 'Alterar nome do título do menu e relatórios de Atestado para Declaração', $this->altera_atestado_para_declaracao);
$this->campoCheck('exibir_apenas_professores_alocados', 'Exibir apenas professores alocados nos filtros de emissão do Diário de classe', $this->exibir_apenas_professores_alocados);
+ $this->campoCheck(
+ 'ordenar_alunos_sequencial_enturmacao',
+ 'Apresentar alunos em relatórios de acordo com a ordenação definida de forma automática/manual na turma',
+ $this->ordenar_alunos_sequencial_enturmacao,
+ null,
+ false,
+ false,
+ false
+ );
$this->campoRotulo('processos_escolares','Processos escolares');
$this->campoCheck('exigir_vinculo_turma_professor', 'Exigir vínculo com turma para lançamento de notas do professor?', $this->exigir_vinculo_turma_professor);
@@ -373,6 +384,7 @@ public function Editar()
$obj->exibir_apenas_professores_alocados = !is_null($this->exibir_apenas_professores_alocados);
$obj->bloquear_vinculo_professor_sem_alocacao_escola = !is_null($this->bloquear_vinculo_professor_sem_alocacao_escola);
$obj->permitir_matricula_fora_periodo_letivo = !is_null($this->permitir_matricula_fora_periodo_letivo);
+ $obj->ordenar_alunos_sequencial_enturmacao = !is_null($this->ordenar_alunos_sequencial_enturmacao);
$detalheAntigo = $obj->detalhe();
diff --git a/ieducar/intranet/educar_usuario_det.php b/ieducar/intranet/educar_usuario_det.php
index 191d0de7ee..d07b04c3bc 100644
--- a/ieducar/intranet/educar_usuario_det.php
+++ b/ieducar/intranet/educar_usuario_det.php
@@ -38,9 +38,9 @@ public function Gerar()
$this->addDetalhe(['Nome', $det_pessoa['nome']]);
- $obj_fisica_cpf = new clsFisica($cod_pessoa);
- $det_fisica_cpf = $obj_fisica_cpf->detalhe();
- $this->addDetalhe(['CPF', int2CPF($det_fisica_cpf['cpf'])]);
+ $obj_fisica = new clsFisica($cod_pessoa);
+ $det_fisica = $obj_fisica->detalhe();
+ $this->addDetalhe(['CPF', int2CPF($det_fisica['cpf'])]);
$obj_funcionario = new clsFuncionario($cod_pessoa);
$det_funcionario = $obj_funcionario->detalhe();
diff --git a/ieducar/intranet/include/pessoa/clsFuncionario.inc.php b/ieducar/intranet/include/pessoa/clsFuncionario.inc.php
index d85bf03208..bee2a4e940 100644
--- a/ieducar/intranet/include/pessoa/clsFuncionario.inc.php
+++ b/ieducar/intranet/include/pessoa/clsFuncionario.inc.php
@@ -24,8 +24,6 @@ class clsFuncionario extends clsPessoaFisica
public $schema_cadastro = 'cadastro';
public $schema_portal = 'portal';
public $tabela_pessoa = 'pessoa';
- public $tabela_funcionario = 'funcionario';
- public $tabela_fisica_cpf = 'fisica';
public function __construct($int_idpes = false, $str_matricula = false, $int_cpf = false, $int_ref_cod_setor = false, $str_senha = false, $data_troca_senha = false, $tempo_expira_senha = false, $data_reativa_conta = false, $tempo_expira_conta = false, $ref_cod_funcionario_vinculo = false, $ramal = false, $matricula_permanente = false, $banido = false, $email = null)
{
diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoFilaUnica.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoFilaUnica.inc.php
index 049cd2bad4..3a281b5c6b 100644
--- a/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoFilaUnica.inc.php
+++ b/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoFilaUnica.inc.php
@@ -770,22 +770,23 @@ public function vinculaMatricula($ref_cod_matricula)
return false;
}
- public function alteraSituacao($situacao, $motivo = null)
+ public function alteraSituacao($situacao, $motivo = null, $data = null)
{
if (!$this->cod_candidato_fila_unica) {
return false;
}
$situacao = $situacao ?: 'NULL';
- $motivo = $motivo ?: 'NULL';
+ $motivo = str_replace("\'", "''", $motivo) ?: 'NULL';
$historico = $this->montaHistorico();
+ $data = $data ?: 'NOW()';
$db = new clsBanco();
$db->Consulta("UPDATE pmieducar.candidato_fila_unica
SET situacao = {$situacao},
- motivo = {$motivo},
+ motivo = '{$motivo}',
data_situacao = NOW(),
- data_solicitacao = NOW(),
+ data_solicitacao = '{$data}',
hora_solicitacao = NOW(),
historico = '{$historico}'
WHERE cod_candidato_fila_unica = '{$this->cod_candidato_fila_unica}'");
diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoReservaVaga.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoReservaVaga.inc.php
index 54d80cdf2f..20da93b6bc 100644
--- a/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoReservaVaga.inc.php
+++ b/ieducar/intranet/include/pmieducar/clsPmieducarCandidatoReservaVaga.inc.php
@@ -14,10 +14,8 @@ class clsPmieducarCandidatoReservaVaga extends Model
public $ref_cod_turno;
public $ref_cod_pessoa_cad;
public $data_cad;
- public $data_update;
public $ref_cod_matricula;
public $situacao;
- public $data_situacao;
public $quantidade_membros;
public $codUsuario;
public $membros_trabalham;
@@ -38,7 +36,6 @@ public function __construct(
$mae_fez_pre_natal = null,
$hora_solicitacao = null
) {
- $db = new clsBanco();
$this->_schema = 'pmieducar.';
$this->_tabela = $this->_schema . 'candidato_reserva_vaga crv ';
@@ -58,7 +55,8 @@ public function __construct(
crv.quantidade_membros,
crv.membros_trabalham,
crv.mae_fez_pre_natal,
- crv.hora_solicitacao ';
+ crv.hora_solicitacao,
+ crv.historico';
if (is_numeric($cod_candidato_reserva_vaga)) {
$this->cod_candidato_reserva_vaga = $cod_candidato_reserva_vaga;
@@ -116,8 +114,11 @@ public function __construct(
*/
public function cadastra()
{
- if (is_numeric($this->ano_letivo) && is_string($this->data_solicitacao) && is_numeric($this->ref_cod_aluno)
- && is_numeric($this->ref_cod_serie) && is_numeric($this->ref_cod_pessoa_cad)) {
+ if (is_numeric($this->ano_letivo) &&
+ is_string($this->data_solicitacao) &&
+ is_numeric($this->ref_cod_aluno) &&
+ is_numeric($this->ref_cod_serie) &&
+ is_numeric($this->ref_cod_pessoa_cad)) {
$db = new clsBanco();
$campos = '';
@@ -229,6 +230,8 @@ public function edita()
if (is_numeric($this->cod_candidato_reserva_vaga)) {
$db = new clsBanco();
$set = '';
+ $gruda = '';
+ $campos = '';
if (is_numeric($this->ano_letivo)) {
$set .= "{$gruda}ano_letivo = '{$this->ano_letivo}'";
@@ -289,10 +292,8 @@ public function edita()
if (is_string($this->hora_solicitacao) && !empty($this->hora_solicitacao)) {
$set .= "{$gruda}hora_solicitacao = '$this->hora_solicitacao'";
- $gruda = ', ';
} elseif (empty($this->hora_solicitacao)) {
$set .= "{$gruda}hora_solicitacao = NULL";
- $gruda = ', ';
}
if ($set) {
@@ -310,20 +311,30 @@ public function edita()
*
* @return array
*/
- public function lista($ano_letivo = null, $nome = null, $nome_responsavel = null, $ref_cod_escola = null, $ref_cod_serie = null, $ref_cod_curso = null, $ref_cod_turno = null, $ref_cod_aluno = null, $situacaoEmEspera = false)
- {
- $filtros = '';
+ public function lista(
+ $ano_letivo = null,
+ $nome = null,
+ $nome_responsavel = null,
+ $ref_cod_escola = null,
+ $ref_cod_serie = null,
+ $ref_cod_curso = null,
+ $ref_cod_turno = null,
+ $ref_cod_aluno = null,
+ $situacaoEmEspera = false
+ ) {
$this->resetCamposLista();
- $sql = "SELECT {$this->_campos_lista}, resp_pes.nome as nome_responsavel, pes.nome as nome, relatorio.get_nome_escola(crv.ref_cod_escola) as nm_escola
- FROM {$this->_tabela}
- INNER JOIN pmieducar.aluno a ON a.cod_aluno = crv.ref_cod_aluno
- INNER JOIN cadastro.pessoa pes ON pes.idpes = a.ref_idpes
- INNER JOIN cadastro.fisica fis ON fis.idpes = pes.idpes
- LEFT JOIN cadastro.pessoa resp_pes ON fis.idpes_responsavel = resp_pes.idpes
- INNER JOIN pmieducar.serie AS ser ON ser.cod_serie = crv.ref_cod_serie ";
+ $sql = "SELECT {$this->_campos_lista},
+ resp_pes.nome as nome_responsavel,
+ pes.nome as nome,
+ relatorio.get_nome_escola(crv.ref_cod_escola) as nm_escola
+ FROM {$this->_tabela}
+ INNER JOIN pmieducar.aluno a ON a.cod_aluno = crv.ref_cod_aluno
+ INNER JOIN cadastro.pessoa pes ON pes.idpes = a.ref_idpes
+ INNER JOIN cadastro.fisica fis ON fis.idpes = pes.idpes
+ LEFT JOIN cadastro.pessoa resp_pes ON fis.idpes_responsavel = resp_pes.idpes
+ INNER JOIN pmieducar.serie AS ser ON ser.cod_serie = crv.ref_cod_serie ";
$whereAnd = ' WHERE ';
-
$filtros = '';
if (is_numeric($ano_letivo)) {
@@ -374,7 +385,6 @@ public function lista($ano_letivo = null, $nome = null, $nome_responsavel = null
if ($situacaoEmEspera) {
$filtros .= " {$whereAnd} crv.situacao IS NULL";
- $whereAnd = ' AND ';
}
$db = new clsBanco();
@@ -382,12 +392,13 @@ public function lista($ano_letivo = null, $nome = null, $nome_responsavel = null
$resultado = [];
$sql .= $filtros . $this->getOrderby() . $this->getLimite();
- $this->_total = $db->CampoUnico("SELECT COUNT(0) FROM {$this->_tabela}
- INNER JOIN pmieducar.aluno a ON a.cod_aluno = crv.ref_cod_aluno
- INNER JOIN cadastro.pessoa pes ON pes.idpes = a.ref_idpes
- INNER JOIN cadastro.fisica fis ON fis.idpes = pes.idpes
- LEFT JOIN cadastro.pessoa resp_pes ON fis.idpes_responsavel = resp_pes.idpes
- INNER JOIN pmieducar.serie AS ser ON ser.cod_serie = crv.ref_cod_serie {$filtros}");
+ $this->_total = $db->CampoUnico("SELECT COUNT(0)
+ FROM {$this->_tabela}
+ INNER JOIN pmieducar.aluno a ON a.cod_aluno = crv.ref_cod_aluno
+ INNER JOIN cadastro.pessoa pes ON pes.idpes = a.ref_idpes
+ INNER JOIN cadastro.fisica fis ON fis.idpes = pes.idpes
+ LEFT JOIN cadastro.pessoa resp_pes ON fis.idpes_responsavel = resp_pes.idpes
+ INNER JOIN pmieducar.serie AS ser ON ser.cod_serie = crv.ref_cod_serie {$filtros}");
$db->Consulta($sql);
@@ -420,12 +431,18 @@ public function detalhe()
{
if (is_numeric($this->cod_candidato_reserva_vaga)) {
$db = new clsBanco();
- $db->Consulta("SELECT {$this->_todos_campos}, resp_pes.nome as nome_responsavel, pes.nome as nome, crv.motivo as motivo, relatorio.get_nome_escola(crv.ref_cod_escola) as nm_escola, (SELECT nm_serie FROM pmieducar.serie WHERE cod_serie = ref_cod_serie) as serie FROM {$this->_tabela}
- INNER JOIN pmieducar.aluno a ON a.cod_aluno = crv.ref_cod_aluno
- INNER JOIN cadastro.pessoa pes ON pes.idpes = a.ref_idpes
- INNER JOIN cadastro.fisica fis ON fis.idpes = pes.idpes
- LEFT JOIN cadastro.pessoa resp_pes ON fis.idpes_responsavel = resp_pes.idpes
- WHERE cod_candidato_reserva_vaga = '{$this->cod_candidato_reserva_vaga}'");
+ $db->Consulta("SELECT {$this->_todos_campos},
+ resp_pes.nome as nome_responsavel,
+ pes.nome as nome,
+ crv.motivo as motivo,
+ relatorio.get_nome_escola(crv.ref_cod_escola) as nm_escola,
+ (SELECT nm_serie FROM pmieducar.serie WHERE cod_serie = ref_cod_serie) as serie
+ FROM {$this->_tabela}
+ INNER JOIN pmieducar.aluno a ON a.cod_aluno = crv.ref_cod_aluno
+ INNER JOIN cadastro.pessoa pes ON pes.idpes = a.ref_idpes
+ INNER JOIN cadastro.fisica fis ON fis.idpes = pes.idpes
+ LEFT JOIN cadastro.pessoa resp_pes ON fis.idpes_responsavel = resp_pes.idpes
+ WHERE cod_candidato_reserva_vaga = '{$this->cod_candidato_reserva_vaga}'");
$db->ProximoRegistro();
return $db->Tupla();
@@ -434,16 +451,24 @@ public function detalhe()
return false;
}
+ /**
+ * @param null $ano_letivo
+ * @param null $ref_cod_serie
+ * @param null $ref_cod_aluno
+ * @param null $ref_cod_escola
+ *
+ * @return bool
+ *
+ * @throws Exception
+ */
public function atualizaDesistente($ano_letivo = null, $ref_cod_serie = null, $ref_cod_aluno = null, $ref_cod_escola = null)
{
- $filtros = '';
$this->resetCamposLista();
$sql = "UPDATE {$this->_tabela}
SET situacao = 'D', data_situacao = NOW()";
$whereAnd = ' WHERE ';
-
$filtros = '';
if (is_numeric($ano_letivo)) {
@@ -463,15 +488,10 @@ public function atualizaDesistente($ano_letivo = null, $ref_cod_serie = null, $r
if (is_numeric($ref_cod_escola)) {
$filtros .= " {$whereAnd} ref_cod_escola <> {$ref_cod_escola} ";
- $whereAnd = ' AND ';
}
$db = new clsBanco();
- $countCampos = count(explode(',', $this->_campos_lista));
- $resultado = [];
-
$sql .= $filtros . $this->getOrderby() . $this->getLimite();
-
$db->Consulta($sql);
return true;
@@ -512,29 +532,62 @@ public function excluir()
return false;
}
- public function vinculaMatricula($ref_cod_escola, $ref_cod_matricula, $ref_cod_aluno)
+ /**
+ * @return false|string
+ */
+ protected function montaHistorico()
{
- if (is_numeric($ref_cod_escola) && is_numeric($ref_cod_matricula) && is_numeric($ref_cod_aluno)) {
- $sql = "UPDATE pmieducar.candidato_reserva_vaga SET ref_cod_matricula = '{$ref_cod_matricula}', situacao = 'A', data_situacao = NOW()
- WHERE ref_cod_escola = '{$ref_cod_escola}'
- AND ref_cod_aluno = '{$ref_cod_aluno}'";
- $db = new clsBanco();
- $db->Consulta($sql);
- $db->ProximoRegistro();
+ $detalhes = $this->detalhe();
+ $historico = $detalhes['historico'];
- return $db->Tupla();
+ if (is_null($historico)) {
+ $historico = [];
+ } else {
+ $historico = json_decode($historico, true);
}
- return false;
+ $mapaSituacao = [
+ null => 'Em espera',
+ 'I' => 'Indeferida',
+ 'A' => 'Atendida',
+ ];
+
+ $data = $detalhes['data_situacao'] ?? $detalhes['data_solicitacao'];
+ $data = date('d/m/Y', strtotime($data));
+
+ $historico[] = [
+ 'situacao' => $mapaSituacao[$detalhes['situacao']] ?? 'Desconhecida',
+ 'motivo' => trim($detalhes['motivo']),
+ 'data' => $data,
+ ];
+
+ return json_encode($historico);
}
- public function indefereOutrasReservas($cod_aluno)
+ /**
+ * @param $ref_cod_escola
+ * @param $ref_cod_matricula
+ * @param $ref_cod_aluno
+ *
+ * @return bool|mixed
+ *
+ * @throws Exception
+ */
+ public function vinculaMatricula($ref_cod_escola, $ref_cod_matricula, $ref_cod_aluno)
{
- if (is_numeric($this->cod_candidato_reserva_vaga) && is_numeric($cod_aluno)) {
+ if (is_numeric($ref_cod_escola) &&
+ is_numeric($ref_cod_matricula) &&
+ is_numeric($ref_cod_aluno)) {
+ $historico = $this->montaHistorico();
+ $sql = "UPDATE pmieducar.candidato_reserva_vaga
+ SET ref_cod_matricula = '{$ref_cod_matricula}',
+ situacao = 'A',
+ data_situacao = NOW(),
+ historico = '{$historico}'
+ WHERE ref_cod_escola = '{$ref_cod_escola}'
+ AND ref_cod_aluno = '{$ref_cod_aluno}'";
$db = new clsBanco();
- $db->Consulta("UPDATE pmieducar.candidato_reserva_vaga SET situacao = 'N', data_situacao = NOW()
- WHERE cod_candidato_reserva_vaga <> '{$this->cod_candidato_reserva_vaga}'
- AND ref_cod_aluno = {$cod_aluno} ");
+ $db->Consulta($sql);
$db->ProximoRegistro();
return $db->Tupla();
@@ -543,14 +596,26 @@ public function indefereOutrasReservas($cod_aluno)
return false;
}
+ /**
+ * @param null $motivo
+ *
+ * @return bool|mixed
+ *
+ * @throws Exception
+ */
public function indefereSolicitacao($motivo = null)
{
$motivo = $motivo == null ? 'null' : '\'' . $motivo . '\'';
if (is_numeric($this->cod_candidato_reserva_vaga)) {
+ $historico = $this->montaHistorico();
$db = new clsBanco();
- $db->Consulta("UPDATE pmieducar.candidato_reserva_vaga SET situacao = 'N', motivo = $motivo, data_situacao = NOW()
- WHERE cod_candidato_reserva_vaga = '{$this->cod_candidato_reserva_vaga}'");
+ $db->Consulta("UPDATE pmieducar.candidato_reserva_vaga
+ SET situacao = 'N',
+ motivo = $motivo,
+ data_situacao = NOW(),
+ historico = '{$historico}'
+ WHERE cod_candidato_reserva_vaga = '{$this->cod_candidato_reserva_vaga}'");
$db->ProximoRegistro();
return $db->Tupla();
@@ -559,21 +624,36 @@ public function indefereSolicitacao($motivo = null)
return false;
}
- public function alteraSituacao($situacao, $motivo = null)
+ /**
+ * @param $situacao
+ * @param null $motivo
+ *
+ * @return bool
+ *
+ * @throws Exception
+ */
+ public function alteraSituacao($situacao, $motivo = null, $data = null)
{
if (!$this->cod_candidato_reserva_vaga) {
return false;
}
$situacao = $situacao ?: 'NULL';
- $motivo = $motivo ?: 'NULL';
+ $motivo = str_replace("\'", "''", addslashes($motivo)) ?: null;
+ if ($data) {
+ $data = "data_solicitacao = to_date('{$data}','DD-MM-YYYY'),";
+ }
+
+ $historico = $this->montaHistorico();
$db = new clsBanco();
$db->Consulta("UPDATE pmieducar.candidato_reserva_vaga
- SET situacao = {$situacao},
- motivo = {$motivo},
- data_situacao = NOW()
- WHERE cod_candidato_reserva_vaga = '{$this->cod_candidato_reserva_vaga}'");
+ SET situacao = {$situacao},
+ motivo = '{$motivo}',
+ {$data}
+ data_situacao = NOW(),
+ historico = '{$historico}'
+ WHERE cod_candidato_reserva_vaga = '{$this->cod_candidato_reserva_vaga}'");
return true;
}
diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarInstituicao.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarInstituicao.inc.php
index 1013a92e1a..8095af278d 100644
--- a/ieducar/intranet/include/pmieducar/clsPmieducarInstituicao.inc.php
+++ b/ieducar/intranet/include/pmieducar/clsPmieducarInstituicao.inc.php
@@ -51,6 +51,7 @@ class clsPmieducarInstituicao extends Model
public $exibir_apenas_professores_alocados;
public $bloquear_vinculo_professor_sem_alocacao_escola;
public $permitir_matricula_fora_periodo_letivo;
+ public $ordenar_alunos_sequencial_enturmacao;
public function __construct(
$cod_instituicao = null,
@@ -81,7 +82,8 @@ public function __construct(
$exigir_lancamentos_anteriores = null,
$exibir_apenas_professores_alocados = null,
$bloquear_vinculo_professor_sem_alocacao_escola = null,
- $permitir_matricula_fora_periodo_letivo = null
+ $permitir_matricula_fora_periodo_letivo = null,
+ $ordenar_alunos_sequencial_enturmacao = null
) {
$db = new clsBanco();
$this->_schema = 'pmieducar.';
@@ -136,7 +138,8 @@ public function __construct(
exigir_lancamentos_anteriores,
exibir_apenas_professores_alocados,
bloquear_vinculo_professor_sem_alocacao_escola,
- permitir_matricula_fora_periodo_letivo
+ permitir_matricula_fora_periodo_letivo,
+ ordenar_alunos_sequencial_enturmacao
';
if (is_numeric($ref_usuario_cad)) {
@@ -249,6 +252,10 @@ public function __construct(
if (is_bool($permitir_matricula_fora_periodo_letivo)) {
$this->permitir_matricula_fora_periodo_letivo = $permitir_matricula_fora_periodo_letivo;
}
+
+ if (is_bool($ordenar_alunos_sequencial_enturmacao)) {
+ $this->ordenar_alunos_sequencial_enturmacao = $ordenar_alunos_sequencial_enturmacao;
+ }
}
public function canRegister()
@@ -635,6 +642,16 @@ public function cadastra()
$gruda = ', ';
}
+ if (dbBool($this->ordenar_alunos_sequencial_enturmacao)) {
+ $campos .= "{$gruda}ordenar_alunos_sequencial_enturmacao";
+ $valores .= "{$gruda} true ";
+ $gruda = ', ';
+ } else {
+ $campos .= "{$gruda}ordenar_alunos_sequencial_enturmacao";
+ $valores .= "{$gruda} false ";
+ $gruda = ', ';
+ }
+
if (is_string($this->orgao_regional) and !empty($this->orgao_regional)) {
$campos .= "{$gruda}orgao_regional";
$valores .= "{$gruda}'{$this->orgao_regional}'";
@@ -994,6 +1011,14 @@ public function edita()
$gruda = ', ';
}
+ if (dbBool($this->ordenar_alunos_sequencial_enturmacao)) {
+ $set .= "{$gruda}ordenar_alunos_sequencial_enturmacao = true ";
+ $gruda = ', ';
+ } else {
+ $set .= "{$gruda}ordenar_alunos_sequencial_enturmacao = false ";
+ $gruda = ', ';
+ }
+
if ($set) {
$db->Consulta("UPDATE {$this->_tabela} SET $set WHERE cod_instituicao = '{$this->cod_instituicao}'");
diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php
index 82e366e07d..fc51695d4d 100644
--- a/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php
+++ b/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php
@@ -359,7 +359,8 @@ public function lista(
$int_ano_turma = false,
$dependencia = null,
$apenasTurmasMultiSeriadas = false,
- $apenasTurmasUnificadas = false
+ $apenasTurmasUnificadas = false,
+ $ultimoSequencialNaTurma = false
) {
$nome = '';
$tab_aluno = '';
@@ -623,6 +624,16 @@ public function lista(
$whereAnd = ' AND ';
}
+ if ($ultimoSequencialNaTurma) {
+ $filtros .= "{$whereAnd} mt.sequencial = (
+ SELECT max(sequencial)
+ FROM pmieducar.matricula_turma
+ WHERE matricula_turma.ref_cod_turma = mt.ref_cod_turma
+ AND matricula_turma.ref_cod_matricula = m.cod_matricula
+ )";
+ $whereAnd = ' AND ';
+ }
+
$db = new clsBanco();
$countCampos = count(explode(',', $this->_campos_lista));
$resultado = [];
diff --git a/ieducar/lib/App/Unificacao/Pessoa.php b/ieducar/lib/App/Unificacao/Pessoa.php
index a6fd98174e..40de7cb568 100644
--- a/ieducar/lib/App/Unificacao/Pessoa.php
+++ b/ieducar/lib/App/Unificacao/Pessoa.php
@@ -21,10 +21,6 @@ class App_Unificacao_Pessoa extends App_Unificacao_Base
'tabela' => 'cadastro.fisica',
'coluna' => 'idpes'
],
- [
- 'tabela' => 'cadastro.fisica_cpf',
- 'coluna' => 'idpes'
- ],
[
'tabela' => 'cadastro.fisica_foto',
'coluna' => 'idpes'
@@ -96,14 +92,6 @@ class App_Unificacao_Pessoa extends App_Unificacao_Base
'tabela' => 'cadastro.fisica',
'coluna' => 'idpes_cad'
],
- [
- 'tabela' => 'cadastro.fisica_cpf',
- 'coluna' => 'idpes_rev'
- ],
- [
- 'tabela' => 'cadastro.fisica_cpf',
- 'coluna' => 'idpes_cad'
- ],
[
'tabela' => 'cadastro.fone_pessoa',
'coluna' => 'idpes_rev'
diff --git a/ieducar/modules/Avaliacao/Views/DiarioApiController.php b/ieducar/modules/Avaliacao/Views/DiarioApiController.php
index 935e5753c7..e23c4171dc 100644
--- a/ieducar/modules/Avaliacao/Views/DiarioApiController.php
+++ b/ieducar/modules/Avaliacao/Views/DiarioApiController.php
@@ -832,6 +832,12 @@ protected function getMatriculas()
null,
null,
null,
+ true,
+ null,
+ null,
+ null,
+ null,
+ null,
true
);