Versão atual:

CNTA300 valores Grid CNB

Bom dia,

Preciso realizar a alteração do FormGridModel da CNB, antes de apresentar a tela ao usuário. Estou utilizando o ponto FORMPRE da rotina MVC. Porem, quando vou setar os valores, percebi que ao utilizar algo que não esteja dentro do contexto, meu for entra em loop, não chegando ao next e assim, gerando um loop infinito.

Alguém poderia me ajudar?

USER FUNCTION CNTA300()

Local aParam     := PARAMIXB
Local xRet       := .T.
Local oObj       := Nil
Local cIdPonto   := ''
Local cIdModel   := ''
Local nOper      := 0
Local cCampo     := ''
Local cTipo      := ''
Local oPEMcnb    := nil
Local k          := 0
Local nContador  := 0
Local xTexto     := ""
Local cTabPlan   := ""
Local xProdPlan  := ""
Local lAtualizou := .F.
Local nTotItPlan := 0
Local nQtdItPlan := 0
Local nPrcTbPlan := 0
Local aAreaAnt   := {}
Local cTpRevisao := ""

If aParam <> NIL

    //Pega informações dos parâmetros
    oObj     := aParam[1]
    cIdPonto := aParam[2]
    cIdModel := aParam[3]

    If cIdPonto == "FORMPRE" // PONTO DE EXECUCAO

            if IsInCallStack("CN300REV")

                    cTpRevisao := CN300RetSt('TIPREV',,,,,.F.)

                    if aParam[3] == "CNBDETAIL"

                            if oObj:Length() > 0 

                                nContador := oObj:Length()
                                cTabPlan  := oObj:Getvalue('CNB_TABPRC')

                                if MsgYesNo('Deseja ajustar os valores de acordo com a tabela ' + cTabPlan + "-" + Posicione("DA0",1,xFilial("DA0")+cTabPlan,"DA0_DESCRI"),'Pergunta')

                                    FOR K := 1 TO nContador

                                        oObj:GoLine(K)

                                        if !oObj:isEmpty()

                                                xProdPlan  := oObj:Getvalue('CNB_PRODUT')
                                                nQtdItPlan := oObj:Getvalue('CNB_QUANT')
                                                nPrcTbPlan := Posicione("DA1",1,xFilial("DA1")+cTabPlan+xProdPlan,"DA1_PRCVEN")
                                                nTotItPlan := Round((nQtdItPlan * nPrcTbPlan),2)

                                                oObj:SetValue('CNB_VLUNIT',nPrcTbPlan)
                                                oObj:SetValue('CNB_TOTAL',nTotItPlan) 

                                        Endif

                                    NEXT K

                                Endif

                            Endif

                    Endif

            Endif

    Endif

ENDIF


RETURN xRet

Versão (1):

Ver a versão formatada

CNTA300 valores Grid CNB

Comentário

new question