BOIN176 que não reconhece o documento

Discussão em 'Progress 4GL' iniciado por mtorres, Maio 19, 2015.

  1. mtorres

    mtorres Sem Pontuação

    Bom dia pessoal.

    Estou desenvolvendo um programa que dá entrada de notas na tabela "docum-est". Uso a BOIN090 para gravar os dados da capa da nota e a BOIN176 para gravar os itens.

    Gravo a capa da nota via BOIN090 e encontro a nota via FIND. Ou seja, a capa da nota é inserida com sucesso. Quando vou incluir os itens sempre me retorna um erro dizendo que o documento não foi encontrado.

    Não sei o que pode estar errado, pois a mesma chave que uso para criar o documento via BOIN090 eu uso para criar o item do documento (pela BOIN176). Mesmo assim o erro acontece.

    Durante a geração do documento não acontecem erros (tanto que encontro o mesmo através de um FIND). Então não sei o motivo do documento não estar sendo encontrado.

    Se precisar coloco o fonte da API que fiz para criar o documento e os itens.


    Att,
    Marcelo Torres
  2. Eilleen

    Eilleen Membro Ativo

    Bom dia... teria que ver o código sim... se puder postar... ;)
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    tem a questão da entrada fiscal e fisica, qual vc está fazendo ?
  4. mtorres

    mtorres Sem Pontuação

    Primeiramente obrigado pela ajuda...
    Segue o código da API que uso para gerar o documento e os itens.

    A entrada que estou fazendo é similar a que é feita pelo RE1001. É entrada fiscal (eu acho).


    Código:
    /* Variaveis do Recebimento Fiscal ---                                  */
    DEF TEMP-TABLE tt-docum-est NO-UNDO LIKE docum-est
        FIELD r-rowid AS ROWID.
    
    DEF TEMP-TABLE tt-item-doc-est NO-UNDO LIKE item-doc-est
        FIELD r-rowid AS ROWID.
    DEF TEMP-TABLE wt-item-doc-est NO-UNDO LIKE item-doc-est
        FIELD r-rowid AS ROWID.
    
    DEF TEMP-TABLE tt-dupli-apagar NO-UNDO LIKE dupli-apagar
        FIELD r-rowid AS ROWID.
         
    /* Temp-Table tt-erro Definitions ---*/
    {method/dbotterr.i}
    
    DEFINE VARIABLE h-boin090      AS HANDLE.
    DEFINE VARIABLE h-boin176      AS HANDLE.
    
    DEFINE INPUT  PARAMETER TABLE FOR tt-docum-est.
    DEFINE INPUT  PARAMETER TABLE FOR tt-item-doc-est.
    DEFINE INPUT  PARAMETER TABLE FOR tt-dupli-apagar.
    DEFINE OUTPUT PARAMETER c-erros AS CHARACTER.
    
    
    EMPTY TEMP-TABLE tt-dupli-apagar.
    
    IF NOT VALID-HANDLE(h-boin090) OR
       h-boin090:TYPE      <> "PROCEDURE":U OR
       h-boin090:FILE-NAME <> "inbo/boin090.p":U THEN
        RUN inbo/boin090.p PERSISTENT SET h-boin090.
    
    IF NOT VALID-HANDLE(h-boin176) OR
       h-boin176:TYPE      <> "PROCEDURE":U OR
       h-boin176:FILE-NAME <> "inbo/boin176.p":U THEN
        RUN inbo/boin176.p PERSISTENT SET h-boin176.
    
    ASSIGN c-erros = "".
    
    FIND FIRST tt-docum-est
        NO-LOCK NO-ERROR.
    
    /* Cria Recebimento Fiscal */
    RUN openQueryStatic IN h-boin090 (INPUT "Main":U).
    RUN emptyRowErrors  IN h-boin090.
    RUN setRecord       IN h-boin090 (INPUT TABLE tt-docum-est).
    RUN createRecord    IN h-boin090.
    RUN getRowErrors    IN h-boin090 (OUTPUT TABLE RowErrors).
    
    IF CAN-FIND(FIRST RowErrors
               WHERE RowErrors.ErrorSubType = "ERROR":U  ) THEN DO:
       FOR EACH rowerrors
           WHERE rowerrors.errorsubtype = "ERROR":
           ASSIGN c-erros = c-erros + rowerrors.errordescription + "//".
    
           MESSAGE "090." rowerrors.errordescription
               VIEW-AS ALERT-BOX INFO BUTTONS OK.
       END.
    
       ASSIGN c-erros = "Erro ao Gerar o Recebimento (" + TRIM(tt-docum-est.nro-docto) + ")" + "//" + c-erros.
       RETURN 'ADM-ERROR'.
    END.
    
    
    
    FIND docum-est
        WHERE docum-est.serie-docto  = tt-docum-est.serie        AND
              docum-est.nro-docto    = tt-docum-est.nro-docto    AND
              docum-est.cod-emitente = tt-docum-est.cod-emitente AND
              docum-est.nat-operacao = tt-docum-est.nat-operacao
        NO-LOCK NO-ERROR.
    
    MESSAGE "Docto:" docum-est.nro-docto
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    
    /* Cria Itens do Recebimento*/
    FOR EACH tt-item-doc-est:
        EMPTY TEMP-TABLE wt-item-doc-est.
    
        ASSIGN tt-item-doc-est.serie-docto  = docum-est.serie-docto
               tt-item-doc-est.nro-docto    = docum-est.nro-docto
               tt-item-doc-est.cod-emitente = docum-est.cod-emitente
               tt-item-doc-est.nat-operacao = docum-est.nat-operacao.
    
        CREATE wt-item-doc-est.
        BUFFER-COPY tt-item-doc-est TO wt-item-doc-est.
    
        MESSAGE "Série:" wt-item-doc-est.serie-docto SKIP
                "Docto:" wt-item-doc-est.nro-docto SKIP
                "Emitente:" wt-item-doc-est.cod-emitente SKIP
                "Natureza:" wt-item-doc-est.nat-operacao SKIP
                "Sequencia:" wt-item-doc-est.sequencia
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    
        RUN openQueryStatic IN h-boin176 (INPUT "Main":U).
        RUN emptyRowErrors IN h-boin176.
        RUN setRecord IN h-boin176 (INPUT TABLE wt-item-doc-est).
        RUN createRecord IN h-boin176.
        RUN getRowErrors IN h-boin176 (OUTPUT TABLE RowErrors).
    
        IF CAN-FIND(FIRST RowErrors
                   WHERE RowErrors.ErrorSubType = "ERROR":U  ) THEN DO:
    
           FOR EACH rowerrors WHERE
                    RowErrors.ErrorSubType = "ERROR":U:
               ASSIGN c-erros = c-erros + rowerrors.errordescription + "//".
    
               MESSAGE "176." RowErrors.ErrorNumber "-" rowerrors.errordescription
                   VIEW-AS ALERT-BOX INFO BUTTONS OK.
           END.
    
           ASSIGN c-erros = "Erro ao Gerar os Itens do Recebimento (" + TRIM(wt-item-doc-est.nro-docto) + " - " +
                             TRIM(wt-item-doc-est.it-codigo) + "/" + TRIM(wt-item-doc-est.cod-refer) + ")" + "//" +
                             c-erros.
    
           RETURN 'ADM-ERROR'.
        END.
    END.
    
    
    FIND docum-est
        WHERE docum-est.serie-docto  = tt-docum-est.serie-docto  AND
              docum-est.nro-docto    = tt-docum-est.nro-docto    AND
              docum-est.cod-emitente = tt-docum-est.cod-emitente AND
              docum-est.nat-operacao = tt-docum-est.nat-operacao
        NO-LOCK NO-ERROR.
    
    IF VALID-HANDLE(h-boin090) THEN
        DELETE PROCEDURE h-boin090.
    
    IF VALID-HANDLE(h-boin176) THEN
        DELETE PROCEDURE h-boin176.
    
    RETURN 'OK'.
    
    Agradeço muito toda e qualquer ajuda... Já estou com este problema me martirizando uns dois ou três dias.

Compartilhe esta Página