PDVApp: mudanças entre as edições

De BIS Wiki
Ir para navegação Ir para pesquisar
Criou página com '= Inicialização do Sistema = == PDVStarter == O sistema se inicializa na classe '''br.com.biserp.pdv.main.PDVStarter''', que na verdade não passa de uma casca. Pois sua...'
 
 
(10 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
= Inicialização do Sistema =  
= BISPDV =
== Inicialização do Sistema ==


== PDVStarter ==
[[Imagem:inicialização_pdvapp.png|center|Inicialização do Sistema]]
O sistema se inicializa na classe '''br.com.biserp.pdv.main.PDVStarter''', que na verdade não passa de uma casca. Pois sua única função é chamar a classe '''br.com.biserp.pdv.main.PDVUpdater''' que executa as diversas tarefas de inicialização do sistema, como atualização, verificação etc.


A inicialização do aplicativo segue as seguintes regras:


{{nota|Usabilidade da PDVStarter|A função da PDVStarter é simplesmente permitir que outras classes substituam a inicialização do sistema, como a interceptação de um sniffer, logger ou debugger no sistema. Bastando que uma um pacote (.jar) esteja antes no classpath de inicialização e que contenha a mesma classe (e package), isso fará com que a classe do pacote externo seja carrega primeiro pelo Java, impedindo a classe padrão de ser executada.}}
=== PDVStarter ===
A aplicação deve ser inicializada sempre por esta classe que contém o método ''main()'';
: Esta classe não faz absolutamente nada além de passar a chamada, incluindo os argumentos de linha de comando para a '''PDVUpdater'''. Sua existência tem a finalidade de permitir a incorporação de plugins, siffers, debugger e outras ferramentas na aplicação. Para isso, basta que a ferramenta implemente uma 'sósia' desta classe (mesmo nome e package), e que sua bibliotexa (.jar) seja carregada no classpath antes dos .jars da própria aplicação. Após realizar o que for necessário a ferramenta deve repassar a chamada para '''PDVUpdater''' da mesma forma, para que a aplicação se inicie em seu fluxo normal.


 
=== PDVUpdater ===
== PDVUpdater ==


Esta classe que concentra as tarefas de inicialização da aplicação recebe os seguintes parâmetros:
Esta classe que concentra as tarefas de inicialização da aplicação recebe os seguintes parâmetros:
Linha 16: Linha 18:
* '''-autoSaleTest''' - Carrega um arquivo de vendas automáticas. Esse arquivo deve conter o que deve ser vendido, e as vendas serão feitas automaticamente no horário programado.
* '''-autoSaleTest''' - Carrega um arquivo de vendas automáticas. Esse arquivo deve conter o que deve ser vendido, e as vendas serão feitas automaticamente no horário programado.
* '''-noUI''' - Não inicializa a UI do PDVApp. Útil quando estamos utilizando o -saleFile
* '''-noUI''' - Não inicializa a UI do PDVApp. Útil quando estamos utilizando o -saleFile
Valida se é a única instância tentando bloquear o arquivo '''.\\instance.lock''' no diretório da aplicação.
=== PDVApp ===
O '''PDVApp''' é o coração da aplicação. Funciona com uma série de máquinas de estado (workflows) que definem a lógica da operação da aplicação.
== Workflows do Sistema ==
=== Principal: '''PDVState''' ===
[[Imagem:workflow_pdvstate.png|center]]
Esse é o WORKFLOW geral da aplicação, é definida nos valores da enum '''PDVState''':
* '''START''' - Valor inicial, utilizado somente na inicialização da aplicação.
*: Neste passo é iniciado o workflow '''StartCheckStatus''', enquanto esse workflow secundário é executado, o PDVState é passado para o estado '''STARTCHECK'''.
* '''STARTCHECK''' - Estado enquanto a checagem inicial do sistema ocorre;
*: Se a checagem inicial finalizar com sucesso vai para o estado '''WAITINGLOGIN''', em caso de erro vai para o '''STARTCHECK_FAIL'''.
* '''STARTCHECK_FAIL''' - indicador de que o processo de checagem inicial terminou com erro.
*: Não há saída desse estado, a não ser reiniciar ou refazer a instalação do PDVApp.
* '''WAITINGLOGIN''' - Sinaliza que o sistema está aguradando o login.
*: Fica nesse estado até que o PDVUI interaja com o usuário para executar o login.
*: Uma vez feita o login pelo método doLogin(), se realizado com sucesso para para o estado '''ADMINISTRATIVE'''.
* '''ADMINISTRATIVE''' - Estado em que o sistema permite ser configurado, e permite acesso a outras funções administravias do checkout (como abrir e fechar o checkout).
*: Este já um estado de uso do sistema, deste estado o usuário pode entrar no modo de venda '''SALES'''.
* '''SALES''' - Estado em que o sistema entra no modo de vendas, permite a abertura de venda, venda de produtos, recebimento, etc.
*: Sempre que não estiver com uma venda aberta, o usuário pode voltar para o estado '''ADMINISTRATIVE'''.
Uma vez nos estrados '''ADMINISTRATIVE''' ou '''SALES''' o usuário não pode mais voltar para os outros estados até que a aplicação seja finalizada.
=== Inicialização: '''StartCheckStatus''' ===
[[Imagem:workflow_StartCheckStatus.png|center]]
Esse é o WORKFLOW que cuida da checagem e inicialização inicial do sistema. Seus funcionamento é assim:
* '''INITING''' - Estado inicial de começo das checkagens;
*: Neste estágio o sistema começa a ser inicializado, como carregamento dos bundles.
*: Tudo inicializado com sucesso, passa para o estado '''CHECKING_LOCALDB'''.
* '''CHECKING_LOCALDB''' - Estado para verificação do banco de dados.
*: Verifica se o banco de dados existe, se não existir o cria;
*: Passa para o estado '''CHECKING_LOCALDB_VERSION''';
* '''CHECKING_LOCALDB_VERSION''' - Verifica se o banco de dados está na versão correta e faz as alterações/atualizações necessárias;
*: Quando atualizado passa para o '''CHECKING_INSTALLATION''';
* '''CHECKING_INSTALLATION'''- Valida se a instalação do PDV está ok (empresa configurada, dados sincronizados, etc.).
*: Se a instalação estiver OK vai para o estado '''INSTALLATION_OK''', caso contrário para '''INSTALLATION_NEEDED'''.
* '''INSTALLATION_NEEDED'''
*: Nesse estado o PDVApp não faz nada, mas serve de sinalização para o '''PDVUI''' que a instalação precisa ser realizada, e a tela é exibida. Quando a tela de instalação é finalizada, o PDVUI sinaliza para o '''PDVAapp''' que volta para o estado de '''CHECKING_INSTALLATION'''.
* '''INSTALLATION_OK''' - Estado sem operação, apenas sinalizando que a Instalação está completa.
*: Passa automaticamente para o estado '''START_TERMINALAPP'''.
* '''START_TERMINALAPP''' - Inicializa o Terminal Client (Reponsável por realizar a comunicação com o servidor).
*: Após inicializá-lo passa automaticamente para o estado '''CHECKING_SERVER_ID'''.
* '''CHECKING_SERVER_ID''' - Valida se o ID atual configurado na estação PDV está válido e cadastrado corretamente no servidor.
*: Se o cadastro estiver OK passa para '''LOAD_CHECKOUT_DATA''', caso contrário trava a aplicação em erro para garantir que seja reinstalada.
* '''LOAD_CHECKOUT_DATA''' - Carrega as informações do checkout, se tiver persistido, ou se encontrar no banco de dados algum checkout aberto.
*: Passa para o '''START_SYNCDATA'''.
* '''START_SYNCDATA''' - Inicializa a Thread responsável por sincronizar os dados com/do servidor.
*: Passa para o '''OK'''.
* '''OK''' - Estado em que o WORKFLOW finalizou com sucesso. Utilizado para sinalizar outras partes do sistema que a inicialização terminou com sucesso e o sistema está pronto para ser utilizado.
*: Sinaliza o PDVApp de que este workflou finalizou através do método '''app.freeStartCheck()''', que dá sequência no workflow '''PDVState'''.
=== PDVUI ===
= PayGo =
O PayGo é o sistema integrado de TEF do sistma.
'''Observações Importantes''':
* '''Site de suporte e manual do desenvolvedor:''' https://paygodev.readme.io/docs/vis%C3%A3o-geral
* '''Download do Kit de Integração:''' https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2
* O BISPDV utiliza a versão de troca de arquivos txt, que é a continuação da versão do da NTK na qual o sistema foi homologado inicialmente.
== Instalação Ambiente de Testes/Homologação ==
Para instalação do ambiente de testes/homologação seguir as instruções do site: https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2.
Em 28/01/2025 solicitei cadastro para uma nova homologação e ativação do sistema e recebi um e-mail com o seguinte conteúdo:
<pre>
Giovanna de Mello Doroteio comentou\: Prezado(a), Rodrigo.
Agradecemos por escolher nossos serviços. Para garantir uma experiência tranquila e bem-sucedida durante a integração, estamos fornecendo os dados de instalação e informações sobre os adquirentes disponíveis em nosso servidor de testes.
Dados de Instalação:
Id de Instalação: 344384
Senha: A70C47D1
Adquirentes disponíveis em nosso servidor de testes:
Adquirente DEMO:
Função: Simula uma sub-adquirente.
Adquirente REDE:
Função: Simula uma adquirente.
Restrição no Ambiente de Sandbox: Aceita apenas valores inteiros.
Importante: Qualquer valor com centavos resultará em uma transação negada.
Adquirente PIX C6 BANK:
Função: Simula operações com Pix e carteira digital.
Processo: Após uma transação, o QRCode para pagamento será gerado.
Aprovação Automática: A transação será aprovada automaticamente alguns segundos após a geração do QRCode.
Para acessar a documentação completa de integração, por favor, visite: Sobre esse documento
Segue o kit de integração e o passo a passo para a habilitação dos logs, respectivamente: [
Kit de integração|https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2][
Kit de integração- Habilitação dos Logs.|https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2#aten%C3%A7%C3%A3o]
ATENÇÃO: É obrigatório habilitar os logs para realizar a homologação.
Se você tiver alguma dúvida, precisar de assistência adicional ou encontrar qualquer problema durante o processo de integração, nossa equipe de suporte estará pronta para ajudar. Não hesite em entrar em contato conosco por meio deste chamado.
Agradecemos pela sua colaboração e estamos ansiosos para fornecer a melhor experiência possível durante sua fase de testes.
Atenciosamente, SETIS.
</pre>
= SAT =
== Informações ==
* '''Site Oficial:''' https://portal.fazenda.sp.gov.br/servicos/sat
'''Navegação dos Arquivos do Site''' (Procure pelas versões mais atualizadas na sessão de download do site oficial)
* '''Manual Orientacao SAT''' - arquivo geral com as orientações sobre como gerar a impressão do cupom, códigos de barras, tamanho, informações necessárias, qrcode, etc.
* '''Guia para Geração do QRCode''' - arquivo com as orientações para gerar o qrcode do cupom fiscal.
* '''Especificação de Requisitos do SAT''' - arquivo com as especificações para o desenvolvedor, como layout XML e outras informações técnicas.
= NFC-e =
A emissão de NFCe é realizada pelo mesmo site da NFe. O BISPDV utilizará o módulo [https://wiki.rodrigogml.eng.br/index.php/P%C3%A1gina_principal#RFW_-_Sefaz RFW.SEFAZ]. Toda a documentação técnica estará no site do módulo. '''Concentrar aqui apenas as informações relacionadas ao BISPDV e à configuração/utilização do módulo'''.

Edição atual tal como às 21h51min de 8 de fevereiro de 2025

BISPDV

Inicialização do Sistema

Inicialização do Sistema
Inicialização do Sistema

A inicialização do aplicativo segue as seguintes regras:

PDVStarter

A aplicação deve ser inicializada sempre por esta classe que contém o método main();

Esta classe não faz absolutamente nada além de passar a chamada, incluindo os argumentos de linha de comando para a PDVUpdater. Sua existência tem a finalidade de permitir a incorporação de plugins, siffers, debugger e outras ferramentas na aplicação. Para isso, basta que a ferramenta implemente uma 'sósia' desta classe (mesmo nome e package), e que sua bibliotexa (.jar) seja carregada no classpath antes dos .jars da própria aplicação. Após realizar o que for necessário a ferramenta deve repassar a chamada para PDVUpdater da mesma forma, para que a aplicação se inicie em seu fluxo normal.

PDVUpdater

Esta classe que concentra as tarefas de inicialização da aplicação recebe os seguintes parâmetros:

  • -help - Exibe este menu de opções.
  • -testDarumaFW - Não inicializa a aplicacao. Tenta apenas inicializar as bibliotecas da DarumaDramework, verificando se as DLLs estão OK. Não faz comunicação com a impressora.
  • -watcher - Habilita uma thread que imprime o valor de algumas variáveis do sistema a cada segundo no console do sistema.
  • -autoSaleTest - Carrega um arquivo de vendas automáticas. Esse arquivo deve conter o que deve ser vendido, e as vendas serão feitas automaticamente no horário programado.
  • -noUI - Não inicializa a UI do PDVApp. Útil quando estamos utilizando o -saleFile


Valida se é a única instância tentando bloquear o arquivo .\\instance.lock no diretório da aplicação.

PDVApp

O PDVApp é o coração da aplicação. Funciona com uma série de máquinas de estado (workflows) que definem a lógica da operação da aplicação.

Workflows do Sistema

Principal: PDVState


Esse é o WORKFLOW geral da aplicação, é definida nos valores da enum PDVState:

  • START - Valor inicial, utilizado somente na inicialização da aplicação.
    Neste passo é iniciado o workflow StartCheckStatus, enquanto esse workflow secundário é executado, o PDVState é passado para o estado STARTCHECK.
  • STARTCHECK - Estado enquanto a checagem inicial do sistema ocorre;
    Se a checagem inicial finalizar com sucesso vai para o estado WAITINGLOGIN, em caso de erro vai para o STARTCHECK_FAIL.
  • STARTCHECK_FAIL - indicador de que o processo de checagem inicial terminou com erro.
    Não há saída desse estado, a não ser reiniciar ou refazer a instalação do PDVApp.
  • WAITINGLOGIN - Sinaliza que o sistema está aguradando o login.
    Fica nesse estado até que o PDVUI interaja com o usuário para executar o login.
    Uma vez feita o login pelo método doLogin(), se realizado com sucesso para para o estado ADMINISTRATIVE.
  • ADMINISTRATIVE - Estado em que o sistema permite ser configurado, e permite acesso a outras funções administravias do checkout (como abrir e fechar o checkout).
    Este já um estado de uso do sistema, deste estado o usuário pode entrar no modo de venda SALES.
  • SALES - Estado em que o sistema entra no modo de vendas, permite a abertura de venda, venda de produtos, recebimento, etc.
    Sempre que não estiver com uma venda aberta, o usuário pode voltar para o estado ADMINISTRATIVE.

Uma vez nos estrados ADMINISTRATIVE ou SALES o usuário não pode mais voltar para os outros estados até que a aplicação seja finalizada.


Inicialização: StartCheckStatus


Esse é o WORKFLOW que cuida da checagem e inicialização inicial do sistema. Seus funcionamento é assim:

  • INITING - Estado inicial de começo das checkagens;
    Neste estágio o sistema começa a ser inicializado, como carregamento dos bundles.
    Tudo inicializado com sucesso, passa para o estado CHECKING_LOCALDB.
  • CHECKING_LOCALDB - Estado para verificação do banco de dados.
    Verifica se o banco de dados existe, se não existir o cria;
    Passa para o estado CHECKING_LOCALDB_VERSION;
  • CHECKING_LOCALDB_VERSION - Verifica se o banco de dados está na versão correta e faz as alterações/atualizações necessárias;
    Quando atualizado passa para o CHECKING_INSTALLATION;
  • CHECKING_INSTALLATION- Valida se a instalação do PDV está ok (empresa configurada, dados sincronizados, etc.).
    Se a instalação estiver OK vai para o estado INSTALLATION_OK, caso contrário para INSTALLATION_NEEDED.
  • INSTALLATION_NEEDED
    Nesse estado o PDVApp não faz nada, mas serve de sinalização para o PDVUI que a instalação precisa ser realizada, e a tela é exibida. Quando a tela de instalação é finalizada, o PDVUI sinaliza para o PDVAapp que volta para o estado de CHECKING_INSTALLATION.
  • INSTALLATION_OK - Estado sem operação, apenas sinalizando que a Instalação está completa.
    Passa automaticamente para o estado START_TERMINALAPP.
  • START_TERMINALAPP - Inicializa o Terminal Client (Reponsável por realizar a comunicação com o servidor).
    Após inicializá-lo passa automaticamente para o estado CHECKING_SERVER_ID.
  • CHECKING_SERVER_ID - Valida se o ID atual configurado na estação PDV está válido e cadastrado corretamente no servidor.
    Se o cadastro estiver OK passa para LOAD_CHECKOUT_DATA, caso contrário trava a aplicação em erro para garantir que seja reinstalada.
  • LOAD_CHECKOUT_DATA - Carrega as informações do checkout, se tiver persistido, ou se encontrar no banco de dados algum checkout aberto.
    Passa para o START_SYNCDATA.
  • START_SYNCDATA - Inicializa a Thread responsável por sincronizar os dados com/do servidor.
    Passa para o OK.
  • OK - Estado em que o WORKFLOW finalizou com sucesso. Utilizado para sinalizar outras partes do sistema que a inicialização terminou com sucesso e o sistema está pronto para ser utilizado.
    Sinaliza o PDVApp de que este workflou finalizou através do método app.freeStartCheck(), que dá sequência no workflow PDVState.

PDVUI

PayGo

O PayGo é o sistema integrado de TEF do sistma.

Observações Importantes:

Instalação Ambiente de Testes/Homologação

Para instalação do ambiente de testes/homologação seguir as instruções do site: https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2. Em 28/01/2025 solicitei cadastro para uma nova homologação e ativação do sistema e recebi um e-mail com o seguinte conteúdo:

Giovanna de Mello Doroteio comentou\: Prezado(a), Rodrigo.
Agradecemos por escolher nossos serviços. Para garantir uma experiência tranquila e bem-sucedida durante a integração, estamos fornecendo os dados de instalação e informações sobre os adquirentes disponíveis em nosso servidor de testes.

Dados de Instalação:

Id de Instalação: 344384
Senha: A70C47D1
Adquirentes disponíveis em nosso servidor de testes:

Adquirente DEMO:
Função: Simula uma sub-adquirente.

Adquirente REDE:
Função: Simula uma adquirente.
Restrição no Ambiente de Sandbox: Aceita apenas valores inteiros.
Importante: Qualquer valor com centavos resultará em uma transação negada.

Adquirente PIX C6 BANK:
Função: Simula operações com Pix e carteira digital.
Processo: Após uma transação, o QRCode para pagamento será gerado.
Aprovação Automática: A transação será aprovada automaticamente alguns segundos após a geração do QRCode.

Para acessar a documentação completa de integração, por favor, visite: Sobre esse documento
Segue o kit de integração e o passo a passo para a habilitação dos logs, respectivamente: [
Kit de integração|https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2][
Kit de integração- Habilitação dos Logs.|https://paygodev.readme.io/docs/kit-de-integra%C3%A7%C3%A3o-2#aten%C3%A7%C3%A3o]
ATENÇÃO: É obrigatório habilitar os logs para realizar a homologação.

Se você tiver alguma dúvida, precisar de assistência adicional ou encontrar qualquer problema durante o processo de integração, nossa equipe de suporte estará pronta para ajudar. Não hesite em entrar em contato conosco por meio deste chamado.
Agradecemos pela sua colaboração e estamos ansiosos para fornecer a melhor experiência possível durante sua fase de testes.

Atenciosamente, SETIS.

SAT

Informações


Navegação dos Arquivos do Site (Procure pelas versões mais atualizadas na sessão de download do site oficial)

  • Manual Orientacao SAT - arquivo geral com as orientações sobre como gerar a impressão do cupom, códigos de barras, tamanho, informações necessárias, qrcode, etc.
  • Guia para Geração do QRCode - arquivo com as orientações para gerar o qrcode do cupom fiscal.
  • Especificação de Requisitos do SAT - arquivo com as especificações para o desenvolvedor, como layout XML e outras informações técnicas.

NFC-e

A emissão de NFCe é realizada pelo mesmo site da NFe. O BISPDV utilizará o módulo RFW.SEFAZ. Toda a documentação técnica estará no site do módulo. Concentrar aqui apenas as informações relacionadas ao BISPDV e à configuração/utilização do módulo.