Árvore de páginas

Ponto de Entrada 

Descrição:

Este ponto de entrada esta localizado na rotina funções oficina (OFIXA120) e tem por finalidade permitir que o usuário adicione novas funcionalidades através da criação de opções no menu principal da rotina.

Localização:

Atualizações \ Mov Oficina \ Funções Oficina (OFIXA120)

Eventos:

Static Function OXA120ROT(aMenu)

Local aNovBot := {}

Local nCont

Local nPos

Local nPosMenu

If ExistBlock("OX120ROT")

If ValType( aNovBot := ExecBlock("OX120ROT",.f.,.f.) ) == "A"

For nCont := 1 to Len(aNovBot)

If (nPosMenu := aScan( aMenu , { |x| x[2] == aNovBot[nCont,2] } )) == 0

Loop

EndIf

For nPos := nPosMenu to Len(aMenu)

If aMenu[nPos,2] <> aNovBot[nCont,2] .or. nPos == Len(aMenu)

If nPos == Len(aMenu)

nPos++

EndIf

AADD( aMenu , {} )

AINS( aMenu , IIF( nPos == Len(aMenu) , nPos + 1 , nPos))

aMenu[nPos] := aClone( aNovBot[ nCont ])

Exit

EndIf

Next nPos

Next nCont

Else

aNovBot := {}

EndIf

Endif

Return aNovBot

Programa Fonte:

OFIXA120.PRW

Função:

OXA120ROT()

Retorno:

Matriz com a seguinte estrutura:


[01] - ID unico para criação do Objeto Tree

[02] - ID do Objeto Tree Pai em que o menu sera criado

[03] - Descricao (Menu)

[04] - Tabela para Browse

[05] - Nome da Função que será executada

[06] - Nome da Função que será executada

[07] - nOpc da Rotina

[08] - Indica se é uma opcao de Inclusao (utilizado so para reposicionar browse)

[09] - Condição para execução da opção (deve retornar .T. ou .F. entre ASPAS)

[10] - Indica se a Função que será executada deve possuir validação de Sub-Menu (Informar 1 numerico caso sim, e deixar em branco caso não)

Estrutura da Matriz do Menu:

/*
  Estrutura da Matriz aMenu



  [01] - Nome do Menu
  [02] - Nome do Pai
  [03] - Descricao (Menu)
  [04] - Tabela para Browse
  [05] - Funcao para analisar no Acesso no Menu (XNU)
  [06] - Funcao executada ao selecionar opcao do menu
  [07] - nOpc da Rotina
  [08] - Indica se é uma opcao de Inclusao (utilizado so para reposicionar browse)
*/

// Menu de Ordem de Servico //
AADD( aMenu , { "OFICINA"                       ,""                    ,STR0006,"VO1",""        ,""        ,0,.f.,".t."                     , NIL } ) // "Oficina"
AADD( aMenu , { "OFICINA_ABERTURA"              ,"OFICINA"             ,STR0007,"VO1","OFIOM010",""        ,0,.f.,".t."                     , NIL } ) // "Abertura"
AADD( aMenu , { "OFICINA_ABERTURA_INCLUIR"      ,"OFICINA_ABERTURA"    ,STR0008,"VO1","OFIOM010","OFIOM010",2,.t.,".t."                     , NIL } ) // "Abrir"
AADD( aMenu , { "OFICINA_ABERTURA_ALTERAR"      ,"OFICINA_ABERTURA"    ,STR0009,"VO1","OFIOM010","OFIOM010",3,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Alterar"
AADD( aMenu , { "OFICINA_PECA"                  ,"OFICINA"             ,STR0010,"VO1","OFIOM020",""        ,0,.f.,".t."                     , NIL } ) // "Req. Peça"
AADD( aMenu , { "OFICINA_PECA_REQUISITAR"       ,"OFICINA_PECA"        ,STR0011,"VO1","OFIOM020","OFIOM020",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Requisitar"
AADD( aMenu , { "OFICINA_PECA_DEVOLVER"         ,"OFICINA_PECA"        ,STR0012,"VO1","OFIOM020","OFIOM020",3,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Devolver"
AADD( aMenu , { "OFICINA_PECA_REQ_OUTRAS_OSs"   ,"OFICINA_PECA"        ,STR0074,"VO1","OFIOM020","OM0200131_Requisitar_Pecas_de_outras_OSs",4,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // Req.Peças de outras OSs
AADD( aMenu , { "OFICINA_PECA_ALTERAR"          ,"OFICINA_PECA"        ,STR0009,"VO1","OFIOM020","OFIOM020",5,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Alterar"
AADD( aMenu , { "OFICINA_PECA_HISTORICOR"       ,"OFICINA_PECA"        ,STR0070,"VO1","OFIOM020","OM020HRD",13,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Histórico Req/Dev"
If FindFunction("OM020REM")
    AADD( aMenu , { "OFICINA_PECA_NFREMESSA"    ,"OFICINA_PECA"        ,STR0034,"VO1","OFIOM020","OFIOM020",6,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Rem. Atend. Externo"
    AADD( aMenu , { "OFICINA_PECA_NFRETORNO"    ,"OFICINA_PECA"        ,STR0035,"VO1","OFIOM020","OFIOM020",7,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Ret. Rem. Atend. Ext."
    AADD( aMenu , { "OFICINA_PECA_NFCANCELA"    ,"OFICINA_PECA"        ,STR0054,"VO1","OFIOM020","OM020CAN",8,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Canc.NF Rem. Atend. Ext."
EndIf
If FindFunction("OM020001_CancNFRetRem")
    AADD( aMenu , { "OFICINA_PECA_NFCANCELA"    ,"OFICINA_PECA"        ,STR0065,"VO1","OFIOM020","OM020001_CancNFRetRem",9,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Canc. NF Retorno Rem. Atend. Ext."
EndIf
If FindFunction("OM020VSJMANUAL") .and. VSJ->(FieldPos("VSJ_CODIGO")) > 0
    AADD( aMenu , { "OFICINA_PECA_VSJMANUAL"    ,"OFICINA_PECA"        ,STR0055,"VO1","OFIOM020","OFIOM020",10,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Peças da OS"
EndIf
AADD( aMenu , { "OFICINA_SERVICO"               ,"OFICINA"             ,STR0013,"VO1","OFIOM030",""        ,0,.f.,".t."                     , NIL } ) // "Req. Serviço"
AADD( aMenu , { "OFICINA_SERVICO_REQUISITAR"    ,"OFICINA_SERVICO"     ,STR0014,"VO1","OFIOM030","OFIOM030",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Requisitar"
AADD( aMenu , { "OFICINA_SERVICO_ALTERAR"       ,"OFICINA_SERVICO"     ,STR0009,"VO1","OFIOM030","OFIOM030",3,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Alterar"
If FindFunction("OFA1100056_RelacionaCampanha") .And. VOU->(FieldPos("VOU_SERINT")) > 0
    AADD( aMenu , { "OFICINA_SERVICO_RELACIONAR","OFICINA_SERVICO"     ,STR0073,"VO1","OFIOM030","OFIOM030",5,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Relacionar Campanha"
EndIf
AADD( aMenu , { "OFICINA_LIBERAR"               ,"OFICINA"             ,STR0016,"VO1","OFIOM140",""        ,0,.f.,".t."                     , NIL } ) // "Liberação"
AADD( aMenu , { "OFICINA_LIBERAR_LIBERAR"       ,"OFICINA_LIBERAR"     ,STR0017,"VO1","OFIOM140","OFIOM140",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Liberar"
AADD( aMenu , { "OFICINA_FECHAR"                ,"OFICINA"             ,STR0018,"VO1","OFIXA100",""        ,0,.f.,".t."                     , NIL } ) // "Fechamento"
AADD( aMenu , { "OFICINA_FECHAR_FECHAR"         ,"OFICINA_FECHAR"      ,STR0019,"VO1","OFIXA100","OFIXA100",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Fechar"
AADD( aMenu , { "OFICINA_CANCELAR"              ,"OFICINA"             ,STR0020,"VO1","OFIOM150",""        ,0,.f.,".t."                     , NIL } ) // "Cancelamento"
AADD( aMenu , { "OFICINA_CANCELAR_CANCELAR"     ,"OFICINA_CANCELAR"    ,STR0021,"VO1","OFIOM150","OFIOM150",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Cancelar"
AADD( aMenu , { "OFICINA_CONSULTAR"             ,"OFICINA"             ,STR0031,"VO1","OFIOC060",""        ,0,.f.,".t."                     , NIL } ) // "Consulta OS"
AADD( aMenu , { "OFICINA_CONSULTAR_CONSULTAR"   ,"OFICINA_CONSULTAR"   ,STR0032,"VO1","OFIOC060","OFIOC060",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Consultar"
AADD( aMenu , { "OFICINA_CONSULTARNF"           ,"OFICINA"             ,STR0036,"VO1","OFIOC060",""        ,0,.f.,".t."                     , NIL } ) // "NF's da OS""
AADD( aMenu , { "OFICINA_CONSULTARNF_CONSULTAR" ,"OFICINA_CONSULTARNF" ,STR0032,"VO1","OFIOC060","OXA120NFCONS",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Consultar"
If FindFunction("OM010BCO")
    AADD( aMenu , { "OFICINA_BASECONHE"         ,"OFICINA"             ,STR0048,"VO1","OFIOM010",""        ,0,.f.,".t."                     , NIL } ) // Banco de Conhecimento
    AADD( aMenu , { "OFICINA_BASECONHE_CONSULTA","OFICINA_BASECONHE"   ,STR0048,"VO1","OFIOM010","OM010BCO",3,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // Banco de Conhecimento
EndIf
If FindFunction("OFIOM470")
    AADD( aMenu , { "OFICINA_INCONVENIENTE"             ,"OFICINA"     ,STR0056 ,"VO1","OFIOM470",""       ,0,.f.,".t."                     , NIL } )  // "Reparo/Incoveniente"
    AADD( aMenu , { "OFICINA_INCONVENIENTE_VISUALIZAR"  ,"OFICINA_INCONVENIENTE",STR0022,"VO1","OFIOM470","OFIOM470",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Visualizar"
    AADD( aMenu , { "OFICINA_INCONVENIENTE_ALTERAR"     ,"OFICINA_INCONVENIENTE",STR0009,"VO1","OFIOM470","OFIOM470",3,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Alterar"
Endif
If FindFunction("OFIOC330")
    AADD( aMenu , { "OFICINA_HISTORICO"          ,"OFICINA"            ,STR0057 ,"VO1","OFIOC330",""        ,0,.f.,".t."                     , NIL } ) // "Histórico do Veículo"
    AADD( aMenu , { "OFICINA_HISTORICO_CONSULTAR","OFICINA_HISTORICO"  ,STR0058 ,"VO1","OFIOC330","OFIOC330",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Consultar"
Endif
AADD( aMenu , { "OFICINA_NODE_IM"                ,"OFICINA"            ,STR0049,"VO1","OFIXA120",""        ,0,.f.,".t."                     , NIL } ) // Impressão
AADD( aMenu , { "OFICINA_NODE_IM_R"              ,"OFICINA_NODE_IM"    ,STR0050,"VO1","OFIXA120","OX120IMP",2,.f.,"!Empty(VO1->VO1_NUMOSV)" , NIL } ) // "Impressão da OS

// Menu de Agendamento //
AADD( aMenu , { "AGENDAMENTO"                    ,""           ,STR0004,"VSO","OFIOM350",""        , 0,.f.,"t."                      , NIL } ) // "Agendamento"
AADD( aMenu , { "AGENDAMENTO_VISUALIZAR"         ,"AGENDAMENTO",STR0022,"VSO","OFIOM350","OFIOM350", 2,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Visualizar"
AADD( aMenu , { "AGENDAMENTO_INCLUIR"            ,"AGENDAMENTO",STR0023,"VSO","OFIOM350","OFIOM350", 3,.t.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Incluir"
AADD( aMenu , { "AGENDAMENTO_ALTERAR"            ,"AGENDAMENTO",STR0009,"VSO","OFIOM350","OFIOM350", 4,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Alterar"
AADD( aMenu , { "AGENDAMENTO_CANCELAR"           ,"AGENDAMENTO",STR0021,"VSO","OFIOM350","OFIOM350", 5,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Cancelar"
AADD( aMenu , { "AGENDAMENTO_ORCAMENTO"          ,"AGENDAMENTO",STR0005,"VSO","OFIOM350","OFIOM350", 8,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Orcamento"
AADD( aMenu , { "AGENDAMENTO_CONFAGENDA"         ,"AGENDAMENTO",STR0024,"VSO","OFIOM350","OFIOM350",10,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Confirma Agendam."
AADD( aMenu , { "AGENDAMENTO_CONFPRESENCA"       ,"AGENDAMENTO",STR0033,"VSO","OFIXC006","OFIXC006",10,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Confirma Presença"
If FindFunction("OFIOC330")
    AADD( aMenu , { "AGENDAEMENTO_HISTORICO"     ,"AGENDAMENTO",STR0057,"VSO","OFIOC330","OFIOC330_1",2,.f.,"!Empty(VSO->VSO_NUMIDE)" , NIL } ) // "Histório do Veículo"
Endif

// Menu de Orçamento //
AADD( aMenu , { "ORCAMENTO"                     ,""         ,STR0005,"VS1","OFIXA011",""          , 0,.f.,".t."                     , NIL } ) // "Orçamento"
AADD( aMenu , { "ORCAMENTO_VISUALIZAR"          ,"ORCAMENTO",STR0022,"VS1","OFIXA011","OFIXA011"  , 2,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Visualizar"
AADD( aMenu , { "ORCAMENTO_INCLUIR"             ,"ORCAMENTO",STR0023,"VS1","OFIXA011","OFIXA011"  , 3,.t.,".t."                     , NIL } ) // "Incluir"
AADD( aMenu , { "ORCAMENTO_ALTERAR"             ,"ORCAMENTO",STR0009,"VS1","OFIXA011","OFIXA011"  , 4,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Alterar"
AADD( aMenu , { "ORCAMENTO_CANCELAR"            ,"ORCAMENTO",STR0021,"VS1","OFIXA011","OFIXA011"  , 5,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Cancelar"
AADD( aMenu , { "ORCAMENTO_FATURAR"             ,"ORCAMENTO",STR0025,"VS1","OFIXA011","OFIXA011"  , 6,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Faturar"
AADD( aMenu , { "ORCAMENTO_CLONAR"              ,"ORCAMENTO",STR0026,"VS1","OFIXA011","OFIXA011"  , 7,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Clonar"
AADD( aMenu , { "ORCAMENTO_CLONARPOROS"         ,"ORCAMENTO",STR0027,"VS1","OFIXA011","OFIXA011"  , 8,.f.,".t."                     , NIL } ) // "Clonar por OS"
AADD( aMenu , { "ORCAMENTO_LIBERAR"             ,"ORCAMENTO",STR0071,"VS1","OFIXA011","OFIXA011"  , 9,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Liberar Itens com Saldo"
If FindFunction("OFIOC430") //se existir a pesquisa avancada exibe na tela
    AADD( aMenu , { "ORCAMENTO_PESQAVAN"        ,"ORCAMENTO",STR0028,"VS1","OFIXA011","OFIOC430"  ,10,.f.,".t."                     , NIL } ) // "Pesquisa Avançada"
EndIF
if GetNewPar("MV_VERIORC","1") $ "2"
    If FindFunction("OFIXC008")
        AADD( aMenu , { "ORCAMENTO_CONSULTAPECA","ORCAMENTO",STR0029,"VS1","OFIXA011","OFIXC008"  ,01,.f.,".t."                     , NIL } ) // "Consulta de Peça"
    EndIF
Elseif GetNewPar("MV_VERIORC","1") $ "M_CONSPEC"
    If FindFunction("U_M_CONSPEC")
        AADD( aMenu , { "ORCAMENTO_CONSULTAPECA","ORCAMENTO",STR0029,"VS1","OFIXA011","M_CONSPEC" ,01,.f.,".t."                     , NIL } ) // "Consulta de Peça"
    Endif
Else
    If FindFunction("OFIXC001")
        AADD( aMenu , { "ORCAMENTO_CONSULTAPECA","ORCAMENTO",STR0029,"VS1","OFIXA011","OFIXC001"  ,01,.f.,".t."                     , NIL } ) // "Consulta de Peça"
    EndIF
Endif
If FindFunction("U_ORCAMTO")
    AADD( aMenu , { "ORCAMENTO_NODE_IM_R"       ,"ORCAMENTO",STR0059 ,"VS1","OFIXA120","OX120IMPO",02,.f.,"!Empty(VS1->VS1_NUMORC)" , NIL } ) // "Impressão da Orçamento"
Endif

// Adiciona itens no menu por customização
OXA120ROT(@aMenu)
//

For nCont := 1 to Len(aMenu)
    If Empty(aMenu[nCont,2])
        OXA120ADDM(aMenu[nCont],aMenu,oMenuTree)
    EndIf
Next nCont

// Adiciona opcao SAIR
oMenuTree:AddTree ( "Sair" , "final", "FINAL", "NODE_SAIR", { || oDlgPanOfi:End() } , /*bRClick*/, /* */ )
oMenuTree:EndTree()
//

Return

 

Exemplo:

#include "TOTVS.ch"


User Function OX120ROT()


Local aRotAdic := {}


// Adiciona opções na estrutura padrão da rotina

AADD( aRotAdic , { "OFICINA_SERVICO_ROTADIC" ,"OFICINA_SERVICO" ,"Rotina Adicional" ,"VO1","U_OX120ADIC","U_OX120ADIC" ,2 , .f. ,".t.", } )

AADD( aRotAdic , { "OFICINA_PECA_ROTADIC" ,"OFICINA_PECA" ,"Rotina Adicional" ,"VO1","U_OX120ADIC","U_OX120ADIC" ,2 , .f. ,".t.", } )

// rotina com sub-menu

AADD( aRotAdic , { "OFICINA_CONSULTARNF_ROTADIC" ,"OFICINA_CONSULTARNF" ,"NFe Sefaz","VO1","SPEDNFE","SPEDNFE",3,.f.,".t.",1 } )

//

// Cria uma nova estrutura que será adicionada abaixo da pasta de ORÇAMENTO

AADD( aRotAdic , { "JD_GARANTIA" ,"" ,"Solicitacao Garantia" ,"VMB","OFINJD15","" , 0 , .f. , ".t.", } )

AADD( aRotAdic , { "JD_GARANTIA_ALTERAR" ,"JD_GARANTIA" ,"Alterar" ,"VMB","OFINJD15","OFINJD15(,,,.t.)" , 4 , .f. , ".t.", } )

AADD( aRotAdic , { "JD_GARANTIA_TRANSM" ,"JD_GARANTIA" ,"Transmitir" ,"VMB","OFINJD15","OFINJD15(,,,.t.)" , 7 , .f. , ".t.", } )

AADD( aRotAdic , { "JD_GARANTIA_TRANSNF" ,"JD_GARANTIA" ,"Trasmitir NF" ,"VMB","OFINJD15","OFINJD15(,,,.t.)" , 9 , .f. , ".t.", } )

AADD( aRotAdic , { "JD_GARANTIA_ATUOS" ,"JD_GARANTIA" ,"Atualiza OS" ,"VMB","OFINJD15","OFINJD15(,,,.t.)" ,10 , .f. , ".t.", } )

AADD( aRotAdic , { "JD_GARANTIA_ALTSJD" ,"JD_GARANTIA" ,"Alteracao Senha JD" ,"VMB","OFINJD15","OFINJD15(,,,.t.)" ,13 , .f. , ".t.", } )



Return aRotAdic


user function OX120ADIC()


dbSelectArea("VOO")

Alert("TESTE")


Return