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>
Updated 11 months ago