Exemplo de ponto de entrada no novo cadastro de Clientes (CRMA980)

No artigo de hoje vamos demonstrar uma forma de simples de criar o ponto de entrada CRMA980 baseado nos que já existirem na sua base da MATA030 do Cadastro de Clientes.

Como muitos sabem, o cadastro de clientes foi atualizado, sendo que agora a rotina esta em MVC, com o nome de CRMA980.

Os pontos de entrada em MVC, ficam centralizados em uma User Function, sendo possível testar cada ponto com um If.

A grande questão, é que ficar copiando o mesmo código que já foi feito nos pontos antigos da MATA030 para essa nova, dá muito trabalho, e pode ser que falte copiar algum trecho e acabar dando problemas.

Então o que fizemos aqui, é acionar os mesmos pontos de entrada, nos pontos em MVC, assim você consegue otimizar o seu código e deixar ele bem organizado. Além do CRMA980, abaixo segue um exemplo também do CRM980BFIL e do CRM980MDEF.

//Bibliotecas
#Include "Totvs.ch"
 
/*/{Protheus.doc} User Function CRMA980
Novo cadastro de Clientes
@author Atilio
@since 15/10/2022
@version 1.0
@obs Codigo gerado automaticamente pelo Autumn Code Maker
     *-------------------------------------------------*
     Por se tratar de um p.e. em MVC, salve o nome do 
     arquivo diferente, por exemplo, CRMA980_pe.prw 
     *-----------------------------------------------*
     A documentacao de como fazer o p.e. esta disponivel em https://tdn.totvs.com/pages/releaseview.action?pageId=208345968 
@see http://autumncodemaker.com
/*/
 
User Function CRMA980()
    Local aArea := FWGetArea()
    Local aParam := PARAMIXB 
    Local xRet := .T.
    Local oObj := Nil
    Local cIdPonto := ""
    Local cIdModel := ""
     
    //Se tiver parametros
    If aParam != Nil
         
        //Pega informacoes dos parametros
        oObj := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]
             
        //Na validacao total do formulario 
        If cIdPonto == "FORMPOS" .And. cIdModel == "SA1MASTER"
            xRet := u_MA030TOK()
 
        //Apos a gravacao total do modelo e dentro da transacao 
        ElseIf cIdPonto == "MODELCOMMITTTS"
            nOper := oObj:nOperation
 
            If nOper == 3
                u_M030INC()
            ElseIf nOper == 5
                u_M030EXC()
            EndIf
 
        //Na validação do modelo de dados (pode impedir o usuário de abrir a tela) 
        ElseIf cIdPonto == "MODELVLDACTIVE"
            nOper := oObj:nOperation
 
            If nOper == 5
                xRet := u_M030DEL()
            EndIf
 
        //Após a gravação total do modelo e fora da transação 
        ElseIf cIdPonto == "MODELCOMMITNTTS"
            nOper := oObj:nOperation
 
            If nOper == 4
                u_M030PALT()
            EndIf
             
        //Para a inclusao de botoes na ControlBar 
        ElseIf cIdPonto == "BUTTONBAR"
            aMenuUsr := u_MA030BUT()
            xRet     := {}
 
            For nAtual := 1 To Len(aMenuUsr)
                aAdd(xRet, {"* " + aMenuUsr[nAtual][4], "", aMenuUsr[nAtual][2], ""})
            Next
        EndIf
         
    EndIf
     
    FWRestArea(aArea)
Return xRet
 
/*/{Protheus.doc} User Function CRM980MDEF
Novo ponto de entrada para adicionar rotinas no novo cadastro de clientes (CRMA980)
@type  Function
@author Atilio
@since 15/10/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=604230458
/*/
 
User Function CRM980MDEF()
    Local aArea := FWGetArea()
    Private aRotina := {}
    u_MA030ROT()
 
    FWRestArea(aArea)
Return aRotina
 
/*/{Protheus.doc} User Function CRM980BFil
Ponto de Entrada que adiciona filtro do Browse na tela de clientes substituindo o MA030BRW
@type  Function
@author Atilio
@since 15/10/2022
@see https://tdn.totvs.com/display/public/PROT/PE+CRM980BFil+Adiciona+filtro+no+browse+do+cadastro+de+clientes
/*/
 
User Function CRM980BFil()
    Local aArea   := FWGetArea()
    Local cFiltro := ""
 
    //Exemplo
    //cFiltro := "SA1->A1_VEND == 'XXXXXXX'"
 
    FWRestArea(aArea)
Return cFiltro

Obs.: Lembrando que os códigos individuais de cada User Function, devem ser revisados conforme a regra de negócio de cada empresa

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação