Detalhamento técnico da integração Gestão Empresarial com o Cotei
Detalhes técnicos da integração Gestão Empresarial com o Cotei para diagnóstico de problemas.
Observação
Quando é criada uma nova rodada de cotação, caso exista uma cotação corrente no COTEI, esta é finalizada e é gerada uma nova cotação no COTEI com mesmo número de cotação. O processo de finalização e de envio de cotação seguem o mesmo fluxo já existente, para sinalizar essa ação no banco de dados, o campo E998CTE.ACAENV = 'S' e a finalização tem E998CTE.ACAENV = 'X'.
{
"cotacoes":[ É enviado uma cotação por vez
{
"codigo": (E998CTE.NUMPCT),
"codigoLista": (E998CTE.CODEMP),
“status”: (0 para cotação aberta e 3 para cotação finalizada),
"comprador": {
"email": (E099USU.INTNET),
"nome": (R910USU.NOMCOM)
},
"dataLimite": (E410PCT.DATLCW),
"descricao": (E410PCT.OBSPCT),
"empresa": (E070EMP.NOMEMP),
"cnpj": (CNPJ da proprietária),
"fornecedores": [ Todos os fornecedores serão listados dentro desse grupo
{
"cnpjFornecedor": (E095FOR.CGCCPF),
"codigo": (E095FOR.CODFOR),
"nome":(E095FOR.NOMFOR),
"email": (E095FOR.INTNET)
}
],
“identificador”: (E998CTE.IDEUNI) ,
"itens": [ Todos itens serão listados dentro desse grupo
{
"codigo": (E410COT.NUMCOT),
"descricao": (E405SOL.CPLPRO),
"quantidade": (E410COT.QTDCOT),
"unidade": (E410COT.UNIMED),
"marcaObrigatoria": {Parâmetro de integração na tela F191CPT},
"anexo": [
{
"descricao": (Nome do arquivo localizado em E000ANX.LOCANX),
"file": (Arquivo binário localizado aqui E000ANX.LOCANX)
}
],
"endereco": { Se E070ENT.SEQENT > 0 // Se E070FIL.CEPENT > 0 // terceira opção
"bairro": (E070ENT.BAIENT// E070FIL.BAIENT// E070FIL.BAIFIL),
"cep": (E070ENT.CEPENT// E070FIL.CEPENT// E070FIL.CEPFIL),
"complemento": (E070ENT.CPLENT// E070FIL.CPLENT// E070FIL.CPLENT),
"descricao": " ",
"logradouro": (E070ENT.ENDENT// E070FIL.ENDENT// E070FIL.ENDFIL),
"municipio": (E070ENT.CIDENT// E070FIL.CIDENT // E070FIL.CIDFIL),
"numero": (E070ENT.NUMENT// “ ”//E070FIL.NENFIL),
"telefone": [
(E070FIL.NUMFON)
],
"uf": (E070ENT.ESTENT// E070FIL.ESTENT// E070FIL.SIGUFS)
},
"especificacao": [ Especificações do item
(Casos citados abaixo)
]
}
]
}
]
}
Especificação do item:
- se o item possui código de barras, o mesmo é adicionado;
- se o item possui anexos, mas não especificação, é adicionada a especificação Vide anexo;
- se o item não recebeu nenhuma especificação, é adicionada a especificação Sem especificação;
- o identificador de regras CPR-410AICOT01 pode alterar a especificação/descrição de um item por meio de regras.
Outros detalhes:
- o identificador de regras CPR-410DGCOT01 pode alterar a descrição e o nome da empresa nos dados da cotação por meio de regras;
- o JSON completo é enviado somente ao enviar uma cotação pela primeira vez;
- para alterações na cotação, os campos relativos ao fornecedor e item não são enviados;
- para inclusão de novos fornecedores são enviados os campos de fornecedor apenas;
- o JSON não é enviado para apagar uma cotação. O comando é executado somente com o uso da URL.
{
"condicoes":[ Todos as formas de pagamento serão listadas dentro desse grupo
{
"codigo": (E028CPG.CODCPG),
"codigoLista":(E028CPG.CODEMP),
"descricao": (E028CPG.DESCPG)
},
]
}
Observações:
- são integradas apenas as condições com aplicação C - Compras ou A – Ambos;
- o identificador de regras CPR-410CDPCO01 pode ser utilizado para adicionar filtros na busca das condições de pagamento para integração.
Inclusão (POST)
[
{
"cnpj": "(Cnpj da Proprietária)",
"email": "(E099USU.INTNET)"
"filiais":
[
{
"código": (CE070FIL.E070FIL.NumCgc),
"nome": "(CE070FIL.E070FIL.NomFil)"
}
],
"idusuario": "(E998CTA.IDEUNI)",
"nome": "(E099USU.NOMUSU)",
"status": "(E099USU.SITUSU)",
"tipousuario": "C" <- (Fixo "C" - Comprador)
}
]
Alteração (PUT)
{
"cnpj": "(Cnpj da Proprietária)",
"email": "(E099USU.INTNET)"
"filiais":
[
{
"código": (CE070FIL.E070FIL.NumCgc),
"nome": "(CE070FIL.E070FIL.NomFil)"
}
],
"idusuario": "(E998CTA.IDEUNI)",
"nome": "(E099USU.NOMUSU)",
"status": "(E099USU.SITUSU)",
"tipousuario": "C" <- (Fixo "C" - Comprador)
}
{
"cotacoesRetorno":[
{
"codigo":(Utilizado para busca da cotação),
"identificador":(Utilizado para a busca da cotação),
"status":(Não utilizado),
"fornecedores": [
{
"codigo":(Utilizado para busca da cotação),
"itens":[
{
"codigo": (Utilizado para busca da cotação),
"quantidade":(E410COT.QTDCOT, E410COT.QTDFOR),
"valor":(E410COT.PRECOT e E410COT.PREFOR),
"icms": (E410COT.ICMCOT),
"ipi":(E410COT.IPICOT),
"desconto":(Utilizado para montar o E410COT.VLRDSC), E410COT.VLRDSC é montado e é melhor explicado abaixo
"marca": (E410COT.MARFOR),
"diasEntrega":(E410COT.PRZENT),
"observacao": (E410COT.OBSCOT) E410COT.OBSCOT é montada e melhor explicada abaixo
}],
"diasEntrega":(Não utilizado),
"valorFrete":(E410COT.FRECOT), E410COT.FRECOT é montada e melhor explicada abaixo
"tipoPreco": (E410COT.CIFFOB como ‘C’ quando CIF e ‘F quando FOB’),
"codigoCondicaoPagto": (E410COT.CODCPG),
"descricaoCondicaoPagto":(Não é utilizado),
"desconto":(Utilizado para montar o E410COT.VLRDSC),
"status":"Respondido" O Status é utilizado internamente. Mais detalhes abaixo.
}]
}]
}
E410COT.VLRDSC:
- é composto pelo desconto do item + o desconto da cotação rateado pelos itens.
E410COT.FRECOT:
- é composto pelo valor do frete rateado entre os itens.
Status e F410COT.OBSCOT:
- a consulta pode receber os seguintes status: Respondido, Cotar, Não Participar e Não Fornecido;
- quando o status for Não Participar ou Não Fornecido, o campo F410COT.OBSCOT recebe a informação referente ao status e os dados da cotação ficam zerados;
- quando o status for Respondido, os dados da cotação são atualizados conforme acima e a informação de que a cotação foi respondida é adicionada à observação;
- são atualizados apenas os dados de cotações com situação = 1 (Em processo de cotação).
Envio requisição:
{
"email": (E099USU.INTNET)
}
Observação:
- No header do JSON é enviado o CNPJ da proprietária no parâmetro documentocontrato, para que seja possível localizar o usuário (através do e-mail) dentro da empresa cadastrada no Cotei.
curl --location 'https://gateway-cotei-api-v2-r4xjq73.uc.gateway.dev/generateToken?api_key=' (api_key) \
--header 'documentocontrato: (CNPJ da proprietária)' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": (E099USU.INTNET)
}'
JSON Retorno:
{
"token": (Token de acesso emitido pelo Cotei)
}
Observação
Ao consultar uma cotação pendente na fila de retorno, a API do Cotei pode retornar o JSON: '{"status":"Erro interno do servidor","erro":{}}'
Ele também pode ser retornado se na consulta de várias cotações houver uma com problemas no Cotei. Isto faz com que o retorno de resposta das cotações fique travado.
Para resolver o problema, utilize o parâmetro QTD_CONSULTA_RETORNO no processo agendado 137 - Integração ERP x Cotei. Ele permite informar a quantidade de cotações da fila de pendência de retorno a serem consultadas por cada requisição. Quando não informado, todas as cotações pendentes serão consultadas na mesma requisição. Exemplo de preenchimento: QTD_CONSULTA_RETORNO=1.
Assim, é possível identificar, através dos logs (do processo agendado ou o log texto ativado na tela F191CPT), qual cotação está com problemas para então fechá-la ou excluí-la.