A7Pharma:2.48.0.0

De Base de Conhecimento Alpha7
Revisão de 07h48min de 16 de novembro de 2020 por Matheus.santos (discussão | contribs)$7

(dif) ← Edição anterior | Revisão aprovada (dif) | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

Data de Lançamento: 08/07/2020

Cadastro Básico

Compra

Venda

Transferência

Estoque

Financeiro

Cartão > Conciliação > Conciliação

  • Removida a restrição que obrigava que todos os registros selecionados na listagem de conciliações de cartão estivessem com os arquivos processados para permitir o seu desfazimento;

Fiscal

SAT

  • O método de criação do XML referente ao CF-e foi modificado, para que, caso existir um item que represente a taxa de entrega, o mesmo seja removido do processamento e tenha seu valor rateado proporcionalmente entre os demais itens do CF-e;
  • Foi adicionado totalizador de acréscimos, além da informação de taxa de entrega incluída nas "Observações do Contribuinte", presente no cupom fiscal;
  • Criada configuração avançada para habilitar o comportamento de somar o valor dos Itens da Venda registrados com a "Embalagem padrão de Taxa de Entrega" e lançar esse valor como "Acréscimo sobre o Total do Cfe, removendo essas embalagens do Cfe;

NF-e

  • Inclusão do processamento de Devolução de Compra pelo assistente, para copiar os campos de ICMS FCP dos itens da Nota Fiscal de Entrada, para os campos próprios nos Itens da NF-e de Devolução de Compra, desabilitando o uso do campo de Devolução do FCP para exibição do DANFE e nos demais processamentos;
  • Ajustado editor de Itens de NF-e para exibir o agrupamento de FCP, desabilitando os campos de FCP não contemplados na cópia para campo próprio, e desabilitado o campo de Devolução FCP;
  • Na Emissão de Nota Fiscal, foram adicionadas validações para os modelos 55(NF-e) e 59(CF-e SAT), para que seja verificado se a chave de acesso informada possui o modelo indicado pelo usuário;
  • Adicionada a validação para o modelo 59(CF-e SAT) para que a chave informada tenha 44 caracteres, assim como já ocorria para os modelos 55(NF-e) e 65(NFC-e);

Relatório

Ferramentas

Impressão de Etiqueta de Cliente

  • Adicionado o campo "complemento" (do Endereço) para uso nas etiquetas de Cliente;

SNGPC

Vacina

Configuração

Configurações Avançadas da Unidade de Negócio

  • Adicionada configuração para definir se a mensagem de rateio de acréscimo no item do CF-e (cumpom SAT) será impressa no item. Para evitar que o consumidor questione sobre o acréscimo no item, por padrão a mensagem não será impressa.

Permissão

PDV

Orçamento

  • Adicionado processamento para finalizar a sessão do usuário ao término de operações no modo Orçamento, tornado obrigatório o login para acesso das operações novamente;
  • Adicionada configuração avançada da unidade de negócio 'Orcamento.autoLogoff.habilitado', que habilita a funcionalidade acima descrita, que por padrão vem desabilitada (false);
    • As janelas das funcionalidades 'Guia de Medicamentos' e 'Encomendas' serão modais quando a funcionalidade supracitada estiver habilitada, antes, essas janelas eram flutuantes, ou seja, era possível utilizar o restante das funcionalidade quando estas estavam abertas. Essa modificação é necessária porque se continuassem flutuantes, seria possível finalizar a sessão com ambas as janelas abertas, o que ocasionaria diversos erros por se tentar utilizar funcionalidades sem ter uma sessão de usuário;

Integração

Pedido Eletrônico

  • Adicionado comunicador para o Pedido Eletrônico EquipoFarma;
  • Adicionado comunicador para o Pedido Eletrônico Merck;
  • Adicionado comunicador para o Pedido Eletrônico Close-UP.

Solus

  • Alterada a Integração de Clientes Solus da Unimed para caso o Cliente ou Dependente sendo integrado esteja com Situação "Cancelado" e não exista no sistema, seja ignorado.

Rappi

  • Implementada a tarefa agendada responsável pela exportação do arquivo de itens enviados à plataforma Rappi via SFTP.

Infra Estrutura

A7-Broker

  • Criada aplicação 'chinchila-broker', que irá substituir o 'chinchila-sat-ws' como mecanismo de acesso ao SAT, e futuramente a outros dispositivos que estiverem fisicamente na loja e precisarem ser acessados pelo Servidor, que pode estar fora da rede interna da loja (ex: servidores em cloud).
    • Todo broker precisa no mínimo de um código (que será gerado mediante cadastro no A7-Pharma), e do endereço do servidor;
    • Os recursos que o Broker provê ao servidor são disponibilizados  como WebServices (no momento só existe o WS do SAT implementado);
  • Implementado mecanismo de Túnel SSH para que o Servidor possa acessar os recursos providos pelo Broker. Na prática, o Broker irá estabelecer a conexão com o Servidor para criar o túnel e fazer o redirecionamento de algumas portas no Servidor para ligá-las a portas da máquina rodando o Broker, permitindo assim que o Servidor não precise se preocupar com NAT e com segurança/criptografia da conexão;
  • Criada classe 'Principal', que irá se procupar em subir o Servidor  HTTP usado para publicação dos WebServices do SAT, e irá estabelecer o túnel SSH.
    • Todas as configurações da aplicação foram centralizadas em um singleton 'Configuracoes', responsável por parsear o arquivo '.properties' com as configurações;
  • Implementados recursos de UI para facilitar a vida do usuário, como alteração do ícone da bandeja caso o túnel SSH fique offline, e exibição do status atual da conexão na tela de detalhes;
  • Adicionado tratamento para espaços em branco ao ler configurações;
  • Removida notificação ao inicializar o Broker;
  • Alterado tratamento do ícone da bandeja para não ser alterado na troca de estados de 'Desconectado' para 'Reconectando';
  • Adicionado Código do Broker na Hint do ícone da Bandeja dos Sistema;
  • Gerada a entidade Broker e alterada a entidade SAT para inclusão de coluna de relacionamento com a entidade Broker e também para inclusão de coluna com tipo de integração;
  • Implementado constantes para a entidade Broker e também para a entidade SAT;
  • Adicionado script de atualização da base de dados com as alterações das entidades acima citadas;
  • Criados launchers em Lazarus/FreePascal e ShellScript usando os launchers do Client como referência.
    • O launcher do Broker não mostrará SplashScreen, e também dará preferência a usar uma JRE de 32 bits, para aumentar a compatibilidade com as DLLs de SAT.
  • Gerado novo par de chaves públicas e privadas para ser utilizado nas conexões HTTPS com o Wildfly.
    • A chave pública foi adicionada ao arquivo localhost.truststore do chinchila-client, que agora é copiada pelo PDV durante a sua compilação usando ANT (arquivo build.xml);
    • Alterada classe ConfiguracaoServidorAplicacao para assumir que a conexão é via HTTPS se a porta utilizada no certificado for a porta 8443.
      • Todos os lugares que faziam acesso via WebService ao servidor (ex: Download de JRE, download de TeamViewer, Atualização de versão) foram alterados para usar HTTPS também;
      • Se estiver usando HTTPS, configura o mecanismo de HEARTBEAT do JBoss Remoting para enviar pacotes a cada 1 minuto (sem isso a conexão a servidores EC2 na Amazon é derrubada a cada 5 minutos);
    • Adicionado HostnameVerifier tanto no Client quanto no PDV para aceitar o hostname configurado para conexão. Outros hostnames podem ser aceitos também através de um parâmetro de JVM "-DhostnamesHTTPSPermitidos";
    • A chave privada de criptografia está armazenada em um arquivo 'application.keystore' que deve ser colocado dentro do diretório standalone/configuration do Wildlfy. Essa chave, junto com o script de configuração completo do Wildfly estão salvos no bucket S3 'infraestrutura.a7.net.br/chinchila/wildfly-ejb-ssl' da conta da Amazon da Alpha7;
    • Implementada a estruturação básica do servidor para o Broker;
    • Implementado constante "TIPO_BROKER" para o gerador de código;
    • Implementado consulta para busca do maior valor presente para o código do Broker;
    • Implementado três novas configurações avançadas da unidade de negócio para padronização de faixa de geração de códigos por categoria;
    • Alterado o processamento em que o gerador de código atribui o tamanho da faixa de geração para cada tipo, onde, o valor da faixa é recuperada de sua respectiva configuração avançada citada acima;
    • Implementada a listagem e o editor do broker (acessível através do menu Ferramentas > Broker). Através dessa listagem é possível efetuar o cadastro, edição e exclusão de um broker;
    • Implementado filtros e colunas na listagem do SAT para filtragem e exibição do tipo de integração utilizada, e descrição para o Broker caso o mesmo estiver vinculado;
    • Implementado campos no Editor do SAT para seleção do tipo de integração e vinculação de Broker;
    • Criado buscador para o Broker;
    • Incluído dados no script de base para alteração do campo "urlwebservices" e "tipointegracao";
    • Criado projeto "chinchila-broker-ws-spec", contendo as definições dos WebServices disponibilizados pelo servidor para o Broker consumir;
    • Alterado servidor para publicar WebServices de atualização de Versão do Broker, de maneira similar à existente para o PDV;
    • Adicionado o novo projeto "chinchila-broker-ws-spec" como lib empacotada no servidor.
    • Alterado 'build.xml' do projeto chinchila-broker para incluir informações de versão a partir do arquivo "versao.properties", e também para copiar a truststore do projeto chinchila-client (usada para criptografia HTTPS/SSL).
    • Adicionado processamento para o Broker extrair a truststore e configurar o "DefaultHostNameVerifier" durante a inicialização.
    • Alteração dos scripts "compilar-pacote-versao.sh" e "gerar-pacote-versao.sh" para fazerem o build e empacotamento do Broker também. 
    • Alterado projeto "chinchila-server-autoupdate" para ser capaz de extrair os arquivos do Broker para serem redistribuídos via atualização automática pelo Servidor.
    • Também foram feitos ajustes no processo de atualização, para permitir que o arquivo "chinchila.ear" seja agora um diretório "explodido", e não mais um arquivo zip/ear.
    • Criado método BrokerFacade.getBrokerWebServiceUrl(), que será usado para que WebServices publicados pelo Broker sejam acessados pelo Servidor.
    • Alteração do SATFacade para usar o Broker para chamar os WebServices do SAT, caso o tipo de integração seja via Broker.
      • Caso contrário, o antigo método de retornar a URL configurada no SAT ainda será utilizado.
    • Renomeadas constantes de "TIPOINTEGRACAO" na classe SATConstants.
    • Corrigido problema que não permitia a atualização automática do Client e PDV usando HTTPS.
      • O problema é que não estava sendo incluído o protocolo "https" nas URLs para download dos arquivos da atualização.
    • Alterado Client e PDV para aceitarem o parâmetro de JVM "ambienteDeTreinamento", que indica que o sistema irá rodar em "Ambiente de Treinamento". Nesse modo, o sistema é reiniciado no primeiro minuto de cada hora (isso não é configurável), e uma mensagem de boas vindas explicativa é exibida ao usuário, alertando sobre o reinício a cada hora.
      • O PDV, além de ser reiniciado, irá "limpar" a sua base de dados interna, sobrescrevendo a base atual com a base limpa que deve estar em seu diretório ("Chinchila-PDV.enc-NONE.limpa.fdb"). Algumas verificações do PDV, como código CNIEE, e validação de arquivo auxiliar criptografado também são desabilitadas no ambiente de treinamento.
      • O Client agora permite que sejam informados os parâmetros de JVM "ambienteDeTreinamento.host" e "ambienteDeTreinamento.porta", para que ele crie um certificado dinamicamente, dispensando o uso da ferramenta Enigma para esses casos.
    • Criado script utilitário 'reiniciar_ambiente_treinamento.sh', que deve ser configurado para rodar como uma tarefa agendada (crontab) no servidor a cada hora.
      • Esse script irá parar o servidor, subir um arquivo de backup pré configurado, e subir o servidor novamente, efetivamente limpando a base de dados do ambiente de treinamento.
    • Alterado o Client para, no modo Orçamento (parâmetro de JVM "-Dorcamento"), usar o certificado gerado para o modo Ambiente de Treinamento (parâmetro de JVM "-DambienteDeTreinamento.host"), ao invés de usar o certificado informado com o parâmetro de JVM "-Dcertificado".
    • Alterado títulos das janelas do Client e PDV para incluir o texto "**AMB. TREINAMENTO**" se estiver nesse modo.
    • Alterado PDV para remover o arquivo de estado do ECF (arquivo "ecf-fake-state.xml") e ignorar a verificação de número de série de HD (arquivo "pdv.numeroSerie.txt").
    • Adicionadas validações para não tentar gerar o pacote de versão se dois números de versão estiverem definidos no arquivo 'versao.properties'.
    • Adicionada condição para não gerar os comandos para publicar o pacote de versão, caso uma das versões esteja zerada ("0.0.0.0"), ou não definida. Ainda sim será possível fazer a geração do pacote para testes por exemplo.
    • Criado executável em Lazarus, cuja função é ser um menu simplificado de acesso ao A7Pharma (nos modos Retaguarda e Orçamento) e PDV para ser usado no Ambiente de Treinamento.
      • A idéia é que um único ícone distinto seja criado na Área de Trabalho de um usuário não habituado ao sistema, evitando que ele se confunda com os ícones padrão dos outros lançadores do sistema.
    •  Criados projetos (arquivos ".ispro") do InstallSimple (http://installsimple.com/) para geração de instaladores do Client, PDV, Broker e Ambiente de Treinamento para Windows.
    • Detalhes sobre a geração dos instaladores podem ser vistos no arquivo 'LEIA-ME_ComoGerarInstaladores.txt'.
    • Criado mecanismo de "Watchdog" (ou processo "guardian"), que irá monitorar o processo do Broker, e caso esse seja terminado incorretamente, irá reiniciá-lo.
      • O monitoramento é feito através da porta de WebServices do Broker: caso o watchdog consiga reservar essa porta, signifca que o Broker original está morto, e precisa ser reiniciado.
      • Para garantir um uso baixo de memória, foi criado o método Principal.iniciarModoWatchDog(), que foi implementado sem usar bibliotecas externas e da forma mais simples possível.
      • Todos os lugares onde o usuário pode querer encerrar o Broker da maneira "correta" foram alterado para chamar Principa.finalizarProcessoWatchDog(), impedindo que o Broker seja reiniciado nesses casos.
      • Ao fundir a branch da versão 2.47, o arquivo localhost.truststore foi alterado, e como esse é um arquivo binário, foi necessária uma re-importação das chaves usadas para comunicação SSL com o Wildfly.
      • Corrigida verificação para checar se algum número de versão não foi definido antes de gerar os comandos para publicar o pacote de versão pronto.