[RESOLVIDO] Duvida

Discussão em 'EMS , HCM e Totvs 11' iniciado por kakaos, Outubro 17, 2011.

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

    Rogerio Moderator Moderador Equipe de Suporte

    Desculpe o correto:

    Código:
    DEF PARAM BUFFER b-cod-ean FOR ITEM.
    DEF PARAM BUFFER b-old-b-cod-ean FOR ITEM.
    
    IF NEW(b-cod-ean) THEN DO:
    FIND FIRST item
    WHERE item-mat.it-codigo = b-cod-ean.it-codigo NO-LOCK NO-ERROR.
    
    IF AVAIL ITEM THEN
    ASSIGN item-mat.cod-ean = b-cod-ean.inform-compl.
    END.
    
    RETURN "OK":U.
    Assim é pra funcionar, mas se vc fizer como LFBuozi disse, ficará muito mais confiável.
  2. kakaos

    kakaos Membro Participativo

    Rogerio,
    compilei veja:
    Missing FOR, FIND or CREATE for a table with it-codigo in current block. (232)
    obrigado.
  3. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Agora sim... eu estava sem uma maquina com EMS... mas agora é pra funcionar.

    Código:
    DEF PARAM BUFFER b-cod-ean FOR ITEM.
    DEF PARAM BUFFER b-old-b-cod-ean FOR ITEM.
    
    IF NEW(b-cod-ean) THEN DO:
    FIND FIRST item-mat
    WHERE item-mat.it-codigo = b-cod-ean.it-codigo NO-LOCK NO-ERROR.
    
    IF AVAIL ITEM-mat THEN
    ASSIGN item-mat.cod-ean = b-cod-ean.inform-compl.
    END.
    
    RETURN "OK":U.
  4. kakaos

    kakaos Membro Participativo

    ola LFBuozi,
    nao tenho experiencia com UPC, fiz esta que postei aki olhando alguns exemplos... este codigo que voce postou acredito eu que teria quem implementar mais coisas certo?
    voce teria algo que me auxiliasse na construcao de uma UPC de tela, para que eu possa fazer o restante deste seu codigo? ou este seu codigo ja é a UPC completa?
    Muito obrigado pela ajuda...
  5. LFBuozi

    LFBuozi Membro Participativo

    Desculpe, para a UPC deste caso, você deve fazer o seguinte:
    Salvar na pasta de específico, por exemplo \\servidor\datasul\ems\206\esp\upc\upc-cd0204.p.
    Na tela de programa, men/men012aa.w, vai no registro CD0204 e, em programa UPC, colocar o caminho seguindo a propath, neste exemplo fica upc\upc-cd0204.p.
    Fazer o mesmo para CD0903.

    UPC CD0204
    Código:
    /*--- Parametros necessarios para o funcionamento da UPC ---*/
    DEF INPUT PARAM p-ind-event  AS CHAR          NO-UNDO.
    DEF INPUT PARAM p-ind-object AS CHAR          NO-UNDO.
    DEF INPUT PARAM p-wgh-object AS HANDLE        NO-UNDO.
    DEF INPUT PARAM p-wgh-frame  AS WIDGET-HANDLE NO-UNDO.
    DEF INPUT PARAM p-cod-TABLE  AS CHAR          NO-UNDO.
    DEF INPUT PARAM p-row-TABLE  AS ROWID         NO-UNDO.
    
    IF p-ind-event = "after-end-update" AND
       p-ind-object = "VIEWER" then
    DO:
        FIND ITEM WHERE ROWID(ITEM) = p-row-table NO-LOCK NO-ERROR.
        IF AVAIL ITEM THEN
        DO:
            /*--- 01 - Copia codigo complementar da tabela item para codigo ean da tabela item-mat ---*/
            FIND FIRST item-mat WHERE item-mat.it-codigo = ITEM.it-codigo
                                  AND item-mat.cod-ean <> item.codigo-refer NO-ERROR.
            IF AVAIL item-mat THEN DO:
                ASSIGN item-mat.cod-ean = ITEM.codigo-refer.
            END.
            /*--- /01 ---*/
        END.
    END.
    
    UPC CD0903
    Código:
    /*--- Parametros necessarios para o funcionamento da UPC ---*/
    DEF INPUT PARAM p-ind-event  AS CHAR          NO-UNDO.
    DEF INPUT PARAM p-ind-object AS CHAR          NO-UNDO.
    DEF INPUT PARAM p-wgh-object AS HANDLE        NO-UNDO.
    DEF INPUT PARAM p-wgh-frame  AS WIDGET-HANDLE NO-UNDO.
    DEF INPUT PARAM p-cod-TABLE  AS CHAR          NO-UNDO.
    DEF INPUT PARAM p-row-TABLE  AS ROWID         NO-UNDO.
    
    IF p-ind-event = "after-end-update" AND
       p-ind-object = "VIEWER" then DO:
        FIND item WHERE ROWID(ITEM) = p-row-table NO-LOCK NO-ERROR.
        IF AVAIL item THEN DO:
            /*--- Copia codigo ean da tabela item-mat para codigo complementar da tabela item ---*/
            FIND FIRST item-mat WHERE item.it-codigo = item-mat.it-codigo
                              AND ITEM.codigo-refer <> item-mat.cod-ean NO-ERROR.
            IF AVAIL item-mat THEN DO:
                ASSIGN item.codigo-refer = item-mat.cod-ean.
            END.
            /*--- /01 ---*/
        END.
    END.
    
    Esta UPC é bem básica e não mexe nada em tela, apenas altera o campo de outra tabela quando você dá o salvar em uma tela.
    Aqui no fórum o pessoal coloca exemplos muito interessantes de UPCs que leem e criam campos em tela, dê uma procurada por aí que você acha coisas bem legais aqui.
    E neste seu caso, eu precisei fazer por UPC por outros motivos, mas se você puder fazer a trigger como o Rogerio passou, é mais simples.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página