Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Revertida da versão 16

...

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

03. SOLUÇÃO

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 do campo para int. 

Caso o cliente possua índice vinculado ao campo hora nas tabelas relacionadas abaixo, poderá retornar erro ao atualizar a base e a mesma ser travada. 

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 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 índices. Caso seja reportado o erro desta situação, pode ser verificado no banco a lista de tabelas e colunas dos índices existentes com as consultas abaixo:

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 índice
, 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]
, ISNULL(SUBSTRING(c.[included], 0, LEN(c.[included])), '') AS [included] 
-- Filtro utilizado pelo í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] 
-- Relação de colunas que formam o í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]
        AND ic.[is_included_column] = 0
        ORDER BY [key_ordinal]
        FOR XML PATH('')
    ) AS [indexed]
    ,(
        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]
        AND ic.[is_included_column] = 1
        ORDER BY [key_ordinal]
        FOR XML PATH('')
    ) AS [included]
) 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%')
)

03. SOLUÇÃO

...