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

Acumular saldo em estoque

Discussão em 'Progress 4GL' iniciado por rafaelfonseca, Abril 11, 2014.

  1. rafaelfonseca

    rafaelfonseca Membro Participativo

    Pessoal,
    Estou com dificuldade no programa abaixo, os itens estão em dois depósitos, quando efetua o put no csv, o item imprime duas vezes devido aos depositos diferentes.

    Como ficaria o código abaixo, acumulando as quantidades em estoque dos depositos e mostrando apenas o total ?


    output to 'C:\temp\Necessidade de Materiais.csv'.

    put 'ITEM;DESCRICAO;FAMILIA;MEDIA;FORNECEDOR;PRECO;ESTOQUE;DIAS ESTOQ;NECESSIDADE;PRECO TOTAL' skip.

    d-dias as decimal.
    d-comprar as decimal.

    for each item
    where item.cod-estabel = '200'
    and item.fm-codigo = '010'
    or item.fm-codigo = '070'
    or item.fm-codigo = '1000'
    or item.fm-codigo = '1010' no-lock:


    for each saldo-estoq
    where saldo-estoq.it-codigo = item.it-codigo
    and saldo-estoq.cod-localiz = '' no-lock:

    d-dias = 0.
    d-comprar = 0.

    d-dias = saldo-estoq.qtidade-atu / ( item.quant-segur / 30 ).
    d-comprar = ( 2 * item.quant-segur ) - saldo-estoq.qtidade-atu.

    put unformat
    item.it-codigo ';'
    item.desc-item ';'
    item.fm-codigo ';'
    item.quant-segur ';'
    ';'
    ';'
    saldo-estoq.qtidade-atu ';'
    d-comprar ';'
    ';'
    skip.

    end.
    end.
  2. Fernando Pinhatti

    Fernando Pinhatti Membro Participativo

    O ideal é jogar as informações para uma Temp-table, e acumular os valores encontrados no estoque.
  3. edu_felix

    edu_felix Sem Pontuação

    Bom dia.

    Tente alterar sua busca conforme abaixo. Observe que você tem and e or ao mesmo tempo, com isso a seleção não é respeitada para o codigo do estabelecimento.

    for each item
    where item.cod-estabel = '200'
    and (item.fm-codigo = '010'
    or item.fm-codigo = '070'
    or item.fm-codigo = '1000'
    or item.fm-codigo = '1010') no-lock:

    Espero ter ajudado
  4. rafaelfonseca

    rafaelfonseca Membro Participativo

    Como ficaria jogando pra uma temp-table e acumulando ?
  5. Fernando Pinhatti

    Fernando Pinhatti Membro Participativo

    def temp-table tt-estoque no-undo
    field tt-item as char
    field tt-desc-item as char
    field tt-fm-codigo as char
    field tt-qt-seg as deci
    field tt-qt-estoque as deci
    field tt-qt-compra as deci.


    for each item
    where item.cod-estabel = '200'
    and item.fm-codigo = '010'
    or item.fm-codigo = '070'
    or item.fm-codigo = '1000'
    or item.fm-codigo = '1010' no-lock:


    for each saldo-estoq
    where saldo-estoq.it-codigo = item.it-codigo
    and saldo-estoq.cod-localiz = '' no-lock:


    find first tt-estoque where tt-estoque.tt-item = saldo-estoq.it-codigo no-error.

    if not avail tt-estoque then do:
    create tt-estoque.
    assign
    tt-estoque.tt-item = item.it-codigo
    tt-estoque.tt-desc-item = item.desc-item
    tt-estoque.tt-fm-codigo = item.fm-codigo
    tt-estoque.tt-qt-seg = item.quant-segur
    tt-estoque.tt-qt-estoque = saldo-estoq.qtidade-atu.
    end.
    else do:

    assign tt-estoque.tt-qt-estoque = tt-estoque.tt-qt-estoque + saldo-estoq.qtidade-atu.

    end.

    end.
    end.

    for each tt-estoque:
    d-dias = 0.
    d-comprar = 0.


    d-dias = tt-estoque.tt-qt-estoque / (tt-estoque.tt-qt-seg / 30 ).
    d-comprar = ( 2 * tt-estoque.tt-qt-seg ) - tt-estoque.tt-qt-estoque.

    put unformat
    tt-estoque.tt-item ';'
    tt-estoque.tt-desc-item ';'
    tt-estoque.tt-fm-codigo ';'
    tt-estoque.tt-qt-seg ';'
    ';'
    ';'
    tt-estoque.tt-qt-estoque';'
    d-comprar ';'
    ';'
    skip.
    end.

    espero ter ajudado.

Compartilhe esta Página