1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Apenas um registro de Estabelecimento

Discussão em 'Progress 4GL' iniciado por turks, Janeiro 4, 2010.

  1. turks

    turks Membro Participativo

    Pessoal, tenho uma logica aqui que está me dando um problema.
    Na tabela pr-it-per tem 2 registros de cada item, Estabelecimento 101 e 102.

    Porem na hora da execução do relatório aparece apenas do estabelecimenteo 101.
    Creio que a causa para isso estar acontecendo seja pelo fato do meu FOR EACH estar na tabela ITEM, que contem apenas um registro de cada código.

    Alguem pode me dar uma luz?

    A Lógica é essa:

    Código:
    FOR EACH item NO-LOCK WHERE item.it-codigo >= c-ini-codigo 
                            AND item.it-codigo <= c-fim-codigo:
    
        run pi-acompanhar in h-acomp ('Itens: ' + STRING(ITEM.it-codigo)).
    
        FIND FIRST item-uni-estab NO-LOCK WHERE item-uni-estab.it-codigo = ITEM.it-codigo NO-ERROR.
        FIND FIRST familia        NO-LOCK WHERE familia.fm-codigo        = item.fm-codigo NO-ERROR.
        FIND LAST  pr-it-per      NO-LOCK WHERE pr-it-per.it-codigo      = ITEM.it-codigo NO-ERROR.
        FIND FIRST preco-item     NO-LOCK WHERE preco-item.it-codigo     = ITEM.it-codigo NO-ERROR.
    
        
        ASSIGN CF = IF item.compr-fabric = 1 THEN "Comprado" ELSE "Fabricado".
        IF AVAIL pr-it-per THEN ASSIGN preco-medio = pr-it-per.val-unit-ggf-m[1] + pr-it-per.val-unit-mat-m[1] + pr-it-per.val-unit-mob-m[1].
    
    PUT STREAM str-rp     
            ITEM.it-codigo                        ";"
            item.desc-item                        ";"
            ITEM.cod-estabel                      ";"
            item.fm-codigo                        ";"
            familia.descricao                     ";"
            ITEM.un                               ";"
            CF /* <--- Comprado ou Fabricado */   ";"
            item-uni-estab.preco-base             ";"
            item-uni-estab.data-base              ";"
            item.preco-repos                      ";"
            item.data-ult-rep                     ";"
            item.preco-ul-ent                     ";"
            item.data-ult-ent                     ";"
            IF AVAIL preco-item THEN preco-item.preco-venda ELSE 0 ";"
            preco-medio                           ";"
            item.preco-fiscal                     ";"
            item.class-fiscal                     ";"
            item.aliquota-ipi                    SKIP.
            
    END. 
  2. jonas

    jonas Membro Participativo

    Você está dando um find last na tabela pr-it-per.
    A rotina vai trazer somente o último registro encontrado nesta tabela.

    Tenta assim:

    Código:
    FOR EACH item NO-LOCK WHERE item.it-codigo >= c-ini-codigo 
                            AND item.it-codigo <= c-fim-codigo,
           each pr-it-per      NO-LOCK WHERE pr-it-per.it-codigo      = ITEM.it-codigo:
    
    
        run pi-acompanhar in h-acomp ('Itens: ' + STRING(ITEM.it-codigo)).
    
        FIND FIRST item-uni-estab NO-LOCK WHERE item-uni-estab.it-codigo = ITEM.it-codigo NO-ERROR.
        FIND FIRST familia        NO-LOCK WHERE familia.fm-codigo        = item.fm-codigo NO-ERROR.
    /*    FIND LAST  pr-it-per      NO-LOCK WHERE pr-it-per.it-codigo      = ITEM.it-codigo NO-ERROR.*/
        FIND FIRST preco-item     NO-LOCK WHERE preco-item.it-codigo     = ITEM.it-codigo NO-ERROR.
    
        
        ASSIGN CF = IF item.compr-fabric = 1 THEN "Comprado" ELSE "Fabricado".
        IF AVAIL pr-it-per THEN ASSIGN preco-medio = pr-it-per.val-unit-ggf-m[1] + pr-it-per.val-unit-mat-m[1] + pr-it-per.val-unit-mob-m[1].
    
    PUT STREAM str-rp     
            ITEM.it-codigo                        ";"
            item.desc-item                        ";"
            ITEM.cod-estabel                      ";"
            item.fm-codigo                        ";"
            familia.descricao                     ";"
            ITEM.un                               ";"
            CF /* <--- Comprado ou Fabricado */   ";"
            item-uni-estab.preco-base             ";"
            item-uni-estab.data-base              ";"
            item.preco-repos                      ";"
            item.data-ult-rep                     ";"
            item.preco-ul-ent                     ";"
            item.data-ult-ent                     ";"
            IF AVAIL preco-item THEN preco-item.preco-venda ELSE 0 ";"
            preco-medio                           ";"
            item.preco-fiscal                     ";"
            item.class-fiscal                     ";"
            item.aliquota-ipi                    SKIP.
            
    END. 
    
    

Compartilhe esta Página