× Linguagem de Programação ADVPL

Perguntas Ajuda com ponto de entrada para o OMS - Gestão de Distribuição

Mais
11 anos 7 meses atrás #12325 por tatiane_rc
Boa tarde,

Gostaria de uma ajuda. Utilizamos o OMS - Gestão de Distribuição, e ao acessar o menu Atualizações -> Cargas -> Montagem de Carga, utilizo a rotina "Carregamento" e "Associar Veículo" para preencher a placa ao veículo ao emitir o documento de saída.

Acontece que sempre que gero o documento de saída, é gravada uma NF nas tabelas SF1,SD1 e SF2,SD2. O problema é que na SF1 temos um campo personalizado F1_ZZPLACA, e esse campo não é preenchido quando utilizo a rotina "associar veiculo".

Observei que existe um ponto de entrada no programa OMSA200.PRW, que é o OS200ASS, só que o campo que preencho a placa do veículo é um campo virtual.

Abaixo o código que estou desenvolvendo:

#Include "Totvs.ch"
#Include "Topconn.ch"
#Include "RWMake.ch"

/* Assunto: Ponto de entrada da rotina OMSA200.PRW (Permite executar rotinas especificas após associar veiculo na montagem de cargas)

*/

User Function OS200ASS(cVeiculo)

local cDocSF2, cPlacaSF2
dbselectarea("SF2")
cDocSF2 := SF2->F2_DOC
cPlacaSF2 := SF2->F2_VEICUL1
alert(cDocSF2)
alert(cPlacaSF2)
dbSelectArea("SF1")
dbSetOrder(1)
if dbSeek(xFilial("SF1")+cDocSF2)
RecLock("SF1",.F.)
SF1->F1_ZZPLACA := cPlacaSF2 '
alert("Entrou")
endif
dbclosearea()
return

Para os alert que criei, ele esta exibindo na tela o resultado 00000001 para a nota e para a placa, uma placa errada.

Agradeço a ajuda.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 7 meses atrás #12326 por lalberto
Tatiane bom vamos lá:

O Seu campo F1_ZZPLACA é virtual ? se sim, mude-o para Real, outra coisa
a placa do veiculo deve estar na tabela DA3 vc deverá fazer o seguinte:

local cDocSF2, cPlacaSF2
dbselectarea("SF2")
cDocSF2 := SF2->F2_DOC

If DA3->(dbSetOrder(1), dbSeek(xFilial("DA3")+SF2->F2_VEICUL1))
cPlacaSF2 := DA3->DA3_PLACA
Endif

alert(cDocSF2)
alert(cPlacaSF2)
dbSelectArea("SF1")
dbSetOrder(1)
if dbSeek(xFilial("SF1")+cDocSF2)
RecLock("SF1",.F.)
SF1->F1_ZZPLACA := cPlacaSF2 '
alert("Entrou")
endif
dbclosearea()
return

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
11 anos 7 meses atrás #12329 por tatiane_rc
Obrigada pela resposta Luiz!

O campo F1_ZZPLACA não é virtual. O campo virtual é o que contem a placa do veículo, conforme print da tela em anexo.
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 7 meses atrás #12332 por lalberto
Seguinte nesta tela pressiona SHIFT + F6 e me passa o nome da rotina, é padrão né ?

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
11 anos 7 meses atrás #12333 por tatiane_rc
Sim, é rotina padrão:

Objeto: OMSA200

Programa: OMSA200.PRW

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 7 meses atrás #12340 por lalberto
Tatiana pelo que pude observar, basta buscar o registro posicionado na DA3 pois o veiculo já foi pesquisado e a DA3 já está posicionada no veiculo escolhido.

Faça o TESTE

User Function OS200ASS()

local cDocSF2, cPlacaSF2
dbselectarea("SF2")
cDocSF2 := SF2->F2_DOC
cPlacaSF2 := DA3->DA3_PLACA
alert(cDocSF2)
alert(cPlacaSF2)
dbSelectArea("SF1")
dbSetOrder(1)
if dbSeek(xFilial("SF1")+cDocSF2)
RecLock("SF1",.F.)
SF1->F1_ZZPLACA := cPlacaSF2 '
alert("Entrou")
endif
dbclosearea()
return

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.

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