Inserir filho em uma tabela pai x filho através de outra solicitação

Eu consigo inserir um filho em uma tabela que está na solicitação 1 através da solicitação 2?

Por API da sim, você pode modificar processos através de API, mas pra isso vai precisar recuperar o numero do processo.

Pode me dar um exemplo?

Use a API ECMCardService

@odair.batista poderia me dar um exemplo?

Eu já fiz isso em uma Widget. Segue o exemplo Fluig: Exemplo de Inserção de Pai Filho por Web Service em Widget · GitHub

Em evento no backend você pode acessar fazer um pouco diferente, instanciando o serviço ECMCardService e usando o método updateCardData dele.

No manual da hAPI tem um exemplo usando dessa forma. hAPI - TOTVS Fluig - TDN

Aqui tem um exemplo simples também em ADVPL, deixei bem resumido…

	//Efetua a implantação de filho no formulário FLUIG
	cXML := '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.dm.ecm.technology.totvs.com/">
	cXML += '   <soapenv:Header/>'
	cXML += '   <soapenv:Body>'
	cXML += '      <ws:updateCardData>'
	cXML += '         <companyId>' + cFlgComp + '</companyId>' 
	cXML += '         <username>' + cFlgUser + '</username>' 
	cXML += '         <password>' + cFlgPwd + '</password>' 
	cXML += '         <cardId>' + cFormId + '</cardId>' 
	cXML += '         <cardData>'
	cXML += '            <item>'
	cXML += '               <field>' + 'PRBRANCH___' + allTrim(cValToChar(nGridRow)) + '</field>' 
	cXML += '               <value>' + SC1->C1_FILIAL + '</value>' 
	cXML += '            </item>'
	cXML += '            <item>'
	cXML += '               <field>' + 'PRNUMBER___' + allTrim(cValToChar(nGridRow)) + '</field>' 
	cXML += '               <value>' + SC1->C1_NUM + '</value>' 
	cXML += '            </item>'
	cXML += '            <item>'
	cXML += '               <field>' + 'PRDATE___' + allTrim(cValToChar(nGridRow)) + '</field>' 
	cXML += '               <value>' + dToC(SC1->C1_EMISSAO) + '</value>' 
	cXML += '            </item>'
	cXML += '            <item>'
	cXML += '               <field>' + 'PRTOTAL___' + allTrim(cValToChar(nGridRow)) + '</field>' 
	cXML += '               <value>' + allTrim(transform(SC1->C1_UVALOR, "@E 999,999,999,999.99")) + '</value>' 
	cXML += '            </item>'
	cXML += '            <item>'
	cXML += '               <field>' + 'PRSTATUS___' + allTrim(cValToChar(nGridRow)) + '</field>' 
	cXML += '               <value>' + if(cStatus == 'delete', 'Eliminado', if(!isFound, 'Incluido', 'Alterado')) + '</value>' 
	cXML += '            </item>'
	cXML += '         </cardData>'
	cXML += '      </ws:updateCardData>'
	cXML += '   </soapenv:Body>'
	cXML += '</soapenv:Envelope>'

	oFluig := tWsdlManager():New()
	oFluig:lVerbose := .t.

	if !oFluig:ParseURL('http://seuservidor.com.br/webdesk/ECMCardService?wsdl')
		alert('Não foi possível comunicação com o serviço Fluig')
	else
		if !oFluig:SetOperation('updateCardData')
			alert('Não foi possível requisitar o operação do serviço Fluig')
		else
			if !oFluig:SendSoapMsg(cXML)
				alert('Não foi possível enviar requisição ao serviço Fluig')
			else
				cResults := oFluig:GetSoapResponse()	//Obtem retorno
			endif
		endif
	endif

	oFluig := nil

1 curtida