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 não efetuar a 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 zerado.alguns campos de um cliente já cadastrado.
Exemplo:
Bloco de código |
---|
language | actionscript3js |
---|
linenumbers | true |
---|
|
#Include "TOTVS.ch"
#Include "FWMVCDEF.ch"
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)
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(aAdd(aCpoNoCopy, "A1_MSALDOSALPED", 0)
//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) |