1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida API de manutenção do limite de credito do cliente

Discussão em 'EMS , HCM e Totvs 11' iniciado por magidigor, Julho 20, 2020.

  1. magidigor

    magidigor Membro Participativo

    Boa tarde,

    Alguém saberia me informar qual API usar para dar manutenção no campo Limite de Credito e Data Limite de Credito. Estou tentando pela API cdapi329, mas os campos do limite não estão atualizando. Os campos categoria e observacoes atualizam com sucesso.

    Código:
        
        CREATE tt-emitente.
    
        BUFFER-COPY buf-emitente TO tt-emitente
            ASSIGN tt-emitente.ind-tipo-movto   = 2
                   tt-emitente.lim-credito      = pLimite
                   tt-emitente.dt-lim-cred      = pDt-lim-cred
                   tt-emitente.categoria        = pBloqueio
                   tt-emitente.user-libcre      = v-seg-usuario
                   tt-emitente.dt-atualiza      = TODAY
                   tt-emitente.hra-atualiz      = STRING(TIME,"HH:MM:SS")
                   tt-emitente.observacoes      = tt-emitente.observacoes + CHR(10) + pObservacao
                   NO-ERROR.
    
        IF CAN-FIND (FIRST loc-entr NO-LOCK
                         WHERE loc-entr.nome-abrev   = buf-emitente.nome-abrev ) THEN DO:
    
            FOR EACH loc-entr NO-LOCK
                WHERE loc-entr.nome-abrev   = emitente.nome-abrev:
    
                /* tt-loc-entr */
                CREATE tt-loc-entr.
    
                BUFFER-COPY loc-entr TO tt-loc-entr.
            END.
        END.
        ELSE DO:
    
            /* tt-loc-entr */
            CREATE tt-loc-entr.
    
            ASSIGN tt-loc-entr.cod-entrega  = "Padrão"
                   tt-loc-entr.nome-abrev   = tt-emitente.nome-abrev
                   tt-loc-entr.cidade       = tt-emitente.cidade
                   tt-loc-entr.endereco     = tt-emitente.endereco
                   tt-loc-entr.e-mail       = tt-emitente.e-mail
                   tt-loc-entr.estado       = tt-emitente.estado
                   tt-loc-entr.ins-estadual = tt-emitente.ins-estadual
                   tt-loc-entr.pais         = tt-emitente.pais
                   tt-loc-entr.cep          = tt-emitente.cep
                   tt-loc-entr.cgc          = tt-emitente.cgc.
        END.
    
        FIND FIRST dist-emitente NO-LOCK
             WHERE dist-emitente.cod-emitente = buf-emitente.cod-emitente NO-ERROR.
    
        CREATE tt-dist-emitente.
    
        IF  AVAIL dist-emitente THEN DO:
            BUFFER-COPY dist-emitente TO tt-dist-emitente.
            ASSIGN tt-dist-emitente.ind-tipo-movto = 2. /* Alteração */
        END.
        ELSE
            ASSIGN tt-dist-emitente.ind-tipo-movto = 1  /* Inclusão */
                   tt-dist-emitente.cod-emitente   = tt-emitente.cod-emitente.
    
        run cdp/cdapi329.p (input  table tt-versao-integr,
                            output table tt-erros-geral,
                            input  table tt-emitente,
                            input  table tt-loc-entr,
                            input  table tt-dist-emitente).
    
        if  can-find (first tt-erros-geral) THEN DO:
    
            for FIRST tt-erros-geral no-lock.
    
                CREATE RowErrors.
                assign RowErrors.ErrorSequence      = 0
                       RowErrors.ErrorNumber        = 7
                       ROwErrors.ErrorDescription   = "Erro ao atualizar o cliente!~~" + tt-erros-geral.des-erro.
    
                return "NOK":U.
            end.
        END.
    
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    que tal ir direto na tabela ? afinal são campos que geram informação e não campos que são gerados apartir de algum processo, então esses vc não precisa usar apis.
  3. magidigor

    magidigor Membro Participativo

    Olá Richard,

    Então acabei fazendo isso mesmo, mas gosto sempre de esta usando as APIs para fazer alteração de dados. Não sei por qual motivo a API CDAPI329 não altera os campos de limite de credito.

    Achei que poderia haver um outra API responsável por alterar esse dados.

    Obrigado.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    A razão de algumas APIs não fazer o serviço completo é simples, a propria totvs NÃO USA as APIs, então, o desenvolvedor deles atualiza os programas, mas esquece de atualizar as APIs, ja sofri muito com isso.
  5. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    O padrão da Totvs é exatamente esse, eles não usam as APIs que eram pra ser exatamente um negócio pra padronizar tudo.
  6. af.dums

    af.dums Membro Ativo

    Não estou aqui para defender a Totvs, mas fazendo uma reflexão, quantas vezes nós começamos criando uma api específica, mas quando vamos ver metade da regra está na API e metade na tela...
    É complicado, e custoso organizar isso uma vez que está desorganizado, então vai rolando pra "quando der tempo organizo", e esse tempo nunca chega pois isso nunca via prioridade....

Compartilhe esta Página