Para implementar e publicar extensões é necessário que você instale antes o ambiente de desenvolvimento. O primeiro passo é instalar o Colibri com uma licença de desenvolvimento disponibilizada pela NCR. Feito isso, o pacote do SDK poderá ser baixado do market place pelo NCR Master.

O ambiente do SDK é baseado no Python 3.x e algumas bibliotecas devem ser instaladas para que ele funcione. Faça a instalação dos componentes necessários antes de iniciar a configuração do SDK, conforme descrito na seção Instale o Python e bibliotecas. Com as bibliotecas instaladas você pode configurar o SDK seguindo os passos da seção Instale o SDK. Quando você configura o SDK o mesmo cria alguns arquivos padrão para uso imediato, além de disponibilizar os comandos Invoke necessários para empacotar a extensão em um formato compatível com o Colibri Market Place.

Leia e siga com atenção as instruções a seguir.

Importante

O SDK atualmente é compatível com o PYTHON 3.11 (VERSÃO 32 BITS) mais recente. Não instale um Python de outra versão pois o SDK não irá funcionar.

Instale o Python e bibliotecas

Para que o ambiente do SDK funcione, é necessário instalar o PYTHON 3.11 e algumas bibliotecas:

  • Invoke: Invoke é um utilitário de linha de comando escrito em Python para administração de sistemas ou automatização de tarefas administrativas.
  • Requests: é um biblioteca para requisições HTTP simples.
  • Virtualenv: permite ter vários ambientes de empacotamento dependendo da versão do Python e do projeto sem mexer na sua instalação principal do Python.
  • Virtualenv Wrapper: permite manter uma pasta na máquina com todos os virtualenvs criados em um só lugar e também oferece atalhos como workon e deactivate.

Siga os passos abaixo para instalar os componentes necessários.

  1. Baixe e instale a última versão do PYTHON 3.11 VERSÃO 32 BITS
    O download está disponível neste link.
    1. Baixe o "Windows x86 executable installer"
    2. Ao instalar, escolha Customize installation 
    3. Altere o caminho destino para c:\Python311.
    4. Mantenha a opção Add Python to environment variables
    5. Deixe marcado Install Launcher for all users

  2. Se você NÃO POSSUI outras versões do Python vá para o item 3.  
    Certifique-se que o Python 3.11 é encontrado antes das outras versões de Python. O SDK não está preparado para rodar em versões diferentes da 3.11. Para garantir que a versão correta do Python será utilizada, altere a prioridade do path, colocando a pasta python311  antes das outras pastas de Python 



  3. Verifique sua instalação de Python
    Abra um novo prompt de comando e execute o comando abaixo:
    (aviso) O número pode variar, mas começa sempre com 3.11. Além disso deve estar escrito '32 bit' no resultado.

    Testar o python
    c:>python -VV
    Python 3.11.3 (tags/v3.11.3:f3909b8, Apr  4 2023, 23:34:50) [MSC v.1934 32 bit (Intel)]
  4. Verifique a disponibilidade do pip
    O pip normalmente já é instalado com o Python. No prompt de comando, execute o comando abaixo para verificar se o pip está instalado e funcionando.
    (aviso) O número da versão pode variar pois o pip sempre é instalado na versão mais recente.

    Testar o pip
    c:>pip -V
    pip 23.0.1 from C:\Python311\Lib\site-packages\pip (python 3.11)
  5. Atualize o pip
    Execute o comando abaixo para garantir que o pip está atualizado para última versão.

    Testar o pip
    c:>python -m pip install --upgrade pip
  6. Instale o Invoke
    No prompt de comando, execute o comando abaixo, que instala o Invoke.

    Instalar Invoke
    c:>pip install invoke
  7. Verifique a disponibilidade do Invoke
    No prompt de comando, execute o comando abaixo:
    (as versões podem variar pois sempre são instaladas as versões mais recentes)

    Teste o Invoke
    c:>inv -V
    Invoke 2.0.0
    
  8. Instale o virtualenvwrapper-win
    Abra um prompt de comando e execute o comando abaixo para instalar virtualenv e virtualenvwrapper:

    Instalar o VirtualEnvWrapper
    pip install virtualenvwrapper-win
  9. Instale o requests
    Abra um prompt de comando e execute o comando abaixo para instalar a biblioteca requests:

    Instalar o Requests
    pip install requests
  10. Crie uma pasta para os ambientes virtuais
    1. Para facilitar, sugerimos criar a pasta na raiz do drive C: ou D:, por exemplo d:\virtualenvs .
    2. Adicione a variável de ambiente WORKON_HOME=d:\virtualenvs. Esta pasta será gerenciada pelo mecanismo de virtualenv do Python e não deve ser usada para outros fins.

  11. Verifique o funcionamento do virtualenvwrapper
    Abra um novo prompt de comando e execute os dois comandos abaixo para verificar se o ambiente virtual do python está funcionando.

    Testar o virtualenv
    c:>set WORKON_HOME
    WORKON_HOME=d:\virtualenvs
    
    c:>lsvirtualenv
    dir /b /ad "d:\virtualenvs"
    ==============================================================================
Problemas?

Alguns dos comandos de instalação podem falhar. As principais causas são:

  • Ambiente e versão do Windows® em uso;
  • Instalações anteriores do Python e seus componentes;
  • Falta de permissão.

Para falhas de comandos pip, você pode:

  • Utilizar easy_install em seu lugar;
  • Executar um instalador binário, quando disponível.
Instale o SDK
  1. Instale o SDK de Extensões pelo Master
    Navegue até a o item Marketplace da barra de menu do Master e procure pelo SDK. Clique em BAIXAR e aguarde a instalação. Após a instalação do pacote, este poderá ser encontrado na pasta C:\NCR Solution\SDK.

  2. Inicie o ambiente
    Abra uma linha de comando (cmd) em modo administrativo e mude o diretório para a pasta do SDK cd C:\NCR Solution\SDK, digite inv iniciar-ambiente. Isso deve configurar o ambiente de geração de extensões. 

    Atenção

    Verifique por erros ao iniciar o ambiente.

  3. Instale o Inno Setup se necessário
    O Inno Setup é necessário para empacotamento das extensões. Se ainda não possui o Inno Setup 5.5.9 unicode, digite inv instalar-innosetup. Isso instala o Inno Setup no seu computador.
    (informação) Este aplicativo é responsável pela geração dos instaladores da extensão e é gratuito.

  4. Configure o ambiente
    Agora, configure o pasta dos projetos (todos os projetos de extensão deverão residir dentro dessa pasta) e os dados da empresa com o comando inv configurar-empresa. (aviso) Não crie seus projetos dentro da pasta do SDK! Você deve criar uma pasta diferente, fora da pasta do C:\NCR Solution para seus projetos (por exemplo c:\projetos-sdk\), caso contrário, assim sempre que um pacote novo for as pastas poderão ser apagadas e seus arquivos poderão ser perdidos.

    Dica

    A sigla solicitada nesta etapa deve ser curta, mnemônica e única, pois será utilizada como prefixo nos nomes de suas extensões para evitar colisão com os nomes de extensões de outros desenvolvedores. Ela também será utilizada ao criar sua empresa no Market Place.

  5. Pronto! (sorriso)
    Seu ambiente está pronto para criar extensões.
    Para consultar a lista de comandos disponibilizados pelo SDK digite no prompt inv ajuda
    Obtenha mais informações sobre um comando específico utilizando inv --help comando

Inicialize a extensão

Após instalar e configurar seu SDK, você deve inicializar sua extensão. Esse passo criará algumas pastas e arquivos que facilitarão posteriormente o empacotamento da extensão. Abra um prompt de comando na pasta do SDK e digite

inv preparar-extensao nome_da_extensao

onde nome_da_extensão é uma subpasta da sua pasta de projetos. Se a subpasta ainda não existe, ela é criada.

Um assistente interativo entra no ar solicitando algumas informações:

  1. Tipo da extensão
    Escolha:

    SSe a extensão é instalada somente no terminal Master
    ESe a extensão é instalada nos terminais Launcher
    ASe a extensão é instalada em todos os terminais (Master e Launcher)


  2. É um plugin Python?
    Responda S somente se você vai desenvolver sua extensão em Python. Assim, serão criados arquivos específicos para facilitar o desenvolvimento deste tipo. Responda N se sua extensão não é um plugin python (por exemplo, uma extensão de reports ou um plugin feito em outro linguagem).

  3. Nome da extensão
    Identificação interna que o sistema de distribuição do Colibri utiliza para sua extensão. Este nome é prefixado pela sigla da empresa que foi definido na seção Instale o SDK. Para este dado utilize somente letras, números ou sublinhado.

  4. Nome de exibição da extensão
    Este é o nome da extensão que o usuário verá no Market Place e no Master. Aqui você pode utilizar um nome claro, com espaços. Evite um nome muito extenso pois o texto poderá aparecer truncado nas páginas do Market Place ou do Master.

  5. O produto a que se destina, sendo:

    posExtensão para NCR Colibri POS
    cboExtensão para NCR Colibri Back Office
    masterExtensão genérica

Ao final da inicialização são gerados vários arquivos e pastas que podem ser modificados para necessidades mais específicas.

ArquivoExplicação
versao.iniArquivo que contem a versão da sua extensão. É utilizado durante o empacotamento.
__init__.pyNecessário para sinalizar o plugin como um módulo python. (informação) Somente para extensões Python
versao.py

Facilita o uso do arquivo versao.ini na sua extensão python. Durante o empacotamento são gerados arquivos auxiliares que garantem que a versão no plugin é a mesma do pacote. (informação) Somente para extensões Python

_build\extensao_client.issProjeto do innosetup para gerar o instalador da sua extensão nos terminais Launcher. Você pode alterar este arquivo para suprir as necessidades de instalação da sua extensão. (informação) Somente para extensões instaladas nos terminais Launcher.
_build\extensao_server.issProjeto do innosetup para gerar o instalador da sua extensão no terminal Master. Você pode alterar este arquivo para suprir as necessidades de instalação da sua extensão, como registrar e iniciar um serviço. (informação) Somente para extensões instaladas no terminal Master.
_build\colibri_includes.issÉ um biblioteca de funções úteis para os instaladores.  Este arquivo é incluído pelos outros arquivos do ISS acima.
_build\pacote\manifesto.serverModelo de manifesto. É utilizado na geração do manifesto.dat do pacote cmpkg da extensão. Este arquivo é muito importante pois define como sua extensão será instalada no ambiente Colibri.
clientPasta onde sugerimos que residam os arquivos da sua extensão que serão instalados nos terminais Launcher. Sempre que você realizar um build da sua extensão copie o resultado para essa pasta. Assim fica mais fácil configurar o arquivo .iss para gerar o instalador corretamente. 
serverPasta onde sugerimos que residam os arquivos da sua extensão que serão instalados no terminal Master. É similar à pasta acima, ou seja, copie todos os arquivos necessários para ela após um build da sua extensão, assim você conseguirá configurar mais facilmente seu arquivo .iss. 
Nota 1

As duas últimas pastas são sugestões dadas pelo SDK. O SDK as utiliza nos arquivos .iss dos instaladores como as pastas de origem dos arquivos que serão distribuídos na instalação. Ao compilar os instaladores da extensão, o Inno Setup irá procurar os arquivos nas pastas client e server. Porém, nada impede que você utilize suas próprias pastas de destino de build e altere os arquivos .iss para utilizar as suas pastas como origem dos arquivos.

Nota 2

Não é necessário nem obrigatório utilizar as duas pastas. Sugerimos essa construção quando sua extensão tem dois componentes a serem instalados: um que funciona somente na máquina Master e outro que funciona nas máquinas Launcher. Um exemplo disso é uma extensão composta por um serviço Windows que deve rodar na máquina Master e por um plugin do POS/CIS que deve ser instalado nas máquinas Launcher.

Neste cenário recomendamos ter os builds separados em pastas distintas para facilitar a configuração e compilação dos instaladores - um build para o serviço que gera os artefatos na pasta server, outro build para o plugin que gera os artefatos na pasta client. Cada instalador obterá seus arquivos da pasta correspondente.

Configurar plugins em Python

Se você pretende desenvolver plugins em Python então precisa acessar o virtualenv colibri para acessar as bibliotecas disponibilizadas pelo Colibri para os plugins.

  1. Execute o comando workon colibri  para trabalhar no virtualenv  colibri.

    c:\projetos\meuplugin> workon colibri
    (colibri) c:\projetos\meuplugin>

    Se o prefixo (colibri) está presente no prompt significa que você está no ambiente correto e pode executar seu plugin Python a partir da linha de comando com o mesmo ambiente disponível no NCR Colibri.

  2. Você pode executar seu projeto python normalmente, que terá acesso às bibliotecas

    (colibri) c:\projetos\meuplugin>python meuplugin.py
    
  3. Execute o comando deactivate para sair do virtualenv do colibri.

    (colibri) c:\projetos\meuplugin>deactivate
    c:\projetos\meuplugin>

Terminada a montagem do ambiente, é possível organizar o projeto de sua extensão, preparando-o para distribuição.

Tenha em mente que, após a preparação inicial do seu projeto, você pode modificar os arquivos gerados conforme sua necessidade, pois eles agora fazem parte do seu projeto e não serão atualizados em futuras versões.