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