Rotina A410Visual - Chamada em MVC

Estou começando com os fontes MVC e tenho um problema no meu menudef, estou chamando a Rotina A410Visual que é uma static function no menudef mas da type mismatch, aparentemente n tem como chamar uma statical, de que maneira vcs fariam para chamar ela na menudef? Obs: já tentei por user function e chamar e n funcionou

Cristian, poderia por favor colocar o exemplo do que você está fazendo, ou tentando fazer.

Boa tarde, segue exemplo:

ADD OPTION aRotina TITLE 'Visual.Doc' ACTION 'StaticCall(BKCOMA09, SZSVDoc)' OPERATION 2 ACCESS 0

Obs: BKCOMA09 é o fonte que contem a função estatica.

Estou tentando colocar essa função abaixo dentro do submodelo do menudef...


Static Function AcessaPV(cPedido)
       Local aArea := GetArea() //Irei gravar a area atual
     Private Inclui    := .F. //defino que a inclusão é falsa
    Private Altera    := .T. //defino que a alteração é verdadeira     Private nOpca     := 1   //obrigatoriamente passo a variavel nOpca com o conteudo 1
       Private cCadastro := "Pedido de Vendas" //obrigatoriamente preciso definir com private a variável cCadastro     Private aRotina := {} //obrigatoriamente preciso definir a variavel aRotina como private

       DbSelectArea("Z4I") //Abro a tabela Z4I
       Z4I->(dbSetOrder(1)) //Ordeno no índice 1
       Z4I->(dbSeek(xFilial("Z4I")+ cPedido)) //Localizo o meu pedido
       If Z4I->(!EOF()) //Se o pedido existe irei continuar
           Z4I->(DbGoTo(Recno())) //Me posiciono no pedido
           MatA410(Nil, Nil, Nil, Nil, "A410Visual") //executo a função padrão MatA410
       Endif
       Z4I->(DbCloseArea()) //quando eu sair da tela de visualizar pedido, fecho o meu alias
       RestArea(aArea) //restauro a area anterior.

   Return ()


Static Function MenuDef()
    Local     cCodUser     := RetCodUsr()
    Local aRotina := {}

    //ADD OPTION aRotina TITLE "Pesquisar"      ACTION 'PesqBrw'      OPERATION 1 ACCESS 0
    ADD OPTION aRotina Title 'Visualizar' Action 'VIEWDEF.TCOMA093' OPERATION 2 ACCESS 0
    IF cCodUser == '000000' .OR. cCodUser == '000202' .OR. cCodUser == '000377' .OR. cCodUser == '000062' .OR. cCodUser == '000390'
        ADD OPTION aRotina Title 'Alterar'    Action 'VIEWDEF.TCOMA093' OPERATION 4 ACCESS 0
    EndIF
    ADD OPTION aRotina TITLE 'Mostra Pendentes'  ACTION 'U_PENDEN()'      OPERATION 2 ACCESS 0
    ADD OPTION aRotina TITLE 'Mostra Entregues'  ACTION 'U_ENTR()'      OPERATION 2 ACCESS 0

    ADD OPTION aRotina TITLE 'FUNCAO'  ACTION 'StaticCall( TCOMA093, AcessaPV)'  OPERATION 2 ACCESS 0

    //ADD OPTION aRotina Title 'Incluir' Action 'VIEWDEF.TCOMA093' OPERATION 3 ACCESS 0
    //ADD OPTION aRotina Title 'Excluir'    Action 'VIEWDEF.TCOMA093' OPERATION 5 ACCESS 0
    //ADD OPTION aRotina Title 'Imprimir'   Action 'VIEWDEF.TCOMA093' OPERATION 8 ACCESS 0
    //ADD OPTION aRotina Title 'Copiar'     Action 'VIEWDEF.TCOMA093' OPERATION 9 ACCESS 0

Return aRotina

Qual error.log ocorre?

Cristian,

A sua função AcessaPV recebe como parâmetro cPedido.

E você está invocando a função sem passar esse parâmetro, logo, a concatenação com o retorno de xFilial vai gerar error.log, pois a variável cPedido está com o valor nil:


Z4I->(dbSeek(xFilial("Z4I")+ cPedido))

Para corrigir, você pode criar um valor default para o parâmetro cPedido, algo como:


default cPedido := SC5->C5_NUM

Ou qualquer outra regra para obter o valor de pedido que você tenha.