[RESOLVIDO] Inserir erro em EPC

Discussão em 'EMS , HCM e Totvs 11' iniciado por brunoowr, Janeiro 19, 2017.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. brunoowr

    brunoowr Membro Participativo

    Estou desenvolvendo uma EPC para o MI0307 onde o campo "Manutenção" deve ser obrigatório.
    Ao salvar uma ordem, o programa já faz uma série de validações e exibe todos os erros nesta tela.

    upload_2017-1-19_11-17-12.png

    Gostaria de saber como inserir mais erros nessa mesma tela. Pois estou exibindo uma outra mensagem de erro mas mesmo assim o registro está sendo criado.

    Segue meu fonte.
    Código:
    {api/dzapi999.i}
                                                                                                             
    define input param p-ind-event       as char          no-undo.
    define input param p-ind-object      as char          no-undo.
    define input param p-wgh-object      as handle        no-undo.
    define input param p-wgh-frame       as widget-handle no-undo.
    define input param p-cod-table       as char          no-undo.
    define input param p-row-table       as rowid         no-undo.
    
    /* Variable Definitions *****************************************************/
    def var c-objeto                                        as character    no-undo.
    def var handle-mi0307a                                  as handle       no-undo.
    define new global shared variable wh-browser-mi0307a    as handle       no-undo.
    def var i-aux                                           as integer      no-undo.
    def var wh-br-col                                       as handle       no-undo.
    def var valida                                          as log          no-undo.
    def var usuar-man                                      as log          no-undo.
    
    define new global shared variable adm-broker-hdl        as handle       no-undo.
    define new global shared variable c-seg-usuario         as char         no-undo.
    
    assign c-objeto = entry(num-entries(p-wgh-object:file-name,"~/"),p-wgh-object:file-name, "~/") no-error.
    /*
    output to "c:\temp\mi0307a.txt" append.
        disp                                             
           'Nome progrm: ' c-objeto                      skip
           'Nome evento: ' p-ind-Event                   skip
           'Nome objeto: ' p-ind-object                  skip
           'WHO:         ' string ( p-wgh-object )       skip
           'WHF:         ' string ( p-wgh-frame )        skip
           'WHF Nome:    ' string ( p-wgh-frame:name )   skip
           'Nome tabela: ' p-cod-table                   skip
           'RowiD tabela: ' string ( p-row-table )           
            view-as alert-box.
    output to close.*/
    
    /*"cd-equip-res".*/
    if (c-objeto = "mi0307a.w" and p-ind-Event = "BEFORE-ASSIGN" and p-ind-object = "CONTAINER" and p-cod-table = "ord-manut") then do:
        run cpn/api/dzapi999.p (input p-wgh-frame:first-child, output table tt-objeto).
    
        for each tt-objeto
           where tt-objeto.name = "cd-manut".
    
            assign valida     = false
                   usuar-man  = false.
    
            for each usuar_grp_usuar
               where usuar_grp_usuar.cod_grp_usuar = "MAS" or usuar_grp_usuar.cod_grp_usuar = "MAU" or usuar_grp_usuar.cod_grp_usuar = "MTS" no-lock.
       
                if (usuar_grp_usuar.cod_usuario = c-seg-usuario) then
                    assign usuar-man = true.
            end.
    
            if (usuar-man = true) then do: /*valida se manutenção existe*/
                for each manut.
                    if (manut.cd-manut = tt-objeto.handle:screen-value) then
                        assign valida = true.
                end.
    
                if (valida = false) then do:
                    run utp/ut-msgs ("show":U, 27979, "Validação de dados !!! ~~Campo manutenção em branco ou inválido, favor preencher com uma informação válida").
                    return no-apply.
                end.
            end.
            else do: /*valida se manutenção é 000CO001 ou 000CO002*/
                if (tt-objeto.handle:screen-value <> "000CO001" and tt-objeto.handle:screen-value <> "000CO002") then do:
                    run utp/ut-msgs ("show":U, 27979, "Validação de dados !!! ~~Usuário só pode selecionar as manutenções 000CO001 ou 000CO002").
                    return no-apply.
                end.
            end.
        end.
    end.
    
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Geralmente você colocando RETURN-VALUE = "NOK" antes do RETURN NO-APPLY resolveria, vale a tentativa.

    Sobre colocar os erros na tela mencionada você precisaria colocar registros na tabela de erro, porém creio ser impossível porque ela não é uma temp-table GLOBAL SHARED.
  3. brunoowr

    brunoowr Membro Participativo

    Fiz o teste mas não funcionou Rafael, o erro aparece somente como mensagem, e o registro é criado normalmente.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    vc fez return 'NOK' ao inves de return no-apply
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    se fosse uma EPC mesmo, que é a versão de UPC para BOs e APIs, vc cria as mensagens de erro na propria TT-EPC, todo ponto de UPC verifica se a rotina chamada retorna 'NOK', usando o return-value

    pra que a rotina pegue o return-value = 'NOK' vc tem que fazer no lugar dos seus return no-apply, return 'NOK'.
  6. brunoowr

    brunoowr Membro Participativo

    Richard, alterei de return-value = 'NOK' para return = 'NOK' e mesmo assim, a mensagem de erro é exibida mas o registro é criado. Como funcionaria para criar o erro na tt-epc?
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página