Perguntas MSExecAuto MATA250 não executa via módulo ACD (TELNET)

Mais
4 anos 4 meses atrás #32893 por vmarchi8
Estou tentando executar um apontamento de produçao automático via MSExecAuto pelo SIGAACD (TELNET). O programa cria o array que é enviado ao MSExecAuto, mas ao executar ele trava e não segue o processo (não dá erro, não aparece nada no log do console, nem nada)... apenas trava o processo e não segue adiante (e também não executa o apontamento).

Qual poderia ser o problema? Segue abaixo o cód. fonte:

#INCLUDE "APVT100.ch"
#INCLUDE "Protheus.ch"
#INCLUDE "Topconn.ch"

// Programa: VTPROD01.PRG
// Funcao..: Apontamentos de producao modelo I para terminal telnet (modulo ACD)

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
User Function VTPROD01()
////////////////////////

Private lMSErroAuto := .F.
Private _nQtdeA
Private _nQtdeR
Private _sOp
Private _sTipo

_nQtdeA := 0
_nQtdeR := 0
_sOp := Space(6)
_sTipo := "010" // 010 = APONTAMENTO OP
vtClear()

Do While vtLastkey() <> 27

@ 00, 00 vtSay "Tipo Movimento:"
@ 01, 00 vtGet _sTipo Picture "@!" Valid ValiMov()
@ 02, 00 vtSay "Codigo de Barras:"
@ 03, 00 vtGet _sOp Picture "@!" Valid ValiOp() When vtLastKey() <> 27
@ 04, 00 vtSay "Qtde a Apontar:"
@ 05, 00 vtGet _nQtdeA Picture "@E 999999.99" Valid ValiQ() When vtLastKey() <> 27
@ 06, 00 vtSay "Qtde Refugo:"
@ 07, 00 vtGet _nQtdeR Picture "@E 999999.99" Valid ValiQ() When vtLastKey() <> 27
vtRead

If vtLastkey() <> 27
If _nQtdeA + _nQtdeR == 0
vtAlert("As quantidades devem ser informadas","Atencao!!!",.t.)
Else
GravaOper()
EndIf
EndIf

EndDo

Return

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
Static Function GravaOper()
///////////////////////////
Local lMsErroAuto := .F.

If vtYesNo("Confirma a Gravacao","ATENCAO!",".T.")


Begin Transaction

aMata250 := {}
aAdd(aMata250, {"D3_TM" , _sTipo , NIL})
aAdd(aMata250, {"D3_COD" , SC2->C2_PRODUTO , NIL})
aAdd(aMata250, {"D3_UM" , SC2->C2_UM , NIL})
aAdd(aMata250, {"D3_QUANT" , _nQtdeA , NIL})
aAdd(aMata250, {"D3_PERDA" , _nQtdeR , NIL})
aAdd(aMata250, {"D3_OP" , _sOp , NIL})
aAdd(aMata250, {"D3_LOCAL" , SC2->C2_LOCAL , NIL})
aAdd(aMata250, {"D3_EMISSAO" , dDataBase , NIL})

CONOUT("Antes ExecAuto")

MSExecAuto({|x,y| MATA250(x,y)},aMata250, 3 )

CONOUT("DEPOIS ExecAuto")


If lMsErroAuto
conout("Erro")
DisarmTransation()
vtBeep(5)
vtAlert("Operacao nao realizada")
Else
conout("Incluido com sucesso")
vtBeep(5)
vtAlert("Operacao realizada com sucesso")
EndIf

_nQtdeA := 0
_nQtdeR := 0
_sOp := Space(6)
_sTipo := "010"

vtClear()

End Transaction


vtBeep(5)
vtAlert("Operacao realizada com sucesso")
EndIf

RETURN

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
Static Function ValiOp()
////////////////////////
_xRet := .T.

DbSelectArea("SC2")
DbSetOrder(1)

If empty(_sOP)
VTAlert("Nro da OP deve ser informada","Atencao!!!",.t.)
_xRet := .F.

ElseIf !(DbSeek(xFilial("SC2")+_sOP))

VTAlert("OP nao encontrada","Atencao!!!",.t.)
_xRet := .F.
cOp := space(6)

ElseIf aSC2Sld() <= 0 .Or. !EmpTy(SC2->C2_DATRF)

VTAlert("OP ja concluida","Atencao!!!",.t.)
_xRet := .F.
cOp := space(6)

Else

_nQtdeA := asc2sld() //Função ASC2SLD() retorna o saldo da OP que ainda não foi apontada

EndIf

Return(_xRet)

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
Static Function ValiMov()
/////////////////////////

_lRet := .t.

SF5->(DbSetOrder(1))

If vtLastKey() == 27
_lRet := .f.

ElseIf empty(_sTipo)

vtAlert("Tipo do Movimento deve ser informado.","Atencao!!!",.t.)
_lRet := .f.
_sTipo := "010"

ElseIf (_sTipo <> "010")//!SF5->(DbSeek(xfilial("SF5") + _sTipo,.F.))

VTAlert("Tipo do Movimento invalido.","Atencao!!!",.t.)
_lRet := .f.
_sTipo := "010"

EndIf

Return(_lRet)

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
Static Function ValiQ()
///////////////////////
_lRet := .t.

If aSC2Sld() < _nQtdeA + _nQtdeR
vtAlert("Qtde Apontada + Qtde Refugo maior que a Qtde Total","ATENCAO!!!",.t.)

If upper(vtReadVar()) == "_NQTDER"
_nQtdeR := aSC2Sld() - _nQtdeA
Else
_nQtdeA := aSC2Sld() - _nQtdeR
EndIf
_lRet := .f.
EndIf

Return(_lRet)

Por favor Acessar ou Registrar para participar da conversa.

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