× Linguagem de Programação ADVPL

Perguntas Atualizar aColsD1

Mais
10 anos 6 meses atrás #22699 por rsstecca
Atualizar aColsD1 foi criado por rsstecca
Bom dia a todos.

Estou com um problema que é o seguinte, estou desenvolvendo uma função que será disparada por um gatilho. Essa função tem a finalidade de preencher o campo DE_CONTA de acordo com o CC e a conta cadastrada no produto. Bem, eu utilizo o aColsD1 para identificar qual o produto foi informado na SD1 para que o valor seja filtrado corretamente na SDE(Rateio por CC). Bem, na primeira vez funciona normalmente, mas se por ventura o usuário resolver trocar o produto, o valor do aColsD1 não muda, fica preso no primeiro informado. Alguém poderia me ajudar nessa? Abaixo parte do codigo que estou usando:

#Include 'Protheus.ch'

User Function CCAUTO()

Local cConta := ""
Local cCodPro := ""
Local cCusto := GDFieldGet('DE_CC')

cCodProd := Alltrim(aColsD1[1][2])

SB1->(dbSetOrder(1))
SB1->(dbSeek(xFilial('SB1') + cCodPro))

If SB1->(!Eof())
CTT->(dbSetOrder(1))
CTT->(dbSeek(xFilial("CTT") + cCusto))

Agradeço a todos.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 6 meses atrás #22703 por lalberto
Respondido por lalberto no tópico Atualizar aColsD1
#Include 'Protheus.ch'

User Function CCAUTO()

Local cConta := ""
Local cCodPro := ""
Local cCusto := GDFieldGet('DE_CC')

cCodProd := Alltrim(aColsD1[n][2]) // Troquei 1 por n, que é a posição da linha no acols

SB1->(dbSetOrder(1))
SB1->(dbSeek(xFilial('SB1') + cCodPro))

If SB1->(!Eof())
CTT->(dbSetOrder(1))
CTT->(dbSeek(xFilial("CTT") + cCusto))


Não tem o resto da rotina rsrs, ficou dificil rsrs.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 6 meses atrás #22705 por rsstecca
Respondido por rsstecca no tópico Atualizar aColsD1
Fala Luiz, foi mau ai, rsrsrsrs.

Segue a função completa.

#Include 'Protheus.ch'

User Function CCAUTO()

Local cConta := ""
Local cCodPro := ""//Alltrim(aColsD1[1][2])
Local cCusto := GDFieldGet('DE_CC')

oGetDados:oBrowse:Refresh()

cCodProd := Alltrim(aColsD1[1][2])

SB1->(dbSetOrder(1))
SB1->(dbSeek(xFilial('SB1') + cCodPro))

If SB1->(!Eof())
CTT->(dbSetOrder(1))
CTT->(dbSeek(xFilial("CTT") + cCusto))

If CTT->(! Eof())
Do Case
Case CTT->CTT_APLIC == '1'
cConta := SB1->B1_ESTOQUE
Case CTT->CTT_APLIC == '2'
cConta := SB1->B1_CONTAC
Case CTT->CTT_APLIC == '3'
cConta := SB1->B1_CONTAD
Case CTT->CTT_APLIC == '4'
cConta := SB1->B1_CONTAE
OtherWise
cConta := SB1->B1_CONTA
EndCase
Else
Aviso( OemToAnsi("Atenção"), "Não localizou o Centro de Custo! ", { "Ok" }, 2)
EndIf
Else
Aviso( OemToAnsi("Atenção"), "Não localizou o produto", { "Ok" }, 2)
EndIf

Return(cConta)

Agradecido.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 6 meses atrás #22798 por rsstecca
Respondido por rsstecca no tópico Atualizar aColsD1
Bom dia galera.
Consegui resolver o meu problema através do PE NFEINICC. Através desse PE eu pude ter acesso ao aOrigAcols(que contem informação do item do SD1 atualizado) e ao nOrigN(que me informa a linha do item do SD1), sendo assim, eu consigo ter o código do produto sempre atualizado ao abrir a tela de rateio(SDE).

Obrigado a todos pela força.

Por favor Acessar ou Registrar para participar da conversa.

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