- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- MSExecAuto MATA250 não executa via módulo ACD (TELNET)
Perguntas MSExecAuto MATA250 não executa via módulo ACD (TELNET)
- vmarchi8
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
4 anos 4 meses atrás #32893
por vmarchi8
MSExecAuto MATA250 não executa via módulo ACD (TELNET) foi criado 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)
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- MSExecAuto MATA250 não executa via módulo ACD (TELNET)
Tempo para a criação da página:0.080 segundos