Commit a88d67fd325a954fa3c7b7b0268f4188f9d153c6
1 parent
31274e05
Exists in
master
and in
21 other branches
Correção no e-mail e adaptação nas chamadas do serviço de consultar trâmite, pre…
…sentes no cancelamento do processo
Showing
3 changed files
with
97 additions
and
50 deletions
Show diff stats
dto/TramiteDTO.php
@@ -18,11 +18,13 @@ class TramiteDTO extends InfraDTO { | @@ -18,11 +18,13 @@ class TramiteDTO extends InfraDTO { | ||
18 | 18 | ||
19 | $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUsuario', 'nome', 'usuario'); | 19 | $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUsuario', 'nome', 'usuario'); |
20 | $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUnidade', 'nome', 'unidade'); | 20 | $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUnidade', 'nome', 'unidade'); |
21 | + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdProcedimento', 'id_procedimento', 'md_pen_processo_eletronico'); | ||
21 | 22 | ||
22 | $this->configurarPK('NumeroRegistro', InfraDTO::$TIPO_PK_INFORMADO); | 23 | $this->configurarPK('NumeroRegistro', InfraDTO::$TIPO_PK_INFORMADO); |
23 | $this->configurarPK('IdTramite', InfraDTO::$TIPO_PK_INFORMADO); | 24 | $this->configurarPK('IdTramite', InfraDTO::$TIPO_PK_INFORMADO); |
24 | 25 | ||
25 | $this->configurarFK('NumeroRegistro', 'md_pen_tramite', 'numero_registro', InfraDTO::$TIPO_FK_OBRIGATORIA); | 26 | $this->configurarFK('NumeroRegistro', 'md_pen_tramite', 'numero_registro', InfraDTO::$TIPO_FK_OBRIGATORIA); |
27 | + $this->configurarFK('NumeroRegistro', 'md_pen_processo_eletronico pe', 'pe.numero_registro'); | ||
26 | $this->configurarFK('IdUsuario', 'usuario u', 'u.id_usuario'); | 28 | $this->configurarFK('IdUsuario', 'usuario u', 'u.id_usuario'); |
27 | $this->configurarFK('IdUnidade', 'unidade u', 'u.id_unidade'); | 29 | $this->configurarFK('IdUnidade', 'unidade u', 'u.id_unidade'); |
28 | } | 30 | } |
rn/ExpedirProcedimentoRN.php
@@ -1016,7 +1016,7 @@ class ExpedirProcedimentoRN extends InfraRN { | @@ -1016,7 +1016,7 @@ class ExpedirProcedimentoRN extends InfraRN { | ||
1016 | $idSerieEmail = $objInfraParametro->getValor('ID_SERIE_EMAIL'); | 1016 | $idSerieEmail = $objInfraParametro->getValor('ID_SERIE_EMAIL'); |
1017 | $docEmailEnviado = $objDocumentoDTO->getNumIdSerie() == $idSerieEmail && $objDocumentoDTO->getStrStaDocumento() == DocumentoRN::$TD_FORMULARIO_AUTOMATICO ? true : false; | 1017 | $docEmailEnviado = $objDocumentoDTO->getNumIdSerie() == $idSerieEmail && $objDocumentoDTO->getStrStaDocumento() == DocumentoRN::$TD_FORMULARIO_AUTOMATICO ? true : false; |
1018 | 1018 | ||
1019 | - if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_GERADO && !$docEmailEnviado) { | 1019 | + if($objDocumentoDTO->getStrStaDocumento() == DocumentoRN::$TD_EDITOR_INTERNO) { |
1020 | 1020 | ||
1021 | $objEditorDTO = new EditorDTO(); | 1021 | $objEditorDTO = new EditorDTO(); |
1022 | $objEditorDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); | 1022 | $objEditorDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); |
@@ -1036,8 +1036,8 @@ class ExpedirProcedimentoRN extends InfraRN { | @@ -1036,8 +1036,8 @@ class ExpedirProcedimentoRN extends InfraRN { | ||
1036 | $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; | 1036 | $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; |
1037 | $arrInformacaoArquivo['ID_ANEXO'] = null; | 1037 | $arrInformacaoArquivo['ID_ANEXO'] = null; |
1038 | 1038 | ||
1039 | - } else if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO || $docEmailEnviado) { | ||
1040 | - | 1039 | + } else if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO) { |
1040 | + | ||
1041 | $objAnexoDTO = $this->consultarAnexo($objDocumentoDTO->getDblIdDocumento()); | 1041 | $objAnexoDTO = $this->consultarAnexo($objDocumentoDTO->getDblIdDocumento()); |
1042 | 1042 | ||
1043 | if(!isset($objAnexoDTO)){ | 1043 | if(!isset($objAnexoDTO)){ |
@@ -1086,8 +1086,23 @@ class ExpedirProcedimentoRN extends InfraRN { | @@ -1086,8 +1086,23 @@ class ExpedirProcedimentoRN extends InfraRN { | ||
1086 | $arrInformacaoArquivo['ID_ANEXO'] = $objAnexoDTO->getNumIdAnexo(); | 1086 | $arrInformacaoArquivo['ID_ANEXO'] = $objAnexoDTO->getNumIdAnexo(); |
1087 | $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = $strDadosComplementaresDoTipoDeArquivo; | 1087 | $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = $strDadosComplementaresDoTipoDeArquivo; |
1088 | 1088 | ||
1089 | - } else { | ||
1090 | - throw new InfraException('Procedência do documento inválida.'); | 1089 | + } |
1090 | + else { | ||
1091 | + | ||
1092 | + $objDocumentoDTO2 = new DocumentoDTO(); | ||
1093 | + $objDocumentoDTO2->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); | ||
1094 | + $objDocumentoDTO2->setObjInfraSessao(SessaoSEI::getInstance()); | ||
1095 | + $objDocumentoDTO2->setStrLinkDownload('controlador.php?acao=documento_download_anexo'); | ||
1096 | + | ||
1097 | + $objDocumentoRN = new DocumentoRN(); | ||
1098 | + $strResultado = $objDocumentoRN->consultarHtmlFormulario($objDocumentoDTO2); | ||
1099 | + | ||
1100 | + $arrInformacaoArquivo['NOME'] = $strProtocoloDocumentoFormatado . ".html"; | ||
1101 | + $arrInformacaoArquivo['CONTEUDO'] = $strResultado; | ||
1102 | + $arrInformacaoArquivo['TAMANHO'] = strlen($strResultado); | ||
1103 | + $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; | ||
1104 | + $arrInformacaoArquivo['ID_ANEXO'] = null; | ||
1105 | + | ||
1091 | } | 1106 | } |
1092 | 1107 | ||
1093 | return $arrInformacaoArquivo; | 1108 | return $arrInformacaoArquivo; |
@@ -2043,11 +2058,38 @@ class ExpedirProcedimentoRN extends InfraRN { | @@ -2043,11 +2058,38 @@ class ExpedirProcedimentoRN extends InfraRN { | ||
2043 | 2058 | ||
2044 | protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocolo) { | 2059 | protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocolo) { |
2045 | 2060 | ||
2061 | + //Obtem o id_rh que representa a unidade no barramento | ||
2062 | + $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); | ||
2063 | + $numIdRespositorio = $objInfraParametro->getValor('PEN_ID_REPOSITORIO_ORIGEM'); | ||
2064 | + | ||
2065 | + //Obtem os dados da unidade | ||
2066 | + $objPenUnidadeDTO = new PenUnidadeDTO(); | ||
2067 | + $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); | ||
2068 | + $objPenUnidadeDTO->retNumIdUnidadeRH(); | ||
2069 | + | ||
2070 | + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); | ||
2071 | + $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); | ||
2072 | + | ||
2073 | + $objTramiteDTO = new TramiteDTO(); | ||
2074 | + $objTramiteDTO->setNumIdProcedimento($objDtoProtocolo->retDblIdProtocolo()); | ||
2075 | + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); | ||
2076 | + $objTramiteDTO->setNumMaxRegistrosRetorno(1); | ||
2077 | + $objTramiteDTO->retNumIdTramite(); | ||
2078 | + | ||
2079 | + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); | ||
2080 | + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); | ||
2081 | + | ||
2082 | + if(!$arrObjTramiteDTO){ | ||
2083 | + return false; | ||
2084 | + } | ||
2085 | + | ||
2086 | + $objTramiteDTO = $arrObjTramiteDTO[0]; | ||
2087 | + | ||
2046 | //Armazena o id do protocolo | 2088 | //Armazena o id do protocolo |
2047 | $dblIdProcedimento = $objDtoProtocolo->getDblIdProtocolo(); | 2089 | $dblIdProcedimento = $objDtoProtocolo->getDblIdProtocolo(); |
2048 | 2090 | ||
2049 | - $tramites = $this->objProcessoEletronicoRN->consultarTramitesProtocolo($objDtoProtocolo->getStrProtocoloFormatado()); | ||
2050 | - $tramite = $tramites ? array_pop($tramites) : null; | 2091 | + $tramites = $this->objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, $objPenUnidadeDTO->getNumIdUnidadeRH(), null, null, $numIdRespositorio); |
2092 | + $tramite = $tramites ? $tramites[0] : null; | ||
2051 | 2093 | ||
2052 | if (!$tramite) { | 2094 | if (!$tramite) { |
2053 | throw new InfraException('Trâmite não encontrado para esse processo. '); | 2095 | throw new InfraException('Trâmite não encontrado para esse processo. '); |
rn/ProcessoEletronicoRN.php
@@ -861,46 +861,7 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -861,46 +861,7 @@ class ProcessoEletronicoRN extends InfraRN { | ||
861 | } | 861 | } |
862 | } | 862 | } |
863 | 863 | ||
864 | - /** | ||
865 | - * Consulta os tramites recusados | ||
866 | - * | ||
867 | - * @return array | ||
868 | - */ | ||
869 | - public function consultarTramitesRecusados($parNumIdRespositorio, $parNumIdEstrutura) { | ||
870 | - try { | ||
871 | - | ||
872 | - $parametro = (object)array( | ||
873 | - 'filtroDeConsultaDeTramites' => (object)array( | ||
874 | - 'situacaoAtual' => 9, | ||
875 | - 'remetente' => (object)array( | ||
876 | - 'identificacaoDoRepositorioDeEstruturas' => $parNumIdRespositorio, | ||
877 | - 'numeroDeIdentificacaoDaEstrutura' => $parNumIdEstrutura | ||
878 | - ) | ||
879 | - ) | ||
880 | - ); | ||
881 | - | ||
882 | - $objTramitesEncontrados = $this->getObjPenWs()->consultarTramites($parametro); | ||
883 | - | ||
884 | - $arrObjTramite = array(); | ||
885 | - | ||
886 | - if (isset($objTramitesEncontrados->tramitesEncontrados)) { | ||
887 | - | ||
888 | - $arrObjTramite = $objTramitesEncontrados->tramitesEncontrados->tramite; | ||
889 | - | ||
890 | - if(!is_array($arrObjTramite)) { | ||
891 | - $arrObjTramite = array($objTramitesEncontrados->tramitesEncontrados->tramite); | ||
892 | - } | ||
893 | - } | ||
894 | - | ||
895 | - return $arrObjTramite; | ||
896 | - } | ||
897 | - catch (\SoapFault $fault) { | ||
898 | - throw new InfraException(InfraString::formatarJavaScript($this->tratarFalhaWebService($fault)), $fault); | ||
899 | - } | ||
900 | - catch (\Exception $e) { | ||
901 | - throw new InfraException("Error Processing Request", $e); | ||
902 | - } | ||
903 | - } | 864 | + |
904 | 865 | ||
905 | public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = null, $parNumeroUnidadeRemetente = null, $parNumeroUnidadeDestino = null, $parProtocolo = null, $parNumeroRepositorioEstruturas = null) | 866 | public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = null, $parNumeroUnidadeRemetente = null, $parNumeroUnidadeDestino = null, $parProtocolo = null, $parNumeroRepositorioEstruturas = null) |
906 | { | 867 | { |
@@ -916,11 +877,13 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -916,11 +877,13 @@ class ProcessoEletronicoRN extends InfraRN { | ||
916 | } | 877 | } |
917 | 878 | ||
918 | if(!is_null($parNumeroUnidadeRemetente) && !is_null($parNumeroRepositorioEstruturas)){ | 879 | if(!is_null($parNumeroUnidadeRemetente) && !is_null($parNumeroRepositorioEstruturas)){ |
880 | + $parametro->filtroDeConsultaDeTramites->remetente = new stdClass(); | ||
919 | $parametro->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; | 881 | $parametro->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; |
920 | $parametro->filtroDeConsultaDeTramites->remetente->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeRemetente; | 882 | $parametro->filtroDeConsultaDeTramites->remetente->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeRemetente; |
921 | } | 883 | } |
922 | 884 | ||
923 | if(!is_null($parNumeroUnidadeDestino) && !is_null($parNumeroRepositorioEstruturas)){ | 885 | if(!is_null($parNumeroUnidadeDestino) && !is_null($parNumeroRepositorioEstruturas)){ |
886 | + $parametro->filtroDeConsultaDeTramites->destinatario = new stdClass(); | ||
924 | $parametro->filtroDeConsultaDeTramites->destinatario->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; | 887 | $parametro->filtroDeConsultaDeTramites->destinatario->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; |
925 | $parametro->filtroDeConsultaDeTramites->destinatario->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeDestino; | 888 | $parametro->filtroDeConsultaDeTramites->destinatario->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeDestino; |
926 | } | 889 | } |
@@ -1027,9 +990,24 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -1027,9 +990,24 @@ class ProcessoEletronicoRN extends InfraRN { | ||
1027 | throw new InfraException(utf8_encode('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"')); | 990 | throw new InfraException(utf8_encode('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"')); |
1028 | } | 991 | } |
1029 | 992 | ||
993 | + $objTramiteDTO = new TramiteDTO(); | ||
994 | + $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); | ||
995 | + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); | ||
996 | + $objTramiteDTO->setNumMaxRegistrosRetorno(1); | ||
997 | + $objTramiteDTO->retNumIdTramite(); | ||
998 | + | ||
999 | + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); | ||
1000 | + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); | ||
1001 | + | ||
1002 | + if(!$arrObjTramiteDTO){ | ||
1003 | + throw new InfraException('Trâmite não encontrado'); | ||
1004 | + } | ||
1005 | + | ||
1006 | + $objTramiteDTO = $arrObjTramiteDTO[0]; | ||
1007 | + | ||
1030 | $objFiltro = new stdClass(); | 1008 | $objFiltro = new stdClass(); |
1031 | $objFiltro->filtroDeConsultaDeTramites = new stdClass(); | 1009 | $objFiltro->filtroDeConsultaDeTramites = new stdClass(); |
1032 | - $objFiltro->filtroDeConsultaDeTramites->protocolo = $objProtocoloDTO->getStrProtocoloFormatado(); | 1010 | + $objFiltro->filtroDeConsultaDeTramites->IDT = $objTramiteDTO->getNumIdTramite(); |
1033 | 1011 | ||
1034 | $objResultado = $this->getObjPenWs()->consultarTramites($objFiltro); | 1012 | $objResultado = $this->getObjPenWs()->consultarTramites($objFiltro); |
1035 | 1013 | ||
@@ -1392,9 +1370,11 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -1392,9 +1370,11 @@ class ProcessoEletronicoRN extends InfraRN { | ||
1392 | 1370 | ||
1393 | public function isDisponivelCancelarTramite($strProtocolo = ''){ | 1371 | public function isDisponivelCancelarTramite($strProtocolo = ''){ |
1394 | 1372 | ||
1373 | + //Obtem o id_rh que representa a unidade no barramento | ||
1395 | $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); | 1374 | $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); |
1396 | $numIdRespositorio = $objInfraParametro->getValor('PEN_ID_REPOSITORIO_ORIGEM'); | 1375 | $numIdRespositorio = $objInfraParametro->getValor('PEN_ID_REPOSITORIO_ORIGEM'); |
1397 | 1376 | ||
1377 | + //Obtem os dados da unidade | ||
1398 | $objPenUnidadeDTO = new PenUnidadeDTO(); | 1378 | $objPenUnidadeDTO = new PenUnidadeDTO(); |
1399 | $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); | 1379 | $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); |
1400 | $objPenUnidadeDTO->retNumIdUnidadeRH(); | 1380 | $objPenUnidadeDTO->retNumIdUnidadeRH(); |
@@ -1402,15 +1382,38 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -1402,15 +1382,38 @@ class ProcessoEletronicoRN extends InfraRN { | ||
1402 | $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); | 1382 | $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); |
1403 | $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); | 1383 | $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); |
1404 | 1384 | ||
1385 | + //Obtem os dados do último trâmite desse processo no barramento | ||
1386 | + $objProtocoloDTO = new ProtocoloDTO(); | ||
1387 | + $objProtocoloDTO->setStrProtocoloFormatado($strProtocolo); | ||
1388 | + $objProtocoloDTO->retDblIdProtocolo(); | ||
1389 | + | ||
1390 | + $objProtocoloRN = new ProtocoloRN(); | ||
1391 | + $objProtocoloDTO = $objProtocoloRN->consultarRN0186($objProtocoloDTO); | ||
1392 | + | ||
1393 | + $objTramiteDTO = new TramiteDTO(); | ||
1394 | + $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); | ||
1395 | + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); | ||
1396 | + $objTramiteDTO->setNumMaxRegistrosRetorno(1); | ||
1397 | + $objTramiteDTO->retNumIdTramite(); | ||
1398 | + | ||
1399 | + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); | ||
1400 | + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); | ||
1401 | + | ||
1402 | + if(!$arrObjTramiteDTO){ | ||
1403 | + return false; | ||
1404 | + } | ||
1405 | + | ||
1406 | + $objTramiteDTO = $arrObjTramiteDTO[0]; | ||
1407 | + | ||
1405 | try { | 1408 | try { |
1406 | 1409 | ||
1407 | $parametro = (object)array( | 1410 | $parametro = (object)array( |
1408 | 'filtroDeConsultaDeTramites' => (object)array( | 1411 | 'filtroDeConsultaDeTramites' => (object)array( |
1412 | + 'IDT' => $objTramiteDTO->getNumIdTramite(), | ||
1409 | 'remetente' => (object)array( | 1413 | 'remetente' => (object)array( |
1410 | 'identificacaoDoRepositorioDeEstruturas' => $numIdRespositorio, | 1414 | 'identificacaoDoRepositorioDeEstruturas' => $numIdRespositorio, |
1411 | 'numeroDeIdentificacaoDaEstrutura' => $objPenUnidadeDTO->getNumIdUnidadeRH() | 1415 | 'numeroDeIdentificacaoDaEstrutura' => $objPenUnidadeDTO->getNumIdUnidadeRH() |
1412 | ), | 1416 | ), |
1413 | - 'protocolo' => $strProtocolo | ||
1414 | ) | 1417 | ) |
1415 | ); | 1418 | ); |
1416 | 1419 | ||
@@ -1422,7 +1425,7 @@ class ProcessoEletronicoRN extends InfraRN { | @@ -1422,7 +1425,7 @@ class ProcessoEletronicoRN extends InfraRN { | ||
1422 | 1425 | ||
1423 | $arrObjMetaTramite = !is_array($objMeta->tramitesEncontrados->tramite) ? array($objMeta->tramitesEncontrados->tramite) : $objMeta->tramitesEncontrados->tramite; | 1426 | $arrObjMetaTramite = !is_array($objMeta->tramitesEncontrados->tramite) ? array($objMeta->tramitesEncontrados->tramite) : $objMeta->tramitesEncontrados->tramite; |
1424 | 1427 | ||
1425 | - $objMetaTramite = array_pop($arrObjMetaTramite); | 1428 | + $objMetaTramite = $arrObjMetaTramite[0]; |
1426 | 1429 | ||
1427 | switch($objMetaTramite->situacaoAtual){ | 1430 | switch($objMetaTramite->situacaoAtual){ |
1428 | 1431 |