integração criada com o objetivo de integrar contratos e clientes cadastrados pelas vendas no sistema ERP UAU ao CRM. Os campos são obtidos pela API na execução de dois scripts, e através de um DE-PARA os campos chegam ao nosso sistema.
A integração é chamada pelo script integracao_clientes_uau.php, após autenticação, será chamada a função requestClient() que vai buscar os registros alterados da última data de execução até o momento presente.
Depois de buscar os clientes alterados, o script chama a função updateOrInsertClients() que realiza o De/Para dos campos recebidos para inserção no banco no padrão Multidados, e então com a chamada Clientes::upOrInCliente() o cadastro/edição é realizado.
Para buscar os registros de telefone, é chamado um request diferente com o código do cliente em questão, e depois do retorno dos dados, a informação é inserida no Array do De/Para enviado para inserção de clientes.
A chave primária de identificação de cada cliente é o CPF(CNPJ), portanto é um dado que deve estar correto antes da integração, se um CPF já estiver registrado no sistema e for inserido novamente, o sistema vai interpretar como uma edição e vai sobrescrever as informações antigas.
O código do cliente importado no UAU será inserido no campo CODIGO_AUXILIAR da tabela CLIENTES, isso é necessário para identificar o idcliente ao inserir projetos pelo outro script.
LOGIN – Autenticador/AutenticarUsuarioCorporativo
{
“login_ad”: “portalmultidados”,
“senha”: “xz9MD#m”,
“login_uau”: “multidad”
}
REQUEST CLIENTES – Pessoas/ConsultarPessoasPorCondicao
“condicaoConsultarPessoa”: “DtCad_pes > ‘{CURRENT_DATE-1}T00:00:00.000Z’ OR DataAlt_pes > ‘{CURRENT_DATE-1}T00:00:00.000Z'”
A integração é chamada pelo script integracao_projetos_uau.php, após autenticação, serão chamadas as funções requestProjectParamsXML() e requestProjectParamsHIS() que vão buscar as vendas inseridas e alteradas na UAU, e com os parâmetros recebidos buscar os dados da unidade pelas funções requestProjectClient() e requestProjectWhere(), a execução do script vai manter o mesmo padrão usado no clientes, com uma client_vars que grava a última data de execução e assim integra os dados até o momento da execução atual.
Depois de buscar os clientes alterados, o script chama a função updateOrInsertProjects() que realiza o De/Para dos campos recebidos para inserção no banco no padrão Multidados, e depois insere ou atualiza nas tabelas LAWPS_EMPREENDIMENTOS, LAWPS_BLOCOS, LAWPS_UNIDADES, e CLIENTE_PROJETO.
Nos projetos DISTRATADOS será apenas atualizado o status cadastrado, pois na api UAU essas vendas são desvinculadas da unidade e não é possível recuperar os dados atualizados nesse ponto.
No momento da inserção, é gerado um código único do projeto contendo ‘EMPRESA_OBRA_NUMERO’ (venda) e inserido no campo CODIGO_AUXILIAR da tabela CLIENTE_PROJETO, esse processo é importante pois permite ao sistema identificar esses distratos e atualizar a unidade já inserida, e no caso da unidade ser vendida para outro cliente, será gerado outro número de venda e consequentemente o código único vai ser alterado mantendo o registro antigo.
Se o sistema não encontrar na base o registro da venda que está sendo distratada, um erro é gerado pois isso ocasionaria um ‘projeto vazio’. Nesse caso é gerado um log chamado distratos_nao_encontrados.txt na pasta padrão de logs no sistema para não perder os registros, e também serão executados os tratamentos padrão de erro dos scripts.
É vinculado ao projeto o cliente responsável pela venda, nos requests dos parâmetros das vendas são retornados o CPF e o código único, e no momento da inserção são feitas duas queries para buscar o idcliente comparando o CPF e o código inseridos com os já registrados pelo script de clientes.
No caso de não obter retorno nas queries, é cadastrado um cliente contendo apenas o código e o CPF, com o nome replicando o número do CPF, assim se em um momento futuro o cliente entrar na nossa base, será apenas editado e mantendo o vínculo com a venda.
REQUEST VENDAS – Venda/ExportarVendasXML
“dados_vendas”: {
“dataInicio”: “{ULTIMA_EXECUCAO}”,
“dataFim”: “{CURRENT_DATE}”,
“statusEscrituracao”: true
Após retorno das vendas, as duas requisições abaixo serão executadas individualmente para cada venda, para assim obter todos os campos necessários no DE-PARA
REQUEST CONTRATO PT1 – Venda/ConsultarEmpreendimentosCliente
“codigo_usuario”: {CODIGO_DO_USUARIO}
Após retorno das unidades do cliente, filtramos pelos dados de Empresa, Obra e NumeroDaVenda para obter os dados da venda em questão.
REQUEST CONTRATO PT2 – Espelho/BuscaUnidadesDeAcordoComWhereDetalhado
“where”: “WHERE Empresa_unid = {EMPRESA} AND Obra_unid = ‘{OBRA}’ and NumPer_unid= {NUMERO_DA_VENDA}”,
“retorna_venda”: true,
“data_tabela_preco”: “{CURRENT_DATE}”
100136 – Ocorrência original do desenvolvimento do projeto