Inclusão de Parceiros

Para incluirmos novos parceiros devemos fazer uso do serviço CRUDServiceProvider.saveRecord do módulo mge.

A exemplo do serviço de busca, esse serviço também é de propósito geral, ou seja, ele pode ser usado para incluir (ou mesmo alterar) dados em qualquer tabela do sistema, bastando para isso modificar os parâmetros de chamada.

No caso da tabela de parceiros, a chave primária da tabela (coluna CODPARC) é gerada automaticamente na inclusão, fazendo parte da resposta do serviço, junto com todas as outras colunas. Isso significa que a coluna CODPARC não deve fazer parte do XML de parâmetros.

Esse exemplo demonstra a inclusão de um registro (INSERT), mas o mesmo serviço com a mesma estrutura pode ser usado para realizar modificações em registros existentes (UPDATE), bastando para isso enviar um elemento a mais (conforme comentários) no XML.

Parâmetros de chamada

dataSet

Elemento XML com campos solicitados, filtro, etc. Cada sub-elemento está detalhado no exemplo abaixo.

Dados modificados

Quando bem sucedida, a chamada deste serviço inclui um novo registro na tabela de parceiros.

Transação

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

Detalhes do HTTP

Estrutura básica da requisição: Método de requisição: POST
URL:
https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=CRUDServiceProvider.saveRecord

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:

<dataSet>
<entity>
<fieldset/>
<field/>
</entity>
<dataRow>
	<localFields>
		<!-- campos com os dados a serem salvos -->
</localFields>
<!-- 
O elemento 'key' só deve estar presente caso seja uma atualização de registro já existente.
Quando ausente, o sistema entende ser um INSERT
-->
<key>
<!-- 
campos da chave primaria devem ser colocados		aqui em caso de UPDATE.
Neste exemplo, o parceiro de código 9988 teria os dados alterados (campos presentes em 'localFields')
-->
<CODPARC>9988</CODPARC>
</key>
	</dataRow>
</dataSet>

Estrutura básica da resposta:

<entities total='1'>
<entity>
<!-- campos retornados, inclusive CODPARC gerado -->
</entity>
</entities>

Exemplo de uso

Exemplo de corpo da requisição (para testar, recomenda-se remover os comentários):

<serviceRequest serviceName="CRUDServiceProvider.saveRecord">
	<requestBody>
		<dataSet rootEntity="Parceiro" includePresentationFields="S"  datasetid="1444487520009_1">
			<entity path="">
				<fieldset list="*"/>
			</entity>
<!--
Deve haver apenas um elemento 'dataRow' por chamada, o que limita o serviço a incluir um parceiro por vez
-->
			<dataRow>
				<localFields>
<!--
Note que os campos do tipo caractere com largura acima de 1 devem ser envolvidos para um elemento CDATA
-->
					<NOMEPARC><![CDATA[CLIENTE TESTE 3]]></NOMEPARC>
					<CODREG>10100</CODREG>
					<TIPPESSOA>F</TIPPESSOA>
					<CLASSIFICMS>C</CLASSIFICMS>
					<CODCID>10</CODCID>
<!-- 
Informação sobre CPF e CNPJ ficam no mesmo campo, e será validado pelo sistema considerando o campo TIPPESSOA (F=Fisica, J=Juridica)
-->
                           <CGC_CPF>11111111111</CGC_CPF>
				</localFields>
			</dataRow>
		</dataSet>
	</requestBody>
</serviceRequest>

Resposta bem sucedida:

<?xml version="1.0" encoding="UTF-8"?>
<serviceResponse serviceName="CRUDServiceProvider.saveRecord" status="1" pendingPrinting="false" transactionId="ce27a42e-f8d7-40c2-902d-d6c78f27f348">
    <responseBody>
        <entities total="1">
            <entity>
<!--
Campo de chave primária foi gerado pelo sistema e retornado junto com as outras colunas.
-->
			<CODPARC>71</CODPARC>
			<NOMEPARC>CLIENTE TESTE 3</NOMEPARC>
			<!-- varias colunas omitidas aqui -->
            </entity>
        </entities>
    </responseBody>
</serviceResponse>