Páginas filhas
  • APIs Integrações - Clientes

Objetivo

Este documento tem como objetivo explicar o funcionamento da integração do Cadastro de Cliente.

Pré-Requisitos e Restrições

  • Necessário a instalação do serviço winthor-pedido-venda. Para realizar a instalação desse serviço, segue link com as devidas explicações:

Comece por aqui -> Parametrizações WTA

  • Para realizar o cadastro de clientes no WinThor, acesse o link abaixo:

Como cadastrar cliente na rotina 302?

  • Todos os campos obrigatórios do cadastro de cliente (Rotina 302) serão obrigatórios na API.
  • O atributo activityId, caso não seja enviado, a API utilizará o valor padrão "1" do parâmetro 4013 - Código do ramo de atividade para cadastro de clientes na Ciashop (CODATVCIASHOP) da rotina 132.

  • O atributo cnaeId, caso não seja enviado, a API utilizar um valor padrão "4729-6/99" do parâmetro 4585- Código do CNAE para cadastro de clientes e-commerce. (CODCNAEECOMMERCE) da rotina 132.

  • No WinThor, acessar a rotina 132 - Parâmetros da Presidência, parâmetro 4532 - "Permite alterar o cliente ao receber dados para inserção via ecommerce/API" permite ou não alteração do cadastro de cliente de forma automática ao receber dados do cliente ou pedido via API, por padrão esse campo receberá 'Sim' sendo possível sua configuração por filial. No corpo da requisição o atributo "branchParameterId" é correspondente a filial que permite ou não a alteração.
  • Obrigatoriamente os cadastro de clientes oriundos da integração deverão informar o atributo "customerOrigin" igual a "VT" (VTEX)
  • Ao inserir um novo cadastro a API priorizará o CEP informado no atributo "commercialZipCode".  Caso o CEP seja inválido e/ou a API (terceira de CEP) esteja indisponível, será considerado a Cidade informada "cityId" e posteriormente os atributos inseridos "businessCity", "businessState".
  • Ao integrar clientes será considerado o CNPJ/CPF e IE, se tiver um cadastro com o CNPJ/CPF validaremos a Inscrição estadual para cadastrar/alterar, caso seja uma nova Inscrição estadual, será integrado um novo cadastro.
  • O atributo "sellerId" , caso não seja enviado ou seu valor seja igual a 0, a API utilizará o valor padrão cadastrado no parâmetro "4012 - Código do RCA para cadastro de clientes na Ciashop" na rotina 132.

  • Ao inserir um novo registro, o valor do código RCA será registrado na coluna CODUSUR1 da tabela PCCLIENT, e em caso de alteração de um registro existente, o valor do código RCA será registrado na coluna CODUSUR3 da mesma tabela, mantendo o registro do código RCA inicial na coluna CODUSUR1.

  • O atributo documentType, caso não seja enviado, será gravado automaticamente como A, para AMBOS.

  • O parâmetro withDeliveryAddress dos endpoints de buscar clientes está disponível a partir da versão 1.2.0.1122 do winthor-pedido-venda
  • No WinThor, o parâmetro  4672 - Aceita validar CEP online nas APIs do WinThor da rotina 132 permite validar se o CEP informado está valido em API terceiros (ViaCEP e ByJG). Caso falso, essa validação não ocorrerá. O padrão do parâmetro é "Sim";
  • Para que seja realizada a busca automática da praça do cliente, o parâmetro 4680 - Permite busca automática do código da praça no cadastro do cliente via API Winthor da rotina 132 deve estar habilitado. Para esse parâmetro existe a seguinte regra:
    • Caso o parâmetro 4680 da rotina 132 esteja habilitado (sim), a API irá consultar o código da praça no cadastrado na rotina 572 do Winthor através do CEP do cliente (a API irá buscar o código cujo CEP está entre CEP inicial e CEP final cadastrado na rotina 572);
      • Caso não encontrado pelo intervalo de CEP, a API pegará o código do parâmetro 4011 - Código da praca para cadastro de clientes na Ciashop  da rotina 132, e caso o mesmo esteja nulo irá setar o valor padrão 1;
    • Caso o parâmetro 4680 da rotina 132 esteja desabilitado (não), a API irá considerar o que foi enviado na requisição (atributo squareId), e caso o mesmo seja nulo ou zero, irá setar o valor padrão 1;


Importante

Quando não houver preenchimento do campo DATA, exemplo (data de cadastro, data de alteração), nossas APIs retornará por padrão a informação "1900-01-01T00:00:00".

Caso necessário, realizar o ajuste nos cadastros para que a API apresente a data desejada.

Possíveis problemas:

Caso o ambiente esteja utilizando o antivírus Kaspersky, o serviço de consultas de cep que é realizado na integração de clientes VIACEP é bloqueado.

Para que o cadastro de clientes seja integrado com sucesso, é necessário verificar todas restrições referentes ao antivírus ou inativá-lo.

Integração


A integração consiste em receber e enviar dados que serão utilizados no E-Commerce.

Os dados integrados são: 

CUSTOMER              PCCLIENTReferência rotina 302


APIReferência Winthor DescriçãoTipo(Tamanho)ObrigatórioObservações
activityIdpcclient.codatv1

Código da atividade do Cliente - aba dados cadastrais

NUMBER(6,0)Sim
addressInfopcclient.enderent

Não

Esse parâmetro só é retornado no GET da requisição. Não é utilizado para gravar informações;
billingAddresspcclient.endercobEndereço Cobrança - aba endereço cobrançaVARCHAR2(40,0)Sim
billingAddressNumberpcclient.numerocobNumero do endereço de cobrança - aba endereço cobrançaVARCHAR2(6,0)Não
billingDistrictpcclient.bairrocobBairro - aba endereço cobrançaVARCHAR2(40,0)

Não


billingIdpcclient.codcobCódigo de cobrança - aba posição financeira - valor padrão "D"VARCHAR2(4,0)

Não


billingStatepcclient.estcobEstado - aba endereço cobrançaVARCHAR2(2,0)

Não


billingZipCodepcclient.cepcobCEP - aba endereço cobrançaVARCHAR2(9,0)Sim
branchParameterIdFilial de referência para considerar os parâmetro ALTERACLIAUTOECOMMERCE e CODPRACACIASHOP

Não
businessCitypccidade.nomecidadeCampo município - aba endereço comercialVARCHAR2(80,0)Não
businessCityIdpcclient.codcidadecomCidade - aba endereço entregaNUMBER(6,0)NãoRelaciona o ID da cidade cadastrado no banco de dados.
businessDistrictpcclient.bairroentBairro - aba endereço comercialVARCHAR2(40,0)Sim
businessStatepcclient.estentEstado - aba endereço entregaVARCHAR2(2,0)Não
cityIdpcclient.codcidadeCidadeNUMBER(10,0)SimRelaciona o ID da cidade cadastrado no banco de dados.
cnaeIdpcclient.codcnaeCNAE - aba capaVARCHAR2(60,0)Não
commercialAddresspcclient.enderentEndereço comercial - aba endereço comercialVARCHAR2(40,0)Sim
commercialAddressNumberpcclient.numeroentNumero do endereço comercial - aba endereço entregaVARCHAR2(6,0)Não
commercialZipCodepcclient.cepcomCEP - aba endereço entregaVARCHAR2(9,0)Sim
complementBillingAddresspcclient.complementocobComplemento endereço de cobrança - aba endereço cobrançaVARCHAR2(80,0)Não
complementBusinessAddresspcclient.complementoentComplemento endereço de cobrança - aba endereço comercialVARCHAR2(80,0)Não
complementDeliveryAddresspcclient.complementocomComplemento endereço de cobrança - aba endereço entregaVARCHAR2(80,0)Não
corporatepcclient.tipofjTipo de Pessoa - aba capaVARCHAR2(1,0)SimCampo Booleano. true é para pessoa jurídica("J") e false para pessoa física ("F"); Como padrão, caso parâmetro não seja enviado, será definido de acordo com o CGC informado, caso seja enviado um CPF será pessoa física ("F"), caso seja CNPJ será pessoa jurídica("J").
corporatePhonepcclient.telentTelefone - aba endereço comercialVARCHAR2(13,0)NãoO valor é criado na tabela 'pcclient.telent'.
deliveryPhonepcclient.telcomTelefone comercial - aba endereço de entregaVARCHAR2(13,0)NãoO valor é criado na tabela 'pcclient.telcom'.
billingPhonepcclient.telcobTelefone comercial - aba endereço de cobrançaVARCHAR2(13,0)NãoO valor é criado na tabela 'pcclient.telcob'.
countryIdpcclient.codpaisCódigo do pais - aba endereço comercialNUMBER(6,0)Sim
createDatepcclient.dtcadastroData e Hora de cadastro - aba dados cadastraisDATE(7,0)SimO formato correto de envio é: "yyyy-MM-dd'T'HH:mm:ss.SSS".
Sendo: yyyy para ano com quatro dígitos, MM para mês com dois dígitos, dd para dia com dois dígitos, HH para hora com dois dígitos, mm para minutos com dois dígitos, ss para segundos com dois dígitos, e SSS para milésimos com três dígitos. Exemplo de input válido: "2021-12-02T15:35:20.003".  Para 'CustomerOrigin' sendo 'VT', o campo não é obrigatório e pega os dados do de data e horário da requisição.
customerOrigin


SimOs valores aceitos para esse campo são: "VT" - VTEX; "WB" - WEB; "WTN" - Winthor não Web; "WTW" - WTA - Winthor Web; "N" - Nenhum;
deliveryAddresspcclient.endercomEndereço - aba endereço entregaVARCHAR2(40,0)Não
deliveryAddressNumberpcclient.numerocomNumero do endereço de entrega - aba endereço entregaVARCHAR2(6,0)Não
deliveryDistrictpcclient.bairrocomBairro - aba endereço entregaVARCHAR2(40,0)Não
deliveryStatepcclient.estcomEstado - aba endereço entregaVARCHAR2(2,0)Não
deliveryZipCodepcclient.CEPENTCEP - aba endereço COMERCIALVARCHAR2(9,0)Não
document


Não
documentType*pcclient.tipodocumentoTipo de documento - aba condições comerciais - opçõesVARCHAR2(1,0)NãoOs valores aceitos são 'A' para Ambos, 'C' para Cupom ou 'N' para Nota Fiscal.
emailpcclient.emailE-mail - aba endereço comercialVARCHAR2(100,0)Sim
emailNfepcclient.emailnfeE-mail NF-e - aba endereço comercialVARCHAR2(3500,0)NãoCaso esse parâmetro não seja enviado, será replicado o valor do campo 'email' para o 'emailNfe'.
finalCostumerpcclient.consumidorfinalConsumidor Final  - aba condições comerciais - opçõesVARCHAR2(1,0)NãoCampo booleano. true para 'S', false para 'N'.
ibgeIdpccidade.codibge
NUMBER(10,0)NãoNão é um campo obrigatório porém por redundância, o cliente pode envia-lo para verificar se o ID do IBGE existe no banco de dados. Campo utilizado no POST somente para validação de dados - e o envio deve ser feito pelo body como String.
id*pcclient.codcliCódigo - aba capaVARCHAR2(9,0)Não
lastChangepcclient.dtultalterData e Hora da última alteração - aba dados cadastraisDATE(7,0)SimO formato correto de envio é: "yyyy-MM-dd'T'HH:mm:ss.SSS".
Sendo: yyyy para ano com quatro dígitos, MM para mês com dois dígitos, dd para dia com dois dígitos, HH para hora com dois dígitos, mm para minutos com dois dígitos, ss para segundos com dois dígitos, e SSS para milésimos com três dígitos. Exemplo de input válido: "2021-12-02T15:35:20.003". 
namepcclient.clienteCampo cliente - Nome do cliente - aba capaVARCHAR2(60,0)Sim
paymentPlanIdpcclient.codplpagPlano de pagamento - aba condições comerciais  - parâmetrosNUMBER(4,0)Não
personIdentificationNumberpcclient.cgcentCNPJ/CPF - aba capaVARCHAR2(18,0)Sim
phone*Não é gravado em tabela nenhumaTelefone comercial - aba endereço comercialVARCHAR2(13,0)Não
sellerIdpcclient.codusur1RCA 1 - Código do RCANUMBER(4,0)Sim
squareIdpcclient.codpracaCampo praça - endereço comercialNUMBER(6,0)Sim
stateInscriptionpcclient.ieentIns. Est./ Produtor - aba dados cadastrais: Informar Inscrição Estadual. Caso não tenha, informar ISENTO. VARCHAR2(15,0)Sim
tradeNamepcclient.fantasiaFantasia - aba capaVARCHAR2(40,0)Não



Observações da requisição POST:

Se a origem do pedido for "VT": 

  • Será utilizado o CEP para preencher os dados do nome da cidade, nome do estado, e o bairro (tanto comercial, de cobrança e entrega).  Caso os dados da API de consulta falhem, serão utilizados valores informados na requisição do corpo;
  • O parâmetro: "CommercialZipCode" irá definir os campos: 'CepComercial', 'CepEntrega' e 'CepCobranca'. Sendo assim, esses valores serão iguais;
  • O parâmetro: "ComplementBusinessAddress" irá definir os campos: 'ComplementoEnderecoComercial', 'ComplementoEnderecoEntrega' e 'ComplementoEndereçoCobranca'. Sendo assim, esses valores serão iguais;
  • O parâmetro: "CommercialAddressNumber" irá definir os campos: 'NumeroEnderecoComercial', 'NumeroEnderecoEntrega' e 'NumeroEnderecoCobrança'. Sendo assim, esses valores serão iguais;
  • O parâmetro: "CommercialAddress" irá definir os campos: 'EnderecoComercial', 'EnderecoEntrega' e 'EnderecoCobrança'. Sendo assim, esses valores serão iguais;
  • O parâmetro: "corporatePhone" irá definir os campos: 'Telefone comercial', 'TelefoneEntrega' e 'TelefoneCobranca'. Sendo assim, esses valores serão iguais;
  • O CNAE padrão será 4729-6/99;
  • Código do país será 1058 que representa o Brasil;

Exemplo JSON do envio da requisição e dados do retorno:

URI - Cadastrar Cliente
method: 'POST',
url: '/api/wholesale/v1/customer/'
Body
{
    "corporate": true,
    "name": "string",
    "personIdentificationNumber": "string",
    "stateInscription": "string",
    "commercialAddress": "string",
    "businessDistrict": "string ",
    "commercialZipCode": "string",
    "email": "string",
	"emailNfe": "string",
    "customerOrigin": "VT",
    "finalCostumer": "false",
    "billingId": "string",
    "paymentPlanId":0,
    "commercialAddressNumber": "string",
    "billingAddressNumber": "string",
    "deliveryAddressNumber": "string",
    "squareId": 0,
    "activityId": 0,
    "complementBillingAddress": "string",
    "complementBusinessAddress": "string",
    "complementDeliveryAddress": "string",
    "BusinessCity": "string",
    "sellerId": 0,
    "businessCity": "string",
    "cityId": 0,
    "countryId": 0,
	"documentType": "A"
}


Exemplo JSON da resposta:  

Body Response
{
    "Id": 0
}
Body Response - Error
{
    "code": "WT-PV-000000",
    "message": "Erro ao validar itens",
    "detailedMessage": "Lista de validações em details",
    "details": [
        {
            "code": "WT-PV-0000XX",
            "message": "Campo obrigatório",
            "detailedMessage": "Detalhes do campo obrigatório. ",
            "details": []
        }
    ]
}

Enviar as requisições conforme indicação abaixo para listar os cadastros existentes:

URI Parameters - Listar um único cadastro
method: 'GET',
url: '/api/wholesale/v1/customer/'

*PARAMS:*
customerId  : 0      -    Informar o código do cliente 
withDeliveryAddress  : false - Informe para retornar os endereços de entregas do cliente 
URI Parameters - Listar todos cadastros
method: 'GET',
url: '/api/wholesale/v1/customer/list'

*PARAMS:*
withDeliveryAddress : false  - Informe para retornar os endereços de entregas do cliente  
finalCostumer       : String - Informe 'S' para retornar somente consumidor final e 'N' para não consumidor final (Não obrigatório) 
personalType        : String - Informe 'J' para retornar somente cliente pessoa jurídica e 'F' para somente pessoa física (Não obrigatório)

personIdentificationNumber   -  CPF ou CNPJ do cliente - * Disponível a partir da versão 1.3.0.1 (Versão de homologação)

Observações da requisição ao consultar:

  • Em caso de não encontrar registro pelo CPF/CNPJ retornará o http status 404 com  a descrição do erro: "Não foi possível encontrar os clientes com os dados informados: personIdentificationNumber: XPTO. Verifique se informou corretamente os dados e realize nova consulta."
  • Caso o parâmetro finalCostumer ou personalType não seja enviado a lista de clientes não será filtrada, sendo assim trazendo todos os registro pois são parâmetros não obrigatórios.


Body Response - Exemplo para todos os casos
{
    "corporate": true,
    "name": "string",
    "personIdentificationNumber": "string",
    "stateInscription": "string",
    "commercialAddress": "string",
    "businessDistrict": "string ",
    "commercialZipCode": "string",
    "email": "string",
	"emailNfe": "string",
    "customerOrigin": "VT",
    "finalCostumer": "false",
    "billingId": "string",
    "paymentPlanId":0,
    "commercialAddressNumber": "string",
    "billingAddressNumber": "string",
    "deliveryAddressNumber": "string",
    "squareId": 0,
    "activityId": 0,
    "complementBillingAddress": "string",
    "complementBusinessAddress": "string",
    "complementDeliveryAddress": "string",
    "BusinessCity": "string",
    "sellerId": 0,
    "businessCity": "string",
    "cityId": 0,
    "countryId": 0,
	"documentType": "A",
	"phone": "string",
	"corporatePhone": "string",
	"billingPhone": "string",
	"deliveryPhone": "string",
    "deliveryAddresses": [
       {
            "id": "number",
            "receiverName": "string",
            "receiverEmail": "string",
            "customerId": "number",
            "squareId": "number",
            "zipCode": "string",
            "state": "string",
            "city": "string",
            "district": "string",
            "address": "string",
            "complement": "string",
            "cityId": "number",
            "number": "number",
            "tradeName": "string",
            "lastChangeDate": "string",
            "receiverCountryId": "number",
            "receiverPhone": "number",
            "referencePoint": "string"
        }
     ]
	"permissions":{
        "acceptValidateZipCodeOnline": false
    } 
}

Para que seja realizada uma nova integração atualizando um registro já integrado, o sistema verifica o CPF/CNPJ. Portanto, ao realizar alguma alteração no registro, ele será encaminhado novamente para a view para manter a integridade dos dados do ERP com o E-commerce


  • Sem rótulos