Execauto Mata681

Estou desenvolvendo a rotina para apontamento de produção mas ao executar no webservice, retorna o código 500. Todos os dados foram enviados corretamente. No vetor, enviei com o lote e validade e mesmo assim retorna o erro. Peguei o exemplo da própria totvs para a inclusão e coloquei aqui e não funcionou. Segue abaixo parte do código criado:

WSMETHOD POST WSSERVICE WSREQAPP Local oJson := JsonObject():New() Local cError := "" Local aVetor := {} Local nX := 0 Private lMsErroAuto := .F. Private lMsHelpAuto := .T.

::SetContentType("application/json")

// Validação do conteúdo JSON If Empty(::GetContent()) ::SetResponse('{"status": "error", "message": "Conteudo JSON vazio"}') Return .F. EndIf

FWJsonDeserialize(::GetContent(), @oJson)

If ValType(oJson) != "O" ::SetResponse('{"status": "error", "message": "JSON invalido"}') Return .F. EndIf

cOpcao := ALLTRIM(oJson:opcao)

//Opção 1: Realiza o apontamento da produção IF ALLTRIM(cOpcao) == '01'

DBSELECTAREA('SC2') SC2->(DbSetOrder(1))

If !SC2->(DbSeek(xFilial("SC2") + oJson:ordem_producao)) ::SetResponse('{"status": "error", "message": "Ordem de producao nao encontrada"}') Return .F. EndIf

cProduto := SC2->C2_PRODUTO cLocal := SC2->C2_LOCAL

// Validação de campos obrigatórios If Empty(oJson:data_inicio) .Or. Empty(oJson:data_fim) .Or. ; Empty(oJson:hora_inicio) .Or. Empty(oJson:hora_fim) .Or. ; Empty(oJson:qtd_produzida) .Or. Empty(oJson:operacao) .Or. ; Empty(oJson:maquina) ::SetResponse('{"status": "error", "message": "Campos obrigatorios nao preenchidos"}') Return .F. EndIf

aRetirar := {"-"} dIni := StrDelChr(oJson:data_inicio, aRetirar)

aVetor := { ; {"H6_OP" , oJson:ordem_producao , NIL},; {"H6_PRODUTO" , cProduto , NIL},; {"H6_OPERAC" , oJson:operacao , NIL},; {"H6_DTAPONT" , dDataBase , NIL},; {"H6_DATAINI" , STOD(StrTran(oJson:data_inicio,"-","")) , NIL},; {"H6_HORAINI" , oJson:hora_inicio , NIL},; {"H6_DATAFIN" , STOD(StrTran(oJson:data_fim,"-","")) , NIL},; {"H6_HORAFIN" , oJson:hora_fim , NIL},; {"H6_PT" , 'P' , NIL},; {"H6_LOCAL" , cLocal , NIL},; {"H6_QTDPROD" , oJson:qtd_produzida , NIL},; {"H6_QTDPERD" , oJson:qtd_refugada , NIL}}

//No vetor, passei o lote e a validade

lMsErroAuto := .F. MSExecAuto({|x| mata681(x)}, aVetor, 3) //Aqui coloquei assim também: MSExecAuto({|x,y| mata681(x,y)}, aVetor, 3)

If lMsErroAuto aLogAuto := GetAutoGRLog() For nX := 1 To Len(aLogAuto) cError += EncodeUTF8(aLogAuto[nX]) Next nX

::SetResponse('{"status": "error", "message": "' + cError + '"}') Return .F. Else ::SetResponse('{"status": "success", "message": "Apontamento realizado com sucesso"}') Return .T. EndIf Else ::SetResponse('{"status": "error", "message": "Opcao invalida"}') Return .F. ENDIF

Return

Exemplo do Json: { "ordem_producao": "81610601001", "numero_peca": "76428-BX000I", "nome_peca": "FRAME FR DR RR INR RH", "maquina": "33222R1", "operacao": "20", "desc_maquina": "PRESS 04 RH", "qtd_produzida": 100, "qtd_refugada": 1, "data_inicio": "2025-02-03", "hora_inicio": "11:35", "data_fim": "2025-02-03", "hora_fim": "19:35", "armazem": "SL", "turno" : "T1", "cod_user": "000565", "opcao": "01" }

1 curtida

Tentou debugar no VS Code para ver em que parte da o erro? Erro 500 é generico para algum erro que aconteceu na execução do codigo de destino

No VSCODE edit o arquivo lauch.json em configurations adiciona:
“enableMultiThread”: true

Pelo debug verifica onde está gerando erro.