× Linguagem de Programação ADVPL

Perguntas Ajuda com Ponto de Entrada

Mais
10 anos 5 meses atrás #22872 por ftvernier
Fala Galera Boa Tarde,

Criei um ponto de entrada para assim que for incluído um pedido de comprar gerar uma prévia no financeiro, porém quando o pedido for excluído a prévia deve ser excluída também, o que não está ocorrendo poderiam me ajudar?

Segue abaixo o ponto:

#include "rwmake.ch"
User Function MT120GOK()
Local cA120Num
Local l120Inclui
Local l120Altera
Local l120Deleta
aAreaF := GetArea()
cDocto := AllTrim(SC7->C7_NUM)// Montagem do Titulo no Financeiro
cParc := ''
cNumPed:= SC7->C7_NUM
nTotal := 0.00
cCond := SC7->C7_COND
nRecno := SC7->(Recno())
cCodFor:= SC7->C7_FORNECE
cLojFor:= SC7->C7_LOJA
dDtPrev:= SC7->C7_DATPRF
cA120Num := ParamIxb[1]
l120Inclui := ParamIxb[2]
l120Altera := ParamIxb[3]
l120Deleta := ParamIxb[4]

IF SC7->(dbSetOrder(1), dbSeek(xFilial("SC7")+cNumPed))
While !SC7->(EOF()) .And. SC7->C7_FILIAL == xFilial("SC7") .And. SC7->C7_NUM == cNumPed
nTotal += Round(SC7->(C7_TOTAL + C7_VALIPI + C7_VALFRE - C7_VLDESC),2)

SC7->(Dbskip())
Enddo
Endif

SC7->(dbGoTo(nRecno))

If !Empty(nTotal)
aCond := condicao( nTotal , cCond, 0, dDtPrev )

If ALTERA // Se For Uma Alteracao Entao Exclui todos Os Titulos provisorios gerados anteriormente
If SE2->(dbSetOrder(1), dbSeek(xFilial("SE2")+cDocto))
While SE2->(!Eof()) .And. SE2->E2_FILIAL == xFilial("SE2") .And. SE2->E2_NUM == cDocto
If Alltrim(SE2->E2_TIPO) == 'PR'
If RecLock("SE2",.f.)
SE2->(dbDelete())
SE2->(MsUnlock())
Endif
Endif

SE2->(dbSkip(1))
Enddo
Endif
Endif

If l120Deleta
If SE2->(dbSetOrder(1), dbSeek(xFilial("SE2")+cDocto+l120Deleta))
While SE2->(!Eof()) .And. SE2->E2_FILIAL == xFilial("SE2") .And. SE2->E2_NUM == cDocto
If Alltrim(SE2->E2_TIPO) == 'PR'
If RecLock("SE2",.f.)
SE2->(dbDelete())
SE2->(MsUnlock())
Endif
Endif

SE2->(dbSkip(1))
Enddo
Endif
Endif

If INCLUI .Or. ALTERA
Begin Transaction

If Len(aCond) > 1
cParc := 'A'
Endif

For nI := 1 To Len(aCond)
lMsErroAuto := .f.

dbSelectArea("SE2")

// Geracao da Previa
nOpc := 3
aVetor := {{"E2_PREFIXO" ,'PR ',Nil},;
{"E2_NUM" ,cDocto,Nil},;
{"E2_PARCELA" ,cParc,Nil},;
{"E2_TIPO" ,'PR ',Nil},;
{"E2_FORNECE" ,cCodFor,Nil},;
{"E2_LOJA" ,cLojFor,Nil},;
{"E2_EMISSAO" ,dDataBase,NIL},;
{"E2_VENCTO" ,DataValida(aCond[nI,1],.T.),NIL},;
{"E2_VENCREA" ,DataValida(aCond[nI,1],.T.),NIL},;
{"E2_VALOR" ,aCond[nI,2],Nil},;
{"E2_HIST" ,'PREVIA COMPRAS',Nil}}

MSExecAuto({|x,y,z| Fina050(x,y,z)},aVetor,,nOpc) //Inclusao
If lMsErroAuto
MostraErro()
DisarmTransaction()
Endif
cParc := Soma1(cParc,1)
Next

End Transaction
Endif
Endif
Restarea(aAreaF)
Return .T.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22874 por dexter
Respondido por dexter no tópico Ajuda com Ponto de Entrada
Tudo bom Fernando.

Bem pelo pouco que sei, percebi que sua função tem ação de alterar e excluir
que fazem a mesma ação, se a opção de alterar funciona então a exclusão funciona da mesma forma,
se eu estiver entendido bem.

Alterar
If ALTERA // Se For Uma Alteracao Entao Exclui todos Os Titulos provisorios gerados anteriormente
If SE2->(dbSetOrder(1), dbSeek(xFilial("SE2")+cDocto))
[/color]

Excluir
If l120Deleta
If SE2->(dbSetOrder(1), dbSeek(xFilial("SE2")+cDocto+l120Deleta))


Só muda no seu IF ao lado do ( cDocto ) que pra deletar vc concatena com l120Deleta!

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás - 10 anos 5 meses atrás #22878 por ftvernier
Respondido por ftvernier no tópico Ajuda com Ponto de Entrada
Dexter,

Desculpa mas não entendi muito bem.

Eu exclui o IF que continha o IF l120Deleta e concatenei no outro IF ficando dessa forma.

If SE2->(dbSetOrder(1), dbSeek(xFilial("SE2")+cDocto+l120Deleta))

Ok?

Abraços.
Ultima edição: 10 anos 5 meses atrás por ftvernier.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22879 por THALESCOTR
Respondido por THALESCOTR no tópico Ajuda com Ponto de Entrada
Bom dia Fernando, provavelmente o seu problema está no Dbseek.

O índice 1 da SE2 é: Filial + Prefixo + Titulo, você está usando apenas Filial + Titulo, onde ele não encontra os titulos daí.
Tente alterando os dBseek da SE2, para:

dbSeek(xFilial("SE2")+'PR '+cDocto)


Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22880 por ftvernier
Respondido por ftvernier no tópico Ajuda com Ponto de Entrada
Thales,

Tentei mas também não rolou.

Valeu.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22883 por THALESCOTR
Respondido por THALESCOTR no tópico Ajuda com Ponto de Entrada
Estranho, deveria funcionar.

Tente debugar a rotina, ou colocar um alert na linha do DbSeek.
Assim:

SE2->(dbSetOrder(1)
msgAlert(dbSeek(xFilial("SE2")+'PR '+cDocto)))
If dbSeek(xFilial("SE2")+cDocto))
...

A mensagem terá que retornar .T. se encontrou ou registro, caso contrário debugue a rotina, e verifique, pois provavelmente é os espaços daí.


Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

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