Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:TOTVS - Folha de Pagamento
Linha de Produto:

Linhas_totvs
LinhaLinha RM

Segmento:

Segmentos_totvs
SegmentoRH

Módulo:

Modulos_totvs_rh
ModulosTOTVSRHTOTVS RH (Linha RM) - Folha de Pagamento (LABORE)

Função:Ficha Financeira
País:Brasil
Requisito/Story/Issue (informe o requisito relacionado) :DRHCALCRM-2901


02. SITUAÇÃO/REQUISITO

Verificar os campos que tem máscara se são calculados na para aceitar até 546:07 e caso sim, passar aceitar até 999:59.

...

Alterar o tipo do campo para int e também a máscara, que só aceita 3 dígitos. Aumentando o tamanho do campo possibilita números maiores. Neste caso teria que também alterar todos os módulos de Lançamento de eventos, como também as grids de lançamentos que tem em módulos como as Retificações, Rescisão Complementar, Entrada de Dados, etc e relatórios.


Aviso
titleATENÇÃO

Para permitir que o TOTVS Folha de Pagamento aceite valor até 999:59 no campo hora, foi necessário criar script de banco de dados para alterar o tipo

de

do campo para int. 

Caso o cliente

possui indice vínculado

possua índice (SQL e Oracle) ou estatísticas (SQL) vinculado ao campo hora nas tabelas relacionadas abaixo, poderá retornar erro ao atualizar a base e a mesma ser travada.

Neste caso recomedamendos que os indices sejam desabilitados antes da atualização.

 

Neste caso recomendamos que seja feito a atualização antes em uma base de homologação e caso ocorra erros referente a marcação LB.2022.08_07, orientamos que os índices (SQL e Oracle) ou estatísticas (SQL) sejam excluídos antes da atualização da base de dados.

Após o processo de atualização ser concluído o com sucesso, é necessário avaliar com o DBA da sua empresa a necessidade de recriar os índices novamente, pois os mesmos podem impactar na performance. 

Lembrando que os clientes possuem autonomia para fazer otimizações para o uso do banco de dados. No caso das tabelas abaixo, por padrão o produto não tem os índices para os campos relacionados.

Expandir
titleTabelas:
  • PEVTRELACSALCMP campo:NHORAS
  • PEVTRELACSALCMPCC campo:NHORAS
  • PFENTMOV  campo: HORA  
  • PFFINANC  campo: HORA  
  • PFFINANCCOMPL  campo: HORA  
  • PFHSTENTMOV  campo: HORA  
  • PFMOVCC  campo: HORA  
  • PFMOVCCCOMPL  campo: HORA  
  • PFRESILICAOMOV  campo: HORA  
  • PFVALORFORCADO  campo: HORA  
  • PFVERBAS  campo: HORA  
  • PFVERBASCOMPL  campo: HORA  
  • PFVERBASDIS  campo: HORA  
  • PFVERBASDISFER  campo: HORA  
  • PFVERBASDISFERHIST  campo: HORA  
  • PFVERBASDISHIST  campo: HORA  
  • PORCAMENTOPERFILEVENTOS  campo: HORA  
  • PFMOVTOMADOR  campo: HORA  
  • PFRESILICAOMOVBASE  campo: HORA  
  • PORCAMENTOMOVVALOR  campo: HORA  
  • PPOSTRANSFERENCIA  campo: HORA  
  • PSIMULADEMISSAOEVENTOS  campo: HORA  
  • PFSUBSTITUICAO  campo: NROHORAS  
  • PFSUBSTITUICAO  campo: NROHORASORIGINAL


Foi incluída uma validação onde o atualizador não permitirá a atualização caso existem índice (SQL e Oracle) ou estatísticas (SQL). Caso seja reportado o erro desta situação, pode ser verificado no banco a lista de tabelas e colunas dos índice (SQL e Oracle) ou estatísticas (SQL) existentes com as consultas abaixo:

Expandir
titleÍndices
Expandir
titleORACLE
Bloco de código
languagesql
titleVerificar índices
SELECT TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM USER_IND_COLUMNS
WHERE 
(  ( TABLE_NAME = 'PEVTRELACSALCMP' AND COLUMN_NAME = 'NHORAS' ) 
OR ( TABLE_NAME = 'PEVTRELACSALCMPCC' AND COLUMN_NAME = 'NHORAS' ) 
OR ( TABLE_NAME = 'PFENTMOV' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFFINANC' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFFINANCCOMPL' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFHSTENTMOV' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFMOVCC' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFMOVCCCOMPL' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFRESILICAOMOV' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVALORFORCADO' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVERBAS' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVERBASCOMPL' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVERBASDIS' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVERBASDISFER' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVERBASDISFERHIST' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFVERBASDISHIST' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PORCAMENTOPERFILEVENTOS' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFMOVTOMADOR' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFRESILICAOMOVBASE' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PORCAMENTOMOVVALOR' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PPOSTRANSFERENCIA' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PSIMULADEMISSAOEVENTOS' AND COLUMN_NAME = 'HORA' ) 
OR ( TABLE_NAME = 'PFSUBSTITUICAO' AND COLUMN_NAME = 'NROHORAS' ) 
OR ( TABLE_NAME = 'PFSUBSTITUICAO' AND COLUMN_NAME = 'NROHORASORIGINAL' ) 
)
Expandir
titleSQL
Bloco de código
languagesql
titleVerificar índices
select tabela, type_desc, indice, colunasIndice
from
(
SELECT s.name as [schema], t.name as [tabela] 
-- Detalhes do Indice
, i.[type_desc], i.[is_primary_key], i.[is_unique], i.[is_unique_constraint]
, ISNULL(i.name, '') AS [indice]
, ISNULL(SUBSTRING(c.[indexed], 0, LEN(c.[indexed])), '') AS [colunasIndice]
-- Filtro utilizado pelo I­ndice
, ISNULL(i.filter_definition, '') AS [filtered] 
FROM sys.schemas s
INNER JOIN sys.tables t
ON s.[schema_id] = t.[schema_id]
INNER JOIN sys.indexes i
ON t.[object_id] = i.[object_id] 
-- Relacao de colunas que formam o I­ndice
CROSS APPLY (
SELECT (
	SELECT c.name + ', '
	FROM sys.columns c
	INNER JOIN sys.index_columns ic
	ON c.[object_id] = ic.[object_id]
	AND c.[column_id] = ic.[column_id]
	WHERE t.[object_id] = c.[object_id]
	AND ic.[index_id] = i.[index_id]
	ORDER BY [key_ordinal]
	FOR XML PATH('')
) AS [indexed] 
) AS c
) AS D
WHERE 
(  ( D.tabela = 'PEVTRELACSALCMP' AND D.colunasIndice LIKE '%NHORAS%')
OR ( D.tabela = 'PEVTRELACSALCMPCC' AND D.colunasIndice LIKE '%NHORAS%')
OR ( D.tabela = 'PFENTMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFFINANC' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFFINANCCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFHSTENTMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVCC' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVCCCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFRESILICAOMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVALORFORCADO' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBAS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDIS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISFER' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISFERHIST' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISHIST' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PORCAMENTOPERFILEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVTOMADOR' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFRESILICAOMOVBASE' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PORCAMENTOMOVVALOR' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PPOSTRANSFERENCIA' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PSIMULADEMISSAOEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORAS%')
OR ( D.tabela = 'PFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORASORIGINAL%')
)
Expandir
titleEstatísticas
Expandir
titleSQL
Bloco de código
languagesql
titleVerificar estatísticas
SELECT s.name [STATS_NAME], s.stats_id [STATS_ID], t.name [TABLE_NAME], c.name [COLUNM_NAME]
FROM sys.stats s
INNER JOIN sys.tables t ON s.object_id = t.object_id
INNER JOIN sys.stats_columns sc ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id
INNER JOIN sys.columns c ON sc.object_id = c.object_id AND sc.column_id = c.column_id
WHERE
   (  object_name(c.object_id) = 'PFFINANCCOMPL' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFHSTENTMOV' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFMOVCC' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFMOVCCCOMPL' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFRESILICAOMOV' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVALORFORCADO' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBAS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASCOMPL' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDIS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDISFER' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDISFERHIST' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDISHIST' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PORCAMENTOPERFILEVENTOS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFMOVTOMADOR' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFRESILICAOMOVBASE' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PORCAMENTOMOVVALOR' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PPOSTRANSFERENCIA' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PSIMULADEMISSAOEVENTOS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFSUBSTITUICAO' AND c.name LIKE '%NROHORAS%')
OR (  object_name(c.object_id)  = 'PFSUBSTITUICAO' AND c.name LIKE '%NROHORASORIGINAL%')