From f377631c3d87801d38b87752421d8038ea1eb708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Gon=C3=A7alves?= Date: Thu, 21 Mar 2024 18:02:37 -0300 Subject: [PATCH 01/15] ci: add release sql --- releases/v.3.75.123.sql | 151 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 releases/v.3.75.123.sql diff --git a/releases/v.3.75.123.sql b/releases/v.3.75.123.sql new file mode 100644 index 000000000..fbec1cda2 --- /dev/null +++ b/releases/v.3.75.123.sql @@ -0,0 +1,151 @@ +CREATE TABLE farmer_register ( + id INT(11) NOT NULL AUTO_INCREMENT, + name VARCHAR(100) NOT NULL, + cpf VARCHAR(11) NOT NULL, + phone VARCHAR(11) NULL, + group_type ENUM('Fornecedor Individual', 'Grupo Formal', 'Grupo Informal') NULL, + PRIMARY KEY (id) +); + +CREATE TABLE farmer_foods ( + id INT(11) NOT NULL AUTO_INCREMENT, + food_fk INT(11), + farmer_fk INT(11), + measurementUnit ENUM('g', 'Kg', 'l', 'pacote', 'unidade') NULL, + amount FLOAT NOT NULL, + PRIMARY KEY (id) +); + +ALTER TABLE farmer_foods +ADD CONSTRAINT fk_farmer_foods_food +FOREIGN KEY (food_fk) REFERENCES food(id); + +ALTER TABLE farmer_foods +ADD CONSTRAINT fk_farmer_foods_farmer_register +FOREIGN KEY (farmer_fk) REFERENCES farmer_register(id); +-- ===================================================================== + +CREATE TABLE food_notice ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + date DATE NOT NULL +); +CREATE TABLE food_notice_item ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + description VARCHAR(1000) NULL, + measurement VARCHAR(20) NOT NULL, + year_amount int(11) NOT NULL +); +CREATE TABLE food_notice_vs_food_notice_item ( + id INT PRIMARY KEY AUTO_INCREMENT, + food_notice_id INT, + food_notice_item_id INT, + FOREIGN KEY (food_notice_id) REFERENCES food_notice(id), + FOREIGN KEY (food_notice_item_id) REFERENCES food_notice_item(id) +); +ALTER TABLE food_notice_item +ADD COLUMN food_id INT, +ADD CONSTRAINT fk_food_notice_item_food + FOREIGN KEY (food_id) + REFERENCES food(id); +ALTER TABLE food_notice_item +MODIFY COLUMN year_amount VARCHAR(20); + +-- ================================================================================================== + +ALTER TABLE food_request ADD status ENUM('Em andamento','Finalizado') DEFAULT 'Em andamento' + +ALTER TABLE food_request DROP delivered; + +ALTER TABLE food_request ADD COLUMN school_fk VARCHAR(8) NOT NULL COLLATE utf8_unicode_ci; + +ALTER TABLE food_request +ADD CONSTRAINT food_request_school_fk +FOREIGN KEY (school_fk) REFERENCES school_identification(inep_id) +ON DELETE NO ACTION +ON UPDATE CASCADE; + +-- ===================================================================================================== + +-- CRIAR O EDCENSO_ALIAS 2024 PRA IMPORTAR OS BANCOS AUXILIARES + +insert into edcenso_alias (register, corder, attr, cdesc, `default`, stable, `year`) +select register, corder, attr, cdesc, `default`, stable, '2024' from edcenso_alias where `year` = '2023'; + +UPDATE `edcenso_alias` SET +`register` = '301', +`corder` = '98', +`attr` = 'id_email', +`cdesc` = 'Endereço Eletrônico (e-mail)', +`default` = NULL, +`stable` = 'STUDENT_IDENTIFICATION', +`year` = '2024' +WHERE `register` = '301' AND `corder` = '98' AND `attr` = 'id_email' AND `attr` = 'id_email' COLLATE utf8mb4_bin AND `cdesc` = 'Endereço Eletrônico (e-mail)' AND `cdesc` = 'Endereço Eletrônico (e-mail)' COLLATE utf8mb4_bin AND `year` = '2024' AND `default` IS NULL AND `stable` IS NULL +LIMIT 1; + +UPDATE `edcenso_alias` SET +`register` = '301', +`corder` = '19', +`attr` = 'deficiency_type_monocular_vision', +`cdesc` = 'Visão Monocular', +`default` = NULL, +`stable` = 'STUDENT_IDENTIFICATION', +`year` = '2024' +WHERE `register` = '301' AND `corder` = '19' AND `attr` = 'deficiency_type_monocular_vision' AND `attr` = 'deficiency_type_monocular_vision' COLLATE utf8mb4_bin AND `cdesc` = 'Visão Monocular' AND `cdesc` = 'Visão Monocular' COLLATE utf8mb4_bin AND `year` = '2024' AND `default` IS NULL AND `stable` IS NULL +LIMIT 1; + +UPDATE `edcenso_alias` SET +`register` = '302', +`corder` = '5', +`attr` = 'cpf', +`cdesc` = 'Número do CPF', +`default` = NULL, +`stable` = NULL, +`year` = '2024' +WHERE `register` = '302' AND `corder` = '5' AND `attr` = 'cpf' AND `attr` = 'cpf' COLLATE utf8mb4_bin AND `cdesc` = 'Número do CPF' AND `cdesc` = 'Número do CPF' COLLATE utf8mb4_bin AND `stable` = 'INSTRUCTOR_IDENTIFICATION' AND `stable` = 'INSTRUCTOR_IDENTIFICATION' COLLATE utf8mb4_bin AND `year` = '2024' AND `default` IS NULL +LIMIT 1; + +UPDATE `edcenso_alias` SET +`register` = '302', +`corder` = '98', +`attr` = 'email', +`cdesc` = 'Endereço Eletrônico (e-mail)', +`default` = NULL, +`stable` = 'INSTRUCTOR_IDENTIFICATION', +`year` = '2024' +WHERE `register` = '302' AND `corder` = '98' AND `attr` = 'email' AND `attr` = 'email' COLLATE utf8mb4_bin AND `cdesc` = 'Endereço Eletrônico (e-mail)' AND `cdesc` = 'Endereço Eletrônico (e-mail)' COLLATE utf8mb4_bin AND `year` = '2024' AND `default` IS NULL AND `stable` IS NULL +LIMIT 1; + +UPDATE `edcenso_alias` SET +`register` = '302', +`corder` = '19', +`attr` = 'deficiency_type_monocular_vision', +`cdesc` = 'Visão Monocular', +`default` = NULL, +`stable` = 'INSTRUCTOR_IDENTIFICATION', +`year` = '2024' +WHERE `register` = '302' AND `corder` = '19' AND `attr` = 'deficiency_type_monocular_vision' AND `attr` = 'deficiency_type_monocular_vision' COLLATE utf8mb4_bin AND `cdesc` = 'Visão Monocular' AND `cdesc` = 'Visão Monocular' COLLATE utf8mb4_bin AND `year` = '2024' AND `default` IS NULL AND `stable` IS NULL +LIMIT 1; + +-- COMO AS TURMAS, ALUNOS E PROFESSORES PODEM NÃO TER INEP_ID, PRECISA-SE DE COLUNA AUXILIAR PARA MAPEAR OS REGISTROS 50 E 60 + +ALTER TABLE `classroom` +ADD `censo_own_system_code` varchar(20) NULL; + +ALTER TABLE `student_identification` +ADD `censo_own_system_code` varchar(20) NULL; + +ALTER TABLE `instructor_identification` +ADD `censo_own_system_code` varchar(20) NULL; + + +-- ===================================================================================================== + +ALTER TABLE food_menu ADD adjusted BOOL DEFAULT 0 NULL; + +-- ===================================================================================================== + +ALTER TABLE food_menu DROP FOREIGN KEY stage_food_menu; +ALTER TABLE food_menu DROP INDEX stage_food_menu; +ALTER TABLE food_menu DROP COLUMN stage_fk; From 66e4ff4c74ad79a32df28f00d171ce801f92bbc1 Mon Sep 17 00:00:00 2001 From: Nathan Santos Date: Tue, 26 Mar 2024 10:53:07 -0300 Subject: [PATCH 02/15] Feat: added new version in changelog and config --- CHANGELOG.md | 3 +++ config.php | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a76f95b..9956fb729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [Versão 3.76.128] +- Corrigido na busca por profissional na mesma escola + ## [Versão 3.76.127] - Corrigido erro que não saía do painel de cadastros pendentes, referente à matriz curricular e estrutura de notas diff --git a/config.php b/config.php index 5c44512fb..88945d9ac 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,7 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.76.127'); +define("TAG_VERSION", '3.76.128'); define("YII_VERSION", Yii::getVersion()); define("BOARD_MSG", '
Novas atualizações no TAG. Confira clicando aqui.
'); From 0f67679794c12169c1a78572a050010abc98f812 Mon Sep 17 00:00:00 2001 From: Nathan Santos <117388330+nathanipti@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:13:36 -0300 Subject: [PATCH 03/15] Feat/added professional for different schools (#665) * Feat: added professional for different schools * Fix: remove unique for cpf_professional * Feat: added new version in changelog and config * Feat: added new version in changelog and config * Fix: correction in find professional --- app/modules/professional/controllers/DefaultController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/modules/professional/controllers/DefaultController.php b/app/modules/professional/controllers/DefaultController.php index ee279a3d6..298eb01f9 100644 --- a/app/modules/professional/controllers/DefaultController.php +++ b/app/modules/professional/controllers/DefaultController.php @@ -51,9 +51,13 @@ public function actionCreate() $modelProfessional->attributes=$_POST['Professional']; $modelProfessional->inep_id_fk = Yii::app()->user->school; - $professional = Professional::model()->findByAttributes(array('inep_id_fk' => Yii::app()->user->school)); + $professional = Professional::model()->findByAttributes(array( + 'inep_id_fk' => Yii::app()->user->school, + 'cpf_professional' => array($modelProfessional->cpf_professional, str_replace(['.', '-'] , '' , $modelProfessional->cpf_professional)) + )); if($professional === null) { + $modelProfessional->cpf_professional = str_replace(['.', '-'] , '' , $modelProfessional->cpf_professional); if($modelProfessional->validate()) { if($modelProfessional->save()) { Yii::app()->user->setFlash('success', Yii::t('default', 'Profissional cadastrado com sucesso!')); From 083779d73f2b0c99d3a53aabf328cd43c6cd7c18 Mon Sep 17 00:00:00 2001 From: Nathan Santos <117388330+nathanipti@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:14:26 -0300 Subject: [PATCH 04/15] Fix: correction in inep_id (#664) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: correction in inep_id * Feat: added new version in changelog and config --------- Co-authored-by: Igor Gonçalves --- CHANGELOG.md | 1 + .../sagres/models/SagresConsultModel.php | 277 +++++++++--------- 2 files changed, 142 insertions(+), 136 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9956fb729..91c9af6e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ ## [Versão 3.76.128] +- Corrigido erro que não mostrava o nome da escola e das turmas nas inconsistências sagres - Corrigido na busca por profissional na mesma escola ## [Versão 3.76.127] diff --git a/app/modules/sagres/models/SagresConsultModel.php b/app/modules/sagres/models/SagresConsultModel.php index 108d35c99..a9f5740f9 100644 --- a/app/modules/sagres/models/SagresConsultModel.php +++ b/app/modules/sagres/models/SagresConsultModel.php @@ -439,6 +439,7 @@ public function getSeries($classId, $inepId) $seriesList = []; $strlen = 2; $strMaxLength = 50; + $school = (object) \SchoolIdentification::model()->findByAttributes(array('inep_id' => $inepId)); $query = "SELECT c.name AS serieDescription, @@ -459,9 +460,9 @@ classroom c if (empty($serieType)) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'SÉRIE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'Não há série para a escola: '; - $inconsistencyModel->action = 'Adicione uma série para a turma: '; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Não há série para a escola: ' . $school->name; + $inconsistencyModel->action = 'Adicione uma série para a turma'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); @@ -471,7 +472,7 @@ classroom c if (strlen($serieType->getDescricao()) <= $strlen) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'SÉRIE'; - $inconsistencyModel->school = ''; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Descrição para a série: ' . $serieType->getDescricao() . ' menor que 3 caracteres'; $inconsistencyModel->action = 'Forneça uma descrição mais detalhada, contendo mais de 5 caracteres'; $inconsistencyModel->identifier = '10'; @@ -483,7 +484,7 @@ classroom c if (strlen($serieType->getDescricao()) > $strMaxLength) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'SÉRIE'; - $inconsistencyModel->school = ''; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Descrição para a série: ' . $serieType->getDescricao() . ' com mais de 50 caracteres'; $inconsistencyModel->action = 'Forneça uma descrição menos detalhada, contendo até 50 caracteres'; $inconsistencyModel->identifier = '10'; @@ -501,7 +502,7 @@ classroom c if (!in_array($serieType->getModalidade(), [1, 2, 3, 4, 5])) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'SÉRIE'; - $inconsistencyModel->school = ''; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Modalidade inválida'; $inconsistencyModel->action = 'Selecione uma modalidade válida para a série'; $inconsistencyModel->identifier = '10'; @@ -526,6 +527,8 @@ public function getSchedules($classId, $month, $inepId) $strlen = 3; $maxLength = 100; + $school = (object) \SchoolIdentification::model()->findByAttributes(array('inep_id' => $inepId)); + $query = "SELECT DISTINCT s.schedule AS schedule, s.week_day AS weekDay, @@ -553,18 +556,18 @@ public function getSchedules($classId, $month, $inepId) $schedules = Yii::app()->db->createCommand($query)->bindValues($params)->queryAll(); + $class = (object) \Classroom::model()->findByAttributes(array('id' => $classId)); + if(empty($schedules)) { - if (empty($schedules)) { - $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'Não há um quadro de horários para a turma: '; - $inconsistencyModel->action = 'Adicione um quadro de horários para turma'; - $inconsistencyModel->identifier = '10'; - $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; - $inconsistencyModel->insert(); - } + $inconsistencyModel = new ValidationSagresModel(); + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Não há um quadro de horários para a turma: ' . $class->name . ''; + $inconsistencyModel->action = 'Adicione um quadro de horários para turma'; + $inconsistencyModel->identifier = '10'; + $inconsistencyModel->idClass = $classId; + $inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->insert(); } @@ -595,74 +598,74 @@ public function getSchedules($classId, $month, $inepId) if (empty($scheduleType)) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Não há um professor, horários ou componentes curriculares para a turma: '; $inconsistencyModel->action = 'Adicione um professor ou componentes curriculares à turma'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } if (!in_array($scheduleType->getDiaSemana(), [1, 2, 3, 4, 5, 6, 7])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Dia da semana inválido: ' . $scheduleType->getDiaSemana(); $inconsistencyModel->action = 'Adicione um dia da semana válido para a disciplina'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } if (!is_int($scheduleType->getDuracao())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Duração inválida'; $inconsistencyModel->action = 'Adicione um dia da semana válido para a disciplina'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } $cpfInstructor = $scheduleType->getCpfProfessor(); if (!$this->validaCPF($cpfInstructor[0])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'CPF do professor é inválido, vinculado a turma: '; $inconsistencyModel->action = 'Informar um CPF válido para o professor'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } if (strlen($scheduleType->getDisciplina()) < $strlen) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Nome da disciplina muito curta'; $inconsistencyModel->action = 'Adicione um nome para a disciplina com pelo menos 5 caracteres'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } if (strlen($scheduleType->getDisciplina()) > $maxLength) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Nome da disciplina com mais de 50 caracteres - ' . $scheduleType->getDisciplina(); $inconsistencyModel->action = 'Adicione um nome para a disciplina com até 50 caracteres'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; - #$inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } @@ -980,6 +983,7 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i $enrollmentList = []; $strMaxLength = 200; $strlen = 5; + $school = (object) \SchoolIdentification::model()->findByAttributes(array('inep_id' => $inepId)); $query = "SELECT se.id as numero, @@ -1018,8 +1022,8 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (DateTime::createFromFormat("d/m/Y", $enrollment['birthdate']) === false) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Data de nascimento inválida'; $inconsistencyModel->action = 'Altere o formato de data para DD/MM/AAAA'; $inconsistencyModel->identifier = '9'; @@ -1049,10 +1053,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!is_null($studentType->getCpfAluno())) { if (!$this->validaCPF($studentType->getCpfAluno())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'CPF DO ESTUDANTE É INVÁLIDO'; - $inconsistencyModel->action = 'INFORME UM CPF VÁLIDO PARA O ESTUDANTE: ' . $enrollment['name']; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Cpf do estudante é inválido'; + $inconsistencyModel->action = 'Informe um cpf válido para o estudante: ' . $enrollment['name'] . ''; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1062,10 +1066,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (is_null($studentType->getCpfAluno())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'É OBRIGATÓRIO INFORMAR O CPF DO ESTUDANTE'; - $inconsistencyModel->action = 'INFORME UM CPF PARA O ESTUDANTE: ' . $enrollment['name']; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'É obrigatório informar o cpf do estudante'; + $inconsistencyModel->action = 'Informe um cpf para o estudante: ' . $enrollment['name'] . ''; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->insert(); @@ -1073,10 +1077,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!$this->validateDate($studentType->getDataNascimento())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'DATA NO FORMATO INVÁLIDO: ' . $enrollment['birthdate']; - $inconsistencyModel->action = 'ADICIONE UMA DATA NO FORMATO VÁLIDA'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Data no formato inválido: ' . $enrollment['birthdate']; + $inconsistencyModel->action = 'Adicione uma data no formato válido'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1086,10 +1090,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (strlen($studentType->getNome()) < $strlen) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'NOME DO ESTUDANTE COM MENOS DE 5 CARACTERES'; - $inconsistencyModel->action = 'ADICIONE UM NOME PARA O ESTUDANTE COM PELO MENOS 5 CARACTERES'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Nome do estudante com menos de 5 caracteres'; + $inconsistencyModel->action = 'Adicione um nome para o estudante com pelo menos 5 caracteres'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1098,10 +1102,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if ($studentType->getNome() > $strMaxLength) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'NOME DO ESTUDANTE COM MAIS DE 200 CARACTERES'; - $inconsistencyModel->action = 'ADICIONE UM NOME PARA O ESTUDANTE COM ATÉ 200 CARACTERES'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Nome do estudante com mais de 200 caracteres'; + $inconsistencyModel->action = 'Adicione um nome para o estudante com até 200 caracteres'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1110,10 +1114,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!is_bool(boolval($studentType->getPcd()))) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'CÓDIGO PCD É INVÁLIDO'; - $inconsistencyModel->action = 'ADICIONE UM VALOR VÁLIDO PARA O PCD'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Código pcd é inválido'; + $inconsistencyModel->action = 'Adicione um valor válido para o pcd'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1122,10 +1126,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if ($studentType->getDataNascimento() === false) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'DATA DE NASCIMENTO INVÁLIDA'; - $inconsistencyModel->action = 'ALTERE O FORMATO DE DATA PARA DD/MM/AAAA'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Data de nascimento inválida'; + $inconsistencyModel->action = 'Altere o formato de data para dd/mm/aaaa'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1134,10 +1138,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!in_array($studentType->getSexo(), [1, 2, 3])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'SEXO NÃO É VÁLIDO'; - $inconsistencyModel->action = 'ADICIONE UM SEXO VÁLIDO PARA O ESTUDANTE'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Sexo não é válido'; + $inconsistencyModel->action = 'Adicione um sexo válido para o estudante'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1154,10 +1158,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (is_null($studentType)) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'ESTUDANTE NÃO EXISTE PARA A MATRÍCULA DA TURMA: '; - $inconsistencyModel->action = 'ADICIONE UM ESTUDANTE À TURMA DA ESCOLA'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Estudante não existe para a matrícula da turma: '; + $inconsistencyModel->action = 'Adicione um estudante à turma da escola'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1171,39 +1175,40 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (empty($enrollmentType)) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'NÃO HÁ MATRÍCULA PARA A TURMA'; - $inconsistencyModel->action = 'ADICIONE UMA MATRÍCULA PARA A TURMA'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Não há matrícula para a turma'; + $inconsistencyModel->action = 'Adicione uma matrícula para a turma'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } - + if (!$this->validateDate($enrollmentType->getDataMatricula())) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'DATA NO FORMATO INVÁLIDO'; - $inconsistencyModel->action = 'ADICIONE UMA DATA NO FORMATO VÁLIDO'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Data no formato inválido'; + $inconsistencyModel->action = 'Adicione uma data no formato válido'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } - + if (!is_int($enrollmentType->getNumeroFaltas())) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'O VALOR PARA O NÚMERO DE FALTAS É INVÁLIDO'; - $inconsistencyModel->action = 'COLOQUE UM VALOR VÁLIDO PARA O NÚMERO DE FALTAS'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'O valor para o número de faltas é inválido'; + $inconsistencyModel->action = 'Coloque um valor válido para o número de faltas'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } + if (filter_var($finalClass, FILTER_VALIDATE_BOOLEAN)) { if (!is_bool($enrollmentType->getAprovado())) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'VALOR INVÁLIDO PARA O STATUS APROVADO'; - $inconsistencyModel->action = 'ADICIONE UM VALOR VÁLIDO PARA O CAMPO APROVADO DO ALUNO: ' . $studentType->getNome(); + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Valor inválido para o status aprovado'; + $inconsistencyModel->action = 'Adicione um valor válido para o campo aprovado do aluno: ' . $studentType->getNome(); $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } @@ -1224,10 +1229,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!is_null($studentType->getCpfAluno())) { if (!$this->validaCPF($studentType->getCpfAluno())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'CPF DO ESTUDANTE É INVÁLIDO'; - $inconsistencyModel->action = 'INFORME UM CPF VÁLIDO PARA O ESTUDANTE: ' . $enrollment['name']; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Cpf do estudante é inválido'; + $inconsistencyModel->action = 'Informe um cpf válido para o estudante: ' . $enrollment['name'] . ''; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1237,10 +1242,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (is_null($studentType->getCpfAluno())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'É OBRIGATÓRIO INFORMAR O CPF DO ESTUDANTE'; - $inconsistencyModel->action = 'INFORME UM CPF PARA O ESTUDANTE: ' . $enrollment['name']; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'É obrigatório informar o cpf do estudante'; + $inconsistencyModel->action = 'Informe um cpf para o estudante: ' . $enrollment['name'] . ''; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->insert(); @@ -1248,23 +1253,22 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!$this->validateDate($studentType->getDataNascimento())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'DATA NO FORMATO INVÁLIDO: ' . $enrollment['birthdate']; - $inconsistencyModel->action = 'ADICIONE UMA DATA NO FORMATO VÁLIDA'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Data no formato inválido: ' . $enrollment['birthdate']; + $inconsistencyModel->action = 'Adicione uma data no formato válido'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } - if (strlen($studentType->getNome()) < $strlen) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'NOME DO ESTUDANTE COM MENOS DE 5 CARACTERES'; - $inconsistencyModel->action = 'ADICIONE UM NOME PARA O ESTUDANTE COM PELO MENOS 5 CARACTERES'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Nome do estudante com menos de 5 caracteres'; + $inconsistencyModel->action = 'Adicione um nome para o estudante com pelo menos 5 caracteres'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1273,10 +1277,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if ($studentType->getNome() > $strMaxLength) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'NOME DO ESTUDANTE COM MAIS DE 200 CARACTERES'; - $inconsistencyModel->action = 'ADICIONE UM NOME PARA O ESTUDANTE COM ATÉ 200 CARACTERES'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Nome do estudante com mais de 200 caracteres'; + $inconsistencyModel->action = 'Adicione um nome para o estudante com até 200 caracteres'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1285,10 +1289,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!is_bool(boolval($studentType->getPcd()))) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'CÓDIGO PCD É INVÁLIDO'; - $inconsistencyModel->action = 'ADICIONE UM VALOR VÁLIDO PARA O PCD'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Código pcd é inválido'; + $inconsistencyModel->action = 'Adicione um valor válido para o pcd'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1297,10 +1301,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if ($studentType->getDataNascimento() === false) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'DATA DE NASCIMENTO INVÁLIDA'; - $inconsistencyModel->action = 'ALTERE O FORMATO DE DATA PARA DD/MM/AAAA'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Data de nascimento inválida'; + $inconsistencyModel->action = 'Altere o formato de data para dd/mm/aaaa'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1309,10 +1313,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!in_array($studentType->getSexo(), [1, 2, 3])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'SEXO NÃO É VÁLIDO'; - $inconsistencyModel->action = 'ADICIONE UM SEXO VÁLIDO PARA O ESTUDANTE'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Sexo não é válido'; + $inconsistencyModel->action = 'Adicione um sexo válido para o estudante'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1329,10 +1333,10 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (is_null($studentType)) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESTUDANTE'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'ESTUDANTE NÃO EXISTE PARA A MATRÍCULA DA TURMA: '; - $inconsistencyModel->action = 'ADICIONE UM ESTUDANTE À TURMA DA ESCOLA'; + $inconsistencyModel->enrollment = 'ESTUDANTE'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Estudante não existe para a matrícula da turma: '; + $inconsistencyModel->action = 'Adicione um estudante à turma da escola'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; $inconsistencyModel->idClass = $classId; @@ -1346,9 +1350,9 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (empty($enrollmentType)) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'NÃO HÁ MATRÍCULA PARA A TURMA'; - $inconsistencyModel->action = 'ADICIONE UMA MATRÍCULA PARA A TURMA'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Não há matrícula para a turma'; + $inconsistencyModel->action = 'Adicione uma matrícula para a turma'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } @@ -1356,9 +1360,9 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!$this->validateDate($enrollmentType->getDataMatricula())) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'DATA NO FORMATO INVÁLIDO'; - $inconsistencyModel->action = 'ADICIONE UMA DATA NO FORMATO VÁLIDO'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Data no formato inválido'; + $inconsistencyModel->action = 'Adicione uma data no formato válido'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } @@ -1366,19 +1370,20 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i if (!is_int($enrollmentType->getNumeroFaltas())) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'O VALOR PARA O NÚMERO DE FALTAS É INVÁLIDO'; - $inconsistencyModel->action = 'COLOQUE UM VALOR VÁLIDO PARA O NÚMERO DE FALTAS'; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'O valor para o número de faltas é inválido'; + $inconsistencyModel->action = 'Coloque um valor válido para o número de faltas'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } + if (filter_var($finalClass, FILTER_VALIDATE_BOOLEAN)) { if (!is_bool($enrollmentType->getAprovado())) { $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'MATRÍCULA'; - $inconsistencyModel->school = ''; - $inconsistencyModel->description = 'VALOR INVÁLIDO PARA O STATUS APROVADO'; - $inconsistencyModel->action = 'ADICIONE UM VALOR VÁLIDO PARA O CAMPO APROVADO DO ALUNO: ' . $studentType->getNome(); + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'Valor inválido para o status aprovado'; + $inconsistencyModel->action = 'Adicione um valor válido para o campo aprovado do aluno: ' . $studentType->getNome(); $inconsistencyModel->idClass = $classId; $inconsistencyModel->insert(); } From fa60d8c493a8fd6da3fa4fc1e82b6ae9099ba9fc Mon Sep 17 00:00:00 2001 From: Nathan Santos <117388330+nathanipti@users.noreply.github.com> Date: Thu, 28 Mar 2024 15:34:54 -0300 Subject: [PATCH 05/15] Fix: correction in description class (#668) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: correction in description class * Feat: added new version for changelog and config * Fix: Define a constant instead of duplicating this literal "SÉRIE" 4 times. --- CHANGELOG.md | 3 ++ .../sagres/models/SagresConsultModel.php | 30 +++++++++++-------- config.php | 2 +- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91c9af6e8..ec77f783d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [Versão 3.76.129] +- Correção na descrição da séries para as inconsistências sagres + ## [Versão 3.76.128] - Corrigido erro que não mostrava o nome da escola e das turmas nas inconsistências sagres - Corrigido na busca por profissional na mesma escola diff --git a/app/modules/sagres/models/SagresConsultModel.php b/app/modules/sagres/models/SagresConsultModel.php index a9f5740f9..4bf18585a 100644 --- a/app/modules/sagres/models/SagresConsultModel.php +++ b/app/modules/sagres/models/SagresConsultModel.php @@ -25,12 +25,17 @@ use Yii; use ZipArchive; +define('TURMA_STRONG', 'TURMA'); +define('SERIE_STRONG', 'SÉRIE'); + + /** * Summary of SagresConsultModel */ class SagresConsultModel { private $dbCommand; + public function __construct() { @@ -326,7 +331,7 @@ classroom c if(empty($turmas)) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'ESCOLA'; + $inconsistencyModel->enrollment = 'ESCOLA'; $inconsistencyModel->school = $schoolName; $inconsistencyModel->description = 'Não há turmas para a escola: ' . $schoolName; $inconsistencyModel->action = 'Adicione turmas para a escola'; @@ -368,7 +373,7 @@ classroom c */ if (!in_array($classType->getPeriodo(), [0, 1, 2])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'TURMA'; + $inconsistencyModel->enrollment = TURMA_STRONG; $inconsistencyModel->school = $schoolRes['name']; $inconsistencyModel->description = 'Valor inválido para o período'; $inconsistencyModel->action = 'Adicione um valor válido para o período da turma: ' . $classType->getDescricao(); @@ -380,7 +385,7 @@ classroom c if (strlen($classType->getDescricao()) <= $strlen && !is_null($classType->getDescricao())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'TURMA'; + $inconsistencyModel->enrollment = TURMA_STRONG; $inconsistencyModel->school = $schoolRes['name']; $inconsistencyModel->description = 'Descrição para a turma menor que 3 caracteres'; $inconsistencyModel->action = 'Adicione uma descrição mais detalhada, contendo mais de 5 caracteres'; @@ -392,7 +397,7 @@ classroom c if (strlen($classType->getDescricao()) > $strMaxLength) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'TURMA'; + $inconsistencyModel->enrollment = TURMA_STRONG; $inconsistencyModel->school = $schoolRes['name']; $inconsistencyModel->description = 'Descrição para a turma com mais de 50 caracteres'; $inconsistencyModel->action = 'Adicione uma descrição menos detalhada, contendo até 50 caracteres'; @@ -404,7 +409,7 @@ classroom c if (!in_array($classType->getTurno(), [1, 2, 3, 4])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'TURMA'; + $inconsistencyModel->enrollment = TURMA_STRONG; $inconsistencyModel->school = $schoolRes['name']; $inconsistencyModel->description = 'Valor inválido para o turno da turma'; $inconsistencyModel->action = 'Selecione um turno válido para o horário de funcionamento'; @@ -416,7 +421,7 @@ classroom c if (!is_bool($classType->getFinalTurma())) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'TURMA'; + $inconsistencyModel->enrollment = TURMA_STRONG; $inconsistencyModel->school = $schoolRes['name']; $inconsistencyModel->description = 'Valor inválido para o final turma'; $inconsistencyModel->action = 'Selecione um valor válido para o encerramento do período'; @@ -452,14 +457,15 @@ classroom c $series = Yii::app()->db->createCommand($query)->bindValue(":id", $classId)->queryAll(); foreach ($series as $serie) { + $serie = (object) $serie; $serieType = new SerieTType(); $serieType - ->setDescricao($serie['serieDescription']) - ->setModalidade($serie['serieModality']); + ->setDescricao($serie->serieDescription) + ->setModalidade($serie->serieModality); if (empty($serieType)) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'SÉRIE'; + $inconsistencyModel->enrollment = SERIE_STRONG; $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Não há série para a escola: ' . $school->name; $inconsistencyModel->action = 'Adicione uma série para a turma'; @@ -471,7 +477,7 @@ classroom c if (strlen($serieType->getDescricao()) <= $strlen) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'SÉRIE'; + $inconsistencyModel->enrollment = SERIE_STRONG; $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Descrição para a série: ' . $serieType->getDescricao() . ' menor que 3 caracteres'; $inconsistencyModel->action = 'Forneça uma descrição mais detalhada, contendo mais de 5 caracteres'; @@ -483,7 +489,7 @@ classroom c if (strlen($serieType->getDescricao()) > $strMaxLength) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'SÉRIE'; + $inconsistencyModel->enrollment = SERIE_STRONG; $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Descrição para a série: ' . $serieType->getDescricao() . ' com mais de 50 caracteres'; $inconsistencyModel->action = 'Forneça uma descrição menos detalhada, contendo até 50 caracteres'; @@ -501,7 +507,7 @@ classroom c */ if (!in_array($serieType->getModalidade(), [1, 2, 3, 4, 5])) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'SÉRIE'; + $inconsistencyModel->enrollment = SERIE_STRONG; $inconsistencyModel->school = $school->name; $inconsistencyModel->description = 'Modalidade inválida'; $inconsistencyModel->action = 'Selecione uma modalidade válida para a série'; diff --git a/config.php b/config.php index 88945d9ac..cbe502af6 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,7 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.76.128'); +define("TAG_VERSION", '3.76.129'); define("YII_VERSION", Yii::getVersion()); define("BOARD_MSG", '
Novas atualizações no TAG. Confira clicando aqui.
'); From 05a1d8e3dc0b2b7d573e4b1ef6d96b755c07ba0b Mon Sep 17 00:00:00 2001 From: GabrielChagas14 <84946326+GabrielChagas14@users.noreply.github.com> Date: Mon, 1 Apr 2024 11:16:18 -0300 Subject: [PATCH 06/15] Feat/food notice (#647) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * finalizado crud de edital * adicionado botão para editais na tela de listagem de merenda * update migration * github issues * sonnar issues * atualizado versão do sistema * ignore case * corrigindo viewlunch * rename file * rename file * fix: creating notice button and fixing delete notice redirection * consertado o redirecionamento na actionDelete * fix folders * fix some sonarcloud issues * sonarlint issues * sonarlint issues * sonarlint issues --------- Co-authored-by: gabriel-IPTI Co-authored-by: TI GUSTAVO Co-authored-by: Gustavo Santos Co-authored-by: Igor Gonçalves --- CHANGELOG.md | 6 +- .../foods/views/foodinventory/_form.php | 170 ------------------ config.php | 2 +- sass/css/main.css | 2 +- 4 files changed, 5 insertions(+), 175 deletions(-) delete mode 100644 app/modules/foods/views/foodinventory/_form.php diff --git a/CHANGELOG.md b/CHANGELOG.md index ec77f783d..a3e5a35b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [Versão 3.76.130] +- Adicionado gerência de editais anuais de aquisição de gêneros alimentícios da agricultura familiar e empreendedor familiar rural + ## [Versão 3.76.129] - Correção na descrição da séries para as inconsistências sagres @@ -25,9 +28,6 @@ ## [Versão 3.75.122] - Adicionada lógica, para que ao reaproveitar turmas, os alunos do ano de 2023 entrarão como matriculados. -## [Versão 3.75.121] -- Adicionado gerência de editais anuais de aquisição de gêneros alimentícios da agricultura familiar e empreendedor familiar rural - ## [Versão 3.74.121] - Correção no relatório de professores por escola diff --git a/app/modules/foods/views/foodinventory/_form.php b/app/modules/foods/views/foodinventory/_form.php deleted file mode 100644 index a368a141a..000000000 --- a/app/modules/foods/views/foodinventory/_form.php +++ /dev/null @@ -1,170 +0,0 @@ -baseUrl; -$themeUrl = Yii::app()->theme->baseUrl; -$cs = Yii::app()->getClientScript(); -$cs->registerScriptFile('app\modules\foods\resources\inventory\_initialization.js', CClientScript::POS_END); -$cs->registerScriptFile('app\modules\foods\resources\inventory\functions.js', CClientScript::POS_END); - -$form=$this->beginWidget('CActiveForm', array( - 'id'=>'food-inventory-form', - 'enableAjaxValidation'=>false, -)); - -?> - -
-
-
-

isNewRecord ? 'Estoque' : '' ?>

-

Cardápio semanal da sua escola

-
-
- - errorSummary($model); ?> - -
-
-
-
-
- - -
-
- -
-
-
-
- -
-
-
-
-
- - - - - - - -endWidget(); ?> -
diff --git a/config.php b/config.php index cbe502af6..b879d2bf2 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,7 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.76.129'); +define("TAG_VERSION", '3.76.130'); define("YII_VERSION", Yii::getVersion()); define("BOARD_MSG", '
Novas atualizações no TAG. Confira clicando aqui.
'); diff --git a/sass/css/main.css b/sass/css/main.css index b04b73250..4157a5b41 100644 --- a/sass/css/main.css +++ b/sass/css/main.css @@ -1 +1 @@ -@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap";*,body,html{font-family:"inter",sans-serif}.main{padding:.75em}@media(min-width: 640px){.main{padding:1.5em}}a{color:inherit}a:hover{text-decoration:none}hr{margin:0;border:none}select[multiple]{height:30px}input[type=number]{margin:0px}select,select[multiple],textarea,input[type=text],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=color]{min-height:30px}.wrap{flex-wrap:wrap}.row{display:flex;flex-direction:column;gap:.75em}.row.reverse{flex-direction:column-reverse}@media(min-width: 640px){.row.reverse{flex-direction:row}}.row.no-gap{gap:0}@media(min-width: 640px){.row{flex-direction:row}}.row.margin-large--bottom{margin-bottom:calc(2em/2)}.row.margin-large--top{margin-top:.875em}.row.no-gap{gap:0}.mobile-row{display:flex;flex-direction:row}.mobile-row.upper-margin{margin-top:24px}.mobile-row.helper{padding-left:13px}.tablet-row{display:flex;flex-direction:column}.tablet-row.bottom-margin{margin-bottom:24px}@media(min-width: 768px){.tablet-row{flex-direction:row}}.column{flex:1;flex-basis:0;margin-left:calc(2em/2);margin-right:calc(2em/2)}.column.flex{display:flex}.column.clearfix{margin-left:0;margin-right:0}.column.clearleft{margin-left:0}.column.clearleft--on-tablet{margin-left:0}@media(min-width: 768px){.column.clearleft--on-tablet{margin-left:calc(2em/2)}}.column.clearleft--on-mobile{margin-left:0}@media(min-width: 640px){.column.clearleft--on-mobile{margin-left:calc(2em/2)}}.column.no-grow{flex-grow:0}.column.helper{max-width:50%}@media(min-width: 640px){.column.is-half{max-width:50%}}@media(min-width: 640px){.column.is-four-fifths{max-width:80%}}.column.is-four-fifths--mobile{max-width:80%}@media(min-width: 640px){.column.is-three-quarters{max-width:75%}}@media(min-width: 640px){.column.is-two-thirds{max-width:66.6666%}}@media(min-width: 640px){.column.is-three-fifths{max-width:60%}}@media(min-width: 640px){.column.is-two-fifths{max-width:40%}}@media(min-width: 640px){.column.is-one-third{max-width:33.3333%}}@media(min-width: 640px){.column.is-third{max-width:30%}}@media(min-width: 640px){.column.is-one-quarter{max-width:25%}}@media(min-width: 640px){.column.is-one-fifth{max-width:20%}}@media(min-width: 640px){.column.is-one-tenth{max-width:10%}}.column.is-one-tenth--mobile{max-width:10%}.t-buttons-container{display:inline-block;width:100%}.t-buttons-container.auto-width{width:auto}@media(min-width: 768px){.t-buttons-container{padding:.25em 0 .25em 0;font-size:14px;display:flex}}.t-button,.t-button-icon,.t-button-danger,.t-button-quaternary,.t-button-tertiary,.t-button-secondary,.t-button-primary,.t-button-submit{display:flex;flex:1;padding:.875em;margin:.5em 0;font-size:12px;border-radius:6px;text-decoration:none;align-self:center;justify-content:center;cursor:pointer}.t-button span,.t-button-icon span,.t-button-danger span,.t-button-quaternary span,.t-button-tertiary span,.t-button-secondary span,.t-button-primary span,.t-button-submit span{margin:0em .25em 0em 0em;font-size:14px}.t-button.mobile-margin,.mobile-margin.t-button-icon,.mobile-margin.t-button-danger,.mobile-margin.t-button-quaternary,.mobile-margin.t-button-tertiary,.mobile-margin.t-button-secondary,.mobile-margin.t-button-primary,.mobile-margin.t-button-submit{margin-right:1em}.t-button.mobile-margin-top,.mobile-margin-top.t-button-icon,.mobile-margin-top.t-button-danger,.mobile-margin-top.t-button-quaternary,.mobile-margin-top.t-button-tertiary,.mobile-margin-top.t-button-secondary,.mobile-margin-top.t-button-primary,.mobile-margin-top.t-button-submit{margin-top:1em !important}.t-button.nofloat,.nofloat.t-button-icon,.nofloat.t-button-danger,.nofloat.t-button-quaternary,.nofloat.t-button-tertiary,.nofloat.t-button-secondary,.nofloat.t-button-primary,.nofloat.t-button-submit{float:unset !important}.t-button:hover,.t-button-icon:hover,.t-button-danger:hover,.t-button-quaternary:hover,.t-button-tertiary:hover,.t-button-secondary:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button--active{text-decoration:none}@media(min-width: 640px){.t-button,.t-button-icon,.t-button-danger,.t-button-quaternary,.t-button-tertiary,.t-button-secondary,.t-button-primary,.t-button-submit{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media(min-width: 768px){.t-button,.t-button-icon,.t-button-danger,.t-button-quaternary,.t-button-tertiary,.t-button-secondary,.t-button-primary,.t-button-submit{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media(min-width: 1536px){.t-button,.t-button-icon,.t-button-danger,.t-button-quaternary,.t-button-tertiary,.t-button-secondary,.t-button-primary,.t-button-submit{margin-right:1em;padding:.375em 1em .375em 1em}}.t-button:link,.t-button-icon:link,.t-button-danger:link,.t-button-quaternary:link,.t-button-tertiary:link,.t-button-secondary:link,.t-button-primary:link,.t-button-submit:link,.t-button:focus,.t-button-icon:focus,.t-button-danger:focus,.t-button-quaternary:focus,.t-button-tertiary:focus,.t-button-secondary:focus,.t-button-primary:focus,.t-button-submit:focus,.t-button:hover,.t-button-icon:hover,.t-button-danger:hover,.t-button-quaternary:hover,.t-button-tertiary:hover,.t-button-secondary:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button--active,.t-button:active,.t-button-icon:active,.t-button-danger:active,.t-button-quaternary:active,.t-button-tertiary:active,.t-button-secondary:active,.t-button-primary:active,.t-button-submit:active{text-decoration:none !important}.t-button img,.t-button-icon img,.t-button-danger img,.t-button-quaternary img,.t-button-tertiary img,.t-button-secondary img,.t-button-primary img,.t-button-submit img{margin-right:6px}.t-button i,.t-button-icon i,.t-button-danger i,.t-button-quaternary i,.t-button-tertiary i,.t-button-secondary i,.t-button-primary i,.t-button-submit i{align-self:center;margin-right:6px;opacity:.5}.t-button-primary,.t-button-submit{background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center}.t-button-primary--icon{flex:0;padding:.75em 2em}.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active{color:#fff;background-color:#272b96}.t-button-primary:link,.t-button-submit:link,.t-button-primary:focus,.t-button-submit:focus,.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active,.t-button-primary:active,.t-button-submit:active{color:#fff}.t-button-secondary{background-color:#eff2f5;color:#252a31;border:0}.t-button-secondary:hover,.t-button-secondary--active,.t-button-secondary:focus{color:#252a31;background-color:#e5eaef}.t-button-tertiary{background-color:#94a8be;color:#fff}.t-button-tertiary:focus{color:#fff}.t-button-tertiary:hover,.t-button-tertiary--active{color:#fff;background-color:#5f738c}.t-button-quaternary{background-color:#d6dee6;color:#252a31;border:0;cursor:auto}.t-button-submit{margin:14px 0}.t-button-danger{color:#fff;background-color:#d21c1c;border:0}.t-button-danger--disabled{background-color:#eff2f5;color:#94a8be;cursor:not-allowed !important}.t-button-danger:hover{color:#fff}.t-button-danger--disabled:hover{color:#94a8be}.t-button-icon.secondary{padding:.375em 1.5em .375em 1.5em;background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center;font-size:16px !important}.t-button-icon.secondary:hover,.t-button-icon.secondary--active{color:#fff;background-color:#272b96}.t-button-icon.secondary:link,.t-button-icon.secondary:focus,.t-button-icon.secondary:hover,.t-button-icon.secondary--active,.t-button-icon.secondary:active{color:#fff}.t-button-icon.secondary span{font-size:16px !important}.t-button-icon-danger{cursor:pointer;color:#d21c1c !important;margin-top:14px}.t-link-button{color:#252a31 !important}.t-link-button--warning{color:#d21c1c !important;margin-top:24px}.t-link-button--info{color:#272b96 !important}.t-button-content{background-color:rgba(0,0,0,0);border:none}.t-field-file__label{width:fit-content}.t-field-file__input{display:none}.t-field-text{margin-bottom:14px}.t-field-text__label{display:flex;align-items:center}.t-field-text__label--required::after{content:"*";font-weight:500;font-size:14px;color:#d21c1c}.t-field-text__input,.t-field-text input[type=text],.t-field-text input[type=number],.t-field-text input[type=email],.t-field-text input[type=tel]{box-sizing:border-box;width:100% !important;margin-bottom:0px !important;resize:none}.t-field-text__input,.t-field-text input[type=password]{box-sizing:border-box;width:100%;margin-bottom:0px;resize:none}.t-field-text .show-password-icon{cursor:pointer;position:absolute;right:0;padding:5px}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#d21c1c}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-field-tarea{margin-bottom:24px}.t-field-tarea__label--required::after{content:"*";font-weight:500;font-size:14px;color:#d21c1c}.t-field-tarea__input,.t-field-tarea textarea{width:100%;padding:4px;box-sizing:border-box;font-family:"Inter",sans-serif}.t-field-tarea__input.large,.t-field-tarea textarea.large{height:100%;min-height:100px;max-height:100px}.t-field-checkbox{display:flex;white-space:normal;line-height:12px;width:100%;margin-top:24px;margin-bottom:8px}.t-field-checkbox__label{padding-top:0 !important}.t-field-checkbox__label--required::after{content:"*";font-weight:500;font-size:14px;color:#d21c1c}.t-field-checkbox__input,.t-field-checkbox input[type=checkbox]{background:#fff;height:20px;width:20px;margin:0 14px 0 0}.t-field-checkbox.helper{margin-top:31px;margin-bottom:10px;margin-left:-18px}.t-field-checkbox--vertical{margin-right:14px}.t-field-checkbox--vertical .t-field-checkbox__label{text-align:center}.t-field-checkbox--vertical .t-field-checkbox__input{margin:0}.t-field-checkbox-group{margin-bottom:6px;margin-top:24px}.t-field-checkbox-group__label{padding-top:0 !important}.t-field-checkbox-group__label--required::after{content:"*";font-weight:500;font-size:14px;color:#d21c1c}.t-field-checkbox-group .t-field-checkbox{margin-top:4px;margin-bottom:8px}.t-field-number{margin-bottom:14px}.t-field-number__label{display:flex;align-items:center}.t-field-number__label--required::after{content:"*";font-weight:500;font-size:14px;color:#d21c1c}.t-field-number__input,.t-field-number input[type=number]{width:100%;margin-bottom:0px;padding:.75em}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#d21c1c}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-multiselect{margin-top:14px}.t-multiselect .select2-search-choice{background-color:#b4dbf8 !important;border:none !important;font-size:14px !important;font-weight:500 !important;color:#004680;padding:.375em .5em !important;background-image:none !important;word-wrap:break-word}.t-multiselect .select2-search-choice div{margin-left:24px}.t-multiselect .select2-search-choice .select2-search-choice-close{background-image:url("../../../themes/default/img/botao-cancelar-multiselect.svg") !important;width:14px !important;height:14px !important;background-position:unset !important}.t-multiselect .select2-choices{overflow:auto !important;max-height:42px;width:100% !important}.t-multiselect .select3-choices{min-width:200px;max-height:57px;width:100% !important;word-wrap:break-word;text-overflow:ellipsis}@media(min-width: 768px){.t-multiselect .select3-choices{max-height:60px}}@media(min-width: 640px){.t-multiselect .select3-choices{max-height:60px}}.t-field-section{margin-top:24px}.t-field-selection{width:100%}.t-tabs{display:flex;list-style:none;margin:0em;padding:0em;overflow-x:scroll;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}@media(min-width: 768px){.t-tabs{padding:.75em 1em .75em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}@media(min-width: 1536px){.t-tabs{padding:.375em .375em .375em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}.t-tabs .t-tabs__list{display:flex;list-style:none;padding:0em;margin:0em}.t-tabs .t-tabs__list .t-tabs__item{display:inline-flex;white-space:nowrap;padding:0em;margin:0em;text-align:center}.t-tabs .t-tabs__list .t-tabs__item.active{font-weight:700;text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link{display:flex;align-items:center;color:#2e33b7}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#2e33b7;color:#fff}.t-tabs .t-tabs__list .t-tabs__item a{text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{font-size:14px;height:auto;color:#52647a;padding:.875em;display:flex;align-items:center}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.875em .875em .875em 0em}@media(min-width: 768px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.25em 1em .25em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.25em 1em .25em 0em}}@media(min-width: 1536px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.375em 1em .375em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.375em 1em .375em 0em}}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#d6dee6;color:#5f738c}.t-tabs::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list{display:flex;list-style:none;text-align:center;padding:0em;margin-left:0em;overflow-x:scroll}.t-tabs-secondary .t-tabs__list::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list .t-tabs__item{padding:8px;font-weight:500;white-space:nowrap;font-size:14px;cursor:pointer}@media(min-width: 640px){.t-tabs-secondary .t-tabs__list .t-tabs__item{font-size:14px}}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-primary{color:#252a31}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-secondary{color:#5f738c}.t-tabs-secondary .t-tabs__list .t-tabs__item.active{border-bottom:2px #222c64 solid;font-weight:600}.tag-table,.tag-table-secondary,.tag-table-primary{border-collapse:initial;margin-top:16px;width:100%}.tag-table td,.tag-table-secondary td,.tag-table-primary td{background:#fff;padding:1em}.tag-table td .t-icon,.tag-table-secondary td .t-icon,.tag-table-primary td .t-icon{color:#5f738c;font-size:16px;cursor:pointer;margin-right:14px}.tag-table thead tr th:first-child,.tag-table-secondary thead tr th:first-child,.tag-table-primary thead tr th:first-child{border-radius:3px 0 0 3px}.tag-table thead tr th:last-child,.tag-table-secondary thead tr th:last-child,.tag-table-primary thead tr th:last-child{border-radius:0 3px 3px 0}.tag-table tbody,.tag-table-secondary tbody,.tag-table-primary tbody{--dt-row-selected: $colorsBaseProductLightActive;--dt-row-selected-text: var(--dt-row-selected);--dt-row-selected-link: var(--dt-row-selected)}.tag-table tbody .selected,.tag-table-secondary tbody .selected,.tag-table-primary tbody .selected{background-color:#eaeaf8}.tag-table tbody tr,.tag-table-secondary tbody tr,.tag-table-primary tbody tr{border-bottom:2.5px solid #fff}.tag-table tbody td,.tag-table-secondary tbody td,.tag-table-primary tbody td{font-family:"Inter",sans-serif;font-size:14px;padding:4px}.tag-table tbody td:first-child,.tag-table-secondary tbody td:first-child,.tag-table-primary tbody td:first-child{border-radius:3px 0 0 3px}.tag-table tbody td:last-child,.tag-table-secondary tbody td:last-child,.tag-table-primary tbody td:last-child{border-radius:0 3px 3px 0}.tag-table-primary thead tr th{font-weight:500;color:#fff;background-color:#18204e;padding:8px;line-height:normal}.tag-table-primary tbody tr:nth-child(2n+1) td{background-color:#eaeaf8}.tag-table-primary tbody tr:nth-child(2n) td{background-color:#f5f7f9}.tag-table-primary td a{color:#272b96}.tag-table-secondary{border-collapse:collapse}.tag-table-secondary thead tr th{font-weight:bold;color:#5f738c;background-color:#e8edf1;padding:8px;line-height:normal}.tag-table-secondary tbody tr{border-radius:none;border-bottom:.5px solid #e8edf1}.tag-table-secondary.centralize td{text-align:center}.tag-table-secondary.align-start td,.tag-table-secondary.align-start th{text-align:start}.grid-view{padding-top:.875em}.grid-view .summary{display:none}.grid-view .dataTables_filter{margin:10px}.grid-view .dataTables_filter input[type=search]{margin-bottom:0;margin-left:1em}.grid-view .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;border:1px solid rgba(0,0,0,0);border-radius:2px;background:rgba(0,0,0,0)}.dt-body-nowrap{white-space:nowrap}.t-cards{display:inline-block;border-radius:6px;padding:24px;background:#fafafe;margin-bottom:16px;margin-right:16px;width:100%;min-width:300px;box-sizing:border-box}.t-cards .t-cards-content{display:flex;flex-direction:column;gap:8px}.t-cards .t-cards-content .t-cards-title{display:flex;align-items:center;color:#18204e;font-size:16px;font-family:"Inter",sans-serif;font-weight:700}.t-cards .t-cards-content .t-cards-title img{margin-right:8px}.t-cards .t-cards-content .t-cards-text{color:#465567;margin-left:32px;font-size:12px}.t-cards .t-cards-content .t-cards-text.clear-margin--left{margin-left:0}.t-cards .t-cards-content span{margin:0em .25em 0em 0em;font-size:24px}.t-cards .t-cards-content .t-cards-link{display:flex;gap:13px}.t-cards:hover{text-decoration:none}.tag-topbar{padding:12px 1.5em;box-sizing:border-box;list-style:none;width:100%;position:fixed;right:0em;z-index:2;background-color:#fff}@media(min-width: 768px){.tag-topbar{width:calc(100% - 190px)}}.tag-topbar__content{display:flex;justify-content:start;align-items:center;list-style:none;margin:0em;width:100%}.tag-topbar__content .tag-topbar__item{display:flex}.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:none;text-decoration:none;cursor:pointer;color:#16205b;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;font-family:"Inter",sans-serif;font-size:14px;font-weight:bold;margin-right:16px}@media(min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:block}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media(min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:none}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle div{border-radius:12px;width:100%;height:4px;background-color:#272b96}.tag-topbar__content .tag-topbar__item .tag-topbar__username{display:inline-block;font-size:14px;margin-left:8px;border-top:1px solid #eaeaf8;width:90%;color:#a6b6c8}.tag-topbar__content .tag-topbar__item .tag-topbar__school_logo{object-fit:contain;width:32px;height:32px;border-radius:50%;margin-right:8px;border:2px solid #16205b;padding:.375em}.t-accordion{border:none}.t-accordion__header .t-accordion__head{border:none}.t-accordion__container-icon:hover{background-color:#fafafe !important;user-select:none}.t-accordion__icon{transition:all 200ms}.t-accordion__icon.closed{transform:rotate(90deg);transition:all 200ms}.t-accordion__body>.odd{background-color:#fafafe}.t-accordion__body>.odd>*,.t-accordion__body>.even>*{font-size:14px;background-color:#fafafe;box-shadow:none !important;padding:14px 24px}.t-accordion__body>.odd:hover>*,.t-accordion__body>.even:hover>*,.t-accordion__body>*>*{box-shadow:none !important}.t-accordeon .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-primary .ui-accordion-header{display:flex !important;align-items:center;background:#f5f7f9;cursor:pointer;padding:4px 12px !important;border-radius:0;border:none;color:#252a31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252a31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:"Inter",sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-primary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5;padding:4px 12px}.t-accordeon-primary .ui-accordion-header{background:#f5f7f9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#f5f7f9 !important}.t-accordeon-primary .icon-color{color:#5f738c}.t-accordeon-secondary .ui-accordion-header{background:#f5f7f9;color:#5f738c}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#eaedfc}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5f738c;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#f5f7f9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform .5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform .5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252a31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5f738c;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-filter-bar{display:flex;flex-direction:column;column-gap:12px}@media(min-width: 768px){.t-filter-bar{flex-direction:row}}.t-filter-bar .t-filters{display:flex;margin-bottom:12px}@media(min-width: 768px){.t-filter-bar .t-filters{margin-bottom:0;display:flex}}@font-face{font-family:"icone-tag";src:url("/themes/default/fonts/IconsTag_V18.ttf")}h1{font-size:24px;font-weight:700;line-height:36px;color:#252a31;padding:.875em 0em}h2{font-size:16px}h3{color:#94a8be;font-size:16px;line-height:24px;font-weight:700;margin:12px 0px}h4{font-size:14px;font-weight:700}h5,.subheading{font-size:14px;color:#94a8be;font-weight:400}.t-menu{margin:0;padding:8px}.t-menu .t-menu-item__icon{font-size:18px}.t-menu .t-menu-item__icon:hover{color:#272b96}.t-menu-item{position:relative;display:flex;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer;background:#fafafe}.t-menu-item__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-item__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272b96;align-items:center}.t-menu-item__link:link,.t-menu-item__link:focus,.t-menu-item__link:hover,.t-menu-item__link--active,.t-menu-item__link:active{text-decoration:none !important}.t-menu-item__text{color:#5f738c}.t-menu-item:hover{background:#eaeaf8}.t-menu-item.active{background:#eaeaf8}.t-menu-item.active::before{content:"";position:absolute;width:4px;left:-8px;height:35px;background:#222c64;border-radius:0 4px 4px 0}.t-menu-item.active .t-menu-item__icon{filter:saturate(1);color:#272b96}.t-menu-item.active .t-menu-item__text{color:#272b96}.t-menu-group{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer}.t-menu-group__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-group__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272b96;align-items:center}.t-menu-group__link:link,.t-menu-group__link:focus,.t-menu-group__link:hover,.t-menu-group__link--active,.t-menu-group__link:active{text-decoration:none !important;color:#272b96}.t-menu-group__text{color:#5f738c}.t-menu-group ul{margin:0}.t-menu-group:not(.active) .fa-chevron-down{display:none}.t-menu-group.active .fa-chevron-right{display:none}.t-menu-group.active .collapse{overflow:visible}.t-menu-group.active .t-menu-group__icon{filter:saturate(1)}.t-menu-group.active .t-menu-group__text{color:#272b96}.t-drawer{width:200px;float:left;position:fixed;height:100%;overflow-y:auto;overflow-x:hidden;top:0px;background:#fafafe;z-index:99;-ms-overflow-style:none;scrollbar-width:none}.t-drawer-header{display:flex;align-items:center;width:auto;margin-left:.875em;margin-top:24px;margin-bottom:24px}.t-drawer-toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media(min-width: 768px){.t-drawer-toggle{display:none}}.t-drawer-toggle div{border-radius:12px;width:100%;height:4px;background-color:#272b96}.t-drawer--mobile-hidden{left:-200px;transition:left 500ms}.t-drawer::-webkit-scrollbar{display:none}@media(min-width: 768px){.t-drawer--mobile-hidden{left:0}}.sidebar-cover{display:block;background-color:rgba(0,0,0,.3843137255);width:100%;height:100%;position:fixed;top:0;right:0;z-index:3}.t-modal-container{color:#252a31;box-sizing:border-box;height:auto;max-height:80vh;background:#fff;border-radius:3px;overflow-y:scroll}.t-modal-container.larger{min-width:70vw;right:15vw;left:15vw;margin:auto}.t-modal-container .t-modal__header{display:flex;align-items:center;justify-content:space-between;padding:24px 24px}.t-modal-container .t-modal__header .t-title{font-size:16px;color:#252a31;font-weight:700;margin:0}.t-modal-container .t-modal__header .close{opacity:1;font-size:14px}.t-modal-container .t-modal__body{padding:14px 24px}.t-modal-container .t-modal__footer a,.t-modal-container .t-modal__footer button{flex:1;padding:.875em}.t-modal-container.height--is-four-fifths{height:80vh}.t-modal-container.height--is-three-fifths{height:60vh}.t-badge,.t-badge-content,.t-badge-warning,.t-badge-success,.t-badge-critical,.t-badge-info{display:flex;gap:2px;align-items:center;border-radius:6px;padding:0 4px 0 4px;margin:8px 8px;background-color:#eff2f5}.t-badge__icon{color:#52647a;font-size:12px;margin-right:6px}.t-badge__label{color:#52647a;font-weight:500}.t-badge:link,.t-badge-content:link,.t-badge-warning:link,.t-badge-success:link,.t-badge-critical:link,.t-badge-info:link,.t-badge:focus,.t-badge-content:focus,.t-badge-warning:focus,.t-badge-success:focus,.t-badge-critical:focus,.t-badge-info:focus,.t-badge:hover,.t-badge-content:hover,.t-badge-warning:hover,.t-badge-success:hover,.t-badge-critical:hover,.t-badge-info:hover,.t-badge--active,.t-badge:active,.t-badge-content:active,.t-badge-warning:active,.t-badge-success:active,.t-badge-critical:active,.t-badge-info:active{text-decoration:none !important}.t-badge-info{width:fit-content;border:.1rem solid #94a8be;font-weight:500;background-color:#b4dbf8;color:#004680;padding:0 6px}.t-badge-info__icon{color:#004680;font-size:14px}.t-badge-critical{border:.1rem solid #d21c1c;background-color:#d21c1c;color:#fff}.t-badge-success{background-color:#ebf4ec;color:#2b7336}.t-badge-warning{background-color:#fdf0e3;color:#a25100}.t-badge-content{background-color:#eaeaf8;color:#3f45ea;border-radius:4px;border:none;padding:.375em .5em .375em .5em;gap:4px}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-icon-trash::before{content:"A";font-family:"icone-tag",sans-serif}.t-icon-less_stock::before{content:"a";font-family:"icone-tag",sans-serif}.t-icon-bar_graph::before{content:"B";font-family:"icone-tag",sans-serif}.t-icon-more_stock::before{content:"b";font-family:"icone-tag",sans-serif}.t-icon-people::before{content:"C";font-family:"icone-tag",sans-serif}.t-icon-person_add::before{content:"c";font-family:"icone-tag",sans-serif}.t-icon-bus::before{content:"D";font-family:"icone-tag",sans-serif}.t-icon-person_remove::before{content:"d";font-family:"icone-tag",sans-serif}.t-icon-apple::before{content:"E";font-family:"icone-tag",sans-serif}.t-icon-down_arrow::before{content:"e";font-family:"icone-tag",sans-serif}.t-icon-pencil::before{content:"F";font-family:"icone-tag",sans-serif}.t-icon-hamburger_button::before{content:"f";font-family:"icone-tag",sans-serif}.t-icon-column_graphi::before{content:"G";font-family:"icone-tag",sans-serif}.t-icon-close::before{content:"g";font-family:"icone-tag",sans-serif}.t-icon-calendar::before{content:"H";font-family:"icone-tag",sans-serif}.t-icon-search_icon::before{content:"h";font-family:"icone-tag",sans-serif}.t-icon-settings::before{content:"I";font-family:"icone-tag",sans-serif}.t-icon-filter::before{content:"i";font-family:"icone-tag",sans-serif}.t-icon-educacenso::before{content:"J";font-family:"icone-tag",sans-serif}.t-icon-right_arrow::before{content:"j";font-family:"icone-tag",sans-serif}.t-icon-help::before{content:"K";font-family:"icone-tag",sans-serif}.t-icon-left_arrow::before{content:"k";font-family:"icone-tag",sans-serif}.t-icon-home::before{content:"L";font-family:"icone-tag",sans-serif}.t-icon-truck-loading::before{content:"l";font-family:"icone-tag",sans-serif}.t-icon-book::before{content:"M";font-family:"icone-tag",sans-serif}.t-icon-up_arrow::before{content:"m";font-family:"icone-tag",sans-serif}.t-icon-exit::before{content:"N";font-family:"icone-tag",sans-serif}.t-icon-slider::before{content:"n";font-family:"icone-tag",sans-serif}.t-icon-blackboard::before{content:"O";font-family:"icone-tag",sans-serif}.t-icon-bin::before{content:"o";font-family:"icone-tag",sans-serif}.t-icon-finger_print::before{content:"P";font-family:"icone-tag",sans-serif}.t-icon-success::before{content:"p";font-family:"icone-tag",sans-serif}.t-icon-school::before{content:"Q";font-family:"icone-tag",sans-serif}.t-icon-info::before{content:"q";font-family:"icone-tag",sans-serif}.t-icon-line_graph::before{content:"R";font-family:"icone-tag",sans-serif}.t-icon-eye::before{content:"r";font-family:"icone-tag",sans-serif}.t-icon-schedule::before{content:"S";font-family:"icone-tag",sans-serif}.t-icon-eye_hash::before{content:"s";font-family:"icone-tag",sans-serif}.t-icon-diary::before{content:"T";font-family:"icone-tag",sans-serif}.t-icon-lock::before{content:"t";font-family:"icone-tag",sans-serif}.t-icon-topics::before{content:"U";font-family:"icone-tag",sans-serif}.t-icon-duplicate::before{content:"u";font-family:"icone-tag",sans-serif}.t-icon-checklist::before{content:"V";font-family:"icone-tag",sans-serif}.t-icon-photos::before{content:"v";font-family:"icone-tag",sans-serif}.t-icon-edition::before{content:"W";font-family:"icone-tag",sans-serif}.t-icon-camera::before{content:"w";font-family:"icone-tag",sans-serif}.t-icon-configuration-adm::before{content:"X";font-family:"icone-tag",sans-serif}.t-icon-export::before{content:"x";font-family:"icone-tag",sans-serif}.t-icon-sagres::before{content:"Y";font-family:"icone-tag",sans-serif}.t-icon-printer::before{content:"y";font-family:"icone-tag",sans-serif}.t-icon-restaurant::before{content:"Z";font-family:"icone-tag",sans-serif}.t-icon-play::before{content:"z";font-family:"icone-tag",sans-serif}.t-icon-to-go-back::before{content:"0";font-family:"icone-tag",sans-serif}.t-icon-annotation::before{content:"1";font-family:"icone-tag",sans-serif}.t-icon-group-people::before{content:"2";font-family:"icone-tag",sans-serif}.t-icon-submit-form::before{content:"3";font-family:"icone-tag",sans-serif}.t-icon-person::before{content:"4";font-family:"icone-tag",sans-serif}.t-icon-slip::before{content:"5";font-family:"icone-tag",sans-serif}.t-icon-box::before{content:"6";font-family:"icone-tag",sans-serif}.t-icon-question-group::before{content:"7";font-family:"icone-tag",sans-serif}.t-icon-list-form::before{content:"8";font-family:"icone-tag",sans-serif}.t-icon-balloon-question::before{content:"9";font-family:"icone-tag",sans-serif}.t-icon-sucess::before{content:"/";font-family:"icone-tag",sans-serif}.t-icon-graduation-cap::before{content:"!";font-family:"icone-tag",sans-serif}.t-icon-bus2::before{content:'"';font-family:"icone-tag",sans-serif}.t-icon-copy::before{content:"#";font-family:"icone-tag",sans-serif}.t-icon-sp::before{content:".";font-family:"icone-tag",sans-serif}.t-icon-integration::before{content:"`";font-family:"icone-tag",sans-serif}.t-icon-add-group::before{content:"-";font-family:"icone-tag",sans-serif}.t-icon-room-service::before{content:"&";font-family:"icone-tag",sans-serif}.t-icon-circle-three-quarters::before{content:"[";font-family:"icone-tag",sans-serif}.t-icon-cart-arrow-down::before{content:"]";font-family:"icone-tag",sans-serif}.t-icon-Generate-RA::before{content:":";font-family:"icone-tag",sans-serif}.t-icon-graduation-cap::before{content:";";font-family:"icone-tag",sans-serif}.t-icon-handshake::before{content:"<";font-family:"icone-tag",sans-serif}.t-icon-weather-report::before{content:">";font-family:"icone-tag",sans-serif}.t-icon-percentage::before{content:"=";font-family:"icone-tag",sans-serif}.t-icon-identity::before{content:"?";font-family:"icone-tag",sans-serif}.t-icon-e-learning::before{content:"@";font-family:"icone-tag",sans-serif}.t-icon-arrow-az::before{content:"*";font-family:"icone-tag",sans-serif}.t-icon-wheelchair::before{content:"+";font-family:"icone-tag",sans-serif}.t-icon-teachers-students::before{content:"(";font-family:"icone-tag",sans-serif}.t-icon-bullseye-arrow::before{content:")";font-family:"icone-tag",sans-serif}.t-icon-backpack::before{content:",";font-family:"icone-tag",sans-serif}.t-icon-heart::before{content:"'";font-family:"icone-tag",sans-serif}.t-icon-update::before{content:"$";font-family:"icone-tag",sans-serif}.t-icon-no-teacher::before{content:"%";font-family:"icone-tag",sans-serif}.t-student-monitoring::before{content:"~";font-family:"icone-tag",sans-serif}.t-parents-children::before{content:"^";font-family:"icone-tag",sans-serif}.t-monitoring_report::before{content:"{";font-family:"icone-tag",sans-serif}.t-info_positive::before{content:"}";font-family:"icone-tag",sans-serif}.t-medical::before{content:"É";font-family:"icone-tag",sans-serif}.t-hospital-user::before{content:"·";font-family:"icone-tag",sans-serif}.t-doctor::before{content:"_";font-family:"icone-tag",sans-serif}.t-classdiary::before{content:"Ú";font-family:"icone-tag",sans-serif}.t-school-transfer::before{content:"ó";font-family:"icone-tag",sans-serif}.t-class-transfer::before{content:"Í";font-family:"icone-tag",sans-serif}.t-transfer-all-school::before{content:"Ê";font-family:"icone-tag",sans-serif}.t-stage-teachers::before{content:"ñ";font-family:"icone-tag",sans-serif}.t-school-teacher::before{content:"í";font-family:"icone-tag",sans-serif}.t-class-diary::before{content:"Ú";font-family:"icone-tag",sans-serif}.t-icon-start::before{content:"ô";font-family:"icone-tag",sans-serif}.t-icon-class-stage::before{content:"Õ";font-family:"icone-tag",sans-serif}.t-statistic-data::before{content:"é";font-family:"icone-tag",sans-serif}.t-report_card::before{content:"ê";font-family:"icone-tag",sans-serif}.t-group-bag::before{content:"Á";font-family:"icone-tag",sans-serif}.t-scholarship-schools::before{content:"Â";font-family:"icone-tag",sans-serif}.t-amount-class::before{content:"â";font-family:"icone-tag",sans-serif}.t-amount-school::before{content:"á";font-family:"icone-tag",sans-serif}.t-id-card-clip::before{content:"ã";font-family:"icone-tag",sans-serif}.t-student-registration::before{content:"Ã";font-family:"icone-tag",sans-serif}.t-icon-plus::before{content:"Ç";font-family:"icone-tag",sans-serif}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-sortable{list-style-type:none}.t-sortable>*{background:#fafafe !important;border:1px solid #bac7d5 !important;margin:4px;border-radius:3px;color:#252a31 !important;display:flex;padding:12px 16px;align-items:center;gap:12px}.t-sortable .t-icon-slip{color:#272b96}.t-separator,.t-separator-primary{width:100%;border-top:.5px solid #e8edf1;margin:6px 0px}.t-separator-primary{border-top:.5px solid #bac7d5}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{display:flex !important;align-items:center;background:#f5f7f9;cursor:pointer;padding:4px 12px !important;border-radius:0;border:none;color:#252a31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252a31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:"Inter",sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5;padding:4px 12px}.t-accordeon-primary .ui-accordion-header{background:#f5f7f9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#f5f7f9 !important}.t-accordeon-primary .icon-color{color:#5f738c}.t-accordeon-secondary .ui-accordion-header{background:#f5f7f9;color:#5f738c}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#eaedfc}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5f738c;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#f5f7f9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform .5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform .5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252a31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5f738c;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.login-form{flex-direction:column;margin-top:3.25em;margin-bottom:3.25em}.login-form .form-signin{position:relative;width:334px;margin-top:3.25em;margin-bottom:0em}.login-form .login-footer{margin-top:3.25em;margin-bottom:0em;flex-direction:column;justify-content:center;display:flex;text-align:center}.login-form .login-footer .login-link{word-wrap:break-word;white-space:nowrap}.login-form .login-footer .login-link a{color:#000;text-decoration:none;font-weight:bold}.login-form .login-footer .login-link a:active{color:#4d2897;text-decoration:underline}.login-form .login-footer .login-link a:hover{color:#4d2897;text-decoration:underline}.login-form .login-versao{margin-top:3.25em;padding-top:3.25em}.t-tag,.t-tag-secundary,.t-tag-primary{display:flex;align-items:center;justify-content:center;font-size:14px;padding:4px 8px;border-radius:6px;width:fit-content;margin:0 4px}.t-tag-primary{color:#16205b;background-color:#eaeaf8}.t-tag-secundary{color:#004680;background-color:#b4dbf8}.t-expansive-panel{height:0}.t-expansive-panel.expanded{height:auto;padding:20px 0}.t-list-content,.t-list-primary{display:flex;background-color:#fafafe;margin-top:6px;margin-bottom:6px;padding:6px;border-radius:3px}.t-list-primary{background-color:#f5f7f9}.align-items--center{display:flex;align-items:center}.align-items--start{display:flex;align-items:start}.align-items--stretch{display:flex;align-items:stretch}.align-items--baseline{display:flex;align-items:baseline}.align-items--end{display:flex;align-items:end}@media(min-width: 768px){.align-items--center-on-desktop{display:flex;align-items:center}}.justify-content--center{display:flex;justify-content:center}.justify-content--start{display:flex;justify-content:start}.justify-content--end{display:flex;justify-content:end}.justify-content--space-between{display:flex;justify-content:space-between}.justify-content--end{display:flex;justify-content:end}.align-self--center{align-self:center}.align-self--start{align-self:start}.align-self--baseline{align-self:baseline}.align-self--end{align-self:end}.cursor-pointer{cursor:pointer}.text-color--red{color:#d21c1c}.text-color--green{color:#28a138}.text-color--white{color:#f5f7f9}.text-color--ink{color:#5f738c}.text-bold{font-weight:700}.flex-direction--row{flex-direction:row}.flex-direction--column{flex-direction:column}.flex-direction--row-reverse{flex-direction:row-reverse}.flex-direction--column-reverse{flex-direction:column-reverse}.text-align--center{text-align:center}.text-align--left{text-align:left}.text-align--right{text-align:right}.text-align--justify{text-align:justify}.t-padding-small--left{padding-left:12px}.t-padding-small--right{padding-right:12px}.t-padding-small--top{padding-top:12px}.t-padding-small--bottom{padding-bottom:12px}.t-padding-small--all{padding:12px}.t-padding-small--x{padding-right:12px;padding-left:12px}.t-padding-small--y{padding-top:12px;padding-bottom:12px}.t-margin-small--left{margin-left:12px}.t-margin-small--right{margin-right:12px}.t-margin-small--top{margin-top:12px}.t-margin-small--bottom{margin-bottom:12px}.t-margin-small--all{margin:12px}.t-margin-small--x{margin-right:12px;margin-left:12px}.t-margin-small--y{margin-top:12px;margin-bottom:12px}.t-padding-medium--left{padding-left:16px}.t-padding-medium--right{padding-right:16px}.t-padding-medium--top{padding-top:16px}.t-padding-medium--bottom{padding-bottom:16px}.t-padding-medium--all{padding:16px}.t-padding-medium--x{padding-right:16px;padding-left:16px}.t-padding-medium--y{padding-top:16px;padding-bottom:16px}.t-margin-medium--left{margin-left:16px}.t-margin-medium--right{margin-right:16px}.t-margin-medium--top{margin-top:16px}.t-margin-medium--bottom{margin-bottom:16px}.t-margin-medium--all{margin:16px}.t-margin-medium--x{margin-right:16px;margin-left:16px}.t-margin-medium--y{margin-top:16px;margin-bottom:16px}.t-padding-large--left{padding-left:24px}.t-padding-large--right{padding-right:24px}.t-padding-large--top{padding-top:24px}.t-padding-large--bottom{padding-bottom:24px}.t-padding-large--all{padding:24px}.t-padding-large--x{padding-right:24px;padding-left:24px}.t-padding-large--y{padding-top:24px;padding-bottom:24px}.t-margin-large--left{margin-left:24px}.t-margin-large--right{margin-right:24px}.t-margin-large--top{margin-top:24px}.t-margin-large--bottom{margin-bottom:24px}.t-margin-large--all{margin:24px}.t-margin-large--x{margin-right:24px;margin-left:24px}.t-margin-large--y{margin-top:24px;margin-bottom:24px}.t-padding-none--left{padding-left:0}.t-padding-none--right{padding-right:0}.t-padding-none--top{padding-top:0}.t-padding-none--bottom{padding-bottom:0}.t-padding-none--all{padding:0}.t-padding-none--x{padding-right:0;padding-left:0}.t-padding-none--y{padding-top:0;padding-bottom:0}.t-margin-none--left{margin-left:0}.t-margin-none--right{margin-right:0}.t-margin-none--top{margin-top:0}.t-margin-none--bottom{margin-bottom:0}.t-margin-none--all{margin:0}.t-margin-none--x{margin-right:0;margin-left:0}.t-margin-none--y{margin-top:0;margin-bottom:0}.hide{display:none}.show{display:block}.show--mobile{display:flex}@media(min-width: 640px){.show--mobile{display:none}}.show--tablet{display:flex}@media(min-width: 768px){.show--tablet{display:none}}.show--tabletDesktop{display:none}@media(min-width: 640px){.show--tabletDesktop{display:flex}}.show--desktop{display:none}@media(min-width: 768px){.show--desktop{display:flex}}.full{width:100%;height:100%}.full--width{width:100%}.full--height{height:100%}.border-none{border:none;outline:none}.sticky{position:-webkit-sticky;position:sticky !important;top:0;padding:5px;background-color:#fff;z-index:1} +@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");*,body,html{font-family:'inter', sans-serif}.main{padding:.75em}@media (min-width: 640px){.main{padding:1.5em}}a{color:inherit}a:hover{text-decoration:none}hr{margin:0;border:none}select[multiple]{height:30px}input[type="number"]{margin:0px}select,select[multiple],textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"]{min-height:30px}.wrap{flex-wrap:wrap}.row{display:flex;flex-direction:column;gap:.75em}.row.reverse{flex-direction:column-reverse}@media (min-width: 640px){.row.reverse{flex-direction:row}}.row.no-gap{gap:0}@media (min-width: 640px){.row{flex-direction:row}}.row.margin-large--bottom{margin-bottom:calc(2em / 2)}.row.margin-large--top{margin-top:.875em}.row.no-gap{gap:0}.mobile-row{display:flex;flex-direction:row}.mobile-row.upper-margin{margin-top:24px}.mobile-row.helper{padding-left:13px}.tablet-row{display:flex;flex-direction:column}.tablet-row.bottom-margin{margin-bottom:24px}@media (min-width: 768px){.tablet-row{flex-direction:row}}.column{flex:1;flex-basis:0;margin-left:calc(2em / 2);margin-right:calc(2em / 2)}.column.flex{display:flex}.column.clearfix{margin-left:0;margin-right:0}.column.clearleft{margin-left:0}.column.clearleft--on-tablet{margin-left:0}@media (min-width: 768px){.column.clearleft--on-tablet{margin-left:calc(2em / 2)}}.column.clearleft--on-mobile{margin-left:0}@media (min-width: 640px){.column.clearleft--on-mobile{margin-left:calc(2em/2)}}.column.no-grow{flex-grow:0}.column.helper{max-width:50%}@media (min-width: 640px){.column.is-half{max-width:50%}}@media (min-width: 640px){.column.is-four-fifths{max-width:80%}}.column.is-four-fifths--mobile{max-width:80%}@media (min-width: 640px){.column.is-three-quarters{max-width:75%}}@media (min-width: 640px){.column.is-two-thirds{max-width:66.6666%}}@media (min-width: 640px){.column.is-three-fifths{max-width:60%}}@media (min-width: 640px){.column.is-two-fifths{max-width:40%}}@media (min-width: 640px){.column.is-one-third{max-width:33.3333%}}@media (min-width: 640px){.column.is-third{max-width:30%}}@media (min-width: 640px){.column.is-one-quarter{max-width:25%}}@media (min-width: 640px){.column.is-one-fifth{max-width:20%}}@media (min-width: 640px){.column.is-one-tenth{max-width:10%}}.column.is-one-tenth--mobile{max-width:10%}.t-buttons-container{display:inline-block;width:100%}.t-buttons-container.auto-width{width:auto}@media (min-width: 768px){.t-buttons-container{padding:.25em 0 .25em 0;font-size:14px;display:flex}}.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{display:flex;flex:1;padding:.875em;margin:.5em 0;font-size:12px;border-radius:6px;text-decoration:none;align-self:center;justify-content:center;cursor:pointer}.t-button span,.t-button-primary span,.t-button-submit span,.t-button-secondary span,.t-button-tertiary span,.t-button-quaternary span,.t-button-danger span,.t-button-icon span{margin:0em .25em 0em 0em;font-size:14px}.t-button.mobile-margin,.mobile-margin.t-button-primary,.mobile-margin.t-button-submit,.mobile-margin.t-button-secondary,.mobile-margin.t-button-tertiary,.mobile-margin.t-button-quaternary,.mobile-margin.t-button-danger,.mobile-margin.t-button-icon{margin-right:1em}.t-button.mobile-margin-top,.mobile-margin-top.t-button-primary,.mobile-margin-top.t-button-submit,.mobile-margin-top.t-button-secondary,.mobile-margin-top.t-button-tertiary,.mobile-margin-top.t-button-quaternary,.mobile-margin-top.t-button-danger,.mobile-margin-top.t-button-icon{margin-top:1em !important}.t-button.nofloat,.nofloat.t-button-primary,.nofloat.t-button-submit,.nofloat.t-button-secondary,.nofloat.t-button-tertiary,.nofloat.t-button-quaternary,.nofloat.t-button-danger,.nofloat.t-button-icon{float:unset !important}.t-button:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button-secondary:hover,.t-button-tertiary:hover,.t-button-quaternary:hover,.t-button-danger:hover,.t-button-icon:hover,.t-button--active{text-decoration:none}@media (min-width: 640px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media (min-width: 768px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media (min-width: 1536px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{margin-right:1em;padding:.375em 1em .375em 1em}}.t-button:link,.t-button-primary:link,.t-button-submit:link,.t-button-secondary:link,.t-button-tertiary:link,.t-button-quaternary:link,.t-button-danger:link,.t-button-icon:link,.t-button:focus,.t-button-primary:focus,.t-button-submit:focus,.t-button-secondary:focus,.t-button-tertiary:focus,.t-button-quaternary:focus,.t-button-danger:focus,.t-button-icon:focus,.t-button:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button-secondary:hover,.t-button-tertiary:hover,.t-button-quaternary:hover,.t-button-danger:hover,.t-button-icon:hover,.t-button--active,.t-button:active,.t-button-primary:active,.t-button-submit:active,.t-button-secondary:active,.t-button-tertiary:active,.t-button-quaternary:active,.t-button-danger:active,.t-button-icon:active{text-decoration:none !important}.t-button img,.t-button-primary img,.t-button-submit img,.t-button-secondary img,.t-button-tertiary img,.t-button-quaternary img,.t-button-danger img,.t-button-icon img{margin-right:6px}.t-button i,.t-button-primary i,.t-button-submit i,.t-button-secondary i,.t-button-tertiary i,.t-button-quaternary i,.t-button-danger i,.t-button-icon i{align-self:center;margin-right:6px;opacity:0.5}.t-button-primary,.t-button-submit{background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center}.t-button-primary--icon{flex:0;padding:.75em 2em}.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active{color:#fff;background-color:#272B96}.t-button-primary:link,.t-button-submit:link,.t-button-primary:focus,.t-button-submit:focus,.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active,.t-button-primary:active,.t-button-submit:active{color:#fff}.t-button-secondary{background-color:#eff2f5;color:#252A31;border:0}.t-button-secondary:hover,.t-button-secondary--active,.t-button-secondary:focus{color:#252A31;background-color:#e5eaef}.t-button-tertiary{background-color:#94a8be;color:#fff}.t-button-tertiary:focus{color:#fff}.t-button-tertiary:hover,.t-button-tertiary--active{color:#fff;background-color:#5F738C}.t-button-quaternary{background-color:#d6dee6;color:#252A31;border:0;cursor:auto}.t-button-submit{margin:14px 0}.t-button-danger{color:#fff;background-color:#D21C1C;border:0}.t-button-danger--disabled{background-color:#eff2f5;color:#94a8be;cursor:not-allowed !important}.t-button-danger:hover{color:#fff}.t-button-danger--disabled:hover{color:#94a8be}.t-button-icon.secondary{padding:.375em 1.5em .375em 1.5em;background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center;font-size:16px !important}.t-button-icon.secondary:hover,.t-button-icon.secondary--active{color:#fff;background-color:#272B96}.t-button-icon.secondary:link,.t-button-icon.secondary:focus,.t-button-icon.secondary:hover,.t-button-icon.secondary--active,.t-button-icon.secondary:active{color:#fff}.t-button-icon.secondary span{font-size:16px !important}.t-button-icon-danger{cursor:pointer;color:#D21C1C !important;margin-top:14px}.t-link-button{color:#252A31 !important}.t-link-button--warning{color:#D21C1C !important;margin-top:24px}.t-link-button--info{color:#272B96 !important}.t-button-content{background-color:transparent;border:none}.t-field-file__label{width:fit-content}.t-field-file__input{display:none}.t-field-text{margin-bottom:14px}.t-field-text__label{display:flex;align-items:center}.t-field-text__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-text__input,.t-field-text input[type="text"],.t-field-text input[type="number"],.t-field-text input[type="email"],.t-field-text input[type="tel"]{box-sizing:border-box;width:100% !important;margin-bottom:0px !important;resize:none}.t-field-text__input,.t-field-text input[type="password"]{box-sizing:border-box;width:100%;margin-bottom:0px;resize:none}.t-field-text .show-password-icon{cursor:pointer;position:absolute;right:0;padding:5px}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#D21C1C}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-field-tarea{margin-bottom:24px}.t-field-tarea__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-tarea__input,.t-field-tarea textarea{width:100%;padding:4px;box-sizing:border-box;font-family:'Inter', sans-serif}.t-field-tarea__input.large,.t-field-tarea textarea.large{height:100%;min-height:100px;max-height:100px}.t-field-checkbox{display:flex;white-space:normal;line-height:12px;width:100%;margin-top:24px;margin-bottom:8px}.t-field-checkbox__label{padding-top:0 !important}.t-field-checkbox__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-checkbox__input,.t-field-checkbox input[type="checkbox"]{background:#fff;height:20px;width:20px;margin:0 14px 0 0}.t-field-checkbox.helper{margin-top:31px;margin-bottom:10px;margin-left:-18px}.t-field-checkbox--vertical{margin-right:14px}.t-field-checkbox--vertical .t-field-checkbox__label{text-align:center}.t-field-checkbox--vertical .t-field-checkbox__input{margin:0}.t-field-checkbox-group{margin-bottom:6px;margin-top:24px}.t-field-checkbox-group__label{padding-top:0 !important}.t-field-checkbox-group__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-checkbox-group .t-field-checkbox{margin-top:4px;margin-bottom:8px}.t-field-number{margin-bottom:14px}.t-field-number__label{display:flex;align-items:center}.t-field-number__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-number__input,.t-field-number input[type="number"]{width:100%;margin-bottom:0px;padding:.75em}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#D21C1C}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-multiselect{margin-top:14px}.t-multiselect .select2-search-choice{background-color:#B4DBF8 !important;border:none !important;font-size:14px !important;font-weight:500 !important;color:#004680;padding:.375em .5em !important;background-image:none !important;word-wrap:break-word}.t-multiselect .select2-search-choice div{margin-left:24px}.t-multiselect .select2-search-choice .select2-search-choice-close{background-image:url("../../../themes/default/img/botao-cancelar-multiselect.svg") !important;width:14px !important;height:14px !important;background-position:unset !important}.t-multiselect .select2-choices{overflow:auto !important;max-height:42px;width:100% !important}.t-multiselect .select3-choices{min-width:200px;max-height:57px;width:100% !important;word-wrap:break-word;text-overflow:ellipsis}@media (min-width: 768px){.t-multiselect .select3-choices{max-height:60px}}@media (min-width: 640px){.t-multiselect .select3-choices{max-height:60px}}.t-field-section{margin-top:24px}.t-field-selection{width:100%}.t-tabs{display:flex;list-style:none;margin:0em;padding:0em;overflow-x:scroll;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}@media (min-width: 768px){.t-tabs{padding:.75em 1em .75em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}@media (min-width: 1536px){.t-tabs{padding:.375em .375em .375em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}.t-tabs .t-tabs__list{display:flex;list-style:none;padding:0em;margin:0em}.t-tabs .t-tabs__list .t-tabs__item{display:inline-flex;white-space:nowrap;padding:0em;margin:0em;text-align:center}.t-tabs .t-tabs__list .t-tabs__item.active{font-weight:700;text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link{display:flex;align-items:center;color:#2e33b7}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#2e33b7;color:#fff}.t-tabs .t-tabs__list .t-tabs__item a{text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{font-size:14px;height:auto;color:#52647a;padding:.875em;display:flex;align-items:center}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.875em .875em .875em 0em}@media (min-width: 768px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.25em 1em .25em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.25em 1em .25em 0em}}@media (min-width: 1536px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.375em 1em .375em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.375em 1em .375em 0em}}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#d6dee6;color:#5F738C}.t-tabs::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list{display:flex;list-style:none;text-align:center;padding:0em;margin-left:0em;overflow-x:scroll}.t-tabs-secondary .t-tabs__list::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list .t-tabs__item{padding:8px;font-weight:500;white-space:nowrap;font-size:14px;cursor:pointer}@media (min-width: 640px){.t-tabs-secondary .t-tabs__list .t-tabs__item{font-size:14px}}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-primary{color:#252A31}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-secondary{color:#5F738C}.t-tabs-secondary .t-tabs__list .t-tabs__item.active{border-bottom:2px #222C64 solid;font-weight:600}.tag-table,.tag-table-primary,.tag-table-secondary{border-collapse:initial;margin-top:16px;width:100%}.tag-table td,.tag-table-primary td,.tag-table-secondary td{background:#fff;padding:1em}.tag-table td .t-icon,.tag-table-primary td .t-icon,.tag-table-secondary td .t-icon{color:#5F738C;font-size:16px;cursor:pointer;margin-right:14px}.tag-table thead tr th:first-child,.tag-table-primary thead tr th:first-child,.tag-table-secondary thead tr th:first-child{border-radius:3px 0 0 3px}.tag-table thead tr th:last-child,.tag-table-primary thead tr th:last-child,.tag-table-secondary thead tr th:last-child{border-radius:0 3px 3px 0}.tag-table tbody,.tag-table-primary tbody,.tag-table-secondary tbody{--dt-row-selected: $colorsBaseProductLightActive;--dt-row-selected-text: var(--dt-row-selected);--dt-row-selected-link: var(--dt-row-selected)}.tag-table tbody .selected,.tag-table-primary tbody .selected,.tag-table-secondary tbody .selected{background-color:#EAEAF8}.tag-table tbody tr,.tag-table-primary tbody tr,.tag-table-secondary tbody tr{border-bottom:2.5px solid white}.tag-table tbody td,.tag-table-primary tbody td,.tag-table-secondary tbody td{font-family:"Inter",sans-serif;font-size:14px;padding:4px}.tag-table tbody td:first-child,.tag-table-primary tbody td:first-child,.tag-table-secondary tbody td:first-child{border-radius:3px 0 0 3px}.tag-table tbody td:last-child,.tag-table-primary tbody td:last-child,.tag-table-secondary tbody td:last-child{border-radius:0 3px 3px 0}.tag-table-primary thead tr th{font-weight:500;color:#fff;background-color:#18204e;padding:8px;line-height:normal}.tag-table-primary tbody tr:nth-child(2n+1) td{background-color:#EAEAF8}.tag-table-primary tbody tr:nth-child(2n) td{background-color:#F5F7F9}.tag-table-primary td a{color:#272B96}.tag-table-secondary{border-collapse:collapse}.tag-table-secondary thead tr th{font-weight:bold;color:#5F738C;background-color:#e8edf1;padding:8px;line-height:normal}.tag-table-secondary tbody tr{border-radius:none;border-bottom:.5px solid #e8edf1}.tag-table-secondary.centralize td{text-align:center}.tag-table-secondary.align-start td,.tag-table-secondary.align-start th{text-align:start}.grid-view{padding-top:.875em}.grid-view .summary{display:none}.grid-view .dataTables_filter{margin:10px}.grid-view .dataTables_filter input[type="search"]{margin-bottom:0;margin-left:1em}.grid-view .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;border:1px solid transparent;border-radius:2px;background:transparent}.dt-body-nowrap{white-space:nowrap}.t-cards{display:inline-block;border-radius:6px;padding:24px;background:#fafafe;margin-bottom:16px;margin-right:16px;width:100%;min-width:300px;box-sizing:border-box}.t-cards .t-cards-content{display:flex;flex-direction:column;gap:8px}.t-cards .t-cards-content .t-cards-title{display:flex;align-items:center;color:#18204e;font-size:16px;font-family:'Inter', sans-serif;font-weight:700}.t-cards .t-cards-content .t-cards-title img{margin-right:8px}.t-cards .t-cards-content .t-cards-text{color:#465567;margin-left:32px;font-size:12px}.t-cards .t-cards-content .t-cards-text.clear-margin--left{margin-left:0}.t-cards .t-cards-content span{margin:0em .25em 0em 0em;font-size:24px}.t-cards .t-cards-content .t-cards-link{display:flex;gap:13px}.t-cards:hover{text-decoration:none}.tag-topbar{padding:12px 1.5em;box-sizing:border-box;list-style:none;width:100%;position:fixed;right:0em;z-index:2;background-color:#fff}@media (min-width: 768px){.tag-topbar{width:calc(100% - 190px)}}.tag-topbar__content{display:flex;justify-content:start;align-items:center;list-style:none;margin:0em;width:100%}.tag-topbar__content .tag-topbar__item{display:flex}.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:none;text-decoration:none;cursor:pointer;color:#16205b;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;font-family:'Inter', sans-serif;font-size:14px;font-weight:bold;margin-right:16px}@media (min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:block}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media (min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:none}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle div{border-radius:12px;width:100%;height:4px;background-color:#272B96}.tag-topbar__content .tag-topbar__item .tag-topbar__username{display:inline-block;font-size:14px;margin-left:8px;border-top:1px solid #eaeaf8;width:90%;color:#a6b6c8}.tag-topbar__content .tag-topbar__item .tag-topbar__school_logo{object-fit:contain;width:32px;height:32px;border-radius:50%;margin-right:8px;border:2px solid #16205b;padding:.375em}.t-accordion{border:none}.t-accordion__header .t-accordion__head{border:none}.t-accordion__container-icon:hover{background-color:#fafafe !important;user-select:none}.t-accordion__icon{transition:all 200ms}.t-accordion__icon.closed{transform:rotate(90deg);transition:all 200ms}.t-accordion__body>.odd{background-color:#fafafe}.t-accordion__body>.odd>*,.t-accordion__body>.even>*{font-size:14px;background-color:#fafafe;box-shadow:none !important;padding:14px 24px}.t-accordion__body>.odd:hover>*,.t-accordion__body>.even:hover>*,.t-accordion__body>*>*{box-shadow:none !important}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{display:flex !important;align-items:center;background:#F5F7F9;cursor:pointer;padding:4px 12px !important;border-radius:0;border:none;color:#252A31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252A31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:'Inter', sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5;padding:4px 12px}.t-accordeon-primary .ui-accordion-header{background:#F5F7F9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#F5F7F9 !important}.t-accordeon-primary .icon-color{color:#5F738C}.t-accordeon-secondary .ui-accordion-header{background:#F5F7F9;color:#5F738C}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#EAEDFC}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5F738C;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#F5F7F9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform 0.5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform 0.5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252A31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5F738C;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-filter-bar{display:flex;flex-direction:column;column-gap:12px}@media (min-width: 768px){.t-filter-bar{flex-direction:row}}.t-filter-bar .t-filters{display:flex;margin-bottom:12px}@media (min-width: 768px){.t-filter-bar .t-filters{margin-bottom:0;display:flex}}@font-face{font-family:'icone-tag';src:url("/themes/default/fonts/IconsTag_V18.ttf")}h1{font-size:24px;font-weight:700;line-height:36px;color:#252A31;padding:.875em 0em}h2{font-size:16px}h3{color:#94a8be;font-size:16px;line-height:24px;font-weight:700;margin:12px 0px}h4{font-size:14px;font-weight:700}h5,.subheading{font-size:14px;color:#94a8be;font-weight:400}.t-menu{margin:0;padding:8px}.t-menu .t-menu-item__icon{font-size:18px}.t-menu .t-menu-item__icon:hover{color:#272B96}.t-menu-item{position:relative;display:flex;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer;background:#fafafe}.t-menu-item__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-item__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272B96;align-items:center}.t-menu-item__link:link,.t-menu-item__link:focus,.t-menu-item__link:hover,.t-menu-item__link--active,.t-menu-item__link:active{text-decoration:none !important}.t-menu-item__text{color:#5F738C}.t-menu-item:hover{background:#eaeaf8}.t-menu-item.active{background:#EAEAF8}.t-menu-item.active::before{content:"";position:absolute;width:4px;left:-8px;height:35px;background:#222C64;border-radius:0 4px 4px 0}.t-menu-item.active .t-menu-item__icon{filter:saturate(1);color:#272B96}.t-menu-item.active .t-menu-item__text{color:#272B96}.t-menu-group{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer}.t-menu-group__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-group__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272B96;align-items:center}.t-menu-group__link:link,.t-menu-group__link:focus,.t-menu-group__link:hover,.t-menu-group__link--active,.t-menu-group__link:active{text-decoration:none !important;color:#272B96}.t-menu-group__text{color:#5F738C}.t-menu-group ul{margin:0}.t-menu-group:not(.active) .fa-chevron-down{display:none}.t-menu-group.active .fa-chevron-right{display:none}.t-menu-group.active .collapse{overflow:visible}.t-menu-group.active .t-menu-group__icon{filter:saturate(1)}.t-menu-group.active .t-menu-group__text{color:#272B96}.t-drawer{width:200px;float:left;position:fixed;height:100%;overflow-y:auto;overflow-x:hidden;top:0px;background:#fafafe;z-index:99;-ms-overflow-style:none;scrollbar-width:none}.t-drawer-header{display:flex;align-items:center;width:auto;margin-left:.875em;margin-top:24px;margin-bottom:24px}.t-drawer-toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media (min-width: 768px){.t-drawer-toggle{display:none}}.t-drawer-toggle div{border-radius:12px;width:100%;height:4px;background-color:#272B96}.t-drawer--mobile-hidden{left:-200px;transition:left 500ms}.t-drawer::-webkit-scrollbar{display:none}@media (min-width: 768px){.t-drawer--mobile-hidden{left:0}}.sidebar-cover{display:block;background-color:#00000062;width:100%;height:100%;position:fixed;top:0;right:0;z-index:3}.t-modal-container{color:#252A31;box-sizing:border-box;height:auto;max-height:80vh;background:#fff;border-radius:3px;overflow-y:scroll}.t-modal-container.larger{min-width:70vw;right:15vw;left:15vw;margin:auto}.t-modal-container .t-modal__header{display:flex;align-items:center;justify-content:space-between;padding:24px 24px}.t-modal-container .t-modal__header .t-title{font-size:16px;color:#252A31;font-weight:700;margin:0}.t-modal-container .t-modal__header .close{opacity:1;font-size:14px}.t-modal-container .t-modal__body{padding:14px 24px}.t-modal-container .t-modal__footer a,.t-modal-container .t-modal__footer button{flex:1;padding:.875em}.t-modal-container.height--is-four-fifths{height:80vh}.t-modal-container.height--is-three-fifths{height:60vh}.t-badge,.t-badge-info,.t-badge-critical,.t-badge-success,.t-badge-warning,.t-badge-content{display:flex;gap:2px;align-items:center;border-radius:6px;padding:0 4px 0 4px;margin:8px 8px;background-color:#eff2f5}.t-badge__icon{color:#52647a;font-size:12px;margin-right:6px}.t-badge__label{color:#52647a;font-weight:500}.t-badge:link,.t-badge-info:link,.t-badge-critical:link,.t-badge-success:link,.t-badge-warning:link,.t-badge-content:link,.t-badge:focus,.t-badge-info:focus,.t-badge-critical:focus,.t-badge-success:focus,.t-badge-warning:focus,.t-badge-content:focus,.t-badge:hover,.t-badge-info:hover,.t-badge-critical:hover,.t-badge-success:hover,.t-badge-warning:hover,.t-badge-content:hover,.t-badge--active,.t-badge:active,.t-badge-info:active,.t-badge-critical:active,.t-badge-success:active,.t-badge-warning:active,.t-badge-content:active{text-decoration:none !important}.t-badge-info{width:fit-content;border:0.1rem solid #94A8BE;font-weight:500;background-color:#B4DBF8;color:#004680;padding:0 6px}.t-badge-info__icon{color:#004680;font-size:14px}.t-badge-critical{border:0.1rem solid #D21C1C;background-color:#D21C1C;color:#fff}.t-badge-success{background-color:#EBF4EC;color:#2B7336}.t-badge-warning{background-color:#fdf0e3;color:#a25100}.t-badge-content{background-color:#EAEAF8;color:#3f45ea;border-radius:4px;border:none;padding:.375em .5em .375em .5em;gap:4px}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-icon-trash::before{content:'A';font-family:'icone-tag', sans-serif}.t-icon-less_stock::before{content:'a';font-family:'icone-tag', sans-serif}.t-icon-bar_graph::before{content:'B';font-family:'icone-tag', sans-serif}.t-icon-more_stock::before{content:'b';font-family:'icone-tag', sans-serif}.t-icon-people::before{content:'C';font-family:'icone-tag', sans-serif}.t-icon-person_add::before{content:'c';font-family:'icone-tag', sans-serif}.t-icon-bus::before{content:'D';font-family:'icone-tag', sans-serif}.t-icon-person_remove::before{content:'d';font-family:'icone-tag', sans-serif}.t-icon-apple::before{content:'E';font-family:'icone-tag', sans-serif}.t-icon-down_arrow::before{content:'e';font-family:'icone-tag', sans-serif}.t-icon-pencil::before{content:'F';font-family:'icone-tag', sans-serif}.t-icon-hamburger_button::before{content:'f';font-family:'icone-tag', sans-serif}.t-icon-column_graphi::before{content:'G';font-family:'icone-tag', sans-serif}.t-icon-close::before{content:'g';font-family:'icone-tag', sans-serif}.t-icon-calendar::before{content:'H';font-family:'icone-tag', sans-serif}.t-icon-search_icon::before{content:'h';font-family:'icone-tag', sans-serif}.t-icon-settings::before{content:'I';font-family:'icone-tag', sans-serif}.t-icon-filter::before{content:'i';font-family:'icone-tag', sans-serif}.t-icon-educacenso::before{content:'J';font-family:'icone-tag', sans-serif}.t-icon-right_arrow::before{content:'j';font-family:'icone-tag', sans-serif}.t-icon-help::before{content:'K';font-family:'icone-tag', sans-serif}.t-icon-left_arrow::before{content:'k';font-family:'icone-tag', sans-serif}.t-icon-home::before{content:'L';font-family:'icone-tag', sans-serif}.t-icon-truck-loading::before{content:'l';font-family:'icone-tag', sans-serif}.t-icon-book::before{content:'M';font-family:'icone-tag', sans-serif}.t-icon-up_arrow::before{content:'m';font-family:'icone-tag', sans-serif}.t-icon-exit::before{content:'N';font-family:'icone-tag', sans-serif}.t-icon-slider::before{content:'n';font-family:'icone-tag', sans-serif}.t-icon-blackboard::before{content:'O';font-family:'icone-tag', sans-serif}.t-icon-bin::before{content:'o';font-family:'icone-tag', sans-serif}.t-icon-finger_print::before{content:'P';font-family:'icone-tag', sans-serif}.t-icon-success::before{content:'p';font-family:'icone-tag', sans-serif}.t-icon-school::before{content:'Q';font-family:'icone-tag', sans-serif}.t-icon-info::before{content:'q';font-family:'icone-tag', sans-serif}.t-icon-line_graph::before{content:'R';font-family:'icone-tag', sans-serif}.t-icon-eye::before{content:'r';font-family:'icone-tag', sans-serif}.t-icon-schedule::before{content:'S';font-family:'icone-tag', sans-serif}.t-icon-eye_hash::before{content:'s';font-family:'icone-tag', sans-serif}.t-icon-diary::before{content:'T';font-family:'icone-tag', sans-serif}.t-icon-lock::before{content:'t';font-family:'icone-tag', sans-serif}.t-icon-topics::before{content:'U';font-family:'icone-tag', sans-serif}.t-icon-duplicate::before{content:'u';font-family:'icone-tag', sans-serif}.t-icon-checklist::before{content:'V';font-family:'icone-tag', sans-serif}.t-icon-photos::before{content:'v';font-family:'icone-tag', sans-serif}.t-icon-edition::before{content:'W';font-family:'icone-tag', sans-serif}.t-icon-camera::before{content:'w';font-family:'icone-tag', sans-serif}.t-icon-configuration-adm::before{content:'X';font-family:'icone-tag', sans-serif}.t-icon-export::before{content:'x';font-family:'icone-tag', sans-serif}.t-icon-sagres::before{content:'Y';font-family:'icone-tag', sans-serif}.t-icon-printer::before{content:'y';font-family:'icone-tag', sans-serif}.t-icon-restaurant::before{content:'Z';font-family:'icone-tag', sans-serif}.t-icon-play::before{content:'z';font-family:'icone-tag', sans-serif}.t-icon-to-go-back::before{content:'0';font-family:'icone-tag', sans-serif}.t-icon-annotation::before{content:'1';font-family:'icone-tag', sans-serif}.t-icon-group-people::before{content:'2';font-family:'icone-tag', sans-serif}.t-icon-submit-form::before{content:'3';font-family:'icone-tag', sans-serif}.t-icon-person::before{content:'4';font-family:'icone-tag', sans-serif}.t-icon-slip::before{content:'5';font-family:'icone-tag', sans-serif}.t-icon-box::before{content:'6';font-family:'icone-tag', sans-serif}.t-icon-question-group::before{content:'7';font-family:'icone-tag', sans-serif}.t-icon-list-form::before{content:'8';font-family:'icone-tag', sans-serif}.t-icon-balloon-question::before{content:'9';font-family:'icone-tag', sans-serif}.t-icon-sucess::before{content:'/';font-family:'icone-tag', sans-serif}.t-icon-graduation-cap::before{content:'!';font-family:'icone-tag', sans-serif}.t-icon-bus2::before{content:'"';font-family:'icone-tag', sans-serif}.t-icon-copy::before{content:'#';font-family:'icone-tag', sans-serif}.t-icon-sp::before{content:'.';font-family:'icone-tag', sans-serif}.t-icon-integration::before{content:'`';font-family:'icone-tag', sans-serif}.t-icon-add-group::before{content:'-';font-family:'icone-tag', sans-serif}.t-icon-room-service::before{content:'&';font-family:'icone-tag', sans-serif}.t-icon-circle-three-quarters::before{content:'[';font-family:'icone-tag', sans-serif}.t-icon-cart-arrow-down::before{content:']';font-family:'icone-tag', sans-serif}.t-icon-Generate-RA::before{content:':';font-family:'icone-tag', sans-serif}.t-icon-graduation-cap::before{content:';';font-family:'icone-tag', sans-serif}.t-icon-handshake::before{content:'<';font-family:'icone-tag', sans-serif}.t-icon-weather-report::before{content:'>';font-family:'icone-tag', sans-serif}.t-icon-percentage::before{content:'=';font-family:'icone-tag', sans-serif}.t-icon-identity::before{content:'?';font-family:'icone-tag', sans-serif}.t-icon-e-learning::before{content:'@';font-family:'icone-tag', sans-serif}.t-icon-arrow-az::before{content:'*';font-family:'icone-tag', sans-serif}.t-icon-wheelchair::before{content:'+';font-family:'icone-tag', sans-serif}.t-icon-teachers-students::before{content:'(';font-family:'icone-tag', sans-serif}.t-icon-bullseye-arrow::before{content:')';font-family:'icone-tag', sans-serif}.t-icon-backpack::before{content:',';font-family:'icone-tag', sans-serif}.t-icon-heart::before{content:"'";font-family:'icone-tag', sans-serif}.t-icon-update::before{content:'$';font-family:'icone-tag', sans-serif}.t-icon-no-teacher::before{content:'%';font-family:'icone-tag', sans-serif}.t-student-monitoring::before{content:'~';font-family:'icone-tag', sans-serif}.t-parents-children::before{content:'^';font-family:'icone-tag', sans-serif}.t-monitoring_report::before{content:'{';font-family:'icone-tag', sans-serif}.t-info_positive::before{content:'}';font-family:'icone-tag', sans-serif}.t-medical::before{content:'É';font-family:'icone-tag', sans-serif}.t-hospital-user::before{content:'·';font-family:'icone-tag', sans-serif}.t-doctor::before{content:'_';font-family:'icone-tag', sans-serif}.t-classdiary::before{content:'Ú';font-family:'icone-tag', sans-serif}.t-school-transfer::before{content:'ó';font-family:'icone-tag', sans-serif}.t-class-transfer::before{content:'Í';font-family:'icone-tag', sans-serif}.t-transfer-all-school::before{content:'Ê';font-family:'icone-tag', sans-serif}.t-stage-teachers::before{content:'ñ';font-family:'icone-tag', sans-serif}.t-school-teacher::before{content:'í';font-family:'icone-tag', sans-serif}.t-class-diary::before{content:'Ú';font-family:'icone-tag', sans-serif}.t-icon-start::before{content:'ô';font-family:'icone-tag', sans-serif}.t-icon-class-stage::before{content:'Õ';font-family:'icone-tag', sans-serif}.t-statistic-data::before{content:'é';font-family:'icone-tag', sans-serif}.t-report_card::before{content:'ê';font-family:'icone-tag', sans-serif}.t-group-bag::before{content:'Á';font-family:'icone-tag', sans-serif}.t-scholarship-schools::before{content:'Â';font-family:'icone-tag', sans-serif}.t-amount-class::before{content:'â';font-family:'icone-tag', sans-serif}.t-amount-school::before{content:'á';font-family:'icone-tag', sans-serif}.t-id-card-clip::before{content:'ã';font-family:'icone-tag', sans-serif}.t-student-registration::before{content:'Ã';font-family:'icone-tag', sans-serif}.t-icon-plus::before{content:'Ç';font-family:'icone-tag', sans-serif}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-sortable{list-style-type:none}.t-sortable>*{background:#fafafe !important;border:1px solid #bac7d5 !important;margin:4px;border-radius:3px;color:#252A31 !important;display:flex;padding:12px 16px;align-items:center;gap:12px}.t-sortable .t-icon-slip{color:#272B96}.t-separator,.t-separator-primary{width:100%;border-top:.5px solid #e8edf1;margin:6px 0px}.t-separator-primary{border-top:.5px solid #bac7d5}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{display:flex !important;align-items:center;background:#F5F7F9;cursor:pointer;padding:4px 12px !important;border-radius:0;border:none;color:#252A31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252A31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:'Inter', sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5;padding:4px 12px}.t-accordeon-primary .ui-accordion-header{background:#F5F7F9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#F5F7F9 !important}.t-accordeon-primary .icon-color{color:#5F738C}.t-accordeon-secondary .ui-accordion-header{background:#F5F7F9;color:#5F738C}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#EAEDFC}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5F738C;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#F5F7F9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform 0.5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform 0.5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252A31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5F738C;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.login-form{flex-direction:column;margin-top:3.25em;margin-bottom:3.25em}.login-form .form-signin{position:relative;width:334px;margin-top:3.25em;margin-bottom:0em}.login-form .login-footer{margin-top:3.25em;margin-bottom:0em;flex-direction:column;justify-content:center;display:flex;text-align:center}.login-form .login-footer .login-link{word-wrap:break-word;white-space:nowrap}.login-form .login-footer .login-link a{color:black;text-decoration:none;font-weight:bold}.login-form .login-footer .login-link a:active{color:#4d2897;text-decoration:underline}.login-form .login-footer .login-link a:hover{color:#4d2897;text-decoration:underline}.login-form .login-versao{margin-top:3.25em;padding-top:3.25em}.t-tag,.t-tag-primary,.t-tag-secundary{display:flex;align-items:center;justify-content:center;font-size:14px;padding:4px 8px;border-radius:6px;width:fit-content;margin:0 4px}.t-tag-primary{color:#16205b;background-color:#EAEAF8}.t-tag-secundary{color:#004680;background-color:#B4DBF8}.t-expansive-panel{height:0}.t-expansive-panel.expanded{height:auto;padding:20px 0}.t-list-content,.t-list-primary{display:flex;background-color:#fafafe;margin-top:6px;margin-bottom:6px;padding:6px;border-radius:3px}.t-list-primary{background-color:#F5F7F9}.align-items--center{display:flex;align-items:center}.align-items--start{display:flex;align-items:start}.align-items--stretch{display:flex;align-items:stretch}.align-items--baseline{display:flex;align-items:baseline}.align-items--end{display:flex;align-items:end}@media (min-width: 768px){.align-items--center-on-desktop{display:flex;align-items:center}}.justify-content--center{display:flex;justify-content:center}.justify-content--start{display:flex;justify-content:start}.justify-content--end{display:flex;justify-content:end}.justify-content--space-between{display:flex;justify-content:space-between}.justify-content--end{display:flex;justify-content:end}.align-self--center{align-self:center}.align-self--start{align-self:start}.align-self--baseline{align-self:baseline}.align-self--end{align-self:end}.cursor-pointer{cursor:pointer}.text-color--red{color:#D21C1C}.text-color--green{color:#28a138}.text-color--white{color:#F5F7F9}.text-color--ink{color:#5F738C}.text-bold{font-weight:700}.flex-direction--row{flex-direction:row}.flex-direction--column{flex-direction:column}.flex-direction--row-reverse{flex-direction:row-reverse}.flex-direction--column-reverse{flex-direction:column-reverse}.text-align--center{text-align:center}.text-align--left{text-align:left}.text-align--right{text-align:right}.text-align--justify{text-align:justify}.t-padding-small--left{padding-left:12px}.t-padding-small--right{padding-right:12px}.t-padding-small--top{padding-top:12px}.t-padding-small--bottom{padding-bottom:12px}.t-padding-small--all{padding:12px}.t-padding-small--x{padding-right:12px;padding-left:12px}.t-padding-small--y{padding-top:12px;padding-bottom:12px}.t-margin-small--left{margin-left:12px}.t-margin-small--right{margin-right:12px}.t-margin-small--top{margin-top:12px}.t-margin-small--bottom{margin-bottom:12px}.t-margin-small--all{margin:12px}.t-margin-small--x{margin-right:12px;margin-left:12px}.t-margin-small--y{margin-top:12px;margin-bottom:12px}.t-padding-medium--left{padding-left:16px}.t-padding-medium--right{padding-right:16px}.t-padding-medium--top{padding-top:16px}.t-padding-medium--bottom{padding-bottom:16px}.t-padding-medium--all{padding:16px}.t-padding-medium--x{padding-right:16px;padding-left:16px}.t-padding-medium--y{padding-top:16px;padding-bottom:16px}.t-margin-medium--left{margin-left:16px}.t-margin-medium--right{margin-right:16px}.t-margin-medium--top{margin-top:16px}.t-margin-medium--bottom{margin-bottom:16px}.t-margin-medium--all{margin:16px}.t-margin-medium--x{margin-right:16px;margin-left:16px}.t-margin-medium--y{margin-top:16px;margin-bottom:16px}.t-padding-large--left{padding-left:24px}.t-padding-large--right{padding-right:24px}.t-padding-large--top{padding-top:24px}.t-padding-large--bottom{padding-bottom:24px}.t-padding-large--all{padding:24px}.t-padding-large--x{padding-right:24px;padding-left:24px}.t-padding-large--y{padding-top:24px;padding-bottom:24px}.t-margin-large--left{margin-left:24px}.t-margin-large--right{margin-right:24px}.t-margin-large--top{margin-top:24px}.t-margin-large--bottom{margin-bottom:24px}.t-margin-large--all{margin:24px}.t-margin-large--x{margin-right:24px;margin-left:24px}.t-margin-large--y{margin-top:24px;margin-bottom:24px}.t-padding-none--left{padding-left:0}.t-padding-none--right{padding-right:0}.t-padding-none--top{padding-top:0}.t-padding-none--bottom{padding-bottom:0}.t-padding-none--all{padding:0}.t-padding-none--x{padding-right:0;padding-left:0}.t-padding-none--y{padding-top:0;padding-bottom:0}.t-margin-none--left{margin-left:0}.t-margin-none--right{margin-right:0}.t-margin-none--top{margin-top:0}.t-margin-none--bottom{margin-bottom:0}.t-margin-none--all{margin:0}.t-margin-none--x{margin-right:0;margin-left:0}.t-margin-none--y{margin-top:0;margin-bottom:0}.hide{display:none}.show{display:block}.show--mobile{display:flex}@media (min-width: 640px){.show--mobile{display:none}}.show--tablet{display:flex}@media (min-width: 768px){.show--tablet{display:none}}.show--tabletDesktop{display:none}@media (min-width: 640px){.show--tabletDesktop{display:flex}}.show--desktop{display:none}@media (min-width: 768px){.show--desktop{display:flex}}.full{width:100%;height:100%}.full--width{width:100%}.full--height{height:100%}.border-none{border:none;outline:none}.sticky{position:-webkit-sticky;position:sticky !important;top:0;padding:5px;background-color:#fff;z-index:1} From b5017f64f363c675f9bf520291ace8c1249a2c1a Mon Sep 17 00:00:00 2001 From: Gustavo Santos Date: Mon, 1 Apr 2024 11:17:48 -0300 Subject: [PATCH 07/15] Feat/create farmer register (#653) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Pegando as informações do firebase * realizando o merge com a dev e modificando o changelog * Corrigindo o controller farmerregister * Pegando o cadastro do agricultor de acordo com o seu cpf * Conectando o update do agricultor com o firebase * Finalizada conexão para alteração do agricultor no firebase * Permitindo a atualização e a exclusão no firebase e adicionando verificações de cpf * Corrigindo issues * corrigindo code smells --------- Co-authored-by: TI GUSTAVO Co-authored-by: Igor Gonçalves --- CHANGELOG.md | 4 + .../default.sql | 1 + .../controllers/FarmerregisterController.php | 447 ++++++++++-------- app/modules/foods/models/FarmerRegister.php | 127 ++--- .../foods/resources/farmer/_initialization.js | 56 ++- .../foods/services/FireBaseService.php | 106 ++++- .../foods/usecases/DeleteFarmerRegister.php | 23 + .../foods/usecases/GetFarmerRegister.php | 7 +- .../foods/usecases/UpdateFarmerRegister.php | 23 + .../foods/views/farmerregister/_form.php | 8 +- config.php | 2 +- 11 files changed, 538 insertions(+), 266 deletions(-) create mode 100644 app/migrations/2024-22-03_referenceId_farmer_register/default.sql create mode 100644 app/modules/foods/usecases/DeleteFarmerRegister.php create mode 100644 app/modules/foods/usecases/UpdateFarmerRegister.php diff --git a/CHANGELOG.md b/CHANGELOG.md index a3e5a35b7..cf84b4a86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,13 @@ +## [Versão 3.77.130] +- Criando as telas relacionadas a agricultor no novo módulo de merenda escolar + ## [Versão 3.76.130] - Adicionado gerência de editais anuais de aquisição de gêneros alimentícios da agricultura familiar e empreendedor familiar rural ## [Versão 3.76.129] - Correção na descrição da séries para as inconsistências sagres + ## [Versão 3.76.128] - Corrigido erro que não mostrava o nome da escola e das turmas nas inconsistências sagres - Corrigido na busca por profissional na mesma escola diff --git a/app/migrations/2024-22-03_referenceId_farmer_register/default.sql b/app/migrations/2024-22-03_referenceId_farmer_register/default.sql new file mode 100644 index 000000000..02df448b7 --- /dev/null +++ b/app/migrations/2024-22-03_referenceId_farmer_register/default.sql @@ -0,0 +1 @@ +ALTER TABLE farmer_register ADD COLUMN reference_id varchar(36); diff --git a/app/modules/foods/controllers/FarmerregisterController.php b/app/modules/foods/controllers/FarmerregisterController.php index ac4e6c66c..456f47121 100644 --- a/app/modules/foods/controllers/FarmerregisterController.php +++ b/app/modules/foods/controllers/FarmerregisterController.php @@ -2,131 +2,184 @@ class FarmerRegisterController extends Controller { - /** - * @var string the default layout for the views. Defaults to '//layouts/column2', meaning - * using two-column layout. See 'protected/views/layouts/column2.php'. - */ - public $layout='//layouts/column2'; - - /** - * @return array action filters - */ - public function filters() - { - return array( - 'accessControl', // perform access control for CRUD operations - 'postOnly + delete', // we only allow deletion via POST request - ); - } - - /** - * Specifies the access control rules. - * This method is used by the 'accessControl' filter. - * @return array access control rules - */ - public function accessRules() - { - return array( - array('allow', // allow all users to perform 'index' and 'view' actions - 'actions'=>array( - 'index', - 'view', - 'createFarmerRegister', - 'updateFarmerRegister', - 'getFarmerRegister', + /** + * @var string the default layout for the views. Defaults to '//layouts/column2', meaning + * using two-column layout. See 'protected/views/layouts/column2.php'. + */ + public $layout = '//layouts/column2'; + + /** + * @return array action filters + */ + public function filters() + { + return array( + 'accessControl', // perform access control for CRUD operations + 'postOnly + delete', // we only allow deletion via POST request + ); + } + + /** + * Specifies the access control rules. + * This method is used by the 'accessControl' filter. + * @return array access control rules + */ + public function accessRules() + { + return array( + array( + 'allow', // allow all users to perform 'index' and 'view' actions + 'actions' => array( + 'index', + 'view', + 'createFarmerRegister', + 'updateFarmerRegister', + 'getFarmerRegister', 'getFoodAlias', 'getFarmerFoods' - ), - 'users'=>array('*'), - ), - array('allow', // allow authenticated user to perform 'create' and 'update' actions - 'actions'=>array('create','update'), - 'users'=>array('@'), - ), - array('allow', // allow admin user to perform 'admin' and 'delete' actions - 'actions'=>array('admin','delete'), - 'users'=>array('admin'), - ), - array('deny', // deny all users - 'users'=>array('*'), - ), - ); - } - - public function actionView($id) - { - $this->render('view',array( - 'model'=>$this->loadModel($id), - )); - } - - public function actionUpdateFarmerRegister() { - $farmerId = Yii::app()->request->getPost('farmerId'); - $name = Yii::app()->request->getPost('name'); - $cpf = Yii::app()->request->getPost('cpf'); - $phone = Yii::app()->request->getPost('phone'); - $groupType = Yii::app()->request->getPost('groupType'); + ), + 'users' => array('*'), + ), + array( + 'allow', // allow authenticated user to perform 'create' and 'update' actions + 'actions' => array('create', 'update'), + 'users' => array('@'), + ), + array( + 'allow', // allow admin user to perform 'admin' and 'delete' actions + 'actions' => array('admin', 'delete'), + 'users' => array('admin'), + ), + array( + 'deny', // deny all users + 'users' => array('*'), + ), + ); + } + + public function actionView($id) + { + $this->render('view', array( + 'model' => $this->loadModel($id), + )); + } + + + public function actionCreateFarmerRegister() + { + $name = Yii::app()->request->getPost('name'); + $cpf = Yii::app()->request->getPost('cpf'); + $phone = Yii::app()->request->getPost('phone'); + $groupType = Yii::app()->request->getPost('groupType'); $foodsRelation = Yii::app()->request->getPost('foodsRelation'); - if(!empty($name) && !empty($cpf) && !empty($phone) && !empty($groupType)) { - $existingFarmer = FarmerRegister::model()->findByPk($farmerId); + if (!empty($name) && !empty($cpf) && !empty($phone) && !empty($groupType)) { + if ($this->verifyFarmerCpf($cpf)) { + echo json_encode(['error' => 'O CPF do agricultor informado já possui cadastro no TAG']); + } else { + $farmerRegister = new FarmerRegister(); + + $farmerRegister->name = $name; + $farmerRegister->cpf = $cpf; + $farmerRegister->phone = $phone; + $farmerRegister->group_type = $groupType; + + if ($farmerRegister->save()) { + foreach ($foodsRelation as $foodData) { + $farmerFoods = new FarmerFoods; + + $farmerFoods->food_fk = $foodData['id']; + $farmerFoods->farmer_fk = $farmerRegister->id; + $farmerFoods->amount = $foodData['amount']; + $farmerFoods->measurementUnit = $foodData['measurementUnit']; + + $farmerFoods->save(); + } + Yii::app()->user->setFlash('success', Yii::t('default', 'Cadastro do agricultor criado com sucesso!')); + $getFarmerRegister = new GetFarmerRegister(); + $existingFarmerRegister = $getFarmerRegister->exec($cpf); + + if (empty($existingFarmerRegister)) { + $createFarmerRegister = new CreateFarmerRegister(); + $farmerReferenceId = $createFarmerRegister->exec($name, $cpf, $phone, $groupType, $foodsRelation); + + $farmerRegister->reference_id = $farmerReferenceId; + $farmerRegister->save(); + } else { + $updateFarmerRegister = new UpdateFarmerRegister(); + $updateFarmerRegister->exec($existingFarmerRegister["id"], $name, $cpf, $phone, $groupType, $foodsRelation); + + $farmerRegister->reference_id = $existingFarmerRegister["id"]; + $farmerRegister->save(); + } + } + } + } + } - $existingFarmer->name = $name; - $existingFarmer->cpf = $cpf; - $existingFarmer->phone = $phone; - $existingFarmer->group_type = $groupType; + public function actionUpdateFarmerRegister() + { + $farmerId = Yii::app()->request->getPost('farmerId'); + $name = Yii::app()->request->getPost('name'); + $cpf = Yii::app()->request->getPost('cpf'); + $phone = Yii::app()->request->getPost('phone'); + $groupType = Yii::app()->request->getPost('groupType'); + $foodsRelation = Yii::app()->request->getPost('foodsRelation'); - if($existingFarmer->save()) { - FarmerFoods::model()->deleteAll('farmer_fk = :id', array(':id' => $farmerId)); + if (!empty($name) && !empty($cpf) && !empty($phone) && !empty($groupType)) { + $existingFarmer = FarmerRegister::model()->findByPk($farmerId); - foreach ($foodsRelation as $foodData) { - $farmerFoods = new FarmerFoods; + $existingFarmer->name = $name; + $existingFarmer->cpf = $cpf; + $existingFarmer->phone = $phone; + $existingFarmer->group_type = $groupType; - $farmerFoods->food_fk = $foodData['id']; - $farmerFoods->farmer_fk = $existingFarmer->id; - $farmerFoods->amount = $foodData['amount']; - $farmerFoods->measurementUnit = $foodData['measurementUnit']; + if ($existingFarmer->save()) { + FarmerFoods::model()->deleteAll('farmer_fk = :id', array(':id' => $farmerId)); - $farmerFoods->save(); - } - } - } - } + foreach ($foodsRelation as $foodData) { + $farmerFoods = new FarmerFoods; - public function actionCreateFarmerRegister() { - $name = Yii::app()->request->getPost('name'); - $cpf = Yii::app()->request->getPost('cpf'); - $phone = Yii::app()->request->getPost('phone'); - $groupType = Yii::app()->request->getPost('groupType'); - $foodsRelation = Yii::app()->request->getPost('foodsRelation'); + $farmerFoods->food_fk = $foodData['id']; + $farmerFoods->farmer_fk = $existingFarmer->id; + $farmerFoods->amount = $foodData['amount']; + $farmerFoods->measurementUnit = $foodData['measurementUnit']; - if(!empty($name) && !empty($cpf) && !empty($phone) && !empty($groupType)) { - $farmerRegister = new FarmerRegister(); - - $farmerRegister->name = $name; - $farmerRegister->cpf = $cpf; - $farmerRegister->phone = $phone; - $farmerRegister->group_type = $groupType; - - if($farmerRegister->save()) { - foreach ($foodsRelation as $foodData) { - $farmerFoods = new FarmerFoods; - - $farmerFoods->food_fk = $foodData['id']; - $farmerFoods->farmer_fk = $farmerRegister->id; - $farmerFoods->amount = $foodData['amount']; - $farmerFoods->measurementUnit = $foodData['measurementUnit']; - - $farmerFoods->save(); - } - Yii::app()->user->setFlash('success', Yii::t('default', 'Cadastro do agricultor criado com sucesso!')); - $createFarmerRegister = new CreateFarmerRegister(); - $createFarmerRegister->exec($name, $cpf, $phone, $groupType, $foodsRelation); - } + $farmerFoods->save(); + } + + $updateFarmerRegister = new UpdateFarmerRegister(); + $updateFarmerRegister->exec($existingFarmer->reference_id, $name, $cpf, $phone, $groupType, $foodsRelation); + } } - } + } + + public function verifyFarmerCpf($cpf) + { + $criteria = new CDbCriteria(); + $criteria->condition = 't.cpf = :cpf'; + $criteria->params = array(':cpf' => $cpf); + $farmerRegister = FarmerRegister::model()->findAll($criteria); + + return !empty($farmerRegister); + } + + public function actionGetFarmerRegister() + { + $cpf = Yii::app()->request->getPost('farmerCpf'); + + if ($this->verifyFarmerCpf($cpf)) { + echo json_encode(['error' => 'O CPF do agricultor informado já possui cadastro no TAG']); + } else { + $getFarmerRegister = new GetFarmerRegister(); + $farmerRegister = $getFarmerRegister->exec($cpf); - public function actionGetFarmerFoods() { + echo json_encode($farmerRegister); + } + } + + public function actionGetFarmerFoods() + { $id = Yii::app()->request->getPost('id'); $criteria = new CDbCriteria(); @@ -137,7 +190,7 @@ public function actionGetFarmerFoods() { $values = []; foreach ($farmerFoodsData as $foods) { $values[] = array( - 'id' => $foods->food_fk, + 'id' => $foods->food_fk, 'foodDescription' => preg_replace('/,|\b(cru[ao]?)\b/', '', $foods->foodFk->description), 'amount' => $foods->amount, 'measurementUnit' => $foods->measurementUnit, @@ -147,7 +200,8 @@ public function actionGetFarmerFoods() { echo json_encode($values); } - public function actionGetFoodAlias() { + public function actionGetFoodAlias() + { $criteria = new CDbCriteria(); $criteria->select = 'id, description, measurementUnit'; $criteria->condition = 'alias_id = t.id'; @@ -165,104 +219,111 @@ public function actionGetFoodAlias() { echo json_encode($values); } - public function actionCreate() { - $model=new FarmerRegister; + public function actionCreate() + { + $model = new FarmerRegister; $modelFarmerFoods = new FarmerFoods; - if(isset($_POST['FarmerRegister'])) - { - $model->attributes=$_POST['FarmerRegister']; - if($model->save()) { - $this->redirect(array('index')); + if (isset($_POST['FarmerRegister'])) { + $model->attributes = $_POST['FarmerRegister']; + if ($model->save()) { + $this->redirect(array('index')); } - } - - $this->render('create',array( - 'model'=>$model, 'modelFarmerFoods'=>$modelFarmerFoods, - )); - } - - public function actionUpdate($id) - { - $model=$this->loadModel($id); - $modelFarmerFoods=$this->loadFarmerFoodsModel($id); - - if(isset($_POST['FarmerRegister'])) - { - $model->attributes=$_POST['FarmerRegister']; - if($model->save()) { - $this->redirect(array('view','id'=>$model->id)); + } + + $this->render('create', array( + 'model' => $model, 'modelFarmerFoods' => $modelFarmerFoods, + )); + } + + public function actionUpdate($id) + { + $model = $this->loadModel($id); + + $modelFarmerFoods = $this->loadFarmerFoodsModel($id); + + + if (isset($_POST['FarmerRegister'])) { + $model->attributes = $_POST['FarmerRegister']; + if ($model->save()) { + $this->redirect(array('index')); } - } + } + + $this->render('update', array( + 'model' => $model, 'modelFarmerFoods' => $modelFarmerFoods, + )); + } - $this->render('update',array( - 'model'=>$model, 'modelFarmerFoods'=>$modelFarmerFoods, - )); - } + public function actionDelete($id) + { + $farmerRegister = FarmerRegister::model()->findByPk($id); - public function actionDelete($id) - { - FarmerFoods::model()->deleteAll('farmer_fk = :id', array(':id' => $id)); - $this->loadModel($id)->delete(); - Yii::app()->user->setFlash('success', Yii::t('default', 'Agricultor excluído com sucesso!')); + $deleteFarmerRegister = new DeleteFarmerRegister(); + $deleteFarmerRegister->exec($farmerRegister->reference_id); - $returnUrl = Yii::app()->request->getPost('returnUrl'); + FarmerFoods::model()->deleteAll('farmer_fk = :id', array(':id' => $id)); + $this->loadModel($id)->delete(); - if(!isset($_GET['ajax'])) { - $this->redirect(isset($returnUrl) ? $returnUrl : array('admin')); + + Yii::app()->user->setFlash('success', Yii::t('default', 'Agricultor excluído com sucesso!')); + + $returnUrl = Yii::app()->request->getPost('returnUrl'); + + if (!isset($_GET['ajax'])) { + $this->redirect(isset($returnUrl) ? $returnUrl : array('admin')); } - } - - public function actionIndex() - { - $dataProvider=new CActiveDataProvider('FarmerRegister'); - $this->render('index',array( - 'dataProvider'=>$dataProvider, - )); - } - - public function actionAdmin() - { - $model=new FarmerRegister('search'); - $model->unsetAttributes(); - if(isset($_GET['FarmerRegister'])) { - $model->attributes=$_GET['FarmerRegister']; + } + + public function actionIndex() + { + $dataProvider = new CActiveDataProvider('FarmerRegister'); + $this->render('index', array( + 'dataProvider' => $dataProvider, + )); + } + + public function actionAdmin() + { + $model = new FarmerRegister('search'); + $model->unsetAttributes(); + if (isset($_GET['FarmerRegister'])) { + $model->attributes = $_GET['FarmerRegister']; } - $this->render('admin',array( - 'model'=>$model, - )); - } + $this->render('admin', array( + 'model' => $model, + )); + } - public function loadModel($id) - { - $model=FarmerRegister::model()->findByPk($id); - if($model===null) { - throw new CHttpException(404,'The requested page does not exist.'); + public function loadModel($id) + { + $model = FarmerRegister::model()->findByPk($id); + if ($model === null) { + throw new CHttpException(404, 'The requested page does not exist.'); } - return $model; - } + return $model; + } public function loadFarmerFoodsModel($id) - { - $modelFarmerFoods = FarmerFoods::model()->find( + { + $modelFarmerFoods = FarmerFoods::model()->find( array( 'condition' => 'farmer_fk = :id', 'params' => array(':id' => $id), ) ); - if($modelFarmerFoods===null) { - throw new CHttpException(404,'The requested page does not exist.'); + if ($modelFarmerFoods === null) { + $modelFarmerFoods = new FarmerFoods; + } + return $modelFarmerFoods; + } + + protected function performAjaxValidation($model) + { + if (isset($_POST['ajax']) && $_POST['ajax'] === 'farmer-register-form') { + echo CActiveForm::validate($model); + Yii::app()->end(); } - return $modelFarmerFoods; - } - - protected function performAjaxValidation($model) - { - if(isset($_POST['ajax']) && $_POST['ajax']==='farmer-register-form') - { - echo CActiveForm::validate($model); - Yii::app()->end(); - } - } + } } diff --git a/app/modules/foods/models/FarmerRegister.php b/app/modules/foods/models/FarmerRegister.php index 7435cddd1..c46024322 100644 --- a/app/modules/foods/models/FarmerRegister.php +++ b/app/modules/foods/models/FarmerRegister.php @@ -9,37 +9,43 @@ * @property string $cpf * @property string $phone * @property string $group_type + * @property string $reference_id + * + * The followings are the available model relations: + * @property FarmerFoods[] $farmerFoods */ class FarmerRegister extends CActiveRecord { - /** - * @return string the associated database table name - */ - public function tableName() - { - return 'farmer_register'; - } + /** + * @return string the associated database table name + */ + public function tableName() + { + return 'farmer_register'; + } - /** - * @return array validation rules for model attributes. - */ - public function rules() - { - // NOTE: you should only define rules for those attributes that - // will receive user inputs. - return array( - array('name, cpf', 'required'), - array('name', 'length', 'max'=>100), - array('cpf, phone', 'length', 'max'=>11), - array('group_type', 'length', 'max'=>21), - array('id, name, cpf, phone, group_type', 'safe', 'on'=>'search'), - ); - } + /** + * @return array validation rules for model attributes. + */ + public function rules() + { + // NOTE: you should only define rules for those attributes that + // will receive user inputs. + return array( + array('name, cpf', 'required'), + array('name', 'length', 'max'=>100), + array('cpf, phone', 'length', 'max'=>11), + array('group_type', 'length', 'max'=>21), + array('reference_id', 'length', 'max'=>36), + // The following rule is used by search(). + array('id, name, cpf, phone, group_type, reference_id', 'safe', 'on'=>'search'), + ); + } - /** - * @return array relational rules. - */ - public function relations() + /** + * @return array relational rules. + */ + public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. @@ -58,44 +64,47 @@ public function attributeLabels() 'cpf' => 'CPF', 'phone' => 'Telefone', 'group_type' => 'Tipo do grupo', + 'reference_id' => 'Reference Id', ); } - /** - * Retrieves a list of models based on the current search/filter conditions. - * - * Typical usecase: - * - Initialize the model fields with values from filter form. - * - Execute this method to get CActiveDataProvider instance which will filter - * models according to data in model fields. - * - Pass data provider to CGridView, CListView or any similar widget. - * - * @return CActiveDataProvider the data provider that can return the models - * based on the search/filter conditions. - */ - public function search() - { + /** + * Retrieves a list of models based on the current search/filter conditions. + * + * Typical usecase: + * - Initialize the model fields with values from filter form. + * - Execute this method to get CActiveDataProvider instance which will filter + * models according to data in model fields. + * - Pass data provider to CGridView, CListView or any similar widget. + * + * @return CActiveDataProvider the data provider that can return the models + * based on the search/filter conditions. + */ + public function search() + { + $criteria=new CDbCriteria; - $criteria->compare('id',$this->id); - $criteria->compare('name',$this->name,true); - $criteria->compare('cpf',$this->cpf,true); - $criteria->compare('phone',$this->phone,true); - $criteria->compare('group_type',$this->group_type,true); + $criteria->compare('id',$this->id); + $criteria->compare('name',$this->name,true); + $criteria->compare('cpf',$this->cpf,true); + $criteria->compare('phone',$this->phone,true); + $criteria->compare('group_type',$this->group_type,true); + $criteria->compare('reference_id',$this->reference_id,true); - return new CActiveDataProvider($this, array( - 'criteria'=>$criteria, - )); - } + return new CActiveDataProvider($this, array( + 'criteria'=>$criteria, + )); + } - /** - * Returns the static model of the specified AR class. - * Please note that you should have this exact method in all your CActiveRecord descendants! - * @param string $className active record class name. - * @return FarmerRegister the static model class - */ - public static function model($className=__CLASS__) - { - return parent::model($className); - } + /** + * Returns the static model of the specified AR class. + * Please note that you should have this exact method in all your CActiveRecord descendants! + * @param string $className active record class name. + * @return FarmerRegister the static model class + */ + public static function model($className=__CLASS__) + { + return parent::model($className); + } } diff --git a/app/modules/foods/resources/farmer/_initialization.js b/app/modules/foods/resources/farmer/_initialization.js index 75ffb54e3..7b88c45cc 100644 --- a/app/modules/foods/resources/farmer/_initialization.js +++ b/app/modules/foods/resources/farmer/_initialization.js @@ -20,6 +20,9 @@ $(document).ready(function() { foodsRelation = farmerFoods renderFoodsTable(foodsRelation); }); + $('#farmerName').removeAttr('disabled'); + $('#farmerPhone').removeAttr('disabled'); + $('#farmerGroupType').removeAttr('disabled'); } $.ajax({ @@ -41,6 +44,48 @@ $(document).ready(function() { }) }); +$(document).on("focusout", "#farmerCpf", function () { + const $params = new URLSearchParams(window.location.search); + let id = $params.get('id'); + let farmerCpf = $(this).val().replace(/\D/g, ''); + + if(id == null && farmerCpf != '') { + if(farmerCpf.length < 11) { + $('#info-alert').removeClass('hide').html("Informe o CPF completo"); + } else { + $.ajax({ + type: 'POST', + url: "?r=foods/farmerregister/getFarmerRegister", + cache: false, + data: { + farmerCpf: farmerCpf, + } + }).success(function(response) { + let data = DOMPurify.sanitize(response); + let farmerRegister = JSON.parse(data); + if("error" in farmerRegister) { + $('#info-alert').removeClass('hide').addClass('alert-error').html(farmerRegister.error); + } else { + $('#farmerName').removeAttr('disabled'); + $('#farmerPhone').removeAttr('disabled'); + $('#farmerGroupType').removeAttr('disabled'); + + if(Object.keys(farmerRegister).length != 0) { + $('#info-alert').addClass('hide') + let groupTypeSelect = $('#farmerGroupType'); + $("#farmerName").val(farmerRegister['name']); + $("#farmerPhone").val(farmerRegister['phone']); + groupTypeSelect.val(farmerRegister['groupType']); + groupTypeSelect.trigger("change"); + } else { + $('#info-alert').removeClass('hide').html("O cpf informado não possui cadastro, informe os dados básicos"); + } + } + }); + } + } +}); + $(document).on("change", "#foodSelect", function () { let measurementUnit = this.value.split(',')[1]; let measurementUnitSelect = $('#measurementUnit'); @@ -113,7 +158,7 @@ $(document).on("click", "#save-farmer", function () { foodsRelation: foodsRelation } }).success(function(response) { - window.location.href = "?r=foods/farmerregister/update&id=" + id; + window.location.href = "?r=foods/farmerregister/index"; }); } else { $.ajax({ @@ -128,7 +173,14 @@ $(document).on("click", "#save-farmer", function () { foodsRelation: foodsRelation } }).success(function(response) { - window.location.href = "?r=foods/farmerregister/index"; + if (response !== "") { + let data = DOMPurify.sanitize(response); + let result = JSON.parse(data); + + $('#info-alert').removeClass('hide').addClass('alert-error').html(result.error); + } else { + window.location.href = "?r=foods/farmerregister/index"; + } }) } }) diff --git a/app/modules/foods/services/FireBaseService.php b/app/modules/foods/services/FireBaseService.php index 9e58435e4..4d03b233e 100644 --- a/app/modules/foods/services/FireBaseService.php +++ b/app/modules/foods/services/FireBaseService.php @@ -40,7 +40,6 @@ public function createNotice() public function createFarmerRegister($name, $cpf, $phone, $groupType, $foodsRelation) { $collection = 'farmer_register'; - $collectionFoods = 'farmer_foods'; $uuid = Uuid::uuid4(); $document = new FirestoreDocument; @@ -52,18 +51,115 @@ public function createFarmerRegister($name, $cpf, $phone, $groupType, $foodsRela 'id'=> $uuid->toString(), ]); - $this->firestoreClient->addDocument($collection, $document); + $this->firestoreClient->addDocument($collection, $document, $uuid->toString()); + + $this->createFarmerFoods($foodsRelation, $uuid->toString()); + + return $uuid->toString(); + } + + public function updateFarmerRegister($farmerId, $name, $cpf, $phone, $groupType, $foodsRelation) { + $collection = 'farmer_register'; + $documentPath = $collection . '/' . $farmerId; + + $this->firestoreClient->updateDocument($documentPath, [ + 'cpf' => $cpf, + 'name' => $name, + 'phone' => $phone, + 'groupType'=> $groupType, + ]); + + $this->deleteFarmerFoods($farmerId); + $this->createFarmerFoods($foodsRelation, $farmerId); + } + + public function deleteFarmerRegister($farmerId) { + $collection = 'farmer_register'; + $documentPath = $collection . '/' . $farmerId; - foreach ($foodsRelation as $foodData) { + $farmerRegister = $this->firestoreClient->getDocument($documentPath); + + try { + $userField = $farmerRegister->get('user'); + } catch (\MrShan0\PHPFirestore\Exceptions\Client\FieldNotFound $e) { + $userField = ""; + } + + if($userField == "") { + $this->firestoreClient->deleteDocument($documentPath); + $this->deleteFarmerFoods($farmerId); + } + } + + public function hasUserField($documentPath) { + $farmerRegister = $this->firestoreClient->getDocument($documentPath); + + try { + $userField = $farmerRegister->get('user'); + } catch (\MrShan0\PHPFirestore\Exceptions\Client\FieldNotFound $e) { + $userField = ""; + } + + if($userField == "") { + return false; + } + return true; + } + + public function getFarmerRegister($cpf) { + $farmerRegisters = $this->firestoreClient->listDocuments('farmer_register'); + $foundFarmer = []; + + foreach ($farmerRegisters['documents'] as $farmerRegister) { + if ($farmerRegister->get('cpf') == $cpf) { + try { + $userField = $farmerRegister->get('user'); + } catch (\MrShan0\PHPFirestore\Exceptions\Client\FieldNotFound $e) { + $userField = ""; + } + $foundFarmer = array( + "id" => $farmerRegister->get("id"), + "name" => $farmerRegister->get('name'), + "groupType" => $farmerRegister->get('groupType'), + "cpf" => $farmerRegister->get('cpf'), + "phone" => $farmerRegister->get('phone'), + "user" => $userField + ); + + } + } + + return $foundFarmer; + } + + public function createFarmerFoods($foods, $farmerId) { + $collectionFoods = 'farmer_foods'; + + foreach ($foods as $foodData) { + $uuid = Uuid::uuid4(); $document = new FirestoreDocument; $document->fillValues([ 'name' => $foodData['foodDescription'], 'amount' => $foodData['amount'], 'measurementUnit' => $foodData['measurementUnit'], - 'id'=> $uuid->toString(), + 'farmer_id'=> $farmerId, + 'id' => $uuid->toString(), ]); - $this->firestoreClient->addDocument($collectionFoods, $document); + $this->firestoreClient->addDocument($collectionFoods, $document, $uuid->toString()); + } + } + + public function deleteFarmerFoods($farmerId) { + $collectionFoods = 'farmer_foods'; + + $farmerFoods = $this->firestoreClient->listDocuments('farmer_foods'); + + foreach ($farmerFoods['documents'] as $farmerFood) { + if ($farmerFood->get('farmer_id') == $farmerId) { + $documentPath = $collectionFoods . '/' . $farmerFood->get('id'); + $this->firestoreClient->deleteDocument($documentPath); + } } } diff --git a/app/modules/foods/usecases/DeleteFarmerRegister.php b/app/modules/foods/usecases/DeleteFarmerRegister.php new file mode 100644 index 000000000..e79735239 --- /dev/null +++ b/app/modules/foods/usecases/DeleteFarmerRegister.php @@ -0,0 +1,23 @@ +firebaseservice = $firebaseservice ?? new FireBaseService(); + } + /** + * @return MrShan0\PHPFirestore\FirestoreDocument[] + */ + public function exec($farmerId){ + return $this->firebaseservice->deleteFarmerRegister($farmerId); + } + } diff --git a/app/modules/foods/usecases/GetFarmerRegister.php b/app/modules/foods/usecases/GetFarmerRegister.php index 1b2f003f0..39d9048a0 100644 --- a/app/modules/foods/usecases/GetFarmerRegister.php +++ b/app/modules/foods/usecases/GetFarmerRegister.php @@ -14,7 +14,10 @@ class GetFarmerRegister public function __construct($firebaseservice = null){ $this->firebaseservice = $firebaseservice ?? new FireBaseService(); } - public function exec(){ - return $this->firebaseservice->getFarmerRegister(); + /** + * @return MrShan0\PHPFirestore\FirestoreDocument[] + */ + public function exec($cpf){ + return $this->firebaseservice->getFarmerRegister($cpf); } } diff --git a/app/modules/foods/usecases/UpdateFarmerRegister.php b/app/modules/foods/usecases/UpdateFarmerRegister.php new file mode 100644 index 000000000..12c0ab14b --- /dev/null +++ b/app/modules/foods/usecases/UpdateFarmerRegister.php @@ -0,0 +1,23 @@ +firebaseservice = $firebaseservice ?? new FireBaseService(); + } + /** + * @return MrShan0\PHPFirestore\FirestoreDocument[] + */ + public function exec($farmerId, $name, $cpf, $phone, $groupType, $foodsRelation){ + return $this->firebaseservice->updateFarmerRegister($farmerId ,$name, $cpf, $phone, $groupType, $foodsRelation); + } + } diff --git a/app/modules/foods/views/farmerregister/_form.php b/app/modules/foods/views/farmerregister/_form.php index 1668e0f1f..c301af5cf 100644 --- a/app/modules/foods/views/farmerregister/_form.php +++ b/app/modules/foods/views/farmerregister/_form.php @@ -55,7 +55,7 @@

Dados Básicos

-

Informe o CPF, caso o agricultor já possua cadastro os dados básicos serão preenchidos automaticamente

+

Informe o CPF, caso o agricultor já possua cadastro na plataforma NHAM, os dados básicos serão preenchidos automaticamente.

@@ -68,7 +68,7 @@
label($model,'name', array('class' => 't-field-text__label--required')); ?> - textField($model,'name', array('id' => 'farmerName','size'=>60,'maxlength'=>100, 'class' => 't-field-text__input')); ?> + textField($model,'name', array('id' => 'farmerName', 'disabled' => 'disabled','size'=>60,'maxlength'=>100, 'class' => 't-field-text__input')); ?> error($model,'name'); ?>
@@ -78,7 +78,7 @@
label($model,'phone', array('class' => 't-field-text__label--required')); ?> - textField($model,'phone', array('id' => 'farmerPhone','size'=>60,'maxlength'=>100, 'class' => 't-field-text__input')); ?> + textField($model,'phone', array('id' => 'farmerPhone', 'disabled' => 'disabled','size'=>60,'maxlength'=>100, 'class' => 't-field-text__input')); ?> error($model,'phone'); ?>
@@ -91,7 +91,7 @@ "Fornecedor Individual" => "Fornecedor Individual", "Grupo Formal" => "Grupo Formal", "Grupo Informal" => "Grupo Informal", - ), array('id'=>'farmerGroupType','class' => 'select-search-off t-field-select__input select2-container')); + ), array('id'=>'farmerGroupType', 'disabled' => 'disabled','class' => 'select-search-off t-field-select__input select2-container')); ?>
diff --git a/config.php b/config.php index b879d2bf2..412fbf4c7 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,7 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.76.130'); +define("TAG_VERSION", '3.77.130'); define("YII_VERSION", Yii::getVersion()); define("BOARD_MSG", '
Novas atualizações no TAG. Confira clicando aqui.
'); From 3981b10cfb7157fd8a97e3da0abd71485fc9e687 Mon Sep 17 00:00:00 2001 From: Paulo Date: Thu, 4 Apr 2024 17:28:37 -0300 Subject: [PATCH 08/15] corrigido bug produzido em 15/03/2024 --- app/controllers/ClassesController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/ClassesController.php b/app/controllers/ClassesController.php index db47a2ca5..4e80cd491 100755 --- a/app/controllers/ClassesController.php +++ b/app/controllers/ClassesController.php @@ -114,7 +114,7 @@ public function actionGetClassContents() $students = $this->getStudentsByClassroom($classroomId); if (!$isMinorEducation) { - $schedules = $this->getSchedulesFromMajorStage($classroomId, $month, $disciplineId, $year); + $schedules = $this->getSchedulesFromMajorStage($classroomId, $month, $year, $disciplineId); } else { $schedules = $this->getSchedulesFromMinorStage($classroomId, $month, $year); From bb54aea8d1e19f6e8dbae6c14e7b0a569e6bfc8b Mon Sep 17 00:00:00 2001 From: GabrielChagas14 <84946326+GabrielChagas14@users.noreply.github.com> Date: Fri, 12 Apr 2024 14:25:23 -0300 Subject: [PATCH 09/15] =?UTF-8?q?Fix/add=20lunch=20unities=20[Vers=C3=A3o?= =?UTF-8?q?=203.77.132]=20(#677)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add lunch unities * mudado versão do sistema --- CHANGELOG.md | 3 +++ .../2024-06-04_add_lunch_unities/sql.sql | 14 ++++++++++++++ config.php | 2 +- themes/default/views/lunch/stock/index.php | 8 ++++---- 4 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 app/migrations/2024-06-04_add_lunch_unities/sql.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index cf84b4a86..7ba7d9182 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [Versão 3.77.132] +- Adicionado unidades de medida para o lançamento no estoque + ## [Versão 3.77.130] - Criando as telas relacionadas a agricultor no novo módulo de merenda escolar diff --git a/app/migrations/2024-06-04_add_lunch_unities/sql.sql b/app/migrations/2024-06-04_add_lunch_unities/sql.sql new file mode 100644 index 000000000..6103b1354 --- /dev/null +++ b/app/migrations/2024-06-04_add_lunch_unities/sql.sql @@ -0,0 +1,14 @@ +insert into lunch_unity (name, acronym) values +("Grama", "G"), +("Mililitro", "ML"), +("Unidade", "U"), +("Duzia", "DZ"), +("Pacote", "PCT"); + +UPDATE lunch_unity +SET acronym = 'L' +WHERE acronym = 'ML' AND name = 'litro'; + +UPDATE lunch_unity +SET acronym = 'ML' +WHERE acronym = 'mL' AND name = 'Mililitro'; diff --git a/config.php b/config.php index 412fbf4c7..b52e96ffa 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,7 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.77.130'); +define("TAG_VERSION", '3.77.132'); define("YII_VERSION", Yii::getVersion()); define("BOARD_MSG", '
Novas atualizações no TAG. Confira clicando aqui.
'); diff --git a/themes/default/views/lunch/stock/index.php b/themes/default/views/lunch/stock/index.php index 78bd86245..42977cc9a 100755 --- a/themes/default/views/lunch/stock/index.php +++ b/themes/default/views/lunch/stock/index.php @@ -173,7 +173,7 @@
-
+
'control-label')); ?>
' span10', 'style' => 'height:44px;width:100%;']); ?> @@ -191,14 +191,14 @@ '0', 'step' => '1', 'class' => 'span10', 'style' => 'height:44px;width:100%;']); ?>
-
+
'control-label', 'style' => 'width:auto')); ?>
findAll(), 'id', 'acronym'), - ['class' => ' span8', 'style' => 'width:100%'] + CHtml::listData(Unity::model()->findAll(), 'id', 'name'), + ['class' => ' span10', 'style' => 'width:100%'] ); ?>
From 8000ebf2f12ebc8a1602c155723a3418ab9adf57 Mon Sep 17 00:00:00 2001 From: Nathan Santos <117388330+nathanipti@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:50:38 -0300 Subject: [PATCH 10/15] Feat/school management signature (#675) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Feat: added school management signature * Feat: added new version for changelog and config --------- Co-authored-by: Igor Gonçalves --- CHANGELOG.md | 7 +++++-- themes/default/views/forms/EnrollmentDeclarationReport.php | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ba7d9182..7fcaedd1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ -## [Versão 3.77.132] + +## [Versão 3.78.132] +- Adicionado campo para a assinatura do diretor + +## [Versão 3.77.131] - Adicionado unidades de medida para o lançamento no estoque ## [Versão 3.77.130] @@ -10,7 +14,6 @@ ## [Versão 3.76.129] - Correção na descrição da séries para as inconsistências sagres - ## [Versão 3.76.128] - Corrigido erro que não mostrava o nome da escola e das turmas nas inconsistências sagres - Corrigido na busca por profissional na mesma escola diff --git a/themes/default/views/forms/EnrollmentDeclarationReport.php b/themes/default/views/forms/EnrollmentDeclarationReport.php index fe54b0ff2..152315df5 100755 --- a/themes/default/views/forms/EnrollmentDeclarationReport.php +++ b/themes/default/views/forms/EnrollmentDeclarationReport.php @@ -377,13 +377,18 @@
- OBS: + OBS:




edcensoCityFk->name?>(edcensoUfFk->acronym?>),



+

+ _______________________________________________________
+ ASSINATURA DO DIRETOR(A)/SECRETÁRIO(A) +

+
act_of_acknowledgement))){?> @@ -204,7 +227,9 @@ - error($modelStudentDocumentsAndAddress, 'cpf'); ?> + hasErrors(['cpf'])): ?> +
getError(['cpf'])); ?>
+
From 12ae906fbc3809094562694870831b0fda12afc0 Mon Sep 17 00:00:00 2001 From: GabrielChagas14 <84946326+GabrielChagas14@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:53:56 -0300 Subject: [PATCH 12/15] =?UTF-8?q?Fix/instructor=20frequency=20[Vers=C3=A3o?= =?UTF-8?q?=203.77.131]=20(#676)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * alterado _initialization_instructor * fix instructor frequency * fix instructor frequency * mudado versão do sistema * refatorado _initialization_instructor.js --------- Co-authored-by: gabriel-IPTI Co-authored-by: Igor Gonçalves --- CHANGELOG.md | 3 + app/controllers/ClassesController.php | 70 +++- config.php | 3 +- js/classes/frequency/_initialization.js | 1 + .../frequency/_initialization_instructor.js | 316 ++++++++---------- sass/css/main.css | 2 +- sass/scss/_accordeon.scss | 3 +- sass/scss/_helpers.scss | 2 +- 8 files changed, 206 insertions(+), 194 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19e9003f0..3e06f3175 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [Versão 3.77.134] +- Consertado tela de frequencia para os professores +- ## [Versão 3.77.133] - Realizado correções nas validações das datas para Professor, Estudante e Escola diff --git a/app/controllers/ClassesController.php b/app/controllers/ClassesController.php index 4e80cd491..a2a887696 100755 --- a/app/controllers/ClassesController.php +++ b/app/controllers/ClassesController.php @@ -40,13 +40,15 @@ public function accessRules() 'index', 'frequency', 'saveFrequency', + 'SaveFrequencies', 'classContents', 'getClassContents', 'saveClassContents', 'getmonthsanddisciplines', 'getdisciplines', 'getfrequency', - 'saveJustification' + 'saveJustification', + 'saveJustifications' ), 'users' => array('@'), ), @@ -82,7 +84,6 @@ public function actionClassContents() ); $classrooms = Classroom::model()->findAll($criteria); - } else { $classrooms = Classroom::model()->findAll( 'school_year = :school_year and school_inep_fk = :school_inep_fk order by name', @@ -115,7 +116,6 @@ public function actionGetClassContents() if (!$isMinorEducation) { $schedules = $this->getSchedulesFromMajorStage($classroomId, $month, $year, $disciplineId); - } else { $schedules = $this->getSchedulesFromMinorStage($classroomId, $month, $year); } @@ -183,7 +183,7 @@ public function actionGetClassContents() "courseClasses" => $courseClasses, ]); } else { - echo json_encode(["valid" => false, "error" => "Mês/Ano " . ($_POST["fundamentalMaior"] == "1" ? "e Disciplina": "") . " sem aula no Quadro de Horário."]); + echo json_encode(["valid" => false, "error" => "Mês/Ano " . ($_POST["fundamentalMaior"] == "1" ? "e Disciplina" : "") . " sem aula no Quadro de Horário."]); } } @@ -244,7 +244,6 @@ private function getStudentsByClassroom($classroomId) ) ->bindParam(":classroom_fk", $classroomId) ->queryAll(); - } /** @@ -274,7 +273,6 @@ private function buildClassContents($schedules, $students) } return $classContents; - } private function updateStudentAnottations($schedule, $students) @@ -340,7 +338,6 @@ private function loadSchedulesByStage($isMajorStage, $classroom, $month, $year, "year" => $year, ] ); - } /** @@ -364,7 +361,6 @@ private function saveSchedule($schedule, $classContent) foreach ($classContent["contents"] as $content) { $this->saveClassContents($content, $schedule); } - } private function saveClassContents($content, $schedule) @@ -464,6 +460,7 @@ public function actionGetFrequency() $criteria->order = 'name'; $enrollments = StudentEnrollment::model()->findAllByAttributes(array('classroom_fk' => $_POST["classroom"]), $criteria); if ($schedules != null) { + $scheduleDays = $this->getScheduleDays($schedules); if ($enrollments != null) { $students = []; $dayName = ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]; @@ -474,23 +471,56 @@ public function actionGetFrequency() foreach ($schedules as $schedule) { $classFault = ClassFaults::model()->find("schedule_fk = :schedule_fk and student_fk = :student_fk", ["schedule_fk" => $schedule->id, "student_fk" => $enrollment->student_fk]); $available = date("Y-m-d") >= $schedule->year . "-" . str_pad($schedule->month, 2, "0", STR_PAD_LEFT) . "-" . str_pad($schedule->day, 2, "0", STR_PAD_LEFT); + $date = $this->gerateDate($schedule->day, $schedule->month, $schedule->year); array_push($array["schedules"], [ "available" => $available, "day" => $schedule->day, "week_day" => $dayName[$schedule->week_day], "schedule" => $schedule->schedule, "fault" => $classFault != null, - "justification" => $classFault->justification + "justification" => $classFault->justification, + "date" => $date ]); } array_push($students, $array); } - echo json_encode(["valid" => true, "students" => $students]); + echo json_encode(["valid" => true, "students" => $students, "scheduleDays" => $scheduleDays]); } else { echo json_encode(["valid" => false, "error" => "Matricule alunos nesta turma para trazer o Quadro de Frequência."]); } } else { - echo json_encode(["valid" => false, "error" => "Mês/Ano " . ($_POST["fundamentalMaior"] == "1" ? "e Disciplina": "") . " sem aula no Quadro de Horário."]); + echo json_encode(["valid" => false, "error" => "Mês/Ano " . ($_POST["fundamentalMaior"] == "1" ? "e Disciplina" : "") . " sem aula no Quadro de Horário."]); + } + } + private function gerateDate($day, $month, $year) + { + $day = ($day < 10) ? '0' . $day : $day; + $month = ($month < 10) ? '0' . $month : $month; + return $day . "/" . $month . "/" . $year; + } + private function getScheduleDays($schedules) + { + $result = []; + foreach ($schedules as $schedule) { + $day = ($schedule->day < 10) ? '0' . $schedule->day : $schedule->day; + $month = ($schedule->month < 10) ? '0' . $schedule->month : $schedule->month; + $date = $day . "/" . $month . "/" . $schedule->year; + $index = array_search($date, array_column($result, 'date')); + if ($index === false) { + array_push($result, [ + "day" => $schedule->day, + "date" => $date + ]); + } + } + return $result; + } + + public function actionSaveFrequencies() + { + $schedules = Schedule::model()->findAll("classroom_fk = :classroom_fk and day = :day and year = :year and month = :month", ["classroom_fk" => $_POST["classroomId"], "day" => $_POST["day"], "month" => $_POST["month"], "year" => $_POST["year"]]); + foreach ($schedules as $schedule) { + $this->saveFrequency($schedule); } } @@ -522,7 +552,6 @@ private function saveFrequency($schedule) } else { ClassFaults::model()->deleteAll("schedule_fk = :schedule_fk and student_fk = :student_fk", ["schedule_fk" => $schedule->id, "student_fk" => $_POST["studentId"]]); } - } else { if ($_POST["fault"] == "1") { $enrollments = StudentEnrollment::model()->findAll("classroom_fk = :classroom_fk", ["classroom_fk" => $_POST["classroomId"]]); @@ -542,6 +571,15 @@ private function saveFrequency($schedule) } } + public function actionSaveJustifications() + { + $schedules = Schedule::model()->findAll("classroom_fk = :classroom_fk and day = :day and month = :month and year = :year ", ["classroom_fk" => $_POST["classroomId"], "day" => $_POST["day"], "month" => $_POST["month"], "year" => $_POST["year"]]); + foreach ($schedules as $schedule) { + $classFault = ClassFaults::model()->find("schedule_fk = :schedule_fk and student_fk = :student_fk", ["schedule_fk" => $schedule->id, "student_fk" => $_POST["studentId"]]); + $classFault->justification = $_POST["justification"] == "" ? null : $_POST["justification"]; + $classFault->save(); + } + } public function actionSaveJustification() { @@ -550,15 +588,12 @@ public function actionSaveJustification() $classFault = ClassFaults::model()->find("schedule_fk = :schedule_fk and student_fk = :student_fk", ["schedule_fk" => $schedule->id, "student_fk" => $_POST["studentId"]]); $classFault->justification = $_POST["justification"] == "" ? null : $_POST["justification"]; $classFault->save(); - - } else { $schedules = Schedule::model()->findAll("classroom_fk = :classroom_fk and day = :day and month = :month and year = :year ", ["classroom_fk" => $_POST["classroomId"], "day" => $_POST["day"], "month" => $_POST["month"], "year" => $_POST["year"]]); foreach ($schedules as $schedule) { $classFault = ClassFaults::model()->find("schedule_fk = :schedule_fk and student_fk = :student_fk", ["schedule_fk" => $schedule->id, "student_fk" => $_POST["studentId"]]); $classFault->justification = $_POST["justification"] == "" ? null : $_POST["justification"]; $classFault->save(); - } } } @@ -594,7 +629,8 @@ public function actionGetMonthsAndDisciplines() join instructor_identification ii on ii.id = itd.instructor_fk join curricular_matrix cm on cm.id = tm.curricular_matrix_fk join edcenso_discipline ed on ed.id = cm.discipline_fk - where ii.users_fk = :userid and itd.classroom_id_fk = :crid order by ed.name")->bindParam(":userid", Yii::app()->user->loginInfos->id)->bindParam(":crid", $classroom->id)->queryAll(); + where ii.users_fk = :userid and itd.classroom_id_fk = :crid order by ed.name" + )->bindParam(":userid", Yii::app()->user->loginInfos->id)->bindParam(":crid", $classroom->id)->queryAll(); } else { $disciplines = Yii::app()->db->createCommand("select ed.id, ed.name from curricular_matrix join edcenso_discipline ed on ed.id = curricular_matrix.discipline_fk where stage_fk = :stage_fk and school_year = :year order by ed.name")->bindParam(":stage_fk", $classroom->edcenso_stage_vs_modality_fk)->bindParam(":year", Yii::app()->user->year)->queryAll(); } @@ -608,8 +644,6 @@ public function actionGetMonthsAndDisciplines() $result = ["valid" => false, "error" => "A Turma está sem Calendário Escolar vinculado."]; } echo json_encode($result); - - } /** diff --git a/config.php b/config.php index 0c70a01df..e113f2bb1 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,8 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.77.133'); +define("TAG_VERSION", '3.77.134'); + define("YII_VERSION", Yii::getVersion()); define("BOARD_MSG", '
Novas atualizações no TAG. Confira clicando aqui.
'); diff --git a/js/classes/frequency/_initialization.js b/js/classes/frequency/_initialization.js index 3abdb626f..20497c077 100644 --- a/js/classes/frequency/_initialization.js +++ b/js/classes/frequency/_initialization.js @@ -232,6 +232,7 @@ $(document).on("click", ".btn-save-justification", function () { }, success: function (data) { var justification = $(".table-frequency tbody .frequency-checkbox[studentid=" + $("#justification-studentid").val() + "][day=" + $("#justification-day").val() + "][month=" + $("#justification-month").val() + "][year=" + $("#justification-year").val() + "]").parent().find(".frequency-justification-icon"); + console.log(justification) if ($(".justification-text").val() == "") { justification.html(""); justification.attr("data-original-title", "").tooltip('hide'); diff --git a/js/classes/frequency/_initialization_instructor.js b/js/classes/frequency/_initialization_instructor.js index f8a2db916..cfd50f552 100644 --- a/js/classes/frequency/_initialization_instructor.js +++ b/js/classes/frequency/_initialization_instructor.js @@ -1,8 +1,75 @@ +function generateCheckboxItems(student, dia, mes, ano, fundamentalMaior, monthSplit, date) { + const index = student.schedules.findIndex(schedule => schedule.date === date); + const schedule = student.schedules[index]; + + let checkboxItem = ''; + if (dia == schedule.day && mes == monthSplit[1] && ano == monthSplit[0]) { + let justificationContainer = ""; + if (schedule.fault) { + if (schedule.justification !== null) { + justificationContainer += + "data-toggle='tooltip' data-placement='left' title='" + schedule.justification + "'"; + } + } + checkboxItem = ` + + + + + + + + `; + } + return checkboxItem; +} +function generateStudentLines(data, dia, mes, ano, fundamentalMaior, monthSplit, date) { + return data.students.reduce((line, student) => { + return line + ` +
+
${student.studentName}
+
+ ${generateCheckboxItems(student, dia, mes, ano, fundamentalMaior, monthSplit, date)} +
+
`; + }, ''); +} +function generateScheduleDays(data, monthSplit, fundamentalMaior) { + return data.scheduleDays.reduce((acc, scheduleDays) => { + let dia = scheduleDays.day; + let mes = monthSplit[1]; + let ano = monthSplit[0]; + return acc + ` +
+
Aula do dia ${scheduleDays.date}
+
+ +
+
+
+
+ ${generateStudentLines(data, dia, mes, ano, fundamentalMaior, monthSplit, scheduleDays.date)} +
+
`; + }, ''); +} + function load() { if ($("#classroom").val() !== "Selecione a turma" && $("#month").val() !== "" && (!$("#disciplines").is(":visible") || $("#disciplines").val() !== "")) { $(".alert-required-fields, .alert-incomplete-data").hide(); - var monthSplit = $("#month").val().split("-"); - var fundamentalMaior = Number( + let monthSplit = $("#month").val().split("-"); + let fundamentalMaior = Number( $("#classroom option:selected").attr("fundamentalmaior") ); jQuery.ajax({ @@ -27,109 +94,21 @@ function load() { }, success: function (response) { - var data = JSON.parse(response); + let data = JSON.parse(response); + console.log(response) if (data.valid) { - var accordion = ""; - accordion += - '
'; - var item = 0; - $.each(data.students[0].schedules, function () { - var dia = this.day; - var mes = monthSplit[1]; - var ano = monthSplit[0]; - fault = this.fault; - item++; - accordion += - ` -
- - - - - - - -
-
- Nome -
-
- ${this.day}/${pad(mes, 2, 0)}/${ano} -
-
-
- - `; - $.each(data.students, function (indexStudent, student) { - var hasFaults = student.schedules.filter((schedule) => dia == schedule.day && mes == monthSplit[1] && ano == monthSplit[0] && schedule.fault == true).length > 0; - - accordion += ` - `; - $.each(student.schedules, function (indexSchedule, schedule) { - if (dia == schedule.day && mes == monthSplit[1] && ano == monthSplit[0]) { - var justificationContainer = ""; - if (schedule.fault) { - if (schedule.justification !== null) { - justificationContainer += - "data-toggle='tooltip' data-placement='left' title='" + schedule.justification + "'"; - } else { - justificationContainer += - "" - } - } + let accordion = $('
'); - accordion += "" + - "`; - }); - accordion += - ` -
-
- ${student.studentName} - - - -
-
" + - ""; - } - - - }); - accordion += `
-
`; - }); - accordion += `
`; + accordion.append(generateScheduleDays(data, monthSplit, fundamentalMaior)) $("#frequency-container").html(accordion).show(); - $(function () { $("#accordion").accordion({ collapsible: true, icons: null, }); }); - $(".frequency-checkbox-general").each(function () { - var day = $(this).find(".frequency-checkbox").attr("day"); - $(this) - .find(".frequency-checkbox") - .prop("checked", $(".frequency-checkbox-student .frequency-checkbox[day=" + day + "]:checked").length === $(".frequency-checkbox-student .frequency-checkbox[day=" + day + "]").length); - }); - $('[data-toggle="tooltip"]').tooltip({container: "body"}); - } else { - $("#frequency-container").hide(); - $(".alert-incomplete-data").html(data.error).show(); + } }, complete: function () { @@ -220,52 +199,46 @@ $(".js-load-frequency").on("change", function () { }); $(document).on("change", ".frequency-checkbox", function () { - var checkbox = this; - var monthSplit = $("#month").val().split("-"); - $.ajax({ - type: "POST", - url: "?r=classes/saveFrequency", - cache: false, - data: { - classroomId: $(this).attr("classroomId"), - day: $(this).attr("day"), - month: monthSplit[1], - year: monthSplit[0], - schedule: $(this).attr("schedule"), - studentId: $(this).attr("studentId"), - fault: $(this).is(":checked") ? 1 : 0, - fundamentalMaior: $(this).attr("fundamentalMaior"), - }, + let checkbox = this + let monthSplit = $("#month").val().split("-"); + $.ajax({ + type: "POST", + url: "?r=classes/saveFrequencies", + cache: false, + data: { + classroomId: $(this).attr("classroomId"), + day: $(this).attr("day"), + month: monthSplit[1], + year: monthSplit[0], + studentId: $(this).attr("studentId"), + fault: $(this).is(":checked") ? 1 : 0, + fundamentalMaior: $(this).attr("fundamentalMaior"), + }, - beforeSend: function () { - $(".loading-frequency").css("display", "inline-block"); - $(".table-frequency").css("opacity", 0.3).css("pointer-events", "none"); - $(".table-frequency-head").css("opacity", 0.3).css("pointer-events", "none"); - $("#classroom, #month, #disciplines, #classesSearch").attr( - "disabled", - "disabled" - ); - }, - complete: function () { - if ($(checkbox).is(":checked")) { - $('[studentid=' + $(checkbox).attr('studentid') + '][day=' + $(checkbox).attr('day') + '].frequency-justification-icon').removeClass("hide").addClass("show"); - } else { - $('[studentid=' + $(checkbox).attr('studentid') + '][day=' + $(checkbox).attr('day') + '].frequency-justification-icon').removeClass("show").addClass("hide"); - } + beforeSend: function () { + $(".loading-frequency").css("display", "inline-block"); + $(".table-frequency").css("opacity", 0.3).css("pointer-events", "none"); + $(".table-frequency-head").css("opacity", 0.3).css("pointer-events", "none"); + $("#classroom, #month, #disciplines, #classesSearch").attr( + "disabled", + "disabled" + ); + }, + complete: function () { + $(checkbox).parent().parent().find('.frequency-justification-icon').toggleClass('hide') - $(".loading-frequency").hide(); - $(".table-frequency").css("opacity", 1).css("pointer-events", "auto"); - $(".table-frequency-head").css("opacity", 1).css("pointer-events", "auto"); - $("#classroom, #month, #disciplines, #classesSearch").removeAttr( - "disabled" - ); - }, - }); + $(".loading-frequency").hide(); + $(".table-frequency").css("opacity", 1).css("pointer-events", "auto"); + $(".table-frequency-head").css("opacity", 1).css("pointer-events", "auto"); + $("#classroom, #month, #disciplines, #classesSearch").removeAttr( + "disabled" + ); + }, + }) }); $(document).on("click", ".frequency-justification-icon", function () { - var checkbox = $('[studentid=' + $(this).attr('studentid') + '].frequency-checkbox'); - + let checkbox = $(this).parent().find(".frequency-checkbox"); $("#justification-classroomid").val(checkbox.attr("classroomid")); $("#justification-studentid").val(checkbox.attr("studentid")); @@ -274,7 +247,7 @@ $(document).on("click", ".frequency-justification-icon", function () { $("#justification-year").val(checkbox.attr("year")); $("#justification-schedule").val(checkbox.attr("schedule")); $("#justification-fundamentalmaior").val(checkbox.attr("fundamentalmaior")); - $(".justification-text").val($(this).closest("tr").find(".frequency-checkbox").attr("data-original-title")); + $(".justification-text").val($(this).parent().find(".frequency-checkbox").attr("title")); $("#save-justification-modal").modal("show"); }); @@ -283,41 +256,42 @@ $("#save-justification-modal").on("shown", function () { }); $(document).on("click", ".btn-save-justification", function () { - $.ajax({ - type: "POST", - url: "?r=classes/saveJustification", - cache: false, - data: { - classroomId: $("#justification-classroomid").val(), - studentId: $("#justification-studentid").val(), - day: $("#justification-day").val(), - month: $("#justification-month").val(), - year: $("#justification-year").val(), - schedule: $("#justification-schedule").val(), - fundamentalMaior: $("#justification-fundamentalmaior").val(), - justification: $(".justification-text").val(), - }, - beforeSend: function () { - $("#save-justification-modal").find(".modal-body").css("opacity", 0.3).css("pointer-events", "none"); - $("#save-justification-modal").find("button").attr("disabled", "disabled"); - $("#save-justification-modal").find(".centered-loading-gif").show(); - }, - success: function (data) { - var justification = $(".table-frequency tbody .frequency-checkbox[studentid=" + $("#justification-studentid").val() + "][day=" + $("#justification-day").val() + "][month=" + $("#justification-month").val() + "][year=" + $("#justification-year").val() + "]").parent().parent().find(".frequency-justification-icon"); + let justification = $(".frequency-checkbox[studentid=" + $("#justification-studentid").val() + "][schedule=" + $("#justification-schedule").val() + "][day=" + $("#justification-day").val() + "][month=" + $("#justification-month").val() + "][year=" + $("#justification-year").val() + "]").parent().parent().find(".frequency-justification-icon"); - if ($(".justification-text").val() == "") { - justification.attr("data-original-title", "").tooltip("hide"); - } else { - justification.attr("data-original-title", $(".justification-text").val()).tooltip({container: "body"}); - } - $("#save-justification-modal").modal("hide"); - }, - complete: function () { - $("#save-justification-modal").find(".modal-body").css("opacity", 1).css("pointer-events", "auto"); - $("#save-justification-modal").find("button").removeAttr("disabled"); - $("#save-justification-modal").find(".centered-loading-gif").hide(); - }, - }); + $.ajax({ + type: "POST", + url: "?r=classes/SaveJustifications", + cache: false, + data: { + classroomId: $("#justification-classroomid").val(), + studentId: $("#justification-studentid").val(), + day: $("#justification-day").val(), + month: $("#justification-month").val(), + year: $("#justification-year").val(), + fundamentalMaior: $("#justification-fundamentalmaior").val(), + justification: $(".justification-text").val(), + }, + beforeSend: function () { + $("#save-justification-modal").find(".modal-body").css("opacity", 0.3).css("pointer-events", "none"); + $("#save-justification-modal").find("button").attr("disabled", "disabled"); + $("#save-justification-modal").find(".centered-loading-gif").show(); + }, + success: function (data) { + + if ($(".justification-text").val() == "") { + justification.attr("title", "").tooltip("hide"); + } else { + justification.parent().find(".frequency-checkbox").attr("title", $(".justification-text").val()) + justification.attr("title", $(".justification-text").val()).tooltip({container: "body"}); + } + $("#save-justification-modal").modal("hide"); + }, + complete: function () { + $("#save-justification-modal").find(".modal-body").css("opacity", 1).css("pointer-events", "auto"); + $("#save-justification-modal").find("button").removeAttr("disabled"); + $("#save-justification-modal").find(".centered-loading-gif").hide(); + }, + }); }); $(document).on("keyup", ".justification-text", function (e) { diff --git a/sass/css/main.css b/sass/css/main.css index 4157a5b41..8b25a4248 100644 --- a/sass/css/main.css +++ b/sass/css/main.css @@ -1 +1 @@ -@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");*,body,html{font-family:'inter', sans-serif}.main{padding:.75em}@media (min-width: 640px){.main{padding:1.5em}}a{color:inherit}a:hover{text-decoration:none}hr{margin:0;border:none}select[multiple]{height:30px}input[type="number"]{margin:0px}select,select[multiple],textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"]{min-height:30px}.wrap{flex-wrap:wrap}.row{display:flex;flex-direction:column;gap:.75em}.row.reverse{flex-direction:column-reverse}@media (min-width: 640px){.row.reverse{flex-direction:row}}.row.no-gap{gap:0}@media (min-width: 640px){.row{flex-direction:row}}.row.margin-large--bottom{margin-bottom:calc(2em / 2)}.row.margin-large--top{margin-top:.875em}.row.no-gap{gap:0}.mobile-row{display:flex;flex-direction:row}.mobile-row.upper-margin{margin-top:24px}.mobile-row.helper{padding-left:13px}.tablet-row{display:flex;flex-direction:column}.tablet-row.bottom-margin{margin-bottom:24px}@media (min-width: 768px){.tablet-row{flex-direction:row}}.column{flex:1;flex-basis:0;margin-left:calc(2em / 2);margin-right:calc(2em / 2)}.column.flex{display:flex}.column.clearfix{margin-left:0;margin-right:0}.column.clearleft{margin-left:0}.column.clearleft--on-tablet{margin-left:0}@media (min-width: 768px){.column.clearleft--on-tablet{margin-left:calc(2em / 2)}}.column.clearleft--on-mobile{margin-left:0}@media (min-width: 640px){.column.clearleft--on-mobile{margin-left:calc(2em/2)}}.column.no-grow{flex-grow:0}.column.helper{max-width:50%}@media (min-width: 640px){.column.is-half{max-width:50%}}@media (min-width: 640px){.column.is-four-fifths{max-width:80%}}.column.is-four-fifths--mobile{max-width:80%}@media (min-width: 640px){.column.is-three-quarters{max-width:75%}}@media (min-width: 640px){.column.is-two-thirds{max-width:66.6666%}}@media (min-width: 640px){.column.is-three-fifths{max-width:60%}}@media (min-width: 640px){.column.is-two-fifths{max-width:40%}}@media (min-width: 640px){.column.is-one-third{max-width:33.3333%}}@media (min-width: 640px){.column.is-third{max-width:30%}}@media (min-width: 640px){.column.is-one-quarter{max-width:25%}}@media (min-width: 640px){.column.is-one-fifth{max-width:20%}}@media (min-width: 640px){.column.is-one-tenth{max-width:10%}}.column.is-one-tenth--mobile{max-width:10%}.t-buttons-container{display:inline-block;width:100%}.t-buttons-container.auto-width{width:auto}@media (min-width: 768px){.t-buttons-container{padding:.25em 0 .25em 0;font-size:14px;display:flex}}.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{display:flex;flex:1;padding:.875em;margin:.5em 0;font-size:12px;border-radius:6px;text-decoration:none;align-self:center;justify-content:center;cursor:pointer}.t-button span,.t-button-primary span,.t-button-submit span,.t-button-secondary span,.t-button-tertiary span,.t-button-quaternary span,.t-button-danger span,.t-button-icon span{margin:0em .25em 0em 0em;font-size:14px}.t-button.mobile-margin,.mobile-margin.t-button-primary,.mobile-margin.t-button-submit,.mobile-margin.t-button-secondary,.mobile-margin.t-button-tertiary,.mobile-margin.t-button-quaternary,.mobile-margin.t-button-danger,.mobile-margin.t-button-icon{margin-right:1em}.t-button.mobile-margin-top,.mobile-margin-top.t-button-primary,.mobile-margin-top.t-button-submit,.mobile-margin-top.t-button-secondary,.mobile-margin-top.t-button-tertiary,.mobile-margin-top.t-button-quaternary,.mobile-margin-top.t-button-danger,.mobile-margin-top.t-button-icon{margin-top:1em !important}.t-button.nofloat,.nofloat.t-button-primary,.nofloat.t-button-submit,.nofloat.t-button-secondary,.nofloat.t-button-tertiary,.nofloat.t-button-quaternary,.nofloat.t-button-danger,.nofloat.t-button-icon{float:unset !important}.t-button:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button-secondary:hover,.t-button-tertiary:hover,.t-button-quaternary:hover,.t-button-danger:hover,.t-button-icon:hover,.t-button--active{text-decoration:none}@media (min-width: 640px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media (min-width: 768px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media (min-width: 1536px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{margin-right:1em;padding:.375em 1em .375em 1em}}.t-button:link,.t-button-primary:link,.t-button-submit:link,.t-button-secondary:link,.t-button-tertiary:link,.t-button-quaternary:link,.t-button-danger:link,.t-button-icon:link,.t-button:focus,.t-button-primary:focus,.t-button-submit:focus,.t-button-secondary:focus,.t-button-tertiary:focus,.t-button-quaternary:focus,.t-button-danger:focus,.t-button-icon:focus,.t-button:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button-secondary:hover,.t-button-tertiary:hover,.t-button-quaternary:hover,.t-button-danger:hover,.t-button-icon:hover,.t-button--active,.t-button:active,.t-button-primary:active,.t-button-submit:active,.t-button-secondary:active,.t-button-tertiary:active,.t-button-quaternary:active,.t-button-danger:active,.t-button-icon:active{text-decoration:none !important}.t-button img,.t-button-primary img,.t-button-submit img,.t-button-secondary img,.t-button-tertiary img,.t-button-quaternary img,.t-button-danger img,.t-button-icon img{margin-right:6px}.t-button i,.t-button-primary i,.t-button-submit i,.t-button-secondary i,.t-button-tertiary i,.t-button-quaternary i,.t-button-danger i,.t-button-icon i{align-self:center;margin-right:6px;opacity:0.5}.t-button-primary,.t-button-submit{background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center}.t-button-primary--icon{flex:0;padding:.75em 2em}.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active{color:#fff;background-color:#272B96}.t-button-primary:link,.t-button-submit:link,.t-button-primary:focus,.t-button-submit:focus,.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active,.t-button-primary:active,.t-button-submit:active{color:#fff}.t-button-secondary{background-color:#eff2f5;color:#252A31;border:0}.t-button-secondary:hover,.t-button-secondary--active,.t-button-secondary:focus{color:#252A31;background-color:#e5eaef}.t-button-tertiary{background-color:#94a8be;color:#fff}.t-button-tertiary:focus{color:#fff}.t-button-tertiary:hover,.t-button-tertiary--active{color:#fff;background-color:#5F738C}.t-button-quaternary{background-color:#d6dee6;color:#252A31;border:0;cursor:auto}.t-button-submit{margin:14px 0}.t-button-danger{color:#fff;background-color:#D21C1C;border:0}.t-button-danger--disabled{background-color:#eff2f5;color:#94a8be;cursor:not-allowed !important}.t-button-danger:hover{color:#fff}.t-button-danger--disabled:hover{color:#94a8be}.t-button-icon.secondary{padding:.375em 1.5em .375em 1.5em;background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center;font-size:16px !important}.t-button-icon.secondary:hover,.t-button-icon.secondary--active{color:#fff;background-color:#272B96}.t-button-icon.secondary:link,.t-button-icon.secondary:focus,.t-button-icon.secondary:hover,.t-button-icon.secondary--active,.t-button-icon.secondary:active{color:#fff}.t-button-icon.secondary span{font-size:16px !important}.t-button-icon-danger{cursor:pointer;color:#D21C1C !important;margin-top:14px}.t-link-button{color:#252A31 !important}.t-link-button--warning{color:#D21C1C !important;margin-top:24px}.t-link-button--info{color:#272B96 !important}.t-button-content{background-color:transparent;border:none}.t-field-file__label{width:fit-content}.t-field-file__input{display:none}.t-field-text{margin-bottom:14px}.t-field-text__label{display:flex;align-items:center}.t-field-text__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-text__input,.t-field-text input[type="text"],.t-field-text input[type="number"],.t-field-text input[type="email"],.t-field-text input[type="tel"]{box-sizing:border-box;width:100% !important;margin-bottom:0px !important;resize:none}.t-field-text__input,.t-field-text input[type="password"]{box-sizing:border-box;width:100%;margin-bottom:0px;resize:none}.t-field-text .show-password-icon{cursor:pointer;position:absolute;right:0;padding:5px}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#D21C1C}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-field-tarea{margin-bottom:24px}.t-field-tarea__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-tarea__input,.t-field-tarea textarea{width:100%;padding:4px;box-sizing:border-box;font-family:'Inter', sans-serif}.t-field-tarea__input.large,.t-field-tarea textarea.large{height:100%;min-height:100px;max-height:100px}.t-field-checkbox{display:flex;white-space:normal;line-height:12px;width:100%;margin-top:24px;margin-bottom:8px}.t-field-checkbox__label{padding-top:0 !important}.t-field-checkbox__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-checkbox__input,.t-field-checkbox input[type="checkbox"]{background:#fff;height:20px;width:20px;margin:0 14px 0 0}.t-field-checkbox.helper{margin-top:31px;margin-bottom:10px;margin-left:-18px}.t-field-checkbox--vertical{margin-right:14px}.t-field-checkbox--vertical .t-field-checkbox__label{text-align:center}.t-field-checkbox--vertical .t-field-checkbox__input{margin:0}.t-field-checkbox-group{margin-bottom:6px;margin-top:24px}.t-field-checkbox-group__label{padding-top:0 !important}.t-field-checkbox-group__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-checkbox-group .t-field-checkbox{margin-top:4px;margin-bottom:8px}.t-field-number{margin-bottom:14px}.t-field-number__label{display:flex;align-items:center}.t-field-number__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-number__input,.t-field-number input[type="number"]{width:100%;margin-bottom:0px;padding:.75em}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#D21C1C}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-multiselect{margin-top:14px}.t-multiselect .select2-search-choice{background-color:#B4DBF8 !important;border:none !important;font-size:14px !important;font-weight:500 !important;color:#004680;padding:.375em .5em !important;background-image:none !important;word-wrap:break-word}.t-multiselect .select2-search-choice div{margin-left:24px}.t-multiselect .select2-search-choice .select2-search-choice-close{background-image:url("../../../themes/default/img/botao-cancelar-multiselect.svg") !important;width:14px !important;height:14px !important;background-position:unset !important}.t-multiselect .select2-choices{overflow:auto !important;max-height:42px;width:100% !important}.t-multiselect .select3-choices{min-width:200px;max-height:57px;width:100% !important;word-wrap:break-word;text-overflow:ellipsis}@media (min-width: 768px){.t-multiselect .select3-choices{max-height:60px}}@media (min-width: 640px){.t-multiselect .select3-choices{max-height:60px}}.t-field-section{margin-top:24px}.t-field-selection{width:100%}.t-tabs{display:flex;list-style:none;margin:0em;padding:0em;overflow-x:scroll;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}@media (min-width: 768px){.t-tabs{padding:.75em 1em .75em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}@media (min-width: 1536px){.t-tabs{padding:.375em .375em .375em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}.t-tabs .t-tabs__list{display:flex;list-style:none;padding:0em;margin:0em}.t-tabs .t-tabs__list .t-tabs__item{display:inline-flex;white-space:nowrap;padding:0em;margin:0em;text-align:center}.t-tabs .t-tabs__list .t-tabs__item.active{font-weight:700;text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link{display:flex;align-items:center;color:#2e33b7}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#2e33b7;color:#fff}.t-tabs .t-tabs__list .t-tabs__item a{text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{font-size:14px;height:auto;color:#52647a;padding:.875em;display:flex;align-items:center}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.875em .875em .875em 0em}@media (min-width: 768px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.25em 1em .25em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.25em 1em .25em 0em}}@media (min-width: 1536px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.375em 1em .375em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.375em 1em .375em 0em}}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#d6dee6;color:#5F738C}.t-tabs::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list{display:flex;list-style:none;text-align:center;padding:0em;margin-left:0em;overflow-x:scroll}.t-tabs-secondary .t-tabs__list::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list .t-tabs__item{padding:8px;font-weight:500;white-space:nowrap;font-size:14px;cursor:pointer}@media (min-width: 640px){.t-tabs-secondary .t-tabs__list .t-tabs__item{font-size:14px}}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-primary{color:#252A31}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-secondary{color:#5F738C}.t-tabs-secondary .t-tabs__list .t-tabs__item.active{border-bottom:2px #222C64 solid;font-weight:600}.tag-table,.tag-table-primary,.tag-table-secondary{border-collapse:initial;margin-top:16px;width:100%}.tag-table td,.tag-table-primary td,.tag-table-secondary td{background:#fff;padding:1em}.tag-table td .t-icon,.tag-table-primary td .t-icon,.tag-table-secondary td .t-icon{color:#5F738C;font-size:16px;cursor:pointer;margin-right:14px}.tag-table thead tr th:first-child,.tag-table-primary thead tr th:first-child,.tag-table-secondary thead tr th:first-child{border-radius:3px 0 0 3px}.tag-table thead tr th:last-child,.tag-table-primary thead tr th:last-child,.tag-table-secondary thead tr th:last-child{border-radius:0 3px 3px 0}.tag-table tbody,.tag-table-primary tbody,.tag-table-secondary tbody{--dt-row-selected: $colorsBaseProductLightActive;--dt-row-selected-text: var(--dt-row-selected);--dt-row-selected-link: var(--dt-row-selected)}.tag-table tbody .selected,.tag-table-primary tbody .selected,.tag-table-secondary tbody .selected{background-color:#EAEAF8}.tag-table tbody tr,.tag-table-primary tbody tr,.tag-table-secondary tbody tr{border-bottom:2.5px solid white}.tag-table tbody td,.tag-table-primary tbody td,.tag-table-secondary tbody td{font-family:"Inter",sans-serif;font-size:14px;padding:4px}.tag-table tbody td:first-child,.tag-table-primary tbody td:first-child,.tag-table-secondary tbody td:first-child{border-radius:3px 0 0 3px}.tag-table tbody td:last-child,.tag-table-primary tbody td:last-child,.tag-table-secondary tbody td:last-child{border-radius:0 3px 3px 0}.tag-table-primary thead tr th{font-weight:500;color:#fff;background-color:#18204e;padding:8px;line-height:normal}.tag-table-primary tbody tr:nth-child(2n+1) td{background-color:#EAEAF8}.tag-table-primary tbody tr:nth-child(2n) td{background-color:#F5F7F9}.tag-table-primary td a{color:#272B96}.tag-table-secondary{border-collapse:collapse}.tag-table-secondary thead tr th{font-weight:bold;color:#5F738C;background-color:#e8edf1;padding:8px;line-height:normal}.tag-table-secondary tbody tr{border-radius:none;border-bottom:.5px solid #e8edf1}.tag-table-secondary.centralize td{text-align:center}.tag-table-secondary.align-start td,.tag-table-secondary.align-start th{text-align:start}.grid-view{padding-top:.875em}.grid-view .summary{display:none}.grid-view .dataTables_filter{margin:10px}.grid-view .dataTables_filter input[type="search"]{margin-bottom:0;margin-left:1em}.grid-view .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;border:1px solid transparent;border-radius:2px;background:transparent}.dt-body-nowrap{white-space:nowrap}.t-cards{display:inline-block;border-radius:6px;padding:24px;background:#fafafe;margin-bottom:16px;margin-right:16px;width:100%;min-width:300px;box-sizing:border-box}.t-cards .t-cards-content{display:flex;flex-direction:column;gap:8px}.t-cards .t-cards-content .t-cards-title{display:flex;align-items:center;color:#18204e;font-size:16px;font-family:'Inter', sans-serif;font-weight:700}.t-cards .t-cards-content .t-cards-title img{margin-right:8px}.t-cards .t-cards-content .t-cards-text{color:#465567;margin-left:32px;font-size:12px}.t-cards .t-cards-content .t-cards-text.clear-margin--left{margin-left:0}.t-cards .t-cards-content span{margin:0em .25em 0em 0em;font-size:24px}.t-cards .t-cards-content .t-cards-link{display:flex;gap:13px}.t-cards:hover{text-decoration:none}.tag-topbar{padding:12px 1.5em;box-sizing:border-box;list-style:none;width:100%;position:fixed;right:0em;z-index:2;background-color:#fff}@media (min-width: 768px){.tag-topbar{width:calc(100% - 190px)}}.tag-topbar__content{display:flex;justify-content:start;align-items:center;list-style:none;margin:0em;width:100%}.tag-topbar__content .tag-topbar__item{display:flex}.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:none;text-decoration:none;cursor:pointer;color:#16205b;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;font-family:'Inter', sans-serif;font-size:14px;font-weight:bold;margin-right:16px}@media (min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:block}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media (min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:none}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle div{border-radius:12px;width:100%;height:4px;background-color:#272B96}.tag-topbar__content .tag-topbar__item .tag-topbar__username{display:inline-block;font-size:14px;margin-left:8px;border-top:1px solid #eaeaf8;width:90%;color:#a6b6c8}.tag-topbar__content .tag-topbar__item .tag-topbar__school_logo{object-fit:contain;width:32px;height:32px;border-radius:50%;margin-right:8px;border:2px solid #16205b;padding:.375em}.t-accordion{border:none}.t-accordion__header .t-accordion__head{border:none}.t-accordion__container-icon:hover{background-color:#fafafe !important;user-select:none}.t-accordion__icon{transition:all 200ms}.t-accordion__icon.closed{transform:rotate(90deg);transition:all 200ms}.t-accordion__body>.odd{background-color:#fafafe}.t-accordion__body>.odd>*,.t-accordion__body>.even>*{font-size:14px;background-color:#fafafe;box-shadow:none !important;padding:14px 24px}.t-accordion__body>.odd:hover>*,.t-accordion__body>.even:hover>*,.t-accordion__body>*>*{box-shadow:none !important}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{display:flex !important;align-items:center;background:#F5F7F9;cursor:pointer;padding:4px 12px !important;border-radius:0;border:none;color:#252A31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252A31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:'Inter', sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5;padding:4px 12px}.t-accordeon-primary .ui-accordion-header{background:#F5F7F9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#F5F7F9 !important}.t-accordeon-primary .icon-color{color:#5F738C}.t-accordeon-secondary .ui-accordion-header{background:#F5F7F9;color:#5F738C}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#EAEDFC}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5F738C;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#F5F7F9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform 0.5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform 0.5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252A31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5F738C;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-filter-bar{display:flex;flex-direction:column;column-gap:12px}@media (min-width: 768px){.t-filter-bar{flex-direction:row}}.t-filter-bar .t-filters{display:flex;margin-bottom:12px}@media (min-width: 768px){.t-filter-bar .t-filters{margin-bottom:0;display:flex}}@font-face{font-family:'icone-tag';src:url("/themes/default/fonts/IconsTag_V18.ttf")}h1{font-size:24px;font-weight:700;line-height:36px;color:#252A31;padding:.875em 0em}h2{font-size:16px}h3{color:#94a8be;font-size:16px;line-height:24px;font-weight:700;margin:12px 0px}h4{font-size:14px;font-weight:700}h5,.subheading{font-size:14px;color:#94a8be;font-weight:400}.t-menu{margin:0;padding:8px}.t-menu .t-menu-item__icon{font-size:18px}.t-menu .t-menu-item__icon:hover{color:#272B96}.t-menu-item{position:relative;display:flex;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer;background:#fafafe}.t-menu-item__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-item__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272B96;align-items:center}.t-menu-item__link:link,.t-menu-item__link:focus,.t-menu-item__link:hover,.t-menu-item__link--active,.t-menu-item__link:active{text-decoration:none !important}.t-menu-item__text{color:#5F738C}.t-menu-item:hover{background:#eaeaf8}.t-menu-item.active{background:#EAEAF8}.t-menu-item.active::before{content:"";position:absolute;width:4px;left:-8px;height:35px;background:#222C64;border-radius:0 4px 4px 0}.t-menu-item.active .t-menu-item__icon{filter:saturate(1);color:#272B96}.t-menu-item.active .t-menu-item__text{color:#272B96}.t-menu-group{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer}.t-menu-group__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-group__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272B96;align-items:center}.t-menu-group__link:link,.t-menu-group__link:focus,.t-menu-group__link:hover,.t-menu-group__link--active,.t-menu-group__link:active{text-decoration:none !important;color:#272B96}.t-menu-group__text{color:#5F738C}.t-menu-group ul{margin:0}.t-menu-group:not(.active) .fa-chevron-down{display:none}.t-menu-group.active .fa-chevron-right{display:none}.t-menu-group.active .collapse{overflow:visible}.t-menu-group.active .t-menu-group__icon{filter:saturate(1)}.t-menu-group.active .t-menu-group__text{color:#272B96}.t-drawer{width:200px;float:left;position:fixed;height:100%;overflow-y:auto;overflow-x:hidden;top:0px;background:#fafafe;z-index:99;-ms-overflow-style:none;scrollbar-width:none}.t-drawer-header{display:flex;align-items:center;width:auto;margin-left:.875em;margin-top:24px;margin-bottom:24px}.t-drawer-toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media (min-width: 768px){.t-drawer-toggle{display:none}}.t-drawer-toggle div{border-radius:12px;width:100%;height:4px;background-color:#272B96}.t-drawer--mobile-hidden{left:-200px;transition:left 500ms}.t-drawer::-webkit-scrollbar{display:none}@media (min-width: 768px){.t-drawer--mobile-hidden{left:0}}.sidebar-cover{display:block;background-color:#00000062;width:100%;height:100%;position:fixed;top:0;right:0;z-index:3}.t-modal-container{color:#252A31;box-sizing:border-box;height:auto;max-height:80vh;background:#fff;border-radius:3px;overflow-y:scroll}.t-modal-container.larger{min-width:70vw;right:15vw;left:15vw;margin:auto}.t-modal-container .t-modal__header{display:flex;align-items:center;justify-content:space-between;padding:24px 24px}.t-modal-container .t-modal__header .t-title{font-size:16px;color:#252A31;font-weight:700;margin:0}.t-modal-container .t-modal__header .close{opacity:1;font-size:14px}.t-modal-container .t-modal__body{padding:14px 24px}.t-modal-container .t-modal__footer a,.t-modal-container .t-modal__footer button{flex:1;padding:.875em}.t-modal-container.height--is-four-fifths{height:80vh}.t-modal-container.height--is-three-fifths{height:60vh}.t-badge,.t-badge-info,.t-badge-critical,.t-badge-success,.t-badge-warning,.t-badge-content{display:flex;gap:2px;align-items:center;border-radius:6px;padding:0 4px 0 4px;margin:8px 8px;background-color:#eff2f5}.t-badge__icon{color:#52647a;font-size:12px;margin-right:6px}.t-badge__label{color:#52647a;font-weight:500}.t-badge:link,.t-badge-info:link,.t-badge-critical:link,.t-badge-success:link,.t-badge-warning:link,.t-badge-content:link,.t-badge:focus,.t-badge-info:focus,.t-badge-critical:focus,.t-badge-success:focus,.t-badge-warning:focus,.t-badge-content:focus,.t-badge:hover,.t-badge-info:hover,.t-badge-critical:hover,.t-badge-success:hover,.t-badge-warning:hover,.t-badge-content:hover,.t-badge--active,.t-badge:active,.t-badge-info:active,.t-badge-critical:active,.t-badge-success:active,.t-badge-warning:active,.t-badge-content:active{text-decoration:none !important}.t-badge-info{width:fit-content;border:0.1rem solid #94A8BE;font-weight:500;background-color:#B4DBF8;color:#004680;padding:0 6px}.t-badge-info__icon{color:#004680;font-size:14px}.t-badge-critical{border:0.1rem solid #D21C1C;background-color:#D21C1C;color:#fff}.t-badge-success{background-color:#EBF4EC;color:#2B7336}.t-badge-warning{background-color:#fdf0e3;color:#a25100}.t-badge-content{background-color:#EAEAF8;color:#3f45ea;border-radius:4px;border:none;padding:.375em .5em .375em .5em;gap:4px}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-icon-trash::before{content:'A';font-family:'icone-tag', sans-serif}.t-icon-less_stock::before{content:'a';font-family:'icone-tag', sans-serif}.t-icon-bar_graph::before{content:'B';font-family:'icone-tag', sans-serif}.t-icon-more_stock::before{content:'b';font-family:'icone-tag', sans-serif}.t-icon-people::before{content:'C';font-family:'icone-tag', sans-serif}.t-icon-person_add::before{content:'c';font-family:'icone-tag', sans-serif}.t-icon-bus::before{content:'D';font-family:'icone-tag', sans-serif}.t-icon-person_remove::before{content:'d';font-family:'icone-tag', sans-serif}.t-icon-apple::before{content:'E';font-family:'icone-tag', sans-serif}.t-icon-down_arrow::before{content:'e';font-family:'icone-tag', sans-serif}.t-icon-pencil::before{content:'F';font-family:'icone-tag', sans-serif}.t-icon-hamburger_button::before{content:'f';font-family:'icone-tag', sans-serif}.t-icon-column_graphi::before{content:'G';font-family:'icone-tag', sans-serif}.t-icon-close::before{content:'g';font-family:'icone-tag', sans-serif}.t-icon-calendar::before{content:'H';font-family:'icone-tag', sans-serif}.t-icon-search_icon::before{content:'h';font-family:'icone-tag', sans-serif}.t-icon-settings::before{content:'I';font-family:'icone-tag', sans-serif}.t-icon-filter::before{content:'i';font-family:'icone-tag', sans-serif}.t-icon-educacenso::before{content:'J';font-family:'icone-tag', sans-serif}.t-icon-right_arrow::before{content:'j';font-family:'icone-tag', sans-serif}.t-icon-help::before{content:'K';font-family:'icone-tag', sans-serif}.t-icon-left_arrow::before{content:'k';font-family:'icone-tag', sans-serif}.t-icon-home::before{content:'L';font-family:'icone-tag', sans-serif}.t-icon-truck-loading::before{content:'l';font-family:'icone-tag', sans-serif}.t-icon-book::before{content:'M';font-family:'icone-tag', sans-serif}.t-icon-up_arrow::before{content:'m';font-family:'icone-tag', sans-serif}.t-icon-exit::before{content:'N';font-family:'icone-tag', sans-serif}.t-icon-slider::before{content:'n';font-family:'icone-tag', sans-serif}.t-icon-blackboard::before{content:'O';font-family:'icone-tag', sans-serif}.t-icon-bin::before{content:'o';font-family:'icone-tag', sans-serif}.t-icon-finger_print::before{content:'P';font-family:'icone-tag', sans-serif}.t-icon-success::before{content:'p';font-family:'icone-tag', sans-serif}.t-icon-school::before{content:'Q';font-family:'icone-tag', sans-serif}.t-icon-info::before{content:'q';font-family:'icone-tag', sans-serif}.t-icon-line_graph::before{content:'R';font-family:'icone-tag', sans-serif}.t-icon-eye::before{content:'r';font-family:'icone-tag', sans-serif}.t-icon-schedule::before{content:'S';font-family:'icone-tag', sans-serif}.t-icon-eye_hash::before{content:'s';font-family:'icone-tag', sans-serif}.t-icon-diary::before{content:'T';font-family:'icone-tag', sans-serif}.t-icon-lock::before{content:'t';font-family:'icone-tag', sans-serif}.t-icon-topics::before{content:'U';font-family:'icone-tag', sans-serif}.t-icon-duplicate::before{content:'u';font-family:'icone-tag', sans-serif}.t-icon-checklist::before{content:'V';font-family:'icone-tag', sans-serif}.t-icon-photos::before{content:'v';font-family:'icone-tag', sans-serif}.t-icon-edition::before{content:'W';font-family:'icone-tag', sans-serif}.t-icon-camera::before{content:'w';font-family:'icone-tag', sans-serif}.t-icon-configuration-adm::before{content:'X';font-family:'icone-tag', sans-serif}.t-icon-export::before{content:'x';font-family:'icone-tag', sans-serif}.t-icon-sagres::before{content:'Y';font-family:'icone-tag', sans-serif}.t-icon-printer::before{content:'y';font-family:'icone-tag', sans-serif}.t-icon-restaurant::before{content:'Z';font-family:'icone-tag', sans-serif}.t-icon-play::before{content:'z';font-family:'icone-tag', sans-serif}.t-icon-to-go-back::before{content:'0';font-family:'icone-tag', sans-serif}.t-icon-annotation::before{content:'1';font-family:'icone-tag', sans-serif}.t-icon-group-people::before{content:'2';font-family:'icone-tag', sans-serif}.t-icon-submit-form::before{content:'3';font-family:'icone-tag', sans-serif}.t-icon-person::before{content:'4';font-family:'icone-tag', sans-serif}.t-icon-slip::before{content:'5';font-family:'icone-tag', sans-serif}.t-icon-box::before{content:'6';font-family:'icone-tag', sans-serif}.t-icon-question-group::before{content:'7';font-family:'icone-tag', sans-serif}.t-icon-list-form::before{content:'8';font-family:'icone-tag', sans-serif}.t-icon-balloon-question::before{content:'9';font-family:'icone-tag', sans-serif}.t-icon-sucess::before{content:'/';font-family:'icone-tag', sans-serif}.t-icon-graduation-cap::before{content:'!';font-family:'icone-tag', sans-serif}.t-icon-bus2::before{content:'"';font-family:'icone-tag', sans-serif}.t-icon-copy::before{content:'#';font-family:'icone-tag', sans-serif}.t-icon-sp::before{content:'.';font-family:'icone-tag', sans-serif}.t-icon-integration::before{content:'`';font-family:'icone-tag', sans-serif}.t-icon-add-group::before{content:'-';font-family:'icone-tag', sans-serif}.t-icon-room-service::before{content:'&';font-family:'icone-tag', sans-serif}.t-icon-circle-three-quarters::before{content:'[';font-family:'icone-tag', sans-serif}.t-icon-cart-arrow-down::before{content:']';font-family:'icone-tag', sans-serif}.t-icon-Generate-RA::before{content:':';font-family:'icone-tag', sans-serif}.t-icon-graduation-cap::before{content:';';font-family:'icone-tag', sans-serif}.t-icon-handshake::before{content:'<';font-family:'icone-tag', sans-serif}.t-icon-weather-report::before{content:'>';font-family:'icone-tag', sans-serif}.t-icon-percentage::before{content:'=';font-family:'icone-tag', sans-serif}.t-icon-identity::before{content:'?';font-family:'icone-tag', sans-serif}.t-icon-e-learning::before{content:'@';font-family:'icone-tag', sans-serif}.t-icon-arrow-az::before{content:'*';font-family:'icone-tag', sans-serif}.t-icon-wheelchair::before{content:'+';font-family:'icone-tag', sans-serif}.t-icon-teachers-students::before{content:'(';font-family:'icone-tag', sans-serif}.t-icon-bullseye-arrow::before{content:')';font-family:'icone-tag', sans-serif}.t-icon-backpack::before{content:',';font-family:'icone-tag', sans-serif}.t-icon-heart::before{content:"'";font-family:'icone-tag', sans-serif}.t-icon-update::before{content:'$';font-family:'icone-tag', sans-serif}.t-icon-no-teacher::before{content:'%';font-family:'icone-tag', sans-serif}.t-student-monitoring::before{content:'~';font-family:'icone-tag', sans-serif}.t-parents-children::before{content:'^';font-family:'icone-tag', sans-serif}.t-monitoring_report::before{content:'{';font-family:'icone-tag', sans-serif}.t-info_positive::before{content:'}';font-family:'icone-tag', sans-serif}.t-medical::before{content:'É';font-family:'icone-tag', sans-serif}.t-hospital-user::before{content:'·';font-family:'icone-tag', sans-serif}.t-doctor::before{content:'_';font-family:'icone-tag', sans-serif}.t-classdiary::before{content:'Ú';font-family:'icone-tag', sans-serif}.t-school-transfer::before{content:'ó';font-family:'icone-tag', sans-serif}.t-class-transfer::before{content:'Í';font-family:'icone-tag', sans-serif}.t-transfer-all-school::before{content:'Ê';font-family:'icone-tag', sans-serif}.t-stage-teachers::before{content:'ñ';font-family:'icone-tag', sans-serif}.t-school-teacher::before{content:'í';font-family:'icone-tag', sans-serif}.t-class-diary::before{content:'Ú';font-family:'icone-tag', sans-serif}.t-icon-start::before{content:'ô';font-family:'icone-tag', sans-serif}.t-icon-class-stage::before{content:'Õ';font-family:'icone-tag', sans-serif}.t-statistic-data::before{content:'é';font-family:'icone-tag', sans-serif}.t-report_card::before{content:'ê';font-family:'icone-tag', sans-serif}.t-group-bag::before{content:'Á';font-family:'icone-tag', sans-serif}.t-scholarship-schools::before{content:'Â';font-family:'icone-tag', sans-serif}.t-amount-class::before{content:'â';font-family:'icone-tag', sans-serif}.t-amount-school::before{content:'á';font-family:'icone-tag', sans-serif}.t-id-card-clip::before{content:'ã';font-family:'icone-tag', sans-serif}.t-student-registration::before{content:'Ã';font-family:'icone-tag', sans-serif}.t-icon-plus::before{content:'Ç';font-family:'icone-tag', sans-serif}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-sortable{list-style-type:none}.t-sortable>*{background:#fafafe !important;border:1px solid #bac7d5 !important;margin:4px;border-radius:3px;color:#252A31 !important;display:flex;padding:12px 16px;align-items:center;gap:12px}.t-sortable .t-icon-slip{color:#272B96}.t-separator,.t-separator-primary{width:100%;border-top:.5px solid #e8edf1;margin:6px 0px}.t-separator-primary{border-top:.5px solid #bac7d5}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{display:flex !important;align-items:center;background:#F5F7F9;cursor:pointer;padding:4px 12px !important;border-radius:0;border:none;color:#252A31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252A31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:'Inter', sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5;padding:4px 12px}.t-accordeon-primary .ui-accordion-header{background:#F5F7F9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#F5F7F9 !important}.t-accordeon-primary .icon-color{color:#5F738C}.t-accordeon-secondary .ui-accordion-header{background:#F5F7F9;color:#5F738C}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#EAEDFC}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5F738C;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#F5F7F9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform 0.5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform 0.5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252A31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5F738C;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.login-form{flex-direction:column;margin-top:3.25em;margin-bottom:3.25em}.login-form .form-signin{position:relative;width:334px;margin-top:3.25em;margin-bottom:0em}.login-form .login-footer{margin-top:3.25em;margin-bottom:0em;flex-direction:column;justify-content:center;display:flex;text-align:center}.login-form .login-footer .login-link{word-wrap:break-word;white-space:nowrap}.login-form .login-footer .login-link a{color:black;text-decoration:none;font-weight:bold}.login-form .login-footer .login-link a:active{color:#4d2897;text-decoration:underline}.login-form .login-footer .login-link a:hover{color:#4d2897;text-decoration:underline}.login-form .login-versao{margin-top:3.25em;padding-top:3.25em}.t-tag,.t-tag-primary,.t-tag-secundary{display:flex;align-items:center;justify-content:center;font-size:14px;padding:4px 8px;border-radius:6px;width:fit-content;margin:0 4px}.t-tag-primary{color:#16205b;background-color:#EAEAF8}.t-tag-secundary{color:#004680;background-color:#B4DBF8}.t-expansive-panel{height:0}.t-expansive-panel.expanded{height:auto;padding:20px 0}.t-list-content,.t-list-primary{display:flex;background-color:#fafafe;margin-top:6px;margin-bottom:6px;padding:6px;border-radius:3px}.t-list-primary{background-color:#F5F7F9}.align-items--center{display:flex;align-items:center}.align-items--start{display:flex;align-items:start}.align-items--stretch{display:flex;align-items:stretch}.align-items--baseline{display:flex;align-items:baseline}.align-items--end{display:flex;align-items:end}@media (min-width: 768px){.align-items--center-on-desktop{display:flex;align-items:center}}.justify-content--center{display:flex;justify-content:center}.justify-content--start{display:flex;justify-content:start}.justify-content--end{display:flex;justify-content:end}.justify-content--space-between{display:flex;justify-content:space-between}.justify-content--end{display:flex;justify-content:end}.align-self--center{align-self:center}.align-self--start{align-self:start}.align-self--baseline{align-self:baseline}.align-self--end{align-self:end}.cursor-pointer{cursor:pointer}.text-color--red{color:#D21C1C}.text-color--green{color:#28a138}.text-color--white{color:#F5F7F9}.text-color--ink{color:#5F738C}.text-bold{font-weight:700}.flex-direction--row{flex-direction:row}.flex-direction--column{flex-direction:column}.flex-direction--row-reverse{flex-direction:row-reverse}.flex-direction--column-reverse{flex-direction:column-reverse}.text-align--center{text-align:center}.text-align--left{text-align:left}.text-align--right{text-align:right}.text-align--justify{text-align:justify}.t-padding-small--left{padding-left:12px}.t-padding-small--right{padding-right:12px}.t-padding-small--top{padding-top:12px}.t-padding-small--bottom{padding-bottom:12px}.t-padding-small--all{padding:12px}.t-padding-small--x{padding-right:12px;padding-left:12px}.t-padding-small--y{padding-top:12px;padding-bottom:12px}.t-margin-small--left{margin-left:12px}.t-margin-small--right{margin-right:12px}.t-margin-small--top{margin-top:12px}.t-margin-small--bottom{margin-bottom:12px}.t-margin-small--all{margin:12px}.t-margin-small--x{margin-right:12px;margin-left:12px}.t-margin-small--y{margin-top:12px;margin-bottom:12px}.t-padding-medium--left{padding-left:16px}.t-padding-medium--right{padding-right:16px}.t-padding-medium--top{padding-top:16px}.t-padding-medium--bottom{padding-bottom:16px}.t-padding-medium--all{padding:16px}.t-padding-medium--x{padding-right:16px;padding-left:16px}.t-padding-medium--y{padding-top:16px;padding-bottom:16px}.t-margin-medium--left{margin-left:16px}.t-margin-medium--right{margin-right:16px}.t-margin-medium--top{margin-top:16px}.t-margin-medium--bottom{margin-bottom:16px}.t-margin-medium--all{margin:16px}.t-margin-medium--x{margin-right:16px;margin-left:16px}.t-margin-medium--y{margin-top:16px;margin-bottom:16px}.t-padding-large--left{padding-left:24px}.t-padding-large--right{padding-right:24px}.t-padding-large--top{padding-top:24px}.t-padding-large--bottom{padding-bottom:24px}.t-padding-large--all{padding:24px}.t-padding-large--x{padding-right:24px;padding-left:24px}.t-padding-large--y{padding-top:24px;padding-bottom:24px}.t-margin-large--left{margin-left:24px}.t-margin-large--right{margin-right:24px}.t-margin-large--top{margin-top:24px}.t-margin-large--bottom{margin-bottom:24px}.t-margin-large--all{margin:24px}.t-margin-large--x{margin-right:24px;margin-left:24px}.t-margin-large--y{margin-top:24px;margin-bottom:24px}.t-padding-none--left{padding-left:0}.t-padding-none--right{padding-right:0}.t-padding-none--top{padding-top:0}.t-padding-none--bottom{padding-bottom:0}.t-padding-none--all{padding:0}.t-padding-none--x{padding-right:0;padding-left:0}.t-padding-none--y{padding-top:0;padding-bottom:0}.t-margin-none--left{margin-left:0}.t-margin-none--right{margin-right:0}.t-margin-none--top{margin-top:0}.t-margin-none--bottom{margin-bottom:0}.t-margin-none--all{margin:0}.t-margin-none--x{margin-right:0;margin-left:0}.t-margin-none--y{margin-top:0;margin-bottom:0}.hide{display:none}.show{display:block}.show--mobile{display:flex}@media (min-width: 640px){.show--mobile{display:none}}.show--tablet{display:flex}@media (min-width: 768px){.show--tablet{display:none}}.show--tabletDesktop{display:none}@media (min-width: 640px){.show--tabletDesktop{display:flex}}.show--desktop{display:none}@media (min-width: 768px){.show--desktop{display:flex}}.full{width:100%;height:100%}.full--width{width:100%}.full--height{height:100%}.border-none{border:none;outline:none}.sticky{position:-webkit-sticky;position:sticky !important;top:0;padding:5px;background-color:#fff;z-index:1} +@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");*,body,html{font-family:'inter', sans-serif}.main{padding:.75em}@media (min-width: 640px){.main{padding:1.5em}}a{color:inherit}a:hover{text-decoration:none}hr{margin:0;border:none}select[multiple]{height:30px}input[type="number"]{margin:0px}select,select[multiple],textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"]{min-height:30px}.wrap{flex-wrap:wrap}.row{display:flex;flex-direction:column;gap:.75em}.row.reverse{flex-direction:column-reverse}@media (min-width: 640px){.row.reverse{flex-direction:row}}.row.no-gap{gap:0}@media (min-width: 640px){.row{flex-direction:row}}.row.margin-large--bottom{margin-bottom:calc(2em / 2)}.row.margin-large--top{margin-top:.875em}.row.no-gap{gap:0}.mobile-row{display:flex;flex-direction:row}.mobile-row.upper-margin{margin-top:24px}.mobile-row.helper{padding-left:13px}.tablet-row{display:flex;flex-direction:column}.tablet-row.bottom-margin{margin-bottom:24px}@media (min-width: 768px){.tablet-row{flex-direction:row}}.column{flex:1;flex-basis:0;margin-left:calc(2em / 2);margin-right:calc(2em / 2)}.column.flex{display:flex}.column.clearfix{margin-left:0;margin-right:0}.column.clearleft{margin-left:0}.column.clearleft--on-tablet{margin-left:0}@media (min-width: 768px){.column.clearleft--on-tablet{margin-left:calc(2em / 2)}}.column.clearleft--on-mobile{margin-left:0}@media (min-width: 640px){.column.clearleft--on-mobile{margin-left:calc(2em/2)}}.column.no-grow{flex-grow:0}.column.helper{max-width:50%}@media (min-width: 640px){.column.is-half{max-width:50%}}@media (min-width: 640px){.column.is-four-fifths{max-width:80%}}.column.is-four-fifths--mobile{max-width:80%}@media (min-width: 640px){.column.is-three-quarters{max-width:75%}}@media (min-width: 640px){.column.is-two-thirds{max-width:66.6666%}}@media (min-width: 640px){.column.is-three-fifths{max-width:60%}}@media (min-width: 640px){.column.is-two-fifths{max-width:40%}}@media (min-width: 640px){.column.is-one-third{max-width:33.3333%}}@media (min-width: 640px){.column.is-third{max-width:30%}}@media (min-width: 640px){.column.is-one-quarter{max-width:25%}}@media (min-width: 640px){.column.is-one-fifth{max-width:20%}}@media (min-width: 640px){.column.is-one-tenth{max-width:10%}}.column.is-one-tenth--mobile{max-width:10%}.t-buttons-container{display:inline-block;width:100%}.t-buttons-container.auto-width{width:auto}@media (min-width: 768px){.t-buttons-container{padding:.25em 0 .25em 0;font-size:14px;display:flex}}.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{display:flex;flex:1;padding:.875em;margin:.5em 0;font-size:12px;border-radius:6px;text-decoration:none;align-self:center;justify-content:center;cursor:pointer}.t-button span,.t-button-primary span,.t-button-submit span,.t-button-secondary span,.t-button-tertiary span,.t-button-quaternary span,.t-button-danger span,.t-button-icon span{margin:0em .25em 0em 0em;font-size:14px}.t-button.mobile-margin,.mobile-margin.t-button-primary,.mobile-margin.t-button-submit,.mobile-margin.t-button-secondary,.mobile-margin.t-button-tertiary,.mobile-margin.t-button-quaternary,.mobile-margin.t-button-danger,.mobile-margin.t-button-icon{margin-right:1em}.t-button.mobile-margin-top,.mobile-margin-top.t-button-primary,.mobile-margin-top.t-button-submit,.mobile-margin-top.t-button-secondary,.mobile-margin-top.t-button-tertiary,.mobile-margin-top.t-button-quaternary,.mobile-margin-top.t-button-danger,.mobile-margin-top.t-button-icon{margin-top:1em !important}.t-button.nofloat,.nofloat.t-button-primary,.nofloat.t-button-submit,.nofloat.t-button-secondary,.nofloat.t-button-tertiary,.nofloat.t-button-quaternary,.nofloat.t-button-danger,.nofloat.t-button-icon{float:unset !important}.t-button:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button-secondary:hover,.t-button-tertiary:hover,.t-button-quaternary:hover,.t-button-danger:hover,.t-button-icon:hover,.t-button--active{text-decoration:none}@media (min-width: 640px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media (min-width: 768px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{flex:0 auto;margin-right:1em;padding:.25em 1em .25em 1em;font-size:14px}}@media (min-width: 1536px){.t-button,.t-button-primary,.t-button-submit,.t-button-secondary,.t-button-tertiary,.t-button-quaternary,.t-button-danger,.t-button-icon{margin-right:1em;padding:.375em 1em .375em 1em}}.t-button:link,.t-button-primary:link,.t-button-submit:link,.t-button-secondary:link,.t-button-tertiary:link,.t-button-quaternary:link,.t-button-danger:link,.t-button-icon:link,.t-button:focus,.t-button-primary:focus,.t-button-submit:focus,.t-button-secondary:focus,.t-button-tertiary:focus,.t-button-quaternary:focus,.t-button-danger:focus,.t-button-icon:focus,.t-button:hover,.t-button-primary:hover,.t-button-submit:hover,.t-button-secondary:hover,.t-button-tertiary:hover,.t-button-quaternary:hover,.t-button-danger:hover,.t-button-icon:hover,.t-button--active,.t-button:active,.t-button-primary:active,.t-button-submit:active,.t-button-secondary:active,.t-button-tertiary:active,.t-button-quaternary:active,.t-button-danger:active,.t-button-icon:active{text-decoration:none !important}.t-button img,.t-button-primary img,.t-button-submit img,.t-button-secondary img,.t-button-tertiary img,.t-button-quaternary img,.t-button-danger img,.t-button-icon img{margin-right:6px}.t-button i,.t-button-primary i,.t-button-submit i,.t-button-secondary i,.t-button-tertiary i,.t-button-quaternary i,.t-button-danger i,.t-button-icon i{align-self:center;margin-right:6px;opacity:0.5}.t-button-primary,.t-button-submit{background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center}.t-button-primary--icon{flex:0;padding:.75em 2em}.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active{color:#fff;background-color:#272B96}.t-button-primary:link,.t-button-submit:link,.t-button-primary:focus,.t-button-submit:focus,.t-button-primary:hover,.t-button-submit:hover,.t-button-primary--active,.t-button-primary:active,.t-button-submit:active{color:#fff}.t-button-secondary{background-color:#eff2f5;color:#252A31;border:0}.t-button-secondary:hover,.t-button-secondary--active,.t-button-secondary:focus{color:#252A31;background-color:#e5eaef}.t-button-tertiary{background-color:#94a8be;color:#fff}.t-button-tertiary:focus{color:#fff}.t-button-tertiary:hover,.t-button-tertiary--active{color:#fff;background-color:#5F738C}.t-button-quaternary{background-color:#d6dee6;color:#252A31;border:0;cursor:auto}.t-button-submit{margin:14px 0}.t-button-danger{color:#fff;background-color:#D21C1C;border:0}.t-button-danger--disabled{background-color:#eff2f5;color:#94a8be;cursor:not-allowed !important}.t-button-danger:hover{color:#fff}.t-button-danger--disabled:hover{color:#94a8be}.t-button-icon.secondary{padding:.375em 1.5em .375em 1.5em;background-color:#3f45ea;color:#fff;cursor:pointer;align-self:center;font-size:16px !important}.t-button-icon.secondary:hover,.t-button-icon.secondary--active{color:#fff;background-color:#272B96}.t-button-icon.secondary:link,.t-button-icon.secondary:focus,.t-button-icon.secondary:hover,.t-button-icon.secondary--active,.t-button-icon.secondary:active{color:#fff}.t-button-icon.secondary span{font-size:16px !important}.t-button-icon-danger{cursor:pointer;color:#D21C1C !important;margin-top:14px}.t-link-button{color:#252A31 !important}.t-link-button--warning{color:#D21C1C !important;margin-top:24px}.t-link-button--info{color:#272B96 !important}.t-button-content{background-color:transparent;border:none}.t-field-file__label{width:fit-content}.t-field-file__input{display:none}.t-field-text{margin-bottom:14px}.t-field-text__label{display:flex;align-items:center}.t-field-text__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-text__input,.t-field-text input[type="text"],.t-field-text input[type="number"],.t-field-text input[type="email"],.t-field-text input[type="tel"]{box-sizing:border-box;width:100% !important;margin-bottom:0px !important;resize:none}.t-field-text__input,.t-field-text input[type="password"]{box-sizing:border-box;width:100%;margin-bottom:0px;resize:none}.t-field-text .show-password-icon{cursor:pointer;position:absolute;right:0;padding:5px}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#D21C1C}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-field-tarea{margin-bottom:24px}.t-field-tarea__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-tarea__input,.t-field-tarea textarea{width:100%;padding:4px;box-sizing:border-box;font-family:'Inter', sans-serif}.t-field-tarea__input.large,.t-field-tarea textarea.large{height:100%;min-height:100px;max-height:100px}.t-field-checkbox{display:flex;white-space:normal;line-height:12px;width:100%;margin-top:24px;margin-bottom:8px}.t-field-checkbox__label{padding-top:0 !important}.t-field-checkbox__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-checkbox__input,.t-field-checkbox input[type="checkbox"]{background:#fff;height:20px;width:20px;margin:0 14px 0 0}.t-field-checkbox.helper{margin-top:31px;margin-bottom:10px;margin-left:-18px}.t-field-checkbox--vertical{margin-right:14px}.t-field-checkbox--vertical .t-field-checkbox__label{text-align:center}.t-field-checkbox--vertical .t-field-checkbox__input{margin:0}.t-field-checkbox-group{margin-bottom:6px;margin-top:24px}.t-field-checkbox-group__label{padding-top:0 !important}.t-field-checkbox-group__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-checkbox-group .t-field-checkbox{margin-top:4px;margin-bottom:8px}.t-field-number{margin-bottom:14px}.t-field-number__label{display:flex;align-items:center}.t-field-number__label--required::after{content:"*";font-weight:500;font-size:14px;color:#D21C1C}.t-field-number__input,.t-field-number input[type="number"]{width:100%;margin-bottom:0px;padding:.75em}.t-field-select,.t-multiselect{width:100%;margin-bottom:14px}.t-field-select__label--required::after{content:" *";font-weight:500;font-size:14px;color:#D21C1C}.t-field-select__input{width:100% !important}.t-field-select__input.select2-container{width:100% !important}.t-field-select__input.select2-container .select2-choice{width:100% !important;box-sizing:border-box;word-wrap:break-word;text-overflow:ellipsis}.t-field-select__helper{max-width:50% !important}.t-field-select__helper2{max-width:65% !important}.t-multiselect{margin-top:14px}.t-multiselect .select2-search-choice{background-color:#B4DBF8 !important;border:none !important;font-size:14px !important;font-weight:500 !important;color:#004680;padding:.375em .5em !important;background-image:none !important;word-wrap:break-word}.t-multiselect .select2-search-choice div{margin-left:24px}.t-multiselect .select2-search-choice .select2-search-choice-close{background-image:url("../../../themes/default/img/botao-cancelar-multiselect.svg") !important;width:14px !important;height:14px !important;background-position:unset !important}.t-multiselect .select2-choices{overflow:auto !important;max-height:42px;width:100% !important}.t-multiselect .select3-choices{min-width:200px;max-height:57px;width:100% !important;word-wrap:break-word;text-overflow:ellipsis}@media (min-width: 768px){.t-multiselect .select3-choices{max-height:60px}}@media (min-width: 640px){.t-multiselect .select3-choices{max-height:60px}}.t-field-section{margin-top:24px}.t-field-selection{width:100%}.t-tabs{display:flex;list-style:none;margin:0em;padding:0em;overflow-x:scroll;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}@media (min-width: 768px){.t-tabs{padding:.75em 1em .75em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}@media (min-width: 1536px){.t-tabs{padding:.375em .375em .375em 0em;margin:0em 1em 0em 0em;overflow-x:hidden}}.t-tabs .t-tabs__list{display:flex;list-style:none;padding:0em;margin:0em}.t-tabs .t-tabs__list .t-tabs__item{display:inline-flex;white-space:nowrap;padding:0em;margin:0em;text-align:center}.t-tabs .t-tabs__list .t-tabs__item.active{font-weight:700;text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link{display:flex;align-items:center;color:#2e33b7}.t-tabs .t-tabs__list .t-tabs__item.active .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#2e33b7;color:#fff}.t-tabs .t-tabs__list .t-tabs__item a{text-decoration:none}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{font-size:14px;height:auto;color:#52647a;padding:.875em;display:flex;align-items:center}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.875em .875em .875em 0em}@media (min-width: 768px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.25em 1em .25em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.25em 1em .25em 0em}}@media (min-width: 1536px){.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link{padding:.375em 1em .375em 1em}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link.first{padding:.375em 1em .375em 0em}}.t-tabs .t-tabs__list .t-tabs__item .t-tabs__link .t-tabs__numeration{display:flex;justify-content:center;align-items:center;margin-right:8px;width:24px;height:24px;border-radius:100%;background-color:#d6dee6;color:#5F738C}.t-tabs::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list{display:flex;list-style:none;text-align:center;padding:0em;margin-left:0em;overflow-x:scroll}.t-tabs-secondary .t-tabs__list::-webkit-scrollbar{display:none}.t-tabs-secondary .t-tabs__list .t-tabs__item{padding:8px;font-weight:500;white-space:nowrap;font-size:14px;cursor:pointer}@media (min-width: 640px){.t-tabs-secondary .t-tabs__list .t-tabs__item{font-size:14px}}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-primary{color:#252A31}.t-tabs-secondary .t-tabs__list .t-tabs__item .text-secondary{color:#5F738C}.t-tabs-secondary .t-tabs__list .t-tabs__item.active{border-bottom:2px #222C64 solid;font-weight:600}.tag-table,.tag-table-primary,.tag-table-secondary{border-collapse:initial;margin-top:16px;width:100%}.tag-table td,.tag-table-primary td,.tag-table-secondary td{background:#fff;padding:1em}.tag-table td .t-icon,.tag-table-primary td .t-icon,.tag-table-secondary td .t-icon{color:#5F738C;font-size:16px;cursor:pointer;margin-right:14px}.tag-table thead tr th:first-child,.tag-table-primary thead tr th:first-child,.tag-table-secondary thead tr th:first-child{border-radius:3px 0 0 3px}.tag-table thead tr th:last-child,.tag-table-primary thead tr th:last-child,.tag-table-secondary thead tr th:last-child{border-radius:0 3px 3px 0}.tag-table tbody,.tag-table-primary tbody,.tag-table-secondary tbody{--dt-row-selected: $colorsBaseProductLightActive;--dt-row-selected-text: var(--dt-row-selected);--dt-row-selected-link: var(--dt-row-selected)}.tag-table tbody .selected,.tag-table-primary tbody .selected,.tag-table-secondary tbody .selected{background-color:#EAEAF8}.tag-table tbody tr,.tag-table-primary tbody tr,.tag-table-secondary tbody tr{border-bottom:2.5px solid white}.tag-table tbody td,.tag-table-primary tbody td,.tag-table-secondary tbody td{font-family:"Inter",sans-serif;font-size:14px;padding:4px}.tag-table tbody td:first-child,.tag-table-primary tbody td:first-child,.tag-table-secondary tbody td:first-child{border-radius:3px 0 0 3px}.tag-table tbody td:last-child,.tag-table-primary tbody td:last-child,.tag-table-secondary tbody td:last-child{border-radius:0 3px 3px 0}.tag-table-primary thead tr th{font-weight:500;color:#fff;background-color:#18204e;padding:8px;line-height:normal}.tag-table-primary tbody tr:nth-child(2n+1) td{background-color:#EAEAF8}.tag-table-primary tbody tr:nth-child(2n) td{background-color:#F5F7F9}.tag-table-primary td a{color:#272B96}.tag-table-secondary{border-collapse:collapse}.tag-table-secondary thead tr th{font-weight:bold;color:#5F738C;background-color:#e8edf1;padding:8px;line-height:normal}.tag-table-secondary tbody tr{border-radius:none;border-bottom:.5px solid #e8edf1}.tag-table-secondary.centralize td{text-align:center}.tag-table-secondary.align-start td,.tag-table-secondary.align-start th{text-align:start}.grid-view{padding-top:.875em}.grid-view .summary{display:none}.grid-view .dataTables_filter{margin:10px}.grid-view .dataTables_filter input[type="search"]{margin-bottom:0;margin-left:1em}.grid-view .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;border:1px solid transparent;border-radius:2px;background:transparent}.dt-body-nowrap{white-space:nowrap}.t-cards{display:inline-block;border-radius:6px;padding:24px;background:#fafafe;margin-bottom:16px;margin-right:16px;width:100%;min-width:300px;box-sizing:border-box}.t-cards .t-cards-content{display:flex;flex-direction:column;gap:8px}.t-cards .t-cards-content .t-cards-title{display:flex;align-items:center;color:#18204e;font-size:16px;font-family:'Inter', sans-serif;font-weight:700}.t-cards .t-cards-content .t-cards-title img{margin-right:8px}.t-cards .t-cards-content .t-cards-text{color:#465567;margin-left:32px;font-size:12px}.t-cards .t-cards-content .t-cards-text.clear-margin--left{margin-left:0}.t-cards .t-cards-content span{margin:0em .25em 0em 0em;font-size:24px}.t-cards .t-cards-content .t-cards-link{display:flex;gap:13px}.t-cards:hover{text-decoration:none}.tag-topbar{padding:12px 1.5em;box-sizing:border-box;list-style:none;width:100%;position:fixed;right:0em;z-index:2;background-color:#fff}@media (min-width: 768px){.tag-topbar{width:calc(100% - 190px)}}.tag-topbar__content{display:flex;justify-content:start;align-items:center;list-style:none;margin:0em;width:100%}.tag-topbar__content .tag-topbar__item{display:flex}.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:none;text-decoration:none;cursor:pointer;color:#16205b;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;font-family:'Inter', sans-serif;font-size:14px;font-weight:bold;margin-right:16px}@media (min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__voltar{display:block}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media (min-width: 768px){.tag-topbar__content .tag-topbar__item .tag-topbar__toggle{display:none}}.tag-topbar__content .tag-topbar__item .tag-topbar__toggle div{border-radius:12px;width:100%;height:4px;background-color:#272B96}.tag-topbar__content .tag-topbar__item .tag-topbar__username{display:inline-block;font-size:14px;margin-left:8px;border-top:1px solid #eaeaf8;width:90%;color:#a6b6c8}.tag-topbar__content .tag-topbar__item .tag-topbar__school_logo{object-fit:contain;width:32px;height:32px;border-radius:50%;margin-right:8px;border:2px solid #16205b;padding:.375em}.t-accordion{border:none}.t-accordion__header .t-accordion__head{border:none}.t-accordion__container-icon:hover{background-color:#fafafe !important;user-select:none}.t-accordion__icon{transition:all 200ms}.t-accordion__icon.closed{transform:rotate(90deg);transition:all 200ms}.t-accordion__body>.odd{background-color:#fafafe}.t-accordion__body>.odd>*,.t-accordion__body>.even>*{font-size:14px;background-color:#fafafe;box-shadow:none !important;padding:14px 24px}.t-accordion__body>.odd:hover>*,.t-accordion__body>.even:hover>*,.t-accordion__body>*>*{box-shadow:none !important}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{height:40px;display:flex !important;align-items:center;background:#F5F7F9;cursor:pointer;border-radius:0;border:none;color:#252A31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252A31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:'Inter', sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5}.t-accordeon-primary .ui-accordion-header{background:#F5F7F9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#F5F7F9 !important}.t-accordeon-primary .icon-color{color:#5F738C}.t-accordeon-secondary .ui-accordion-header{background:#F5F7F9;color:#5F738C}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#EAEDFC}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5F738C;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#F5F7F9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform 0.5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform 0.5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252A31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5F738C;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-filter-bar{display:flex;flex-direction:column;column-gap:12px}@media (min-width: 768px){.t-filter-bar{flex-direction:row}}.t-filter-bar .t-filters{display:flex;margin-bottom:12px}@media (min-width: 768px){.t-filter-bar .t-filters{margin-bottom:0;display:flex}}@font-face{font-family:'icone-tag';src:url("/themes/default/fonts/IconsTag_V19.ttf")}h1{font-size:24px;font-weight:700;line-height:36px;color:#252A31;padding:.875em 0em}h2{font-size:16px}h3{color:#94a8be;font-size:16px;line-height:24px;font-weight:700;margin:12px 0px}h4{font-size:14px;font-weight:700}h5,.subheading{font-size:14px;color:#94a8be;font-weight:400}.t-menu{margin:0;padding:8px}.t-menu .t-menu-item__icon{font-size:18px}.t-menu .t-menu-item__icon:hover{color:#272B96}.t-menu-item{position:relative;display:flex;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer;background:#fafafe}.t-menu-item__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-item__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272B96;align-items:center}.t-menu-item__link:link,.t-menu-item__link:focus,.t-menu-item__link:hover,.t-menu-item__link--active,.t-menu-item__link:active{text-decoration:none !important}.t-menu-item__text{color:#5F738C}.t-menu-item:hover{background:#eaeaf8}.t-menu-item.active{background:#EAEAF8}.t-menu-item.active::before{content:"";position:absolute;width:4px;left:-8px;height:35px;background:#222C64;border-radius:0 4px 4px 0}.t-menu-item.active .t-menu-item__icon{filter:saturate(1);color:#272B96}.t-menu-item.active .t-menu-item__text{color:#272B96}.t-menu-group{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:.5em;border-radius:6px;cursor:pointer}.t-menu-group__icon{filter:invert(42%) sepia(30%) saturate(380%) hue-rotate(173deg) brightness(98%) contrast(88%)}.t-menu-group__link{display:flex;gap:8px;width:100%;font-size:14px;font-weight:400;color:#272B96;align-items:center}.t-menu-group__link:link,.t-menu-group__link:focus,.t-menu-group__link:hover,.t-menu-group__link--active,.t-menu-group__link:active{text-decoration:none !important;color:#272B96}.t-menu-group__text{color:#5F738C}.t-menu-group ul{margin:0}.t-menu-group:not(.active) .fa-chevron-down{display:none}.t-menu-group.active .fa-chevron-right{display:none}.t-menu-group.active .collapse{overflow:visible}.t-menu-group.active .t-menu-group__icon{filter:saturate(1)}.t-menu-group.active .t-menu-group__text{color:#272B96}.t-drawer{width:200px;float:left;position:fixed;height:100%;overflow-y:auto;overflow-x:hidden;top:0px;background:#fafafe;z-index:99;-ms-overflow-style:none;scrollbar-width:none}.t-drawer-header{display:flex;align-items:center;width:auto;margin-left:.875em;margin-top:24px;margin-bottom:24px}.t-drawer-toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:24px;padding:12px;padding-left:0em;border-right:solid .5px #eaeaf8;margin-right:16px}@media (min-width: 768px){.t-drawer-toggle{display:none}}.t-drawer-toggle div{border-radius:12px;width:100%;height:4px;background-color:#272B96}.t-drawer--mobile-hidden{left:-200px;transition:left 500ms}.t-drawer::-webkit-scrollbar{display:none}@media (min-width: 768px){.t-drawer--mobile-hidden{left:0}}.sidebar-cover{display:block;background-color:#00000062;width:100%;height:100%;position:fixed;top:0;right:0;z-index:3}.t-modal-container{color:#252A31;box-sizing:border-box;height:auto;max-height:80vh;background:#fff;border-radius:3px;overflow-y:scroll}.t-modal-container.larger{min-width:70vw;right:15vw;left:15vw;margin:auto}.t-modal-container .t-modal__header{display:flex;align-items:center;justify-content:space-between;padding:24px 24px}.t-modal-container .t-modal__header .t-title{font-size:16px;color:#252A31;font-weight:700;margin:0}.t-modal-container .t-modal__header .close{opacity:1;font-size:14px}.t-modal-container .t-modal__body{padding:14px 24px}.t-modal-container .t-modal__footer a,.t-modal-container .t-modal__footer button{flex:1;padding:.875em}.t-modal-container.height--is-four-fifths{height:80vh}.t-modal-container.height--is-three-fifths{height:60vh}.t-badge,.t-badge-info,.t-badge-critical,.t-badge-success,.t-badge-warning,.t-badge-content{display:flex;gap:2px;align-items:center;border-radius:6px;padding:0 4px 0 4px;margin:8px 8px;background-color:#eff2f5}.t-badge__icon{color:#52647a;font-size:12px;margin-right:6px}.t-badge__label{color:#52647a;font-weight:500}.t-badge:link,.t-badge-info:link,.t-badge-critical:link,.t-badge-success:link,.t-badge-warning:link,.t-badge-content:link,.t-badge:focus,.t-badge-info:focus,.t-badge-critical:focus,.t-badge-success:focus,.t-badge-warning:focus,.t-badge-content:focus,.t-badge:hover,.t-badge-info:hover,.t-badge-critical:hover,.t-badge-success:hover,.t-badge-warning:hover,.t-badge-content:hover,.t-badge--active,.t-badge:active,.t-badge-info:active,.t-badge-critical:active,.t-badge-success:active,.t-badge-warning:active,.t-badge-content:active{text-decoration:none !important}.t-badge-info{width:fit-content;border:0.1rem solid #94A8BE;font-weight:500;background-color:#B4DBF8;color:#004680;padding:0 6px}.t-badge-info__icon{color:#004680;font-size:14px}.t-badge-critical{border:0.1rem solid #D21C1C;background-color:#D21C1C;color:#fff}.t-badge-success{background-color:#EBF4EC;color:#2B7336}.t-badge-warning{background-color:#fdf0e3;color:#a25100}.t-badge-content{background-color:#EAEAF8;color:#3f45ea;border-radius:4px;border:none;padding:.375em .5em .375em .5em;gap:4px}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-icon-trash::before{content:'A';font-family:'icone-tag', sans-serif}.t-icon-less_stock::before{content:'a';font-family:'icone-tag', sans-serif}.t-icon-bar_graph::before{content:'B';font-family:'icone-tag', sans-serif}.t-icon-more_stock::before{content:'b';font-family:'icone-tag', sans-serif}.t-icon-people::before{content:'C';font-family:'icone-tag', sans-serif}.t-icon-person_add::before{content:'c';font-family:'icone-tag', sans-serif}.t-icon-bus::before{content:'D';font-family:'icone-tag', sans-serif}.t-icon-person_remove::before{content:'d';font-family:'icone-tag', sans-serif}.t-icon-apple::before{content:'E';font-family:'icone-tag', sans-serif}.t-icon-down_arrow::before{content:'e';font-family:'icone-tag', sans-serif}.t-icon-pencil::before{content:'F';font-family:'icone-tag', sans-serif}.t-icon-hamburger_button::before{content:'f';font-family:'icone-tag', sans-serif}.t-icon-column_graphi::before{content:'G';font-family:'icone-tag', sans-serif}.t-icon-close::before{content:'g';font-family:'icone-tag', sans-serif}.t-icon-calendar::before{content:'H';font-family:'icone-tag', sans-serif}.t-icon-search_icon::before{content:'h';font-family:'icone-tag', sans-serif}.t-icon-settings::before{content:'I';font-family:'icone-tag', sans-serif}.t-icon-filter::before{content:'i';font-family:'icone-tag', sans-serif}.t-icon-educacenso::before{content:'J';font-family:'icone-tag', sans-serif}.t-icon-right_arrow::before{content:'j';font-family:'icone-tag', sans-serif}.t-icon-help::before{content:'K';font-family:'icone-tag', sans-serif}.t-icon-left_arrow::before{content:'k';font-family:'icone-tag', sans-serif}.t-icon-home::before{content:'L';font-family:'icone-tag', sans-serif}.t-icon-truck-loading::before{content:'l';font-family:'icone-tag', sans-serif}.t-icon-book::before{content:'M';font-family:'icone-tag', sans-serif}.t-icon-up_arrow::before{content:'m';font-family:'icone-tag', sans-serif}.t-icon-exit::before{content:'N';font-family:'icone-tag', sans-serif}.t-icon-slider::before{content:'n';font-family:'icone-tag', sans-serif}.t-icon-blackboard::before{content:'O';font-family:'icone-tag', sans-serif}.t-icon-bin::before{content:'o';font-family:'icone-tag', sans-serif}.t-icon-finger_print::before{content:'P';font-family:'icone-tag', sans-serif}.t-icon-success::before{content:'p';font-family:'icone-tag', sans-serif}.t-icon-school::before{content:'Q';font-family:'icone-tag', sans-serif}.t-icon-info::before{content:'q';font-family:'icone-tag', sans-serif}.t-icon-line_graph::before{content:'R';font-family:'icone-tag', sans-serif}.t-icon-eye::before{content:'r';font-family:'icone-tag', sans-serif}.t-icon-schedule::before{content:'S';font-family:'icone-tag', sans-serif}.t-icon-eye_hash::before{content:'s';font-family:'icone-tag', sans-serif}.t-icon-diary::before{content:'T';font-family:'icone-tag', sans-serif}.t-icon-lock::before{content:'t';font-family:'icone-tag', sans-serif}.t-icon-topics::before{content:'U';font-family:'icone-tag', sans-serif}.t-icon-duplicate::before{content:'u';font-family:'icone-tag', sans-serif}.t-icon-checklist::before{content:'V';font-family:'icone-tag', sans-serif}.t-icon-photos::before{content:'v';font-family:'icone-tag', sans-serif}.t-icon-edition::before{content:'W';font-family:'icone-tag', sans-serif}.t-icon-camera::before{content:'w';font-family:'icone-tag', sans-serif}.t-icon-configuration-adm::before{content:'X';font-family:'icone-tag', sans-serif}.t-icon-export::before{content:'x';font-family:'icone-tag', sans-serif}.t-icon-sagres::before{content:'Y';font-family:'icone-tag', sans-serif}.t-icon-printer::before{content:'y';font-family:'icone-tag', sans-serif}.t-icon-restaurant::before{content:'Z';font-family:'icone-tag', sans-serif}.t-icon-play::before{content:'z';font-family:'icone-tag', sans-serif}.t-icon-to-go-back::before{content:'0';font-family:'icone-tag', sans-serif}.t-icon-annotation::before{content:'1';font-family:'icone-tag', sans-serif}.t-icon-group-people::before{content:'2';font-family:'icone-tag', sans-serif}.t-icon-submit-form::before{content:'3';font-family:'icone-tag', sans-serif}.t-icon-person::before{content:'4';font-family:'icone-tag', sans-serif}.t-icon-slip::before{content:'5';font-family:'icone-tag', sans-serif}.t-icon-box::before{content:'6';font-family:'icone-tag', sans-serif}.t-icon-question-group::before{content:'7';font-family:'icone-tag', sans-serif}.t-icon-list-form::before{content:'8';font-family:'icone-tag', sans-serif}.t-icon-balloon-question::before{content:'9';font-family:'icone-tag', sans-serif}.t-icon-sucess::before{content:'/';font-family:'icone-tag', sans-serif}.t-icon-graduation-cap::before{content:'!';font-family:'icone-tag', sans-serif}.t-icon-bus2::before{content:'"';font-family:'icone-tag', sans-serif}.t-icon-copy::before{content:'#';font-family:'icone-tag', sans-serif}.t-icon-sp::before{content:'.';font-family:'icone-tag', sans-serif}.t-icon-integration::before{content:'`';font-family:'icone-tag', sans-serif}.t-icon-add-group::before{content:'-';font-family:'icone-tag', sans-serif}.t-icon-room-service::before{content:'&';font-family:'icone-tag', sans-serif}.t-icon-circle-three-quarters::before{content:'[';font-family:'icone-tag', sans-serif}.t-icon-cart-arrow-down::before{content:']';font-family:'icone-tag', sans-serif}.t-icon-Generate-RA::before{content:':';font-family:'icone-tag', sans-serif}.t-icon-graduation-cap::before{content:';';font-family:'icone-tag', sans-serif}.t-icon-handshake::before{content:'<';font-family:'icone-tag', sans-serif}.t-icon-weather-report::before{content:'>';font-family:'icone-tag', sans-serif}.t-icon-percentage::before{content:'=';font-family:'icone-tag', sans-serif}.t-icon-identity::before{content:'?';font-family:'icone-tag', sans-serif}.t-icon-e-learning::before{content:'@';font-family:'icone-tag', sans-serif}.t-icon-arrow-az::before{content:'*';font-family:'icone-tag', sans-serif}.t-icon-wheelchair::before{content:'+';font-family:'icone-tag', sans-serif}.t-icon-teachers-students::before{content:'(';font-family:'icone-tag', sans-serif}.t-icon-bullseye-arrow::before{content:')';font-family:'icone-tag', sans-serif}.t-icon-backpack::before{content:',';font-family:'icone-tag', sans-serif}.t-icon-heart::before{content:"'";font-family:'icone-tag', sans-serif}.t-icon-update::before{content:'$';font-family:'icone-tag', sans-serif}.t-icon-no-teacher::before{content:'%';font-family:'icone-tag', sans-serif}.t-student-monitoring::before{content:'~';font-family:'icone-tag', sans-serif}.t-parents-children::before{content:'^';font-family:'icone-tag', sans-serif}.t-monitoring_report::before{content:'{';font-family:'icone-tag', sans-serif}.t-info_positive::before{content:'}';font-family:'icone-tag', sans-serif}.t-medical::before{content:'É';font-family:'icone-tag', sans-serif}.t-hospital-user::before{content:'·';font-family:'icone-tag', sans-serif}.t-doctor::before{content:'_';font-family:'icone-tag', sans-serif}.t-classdiary::before{content:'Ú';font-family:'icone-tag', sans-serif}.t-school-transfer::before{content:'ó';font-family:'icone-tag', sans-serif}.t-class-transfer::before{content:'Í';font-family:'icone-tag', sans-serif}.t-transfer-all-school::before{content:'Ê';font-family:'icone-tag', sans-serif}.t-stage-teachers::before{content:'ñ';font-family:'icone-tag', sans-serif}.t-school-teacher::before{content:'í';font-family:'icone-tag', sans-serif}.t-class-diary::before{content:'Ú';font-family:'icone-tag', sans-serif}.t-icon-start::before{content:'ô';font-family:'icone-tag', sans-serif}.t-icon-class-stage::before{content:'Õ';font-family:'icone-tag', sans-serif}.t-statistic-data::before{content:'é';font-family:'icone-tag', sans-serif}.t-report_card::before{content:'ê';font-family:'icone-tag', sans-serif}.t-group-bag::before{content:'Á';font-family:'icone-tag', sans-serif}.t-scholarship-schools::before{content:'Â';font-family:'icone-tag', sans-serif}.t-amount-class::before{content:'â';font-family:'icone-tag', sans-serif}.t-amount-school::before{content:'á';font-family:'icone-tag', sans-serif}.t-id-card-clip::before{content:'ã';font-family:'icone-tag', sans-serif}.t-student-registration::before{content:'Ã';font-family:'icone-tag', sans-serif}.t-icon-plus::before{content:'Ç';font-family:'icone-tag', sans-serif}.reports{display:flex;flex-wrap:wrap}.t-reports_icons{font-size:28px;color:#3f45ea}.t-sortable{list-style-type:none}.t-sortable>*{background:#fafafe !important;border:1px solid #bac7d5 !important;margin:4px;border-radius:3px;color:#252A31 !important;display:flex;padding:12px 16px;align-items:center;gap:12px}.t-sortable .t-icon-slip{color:#272B96}.t-separator,.t-separator-primary{width:100%;border-top:.5px solid #e8edf1;margin:6px 0px}.t-separator-primary{border-top:.5px solid #bac7d5}.t-accordeon .ui-accordion-header,.t-accordeon-primary .ui-accordion-header,.t-accordeon-secondary .ui-accordion-header,.t-accordeon-tertiary .ui-accordion-header,.t-accordeon-quaternary .ui-accordion-header{height:40px;display:flex !important;align-items:center;background:#F5F7F9;cursor:pointer;border-radius:0;border:none;color:#252A31}.t-accordeon .ui-accordion-header .t-title,.t-accordeon-primary .ui-accordion-header .t-title,.t-accordeon-secondary .ui-accordion-header .t-title,.t-accordeon-tertiary .ui-accordion-header .t-title,.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0 8px;font-weight:500;color:#252A31}.t-accordeon .ui-accordion-header .t-accordion-input-header,.t-accordeon-primary .ui-accordion-header .t-accordion-input-header,.t-accordeon-secondary .ui-accordion-header .t-accordion-input-header,.t-accordeon-tertiary .ui-accordion-header .t-accordion-input-header,.t-accordeon-quaternary .ui-accordion-header .t-accordion-input-header{border:none;background:none;box-shadow:none;margin-bottom:0;padding:0;font-family:'Inter', sans-serif !important}.t-accordeon .ui-accordion-header.hide,.t-accordeon-primary .ui-accordion-header.hide,.t-accordeon-secondary .ui-accordion-header.hide,.t-accordeon-tertiary .ui-accordion-header.hide,.t-accordeon-quaternary .ui-accordion-header.hide{display:none !important}.t-accordeon .ui-accordion-header span,.t-accordeon-primary .ui-accordion-header span,.t-accordeon-secondary .ui-accordion-header span,.t-accordeon-tertiary .ui-accordion-header span,.t-accordeon-quaternary .ui-accordion-header span{font-weight:500}.t-accordeon .ui-accordion-content,.t-accordeon-primary .ui-accordion-content,.t-accordeon-secondary .ui-accordion-content,.t-accordeon-tertiary .ui-accordion-content,.t-accordeon-quaternary .ui-accordion-content{overflow-x:hidden !important;padding:4px 12px !important}.t-accordeon .ui-accordion-content.accordion-overflow,.t-accordeon-primary .ui-accordion-content.accordion-overflow,.t-accordeon-secondary .ui-accordion-content.accordion-overflow,.t-accordeon-tertiary .ui-accordion-content.accordion-overflow,.t-accordeon-quaternary .ui-accordion-content.accordion-overflow{overflow-x:scroll !important}.t-accordeon .ui-accordion-content.hide,.t-accordeon-primary .ui-accordion-content.hide,.t-accordeon-secondary .ui-accordion-content.hide,.t-accordeon-tertiary .ui-accordion-content.hide,.t-accordeon-quaternary .ui-accordion-content.hide{display:none !important}.t-accordeon--header{font-weight:700;border-bottom:.5px solid #bac7d5}.t-accordeon-primary .ui-accordion-header{background:#F5F7F9}.t-accordeon-primary .ui-accordion-header:hover,.t-accordeon-primary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-primary .ui-accordion-content{background:#F5F7F9 !important}.t-accordeon-primary .icon-color{color:#5F738C}.t-accordeon-secondary .ui-accordion-header{background:#F5F7F9;color:#5F738C}.t-accordeon-secondary .ui-accordion-header .border-left{border-left:solid 1px #e5eaef}.t-accordeon-secondary .ui-accordion-header .arrow{font-size:14px}.t-accordeon-secondary .ui-accordion-header.even{background:#EAEDFC}.t-accordeon-secondary .ui-accordion-content{background-color:#fff}.t-accordeon-secondary .ui-widget-content{background:none !important}.t-accordeon-secondary .icon-color{color:#5F738C;font-size:18px;margin-right:12px}.t-accordeon-secondary .t-accordeon-container-table{justify-content:space-between;display:flex;flex-direction:row}.t-accordeon-tertiary .ui-accordion-header{padding:12px 0 !important;background:#F5F7F9}.t-accordeon-tertiary .ui-accordion-header:hover,.t-accordeon-tertiary .ui-accordion-header--active{background-color:#e5eaef}.t-accordeon-tertiary .ui-accordion-content{background:none !important;padding-left:0 !important;padding-right:0 !important;height:auto}.t-accordeon-quaternary .ui-accordion-header{margin-top:16px;padding-left:8px !important;padding-right:8px !important;background:#fff;border-radius:6px;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5)}.t-accordeon-quaternary .ui-accordion-header .accordion-arrow-icon{transition:transform 0.5s ease;margin-right:16px;font-size:14px}.t-accordeon-quaternary .ui-accordion-header .rotate{transform:rotate(-90deg);transition:transform 0.5s ease}.t-accordeon-quaternary .ui-accordion-header .t-title{margin:0;font-weight:700;color:#252A31}.t-accordeon-quaternary .ui-accordion-header:hover,.t-accordeon-quaternary .ui-accordion-header--active{background-color:#f1f4f7}.t-accordeon-quaternary .ui-accordion-content{background:none !important;padding-left:8px !important;padding-right:8px !important;border-radius:6px;height:auto;box-shadow:0px 0px 6px 0px rgba(196,196,196,0.5);font-size:14px}.t-accordeon-quaternary .accordion-label{display:flex;align-items:center;margin-right:8px;margin-bottom:0}.t-accordeon-quaternary .accordion-label--title{color:#5F738C;display:flex;align-items:center;margin-right:8px;margin-bottom:0}.login-form{flex-direction:column;margin-top:3.25em;margin-bottom:3.25em}.login-form .form-signin{position:relative;width:334px;margin-top:3.25em;margin-bottom:0em}.login-form .login-footer{margin-top:3.25em;margin-bottom:0em;flex-direction:column;justify-content:center;display:flex;text-align:center}.login-form .login-footer .login-link{word-wrap:break-word;white-space:nowrap}.login-form .login-footer .login-link a{color:black;text-decoration:none;font-weight:bold}.login-form .login-footer .login-link a:active{color:#4d2897;text-decoration:underline}.login-form .login-footer .login-link a:hover{color:#4d2897;text-decoration:underline}.login-form .login-versao{margin-top:3.25em;padding-top:3.25em}.t-tag,.t-tag-primary,.t-tag-secundary{display:flex;align-items:center;justify-content:center;font-size:14px;padding:4px 8px;border-radius:6px;width:fit-content;margin:0 4px}.t-tag-primary{color:#16205b;background-color:#EAEAF8}.t-tag-secundary{color:#004680;background-color:#B4DBF8}.t-expansive-panel{height:0}.t-expansive-panel.expanded{height:auto;padding:20px 0}.t-list-content,.t-list-primary{display:flex;background-color:#fafafe;margin-top:6px;margin-bottom:6px;padding:6px;border-radius:3px}.t-list-primary{background-color:#F5F7F9}.align-items--center{display:flex;align-items:center}.align-items--start{display:flex;align-items:start}.align-items--stretch{display:flex;align-items:stretch}.align-items--baseline{display:flex;align-items:baseline}.align-items--end{display:flex;align-items:end}@media (min-width: 768px){.align-items--center-on-desktop{display:flex;align-items:center}}.justify-content--center{display:flex;justify-content:center}.justify-content--start{display:flex;justify-content:start}.justify-content--end{display:flex;justify-content:end}.justify-content--space-between{display:flex;justify-content:space-between}.justify-content--end{display:flex;justify-content:end}.justify-content--space-around{display:flex;justify-content:space-around}.align-self--center{align-self:center}.align-self--start{align-self:start}.align-self--baseline{align-self:baseline}.align-self--end{align-self:end}.cursor-pointer{cursor:pointer}.text-color--red{color:#D21C1C}.text-color--green{color:#28a138}.text-color--white{color:#F5F7F9}.text-color--ink{color:#5F738C}.text-bold{font-weight:700}.flex-direction--row{flex-direction:row}.flex-direction--column{flex-direction:column}.flex-direction--row-reverse{flex-direction:row-reverse}.flex-direction--column-reverse{flex-direction:column-reverse}.text-align--center{text-align:center}.text-align--left{text-align:left}.text-align--right{text-align:right}.text-align--justify{text-align:justify}.t-padding-small--left{padding-left:12px}.t-padding-small--right{padding-right:12px}.t-padding-small--top{padding-top:12px}.t-padding-small--bottom{padding-bottom:12px}.t-padding-small--all{padding:12px}.t-padding-small--x{padding-right:12px;padding-left:12px}.t-padding-small--y{padding-top:12px;padding-bottom:12px}.t-margin-small--left{margin-left:12px}.t-margin-small--right{margin-right:12px}.t-margin-small--top{margin-top:12px}.t-margin-small--bottom{margin-bottom:12px}.t-margin-small--all{margin:12px}.t-margin-small--x{margin-right:12px;margin-left:12px}.t-margin-small--y{margin-top:12px;margin-bottom:12px}.t-padding-medium--left{padding-left:16px}.t-padding-medium--right{padding-right:16px}.t-padding-medium--top{padding-top:16px}.t-padding-medium--bottom{padding-bottom:16px}.t-padding-medium--all{padding:16px}.t-padding-medium--x{padding-right:16px;padding-left:16px}.t-padding-medium--y{padding-top:16px;padding-bottom:16px}.t-margin-medium--left{margin-left:16px}.t-margin-medium--right{margin-right:16px}.t-margin-medium--top{margin-top:16px}.t-margin-medium--bottom{margin-bottom:16px}.t-margin-medium--all{margin:16px}.t-margin-medium--x{margin-right:16px;margin-left:16px}.t-margin-medium--y{margin-top:16px;margin-bottom:16px}.t-padding-large--left{padding-left:24px}.t-padding-large--right{padding-right:24px}.t-padding-large--top{padding-top:24px}.t-padding-large--bottom{padding-bottom:24px}.t-padding-large--all{padding:24px}.t-padding-large--x{padding-right:24px;padding-left:24px}.t-padding-large--y{padding-top:24px;padding-bottom:24px}.t-margin-large--left{margin-left:24px}.t-margin-large--right{margin-right:24px}.t-margin-large--top{margin-top:24px}.t-margin-large--bottom{margin-bottom:24px}.t-margin-large--all{margin:24px}.t-margin-large--x{margin-right:24px;margin-left:24px}.t-margin-large--y{margin-top:24px;margin-bottom:24px}.t-padding-none--left{padding-left:0}.t-padding-none--right{padding-right:0}.t-padding-none--top{padding-top:0}.t-padding-none--bottom{padding-bottom:0}.t-padding-none--all{padding:0}.t-padding-none--x{padding-right:0;padding-left:0}.t-padding-none--y{padding-top:0;padding-bottom:0}.t-margin-none--left{margin-left:0}.t-margin-none--right{margin-right:0}.t-margin-none--top{margin-top:0}.t-margin-none--bottom{margin-bottom:0}.t-margin-none--all{margin:0}.t-margin-none--x{margin-right:0;margin-left:0}.t-margin-none--y{margin-top:0;margin-bottom:0}.hide{display:none}.show{display:block}.show--mobile{display:flex}@media (min-width: 640px){.show--mobile{display:none}}.show--tablet{display:flex}@media (min-width: 768px){.show--tablet{display:none}}.show--tabletDesktop{display:none}@media (min-width: 640px){.show--tabletDesktop{display:flex}}.show--desktop{display:none}@media (min-width: 768px){.show--desktop{display:flex}}.full{width:100%;height:100%}.full--width{width:100%}.full--height{height:100%}.border-none{border:none;outline:none}.sticky{position:-webkit-sticky;position:sticky !important;top:0;padding:5px;background-color:#fff;z-index:1} diff --git a/sass/scss/_accordeon.scss b/sass/scss/_accordeon.scss index 8f2b6e6e3..21101d6e6 100644 --- a/sass/scss/_accordeon.scss +++ b/sass/scss/_accordeon.scss @@ -1,11 +1,11 @@ .t-accordeon { .ui-accordion-header { + height: $SizeXXLarge; display: flex !important; align-items: center; background: $colorsBaseCloudLight; cursor: pointer; - padding: $SizeXXXSmall $SizeSmall !important; border-radius: 0; border: none; color: $colorsTextPrimary; @@ -45,7 +45,6 @@ &--header { font-weight: $fontWeightBold; border-bottom: $borderWidthCard solid $colorsBaseInkLighter; - padding: $SizeXXXSmall $SizeSmall; } } diff --git a/sass/scss/_helpers.scss b/sass/scss/_helpers.scss index d1bd2cc7e..ba7aaf927 100644 --- a/sass/scss/_helpers.scss +++ b/sass/scss/_helpers.scss @@ -16,7 +16,7 @@ } .justify-content { - $alignments: center, start, end, space-between, end; + $alignments: center, start, end, space-between, end, space-around; @each $align in $alignments { &--#{$align} { display: flex; From a20780df2a60d94fc66eae7e838529bda0a4d65e Mon Sep 17 00:00:00 2001 From: Nathan Santos <117388330+nathanipti@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:45:57 -0300 Subject: [PATCH 13/15] Fix: Reordered parameters in getSchedulesFromMajorStage method (#667) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: Reordered parameters in getSchedulesFromMajorStage method * Feat: added new version in changelog and config --------- Co-authored-by: Igor Gonçalves --- CHANGELOG.md | 10 +++++----- app/controllers/ClassesController.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e06f3175..653322004 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,15 +7,15 @@ ## [Versão 3.78.132] - Adicionado campo para a assinatura do diretor -## [Versão 3.77.131] -- Adicionado unidades de medida para o lançamento no estoque - -## [Versão 3.77.130] +## [Versão 3.77.132] - Criando as telas relacionadas a agricultor no novo módulo de merenda escolar -## [Versão 3.76.130] +## [Versão 3.76.131] - Adicionado gerência de editais anuais de aquisição de gêneros alimentícios da agricultura familiar e empreendedor familiar rural +## [Versão 3.76.130] +- Correção no conteúdo ministrado em sala de aula + ## [Versão 3.76.129] - Correção na descrição da séries para as inconsistências sagres diff --git a/app/controllers/ClassesController.php b/app/controllers/ClassesController.php index a2a887696..29189f0d0 100755 --- a/app/controllers/ClassesController.php +++ b/app/controllers/ClassesController.php @@ -195,7 +195,7 @@ public function actionGetClassContents() * @param integer $disciplineId * @return Schedule[] */ - private function getSchedulesFromMajorStage($classroomId, $month, $year, $disciplineId) + private function getSchedulesFromMajorStage($classroomId, $month, $disciplineId, $year) { return Schedule::model()->findAll( "classroom_fk = :classroom_fk and month = :month and year = :year and discipline_fk = :discipline_fk and unavailable = 0 order by day, schedule", From a6fe75b0a999bb0ebf3fafce85cefa82d2792571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Gon=C3=A7alves?= Date: Fri, 19 Apr 2024 11:45:43 -0300 Subject: [PATCH 14/15] fix: remove jquery --- themes/default/views/enrollment/_form.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/themes/default/views/enrollment/_form.php b/themes/default/views/enrollment/_form.php index 3f6614d19..4c608ec9e 100755 --- a/themes/default/views/enrollment/_form.php +++ b/themes/default/views/enrollment/_form.php @@ -398,5 +398,3 @@ var updateDependenciesURL = 'createUrl('enrollment/updatedependencies')?>'; - - From c03c1eaa5cd05d97716977a931cf65679560d76c Mon Sep 17 00:00:00 2001 From: Nathan Santos <117388330+nathanipti@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:09:13 -0300 Subject: [PATCH 15/15] Fix/sagres componentes curriculares (#691) * Fix? added new inconsistencys for empty components curriculares * Feat: added new version for changelog and config --- CHANGELOG.md | 3 + .../sagres/models/SagresConsultModel.php | 72 ++++++++++++++++--- config.php | 2 +- 3 files changed, 67 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 653322004..a24286c47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [Versão 3.77.135] +- Adicionado novas inconsistências para a falta de componentes curriculasres + ## [Versão 3.77.134] - Consertado tela de frequencia para os professores - diff --git a/app/modules/sagres/models/SagresConsultModel.php b/app/modules/sagres/models/SagresConsultModel.php index 1118f148f..8694e4613 100644 --- a/app/modules/sagres/models/SagresConsultModel.php +++ b/app/modules/sagres/models/SagresConsultModel.php @@ -561,21 +561,39 @@ public function getSchedules($classId, $month, $inepId) $schedules = Yii::app()->db->createCommand($query)->bindValues($params)->queryAll(); - $class = (object) \Classroom::model()->findByAttributes(array('id' => $classId)); + - if(empty($schedules)) { + $getTeachersForClass = $this->getTeachersForClass($classId); + if(empty($getTeachersForClass)) { $inconsistencyModel = new ValidationSagresModel(); - $inconsistencyModel->enrollment = 'HORÁRIO'; + $inconsistencyModel->enrollment = TURMA_STRONG; $inconsistencyModel->school = $school->name; - $inconsistencyModel->description = 'Não há um quadro de horários para a turma: ' . $class->name . ''; - $inconsistencyModel->action = 'Adicione um quadro de horários para turma'; + $inconsistencyModel->description = 'Não há professores registrados para a turma: ' . $class->name . ''; + $inconsistencyModel->action = 'Adicione os professores juntamente com os seus componentes curriculares'; $inconsistencyModel->identifier = '10'; $inconsistencyModel->idClass = $classId; $inconsistencyModel->idSchool = $inepId; $inconsistencyModel->insert(); } + if(!empty($getTeachersForClass)) { + foreach($getTeachersForClass as $teachers) { + $componentesCurriculares = $this->getComponentesCurriculares($classId, $teachers['instructor_fk']); + if(empty($componentesCurriculares)){ + $inconsistencyModel = new ValidationSagresModel(); + $inconsistencyModel->enrollment = TURMA_STRONG; + $inconsistencyModel->school = $school->name; + $inconsistencyModel->description = 'O professor ' . $teachers['name'] . ' está sem seus componentes curriculares para a turma: ' . $class->name . ''; + $inconsistencyModel->action = 'Adicione os componentes curriculares para o professor: ' . $teachers['name'] . ''; + $inconsistencyModel->identifier = '10'; + $inconsistencyModel->idClass = $classId; + $inconsistencyModel->idSchool = $inepId; + $inconsistencyModel->insert(); + } + } + } + foreach ($schedules as $schedule) { $scheduleType = new HorarioTType(); @@ -682,7 +700,43 @@ public function getSchedules($classId, $month, $inepId) return $scheduleList; } + private function getComponentesCurriculares($classId, $instructorId) { + $query = "SELECT + * + FROM instructor_teaching_data itd + JOIN teaching_matrixes tm on itd.id = tm.teaching_data_fk + JOIN curricular_matrix cm on tm.curricular_matrix_fk = cm.id + JOIN classroom c on c.id = itd.classroom_id_fk + WHERE + c.id = :classId and + itd.instructor_fk = :instructorId + ORDER BY + c.create_date DESC;"; + $params = [ + ':classId' => $classId, + ':instructorId' => $instructorId + ]; + + return Yii::app()->db->createCommand($query)->bindValues($params)->queryAll(); + } + private function getTeachersForClass($classId) { + $query = "SELECT itd.instructor_fk, ii.name + FROM instructor_teaching_data itd + JOIN instructor_identification ii ON ii.id = itd.instructor_fk + JOIN classroom c ON c.id = itd.classroom_id_fk + WHERE + c.id = :classId + ORDER BY + c.create_date DESC;"; + $params = [ + ':classId' => $classId + ]; + + return Yii::app()->db->createCommand($query)->bindValues($params)->queryAll(); + } + + /** * Calculates the start time for a given schedule and initial hour. * @@ -1061,7 +1115,7 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'ESTUDANTE'; $inconsistencyModel->school = $school->name; - $inconsistencyModel->description = 'Cpf do estudante é inválido'; + $inconsistencyModel->description = 'Cpf do estudante é inválido: ' . $cpf . ''; $inconsistencyModel->action = 'Informe um cpf válido para o estudante: ' . $enrollment['name'] . ''; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; @@ -1085,7 +1139,7 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'ESTUDANTE'; $inconsistencyModel->school = $school->name; - $inconsistencyModel->description = 'Data no formato inválido: ' . $enrollment['birthdate']; + $inconsistencyModel->description = 'Data no formato inválido: ' . $enrollment['birthdate'] . ''; $inconsistencyModel->action = 'Adicione uma data no formato válido'; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; @@ -1237,7 +1291,7 @@ public function getEnrollments($classId, $referenceYear, $month, $finalClass, $i $inconsistencyModel = new ValidationSagresModel(); $inconsistencyModel->enrollment = 'ESTUDANTE'; $inconsistencyModel->school = $school->name; - $inconsistencyModel->description = 'Cpf do estudante é inválido'; + $inconsistencyModel->description = 'Cpf do estudante é inválido: ' . $cpf . ''; $inconsistencyModel->action = 'Informe um cpf válido para o estudante: ' . $enrollment['name'] . ''; $inconsistencyModel->identifier = '9'; $inconsistencyModel->idStudent = $enrollment['student_fk']; @@ -1535,7 +1589,7 @@ public function validateDate($date, $format = 'Y-m-d') } $d = DateTime::createFromFormat($format, $dat); - if (intval($d->format('Y')) <= 1900) + if (intval($d->format('Y')) <= 1924) return false; return $d && $d->format($format) == $dat; diff --git a/config.php b/config.php index e113f2bb1..c45d3df2b 100644 --- a/config.php +++ b/config.php @@ -4,7 +4,7 @@ $debug = getenv("YII_DEBUG"); defined('YII_DEBUG') or define('YII_DEBUG', $debug); -define("TAG_VERSION", '3.77.134'); +define("TAG_VERSION", '3.77.135'); define("YII_VERSION", Yii::getVersion());