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

Urgente UPC RE2001 não elimina documento

Discussão em 'EMS , HCM e Totvs 11' iniciado por thiagoladeira, Junho 29, 2021.

  1. thiagoladeira

    thiagoladeira Sem Pontuação

    Pessoal,

    montei uma UPC aqui e coloquei no Programa RE2001 cujo objetivo é enviar um email de recebimento de materiais para os compradores e responsável do pedido de Compra utilizando o Datasul Mail service . Está funcionando normalmente com a digitação e atualização da Nota fiscal. Porém, o Programa está comportando de uma forma estranha quando tento eliminar uma nota fiscal ela não elimina. Alguém poderia ajudar nessa análise aqui.

    /*******************************************************************************
    ** Programa : upc_re2001
    ** Objetivo :
    ** Data : 29/06/2020
    ** Autor : Thiago Ladeira
    ** Versao : 1.00.001
    *******************************************************************************/
    /* Definicao de Parametros ---*/
    def input parameter p-ind-event as char no-undo.
    def input parameter p-ind-object as char 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 char no-undo.
    def input parameter p-row-table as rowid no-undo.
    def new global shared var h-objeto as widget-handle no-undo.
    def new global shared var wh-objeto-fornec as widget-handle no-undo.
    def new global shared var h-objeto-fornec as widget-handle no-undo.
    def new global shared var wh-cod-altern as widget-handle no-undo.
    def new global shared var wh-cod-emitente as widget-handle no-undo.
    def new global shared var wh-btsave as widget-handle no-undo.
    def new global shared var h-objeto2 as widget-handle no-undo.
    Def Var c-objeto As Char No-undo.
    def new global shared var v_icontador as integer no-undo.
    Def New Global Shared Var wh-objeto As Widget-handle No-undo.
    Assign c-objeto = entry(num-entries(p-wgh-object:private-data, "~/"), p-wgh-object:private-data, "~/").
    /* Definicao de Variaveis Globais ---*/
    MESSAGE "Evento: p-ind-event " p-ind-event SKIP
    "Objeto: p-ind-object " p-ind-object SKIP
    "Nome Obj: p-wgh-object " p-wgh-object SKIP
    "Frame: p-wgh-frame " p-wgh-frame SKIP
    "Objeto " h-objeto2:NAME SKIP
    "Tabela: p-cod-table " p-cod-table SKIP
    "p-row-table: " STRING(p-row-table) VIEW-AS ALERT-BOX.
    ASSIGN h-objeto = p-wgh-frame:first-child.
    assign v_icontador = 0.
    /*************************************************/
    if p-ind-event = "BEFORE-INITIALIZE" and
    p-ind-object = "CONTAINER" THEN DO:

    Assign h-objeto2 = p-wgh-frame:First-child.
    DO WHILE valid-handle(h-objeto2):
    IF h-objeto2:NAME = 'bt-atualizar' THEN DO:
    ASSIGN wh-btsave = h-objeto2.

    /* MESSAGE "Evento: p-ind-event " p-ind-event SKIP
    "Objeto: p-ind-object " p-ind-object SKIP
    "Nome Obj: p-wgh-object " p-wgh-object SKIP
    "Frame: p-wgh-frame " p-wgh-frame SKIP
    "Objeto " h-objeto2:NAME SKIP
    "Tabela: p-cod-table " p-cod-table SKIP
    "p-row-table: " STRING(p-row-table) VIEW-AS ALERT-BOX. */

    END.

    if h-objeto2:type = 'field-group' then do:
    assign h-objeto2 = h-objeto2:first-child.
    end.
    else do:
    assign h-objeto2 = h-objeto2:next-sibling.
    end.
    END.
    END.
    IF VALID-HANDLE(wh-btsave) THEN
    on 'mouse-select-click':u of wh-btsave or
    'return' OF wh-btsave persisten run upc\upc_re2001_btatualizar.p.

    Arquivos Anexados:

  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Bem, aparecentemente não tem nada de errado com a sua UPC, mas eu acredito que ao inves de vc capturar o botão bt-atualizar, que fica dentro de uma smart de botões e sabe-se lá que procedimentos o mesmo executa, eu acredito que seria melhor vc direcionar as suas funções para os eventos assign-record, tem o after e tem o before, assim vc trabalha junto com o mecanismo de gravação da rotina e não no botão de tela, e acredite, isso dá muita diferença.
    Quando vc desvia a função de clique do mouse ou de RETURN do botão bt-atualizar, dentro do programa upc_re2001_btatualizar.p, vc deveria passar o handle do botão pra rotina como parametro, e lá, depois de executar os seus procedimentos, vc tem que fazer um apply 'choose' to wh-btsave, pra que o programa execute as funções originais, vc tá usando variaveis globais, eu não gosto disso, prefiro passar parametros, mas vc está fazendo o apply no botão original ????
  3. thiagoladeira

    thiagoladeira Sem Pontuação

    Não consegui visualizar nessa tela do re2001 o evento assign-record pois é um CONTAINER. Por isso peguei um exemplo do apply no botão original.
    utilizei esse trecho aqui:

    if p-ind-event = "BEFORE-INITIALIZE" and
    p-ind-object = "CONTAINER" THEN DO:


    Qual seria o melhor evento para isso?
  4. thiagoladeira

    thiagoladeira Sem Pontuação

    Não consegui visualizar nessa tela do re2001 o evento assign-record pois é um CONTAINER. Por isso peguei um exemplo do apply no botão original.
    utilizei esse trecho aqui:

    if p-ind-event = "BEFORE-INITIALIZE" and
    p-ind-object = "CONTAINER" THEN DO:


    Qual seria o melhor evento para isso?
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Pois é, toda tela de manutenção tem nas UPCs, os eventos de assign-record, principalmente que essa tela é feita com o DDKGUI, usando os smart-objects, sugiro que vc habilite o seu message, aquele que vc tem no inicio do seu programa, logo apos o assign c-objeto ......
    E faça um processo completo de recebimento no re2001, vc verá que existira na variavel c-objeto o nome da viewer que o ponto UPC está sendo chamado, assim vc pode pegar o assign-record da viewer principal ou se outra que seja de seu interesse, não se contenha somente em p-ind-object CONTAINER, esse é o .w principal, então ele em si não tem quase nada dos procedimentos.
  6. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Achei um exemplo mais simples ...
    Código:
        if c-objeto = 'v11in274.w' then do:
            case p-ind-event:
                when 'after-enable' then run createField.
                when 'assign'       then do:
                    run saveField.
                    if return-value = 'NOK'  then return 'NOK'.
                end.
            end case.
        end.
    

Compartilhe esta Página