O Qive Conexões é desenvolvido em linguagem ADVPL e atua como uma ponte inteligente entre o portal Qive e o seu Protheus, permitindo a geração de documentos de entrada conforme as regras de negócio da sua empresa.
1. Aplicação do pacote técnico
O primeiro passo é realizar o download e a aplicação do pacote de atualização. Você pode encontrar o pacote mais recente clicando no botão abaixo:
A aplicação do pacote pode ser realizada tanto em ambiente de produção quanto de homologação. É fundamental que o repositório esteja em acesso exclusivo durante este processo. Para empresas que utilizam o servidor na nuvem (Tcloud Totvs), a aplicação pode ser feita via portal; para servidores locais, utilize o VS Code (Visual Studio Code).
2. Configurações iniciais e dicionário de dados
Após a aplicação do pacote, acesse o SmartClient do Protheus e execute o compatibilizador U_CXNFACI ou U_IMPXACI em modo exclusivo. Este comando abrirá o Assistente de Configuração.
O assistente guiará você pela configuração das tabelas sem modificar o dicionário de dados padrão do Protheus. Siga as etapas abaixo:
Selecione a empresa e a filial para abertura do ambiente.
Informe o portal da Qive (URL da API) para a captura dos XMLs.
Configure os nomes das tabelas de usuário (SZ? ou Z??) que serão utilizadas pelo importador.
Tabelas Principais:
MV_XGTTAB1: nome da tabela contendo o cabeçalho das informações no XML.
MV_XGTTAB2: nome da tabela contendo os itens do XML.
MV_XGTTAB3: nome da tabela responsável por armazenar os eventos de Carta de Correção, Cancelamento, Operação Não Realizada, Desconhecimento e Desacordo de CTe.
MV_XGTTAB4: nome da tabela com o cadastro da conversão de unidade de medida por produto. Este parâmetro não é obrigatório, mas é ideal para empresas com uma unidade de medida em seus pedidos de compra que recebem do fornecedor um produto com outra unidade de medida.
MV_XGTTAB6: nome da tabela que contém a relação produto x fornecedor/cliente.
MV_XGTTAB7: nome da tabela que contém a relação CFOP x Tipo de Nota, utilizado para sugestão do campo “Tipo de Nota”.
MV_XGTTAB8: nome da tabela que contém a configuração das regras de lançamento automático.
MV_XGTTABA: nome da tabela das notas de origem
MV_XGTTABB: nome da tabela para gravação de logs de ações do usuário
MV_XGTTABC: nome da tabela genérica das variações de pedidos de compra, esta tabela é referente a SX5 do Protheus, utilize 2 caracteres.
O botão Tabelas Em Uso serve para apresentar as tabelas de usuário que já estão em uso no sistema, para auxiliar na escolha do nome da tabela, sendo que não é permitido escolher um nome contido nessa lista.
O botão para configuração dos parâmetros iniciais. Neste passo deve-se atentar ao processo de lançamento que a empresa já possui, respondendo às perguntas conforme imagem a seguir:
Tamanho do campo que armazena o número da nota fiscal: escolha o tamanho utilizado nos lançamentos manuais ou importações por outra rotina. Por padrão, o programa sugere o tamanho do campo F1_DOC;
Considera zeros à esquerda no número da nota: escolha essa opção para indicar se o número de notas serão preenchidos com zeros na frente para completar o tamanho do campo. Por padrão SIM para preencher com zeros;
Considera zeros à esquerda na série da nota: escolha essa opção para indicar se a série de notas serão preenchidas com zeros na frente para completar o tamanho do campo. Por padrão, é indicado que escolha NÃO para manter igual à nota;
Gera automaticamente o manifesto de confirmação para notas classificadas: essa opção indica se será realizado a manifestação para os documentos já classificados, considerando, novos lançamentos e antigos (histórico);
Possui alguma filial ligada a fazenda com CPF e Inscrição Estadual: responda como 'Sim' apenas se irá utilizar o importador para receber notas de um CPF com várias inscrições estaduais, caracterizando fazendas vinculadas a pessoa física.
O botão Pontos de Entrada serve para verificar os pontos de entrada em uso, onde posteriormente devem ser adaptados. O programa analisa o RPO e indica os pontos de entrada que já estão em uso pela empresa, mostrando como deve ser a estrutura do código.
Copie o texto apresentado dos pontos de entrada e cole em um bloco de notas para ser acessado posteriormente.
Após preencher as informações necessárias, clique em Avançar para ser apresentado o resumo das alterações do dicionário de dados.
Clique no botão Concluir para finalizar o processo e realizar a geração do dicionário de dados.
3. Configuração dos pontos de entrada
Para que o Qive Conexões interaja corretamente com as rotinas padrão do Protheus (como a MATA103), é necessário compilar os pontos de entrada. Se a sua empresa já utiliza algum desses pontos, você deve mesclar o código da Qive com a sua regra atual.
Importante: A chamada da função da Qive deve ser, preferencialmente, a última instrução em pontos de retorno de valores e a primeira em pontos de validação inicial.
Estruturas para adaptação (Exemplos de código)
User Function A103CND2() Local aDuplic := PARAMIXB If (Regra existente) [...] EndIf aDuplic := U_GTPE001() // Chamada Qive sempre como última instrução. Return aDuplic
User Function MT103FIM() U_GTPE002() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return Nil
User Function A140EXC() Local lRet := .T. lRet := U_GTPE003() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return lRet
User Function MT100LOK() Local lRet := .T. lRet := U_GTPE004() // Chamada Qive sempre como primeira instrução. If lRet .And. !FwIsInCallStack('U_GATI001') .Or. IIf(Type('l103Auto') == 'U',.T.,!l103Auto) If (Regra existente) [...] EndIf EndIf Return lRetUser Function MT100TOK() Local lRet := .T. If !FwIsInCallStack('U_GATI001') .Or. IIf(Type('l103Auto') == 'U',.T.,!l103Auto) If (Regra existente) [...] EndIf EndIf If lRet lRet := U_GTPE005() // Chamada Qive sempre como última instrução. EndIf Return lRetUser Function MT103CWH() Local lRet := .T. If (Regra existente) [...] EndIf If lRet lRet := U_GTPE006() // Chamada Qive sempre como última instrução. EndIf Return lRet
User Function MT103IP2() U_GTPE007() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return Nil
User Function MT116GRV() If (Regra existente) [...] EndIf U_GTPE008() // Chamada Qive sempre como última instrução. Return Nil
User Function MT140CAB() Local lRet := .T. If (Regra existente) [...] EndIf If lRet lRet := U_GTPE009() // Chamada Qive sempre como última instrução. EndIf Return lRet
User Function MTA103MNU() If (Regra existente) [...] EndIf U_GTPE010() // Chamada Qive sempre como última instrução. Return Nil
User Function MT140TOK() Local lRet := .T. lRet := U_GTPE011() // Chamada Qive sempre como primeira instrução. If lRet .And. !FwIsInCallStack('U_GATI001') .Or. !l103Auto If (Regra existente) [...] EndIf EndIf Return lRetUser Function MT140LOK() Local lRet := .T. lRet := U_GTPE012() // Chamada Qive sempre como primeira instrução. If lRet .And. !FwIsInCallStack('U_GATI001') .Or. !l103Auto If (Regra existente) [...] EndIf EndIf Return lRetUser Function MTCOLSE2() Local aSE2 := ParamIXB[1] aSE2 := U_GTPE013() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return aSE2
User Function MA103BUT() Local aButtons := {} aButtons := U_GTPE014() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return aButtonsUser Function MT140SAI() U_GTPE016() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return Nil
User Function M145ARDEL() Local lRet := .T. lRet := U_GTPE018() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return lRet
User Function MT103TPC() Local cTes := PARAMIXB[1] If (Regra existente) [...] EndIf U_GTPE019() // Chamada Qive sempre como última instrução. Return cTes
User Function MT140PC() Local lRet := PARAMIXB[1] If (Regra existente) [...] EndIf U_GTPE019() // Chamada Qive sempre como última instrução. Return lRet
User Function MT103CPS() U_GTPE022() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return
User Function MT116AGR() If (Regra existente) [...] EndIf U_GTPE021() // Chamada Qive sempre como última instrução. Return Nil
User Function MT100GE2() U_GTPE025() // Chamada Qive sempre como primeira instrução. If (Regra existente) [...] EndIf Return Nil
Nota: Repita o padrão de chamada U_GTPE conforme o manual técnico para os demais pontos: A140EXC, MT103CWH, MT103IP2, MT116GRV, MT140CAB, MTA103MNU, MT140TOK, MT140LOK, MTCOLSE2, MA103BUT, MT140SAI, M145ARDEL, MT103TPC, MT140PC, MT103CPS, MT116AGR e MT100GE2).
Relação de pontos de entrada e funções
A103CND2: Captura a condição de pagamento na importação de CT-e por lote.
MT103FIM: Atualiza o status da nota no Portal Qive na inclusão ou exclusão via MATA103 ou importador.
A140EXC: Apresenta mensagens de usuário durante a execução automática.
MT100LOK: Validações de usuário na execução automática.
MT100TOK: Valida se os totais do Protheus conferem com o XML e alerta divergências.
MT103CHW: Desabilita campos específicos (como fornecedor e emissão) para evitar alterações indevidas.
MT116GRV: Grava a chave do XML na importação de CT-e.
MT140CAB: Carrega totais de despesas, frete e seguro em pré-notas.
MTA103MNU: Adiciona a consulta de Cartas de Correção ao menu lateral.
MA103BUT: Cria o botão "Conferir Impostos" no lançamento ou classificação.
MT140SAI: Atualiza o status da pré-nota no Portal (inclusão/exclusão).
MT103CPS: Preenche a Natureza financeira vindo do Monitor Qive.
MT100GE2: Complementa a gravação de títulos no financeiro.
Pontos de entrada adicionais (Casos específicos)
MA103ATF: Utilizado na importação de pré-nota de Ativo Imobilizado para preencher Centro de Custo e Conta Contábil.
MT103BDP: Utilizado para manter o valor do frete conforme informado na pré-nota ao classificar com pedido de compra.
4. Criação da rotina no menu
Para que os usuários consigam acessar o painel de documentos, é necessário criar a chamada da rotina manualmente no configurador do Protheus. Utilize as seguintes características técnicas:
Descrição: Importador XML Qive (ou nome de sua preferência)
Programa: U_GATI001
Módulo: Compras (ou módulo de sua preferência)
Tipo: Função Protheus
Passo a passo para criação:
Acesse o módulo Configurador (SIGACFG) do Protheus.
No menu lateral, navegue até Ambiente > Cadastros > Menus.
Na tela de Menus, selecione apenas o menu que deseja disponibilizar a rotina (recomendamos o menu de Compras) e clique em Ok para abrir a manutenção.
Na tela de manutenção, clique no botão Adicionar >> para carregar as opções do menu da esquerda para a direita.
Navegue pela árvore de menus no lado direito até a repartição Atualizações > Movimentos.
Com a pasta "Movimentos" selecionada, clique no botão Novo Item.
Preencha os campos com as características informadas no início desta seção (Descrição, Programa, Módulo e Tipo) e clique em Salvar.
Ao finalizar, clique no botão Gerar para atualizar o menu existente no sistema.
Na tela de geração, informe o nome SIGACOM (ou o nome correspondente ao módulo escolhido), sem a extensão .xnu, e confirme.
A partir deste momento, a rotina estará disponível para uso no módulo 02 - Compras. Caso sua empresa utilize menus personalizados por usuário, lembre-se de realizar este processo em cada menu correspondente.
5. Autenticação e SSL
Ao acessar a rotina pela primeira vez, o sistema solicitará o ID e a KEY da API Qive. Esses dados são encontrados nas configurações de integração do seu portal Qive.
Atenção: Caso receba uma mensagem de "Acesso Negado", verifique se o seu Application Server está configurado para suportar conexões SSL. Certifique-se também de que o domínio da API Qive não esteja bloqueado pelo seu Firewall/Proxy.
6. Configuração dos jobs de leitura (Automação)
Nesta etapa, configuramos os Jobs responsáveis pela identificação de novos XMLs recebidos e pela gravação automática no banco de dados do Protheus. Existem duas formas de realizar essa configuração: via OnStart (serviço dedicado) ou via Schedule.
Opção 1: Configuração via ONSTART
Este método cria um serviço específico no servidor para processar os arquivos continuamente.
Preparação de pastas: Copie a pasta do seu
appservere renomeie paraappserver_Qive. Faça o mesmo com a pasta do repositório (RPO), renomeando paraapo_qive.Edição do appserver.ini: Na pasta
appserver_qive, abra o arquivoappserver.inie realize os seguintes ajustes:Repositório: Aponte o caminho para a nova pasta
apo_qive.Porta: Altere para um número de porta disponível (ex: 1234).
Nome do Serviço: Renomeie o serviço para algo identificável, como
Totvs_Qive.
Inclusão da Seção OnStart: Copie e cole o trecho abaixo ao final do seu arquivo
appserver.ini:[OnStart] jobs=CXNFARQ,CXNFEMP RefreshRate=120[CXNFARQ] Main=U_CXNFARQ Environment=qive NPARMS=2 PARM1=99 PARM2=01[CXNFEMP] Main=U_CXNFEMP Environment=qive NPARMS=2 PARM1=99 PARM2=01Nota: Substitua '99' pelo código da sua empresa e '01' pela filial correspondente
Teste e instalação:
Crie um atalho do
appserver.exe, adicione o comando -console nas propriedades e execute para verificar se há erros de porta.Se funcionar, altere o comando para -install e execute como administrador para criar o serviço no Windows.
Verificação de logs: Após iniciar o serviço, verifique se a pasta
protheus_data/importador_xml/logs/cxnfarqfoi criada com os arquivos de log de leitura.
Opção 2: Configuração via SCHEDULE
Ideal para ambientes hospedados na nuvem (TCloud) ou onde já existe uma estrutura de agendamentos.
Acesso: No SIGACFG, acesse Ambiente > Schedule > Schedule.
Agentes: Verifique se o Smart Scheduler está ativo. Caso não existam agentes, clique em Outras Ações > Adicionar agentes padrão e inicie-os. [INSERIR PRINT DO SMART SCHEDULER ATIVO]
Agendamentos: Você deve criar dois novos agendamentos:
Serviço 1 (Leitura): Função
U_CXNFSCH(1,'99','01').Serviço 2 (Gerenciamento): Função
U_CXNFSCH(2,'99','01').
Configurações de Recorrência:
Periodicidade: Diária.
Frequência: Sim.
Intervalo: 5 minutos.
Horário: Das 00:00 às 23:59.
Parâmetros Finais: Informe a Empresa e apenas a primeira Filial (o sistema tratará as demais automaticamente). Selecione o módulo 02-Compras e o usuário admin.
Confirmação: Clique em Concluir e verifique no Monitor do Schedule se o status está como "Finalizado" ou "Aguardando Execução".
7. Personalização de Logomarca
Para facilitar a identificação visual, você pode inserir a logo da sua empresa no painel da Qive.
Salve o arquivo em formato PNG na pasta protheus_data/system.
Nomeie o arquivo como
importador_sua_logo.png.Para logos por empresa específica, use o sufixo do código da empresa:
importador_sua_logo01.png.
8. Teste de funcionamento (Primeiros passos)
Com tudo configurado, realize um teste funcional:
Acesse o Importador XML Qive no menu de Compras.
Localize uma nota com legenda verde (pendente).
Clique em Importar.
Preencha campos básicos de teste (Natureza, Condição de Pagamento, Produto e TES).
Se o sistema abrir a tela padrão do Documento de Entrada (MATA103) preenchida com os dados do XML, sua instalação foi concluída com sucesso.
Em caso de dúvidas técnicas durante a compilação, entre em contato com nosso time através do e-mail suporte@qive.com.br.





