Produto: Totvs Gestão de Estoque, Compras e Faturamento Versão: 11.40
Processo do Sistema: Compras
SubProcesso: Movimentação
Sintoma
Como Validar o campo Chave de Acesso com 44 caracteres e obrigar o preenchimento do campo TMOV.CHAVEACESSONFE apenas quando o tipo de documento for de NF-e e CT-e.
Causas
Obrigar o usuário a preencher o campo chave de acesso do movimento com 44 caracteres e obrigar o preenchimento do apenas quando o tipo de documento for de NF-e e CTe.
Solução
Para banco de dados SQL
1 - CRIAR UMA FÓRMULA PARA O CAMPO CHAVE DE ACESSO DO MOVIMENTO
CÓDIGO:CHAVE
TEXTO: TABMOV ('CHAVEACESSONFE' , 'S')
2 - CRIAR UMA CONSULTA SQL PARA VALIDAÇÃO DE '44' CARACTERES DO TIPO 'NUMERAL'
CÓDIGO: VALIDACHAVE
TEXTO: SELECT 1 AS RESULTADO FROM GCOLIGADA
WHERE CODCOLIGADA = 1
AND ISNUMERIC (:FRM_CHAVE) = 1
AND LEN(RTRIM(:FRM_CHAVE))=44
3 - CRIAR UMA FÓRMULA DE CONSISTÊNCIA (INCLUIR A MESMA NOS PARÂMETROS DO TIPO DE MOVIMENTO | ETAPA MOV-OUTROS DADOS)
CÓDIGO: X
TITULO: CHAVE DE ACESSO NÃO É VALIDA
TEXTO:
EXECSQL ('VALIDACHAVE');
SE TABMOV ('CODTDO' , 'S') = 'XX' OU TABMOV ('CODTDO' , 'S') = 'YY'
ENTAO SE RESULTSQL ('VALIDACHAVE','RESULTADO') = 1
ENTAO 1
SENAO 0
FIMSE
SENAO 1
FIMSE
OBS: Onde consta XX deverá ser informado o tipo de documento de nota fiscal eletrônica e onde existe o YY deverá ser informado o tipo de documento de conhecimento de transporte eletrônico.
Informações Adicionais
Para utilizar a consulta em Oracle será necerrário criar a função ISNUMERIC e alterar o LEN para LENGTH.
Comando para criar a função ISNUMERIC
create or replace function isnumeric(p_value in varchar2) return number
as
l_ret number;
begin
-- Try to cast to a number
begin
l_ret := to_number(p_value);
-- if the line above worked then just reset to 1
l_ret := 1;
exception
when others then
-- Something, anything, went wrong
l_ret := 0;
end;
-- Return
return l_ret;
end isnumeric;
Data de Produção do Documento: 28/03/2012