#include "PROTHEUS.ch"
User Function MNTNG()
Local cId := PARAMIXB[1] //Indica o momento da chamada do PE
Local oWS := PARAMIXB[2] //Objeto com referência ao webservice
Local oParser
Local aArea
Local aAreaSTJ
Local nInput := 0
Local aDate
Local cType
Local lIsDone
Local cTask
Local cCode
Local nAmount
Local cOrder
Local cPlan
Local aDate
Local lOk
Local cAddress := ""
Local cCodBem := ""
If cId == "CREATE_VALID_ORDER" .OR. cId == "UPDATE_VALID_ORDER" //valida inclusão e alteração da ordem
//Bloco a seguir realiza validações dos insumos
lIsDone := If FWJsonDeserialize(oWS:GetContent(),@oParser) //Parse da string no formato Json
IIf( AttIsMemberOf( oInput , 'isDone'), oInput:isDone, .F. )
If AttIsMemberOf( oParser, "inputs" ) .And. Len( oParser:inputs ) > 0
cOrder := IIf( AttIsMemberOf( oParser, 'code' ), oParser:code, '' ) //Neste exemplo haverá validações somente para produtos realizados
cPlan :=If IIf( AttIsMemberOf( oParser, 'plan' ), oParser:plan, '000000' )
cType != "P" .Or. !lIsDone
//Bloco abaixo realiza validações nos insumosLoop
For nInput := 1 To Len( oParser:inputs ) EndIf
aDate oInput := oParser:inputs[ nInput ]
{ dDatabase, '08:00' }
cType := IIf( AttIsMemberOf( oInput , 'type' ), oInput:type, '' )lOk := .T.
lIsDone := IIf( If AttIsMemberOf( oInput, , 'isDone'), oInput:isDone, .F. )
"startDate" )
aDate := StrTokArr( oInput:startDate, " " )
//Neste exemplo haverá validações somente para produtos realizados
ElseIf AttIsMemberOf( oInput, "date" )
If cTypeaDate !:= StrTokArr( oInput:date, "P " .Or. !lIsDone
)
EndIf
Loop
aDate := { STOD( aDate[1] EndIf
), aDate[2] }
aDate
:= { dDatabase, '08:00' }
//Neste exemplo haverá validações somente quando informar lOkdata anterior a := .T.
data atual
If AttIsMemberOf( oInput, "startDate" )aDate[1] >= dDatabase
aDate := StrTokArr( oInput:startDate, " " )Loop
ElseIf AttIsMemberOf( oInput, "date" )
EndIf
cTask aDate := IIf( StrTokArrAttIsMemberOf( oInput:date , 'task'), oInput:task, "'' " )
cCode := IIf( AttIsMemberOf( oInput , 'code'), oInput:code, '' EndIf)
aDatenAmount := {IIf( STODAttIsMemberOf( aDate[1] ), aDate[2] }
oInput , 'amount'), oInput:amount, 0 )
If cId == "CREATE_VALID_ORDER"
//Neste exemplo haverá validações somentelOk quando informar data anterior a data atual
:= .F.
Else
If aDate[1] >= dDatabase
Loop
/*Trecho abaixo verifica EndIf
se o insumo já está gravado no banco
cTask := IIf( AttIsMemberOf( oInput , 'task'), oInput:task, '' )
caso exista não há necessidade de validação*/
cCode := IIf( AttIsMemberOf( oInput , 'code'), oInput:code, '' )
dbSelectArea("STL")
nAmount := IIf( AttIsMemberOf( oInput , 'amount'), oInput:amount, 0 dbSetOrder( 1 )
If cId == "CREATE_VALID_ORDER"
If !dbSeek( xFilial('STL') + PADR( cOrder, Len( STL->TL_ORDEM ) )+ ;
lOk := .F.
Else
PADR( cPlan, Len( STL->TL_PLANO ) ) + PADR( cTask, Len( STL->TL_TAREFA ) ) + ;
/*Trecho abaixo verificacType se+ oPADR( insumocCode, já está gravado no banco
Len( STL->TL_CODIGO ) ) )
caso exista não há necessidade de validação*/
lOk := .F.
dbSelectArea("STL")Else
dbSetOrder( 1 )
lOk := .F.
If !dbSeek( xFilial('STL') + PADR( cOrder, Len( STL->TL_ORDEM ) )+ ;
//Verificação abaixo para garantir que o insumo não existe no banco
While !STL->( PADREof() cPlan, Len() .AND. STL->TL_PLANOFILIAL ) )+ STL->TL_ORDEM + PADR( cTask, Len( STL->TL_TAREFAPLANO ) ) + ;
STL->TL_TAREFA + STL->TL_TIPOREG + STL->TL_CODIGO cType== xFilial('STL') + PADR( cCodecOrder, Len( STL->TL_CODIGOORDEM ) )+ );
lOk := .F.
PADR( cPlan, Len( STL->TL_PLANO ) ) + PADR( cTask, Len( STL->TL_TAREFA ) ) + ;
Else
lOk := .F.
cType + PADR( cCode, Len( STL->TL_CODIGO ) )
//Verificação abaixo para garantir que o insumo não existe no banco
If Val( STL->TL_SEQRELA ) > 0 ; //verifica se é insumo realizado
While !STL->( Eof() ) .AND. STL->TL_FILIAL + STL->TL_ORDEM + STL->TL_PLANO +;
.And. nAmount == STL->TL_QUANTID //comparação de quantidade
STL->TL_TAREFA + STL->TL_TIPOREG + STL->TL_CODIGO == xFilial('STL') + PADR( cOrder, Len( STL->TL_ORDEM ) )+ ;
lOk := .T. //já está gravado e não há necessidade de validar
PADR( cPlan, Len( STL->TL_PLANO ) ) + PADR( cTask, Len( STL->TL_TAREFA ) ) + ;Exit
EndIf
cType + PADR( cCode, Len( STL->TL_CODIGO ) )
dbSelectArea("STL")
If Val( STL->TL_SEQRELA ) > 0 ; //verifica se é insumo realizado
dbSkip()
.And. nAmount == STL->TL_QUANTID //comparação de quantidade
EndDo
EndIf
lOk := .T. //já está gravado e não há necessidade de validar
EndIf
If !lOk
Exit
Return 'Não é permitido realizar insumos do tipo produto com a data retroativa. ' + ;
EndIf
'Verifique o insumo/produto ' + cCode + ' data ' + dbSelectArea("STL"Dtoc( aDate[1] )
EndIf
dbSkip()
Next nInput
EndIf
EndIf
EndDo
ElseIf cId == "CANCEL_VALID" //valida cancelamento da ordem
If FWJsonDeserialize(oWS:GetContent(),@oParser) //Parse da string no formato EndIfJson
If Empty( oParser:message )//verifica campo observação foi passado EndIf
vazio
Return "A observação do cancelamento If !lOké obrigatória."
EndIf
EndIf
Return 'Não é permitido realizar insumos do tipo produto com a data retroativa. ' + ;
ElseIf cId == "FINISH_VALID_ORDER"
If FWJsonDeserialize(oWS:GetContent(), @oParser)
If Empty( oParser:observation ) //verifica campo observação foi passado vazio
Return "Campo observação deve ser informado."
EndIf
EndIf
'Verifique o insumo/produto ' + cCode + ' data ' + Dtoc( aDate[1] ) ElseIf cId == "FINISHED_ORDER"
If FWJsonDeserialize(oWS:GetContent(), @oParser)
EndIf
aArea Next nInput
:= GetArea()
aAreaSTJ EndIf:= STJ->(GetArea())
EndIf
ElseIf cId == "CANCEL_VALID" //valida cancelamento da ordemdbSelectArea("STJ")
If FWJsonDeserialize(oWS:GetContent(),@oParser) //Parse da string no formato Json dbSetOrder(1)
If Empty(dbSeek(xFilial("STJ") + oParser:message )//verifica campo observação foi passado vazio
order + oParser:plan)
Reclock("STJ", .F.)
Return "A observação do cancelamento é obrigatória."
STJ->TJ_DTPRINI EndIf:= STJ->TJ_DTMRINI
EndIf
ElseIf cId == "FINISH_VALID_ORDER"
If FWJsonDeserialize(oWS:GetContent(), @oParser)
If Empty( oParser:observation ) //verifica campo observação foi passado vazio STJ->TJ_HOPRINI := STJ->TJ_HOMRINI
Return "Campo observação deve ser informado."STJ->TJ_DTPRFIM := STJ->TJ_DTMRFIM
EndIf
EndIf
ElseIf cId == "FINISHED_ORDER"STJ->TJ_HOPRFIM := STJ->TJ_HOMRFIM
If FWJsonDeserialize(oWS:GetContentMsUnlock(), @oParser)
Endif
aArea := GetArea(RestArea(aAreaSTJ)
aAreaSTJ := STJ->(GetArea())
RestArea(aArea)
Endif
dbSelectArea("STJ")
ElseIf cId == "FILTER_PRODUCT" //adiciona filtro para busca de produtos
dbSetOrder(1)
Return " AND B1_GRUPO = '97'"
ElseIf cId If dbSeek(xFilial("STJ") + oParser:order + oParser:plan)
== "DESCRIPTION_LOCALIZATION" // Altera descrição de localização do bem
cCodBem := PARAMIXB[3]
ReclockdbSelectArea("STJST9", .F.)
)
STJ->TJ_DTPRINI := STJ->TJ_DTMRINIdbSetOrder(1)
If dbSeek( xFilial("ST9") + cCodBem ) .And. !Empty( STJST9->TJ>T9_HOPRINICLIENTE :=+ STJST9->TJ>T9_HOMRINILOJACLI )
cAddress := Posicione("SA1",1,xFilial("SA1") + STJST9->TJ>T9_DTPRFIMCLIENTE := STJ->TJ_DTMRFIM
+ ST9->T9_LOJACLI,"SA1->A1_END")
EndIf
STJ->TJ_HOPRFIM := STJ->TJ_HOMRFIMReturn Alltrim( cAddress )
ElseIf cId == 'FILTER_ORDER'
Return ' AND STJ.TJ_DTMPINI = ' + ValToSQL( cToD( '24/11/2020' ) MsUnlock()
Endif
ElseIf cId RestArea(aAreaSTJ)== 'FILTER_REQUEST'
Return ' AND TQB.TQB_DTABER = ' + ValToSQL( RestArea(aArea)
cToD( '24/11/2020' ) )
ElseIf cId == 'UPDATE_FINISH_ORDER'
Endif
If AttIsMemberOf( oWS, 'counter' )
ElseIf cId == "FILTER_PRODUCT" //adiciona filtro para busca de produtos
If Len( oWS:counter ) > Return0
" AND B1_GRUPO = '97'"
ElseIf cId == "DESCRIPTION_LOCALIZATION" // Altera descrição de localização do bem
cCodBem oWS:= PARAMIXBcounter[31]
:value := 3334
dbSelectArea("ST9")
dbSetOrder(1)
oWS:counter[1]:time If dbSeek( xFilial("ST9") + cCodBem ) .And. !Empty( ST9->T9_CLIENTE + ST9->T9_LOJACLI )
:= '10:10'
EndIf
cAddress := Posicione("SA1",1,xFilial("SA1") + ST9->T9_CLIENTE + ST9->T9_LOJACLI,"SA1->A1_END")
If Len( oWS:counter ) > EndIf1
Return Alltrim( cAddress )
ElseIf cId == 'FILTER_ORDER'
Return ' AND STJ.TJ_DTMPINI = ' + ValToSQL( cToD( '24/11/2020' ) )
oWS:counter[2]:value := 3334
ElseIf cId =oWS:counter[2]:time := 'FILTER_REQUEST10:10'
Return ' AND TQB.TQB_DTABER = ' + ValToSQL( cToD( '24/11/2020' ) )EndIf
ElseIf cId == 'UPDATE_FINISH_ORDER' EndIf
If AttIsMemberOf( oWS, 'counterobservation' )
If Len( oWS:counter ) > 0
oWS:observation := 'ALTERADO PELO P.E. MNTNG'
EndIf
Return oWS
oWS:counter[1]:value := 3334EndIf
Return |