Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Utilização do Ponto de Entrada em MVC do Cadastro de Clientes na opção Copiar 

Produto:Microsiga Protheus®
Ambiente:Faturamento (SIGAFAT)
Ocorrência:

Preenchimento de campo antes da abertura da tela ao realizar a cópia do Cadastro do Cliente através de ponto de entrada em MVC.Como fazer para não copiar as informações de alguns campos no momento de efetuar a cópia de um registro na rotina de Cadastro de Clientes em MVC

Passo a Passo:

Utilizaremos o ponto de entrada em MVC através do id MODELVLDACTIVE, que será executado antes da abertura da janela do cadastro.

No exemplo abaixo, iremos retratar

Utilize o id BUTTONBAR, pois o mesmo é executado depois de todas as validações básicas para abertura da rotina.

O exemplo abaixo retrata o caso em que o usuário deseja que na cópia de um cliente o campo de Maior Saldo (A1_MSALDO), localizado na aba Adm/Fin. dentro da aba Principal do cadastro em MVC, seja zeradonão efetuar a cópia de alguns campos de um cliente já cadastrado.

Exemplo:

Bloco de código
languageactionscript3js
linenumberstrue
// BIBLIOTECAS UTILIZADAS
#Include "TOTVS.ch"
#Include "FWMVCDEF.ch"
// PONTO DE ENTRADA MVC DA CRMA980
User Function CRMA980()
 
Local aParam  Local aParam   := PARAMIXB  // PARÂMETROSParâmetros PASSADOSpassados PARApara Oo PONTOponto (SEMPREsempre VARIAMvariam)
Local xRet   Local xRet     := .T.       // RETORNORetorno LÓGICOlógico PARApara PROSSEGUIMENTOprosseguimento DAda ROTINArotina
Local oObj   Local oObj     := NIL       // OBJETOObjeto QUEque ARMAZENARÁarmazenará Oo MODELOmodelo TOTALtotal
Local   cIdPonto Local cIdPonto := ""        // IDId DOdo MOMENTOmomento DAda CHAMADAchamada DOdo PONTOponto
Local  cIdModel  Local cIdModel := ""        // QUALQual MODELOmodelo OUou SUBMODELOsubmodelo ESTÁestá ATIVOativo

Local aCpoNoCopy   // VALIDA SE O PONTO FOI CHAMADO SEM PASSAGEM DE PARÂMETROS
    := {}

If (aParam != NIL)
        // ATRIBUIÇÃO DE VALORES

        oObj     := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]

    If cIDPonto ==  // VERIFICA SE O MOMENTO DA CHAMADA É QUANDO O ID IGUAL A BUTTONBAR"MODELVLDACTIVE" .And. oObj:GetOperation() == MODEL_OPERATION_INSERT

        aAdd(aCpoNoCopy, "A1_MSALDO")
        // E SE A OPERAÇÃO DE INCLUSÃO É PROVENIENTE DE UMA CÓPIAaAdd(aCpoNoCopy, "A1_MCOMPRA")
        aAdd(aCpoNoCopy, "A1_PRICOM")
        If (cIdPonto == "BUTTONBAR" .And. oObj:IsCopy())aAdd(aCpoNoCopy, "A1_ULTCOM")
            // PROCURA O SUBMODELO SA1MASTER E INSERE NO CAMPO INFORMADO O CONTEÚDO DESEJADOaAdd(aCpoNoCopy, "A1_SALDUP")
            oObj:GetModel("SA1MASTER"):LoadValue("A1_MSALDO", 0aAdd(aCpoNoCopy, "A1_SALPED")

            //Define RECUPERAquais Acampos VIEWdo ATIVAsubmodelo Enão ATUALIZAserão (NECESSÁRIOcopiados PARAno EXIBIÇÃOprocesso DOde CONTEÚDO)
cópia do submodelo.
          oView := FwViewActive()
            oView:Refresh()
oObj:GetModel("SA1MASTER"):SetFldNoCopy(aCpoNoCopy)

        EndIf
EndIf
    EndIf
Return (xRet)// RETORNO LÓGICO PARA PROSSEGUIMENTO
Pode lhe interessar: