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
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags cnta300 cnb sigagct ou faça a sua própria pergunta.