1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[RESOLVIDO] Exemplo de UPC na bodi135cancel.p

Discussão em 'EMS , HCM e Totvs 11' iniciado por PontoSistemas, Agosto 4, 2016.

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

    PontoSistemas Membro Participativo

    Preciso de um exemplo de upc para a bodi135cancel.p

    O grande problema está em como devolver para a bo que não é para continuar com a validação pois tem um erro tratado.

    Fluxo: ft2200 -> valida a nota -> upc (evento onvalidatecancel) ->retornar erro tratado.

    Tentei return "nok" e não funcionou.
    A Totvs respondeu isso no chamado, porém sinceramente não sei o que fazer.

    Senhores, boa tarde!

    Conforme solicitado, segue abaixo:

    /*******************************CHAMADA EPC*******************************/
    {method/svc/custom/custom.i &event = "onvalidatecancel"}

    for each RowErrors
    where RowErrors.ErrorType = "INTERNAL":U:
    delete RowErrors.
    end.

    /************************************************************************/

    IF CAN-FIND(FIRST RowErrors WHERE RowErrors.ErrorSubType = "ERROR":U) THEN
    RETURN "NOK":U.

    RETURN 'OK':U.
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Olá,

    A mensagem que eles passaram é que você precisa criar um registro de erro, para ai sim a BO ser parada, como a handle da BO tenta utilizar esta procedure aqui no lugar onde esta fazendo o RETURN 'NOK'.
    Código:
    RUN _insertErrorManual IN hbodi135cancel (INPUT pErrorNumber /*INTEGER*/,
                                              INPUT pErrorType /*CHARACTER*/,
                                              INPUT pErrorSubType /*CHARACTER*/,
                                              INPUT pErrorDescription /*CHARACTER*/,
                                              INPUT pErrorHelp /*CHARACTER*/,
                                              INPUT pErrorParameters /*CHARACTER*/)
    
    Abs.
  3. PontoSistemas

    PontoSistemas Membro Participativo

    Valeu Cleiton, vou testar.
  4. PontoSistemas

    PontoSistemas Membro Participativo

    Não funcionou.
    Coloquei assim no código da upc, mas mesmo assim retorna para a tela do ft2200 que as informações estão OK.

    {include/i-epc200.i}
    {include/i-freeac.i}

    {system/Error.i}
    {system/InstanceManagerDef.i}
    {method/dbotterr.i}


    define input param p-ind-event as char no-undo.
    define input-output param table for tt-epc.

    define variable rNotaFiscal as rowid no-undo.
    define variable notaFiscal as handle no-undo.

    DEFINE VARIABLE bo-cancela AS HANDLE NO-UNDO.


    define variable hasError as logical no-undo.

    DEF BUFFER b-nota-fiscal-canc FOR nota-fiscal.

    if p-ind-event = 'onvalidatecancel' AND PROGRAM-NAME(5) <> "ftp/pift0400ad.w" then do:
    ASSIGN hasError = FALSE.
    VALIDA:
    do {system/try.i VALIDA}:
    FIND FIRST tt-epc
    where tt-epc.cod-event = p-ind-event
    AND tt-epc.cod-parameter = 'Table-Rowid' NO-LOCK.

    IF AVAIL tt-epc THEN DO:
    assign rNotaFiscal = to-rowid(tt-epc.val-parameter).
    FIND b-nota-fiscal-canc NO-LOCK
    WHERE ROWID(b-nota-fiscal-canc) = rNotaFiscal NO-ERROR.

    IF AVAIL b-nota-fiscal-canc THEN DO:
    FIND cst_pre_nota_fiscal NO-LOCK
    WHERE cst_pre_nota_fiscal.cod-estabel = b-nota-fiscal-canc.cod-estabel
    AND cst_pre_nota_fiscal.serie = b-nota-fiscal-canc.serie
    AND cst_pre_nota_fiscal.nr-nota-fis = b-nota-fiscal-canc.nr-nota-fis NO-ERROR.
    IF AVAIL cst_pre_nota_fiscal THEN DO:
    IF cst_pre_nota_fiscal.log_canc_apvdo <> YES THEN DO:
    IF NOT VALID-HANDLE(bo-cancela) THEN DO:
    RUN dibo/bodi135cancel.p PERSISTENT SET bo-cancela.
    END.
    RUN _insertErrorManual IN bo-cancela (INPUT 17006 /*INTEGER*/,
    INPUT "EMS" /*CHARACTER*/,
    INPUT "ERROR" /*CHARACTER*/,
    INPUT "Solicitação de Cancalmento da Nota fiscal não foi aprovada" /*CHARACTER*/,
    INPUT "Favor verificar com os aprovadores a solicitação de cancelamento. Após aprovado o cancelamento será feito pelo Portal Faturamento." /*CHARACTER*/,
    INPUT "" /*CHARACTER*/).
    RUN destroy IN bo-cancela.
    ASSIGN hasError = TRUE.
    END.
    END.
    END.
    END.
    END.
    return string(hasError, 'NOK/OK':u).
    END.
  5. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Uma dúvida, esta UPC esta na bodi135cancel ?

    Se estiver certo, não funcionou porque você que executou a bodi135cancel.p, na verdade você precisa navegar na tt-epc para pegar a handle do programa e executar nele. Quando você executou, na verdade criou uma instância, que não tinha nada a ver com o processo que esta validando.

    Se não conseguir encontrar, na segunda-feira, eu tento gerar um exemplo no meu ambiente.
  6. PontoSistemas

    PontoSistemas Membro Participativo

    Ok, entendi. Vou tentar.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página