====== Servidor S@T ====== A liberação do servidor do S@T ocorreu na versão 1.3.005.000. Para a utilização deste módulo é muito importante efetuar na retaguarda, no fechamento do dia, a [[http://wiki.intelliware.com.br/doku.php?id=manuais:intellicash:estoque:vendas:conferir_vendas_ecf|Conferência das Vendas]] e o [[http://wiki.intelliware.com.br/doku.php?id=manuais:intellicash:financeiro:tesouraria:fechamento_caixa|Fechamento de Caixa]], com a finalidade de evitar divergências entre a SEFAZ e o sistema. Foi criado um aplicativo servidor de modo que implementa um sistema de fila de comandos a serem enviados para o SAT. O SAT não realiza multiprocessamento, logo é processado um comando por vez. O objetivo é que **no máximo três PDVs** possam emitir venda utilizando um único SAT. O funcionamento é basicamente o seguinte: - **PDV1** envia um **COMANDO1** e o **PDV2** envia um **COMANDO2**. - Será aberta **CONEXAO1** e **CONEXAO2** no servidor com duas sessões associadas. - Na fila do banco de dados do servidor será gravada **COMANDO1** e **COMANDO2**. - Em um intervalo pré-determinado o **COMANDO1** é processado no SAT e o resultado é retornado para a **CONEXAO1** que volta para o **PDV1**. A conexão é fechada. - Em um intervalo pré-determinado o **COMANDO2** é processado e retornado para a **CONEXAO2** que volta para o **PDV2**. A conexão é fechada. {{ :easycash:servidor_foto_completa.jpg |}}
A limitação de no máximo três caixas se deve ao fato que quanto __mais comandos a serem processados__ estiverem na fila, __mais lento__ irá ficar para os caixas conectados ao servidor operarem normalmente. Este comportamento deve-se ao fato que o último a chegar será o último a processar, isso para cada comando. A arquitetura de rede utilizada no processo é descrita na imagem abaixo: {{ :easycash:modelo_sat_compartilhado.jpg |}}
O servidor do SAT possui um arquivo de configuração, chamado **EasyCashSRV.ini** que possui as seguintes tags: **a) Conexão com o Banco de Dados:**

[BDServer]
UserName=SYSDBA Usuário do Firebird para acesso ao banco de dados.
Pwd=XXXXXXXXXXXXXXXXXXXX Senha do Firebird criptografada
Path=C:\IWS\EC\BD\SERVER_SAT.fdb Caminho do banco de dados do frente de caixa. Pode ser informado um caminho físico até o arquivo FDB, um caminho de rede ou até mesmo um alias devidamente configurado no Firebird.
Charset=WIN1252 Configuração do Firebird para que seja utilizado caracteres de acentuação.
Embedded=0 Descrição a seguir.
Segue as configurações padrões de acesso ao banco de dados que é realizada no EasyCash. Um detalhe a chamar a atenção é a tag **Embedded**, que pode ser: * 0 (Zero) → Quando setado para este valor significa que o banco de dados a ser utilizado pelo servidor será o [[https://www.firebirdsql.org/en/firebird-2-5/|Firebird padrão]] devidamente instalado na máquina. É a opção de instalação padrão. * 1 (Um) → Quando setado para este valor significa que o banco de dados a ser utilizado pelo servidor será o [[https://www.firebirdsql.org/pdfmanual/html/fbmetasecur-embedded.html|Firebird Embedded(Embarcado)]] que não necessita de instalação na máquina do cliente, rodando direto de uma DLL. **b) Conexão com o equipamento SAT:**
Trace=0 Habilita um log adicional para arquivar dados adicionais em relação as conexões executadas ao servidor. Utilizado para questões de suporte. Por padrão, vêm desabilitada.
ServerPorta=5060 Porta que o servidor do SAT está operando.
AcessoDLL=2 Forma de acesso as funções da DLL do SAT. Bematech e Sweda utiliza padrão 2, no caso de ser outro fabricante, verificar a configuração correta no manual do SAT.
Nesta tag é aceito: * 0 - Nenhum * 1 - cdecl [[https://msdn.microsoft.com/pt-br/library/zkwh89ks.aspx|Definição __cdecl]] * 2 - stdcall [[https://msdn.microsoft.com/pt-br/library/zxk0tw93.aspx|Definição __stdcall]]
Porta=COM18 Porta do equipamento SAT
Marca=BEMATECH Modelo do equipamento SAT
NomeDLL=C:\IWS\EC\Client\SAT\BemaSAT32.dll Caminho da DLL do SAT que deve ficar dentro da pasta SAT.
CodigoAtivacao=5F8181818383DA64E2 Código de ativação do SAT. Esse código de ativação é criptografado.
SwHAssinatura=XXXXXXXX Esse é o vinculo entre CNPJ do cliente e o CNPJ da Software House criptografado e informado pela IWS conforme item anterior Associar Assinatura.
PaginaDeCodigo=65001 Sistema trabalha com o padrão UTF-8. Verificar no manual do SAT se trabalha com esse padrão.
VersaoDadosEnt=0,07 Versão do XML. Padrão do sistema de acordo com a SEFAZ.
==== Opções ==== {{ :easycash:menu_opcoes.jpg |}}
__**Iniciar Servidor**__ Ao acionar esta opção, fará com que o servidor do SAT inicie para receber conexão via rede do aplicativo EasyCash configurado para acessar o mesmo. Lembrando que o servidor já abre iniciado, então só deve ser utilizado caso a opção abaixo seja acionada primeiro. É uma opção implementada para suporte ou manutenção de alguma informação. Deve ser utilizada com restrição. __**Parar Servidor**__ Ao acionar esta opção, fará com que o servidor do SAT não receba mais conexão via rede do aplicativo EasyCash configurado para acessar o mesmo, parando o processamento das vendas. É uma opção implementada para suporte ou manutenção de alguma informação. Deve ser utilizada com restrição. __**Iniciar Processo**__ É uma opção implementada para suporte. Ao acionar esta opção, fará com que o servidor inicie o processamento das requisições recebidas via rede do aplicativo EasyCash configurado para acessar o mesmo. Lembrando que o servidor já abre com o processamento iniciado, então só deve ser utilizado caso a opção abaixo seja acionada primeiro. É uma opção implementada para suporte ou manutenção de alguma informação. Deve ser utilizada com restrição. __**Parar Processo**__ É uma opção implementada para suporte. Ao acionar esta opção, fará com que o servidor aceite as conexões do EasyCash configurado para acessar o mesmo mas não irá processar o comando enviado na requisição, fazendo com que o tempo expire(timeout). É uma opção implementada para suporte ou manutenção de alguma informação. Deve ser utilizada com restrição. __**Trocar Senha**__ Permite que o cliente defina sua própria senha para o servidor, para retringir o acesso a funções vitais do aplicativo, como por exemplo: Parar Servidor. É recomendável que cada cliente crie sua própria senha para que possa controlar o acesso a configurações sensíveis do servidor. __**Fechar**__ Permite fechar o servidor. Deve ter cuidado ao acionar esta opção, sempre verificando se não existe nenhum caixa conectado, pois isso faria com que o processamento do comando do mesmo fosse interrompido. Se for uma venda, pode ocorrer problema no processamento. ==== SAT ==== {{ :easycash:menu_sat_servidor.jpg |}}
__**Ferramentas**__ Vejas as funcionalidades através do link: [[easycash:manual_de_instrucao_sat|Manual de Instrução SAT]] __**Consulta de Lote**__ {{ :easycash:servidor_consulta_lote.jpg |}}
Permite consultar os CF-e emitidos nos últimos **30 dias** no máximo. O cliente deve ter uma chave de segurança cadastrada no sistema SGRSAT da Secretaria da Fazenda do respectivo estado de atuação. No caso do estado de São Paulo, para maiores informações a respeito deste procedimento consulte na seção **Downloads** o documento **Manual para Consultar lotes enviados via Webservice (Estadual)** no link: [[https://portal.fazenda.sp.gov.br/servicos/sat/Paginas/Downloads.aspx|Portal SEFAZ SP#Downloads]] __**Última Comunicação SEFAZ**__ Veja esta funcionalidade através do link: [[easycash:manual_de_instrucao_sat|Manual de Instrução SAT]] __**Validação de Conexão de Rede**__ Veja esta funcionalidade através do link: [[easycash:manual_de_instrucao_sat|Manual de Instrução SAT]] ==== Aba Status Geral ==== {{ :easycash:servidor_aba_statusgeral.png |}}
Segue a descrição dos itens: - Mostra o IP da máquina cliente que está acessando o servidor. - Mostra a sessão associada a cada conexão que está processando no servidor. - Lista as requisições que estão ATIVO ou IDLE no banco de dados. No caso de utilizar o Firebird Embedded algumas informações deste grid são suprimidas. - Instruções que estão sendo processadas em tempo real no servidor. A cada refresh é mostrado no grid a data/hora, instrução processada e qual PDV requisitou. - Mostra a quantidade de memória física disponível da máquina em relação a quantidade de memória total sendo utilizada da máquina. Na segunda barra de progresso mostra a quantidade de memória utilizada pelo aplicativo do servidor em relação a quantidade de memória física total disponível. Lembrando que como trata-se de um servidor, a segunda barra de progresso deve ter ao longo do tempo uma variação mínima, alocando e desalocando(variando) de acordo com a necessidade. - Mostra a porta em que o servidor de aplicativo está em modo LISTENING e também a quantidade de conexões ativas no momento. - Mostra a porta do servidor do banco de dados em que o mesmo está em modo LISTENING e a quantidade de conexões ativas no momento. - Mostra a quantidade de comandos pendentes na fila de processamento do SAT. - Os três painéis mostra o status do servidor, do processo(processamento da fila) e do equipamento SAT(Recurso). Caso esteja verde significa que estão iniciados corretamente. Se apresentar a cor vermelha, significa que foi parado através do menu ou que no momento de iniciar automaticamente ocorreu algum erro. - O primeiro ícone será mostrado caso esteja utilizando o Firebird Embedded. O segundo ícone só é exibido em caso de teste em homologação. Para cliente final em produção não é utilizado. ==== Aba Recurso - SAT ==== {{ :easycash:servidor_aba_recursosat.jpg |}}
É mostrado todos os dados do SAT, como tipo de rede, número de série, entre outros. ==== Aba Configuração ==== {{ :easycash:servidor_aba_configuracao.jpg |}}
Para qualquer alteração efetuada nesta aba, o servidor deve ser reiniciado para que a mesma faça efeito. Segue a descrição dos itens: 1. Permite trocar a porta do servidor em que os clientes EasyCash irão conectar. Caso efetue esta alteração deve-se alterar a configuração de porta no frente para o mesmo poder encontrar o servidor. Por padrão a porta do servidor é a **5060**. 2. * **Monitor Banco de Dados:** Refere-se ao tempo em que será realizado o refresh na tela, verificando a quantidade de conexões ATIVO ou IDLE no Firebird. * **Processar Requisição:** Refere-se ao intervalo de tempo que o servidor irá esperar para verificar na fila de processamento do banco de dados se existe algum comando pendente para processar no SAT. Deve ser modificado com cautela. 3. Refere-se ao tempo de inatividade no fim de cada processamento da fila com o intuito de evitar erros no SAT, ou seja, o SAT terminou um processamento e está finalizando ainda os seus procedimentos internos e já recebe um novo comando, gerando o erro: "SAT em processamento. Tente novamente." 4. Refere-se aos tempos de espera máximos que cada requisição do frente de caixa irá esperar antes de retornar timeout(tempo esgotado) para o operador. Lembrando que caso o tempo de timeout seja setado, por exemplo, para 5 segundos e seja processado em 1 segundo, os outros 4 segundos não serão utilizados e a resposta já é retornada, ou seja, o processamento será em 1 segundo. Para estes valores foi tomado como base estas duas diretrizes: **a)** Os valores oficiais para o SAT do estado de São Paulo descritos no documento **Especificação de Requisitos do SAT versão 02.18.08** na seção **Especificação de Requisitos do SAT** no link: [[https://portal.fazenda.sp.gov.br/servicos/sat/Paginas/Downloads.aspx|Portal SEFAZ SP#Downloads]] **b)** Os valores utilizados nos testes exaustivos efetuados pelo nosso departamento de Qualidade, levando em consideração variações na estrutura de rede. Segue uma pequena descrição de cada comando e seu valor default para o servidor:
Comando
Descrição
Tempo Default
Associar Assinatura
Comando para associar o CNPJ da empresa que utilizará o SAT e a empresa desenvolvedora para identificação perante a SEFAZ.
20 segundos
Ativar SAT
Comando para poder efetuar a liberação do equipamento SAT junto a SEFAZ para utilização em produção. Neste processo o SAT recebe os parâmetros e diretrizes de trabalho.
300 segundos
Atualizar Software
Comando utilizado para receber uma nova versão do layout dos XML enviados para o webservice da SEFAZ caso exista algum disponível. Lembrando que o aplicativo comercial também deve ser compatível com a nova versão para comunicar com sucesso com o equipamento SAT.
1800 segundos
Bloquear SAT
Permite bloquear o SAT impossibilitando efetuar venda. Geralmente utilizado quando o mesmo irá ficar desativado por um longo período de tempo.
300 segundos
Consultar SAT
Comando para efetuar um teste rápido para sabermos se o SAT está em operação.
10 segundos
Desbloquear SAT
Comando para desbloquear o SAT caso o mesmo esteja no estado BLOQUEADO.
20 segundos
Enviar Dados Venda
Comando para enviar os dados para o SAT, para que o mesmo possa autenticar e retornar uma resposta.
10 segundos
Inicializado
Comando utilizado pelo framework interno do servidor para efetuar uma validação rápida se o componente do mesmo está habilitado.
30 segundos
Configurar Interface de Rede
Permite modificar as configurações de acesso a rede do SAT, como IP, Gateway, DNS, proxy, entre outros.
20 segundos
Comunica Certificado ICP Brasil
Comando utilizado caso o cliente quiser enviar o seu próprio certificado devidamente registrado e homologado por uma entidade certificadora. No caso do estado de São Paulo a própria SEFAZ no momento do cadastro disponibiliza um certificado gratuito para autenticação e transmissão dos XML de venda.
30 segundos
Consultar Número Sessão
Comando para poder efetuar uma consulta utilizando o número de sessão, para poder visualizar o status de determinado CF-e associado ao mesmo na SEFAZ.
20 segundos
Consultar Status Operacional
Comando que permite obter um detalhamento completo das informações do SAT, como: Tipo de rede, IP, DNS, Gateway, número de série, data e hora do SAT, data e hora da última comunicação com a SEFAZ, data de validade do certificado, status de trabalho do SAT, último CF-e transmitido para a SEFAZ, entre outros.
20 segundos
Cancelar Última Venda
Comando utilizado para poder efetuar o cancelamento de uma venda, respeitando o limite máximo de tempo de que o CF-e têm que ter sido emitido nos últimos 30 minutos.
10 segundos
Teste Fim-a-Fim
Comando utilizado para efetuar um teste completo de comunicação entre o aplicativo comercial, o SAT e a SEFAZ.
20 segundos
Trocar Código de Ativação
Comando que possibilita trocar o código de segurança do SAT cadastrado na ativação. Este código é utilizado em vários procedimentos no SAT.
20 segundos
Desinicializar
Comando utilizado pelo framework interno do servidor para desinicializar o componente de acesso ao SAT.
30 segundos
Inicializar
Comando utilizado pelo framework interno do servidor para inicializar o componente de acesso ao SAT.
30 segundos
Inicializa
Comando utilizado pelo framework interno do servidor para inicializar o componente de acesso ao SAT. É uma variação do comando anterior.
30 segundos
Extrair Log
Comando utilizado para extrair os logs de registro de atividade que o SAT mantêm, muito útil em caso de erro, onde é necessário saber informações detalhadas do procedimento.
20 segundos
5. * O botão **Arquivo** irá abrir o arquivo de texto com as configurações do servidor. * O botão **Padrão** seta nos campos desta aba os valores default do servidor. * O botão **Salvar** registra no banco de dados as alterações relativas a aba em questão. Caso seja uma configuração do arquivo INI do servidor, irá efetuar a gravação no mesmo. ==== Aba SAT ==== {{ :easycash:servidor_aba_sat.jpg |}}
Veja esta funcionalidade através do link: [[easycash:manual_de_instrucao_sat#dados_gerais|Manual de Instrução SAT#Dados Gerais]] ==== Aba Empresa ==== {{ :easycash:servidor_aba_empresa.jpg |}}
Os dados informados nesta aba devem ser os mesmos utilizados para a ativação do SAT. Caso contrário os CF-e serão rejeitados pelo equipamento. Nesta aba deve constar as seguintes informações fidedignas da empresa que irá utilizar o equipamento: * **Razão Social** * **Unidade Federativa** * **CNPJ** * **Inscrição Estadual** * **Inscrição Municipal** * **Regime Tributário** ==== Watchdog ==== {{ :easycash:watchdog-sat.png |}}
Junto com o servidor é distribuído um pequeno aplicativo que monitora o processamento do servidor. Sua função é validar se o servidor parar de responder por mais de **32 segundos**(valor default). Caso isso ocorra o mesmo irá reiniciar o servidor automaticamente. É uma medida de segurança adicional para o servidor. O valor default apresentado se refere ao __tempo máximo de timeout de processamento__ dos comandos básicos do PDV no servidor somado a dois segundos adicionais de segurança. ===== Configurações do EasyCash ===== Para que o PDV EasyCash trabalhe com o servidor, é necessário adicionar ou alterar as seguintes tags no arquivo 'EasyCash1.ini'. Seguem: [SAT]
Remoto=0 Desabilita(0) ou habilita(1) o EasyCash para trabalhar com o servidor SAT. Mesmo que o servidor seja o próprio caixa que irá utilizá-lo deve-se setar esta opção.
RemotoPorta=5060 Porta em que o servidor do EasyCash está em modo LISTENING. A porta padrão é 5060.
RemotoHost=192.168.0.14 IP do host onde o servidor está sendo executado.
RemotoConnectionTO=10000 Valor padrão em millisegundos do timeout de conexão.
RemotoCommunicationTO=10000 Valor padrão em millisegundos do timeout de comunicação.
===== Configurações da Retaguarda ===== Deve-se no cadastro dos caixas que forem utilizar o servidor de compartilhamento de SAT, setar o **MESMO SERIAL** e habilitar a flag **REMOTO**, conforme a imagem abaixo: {{ :easycash:imagem_2023-07-12_152829781.png?650 |}}