Árvore de páginas

Versões comparadas

Chave

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

...

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

Por padrão a tabela complementar de clientes é gravada apenas quando ocorre a manipulação de alguma de suas informações. Comportamento este para evitar que não haja a gravação de uma AI0 para cada um dos registros SA1, o que incorreria em perda de performance e na "superpopulação" de registros.


Portanto, segue orientação, caso haja a necessidade de condicionar a gravação da tabela sem que seja feita sua manipulação.


Como "forçar" a gravação Como fazer para gravar a tabela AI0 (Complemento de Cliente) via ponto de entrada na rotina de Cadastro de Clientes em MVC?

Passo a Passo:

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

No exemplo abaixo, iremos retratar o caso em que o usuário confirma a inclusão de um cliente.

Exemplo:

Bloco de código
languagejs
linenumberstrue
#Include "Protheus.Ch"
#Include "FWMVCDEF.CH"
#Include "RWMake.Ch"
#Include "TopConn.Ch"

***********************
User Function CRMA980()
***********************

Local aParam        := ParamIxb
Local xRet          := .T.
Local cIDPonto      := ''
Local cIDModel      := ''
Local oObj          := NIL
Local aFields		:= {}
Local nY			:= 1
Local aSX3Area		:= SX3->(GetArea())
Local xConteudo

If aParam <> NIL
    oObj        := aParam[1]
    cIDPonto    := aParam[2]
    cIDModel    := aParam[3]
    nOperation  := oObj:GetOperation()
    //Exemplo para que a TABELA AI0 (Complementos de Clientes) seja gerada mesmo sem atualização do MODEL AI0CHILD
    If  cIDPonto == 'FORMPOS' .And. cIDModel == "AI0CHILD" .And. nOperation == MODEL_OPERATION_INSERT
       aFields	:= FWSX3Util():GetAllFields("AI0",.F.)
       SX3->(DbSetOrder(2))
    	If Empty(Alltrim(oObj:GetValue("AI0_CODCLI")))
	    	For nY := 1 To Len(aFields)
		    	If SX3->(DbSeek(aFields[nY])) .And. X3Uso(SX3->X3_USADO)
			    	xConteudo := Alltrim(GetSx3Cache(aFields[nY],'X3_RELACAO'))
				    If !Empty(xConteudo)
                        oObj:SetValue(aFields[nY],xConteudo)
				    EndIf
			    EndIf
		    Next
		    oObj:SetValue("AI0_SETPUB","2")
	    EndIf
        RestArea(aSX3Area)
    EndIf
EndIf

Return(xRet)
Pode lhe interessar:

...