De acordo com as emendas ao 54-, desde julho deste ano, quase todas as empresas comerciais são obrigadas a usar caixas eletrônicas on-line que transmitem dados via Internet ao serviço de impostos. Para adquirir esse aparato, você terá que comprar uma caixa e uma unidade fiscal, assinar um contrato e pagar pelos serviços de um operador de dados fiscais, registrar-se em dois escritórios pessoais do Serviço Fiscal Federal e OFD, dirigir os detalhes para a caixa e receber um relatório de registro em papel. Bem, você também precisará de uma assinatura digital eletrônica, caso contrário, precisará comparecer ao Serviço de Impostos Federais e ficar pessoalmente na fila.

Decidimos salvar nossos clientes de todo esse horror criando um serviço que registra tudo automaticamente quase com um clique. Vamos falar sobre isso agora.
Por que precisamos disso
Você já percebeu que registrar uma bilheteria é uma tarefa tediosa em várias etapas, mas esse não é o único problema. Em cada etapa, o zoológico aguarda as interfaces, cujos formulários deverão ser preenchidos manualmente com dados de registro para cada bilheteria, além de um conjunto completo de bugs relevantes (cumprimentos separados aos requisitos fiscais para o uso de navegadores IE, Yandex.Browser ou Sputnik). Centenas de oportunidades para cometer um erro, estragar o procedimento e começar de novo. E se você definir de 5 a 10 caixas registradoras, a chance de um erro ao inserir os mesmos detalhes aumenta às vezes. Sem mencionar o desperdício improdutivo de tempo e descobrir por que o departamento tributário pessoal se recusa a aceitar o token, que foi perfeitamente "engolido" ontem.

E quando sentimos o peso da tragédia acima, decidimos retomar o desenvolvimento.
Etapas de registro
Várias partes estão envolvidas no registro de uma caixa registradora de uma só vez. Este é o serviço fiscal (STF), OFD - o operador de dados fiscais através do qual as caixas registradoras interagem com a autoridade tributária, um centro de certificação que emite assinaturas eletrônicas e, via de regra, um pequeno empresário perplexo perdido em distúrbios burocráticos. Queríamos intervir no relacionamento deles, tanto que levamos todas as dificuldades para nós mesmos.
Condicionalmente, o procedimento é dividido em duas etapas:
Registro de caixa - os dados de um dispositivo específico são enviados ao Serviço de Impostos Federais e o número de registro é fornecido.
Fiscalização - ativação do caixa usando o número de registro do veículo atribuído pelo Serviço Fiscal Federal.
Primeiro, fomos aos nossos parceiros para trabalhar a primeira etapa com eles.
API para o Serviço Fiscal Federal
Não fomos os primeiros a pensar em automação de registro. Muitos disseram que estavam fazendo algo nesta área, que o desenvolvimento estava em andamento, mas ninguém tinha uma interface externa pronta. Um dos operadores de dados fiscais foi fornecido pela API - quase pronto para interagir com o imposto.
Naquela época, apenas cerca de 80 aplicativos de teste foram enviados usando o protocolo. Acreditávamos que em breve a interface funcionaria com capacidade total e começamos a implementação e teste nos “stubs”.
Indo para o prod, percebemos que nossos testes e a aplicação real são diferentes, como dia e noite. Os “stubs” que recebemos do OFD incluíam apenas simulação de sucesso e reproduziam um script de sucesso. De fato, alcançar esse "sucesso" não foi fácil.
Os resultados incluíram: aplicativos do lado de parceiros que não foram processados por vários dias, falta de feedback do Serviço Fiscal Federal e OFD, erros de assinatura e nosso "erro desconhecido" favorito. O protocolo do STF acabou por ser pouco documentado e, muitas vezes, respondeu com falhas não especificadas, para as quais não está claro o que os causou. Uma especificação clara ainda não existe. Então, na primeira vez em que testamos o protocolo, e, juntamente com o OFD, tomamos decisões sobre como responder a certas respostas do Serviço Tributário Federal em casos específicos.
API do Caixa
Enquanto parte da equipe estudou o comportamento dos sistemas do Serviço Fiscal Federal na prática, o trabalho não parou. Paralelamente, organizamos negociações com os fabricantes de caixas registradoras, convidando-os a trocar dados nossos para sua plataforma, da plataforma para a caixa registradora e na ordem inversa para configurar a fiscalização automática das caixas registradoras.
Selecionamos um par de soluções únicas universais. As mesas de dinheiro Evotor com telas sensíveis ao toque e DreamCas destinam-se aos clientes que estão acostumados com os bons e velhos botões e consideram a funcionalidade adicional redundante. Os modelos são diferentes: com e sem um scanner.
Se o OFD tinha sua própria API pronta, então para os prestadores de serviços da caixa registradora, ela precisava ser desenvolvida do zero. Caso contrário, é impossível fazer com que todos os dados de registro cheguem à caixa registradora automaticamente, sem entrada manual.
Os colegas conseguiram estabelecer a interação por meio de sua plataforma e logo estavam prontos: uma API para abrir a conta pessoal de um cliente e um protocolo proprietário para gerenciar uma caixa registradora.

Nossos fornecedores foram os primeiros a configurar o envio automático de informações de registro para a bilheteria. E em breve a API facilitará o cancelamento do registro e o registro das caixas registradoras.
Agora, quando estamos negociando com outros fornecedores de dinheiro, é precisamente o suporte dessa interface que se torna um dos principais requisitos.
Anatomia do registro automático
Depois que aprendemos a trabalhar com o Serviço Fiscal Federal e implementamos APIs com fornecedores para transferir dados de registro para o caixa, era hora de conectar tudo isso em um único sistema e estabelecer um procedimento de registro.
Essa é a tarefa de escolher a arquitetura correta, o que permitiria controlar o registro assíncrono das caixas registradoras no OFD, tanto com o Serviço Fiscal Federal como com o fornecedor. Como eles respondem às solicitações com atraso, o processo é demorado e possui um grande número de integrações com sistemas externos. Por causa disso, tivemos que escrever dois aplicativos em Java.
O serviço de trabalho se comunica diretamente com a CRF e os sistemas dos fabricantes de caixas registradoras. Por exemplo, enviamos dados do cliente ao OFD e esperamos receber um número de registro em resposta.
O serviço de trabalho pesquisa o status do trabalho em intervalos específicos. Ele pergunta novamente e pergunta novamente até que o resultado volte. O número de registro é salvo, o Job transfere o aplicativo para o próximo estágio e a fiscalização começa.
Se inicialmente monitoramos cuidadosamente a passagem de aplicativos e estudamos manualmente cada erro que o sistema deu, agora o processo é automatizado.
Determinamos imediatamente a causa do erro. E, no caso de grandes problemas, foram criados sistemas de monitoramento que registram anomalias que indicam falhas importantes no Serviço Fiscal Federal ou no OFD. O cliente, no entanto, descobre os problemas no único caso: se, em resposta a uma solicitação, recebermos um redirecionamento específico, uma recusa fundamentada de registro.
O segundo aplicativo, CashReg, é um sistema de processamento no qual um modelo de status é mantido, apresentado de forma relacional.
Foi desenvolvido com base nas APIs fornecidas pelos fornecedores e no CRF, e incluiu todas as transições possíveis para cada classe que participava do processo de registro. O modelo de status evita erros internos e elimina desvios do algoritmo de processamento de aplicativos padrão.
Portanto, se o aplicativo estiver no mesmo status por muito tempo, por exemplo, ele não receberá o número de registro por várias horas ou o CRF responderá com um estágio ou status incorreto do aplicativo, o CashReg relatará um erro.
Obviamente, era necessário um administrador para gerenciar o procedimento. Um grupo de suporte à decisão de negociação trabalha com ele, atendendo e acompanhando as caixas registradoras durante o registro. Agora, apenas dois funcionários estão envolvidos nisso, mas sua interface de trabalho não é complicada e o processo de preparação do caixa, graças à rejeição da entrada manual de dados, é simples. Assim, podemos dimensionar rápida e facilmente o departamento.
Todos os três componentes do sistema de registro não implicam altas cargas, porque são implantados em ambientes virtuais.
Como é o processamento do aplicativo
Tudo isso foi necessário para que o cliente, deixando um pedido em sua conta pessoal, alguns dias depois colocasse a caixa do caixa ativada pronta para trabalhar atrás do balcão.
Do ponto de vista da cozinha doméstica, a mágica do registro automático parece um pouco mais complicada. Deixando o aplicativo em sua conta pessoal, o cliente nos dá o consentimento legal para emitir uma assinatura eletrônica e passar por todo o procedimento em seu nome.
Informações sobre a empresa, dados de registro para uma loja específica e signatário (por exemplo, para o diretor geral) são extraídos das bases bancárias. Eles são atualizados no SPARK, passam pela pontuação e entram no sistema principal nas bilheterias.
Em seguida, um aplicativo é formado no CASHREG. É exibida como uma nova tarefa no painel de administração de um funcionário do grupo de suporte de soluções de negociação. Ele vê de qual caixa contábil e fiscal o cliente precisa. O funcionário encontra o dispositivo necessário no armazém, seleciona a unidade fiscal, codifica com código de barras seus números de série e confirma o aplicativo. Portanto, dispositivos específicos são anexados a ele, que serão entregues ao cliente. Nesse momento, o OFD recebe uma solicitação: "Formulário de inscrição para o registro de tal e tal caixa, para tal e qual empresa".
O arquivo enviado pelo OFD em resposta é autenticado por assinatura eletrônica e, usando a API OFD, é enviado às autoridades fiscais. Lá, o checkout recebe um número de registro.
Agora, o pacote completo de documentos no caixa chega ao fabricante da caixa registradora (sim, eles também estão envolvidos aqui). Ao mesmo tempo, uma tarefa aparece no painel do administrador - para fiscalizar o mesmo caixa. Isso significa que o funcionário simplesmente inclui o caixa. O sistema do fornecedor "vê" que o dispositivo está em contato e carrega todos os dados de registro necessários em sua memória automaticamente. Os erros com entrada manual são excluídos, os mesmos detalhes vão para o Serviço Fiscal Federal e o caixa.
O caixa imprime um relatório de registro - algo para o qual tudo foi iniciado. Os dados fiscais do relatório: data de impressão, assinatura, sinal fiscal servem como confirmação de que o caixa está pronto para o trabalho. Esses detalhes são novamente enviados ao OFD.
Imediatamente após o OFD gerar um relatório de registro, assinamos para o cliente e a bilheteria sai com o correio.

O OFD ainda não preparou um cartão de registro, mas você não pode esperar. Ele estará disponível em formato eletrônico na conta pessoal do cliente em dois a três dias.
Conclusão
Para implementar este projeto, cerca de vinte funcionários de todo o banco e muitos outros especialistas de nossos parceiros, DFD e vendedores de caixa foram distraídos de suas tarefas habituais, mas seus esforços não foram em vão.
O tempo médio para obter um número de registro, com exceção dos casos mais negativos, é de três horas. Em geral, todo o procedimento leva de 5 a 6 horas. 90% dos registros são bem-sucedidos. No momento, cerca de 1000 aplicativos já foram processados.
Em geral, como você entende, em nossa empresa adoramos esses casos, o que pode simplificar bastante a vida de um grande número de pessoas. Resolvendo esses problemas, você sente que está fazendo algo realmente útil.
PS Se você estiver interessado, pode ler como nós mesmos
lavamos nosso caixa eletrônico . Além disso, juntamente com protocolos de troca de dados.