Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
88332bf
PRRRDM-472 Corrigir exportação com todos os campos do formulário
Jun 28, 2024
43b4ab2
PRRRDM-472 Corrigir exportação com todos os campos do formulário
Jun 28, 2024
b2d6c8b
PRRRDM-472 Corrigir exportação com todos os campos do formulário
Jun 28, 2024
4297c40
Merge branch 'PRRRDM-472-corrigir-exportacao-todos-campos-formulario'…
Jul 1, 2024
259637b
feat: add paramo-refatorado import structure
smllb Jul 4, 2024
aad01b2
PRM-396 Implementar proteção de exclusão e substituição de "registros…
fredaccamargo Jul 4, 2024
731202e
fix: carry import parameters properly to final import step
smllb Jul 5, 2024
02228f3
fix: add update-only and create-only import options
smllb Jul 5, 2024
4a25765
fix: improve log report and import process
smllb Jul 8, 2024
540c7e9
chore: general cleanup, todos writing
smllb Jul 8, 2024
6f6b272
feat: add import log, subfield separators and general import header
smllb Jul 10, 2024
8b41391
fix: update UI table to show new import log operation type and debug/…
smllb Jul 11, 2024
ef8017c
fix: remove importation object redeclaration redundancy
smllb Jul 11, 2024
0823519
PRM-395 - Adicionado funções menores para desmembrar a função de impo…
smllb Jul 12, 2024
d4a78d3
feat: add importacao_refatorado class
smllb Jul 13, 2024
b5c9e0c
fix: convert step 2 to use importacao_refatorado instead of post vari…
smllb Jul 13, 2024
2d7b245
feat: add step 3 and 4 functions
smllb Jul 17, 2024
4e8a6ea
change: convert step 3 and 4 to use import class
smllb Jul 17, 2024
50621d1
CDP-499 Corrigir substituir
Jul 26, 2024
07983fe
CDP-499 Impedir cadastro de agrupamento na tela de substituição
paramogit Jul 30, 2024
7e2a263
PRM-395 Step 3 convertida para classe e desenvolvimento da função do …
smllb Sep 19, 2024
688b132
PRM-395 - Processamento de datas, importação de dados textuais, adiçã…
smllb Sep 19, 2024
6b6ad4a
PRM-395 - Melhoria na busca de código de objeto a partir do nome, Atu…
smllb Sep 20, 2024
33c42c8
PRM-395 - Mudança objeto_base:1905 ler_lista (para lidar com caso on…
smllb Sep 20, 2024
acdbe5b
PRM-395 Permitir uso de arquivos xlsx na importação
mthsps Sep 23, 2024
edbcd90
PRM-395 Finalizar transação após processamento de todas as linhas
mthsps Sep 23, 2024
cb98be5
PRM-399 Remover dependência de classe de importação salva na $_SESSION
mthsps Sep 23, 2024
d9ae33e
PRM-400 Corrigir importação de autorias com múltiplos valores e tipo
mthsps Sep 24, 2024
f0b03f3
PRM-400 Corrigir atributo de salvamento de objetos relacionados
mthsps Sep 24, 2024
aa4ae8d
v1.4.26 CDP-504-implementar-exibicao-grupo-subgrupo-como-cards-seleci…
Oct 30, 2024
986de79
Merge pull request #54 from paramosoftware/v1.4.26-CDP-504-implementa…
s-apps Oct 30, 2024
540e9a7
Merge pull request #56 from paramosoftware/protecao-exclusao-registros
fredaccamargo Oct 31, 2024
895e7cc
PRM-406 Adicionar novo parâmetro nas funções [ler_numero_registros] e…
fredaccamargo Nov 2, 2024
74a78db
PRNEO-67 Atualizar funções da objeto_base para controle de leitura de…
fredaccamargo Nov 3, 2024
570837f
PRM-407 Restringir carregamento por demanda de objetos filhos na list…
fredaccamargo Nov 3, 2024
e9e3122
PRM-408 Restringir leitura de objetos filhos no filtro lateral apenas…
fredaccamargo Nov 3, 2024
f12f5fc
CDP-517 Refatorar construção de filtros laterais hierárquicos em busc…
fredaccamargo Dec 4, 2024
8b0d1aa
CDP-517 Refatorar construção de filtros laterais hierárquicos em busc…
fredaccamargo Dec 4, 2024
57fa605
CDP-517 Refatorar construção de filtros laterais hierárquicos em busc…
fredaccamargo Dec 4, 2024
e985970
CDP-520 Forçar ordenação alfabética de filtros laterais
fredaccamargo Dec 7, 2024
d236aca
PRM-409 Refatorar o modo como objeto_base monta os joins de filtros d…
fredaccamargo Dec 7, 2024
c57e6b7
CDP-517 Refatorar construção de filtros laterais hierárquicos em busc…
fredaccamargo Dec 8, 2024
ce438b6
CDP-523 Implementar recuperação de link para ficha de item de acervo …
fredaccamargo Dec 10, 2024
e41d82d
PRRRDM-516 Controlar recuperação de níveis inferiores de registro a p…
fredaccamargo Dec 11, 2024
1f2f37b
ajuste PRM-409 Refatorar o modo como objeto_base monta os joins de fi…
fredaccamargo Dec 11, 2024
0ecd583
CDT-295 Corrigir e aperfeiçoar exportação para csv
fredaccamargo Feb 28, 2025
6448717
CDT-297 Corrigir: espécies documentais não estão sendo listadas para …
fredaccamargo Mar 2, 2025
1e20968
CDT-299 Ocultar temporariamente o botão Importar nas listagens
fredaccamargo Mar 2, 2025
9a34126
CDT-300 Corrigir: botão [limpar] não funciona na busca avançada das l…
fredaccamargo Mar 2, 2025
8ba0396
CDT-301 Não exibir visualizações não habilitadas no seletor de visual…
fredaccamargo Mar 2, 2025
b2b7cf2
Merge branch 'PRRRDM-472-corrigir-exportacao-todos-campos-formulario'…
mthsps May 12, 2025
984a02f
Merge remote-tracking branch 'origin/CDP-499-sop-corrigir-substituir'…
mthsps May 12, 2025
ca190b3
Merge remote-tracking branch 'origin/v1.4.24' into v1.4.27-cdp
mthsps May 12, 2025
ece8de9
Merge remote-tracking branch 'origin/solicitacoes-2024-07-19' into v1…
mthsps May 12, 2025
4ac1759
Merge remote-tracking branch 'origin/v1.4.29-cdt' into v1.4.27-cdp
mthsps May 13, 2025
4cf65f6
Merge branch 'prm-395-implement-importacao-paramo-refatorado' into v1…
mthsps May 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions app/components/barra_filtros_combinados.php
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
</div>

<div class="col-6 text-left">
<button class="btn btn-outline-primary px-4" type="button" id="btn_limpar">Limpar</button>
<button class="btn btn-outline-primary px-4" type="button" id="btn_limpar_filtro_combinado">Limpar</button>
</div>
</div>
</div>
Expand Down Expand Up @@ -247,7 +247,16 @@ function toggle_filtro_combinado()
$("#form_lista").attr('action', '<?php print $vs_form_action; ?>');
$("#form_lista").attr('method', 'get');
$("#form_lista").submit();
}
);
});

$(document).on('click', "#btn_limpar_filtro_combinado", function()
{
$("#filtros_disponiveis").empty();
va_filtros_busca.push = [];
va_contador_filtros_busca = [];

$("#form_lista").submit();

});

</script>
6 changes: 6 additions & 0 deletions app/components/barra_visualizacoes.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
"campo" => "recurso_sistema_codigo",
"atributo" => "visualizacao_recurso_sistema_codigo"
]
],
"filtro" => [
[
"atributo" => "visualizacao_habilitado",
"valor" => 1
]
]
];

Expand Down
189 changes: 189 additions & 0 deletions app/components/importar_instrucoes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
<?php
function get_import_config_options(): array
{
$va_import_config = [];

$va_import_config["import_debug"] = [
"name" => "import_debug",
"label" => "Modo teste",
"description" => "Nenhuma alteração é feita no banco de dados durante a importação e o relatório da importação é exibido ao final.",
"value" => true,
"type" => "checkbox"
];

$va_import_config["import_allow_errors"] = [
"name" => "import_allow_errors",
"label" => "Tolerância a erros",
"description" => "Caso alguma célula possua um valor inválido e não possa ser processada, o item será criado sem o valor da célula.",
"value" => true,
"type" => "checkbox"
];

$va_import_config["import_upsert"] = [
"name" => "import_mode",
"label" => "Criar e atualizar itens",
"description" => "Criar novos itens no banco de dados, caso não existam. Atualizar itens existentes no banco de dados, caso existam. O identificador do item deve estar presente no arquivo de importação para atualização.",
"value" => "upsert",
"type" => "radio",
"checked" => "checked"
];

$va_import_config["import_create"] = [
"name" => "import_mode",
"label" => "Somente criar itens",
"description" => "Criar novos itens no banco de dados, caso não existam.",
"value" => "create",
"type" => "radio"
];

$va_import_config["import_update"] = [
"name" => "import_mode",
"label" => "Somente atualizar itens",
"description" => "Atualizar itens existentes no banco de dados, caso existam. O identificador do item deve estar presente no arquivo de importação.",
"value" => "update",
"type" => "radio"
];

$va_import_config["import_delete"] = [
"name" => "import_mode",
"label" => "Apagar e recriar itens",
"description" => "Caso existam itens no banco de dados, eles serão apagados e recriados com os dados do arquivo de importação. O identificador do item deve estar presente no arquivo de importação.",
"value" => "delete",
"type" => "radio"
];

$va_import_config["import_default_value"] = [
"name" => "import_default_value",
"description" => "Valor padrão a ser utilizado caso o campo não esteja preenchido no arquivo de importação.",
"label" => "Valor padrão",
"type" => "text",
"value" => "",
"fields" => []
];

$va_import_config["import_create_related"] = [
"name" => "import_create_related",
"label" => "Criar novos itens relacionados",
"description" => "Caso o item relacionado não exista no banco de dados, será criado.",
"value" => 1,
"type" => "checkbox",
"fields" => [
"html_autocomplete",
]
];

$va_import_config["import_relation_type"] = [
"name" => "import_relation_type",
"label" => "Tipo de relação padrão",
"description" => "Tipo de relação a ser estabelecida entre os itens relacionados.",
"value" => "",
"type" => "select",
"fields" => [
"html_autocomplete"
]
];

$va_import_config["import_separator"] = [
"name" => "import_separator",
"label" => "Separador de valores",
"description" => "Caractere utilizado para separar os valores de um campo.",
"value" => "",
"type" => "text",
"fields" => [
"autocomplete_input",
"multi_check_input",
"multi_fields_input"
]
];

$va_import_config["import_separator_subfield"] = [
"name" => "import_separator_subfield",
"label" => "Separador de subcampos",
"description" => "Caractere utilizado para separar os subcampos.",
"value" => "",
"type" => "text",
"fields" => [
"multi_fields_input",
]
];

$va_import_config["import_separator_hierarchy"] = [
"name" => "import_separator_hierarchy",
"label" => "Separador de hierarquia",
"description" => "Caractere utilizado para separar os níveis de hierarquia.",
"value" => "",
"type" => "text"
];

return $va_import_config;
}
$va_fields_import_options = get_import_config_options();
?>

<div class="mt-4 p-4">
<h4 class="cil-bold">Opções de importação</h4>
<table class="table table-bordered bg-light small">
<thead>
<tr>
<th>Opção</th>
<th>Descrição</th>
<th>Valor</th>
</tr>
</thead>
<tbody>
<?php foreach ($va_fields_import_options as $vs_option_id => $va_option) : ?>
<?php if (!in_array($va_option["name"], ["import_default_value", "import_relation_type"]) && !isset($va_option["fields"])) : ?>
<tr>
<td><strong><?= $va_option["label"]; ?></strong></td>
<td><?= $va_option["description"]; ?></td>
<td>
<input
class="<?= in_array($va_option["type"], ["checkbox", "radio"]) ? "form-check-input" : "form-control-sm form-control" ?>"
type="<?= $va_option["type"]; ?>"
name="parametros_importacao[<?= $va_option["name"]; ?>]"
value="<?= $va_option["value"]; ?>" <?= isset($va_option["checked"]) ? "checked" : ""; ?>
>
</td>
</tr>
<?php endif; ?>
<?php endforeach; ?>
</table>


<h3>Instruções</h3>
<ul>
<li>O arquivo pode estar formato CSV ou XLSX (Excel).</li>
<li> A primeira linha do arquivo <b>DEVE</b> conter a identificação dos dados.
Caso utilize exatamente nome dos campos no formulário de cadastro, o sistema irá identificar automaticamente os campos.
Caso contrário, será necessário selecionar o campo de destino para cada coluna do arquivo.
</li>
</ul>

<table class="table table-bordered">
<thead>
<tr>
<th>Identificador</th>
<th>Nome</th>
<th>Descrição</th>
<th>Autoria</th>
<th>...</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Nome 1</td>
<td>Descrição 1</td>
<td>Autoria 1; Autoria 2</td>
<td>...</td>
</tr>
<tr>
<td>2</td>
<td>Nome 2</td>
<td>Descrição 2</td>
<td>Autoria 3</td>
<td>...</td>
</tr>
</tbody>
</table>
</div>
8 changes: 8 additions & 0 deletions app/components/ler_valor.php
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,14 @@ function ler_valor1($ps_atributo, $pa_item, $pa_opcoes_campo=null, $pn_numero_it

$vs_expressao_montada = '<a href="'. $vs_url . '">' . $vs_expressao_montada . '</a>';
}
elseif (isset($pa_opcoes_campo["formato"]["link"]["get_link"]))
{
$vo_objeto = new $pa_opcoes_campo["formato"]["link"]["objeto"];

$vn_objeto_link_codigo = $va_atributo_temp[$pa_opcoes_campo["formato"]["link"]["codigo"]];

$vs_expressao_montada = $vo_objeto->get_link($vn_objeto_link_codigo, $vs_expressao_montada);
}
else
{
$vs_expressao_montada = '<a target="_blank" href="'. $vs_expressao_montada . '">' . $vs_expressao_montada . '</a>';
Expand Down
4 changes: 2 additions & 2 deletions app/components/listagem.php
Original file line number Diff line number Diff line change
Expand Up @@ -224,15 +224,15 @@
}
?>

<?php if ($vb_pode_substituir)
<?php if ($vb_pode_substituir && !in_array($vn_objeto_codigo, $vo_objeto->registros_protegidos))
{
?>
<a class="dropdown-item botao_substituir" id="btn_substituir_<?php print $vn_objeto_codigo; ?> href="#">Substituir</a>
<?php
}
?>

<?php if ($vb_pode_excluir)
<?php if ($vb_pode_excluir && !in_array($vn_objeto_codigo, $vo_objeto->registros_protegidos))
{
?>
<a class="dropdown-item botao_excluir" id="btn_excluir_<?php print $vn_objeto_codigo; ?>" href="confirmar_exclusao.php?obj=<?php print $vs_id_objeto_tela; ?>&cod=<?php print $vn_objeto_codigo; ?>">Excluir</a>
Expand Down
2 changes: 2 additions & 0 deletions app/editar.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@

foreach ($vo_objeto->controlador_acesso as $vs_parametro_controlador => $vs_atributo_controlador)
{
if ($va_parametros_controle_acesso[$vs_parametro_controlador] == "_ALL_") continue;

if ((trim($va_parametros_controle_acesso[$vs_parametro_controlador]) == "") && ($vo_objeto->get_chave_primaria()[0] != $vs_parametro_controlador))
{
if (!isset($va_parametros_controle_acesso["_combinacao_"]) || (isset($va_parametros_controle_acesso["_combinacao_"]) && $va_parametros_controle_acesso["_combinacao_"] != "OR") )
Expand Down
3 changes: 3 additions & 0 deletions app/functions/autenticar_usuario.php
Original file line number Diff line number Diff line change
Expand Up @@ -343,13 +343,16 @@


$va_usuario_logado_especies_documentais = array();

if (isset($va_usuario["usuario_especie_documental_codigo"]))
{
foreach ($va_usuario["usuario_especie_documental_codigo"] as $va_especie_documental)
{
$va_usuario_logado_especies_documentais[] = $va_especie_documental["usuario_especie_documental_codigo"]['especie_documental_codigo'];
}
}
elseif ($vn_usuario_logado_acervo_codigo)
$va_usuario_logado_especies_documentais[] = "_ALL_";

$vn_usuario_logado_especie_documental_codigo = join("|", $va_usuario_logado_especies_documentais);

Expand Down
2 changes: 1 addition & 1 deletion app/functions/autocomplete.php
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@

if ( $vb_aplicar_controle_acesso && (in_array($va_parametros_campo["atributos"][0], array_keys($va_parametros_controle_acesso))) )
{
if ($va_parametros_controle_acesso[$va_parametros_campo["atributos"][0]] != "")
if (!in_array($va_parametros_controle_acesso[$va_parametros_campo["atributos"][0]], ["", "_ALL_"]))
$va_termo_busca[$va_parametros_campo["atributos"][0]] = $va_parametros_controle_acesso[$va_parametros_campo["atributos"][0]];
}
//elseif (isset($va_termo_busca[$va_parametros_campo["nome"]]))
Expand Down
2 changes: 1 addition & 1 deletion app/functions/excluir.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

$vo_objeto = new $vs_id_objeto('');

if (!$vo_objeto->validar_acesso_registro($vn_codigo_objeto, $va_parametros_controle_acesso))
if (!$vo_objeto->validar_acesso_registro($vn_codigo_objeto, $va_parametros_controle_acesso) || in_array($vn_codigo_objeto, $vo_objeto->registros_protegidos))
{
utils::log(
"Tentativa de exclusão sem permissão: ",
Expand Down
44 changes: 42 additions & 2 deletions app/functions/exportar.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
}

$vn_pagina_atual = 1;
$vb_retornar_valores_vazios = true;


$vs_visualizacao = "ficha";

require dirname(__FILE__). "/montar_listagem.php";

$vs_file_path = config::get(["pasta_media", "temp"]) . $vs_file_name;
Expand All @@ -28,6 +33,8 @@

$vr_file = fopen($vs_file_path, "w");

create_header($vr_file, $va_itens_listagem ?? []);

add_to_csv($vr_file, $va_itens_listagem ?? []);

for ($vn_pagina_atual = 2; $vn_pagina_atual <= $vn_numero_maximo_paginas; $vn_pagina_atual++)
Expand All @@ -44,21 +51,54 @@
utils::clear_temp_folder("-5 minutes");
exit();

function add_to_csv($pr_file, $pa_itens_listagem)
function add_to_csv($pr_file, $pa_itens_listagem, $pb_adicionar_cabecalho = false)
{
$vn_contador = 1;

foreach ($pa_itens_listagem as $va_item_listagem)
{
$va_atributos = array();

$va_atributos[] = $va_item_listagem["id_field"] ?? "";
$va_atributos[] = $va_item_listagem["main_field"] ?? "";
/*$va_atributos[] = $va_item_listagem["descriptive_field"] ?? "";*/

foreach($va_item_listagem["atributos"] as $va_atributos_item_listagem)
{
if ($va_atributos_item_listagem["valor"] != "" && $va_atributos_item_listagem["exibir"])
if ($va_atributos_item_listagem["exibir"] && $va_atributos_item_listagem["exibir"] != 0)
{
$va_atributos[] = $va_atributos_item_listagem["valor"];
}
}

fputcsv($pr_file, $va_atributos);

$vn_contador++;
}
}

function create_header($pr_file, $pa_itens_listagem)
{
foreach ($pa_itens_listagem as $va_item_listagem)
{
$va_labels = array();

$va_labels[] = $va_item_listagem["id_field_label"] ?? "";
$va_labels[] = $va_item_listagem["main_field_label"] ?? "";
/*$va_labels[] = $va_item_listagem["descriptive_field_label"] ?? "";*/

foreach($va_item_listagem["atributos"] as $key => $va_atributos_item_listagem)
{
if ($va_atributos_item_listagem["exibir"] && $va_atributos_item_listagem["exibir"] != 0)
{
$va_labels[] = $va_atributos_item_listagem["label"];
}

}

fputcsv($pr_file, $va_labels);

break;
}
}

Expand Down
2 changes: 1 addition & 1 deletion app/functions/ler_registros_filhos.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
$vn_objeto_codigo = $va_parametros['cod'];

$vo_objeto = new $vs_id_objeto;
$va_registros_filhos = $vo_objeto->ler_lista([$vo_objeto->get_campo_hierarquico() => $vn_objeto_codigo], "navegacao");
$va_registros_filhos = $vo_objeto->ler_lista([$vo_objeto->get_campo_hierarquico() => $vn_objeto_codigo], "navegacao", null, null, null, null, null, 1, false);

$va_visualizacao_lista = $vo_objeto->get_visualizacao("navegacao");

Expand Down
Loading
Loading