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

[RESOLVIDO] Api nao gera Volumes corretos - eqapi300

Discussão em 'EMS , HCM e Totvs 11' iniciado por mpdelphi, Maio 9, 2013.

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

    mpdelphi Membro Participativo

    Srs bom dia, tenho o programa abaixo que gera o embarque automaticamente, é bem simples a funcionalidade dele...

    O problema é que se eu adicionar apenas 1 lote, api calcula correto o peso bruto e peso liquido que aparece la no resumo do embarque (eq0506, aba resumo), mas se eu adicionar mais de 1 lote ele se perde todo e faz o calculo do peso errado.

    perceba abaixo que alimento a tabela tt-aloc-man com 2 registros de lotes diferentes, se e alimentar com apenas 1 registro ele calcula corretamente.

    Se eu pegar este embarque que foi gerado com 2 lotes e peso vai estar errado, eu desalocar e alocar novamente 1 dos lotes usando o eq0506 o embarque será atualizado com o calculo correto.

    Ou seja, provavelmente esta faltando eu executar algum metodo para que os pesos sejam calculados corretamente, alguma dica ??!

    Código:
    DEF VAR h-api       AS HANDLE NO-UNDO.
    {cdp/cdcfgdis.i}
    {eqp/eqapi300.i}
    
    def temp-table tt-erro no-undo
        field i-sequen  as int             
        field cd-erro   as int
        field mensagem  as char
        field parametro as char
        index ch-seq is primary
            i-sequen.
    
    
    
    RUN eqp/eqapi300.p PERSISTENT SET h-api.    
    
    FIND LAST embarque NO-LOCK NO-ERROR.
    
    /* criando o cabeçalho do embarque*/
    CREATE tt-embarque.
    ASSIGN tt-embarque.nr-embarque = IF AVAIL embarque THEN embarque.nr-embarque + 1 ELSE 1
           tt-embarque.cod-estabel = '01'
           tt-embarque.dt-embarque = TODAY
           tt-embarque.identific   = 'super'
           tt-embarque.cod-rota    = ""
           tt-embarque.nome-transp = ""
           tt-embarque.placa       = ""
           tt-embarque.cod-tipo    = "" 
           tt-embarque.usuario     = 'super'
           tt-embarque.i-sequen    = 1
           tt-embarque.ind-oper    = 1. /* Inclusão */
    
    RUN pi-recebe-tt-embarque IN h-api (input table tt-embarque).
    RUN pi-trata-tt-embarque  IN h-api (input 'MSG', input yes).
    RUN pi-devolve-tt-erro    IN h-api (output table tt-erro).
    
    
    /*cria o tt-aloc-man com o de-qtd a alocar*/   
    /* alocando manualmente o primeiro lote  */
    CREATE tt-aloc-man.
    ASSIGN tt-aloc-man.nr-embarque  = tt-embarque.nr-embarque
           tt-aloc-man.nome-abrev   = 'trw limeira'
           tt-aloc-man.nr-pedcli    = 'po248024'
           tt-aloc-man.nr-sequencia = 1390
           tt-aloc-man.it-codigo    = 'slp0331'
           tt-aloc-man.cod-estabel  = '01'
           tt-aloc-man.cod-depos    = 'exp'
           tt-aloc-man.cod-localiz  = ''
           tt-aloc-man.lote         = '01.1639366'
           tt-aloc-man.cod-refer    = ''
           tt-aloc-man.nr-entrega   = 60 /*10*/
           tt-aloc-man.qt-a-alocar  = 150
           tt-aloc-man.i-sequen     = 1.
           /*tt-aloc-man.nr-resumo    = 1*/
    
    /* alocando manualmente o SEGUNDO lote  */
    CREATE tt-aloc-man.
    ASSIGN tt-aloc-man.nr-embarque  = tt-embarque.nr-embarque
           tt-aloc-man.nome-abrev   = 'trw limeira'
           tt-aloc-man.nr-pedcli    = 'po248024'
           tt-aloc-man.nr-sequencia = 1390
           tt-aloc-man.it-codigo    = 'slp0331'
           tt-aloc-man.cod-estabel  = '01'
           tt-aloc-man.cod-depos    = 'exp'
           tt-aloc-man.cod-localiz  = ''
           tt-aloc-man.lote         = '01.127532'
           tt-aloc-man.cod-refer    = ''
           tt-aloc-man.nr-entrega   = 60 /*10*/
           tt-aloc-man.qt-a-alocar  = 120
           tt-aloc-man.i-sequen     = 1.
    
    
    
    RUN pi-recebe-tt-aloc-man IN h-api (INPUT TABLE tt-aloc-man).
    RUN pi-trata-tt-aloc-man  IN h-api (INPUT YES).
    RUN pi-devolve-tt-erro   IN h-api (OUTPUT TABLE tt-erro).
    FOR EACH tt-erro:
        DISP tt-erro WITH 1 COL WIDTH 300.
    END.
    
    RUN pi-encerra-embarque IN h-api (INPUT YES).
    RUN pi-devolve-tt-erro   IN h-api (OUTPUT TABLE tt-erro).
    
    FOR EACH tt-erro:
        DISP tt-erro WITH 1 COL WIDTH 500.
    END.
  2. magidigor

    magidigor Membro Participativo

    Bom dia, Marcos.

    Gostaria de saber se você conseguiu resolver esse problema. Acabei de migrar para o TOTVS 11 e estou com o mesmos problema.

    Aguardo retorno.

    Desde já, agradeço.

    Att.

    Magid Sousa.
  3. magidigor

    magidigor Membro Participativo

    Bom dia.

    Problema resolvido.

    É que quando você esta trabalhando com a tt-aloc-man, você deve alocar registro por registro.

    Exemplo acima no modelo correto:

    Código:
    DEF VAR h-api      AS HANDLE NO-UNDO.
    {cdp/cdcfgdis.i}
    {eqp/eqapi300.i}
    
    def temp-table tt-erro no-undo
        field i-sequen  as int           
        field cd-erro  as int
        field mensagem  as char
        field parametro as char
        index ch-seq is primary
            i-sequen.
    
    
    
    RUN eqp/eqapi300.p PERSISTENT SET h-api.   
    
    FIND LAST embarque NO-LOCK NO-ERROR.
    
    /* criando o cabeçalho do embarque*/
    CREATE tt-embarque.
    ASSIGN tt-embarque.nr-embarque = IF AVAIL embarque THEN embarque.nr-embarque + 1 ELSE 1
          tt-embarque.cod-estabel = '01'
          tt-embarque.dt-embarque = TODAY
          tt-embarque.identific  = 'super'
          tt-embarque.cod-rota    = ""
          tt-embarque.nome-transp = ""
          tt-embarque.placa      = ""
          tt-embarque.cod-tipo    = ""
          tt-embarque.usuario    = 'super'
          tt-embarque.i-sequen    = 1
          tt-embarque.ind-oper    = 1. /* Inclusão */
    
    RUN pi-recebe-tt-embarque IN h-api (input table tt-embarque).
    RUN pi-trata-tt-embarque  IN h-api (input 'MSG', input yes).
    RUN pi-devolve-tt-erro    IN h-api (output table tt-erro).
    
    
    /*cria o tt-aloc-man com o de-qtd a alocar*/ 
    /* alocando manualmente o primeiro lote  */
    CREATE tt-aloc-man.
    ASSIGN tt-aloc-man.nr-embarque  = tt-embarque.nr-embarque
          tt-aloc-man.nome-abrev  = 'trw limeira'
          tt-aloc-man.nr-pedcli    = 'po248024'
          tt-aloc-man.nr-sequencia = 1390
          tt-aloc-man.it-codigo    = 'slp0331'
          tt-aloc-man.cod-estabel  = '01'
          tt-aloc-man.cod-depos    = 'exp'
          tt-aloc-man.cod-localiz  = ''
          tt-aloc-man.lote        = '01.1639366'
          tt-aloc-man.cod-refer    = ''
          tt-aloc-man.nr-entrega  = 60 /*10*/
          tt-aloc-man.qt-a-alocar  = 150
          tt-aloc-man.i-sequen    = 1.
          /*tt-aloc-man.nr-resumo    = 1*/
    
    
    RUN pi-recebe-tt-aloc-man IN h-api (INPUT TABLE tt-aloc-man).
    RUN pi-trata-tt-aloc-man  IN h-api (INPUT YES).
    RUN pi-devolve-tt-erro  IN h-api (OUTPUT TABLE tt-erro).
    
    FOR EACH tt-aloc-man:
        delete tt-aloc-man.
    END.
    
    /* alocando manualmente o SEGUNDO lote  */
    CREATE tt-aloc-man.
    ASSIGN tt-aloc-man.nr-embarque  = tt-embarque.nr-embarque
          tt-aloc-man.nome-abrev  = 'trw limeira'
          tt-aloc-man.nr-pedcli    = 'po248024'
          tt-aloc-man.nr-sequencia = 1390
          tt-aloc-man.it-codigo    = 'slp0331'
          tt-aloc-man.cod-estabel  = '01'
          tt-aloc-man.cod-depos    = 'exp'
          tt-aloc-man.cod-localiz  = ''
          tt-aloc-man.lote        = '01.127532'
          tt-aloc-man.cod-refer    = ''
          tt-aloc-man.nr-entrega  = 60 /*10*/
          tt-aloc-man.qt-a-alocar  = 120
          tt-aloc-man.i-sequen    = 1.
    
    
    
    RUN pi-recebe-tt-aloc-man IN h-api (INPUT TABLE tt-aloc-man).
    RUN pi-trata-tt-aloc-man  IN h-api (INPUT YES).
    RUN pi-devolve-tt-erro  IN h-api (OUTPUT TABLE tt-erro).
    
    FOR EACH tt-erro:
        DISP tt-erro WITH 1 COL WIDTH 300.
    END.
    
    RUN pi-encerra-embarque IN h-api (INPUT YES).
    RUN pi-devolve-tt-erro  IN h-api (OUTPUT TABLE tt-erro).
    
    FOR EACH tt-erro:
        DISP tt-erro WITH 1 COL WIDTH 500.
    END.


    Espero ajudar quem tiver o mesmo problema.
    lucasiam, rlfritz e fdantas curtiram isso.
  4. fdantas

    fdantas Administrator Moderador

    Problema Resolvido
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página