×
Linguagem de Programação ADVPL
Perguntas Atualizar aColsD1
- rsstecca
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
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.
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 6 meses atrás #22703
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
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.
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.
- rsstecca
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
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.
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.
- rsstecca
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
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.
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