Perguntas Ponto de Entrada FT400VLC - Levar inform. Compl. para Item do Pedido Venda.

Mais
3 anos 4 meses atrás #32959 por vinaop
E ai pessoal do fórum do Master ADVPL. Tudo certo com vocês,

Estou com uma dúvida e tenho certeza que vocês tem ideia de como me ajudar.

No momento da aprovação do Contrato de Parceria (para vendas com entrega futura) temos um campo MEMO na SC6->C6_INFAD e para atender nossa necessidade precisei criar um campo com essa estrutura na tabela ADB (ADB_X_INFP).
No momento da Aprovação e ou Remessa do contrato de parceria, esse campo já previamente preenchidos no item do contrato (ADB) deve ser levado para o item do pedido de vendas, e isso acontece em tempo de execução porém quando tento fazer a atribuição direto para os Registros de memória, em tela, o valor a ele atribuído não é levado para o item pedido de vendas.
Debugando o ponto de entrada, posso ver o valor sendo atribuídos certinho para a variável de tela, mas na execução do programa, não consigo ter os dados desses conteúdos na tela do item do pedido de vendas.

O código abaixo, simples para entendimento;
#INCLUDE "PROTHEUS.CH"
#INCLUDE "RWMAKE.CH"


USER FUNCTION FT400VLC()
    
Local n_I := 0
Local a_Area := GetArea()
Local a_AreADB := ADB->(GetArea())
Local aHeader := ParamIxb[1]
Local aCols   := ParamIxb[2]
Local nLinha   :=Len(aCols)
Local lRet      := .T.

// Manutenção do Código para buscar o Campo Memo do Contrato de Parceria para o Item Pedido de Vendas.

    For n_I := 1 to nLinha
        DbSelectArea("ADB")
        DbSetOrder(1)
        //If DbSeek(xFilial("ADB") + ADA->ADA_NUMCTR + aCols[n_I,GdFieldPos("C6_ITEM",aHeader)])
        If DbSeek(xFilial("ADB") + ADA->ADA_NUMCTR + ADB->ADB_ITEM)
            M->C6_INFAD := ADB->ADB_X_INFP
        EndIf
    Next   

   RestArea(a_AreADB)
   RestArea(a_Area)


RETURN (lRet)

Alguém tem ideia de como posso resolver esse impasse com esse código?

Muito obrigado pela atenção de vocês.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 4 meses atrás #32962 por admin
Segue Resposta Identica ao topico anterior, creio que o ponto de entrada irá atender os seus dois problemas ok.
#INCLUDE "rwmake.ch"
USER FUNCTION M410INIC()


local RotInc := '' 
LOCAL ITCLI  := GDFIELDPOS("C6_ITEMCLI") //     
LOCAL XCODAP := GDFIELDPOS("C6_XAPLC") //
LOCAL XAPLIC := GDFIELDPOS("C6_XAPLICA") //
LOCAL XEMBAL := GDFIELDPOS("C6_XEMBALA") //
LOCAL XLACRE := GDFIELDPOS("C6_XLACRE")               //
LOCAL XPBITE  := GDFIELDPOS("C6_XPBITEM")  //
LOCAL XPLITE    := GDFIELDPOS("C6_XPLITEM") // 
LOCAL XVOLIT := GDFIELDPOS("C6_XVOLITE")  //
LOCAL ITEM   := GDFIELDPOS("C6_ITEMCON")     
LOCAL XOPC   := GDFIELDPOS("C6_OPC")     
LOCAL XPRUNIT   := GDFIELDPOS("C6_PRUNIT")     
LOCAL XPRCVEN   := GDFIELDPOS("C6_PRCVEN")     
LOCAL XULTACAO  := GDFIELDPOS("C6_ULTACAO")     
LOCAL XPRODUTO  := GDFIELDPOS("C6_PRODUTO")     
LOCAL XDESCRICAO:= GDFIELDPOS("C6_DESCRI")     
LOCAL XENTREGA	:= GDFIELDPOS("C6_ENTREG")     
LOCAL XPEDCLI	:= GDFIELDPOS("C6_PEDCLI")     


// SE VIER DA ROTINA DE APROVAÇÃO, TEM QUE TRAZER OS CAMPOS PERSONALIZADOS.

IF ALLTRIM(UPPER(FUNNAME())) == 'FATA400'
 // CAMPOS SC5 VEM DA ADA 
 
	 SA1->(dbSetOrder(1), dbSeek(xFilial("SA1")+ADA->ADA_CODCLI+ADA->ADA_LOJCLI))

	 M->C5_CLIMTS := ADA->ADA_CLIMTS
	 M->C5_CONDPAG	:=	ADA->ADA_CONDPG
	 M->C5_FORMPAG := ADA->ADA_FORMPA
	 M->C5_LOJMTS := ADA->ADA_LOJMTS
	 M->C5_OBSCLI := ALLTRIM(SA1->A1_OBSERV)
	 If SA1->(FieldPos("A1_OBSOP")) > 0
	 	M->C5_OBSOP	:=	ALLTRIM(SA1->A1_OBSOP)
	 Endif
	 M->C5_OBSOP  := ADA->ADA_OBSOP 
	 M->C5_REGIAO := ADA->ADA_REGIAO
	 If SC5->(FieldPos("C5_XOBSCPL")) > 0
		 M->C5_XOBSCPL := ADA->ADA_XOBSCP
	 Endif
	 M->C5_XOBSFA := ADA->ADA_XOBSFA
	 M->C5_XOPCCOM := ADA->ADA_XOPCCO         
	 M->C5_NOMECLI := SA1->A1_NOME
	 M->C5_TPFRETE := ADA->ADA_TPFRET
	 If SC5->(FieldPos("C5_XCONTRA")) > 0
	   	 M->C5_XCONTRA := ADA->ADA_NUMCTR
	 Endif
	 
	 If !Empty(ADA->ADA_CLIMTS)         // Pega Informacao do Cliente MTS
	 	SA1->(dbSetOrder(1), dbSeek(xFilial("SA1")+ADA->ADA_CLIMTS+ADA->ADA_LOJMTS))
	 	
		M->C5_OBSCLI := ALLTRIM(SA1->A1_OBSERV)

		 If SA1->(FieldPos("A1_OBSOP")) > 0
		 	M->C5_OBSOP	:=	ALLTRIM(SA1->A1_OBSOP)
		 Endif
	 Endif


 	 DBSELECTAREA("ADB")
 	 DBSETORDER(1)
 
	 FOR II := 1 TO LEN(ACOLS) 
	 	IF DBSEEK(XFILIAL("ADB") + ADA->ADA_NUMCTR + ACOLS[II,ITEM])
			ACOLS[II,ITCLI]  := ADB->ADB_ITEMCL
			ACOLS[II,XCODAP] := ADB->ADB_XAPL
			ACOLS[II,XAPLIC] := ADB->ADB_XAPLIC
			ACOLS[II,XEMBAL] := ADB->ADB_XEMBAL
			ACOLS[II,XLACRE] := ADB->ADB_XLACRE               
			ACOLS[II,XPBITE] := ADB->ADB_XPBITE 
			ACOLS[II,XPLITE] := ADB->ADB_XPLITE 
			ACOLS[II,XVOLIT] := ADB->ADB_XVOLIT
			ACOLS[II,XENTREGA] := ADB->ADB_DATA
			ACOLS[II,XPRUNIT] := ACOLS[II,XPRCVEN]
			ACOLS[II,XOPC] := ADB->ADB_OPC     
			ACOLS[II,XPEDCLI] := ADB->ADB_NPCL
			ACOLS[II,XULTACAO] := 'Incluido Em ' + DtoC(Date()) + ' as ' + Left(Time(),5) 
			
			SB1->(dbSetOrder(1), dbSeek(xFilial("SB1")+aCols[II,xPRODUTO]))
			
			aCols[II,xDescricao] := SB1->B1_DESC
			
			
		ENDIF
	 NEXT II	                  
	 
 // CAMPOS DO SC6 VEM DO ADB

ENDIF

 
return

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.131 segundos
Joomla templates by a4joomla