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] Criação de UPC / CC0300b

Discussão em 'EMS , HCM e Totvs 11' iniciado por rodrigo.toaldo, Julho 4, 2013.

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

    rodrigo.toaldo Membro Participativo

    Prezados, muito boa tarde a todos.
    Estamos em meio a um novo projeto, e precisarei criar um campo novo na tela do programa CC0300, cujo LABEL será Itinerário.
    Até ai tudo bem, consegui criar o campo e o mesmo está aparecendo na tela, quando o usuário clica para adicionar um novo item no pedido de compras.
    O problema, é que, quando o usuário troca de Página, e volta para a Página "Ordem" do programa CC0300b, o campo adicionado desaparece, alguém saberia me ajudar nesse tratamento, para mantê-lo fixo?

    Uma outra questão é relacionado ao zoom, antes de desaparecer o campo, quando clicar 2 vezes nesse, abre a tela com todos os cadastros de itinerários, porém ao selecionar algum, não está trazendo o valor selecionado. Alguém consegue me ajudar com essa tratativa também?

    A terceira e ultima questão é relacionado ao evento leave no campo criado, quando houver, o campo Preço Forn da tela deverá ser alimentado, alguém sabe me dizer, como eu encontro esse campo na tela, para alimentá-lo com a informação especifica?

    Abaixo a UPC que montei para isso:
    OBS: falta implementar o evento leave, não fiz ainda pelo fato de não ter encontrado o campo preço-fornec.

    ======================================================================================================================================

    def input parameter p-ind-event as character no-undo.
    def input parameter p-ind-object as character no-undo.
    def input parameter p-wgh-object as handle no-undo.
    def input parameter p-wgh-frame as widget-handle no-undo.
    def input parameter p-cod-table as character no-undo.
    def input parameter p-row-table as rowid no-undo.

    DEFINE VAR c-objeto AS CHAR NO-UNDO.
    define VAR vhdLblItiner as handle no-undo.

    DEFINE NEW GLOBAL SHARED VAR vhdRotaItiner as handle no-undo.
    DEFINE NEW GLOBAL SHARED VAR vhdValorFornec AS DECIMAL NO-UNDO.

    assign c-objeto = entry(num-entries(p-wgh-object:file-name, "~/"), p-wgh-object:file-name, "~/").

    /*MESSAGE "Evento:" p-ind-event SKIP
    "Objeto:" p-ind-object SKIP
    "Nome objeto:" c-objeto skip
    "Frame:" p-wgh-frame SKIP
    "Tabela:" p-cod-table SKIP
    "Rowid:" STRING(p-row-table)
    VIEW-AS ALERT-BOX TITLE "Ponto de UPC".
    */

    if return-value = 'NOK' then return 'NOK'.

    IF p-ind-event = "BEFORE-INITIALIZE" AND
    p-ind-object = "CONTAINER"
    THEN DO:

    create text vhdLblItiner
    assign NAME = 'txItiner':u
    frame = p-wgh-frame
    format = "x(10)"
    width = 10
    screen-value = "Itiner:"
    row = 8.7
    col = 35.6
    visible = yes.

    create fill-in vhdRotaItiner
    assign
    row = 8.55
    col = 40.0
    frame = p-wgh-frame
    side-label-handle = vhdLblItiner:handle
    width = 10
    height = 0.88
    data-type = "character":U
    name = "vhdRotaItiner":U
    visible = YES
    sensitive = TRUE
    format = "x(8)":U
    help = "Código Rota Itinerário"
    triggers:
    ON F5 PERSISTENT RUN upc/upc-cc0300-zoom.p.
    ON MOUSE-SELECT-DBLCLICK persistent run upc/upc-cc0300-zoom.p.
    on LEAVE persistent run upc/upc-cc0300-leave.p.
    ON ENTRY PERSISTENT RUN upc/upc-cc0300-leave.p.
    end TRIGGERS.
    END.

    ====================================================================================================================================

    Prezados, muito obrigado pela atenção.

    Ótima tarde.
  2. rhemati

    rhemati Membro Participativo

    Rodrigo, boa noite.

    Estou aqui treinando UPC e fiz algumas modificações e posso ir interagindo com você na medida do possível, pois para mim está uma correria com projetos.
    E ai vem algumas perguntas:
    01 - você quer que este campo fique habilitado quando você insere dados na capa do pedido de compra e/ou no do item. Porque talvez o certo não seria fazer no CC0300 e sim no CC0300A.
    Segue o antes com o seu código e o depois com algumas alterações simples minhas. É claro com a sua permissão para a interação eu alterei.

    Código:
    def input parameter p-ind-event as character no-undo.
    def input parameter p-ind-object as character no-undo.
    def input parameter p-wgh-object as handle no-undo.
    def input parameter p-wgh-frame as widget-handle no-undo.
    def input parameter p-cod-table as character no-undo.
    def input parameter p-row-table as rowid no-undo.
    
    DEFINE VAR c-objeto AS CHAR NO-UNDO.
    define VAR vhdLblItiner as handle no-undo.
    
    DEFINE NEW GLOBAL SHARED VAR vhdRotaItiner as handle no-undo. 
    DEFINE NEW GLOBAL SHARED VAR vhdValorFornec AS DECIMAL NO-UNDO.
    
    assign c-objeto = entry(num-entries(p-wgh-object:file-name, "~/"), p-wgh-object:file-name, "~/").
    
    /*
    MESSAGE "Evento:" p-ind-event SKIP
            "Objeto:" p-ind-object SKIP
            "Nome objeto:" c-objeto skip
            "Frame:" p-wgh-frame SKIP
            "Tabela:" p-cod-table SKIP
            "Rowid:" STRING(p-row-table)
    VIEW-AS ALERT-BOX TITLE "Ponto de UPC".
    
    */
    
        if return-value = 'NOK' then return 'NOK'.
    
        IF p-ind-event = "BEFORE-INITIALIZE" AND
            p-ind-object = "CONTAINER" then do:
    
            create text vhdLblItiner
                assign  name            =   'txItiner':u
                        frame           =   p-wgh-frame
                        format          =   "x(10)"
                        width           =   10
                        screen-value    =   "Itiner:"
                        row             =   4.87 /* antes 8.7 - depois certo legal - 4.87 */ 
                        col             =   43.8 /* 35.6 - depois certo legal - 43.8 */ 
                        visible         =   yes
                        sensitive       =   false  /* inserido depois legal */
                        .
    
            create fill-in vhdRotaItiner
                assign  row                 =   4.81 /* antes 8.55 - depois certo legal - 4.81 */
                        col                 =   48 /* antes 40 - depois certo legal - 48 */
                        frame               =   p-wgh-frame
                        side-label-handle   =   vhdLblItiner:handle 
                        width               =   10
                        height              =   0.88
                        data-type           =   "character":U
                        name                =   "vhdRotaItiner":U 
                        visible             =   yes
                        sensitive           =   false /* antes - true */
                        format = "x(8)":U
                        help = "Código Rota Itinerário"
                        triggers:
                            on F5 PERSISTENT RUN upc/upc-cc0300-zoom.p.
                            on MOUSE-SELECT-DBLCLICK persistent run upc/upc-cc0300-zoom.p.
                            on LEAVE persistent run upc/upc-cc0300-leave.p.
                            on ENTRY PERSISTENT RUN upc/upc-cc0300-leave.p.
                        end TRIGGERS. 
        END.
    
    

    Arquivos Anexados:

  3. rhemati

    rhemati Membro Participativo

    Rodrigo, bom dia. Boa noite. Tudo bem?!

    Depois lendo a sua dúvida eu entendi que realmente você queria é para a tela/rotina no CC0300b. Eu não fiz ainda, mas eu sei porque o campo não está aparecendo, é porque vc colocar para aparecer apenas quando for o evento de initialize. deve-se colocar para aparecer quando mudar de página também.

    Vou mudar o código e postar.
  4. rodrigo.toaldo

    rodrigo.toaldo Membro Participativo

    Bom dia, muito obrigado pela resposta, é Cristiano o seu nome?
    Obrigado pela informação, vou tentar aqui com o evento que você informou e te digo se deu certo.
    Att.,
  5. rodrigo.toaldo

    rodrigo.toaldo Membro Participativo

    Bom dia Cristiano, conseguiu ver algo que possa me ajudar? Obrigado meu amigo.
  6. paininet

    paininet Membro Participativo

    Bom dia,

    Cara fiz algumas alterações no seu código, veja se te ajuda.

    /*programa upc - cc0300b-upc*/
    def input parameter p-ind-event as character no-undo.
    def input parameter p-ind-object as character no-undo.
    def input parameter p-wgh-object as handle no-undo.
    def input parameter p-wgh-frame as widget-handle no-undo.
    def input parameter p-cod-table as character no-undo.
    def input parameter p-row-table as rowid no-undo.

    DEFINE VAR c-objeto AS CHAR NO-UNDO.

    DEFINE VARIABLE h-objeto AS HANDLE NO-UNDO.
    DEFINE VARIABLE i-page AS INTEGER NO-UNDO.

    DEFINE NEW GLOBAL SHARED VAR vhdLblItiner as handle no-undo.
    DEFINE NEW GLOBAL SHARED VAR vhdRotaItiner as handle no-undo.

    DEFINE NEW GLOBAL SHARED VAR wh-fpage1-cc0300b AS HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VAR wh-ordem-serv-cc0300b AS HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VAR wh-preco-forn-cc0300b AS HANDLE NO-UNDO.

    assign c-objeto = entry(num-entries(p-wgh-object:file-name, "~/"), p-wgh-object:file-name, "~/").

    /*
    MESSAGE "Evento:" p-ind-event SKIP
    "Objeto:" p-ind-object SKIP
    "Nome objeto:" c-objeto skip
    "Frame:" p-wgh-frame SKIP
    "Tabela:" p-cod-table SKIP
    "Rowid:" STRING(p-row-table)
    VIEW-AS ALERT-BOX TITLE "Ponto de UPC".*/


    if return-value = 'NOK' then return 'NOK'.

    IF p-ind-event = "BEFORE-INITIALIZE" AND
    p-ind-object = "CONTAINER" THEN DO:

    /*Busca fPage1*/
    RUN tela-upc (INPUT p-wgh-frame,
    INPUT p-ind-Event,
    INPUT "FRAME", /*** Type ***/
    INPUT "fPage1", /*** Name ***/
    INPUT NO, /*** Apresenta Mensagem dos Objetos ***/
    INPUT 1, /*** Quando existir mais de um objeto com o mesmo nome ***/
    OUTPUT wh-fpage1-cc0300b).

    IF VALID-HANDLE(wh-fpage1-cc0300b) THEN DO:

    /*Busca campo ordem servic*/
    RUN tela-upc (INPUT wh-fpage1-cc0300b,
    INPUT p-ind-Event,
    INPUT "fill-in", /*** Type ***/
    INPUT "ordem-servic", /*** Name ***/
    INPUT NO, /*** Apresenta Mensagem dos Objetos ***/
    INPUT 1, /*** Quando existir mais de um objeto com o mesmo nome ***/
    OUTPUT wh-ordem-serv-cc0300b).

    /*Busca campo preco fornec*/
    RUN tela-upc (INPUT wh-fpage1-cc0300b,
    INPUT p-ind-Event,
    INPUT "fill-in", /*** Type ***/
    INPUT "d-preco-fornec", /*** Name ***/
    INPUT NO, /*** Apresenta Mensagem dos Objetos ***/
    INPUT 1, /*** Quando existir mais de um objeto com o mesmo nome ***/
    OUTPUT wh-preco-forn-cc0300b).

    CREATE TEXT vhdLblItiner
    ASSIGN NAME = 'txItiner':u
    FRAME = wh-ordem-serv-cc0300b:FRAME
    FORMAT = "x(10)"
    WIDTH = 10
    SCREEN-VALUE = "Itiner:"
    ROW = wh-ordem-serv-cc0300b:ROW + 0.14
    COL = wh-ordem-serv-cc0300b:COL + 11
    VISIBLE = YES.

    CREATE FILL-IN vhdRotaItiner
    ASSIGN ROW = wh-ordem-serv-cc0300b:ROW
    COL = wh-ordem-serv-cc0300b:COL + 15
    FRAME = wh-ordem-serv-cc0300b:FRAME
    SIDE-LABEL-HANDLE = vhdLblItiner:HANDLE
    WIDTH = 10
    HEIGHT = 0.88
    DATA-TYPE = "character":U
    NAME = "vhdRotaItiner":U
    VISIBLE = YES
    SENSITIVE = TRUE
    FORMAT = "x(8)":U
    HELP = "C¢digo Rota Itiner rio"
    TRIGGERS:
    ON F5 PERSISTENT RUN upc/cc0300b-upc-zoom.p.
    ON MOUSE-SELECT-DBLCLICK persistent run upc/cc0300b-upc-zoom.p.
    /*on LEAVE persistent run upc/upc-cc0300-leave.p.
    ON ENTRY PERSISTENT RUN upc/upc-cc0300-leave.p.*/
    END TRIGGERS.

    vhdRotaItiner:MOVE-AFTER-TAB-ITEM(wh-ordem-serv-cc0300b).
    END.
    END.

    /*IF p-ind-event = "BEFORE-CHANGE-PAGE" AND
    p-ind-object = "CONTAINER" THEN DO:




    ASSIGN h-objeto = p-wgh-object.
    DO WHILE VALID-HANDLE(h-objeto):
    IF h-objeto:FILE-NAME = "utp/thinFolder.w" THEN LEAVE.
    ASSIGN h-objeto = h-objeto:NEXT-SIBLING.
    END.

    IF VALID-HANDLE(h-objeto) THEN
    RUN getCurrentFolder IN h-objeto (OUTPUT i-page).

    IF i-page = 1 THEN DO:
    IF NOT VALID-HANDLE(vhdRotaItiner) THEN DO:

    /* RUN tela-upc (INPUT p-wgh-frame,
    INPUT p-ind-Event,
    INPUT "FRAME", /*** Type ***/
    INPUT "l-recebe-nfe", /*** Name ***/
    INPUT YES, /*** Apresenta Mensagem dos Objetos ***/
    INPUT 1, /*** Quando existir mais de um objeto com o mesmo nome ***/
    OUTPUT vhdRotaItiner).*/

    create text vhdLblItiner
    assign NAME = 'txItiner':u
    frame = p-wgh-frame
    format = "x(10)"
    width = 10
    screen-value = "Itiner:"
    row = 8.7
    col = 35.6
    visible = yes.

    create fill-in vhdRotaItiner
    assign
    row = 8.55
    col = 40.0
    frame = p-wgh-frame
    side-label-handle = vhdLblItiner:handle
    width = 10
    height = 0.88
    data-type = "character":U
    name = "vhdRotaItiner":U
    visible = YES
    sensitive = TRUE
    format = "x(8)":U
    help = "Código Rota Itinerário"
    triggers:
    /*ON F5 PERSISTENT RUN upc/upc-cc0300-zoom.p.
    ON MOUSE-SELECT-DBLCLICK persistent run upc/upc-cc0300-zoom.p.
    on LEAVE persistent run upc/upc-cc0300-leave.p.
    ON ENTRY PERSISTENT RUN upc/upc-cc0300-leave.p.*/
    end TRIGGERS.
    END.
    ELSE DO:

    MESSAGE "ACHOU E Sà MOSTRA " SKIP
    vhdRotaItiner:SCREEN-VALUE SKIP
    vhdRotaItiner:COL SKIP
    vhdRotaItiner:ROW
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    ASSIGN vhdRotaItiner:VISIBLE = YES
    vhdRotaItiner:SENSITIVE = YES.
    END.
    END.
    END.*/

    PROCEDURE tela-upc:
    DEFINE INPUT PARAMETER pWghFrame AS WIDGET-HANDLE NO-UNDO.
    DEFINE INPUT PARAMETER pIndEvent AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER pObjType AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER pObjName AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER pApresMsg AS LOGICAL NO-UNDO.
    DEFINE INPUT PARAMETER pAux AS INTEGER NO-UNDO.
    DEFINE OUTPUT PARAMETER phObj AS HANDLE NO-UNDO.

    DEFINE VARIABLE wgh-obj AS WIDGET-HANDLE NO-UNDO.
    DEFINE VARIABLE i-aux AS INTEGER NO-UNDO.

    ASSIGN wgh-obj = pWghFrame:FIRST-CHILD
    i-aux = 0.

    DO WHILE VALID-HANDLE(wgh-obj):

    IF pApresMsg = YES THEN
    MESSAGE "Nome do Objeto" wgh-obj:NAME SKIP
    "Type do Objeto" wgh-obj:TYPE SKIP
    "P-Ind-Event" pIndEvent VIEW-AS ALERT-BOX.

    IF wgh-obj:TYPE = pObjType AND
    wgh-obj:NAME = pObjName THEN DO:
    ASSIGN phObj = wgh-obj:HANDLE
    i-aux = i-aux + 1.

    IF i-aux = pAux THEN
    LEAVE.
    END.
    IF wgh-obj:TYPE = "field-group" THEN
    ASSIGN wgh-obj = wgh-obj:FIRST-CHILD.
    ELSE
    ASSIGN wgh-obj = wgh-obj:NEXT-SIBLING.
    END.
    END PROCEDURE.

    /*programa zoom cc0300b-upc-zoom - só salvar no teu programa upc de zoom e arrumar pro zoom correto */
    DEFINE NEW GLOBAL SHARED VAR vhdRotaItiner as handle no-undo.

    DEFINE NEW GLOBAL SHARED VARIABLE wh-window AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE wh-pesquisa AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VARIABLE l-implanta AS LOGICAL INITIAL NO.
    DEFINE NEW GLOBAL SHARED VARIABLE adm-broker-hdl AS HANDLE NO-UNDO.

    ASSIGN l-implanta = YES.

    {include/zoomvar.i &prog-zoom="adzoom/z01ad268.w"
    &proghandle=wh-window
    &campohandle=vhdRotaItiner
    &campozoom=cod-transp}
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página