Realizando a inclusão e alteração de dados

Regras de negócio

Utilizando a API é possível realizar a inclusão, ou atualização, de dados no SankhyaOm. Para isso, utilizamos o serviço "DatasetSP.save". O mesmo serviço é utilizado para ambos os casos, o que vai indicar se é inclusão ou atualização é o envio da chave primária do registro ou não, ou seja, ao enviar a chave primária indica a necessidade de atualização, e caso a chave primária não seja enviada, a API entende que é necessário fazer a inclusão do registro.

Exemplo de uso


URL de chamada: https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=DatasetSP.save&outputType=json

Vejamos agora a estrutura base da requisição para incluir e atualizar dados via API:
{
   "serviceName":"DatasetSP.save",
   "requestBody":{
      "entityName":"NomeDaEntidade",
      "standAlone":false,
      "fields":[ "CAMPO_1",
        "CAMPO_2",
        "CAMPO_N"
      ],
      "records":[
         {
            "pk":{  // deve ser enviado apenas para situação de atualização
               "NOME_PK":"VALOR_PK"
            },
            "values":{
               "0": "VALOR_1",
               "1": "VALOR_2",
               "2": "VALOR_N"
            }
         }
      ]
   }
}


Esta estrutura é padrão, e permite fazer inclusão, e atualização, em qualquer entidade existente no SankhyaOm. Para isso, basta indicar a Entidade (entityName), os campos (fields) e os respectivos valores (records).

Veremos a seguir 2 exemplos práticos de inclusão e atualização de registros.


Como fazer a inclusão de dados?

Agora que temos a estrutura base da requisição para incluir e atualizar dados via API, vamos apresentar um exemplo de inclusão utilizando registros com PK simples e com PK composta. Veja a seguir a inclusão de um Parceiro e seu contato. Exemplo para incluir parceiro:
{
   "serviceName":"DatasetSP.save",
   "requestBody":{
      "entityName":"Parceiro",
      "standAlone":false,
      "fields":[
         "CODPARC",
         "NOMEPARC",
         "ATIVO",
         "TIPPESSOA",
         "CODCID",
         "CODREG",
         "CLASSIFICMS",
         "ComplementoParc.SUGTIPNEGENTR",
         "ComplementoParc.SUGTIPNEGSAID"
      ],
      "records":[
         {
            "values":{
               "1":"NOME DO PARCEIRO BEM AQUI",
               "2":"S",
               "3":"F",
               "4":"1",
               "5":"0",
               "6":"C",
               "7":"13",
               "8":"13"
            }
         }
      ]
   }
}

Retorno em json:

{
    "serviceName": "DatasetSP.save",
    "status": "1",
    "pendingPrinting": "false",
    "transactionId": "EAE26797DAF8A192B2FFF990097337A7",
    "responseBody": {
        "total": "1",
        "result": [
            [
                "4454",
                "NOME DO PARCEIRO BEM AQUI",
                "S",
                "F",
                "1",
                "0",
                "C",
                "13",
                "13"
            ]
        ]
    }
}


No retorno, a primeira linha da requisição indica o Código atribuído a este parceiro (neste exemplo 4454).

Agora, vamos fazer a inclusão de múltiplos registros utilizando PK do parceiro como chave de ligação para registros de detalhe. O json a seguir inclui dois contatos para o parceiro na entidade Contato que possui PK composta (CODPARC, CODCONTATO). Segue json para incluir os contatos para o parceiro recém incluído:
Exemplo para incluir os contatos do parceiro:

{
   "serviceName":"DatasetSP.save",
   "requestBody":{
      "entityName":"Contato",
      "standAlone":false,
      "fields":[
         "CODCONTATO",
         "ATIVO",
         "NOMECONTATO",
         "EMAIL",
         "CELULAR"
      ],
      "records":[
         {
            "foreignKey":{
               "CODPARC":"4454"
            },
            "values":{
               "1":"S",
               "2":"Nome do Contato 1",
               "4":"33  999998888"
            }
         },
         {
            "foreignKey":{
               "CODPARC":"4454"
            },
            "values":{
               "1":"S",
               "2":"Nome do Contato 2",
               "4":"33  999998888"
            }
         }
      ]
   }
}

Retorno em json:

{
    "serviceName": "DatasetSP.save",
    "status": "1",
    "pendingPrinting": "false",
    "transactionId": "A0B2291C8ED35C5DD22E42B36B98BE97",
    "responseBody": {
        "total": "2",
        "result": [
            [
                "1",
                "S",
                "NOME DO CONTATO 1",
                "",
                "33  999998888"
            ],
            [
                "2",
                "S",
                "NOME DO CONTATO 2",
                "",
                "33  999998888"
            ]
        ]
    }
}


Dessa forma, com uma requisição conseguimos realizar múltiplas inclusões. Note que incluirmos o contato código 1 e 2 para o parceiro 4454.

Vale ressaltar que não é necessário enviar todos os dados (records) indicados na seção de campos (fields). O exemplo acima indica 5 campos, mas envia apenas 3 informações para realizar a inclusão do parceiro.


Como fazer alterações em dados?

Agora que vimos como incluir registros, vamos fazer algumas atualizações nos cadastros incluídos recentemente. Vamos atualizar o nome do parceiro e adicionar e-mails aos contatos que foram vinculados ao parceiro.
Para realizar uma atualização de cadastro, basta indicar a PK forte do registro desejado. Vejamos a seguir o json para atualizar o cadastro do parceiro 4454:
{
   "serviceName":"DatasetSP.save",
   "requestBody": {
      "entityName":"Parceiro",
      "standAlone":false,
      "fields": [
         "CODPARC",
         "NOMEPARC",
         "ATIVO",
         "TIPPESSOA"
      ],
      "records":[
         {
            "pk": {
               "CODPARC":"4454"
            },
            "values": {
               "1":"JOSE DA SILVA XAVIER"
            }
         }
      ]
   }
}

Retorno em json:

{
    "serviceName": "DatasetSP.save",
    "status": "1",
    "pendingPrinting": "false",
    "transactionId": "E5526480FF334FF05DC6118028A60AE0",
    "responseBody": {
        "total": "1",
        "result": [
            [
                "4454",
                "JOSE DA SILVA XAVIER",
                "S",
                "F"
            ]
        ]
    }
}


Agora vamos atualizar o cadastro dos dois contatos, adicionando e-mails aos mesmos. Segue json para realizar a requisição:

{
   "serviceName":"DatasetSP.save",
   "requestBody":{
      "entityName":"Contato",
      "standAlone":false,
      "fields":[
         "CODCONTATO",
         "ATIVO",
         "NOMECONTATO",
         "EMAIL",
         "CELULAR"
      ],
      "records":[
         {
            "pk":{
               "CODPARC":"4454",
               "CODCONTATO":"1"
            },
            "values":{
               "3":"[email protected]"
            }
         },
         {
            "pk":{
               "CODPARC":"4454",
               "CODCONTATO":"2"
            },
            "values":{
               "3":"[email protected]"
            }
         }
      ]
   }
}

Retorno em json:

{
    "serviceName": "DatasetSP.save",
    "status": "1",
    "pendingPrinting": "false",
    "transactionId": "42C865B17822AC52F3F58DFEA7394BE5",
    "responseBody": {
        "total": "2",
        "result": [
            [
                "1",
                "S",
                "NOME DO CONTATO 1",
                "[email protected]",
                "33  999998888"
            ],
            [
                "2",
                "S",
                "NOME DO CONTATO 2",
                "[email protected]",
                "33  999998888"
            ]
        ]
    }
}
Language
Click Try It! to start a request and see the response here!