Exclusão de registros

Para realizar exclusão de registros em qualquer entidade de dados do sistema, devemos fazer uso do serviço CRUDServiceProvider.removeRecord do módulo mge.

Parâmetros de chamada

entity

Elemento XML com o id (PK) das linhas que serão removidas.
Cada sub-elemento está detalhado no exemplo abaixo.

Dados modificados

Quando bem sucedida, a chamada deste serviço exclui um ou mais registros da entidade de dados. Todas as validações sistêmicas e de banco de dados serão executadas antes da exclusão.

Transação

Esse serviço é transacional, portanto se alguma falha ocorrer (status = 0, por exemplo) nenhuma informação será incluída ou modificada

Detalhes do HTTP

Método de requisição: POST
URL:
https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=CRUDServiceProvider.removeRecord

Headers HTTP:
Content-Type:text/xml;charset=ISO-8859-1
Autorization: bearerToken=[TOKEN gerado no serviço de autenticação]

Estrutura básica da requisição:

<entity>
      <!-- 
      Cada elemento 'id' representa 
      uma linha que será excluída.
      As linhas são removidas na mesma ordem dos elementos 'id'
      -->
	<id>
		<!-- campos da PK devem ser colocados aqui -->
	</id>
</entity>

Exemplo de uso

Corpo de requisição:

<serviceRequest serviceName="CRUDServiceProvider.removeRecord">
	<requestBody>
		<entity rootEntity="Financeiro" datasetid="1445003703566_1">
			  <id>
				  <NUFIN>5601</NUFIN>
			  </id>
			  <id>
			  	<NUFIN>774501</NUFIN>
		  	</id>
		</entity>
	</requestBody>
</serviceRequest>

Resultado bem sucedido:
Esse serviço, quando bem sucedido, não possui retorno relevante.
Quando ocorrer falha, deve-se verificar a causa através do atributo 'status' do envelope XML, conforme explicado no documento sobre os fundamentos da API.

Exclusão por filtro

Não existe um serviço de exclusão por filtro, portanto neste caso é necessário usar os serviços CRUDServiceProvider.loadRecords e CRUDServiceProvider.removeRecord em conjunto.

O serviço CRUDServiceProvider.loadRecords está demonstrado em detalhes no documento "Busca de parceiros e outros cadastros".

Para cada linha retornada pelo CRUDServiceProvider.loadRecords, faz-se uma chamada ao serviço de exclusão, ou se preferir, gera-se uma única chamada de exclusão com todas as chaves resultantes do loadRecords.

Não há limites para a quantidade de linhas a serem excluídas por chamada, no entanto sugere-se cautela com essa quantidade, para evitar transações longas e dispendiosas para o banco de dados.

Exemplo de busca de chaves, considerando uma exclusão de financeiros de nota:

<serviceRequest serviceName="CRUDServiceProvider.loadRecords">
	<requestBody>
		<dataSet rootEntity="Financeiro" parallelLoader="false">
		    	<!-- 
Será retornado apenas o campo NUFIN (que é a PK), pois não temos interesses nos outros campos neste caso 
  			-->
			<entity path=""> 
				<field name='NUFIN'/>
			</entity>
			<criteria>
		     <!-- 
todos os titulos financeiros 
ligados à nota 123456 cuja empresa é 1
-->
				<expression>
                     		this.NUNOTA = 123456 AND this.CODEMP = 1
                </expression>
			</criteria>
		</dataSet>
	</requestBody>
</serviceRequest>