diff --git a/app/assets/css/style.css b/app/assets/css/style.css index ed75fd4..b0b599d 100644 --- a/app/assets/css/style.css +++ b/app/assets/css/style.css @@ -15019,4 +15019,8 @@ padding-right: 0px; display: inline-flex !important; align-items: center; justify-content: center; +} + +.fs-7 { + font-size: 0.85rem !important; } \ No newline at end of file diff --git a/app/components/barra_visualizacoes.php b/app/components/barra_visualizacoes.php index 0625785..e7d3f74 100644 --- a/app/components/barra_visualizacoes.php +++ b/app/components/barra_visualizacoes.php @@ -6,11 +6,16 @@ "nome" => "visualizacao_codigo", "label" => "Visualização", "objeto" => "visualizacao", - "sem_valor" => true, + "sem_valor" => false, + "atributo_obrigatorio" => true, "dependencia" => [ [ "campo" => "recurso_sistema_codigo", "atributo" => "visualizacao_recurso_sistema_codigo" + ], + [ + "campo" => "visualizacao_contexto_visualizacao_codigo", + "atributo" => "visualizacao_contexto_visualizacao_codigo" ] ], "filtro" => [ @@ -31,6 +36,11 @@ $va_valores["recurso_sistema_id"] = $vs_id_objeto_tela; $va_valores["recurso_sistema_codigo"] = $vn_recurso_sistema_codigo; + if ($vs_modo == "listagem") + $va_valores["visualizacao_contexto_visualizacao_codigo"] = 3; + elseif ($vs_modo == "ficha") + $va_valores["visualizacao_contexto_visualizacao_codigo"] = 4; + $vo_combo_visualizacoes->build($va_valores, $va_parametros_campo); ?> diff --git a/app/components/campo_representantes_digitais.php b/app/components/campo_representantes_digitais.php index 267d090..7c93842 100755 --- a/app/components/campo_representantes_digitais.php +++ b/app/components/campo_representantes_digitais.php @@ -138,7 +138,12 @@ $vs_rp_legenda = $va_valores_linha["representante_digital_legenda"] ?? ""; $vs_rd_formato = $va_valores_linha["representante_digital_formato"] ?? ""; - $vs_download_link = "functions/serve_file.php?file=" . $vs_rd_path . "&size=original&download=1&name=" . $vs_label_objeto . "-" . $vn_numero_campo; + $vs_file_extension = isset($va_valores_linha["representante_digital_nome_original"]) ? strtolower(pathinfo($va_valores_linha["representante_digital_nome_original"], PATHINFO_EXTENSION)) : strtolower(pathinfo($vs_rd_path, PATHINFO_EXTENSION)); + $vs_file_hash = pathinfo($vs_rd_path, PATHINFO_FILENAME); + + $vs_download_file = $vs_file_hash . "." . $vs_file_extension; + + $vs_download_link = "functions/serve_file.php?file=" . $vs_download_file . "&size=original&download=1&name=" . $vs_label_objeto . "-" . $vn_numero_campo; // if ($pa_parametros_campo["tipo"] == 2) // $vs_download_link .= "&folder=documents"; diff --git a/app/components/dashboard_estatisticas.php b/app/components/dashboard_estatisticas.php index d436c4c..c87657b 100644 --- a/app/components/dashboard_estatisticas.php +++ b/app/components/dashboard_estatisticas.php @@ -29,7 +29,7 @@
&s="> -
itens
+
diff --git a/app/components/dashboard_resultado_busca.php b/app/components/dashboard_resultado_busca.php index 37bec52..70f2e8e 100644 --- a/app/components/dashboard_resultado_busca.php +++ b/app/components/dashboard_resultado_busca.php @@ -14,13 +14,37 @@ $va_parametros_filtros_consulta[$vo_dashboard->get_filtro_busca_geral($vs_id_objeto_tela)] = [$vs_termo_busca, "LIKE"]; $vs_formato_listagem = "default"; + require dirname(__FILE__) . "/../functions/montar_listagem.php"; $va_itens_listagem = $va_itens_listagem ?? []; - if ($vb_busca_id && count($va_itens_listagem)) + if ($vb_busca_id && count($va_itens_listagem) != 0) { - print ''; + $vs_identifier_attribute = $vo_objeto->tem_atributo("item_acervo_identificador_sort") ? "item_acervo_identificador_sort" : "item_acervo_identificador"; + + $vn_objeto_codigo = $va_itens_listagem[0][$vo_objeto->get_chave_primaria()[0]]; + $vs_current_object_identifier = $va_itens_listagem[0][$vs_identifier_attribute]; + + $vn_numero_registros = $vo_objeto->ler_numero_registros([]); + $vn_numero_paginas = ceil($vo_objeto->ler_numero_registros([]) / 20); + $vn_middle_page = ($vn_numero_paginas > 1) ? floor($vn_numero_paginas / 2) : 1; + + list($vn_pagina_atual, $va_codigos_listagem) = $vo_objeto->encontrar_pagina_item_acervo($vs_current_object_identifier, $vs_identifier_attribute, $vn_middle_page, 1, $vn_numero_paginas); + + $vn_primeiro_registro = ($vn_pagina_atual - 1)*20 + 1; + $vn_ultimo_registro = $vn_primeiro_registro + 19; + + if ($vn_ultimo_registro > $vn_numero_registros) + $vn_ultimo_registro = $vn_numero_registros; + + //$_SESSION[$vs_id_objeto_tela]["numero_registros"] = count($va_lista_objetos); + $_SESSION[$vs_id_objeto_tela]["numero_registros"] = $vn_numero_registros; + $_SESSION[$vs_id_objeto_tela]['campo_paginacao'] = 'paginacao_top'; + $_SESSION[$vs_id_objeto_tela]['paginacao_top'] = $vn_pagina_atual; + $_SESSION[$vs_id_objeto_tela]["listagem_codigos"] = $va_codigos_listagem; + + print ''; } if (count($va_itens_listagem)) diff --git a/app/components/ler_valor.php b/app/components/ler_valor.php index 0b7cf95..316158b 100644 --- a/app/components/ler_valor.php +++ b/app/components/ler_valor.php @@ -14,6 +14,11 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it return ""; } + if (isset($pa_item[$ps_atributo]) && isset($pa_opcoes_campo["valores"])) + { + return $pa_opcoes_campo["valores"][$pa_item[$ps_atributo]] ?? ""; + } + if (isset($pa_opcoes_campo["formato"]["data"])) { $vo_data = new Periodo; @@ -34,6 +39,9 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it if (isset($pa_item[$ps_atributo . "_sem_data"])) $vo_data->set_sem_data($pa_item[$ps_atributo . "_sem_data"]); + if (isset($pa_item[$ps_atributo . "_periodo"])) + $vo_data->set_complemento($pa_item[$ps_atributo . "_periodo"]); + if ($pa_opcoes_campo["formato"]["data"] == "ano") $va_data = $vo_data->get_data_exibicao(); diff --git a/app/editar.php b/app/editar.php index ec48203..b87b209 100644 --- a/app/editar.php +++ b/app/editar.php @@ -145,11 +145,24 @@ $vn_pagina_atual = 1; if (isset($_SESSION[$vs_id_objeto_tela]["campo_paginacao"]) && isset($_SESSION[$vs_id_objeto_tela][$_SESSION[$vs_id_objeto_tela]["campo_paginacao"]])) - $vn_pagina_atual = $_SESSION[$vs_id_objeto_tela][$_SESSION[$vs_id_objeto_tela]["campo_paginacao"]]; + $vn_pagina_atual = $_SESSION[$vs_id_objeto_tela][$_SESSION[$vs_id_objeto_tela]["campo_paginacao"]] ; + elseif (isset($_SESSION[$vs_id_objeto_tela]["campo_paginacao"]) && ($_SESSION[$vs_id_objeto_tela]["campo_paginacao"])) + { + $vn_pagina_atual = $_SESSION[$vs_id_objeto_tela]["campo_paginacao"]; + } else $_SESSION[$vs_id_objeto_tela]["campo_paginacao"] = "paginacao_topo"; - if (in_array($vn_objeto_codigo, ["p", "n", "f", "l"])) +// p = previous +// n = next +// f = first +// l = last + + + $vb_sincronizar = isset($_SESSION[$vs_id_objeto_tela]["sincronizar"]); + + + if (in_array($vn_objeto_codigo, ["p", "n", "f", "l"]) || isset($vb_sincronizar)) { if ( ($vn_objeto_codigo == "p") && ($vn_pagina_atual > 1) ) $vn_pagina_atual = $vn_pagina_atual - 1; @@ -171,9 +184,11 @@ $vb_usar_parametros_sessao = true; $vs_modo = "listagem"; - + + require dirname(__FILE__)."/functions/montar_listagem.php"; + $vs_modo = "edicao"; // A listagem_codigos só é atualizada após a chamada para /montar_listagem.php diff --git a/app/ficha.php b/app/ficha.php index 580c163..91d1e88 100644 --- a/app/ficha.php +++ b/app/ficha.php @@ -40,7 +40,10 @@ if (isset($_GET['visualizacao_codigo'])) $vs_visualizacao = $_GET['visualizacao_codigo']; else + { $vs_visualizacao = "ficha"; + $vn_contexto_visualizacao = 4; + } $va_registros_filhos = array(); diff --git a/app/functions/download.php b/app/functions/download.php index 7650a90..51b5af5 100644 --- a/app/functions/download.php +++ b/app/functions/download.php @@ -55,11 +55,9 @@ foreach ($va_files as $va_rd) { $ps_size = 'original'; - if ($va_rd['representante_digital_formato'] != "pdf") - { - $ps_size = 'large'; - } - $vs_file_path = get_file_path($va_rd['representante_digital_path'], $ps_size); + + $vs_file_path = get_file_path($va_rd['representante_digital_path'], $ps_size, null, $va_rd['representante_digital_nome_original']); + if (file_exists($vs_file_path)) { $zip->addFile($vs_file_path, $vs_identificador . "-$counter." . pathinfo($vs_file_path, PATHINFO_EXTENSION)); diff --git a/app/functions/file_handler.php b/app/functions/file_handler.php index cd77dab..7d8cedf 100644 --- a/app/functions/file_handler.php +++ b/app/functions/file_handler.php @@ -1,6 +1,6 @@ +
+

+ + +

+
+ '; + } } if (!$vb_atualizacao_campo && ($vs_modo != "listagem") && isset($va_aba["campos"]) && count($va_aba["campos"])) @@ -209,4 +230,10 @@ $contador++; } -?> \ No newline at end of file +?> + + diff --git a/app/functions/montar_listagem.php b/app/functions/montar_listagem.php index 3e49395..1b47502 100644 --- a/app/functions/montar_listagem.php +++ b/app/functions/montar_listagem.php @@ -203,6 +203,7 @@ $vn_primeiro_registro = ($vn_pagina_atual -1)*NUMERO_ITENS_PAGINA_LISTAGEM + 1; $vn_numero_registros_lista = NUMERO_ITENS_PAGINA_LISTAGEM; } + else $vn_numero_registros_lista = $vn_numero_registros; @@ -217,8 +218,8 @@ $va_itens_listagem = $va_objetos_lista; } else - { - $va_visualizacao_lista = $vo_objeto->get_visualizacao($vs_visualizacao); + { + $va_visualizacao_lista = $vo_objeto->get_visualizacao($vs_visualizacao, ($vn_contexto_visualizacao ?? null)); if (isset($va_visualizacao_lista["ordem_campos"])) $va_campos_visualizacao = $va_visualizacao_lista["ordem_campos"]; @@ -276,13 +277,13 @@ } - if (isset($vs_label_campo_visualizacao["id_field"])) + if (!empty($vs_label_campo_visualizacao["id_field"])) $vb_id_field = true; - if (isset($vs_label_campo_visualizacao["main_field"])) + if (!empty($vs_label_campo_visualizacao["main_field"])) $vb_main_field = true; - if (isset($vs_label_campo_visualizacao["descriptive_field"])) + if (!empty($vs_label_campo_visualizacao["descriptive_field"])) $vb_descriptive_field = true; if (isset($vs_label_campo_visualizacao["label"])) diff --git a/app/listar.php b/app/listar.php index 964f695..a8c78c0 100755 --- a/app/listar.php +++ b/app/listar.php @@ -38,7 +38,10 @@ if (isset($_GET['visualizacao_codigo'])) $vs_visualizacao = $_GET['visualizacao_codigo']; else + { $vs_visualizacao = "navegacao"; + $vn_contexto_visualizacao = 3; + } $vb_back_from_editing = false; if (isset($_GET['back']) && $_GET['back']) diff --git a/config/constants.php b/config/constants.php index 6869aae..320c90b 100644 --- a/config/constants.php +++ b/config/constants.php @@ -69,10 +69,14 @@ "assets/custom/img/logo.png" : "assets/img/favicon.png", "media_types" => [ - "image/jpeg" => [ + "image/jpg" => [ "folder" => "images", "format" => "jpg" ], + "image/jpeg" => [ + "folder" => "images", + "format" => "jpeg" + ], "image/png" => [ "folder" => "images", "format" => "png" diff --git a/src/lib/html/html_date_input.php b/src/lib/html/html_date_input.php index e71fe6e..066a1c3 100755 --- a/src/lib/html/html_date_input.php +++ b/src/lib/html/html_date_input.php @@ -91,8 +91,8 @@ public function build(&$pa_valores_form=null, $pa_parametros_campo=array()) $vb_campo_preenchido = true; } - if (isset($pa_valores_form[$pa_parametros_campo["nome"] . "_presumido" . $vs_sufixo_nome_campo])) - $vb_presumido = $pa_valores_form[$pa_parametros_campo["nome"] . "_presumido" . $vs_sufixo_nome_campo]; + if (isset($pa_valores_form[$pa_parametros_campo["nome"] . "_presumido" . $vs_sufixo_nome_campo]) || isset($pa_valores_form[$pa_parametros_campo["nome"] . "_data_presumida" . $vs_sufixo_nome_campo])) + $vb_presumido = $pa_valores_form[$pa_parametros_campo["nome"] . "_presumido" . $vs_sufixo_nome_campo] ?? $pa_valores_form[$pa_parametros_campo["nome"] . "_data_presumida" . $vs_sufixo_nome_campo]; else $vb_presumido = 0; diff --git a/src/lib/system/objeto_base.php b/src/lib/system/objeto_base.php index 57d6120..92ff69a 100755 --- a/src/lib/system/objeto_base.php +++ b/src/lib/system/objeto_base.php @@ -218,6 +218,18 @@ public function get_atributos() return $this->inicializar_atributos(); } + public function tem_atributo($ps_atributo_id) + { + if (!isset($this->atributos[$ps_atributo_id]) && $this->objeto_pai) + { + $vo_objeto_pai = new $this->objeto_pai; + + return isset($vo_objeto_pai->atributos[$ps_atributo_id]); + } + + return isset($this->atributos[$ps_atributo_id]); + } + public function get_atributo_identificador() { foreach ($this->atributos as $va_atributo) @@ -361,13 +373,39 @@ public function get_registros_filhos() return $this->registros_filhos; } - public function get_visualizacao($ps_visualizacao) + public function get_visualizacao($ps_visualizacao, $pn_contexto_codigo = null) { - if (intval($ps_visualizacao) && !isset($this->visualizacoes[$ps_visualizacao])) { + if ($this->recurso_sistema_codigo && (isset($pn_contexto_codigo) ||!isset($this->visualizacoes[$ps_visualizacao])) ) + { + $va_filtro = array(); + + if (intval($ps_visualizacao)) + $va_filtro = ["visualizacao_codigo" => $ps_visualizacao]; + elseif (isset($pn_contexto_codigo)) + { + $va_filtro = ["visualizacao_recurso_sistema_codigo" => $this->recurso_sistema_codigo, "visualizacao_contexto_visualizacao_codigo" => $pn_contexto_codigo]; + $ps_visualizacao = $pn_contexto_codigo; + } + else + $va_filtro = ["visualizacao_recurso_sistema_codigo" => $this->recurso_sistema_codigo, "visualizacao_nome" => $ps_visualizacao]; + + $va_filtro["visualizacao_habilitado"] = 1; + $vo_visualizacao = new visualizacao; - $va_visualizacao = $vo_visualizacao->ler($ps_visualizacao, "ficha"); + $va_visualizacao = $vo_visualizacao->ler_lista($va_filtro, "ficha"); + + if (count($va_visualizacao)) + { + $va_visualizacao = $va_visualizacao[0]; + + if (!empty($va_visualizacao["visualizacao_incluir_representante_digital"])) + { + $this->visualizacoes[$ps_visualizacao]["campos"]["representante_digital_codigo"] = [ + "nome" => "representante_digital_codigo", + "formato" => ["campo" => "representante_digital_path"] + ]; + } - if (count($va_visualizacao)) { $this->visualizacoes[$ps_visualizacao]["campos"][$this->chave_primaria[0]] = $this->visualizacoes["ficha"]["campos"][$this->chave_primaria[0]]; if (isset($this->visualizacoes["navegacao"]["order_by"])) @@ -382,7 +420,13 @@ public function get_visualizacao($ps_visualizacao) if ($ps_key_campo_visualizacao == $va_campo_sistema_nome[0]) { $this->visualizacoes[$ps_visualizacao]["campos"][$ps_key_campo_visualizacao] = $va_campo_visualizacao; - $this->visualizacoes[$ps_visualizacao]["ordem_campos"][$va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_nome"]] = $va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_alias"]; + + $this->visualizacoes[$ps_visualizacao]["ordem_campos"][$va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_nome"]] = [ + "label" => $va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_alias"], + "main_field" => $this->visualizacoes["ficha"]["ordem_campos"][$va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_nome"]]["main_field"] ?? false, + "id_field" => $this->visualizacoes["ficha"]["ordem_campos"][$va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_nome"]]["id_field"] ?? false, + "descriptive_field" => $this->visualizacoes["ficha"]["ordem_campos"][$va_campo_sistema["visualizacao_campo_sistema_codigo"]["campo_sistema_nome"]]["descriptive_field"] ?? false + ]; } } @@ -400,7 +444,7 @@ public function get_visualizacao($ps_visualizacao) if (isset($this->visualizacoes[$ps_visualizacao])) return $this->visualizacoes[$ps_visualizacao]; - else + else return $this->visualizacoes["navegacao"]; } @@ -691,6 +735,8 @@ public function ler_numero_registros($pa_filtros_busca = null, $pa_log_info = nu $va_parametros_select = array(); $va_campos_select = array(); $va_joins_select = array(); + $va_tipos_parametros_joins = array(); + $va_parametros_joins = array(); $va_wheres_select = array(); $va_tabelas_adicionadas = array(); @@ -725,7 +771,7 @@ public function ler_numero_registros($pa_filtros_busca = null, $pa_log_info = nu } } - $this->montar_filtros_busca($va_filtros_busca, $vo_objeto, $va_joins_select, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select, $va_tabelas_adicionadas, $pb_retornar_ramos_inferiores); + $this->montar_filtros_busca($va_filtros_busca, $vo_objeto, $va_joins_select, $va_tipos_parametros_joins, $va_parametros_joins, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select, $va_tabelas_adicionadas, $pb_retornar_ramos_inferiores); $this->montar_parametros_log($pa_log_info, $vo_objeto, $va_joins_select, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select); @@ -741,7 +787,7 @@ public function ler_numero_registros($pa_filtros_busca = null, $pa_log_info = nu if (count($va_selects)) { - $va_resultado_temp = $vo_banco->consultar($va_selects, $va_tipos_parametros_select, $va_parametros_select, null, null, false); + $va_resultado_temp = $vo_banco->consultar($va_selects, array_merge($va_tipos_parametros_joins, $va_tipos_parametros_select), array_merge($va_parametros_joins, $va_parametros_select), null, null, false); foreach ($va_resultado_temp as $va_item) { foreach ($va_item as $vs_key => $vn_codigo) { @@ -892,7 +938,7 @@ private function montar_valores_busca($pa_parametro, &$pa_valores_busca = array( return $vb_tem_valor; } - private function montar_filtros_busca($pa_filtros_busca, $po_objeto, &$pa_joins_select = array(), &$pa_wheres_select = array(), &$pa_tipos_parametros_select = array(), &$pa_parametros_select = array(), &$pa_tabelas_adicionadas = array(), $pb_retornar_ramos_inferiores = true, &$pa_joins_trail = array(), $pn_primeiro_registro = 0, $pn_numero_registros = 0) + private function montar_filtros_busca($pa_filtros_busca, $po_objeto, &$pa_joins_select = array(), &$pa_tipos_parametros_joins = array(), &$pa_parametros_joins = array(), &$pa_wheres_select = array(), &$pa_tipos_parametros_select = array(), &$pa_parametros_select = array(), &$pa_tabelas_adicionadas = array(), $pb_retornar_ramos_inferiores = true, &$pa_joins_trail = array(), $pn_primeiro_registro = 0, $pn_numero_registros = 0) { if (isset($pa_filtros_busca)) { @@ -1054,7 +1100,7 @@ private function montar_filtros_busca($pa_filtros_busca, $po_objeto, &$pa_joins_ // O terceiro parâmetro vazio quer dizer que ainda não foi feito nenhum join para este filtro ///////////////////////////////////////////////////////////////////////////////////////////// - $this->montar_filtro_busca($va_filtro, $po_objeto, '', $va_valores_busca, $vs_operador, $vs_interrogacoes, $pa_joins_select, $pa_wheres_select, $pa_tipos_parametros_select, $pa_parametros_select, $pa_tabelas_adicionadas, $vs_operador_logico, $pb_retornar_ramos_inferiores, $pa_joins_trail, $pn_primeiro_registro, $pn_numero_registros); + $this->montar_filtro_busca($va_filtro, $po_objeto, '', $va_valores_busca, $vs_operador, $vs_interrogacoes, $pa_joins_select, $pa_tipos_parametros_joins, $pa_parametros_joins, $pa_wheres_select, $pa_tipos_parametros_select, $pa_parametros_select, $pa_tabelas_adicionadas, $vs_operador_logico, $pb_retornar_ramos_inferiores, $pa_joins_trail, $pn_primeiro_registro, $pn_numero_registros); } } } @@ -1062,7 +1108,7 @@ private function montar_filtros_busca($pa_filtros_busca, $po_objeto, &$pa_joins_ } } - private function montar_filtro_busca($pa_filtro, $po_objeto, $ps_ultima_tabela_filtro, $pa_valores_busca, $ps_operador, $ps_interrogacoes, &$pa_joins_select = array(), &$pa_wheres_select = array(), &$pa_tipos_parametros_select = array(), &$pa_parametros_select = array(), &$pa_tabelas_adicionadas = array(), $ps_operador_logico = 'AND', $pb_retornar_ramos_inferiores = true, &$pa_joins_trail = array(), $pn_primeiro_registro = 0, $pn_numero_registros = 0) + private function montar_filtro_busca($pa_filtro, $po_objeto, $ps_ultima_tabela_filtro, $pa_valores_busca, $ps_operador, $ps_interrogacoes, &$pa_joins_select = array(), &$pa_tipos_parametros_joins = array(), &$pa_parametros_joins = array(), &$pa_wheres_select = array(), &$pa_tipos_parametros_select = array(), &$pa_parametros_select = array(), &$pa_tabelas_adicionadas = array(), $ps_operador_logico = 'AND', $pb_retornar_ramos_inferiores = true, &$pa_joins_trail = array(), $pn_primeiro_registro = 0, $pn_numero_registros = 0) { // A partir daqui, vamos procurar o campo/atributo ao qual o filtro se refere //////////////////////////////////////////////////////////////////////////// @@ -1103,7 +1149,7 @@ private function montar_filtro_busca($pa_filtro, $po_objeto, $ps_ultima_tabela_f $vo_objeto_pai = new $po_objeto->objeto_pai($po_objeto->objeto_pai); - $this->montar_filtro_busca($va_novo_filtro, $vo_objeto_pai, $ps_ultima_tabela_filtro, $pa_valores_busca, $ps_operador, $ps_interrogacoes, $pa_joins_select, $pa_wheres_select, $pa_tipos_parametros_select, $pa_parametros_select, $pa_tabelas_adicionadas, $ps_operador_logico, $pb_retornar_ramos_inferiores, $pa_joins_trail); + $this->montar_filtro_busca($va_novo_filtro, $vo_objeto_pai, $ps_ultima_tabela_filtro, $pa_valores_busca, $ps_operador, $ps_interrogacoes, $pa_joins_select, $pa_tipos_parametros_joins, $pa_parametros_joins, $pa_wheres_select, $pa_tipos_parametros_select, $pa_parametros_select, $pa_tabelas_adicionadas, $ps_operador_logico, $pb_retornar_ramos_inferiores, $pa_joins_trail); } elseif (isset($po_objeto->atributos[$va_filtro[0]]) || isset($po_objeto->chave_primaria[$va_filtro[0]])) { @@ -1400,8 +1446,8 @@ private function montar_filtro_busca($pa_filtro, $po_objeto, $ps_ultima_tabela_f foreach ($va_valores_busca as $va_valor_busca) { - $pa_parametros_select[] = $va_valor_busca; - $pa_tipos_parametros_select[] = "i"; + $pa_parametros_joins[] = $va_valor_busca; + $pa_tipos_parametros_joins[] = "i"; } } } @@ -1435,7 +1481,7 @@ private function montar_filtro_busca($pa_filtro, $po_objeto, $ps_ultima_tabela_f } } - $this->montar_filtro_busca($va_novo_filtro, $vo_objeto_relacionamento, $vs_ultima_tabela_filtro, $pa_valores_busca, $ps_operador, $ps_interrogacoes, $pa_joins_select, $pa_wheres_select, $pa_tipos_parametros_select, $pa_parametros_select, $pa_tabelas_adicionadas, $ps_operador_logico, $pb_retornar_ramos_inferiores, $pa_joins_trail); + $this->montar_filtro_busca($va_novo_filtro, $vo_objeto_relacionamento, $vs_ultima_tabela_filtro, $pa_valores_busca, $ps_operador, $ps_interrogacoes, $pa_joins_select, $pa_tipos_parametros_joins, $pa_parametros_joins, $pa_wheres_select, $pa_tipos_parametros_select, $pa_parametros_select, $pa_tabelas_adicionadas, $ps_operador_logico, $pb_retornar_ramos_inferiores, $pa_joins_trail); } } else { // Se o filtro for chave primária ou atributo da tabela do objeto, a montagem é simples @@ -1610,23 +1656,25 @@ private function montar_filtro_busca($pa_filtro, $po_objeto, $ps_ultima_tabela_f { if (isset($v_campo_relacionamento[0]) && isset($v_campo_relacionamento[1])) { - $pa_tipos_parametros_select[] = $po_objeto->relacionamentos[$va_filtro[0]]["tipos_campos_relacionamento"][$contador]; - $pa_parametros_select[] = $v_campo_relacionamento[1]; + $pa_tipos_parametros_joins[] = $po_objeto->relacionamentos[$va_filtro[0]]["tipos_campos_relacionamento"][$contador]; + $pa_parametros_joins[] = $v_campo_relacionamento[1]; + $pa_joins_select[] = " AND " . $vs_alias_tabela_join . "." . $v_campo_relacionamento[0] . " = (?)"; } } + $contador++; } - - } $vs_tabela_banco = $vs_alias_tabela_join; $vs_campo_tabela = reset($po_objeto->relacionamentos[$va_filtro[0]]["campos_relacionamento"]); + if (is_array($vs_campo_tabela)) { $vs_campo_tabela = reset($vs_campo_tabela); } + $vs_tipo_dado_campo = reset($po_objeto->relacionamentos[$va_filtro[0]]["tipos_campos_relacionamento"]); } @@ -1921,8 +1969,10 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", $va_resultado = array(); $va_selects = array(); - $va_tipos_parametros_select = array(); - $va_parametros_select = array(); + + $va_tipos_parametros_unificados = array(); + $va_parametros_unificados = array(); + $va_order_by = array(); $va_group_by = array(); @@ -1951,7 +2001,9 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", if (isset($va_filtros_busca_union)) $va_filtros_busca = $va_filtros_busca_union[$contador]; - if ($vs_objeto) + if ($vs_objeto == $this->tabela_banco) + $vo_objeto = $this; + else $vo_objeto = new $vs_objeto($vs_objeto); if (method_exists($vo_objeto, "get_filtros_interditados")) @@ -1976,6 +2028,11 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", $va_joins_select = array(); $va_wheres_select = array(); + $va_tipos_parametros_joins = array(); + $va_parametros_joins = array(); + $va_tipos_parametros_select = array(); + $va_parametros_select = array(); + $va_tabelas_adicionadas = array(); $va_tabelas_adicionadas[$vs_tabela_banco][] = $vs_tabela_banco; @@ -2119,7 +2176,7 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", } } - $this->montar_filtros_busca($va_filtros_busca, $vo_objeto, $va_joins_select, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select, $va_tabelas_adicionadas, $pb_retornar_ramos_inferiores, $va_joins_trail, $pn_primeiro_registro, $pn_numero_registros); + $this->montar_filtros_busca($va_filtros_busca, $vo_objeto, $va_joins_select, $va_tipos_parametros_joins, $va_parametros_joins, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select, $va_tabelas_adicionadas, $pb_retornar_ramos_inferiores, $va_joins_trail, $pn_primeiro_registro, $pn_numero_registros); $this->montar_parametros_log($pa_log_info, $vo_objeto, $va_joins_select, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select); @@ -2135,6 +2192,9 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", "concatenadores" => (isset($va_filtros_busca["concatenadores"]) ? $va_filtros_busca["concatenadores"] : array()) ]; + $va_tipos_parametros_unificados = array_merge($va_tipos_parametros_unificados, array_merge($va_tipos_parametros_joins, $va_tipos_parametros_select)); + $va_parametros_unificados = array_merge($va_parametros_unificados, array_merge($va_parametros_joins, $va_parametros_select)); + $contador++; } } @@ -2146,7 +2206,7 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", $vs_limit = " LIMIT " . ($pn_primeiro_registro - 1) . ", " . $pn_numero_registros; $vo_banco = $this->get_banco(); - $va_resultado = $vo_banco->consultar($va_selects, $va_tipos_parametros_select, $va_parametros_select, $va_order_by, $vs_limit, true, $va_group_by); + $va_resultado = $vo_banco->consultar($va_selects, $va_tipos_parametros_unificados, $va_parametros_unificados, $va_order_by, $vs_limit, true, $va_group_by); } // Agora vamos montar o objeto pai, atributos que @@ -2167,18 +2227,23 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", $va_visualizacao = $vo_objeto->get_visualizacao($ps_visualizacao)["campos"]; - foreach ($va_visualizacao as $ps_key_campo_visualizacao => $va_campo_visualizacao) { + foreach ($va_visualizacao as $ps_key_campo_visualizacao => $va_campo_visualizacao) + { // Primeiro, ver se o campo de visualização é atributo ////////////////////////////////////////////////////// - if (isset($vo_objeto->atributos[$va_campo_visualizacao["nome"]])) { - if (isset($vo_objeto->atributos[$va_campo_visualizacao["nome"]]["objeto"])) { - if (isset($va_item_resultado[$ps_key_campo_visualizacao])) { + if (isset($vo_objeto->atributos[$va_campo_visualizacao["nome"]])) + { + if (isset($vo_objeto->atributos[$va_campo_visualizacao["nome"]]["objeto"])) + { + if (isset($va_item_resultado[$ps_key_campo_visualizacao])) + { $vs_id_objeto = $vo_objeto->atributos[$va_campo_visualizacao["nome"]]["objeto"]; $vo_objeto_chave_estrangeira = new $vs_id_objeto($vs_id_objeto); - if ($va_item_resultado[$ps_key_campo_visualizacao]) { + if ($va_item_resultado[$ps_key_campo_visualizacao]) + { $va_objeto_chave_estrangeira = $vo_objeto_chave_estrangeira->ler($va_item_resultado[$ps_key_campo_visualizacao], "lista", $pn_idioma_codigo); $va_item_resultado[$ps_key_campo_visualizacao] = $va_objeto_chave_estrangeira; } @@ -2298,6 +2363,9 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", if (isset($va_item_resultado[$vo_objeto_pai->chave_primaria[0]])) { + $vo_objeto_pai->visualizacoes[$ps_visualizacao]["campos"] = $va_visualizacao; + $vo_objeto_pai->visualizacoes[$ps_visualizacao]["campos"][$vo_objeto_pai->chave_primaria[0]] = $vo_objeto_pai->visualizacoes["ficha"]["campos"][$vo_objeto_pai->chave_primaria[0]]; + $va_resultado_pai = $vo_objeto_pai->ler($va_item_resultado[$vo_objeto_pai->chave_primaria[0]], $ps_visualizacao, $pn_idioma_codigo); $va_item_resultado = array_merge($va_item_resultado, $va_resultado_pai); @@ -2406,6 +2474,76 @@ public function ler_lista($pa_filtros_busca = null, $ps_visualizacao = "lista", return $va_resultado; } + function encontrar_pagina_item_acervo($ps_object_identifier, $ps_identifier_attribute, $pn_current_page, $pn_min, $pn_max) + { + if ($pn_min > $pn_max) + { + return false; + } + + $vn_registros_por_pagina = 20; + $vn_primeiro_registro = ($pn_current_page - 1) * $vn_registros_por_pagina + 1; + + if ($vn_primeiro_registro < 1) + { + return false; + } + + $vs_identifier_attribute = $this->get_atributo_identificador(); + + if (isset($this->get_visualizacao("navegacao")["order_by"])) + $vs_main_sorter_attribute = array_keys($this->get_visualizacao("navegacao")["order_by"])[0]; + + + $va_lista_objetos = $this->ler_lista([], "lista", $vn_primeiro_registro, $vn_registros_por_pagina, $vs_main_sorter_attribute, "ASC"); + + $va_codigos_objetos = array(); + + foreach ($va_lista_objetos as $va_objeto) + { + $va_identificadores_lista_objetos[] = $va_objeto[$ps_identifier_attribute]; + $va_codigos_objetos[] = $va_objeto[$this->get_chave_primaria()[0]]; + } + + if (in_array($ps_object_identifier, $va_identificadores_lista_objetos, true)) + { + return array($pn_current_page, $va_codigos_objetos); + } + + $va_identificadores_lista_objetos[] = $ps_object_identifier; + + natcasesort($va_identificadores_lista_objetos); + + $vn_list_first_item = reset($va_identificadores_lista_objetos); + $vn_list_last_item = end($va_identificadores_lista_objetos); + + if ($ps_object_identifier == $vn_list_last_item) + { + $pn_min = $pn_current_page + 1; + } + elseif ($ps_object_identifier == $vn_list_first_item) + { + $pn_max = $pn_current_page - 1; + } + else + { + return false; + } + + if ($pn_min > $pn_max) + { + return false; + } + + $vn_next_page = floor(($pn_min + $pn_max) / 2); + + if ($vn_next_page < 1) { + return false; + } + + return $this->encontrar_pagina_item_acervo($ps_object_identifier, $ps_identifier_attribute, $vn_next_page, $pn_min, $pn_max); + } + public function ler_lista_quantitativa($ps_id_relacionamento, $ps_label_objeto_relacionamento, $pa_filtros_busca = null, $pb_ordenar_por_quantidade = false) { if (isset($pa_filtros_busca)) @@ -2421,6 +2559,8 @@ public function ler_lista_quantitativa($ps_id_relacionamento, $ps_label_objeto_r $va_campos_select = array(); $va_joins_select = array(); + $va_tipos_parametros_joins = array(); + $va_parametros_joins = array(); $va_wheres_select = array(); $vs_limit = ""; @@ -2543,7 +2683,7 @@ public function ler_lista_quantitativa($ps_id_relacionamento, $ps_label_objeto_r $va_filtros_busca[reset($va_atributo_objeto)] = $va_atributo_objeto["valor_padrao"]; } - $this->montar_filtros_busca($va_filtros_busca, $this, $va_joins_select, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select, $va_tabelas_adicionadas, $pb_retornar_ramos_inferiores); + $this->montar_filtros_busca($va_filtros_busca, $this, $va_joins_select, $va_tipos_parametros_joins, $va_parametros_joins, $va_wheres_select, $va_tipos_parametros_select, $va_parametros_select, $va_tabelas_adicionadas, $pb_retornar_ramos_inferiores); $va_group_by[] = $ps_label_objeto_relacionamento; $va_group_by[] = "Q_codigo"; @@ -2559,7 +2699,7 @@ public function ler_lista_quantitativa($ps_id_relacionamento, $ps_label_objeto_r ]; $vo_banco = $this->get_banco(); - $va_resultados = $vo_banco->consultar($va_selects, $va_tipos_parametros_select, $va_parametros_select, $va_order_by, $vs_limit, true, $va_group_by); + $va_resultados = $vo_banco->consultar($va_selects, array_merge($va_tipos_parametros_joins, $va_tipos_parametros_select), array_merge($va_parametros_joins, $va_parametros_select), $va_order_by, $vs_limit, true, $va_group_by); if ($vo_objeto_relacionamento->hierarquico) { @@ -3256,7 +3396,8 @@ public function ler_representantes_digitais($pn_codigo, $pn_representante_digita $va_campos_select[] = "representante_digital.legenda as representante_digital_legenda"; $va_campos_select[] = "representante_digital.sequencia as sequencia"; $va_campos_select[] = "representante_digital.publicado_online as representante_digital_publicado_online"; - + $va_campos_select[] = "representante_digital.nome_original as representante_digital_nome_original"; + $va_wheres_select[] = "representante_digital.recurso_sistema_codigo = (?) "; $va_tipos_parametros_select[] = "i"; $va_parametros_select[] = $this->recurso_sistema_codigo; @@ -3978,8 +4119,10 @@ public function salvar_representantes_digitais($ps_campo_nome, $pa_valores, $pa_ elseif (@getimagesize($va_arquivo["tmp_name"])) { $vs_formato = "jpg"; - $vs_novo_nome_arquivo = $vs_novo_nome_arquivo . "." . $vs_formato; + $vs_novo_nome_arquivo_original = $vs_novo_nome_arquivo . "." . pathinfo($va_arquivo["name"], PATHINFO_EXTENSION); + $vs_novo_nome_arquivo = $vs_novo_nome_arquivo . "." . $vs_formato; + $vn_imagens_processadas = 0; foreach ($va_path_arquivo_destino as $key => $value) @@ -3999,7 +4142,7 @@ public function salvar_representantes_digitais($ps_campo_nome, $pa_valores, $pa_ if ($vb_salvar_arquivo_original) { - if ($this->mover_arquivo($va_arquivo["tmp_name"], $va_pasta_images["original"] . $vs_novo_nome_arquivo)) + if ($this->mover_arquivo($va_arquivo["tmp_name"], $va_pasta_images["original"] . $vs_novo_nome_arquivo_original)) { $vn_imagens_processadas++; } @@ -4776,6 +4919,9 @@ private function montar_campos_salvamento($pa_valores_form = array(), $ps_id_obj } $vs_valor_atributo = $this->$vs_funcao($va_valores_parametros); + + if ($vs_valor_atributo === false) + continue; } $this->va_campos[] = $va_atributo["coluna_tabela"]; @@ -4956,8 +5102,8 @@ private function tratar_data($ps_nome_campo, $pa_atributo, $pa_valores_form) $vo_data->set_ano_final($pa_valores_form[$ps_nome_campo . "_ano_final"]); } - if (isset($pa_valores_form[$ps_nome_campo . "_presumido"])) - $vo_data->set_presumido($pa_valores_form[$ps_nome_campo . "_presumido"]); + if (isset($pa_valores_form[$ps_nome_campo . "_presumido"])|| isset($pa_valores_form[$ps_nome_campo . "_data_presumida"])) + $vo_data->set_presumido($pa_valores_form[$ps_nome_campo . "_presumido"] ?? $pa_valores_form[$ps_nome_campo . "_data_presumida"]); else $vo_data->set_presumido(0); @@ -5023,9 +5169,9 @@ private function tratar_data($ps_nome_campo, $pa_atributo, $pa_valores_form) else $vb_presumido = 0; - if (isset($pa_atributo["presumido"])) + if (isset($pa_atributo["presumido"]) || isset($pa_atributo["presumida"])) { - $this->va_campos[] = $pa_atributo["presumido"]; + $this->va_campos[] = $pa_atributo["presumido"] ?? $pa_atributo["presumida"]; $this->va_tipos_parametros[] = "i"; $this->va_parametros[] = $vb_presumido; } @@ -5615,8 +5761,8 @@ public function salvar_relacionamentos($pa_valores_form, $pn_codigo, $pn_idioma_ $vb_tem_valores_preenchidos = true; } - if (isset($pa_valores_form[$vs_campo_relacionamento . "_data_presumida" . "_" . $contador])) - $va_valores[$vs_campo_relacionamento . "_data_presumida"] = $pa_valores_form[$vs_campo_relacionamento . "_data_presumida" . "_" . $contador]; + if (isset($pa_valores_form[$vs_campo_relacionamento . "_presumida" . "_" . $contador])) + $va_valores[$vs_campo_relacionamento . "_data_presumida"] = $pa_valores_form[$vs_campo_relacionamento . "_presumida" . "_" . $contador]; if (isset($pa_valores_form[$vs_campo_relacionamento . "_sem_data" . "_" . $contador]) && $pa_valores_form[$vs_campo_relacionamento . "_sem_data" . "_" . $contador] != "") { @@ -6052,7 +6198,7 @@ public function inserir_relacionamento($ps_tabela, $pa_chave_primaria, $pn_codig foreach ($va_campos_temp as $vs_key_campo => $va_campo) { - if (is_array($va_campo)) + if (is_array($va_campo)) { $vs_campo = reset($va_campo); diff --git a/src/lib/system/periodo.php b/src/lib/system/periodo.php index 5fa688c..0a7aa39 100755 --- a/src/lib/system/periodo.php +++ b/src/lib/system/periodo.php @@ -638,6 +638,8 @@ public function get_data_exibicao($ps_separador='') if ($this->get_presumido()) $vs_data_exibicao = "[" . $vs_data_exibicao . "]"; + if ($this->get_complemento()) + $vs_data_exibicao .= " (" . $this->get_complemento() . ")"; return $vs_data_exibicao; } diff --git a/src/lib/system/visualizacao.php b/src/lib/system/visualizacao.php index 295c328..653e986 100755 --- a/src/lib/system/visualizacao.php +++ b/src/lib/system/visualizacao.php @@ -51,6 +51,12 @@ public function inicializar_atributos() 'tipo_dado' => 'b' ]; + $va_atributos['visualizacao_incluir_representante_digital'] = [ + 'visualizacao_incluir_representante_digital', + 'coluna_tabela' => 'incluir_representante_digital', + 'tipo_dado' => 'b' + ]; + return $va_atributos; } @@ -70,7 +76,7 @@ public function inicializar_relacionamentos($pn_recurso_sistema_codigo = null) [ 'visualizacao_campo_sistema_codigo' => 'campo_sistema_codigo', 'visualizacao_campo_sistema_sequencia' => [ - 'sequencia', + 'ordem', 'valor_sequencial' => true ], ], @@ -111,7 +117,7 @@ public function inicializar_campos_edicao() "sem_valor" => false, "conectar" => [ [ - "campo" => "visualizacao_campos_sistema", + "campo" => "visualizacao_campo_sistema_codigo", "atributo" => "campo_sistema_recurso_sistema_codigo" ] ] @@ -125,29 +131,28 @@ public function inicializar_campos_edicao() ]; $va_campos_edicao["visualizacao_campo_sistema_codigo"] = [ - "html_multi_itens_input", - "nome" => "visualizacao_campo_sistema_codigo", + "html_autocomplete", + "nome" => ["visualizacao_campo_sistema", "visualizacao_campo_sistema_codigo"], "label" => "Campos", - "dependencia_linha" => ["campo" => "visualizacao_recurso_sistema_codigo"], - "subcampos" => [ - "visualizacao_campo_sistema_codigo" => - [ - "html_combo_input", - "nome" => "visualizacao_campo_sistema_codigo", - "label" => "Campo", - "objeto" => "campo_sistema", - "atributos" => ["campo_sistema_codigo", "campo_sistema_alias"], - "atributo" => "campo_sistema_codigo", - "sem_valor" => false, - "dependencia" => [ - "campo" => "visualizacao_recurso_sistema_codigo", - "atributo" => "campo_sistema_recurso_sistema_codigo" - ], - "campo_pai" => "visualizacao_campo_sistema_codigo" - ] - - ], + "objeto" => "campo_sistema", + "atributos" => ["campo_sistema_codigo", "campo_sistema_alias"], + "multiplos_valores" => true, + "procurar_por" => "campo_sistema_alias", + "visualizacao" => "lista", + "permitir_cadastro" => false, "draggable" => true, + "dependencia" => [ + [ + "campo" => "visualizacao_recurso_sistema_codigo", + "atributo" => "campo_sistema_recurso_sistema_codigo" + ] + ] + ]; + + $va_campos_edicao["visualizacao_incluir_representante_digital"] = [ + "html_checkbox_input", + "nome" => "visualizacao_incluir_representante_digital", + "label" => "Incluir representantes digitais" ]; $va_campos_edicao["visualizacao_contexto_visualizacao_codigo"] = [ @@ -162,7 +167,7 @@ public function inicializar_campos_edicao() $va_campos_edicao["visualizacao_habilitado"] = [ "html_checkbox_input", "nome" => "visualizacao_habilitado", - "label" => "Habilitado" + "label" => "Habilitada" ]; return $va_campos_edicao; @@ -206,6 +211,10 @@ public function inicializar_visualizacoes() "nome" => "visualizacao_habilitado" ]; + $va_campos_visualizacao["visualizacao_incluir_representante_digital"] = [ + "nome" => "visualizacao_incluir_representante_digital" + ]; + $this->visualizacoes["navegacao"]["campos"] = $va_campos_visualizacao; $this->visualizacoes["navegacao"]["order_by"] = ["visualizacao_nome" => "Nome"]; $this->visualizacoes["navegacao"]["ordem_campos"] = [