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] Composição da Estrutura do Item

Discussão em 'EMS , HCM e Totvs 11' iniciado por rafaelfonseca, Agosto 5, 2018.

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

    rafaelfonseca Membro Participativo

    Prezados,

    Estou querendo desenvolver um específico com a seguinte função:
    1. determinar quais itens (produto acabado) e necessidade de cada um.
    2. desdobrar essa necessidade para todos os níveis abaixo do produto acabado.
    3. por fim subtrair o acumulado da necessidade pelo estoque do item, pois pode acontecer do componente ter mais de um pai, ou seja, gerá necessidade mais de uma vez.

    Eu consegui fazer a primeira etapa, gerei o item e qtd em uma temp-table, mas não consigo pensar em uma lógica para compor a estrutura em todos niveis abaixo e distribuir as necessidades ...
  2. marco.luques

    marco.luques Membro Ativo

    Você tem que fazer um looping chamando subprograma dentro dele mesmo, toda vez que um item da estrutura for fabricado
  3. rafaelfonseca

    rafaelfonseca Membro Participativo

    Obrigado !!
    Marco, vc poderia me dar um exemplo de como fazer isso por favor, sou inciante ..
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Isso se chama recursividade, vc usar chamando programa ou só uma procedure.
  5. Fernando Pinhatti

    Fernando Pinhatti Membro Participativo

    Bom dia #Rafael. Vê se o código abaixo te ajuda..


    DEF BUFFER b-estrutura FOR estrutura.
    DEF BUFFER b-item FOR item.

    DEF TEMP-TABLE tabela-a NO-UNDO
    FIELD tt-it-codigo LIKE ITEM.it-codigo
    FIELD tt-preco AS DECI.
    .

    DEF VAR dec-cod-compon AS CHAR.
    DEF VAR d-preco AS DECI.
    DEF VAR d-tot AS DECI.

    FOR EACH ITEM WHERE item.it-codigo = "197800048",

    EACH estrutura WHERE estrutura.it-codigo = ITEM.it-codigo:

    FIND FIRST item-uni-estab WHERE item-uni-estab.it-codigo = estrutura.es-codigo NO-ERROR.


    FIND FIRST b-item WHERE b-item.it-codigo = estrutura.es-codigo NO-ERROR.
    IF AVAIL b-item
    AND b-item.compr-fabr = 1 THEN
    d-preco = item-uni-estab.preco-ul-ent.

    CREATE tabela-a.
    ASSIGN tabela-a.tt-it-codigo = estrutura.es-codigo
    tabela-a.tt-preco = d-preco * estrutura.quant-usada
    d-preco = 0.
    .

    ASSIGN dec-cod-compon = estrutura.es-codigo.

    RUN pi-componente-kit(INPUT dec-cod-compon).


    END.

    PROCEDURE pi-componente-kit:
    DEFINE INPUT PARAMETER codcomp LIKE dec-cod-compon.


    FOR EACH b-estrutura
    WHERE b-estrutura.it-codigo = codcomp
    NO-LOCK:

    FIND FIRST item-uni-estab WHERE item-uni-estab.it-codigo = b-estrutura.es-codigo NO-ERROR.

    FIND FIRST b-item WHERE b-item.it-codigo = b-estrutura.es-codigo NO-ERROR.
    IF AVAIL b-item
    AND b-item.compr-fabr = 1 THEN
    d-preco = item-uni-estab.preco-ul-ent.

    CREATE tabela-a.
    ASSIGN tabela-a.tt-it-codigo = b-estrutura.es-codigo
    tabela-a.tt-preco = d-preco * b-estrutura.quant-usada
    d-preco = 0
    .

    ASSIGN dec-cod-compon = b-estrutura.es-codigo.

    RUN pi-componente-kit(INPUT dec-cod-compon).


    END.

    END PROCEDURE.



    FOR EACH tabela-a:

    d-tot = d-tot + tabela-a.tt-preco .


    DISP tabela-a.

    END.



    MESSAGE d-tot
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    reissobr curtiu isso.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

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

Compartilhe esta Página