Cfe SAT

927 views
Skip to first unread message

Gustavo Ota

unread,
Aug 23, 2018, 4:58:50 PM8/23/18
to NFePHP
Ola, gostaria de saber se ja existe um repositorio para SAT e se nao. Gostaria de tentar iniciar um.

Roberto Machado

unread,
Aug 23, 2018, 5:01:42 PM8/23/18
to nfe...@googlegroups.com
Não não existe mas com qual linguagem pretende faze-lo ??

Um SAT@ECF é um equipamento "LOCAL" conectado via USB, e que deve operar mesmo de a INTERNET cair.
Então terá de usar JAVA, Electron ou alguma outra linguagem desktop para fazer isso.

Roberto

Gustavo Ota

unread,
Aug 23, 2018, 5:13:14 PM8/23/18
to nfe...@googlegroups.com
Sim a intencao e posso estar falando besteira, e consumir a dll dos SAT no php criando um instalador para receber as conexoes locais apache+php.  

Caso isso for impossivel. Gostaria ir ate onde o PHP alcanca com facilidades e comunicar via sockets ou txt com aplicaçoes externas (ACBR).

Na verdade o primeiro passo é gerar o xml a ser enviado ao SAT. Como o make do sped-nfe faz e gerar a impressao e pdf como o sped-da faz. Atualmente tenho uma aplicaçao que usa o ACBR Monitor (Object-Pascal)

Pretendo com minha aplicacao rodar tudo um puro php na medida do possivel e vejo que o sped-php e o framework mais proximo e o caminho para que isso ocorra.

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Roberto Machado

unread,
Aug 23, 2018, 5:21:43 PM8/23/18
to nfe...@googlegroups.com
Olha;

O SAT é equipamento de retaguarda (em SP) onde não é permitido o uso de outro tipo de contingência.

PHP é linguagem de servidor e se sua aplicação roda na nuvem não tem como o PHP acessar o SAT!!!
ISTO É UM FATO!!

Portanto não vejo como usar o PHP para acessar um dispositivo pela internet e pior se a internet estiver fora do ar.

Acessar DLL é outra coisa fora de cogitação, para o PHP acessar uma DLL (arrghh) são necessárias duas coisas.

1 - O PHP TEM que estar rodando localmente, na maquina que tem o SAT conectado !
2 - terá de haver um modulo criado para o PHP (usando C++) para acessar a DLL

Ou você vai para JAVA, .NET, Electron, Delphi etc... ou só vai perder o seu tempo

Roberto

Roberto Machado

unread,
Aug 23, 2018, 5:35:28 PM8/23/18
to nfe...@googlegroups.com
Complementando.

Se sua intenção é usar em SP, e tendo que isso (SAT) é exclusivo para NFCe (modelo 65) é muito mais interessante, montar um PDV (ou frente de caixa).

Esse software pode gerar NFCe (via SAT) sem a necessidade de conexão com a internet.

Imagine a seguinte situação:

- um caixa de mercado 
- 12 pessoas na fila 
- a internet cai 

Então, essa caixa tem que continuar a funcionar (com uma cópia local de base de dados para emissão dos cupons), senão o pessoal endoida.

Um PDV, deve ter a capacidade de sincronizar suas emissões com o servidor centrar assim que a internet for restaurada e atualizar suas tabelas de dados de produtos.

Enquanto a internet, a SEFAZ e o servidor (na nuvem) estiverem no ar, o PDV usa-os para emitir NFCe (mod 65), mas caso algum desses saia do ar. O PDV usará exclusivamente o SAT.
Essa operação é interrupta (a menos que o computador ou o SAT quebre).

Se você quer programar usando HTML e javascript, sugiro fazer um PDV em Electron Framework, usa tecnologias conhecidas e relativamente fáceis, permite acesso as portas locais e uso de angular, vue, etc.
Pode conetar a impressora termica, uma balança digital etc.

Roberto

Thiago Smart Sistemas

unread,
Aug 23, 2018, 5:36:05 PM8/23/18
to nfe...@googlegroups.com
Gustavo,

Por aqui utilizamos uma API que roda na máquina do cliente Ruindows (na verdade uma WebAPI em C#).
E com o PHP fazemos chamada AJAX para essa API que roda em um servidor IIS portable.
Espero que essas informações ajudem em algo.

Att.



--

Gustavo Ota

unread,
Aug 23, 2018, 5:50:23 PM8/23/18
to nfe...@googlegroups.com
Pois é Roberto.

No cenário atual é instalado apache+php+mariadb em cada (PDV), onde este em rede local se comunica em "Replicação" com um servidor "MASTER" na mesma rede local e por fim o Servidor "MASTER" local se comunica via internet com outro Servidor que se conecta com todo mundo que tem internet.

Com este cenário eu não preciso de internet para que o sistema funcione, todo (PDV) roda em localhost,e sim uso umaalternativa não em Electron e sim em Object Pascal para comunicar-se com os Hardwares.

E se eu quisesse colocar em Nuvem? Sim seria uma catástrofe. É possivel, mas não é recomendável.

Pude perceber que por mais que tenhamos SAT no projeto, a intenção da minha pergunta e até então sanar algumas dúdidas de até onde o SPED-PHP irá estão sendo respondidas. Só fiquei com uma pulga atrás da orelha, pois a palavra SPED envolve bastante coisas que chegam a esse ponto, "Até onde o PHP vai?" De qualquer forma, como estou usando o SPED-NFE achei que seria interessante escrever ou até mesmo adicionar algo que seja inteligente e possivel, e mais uma vez acredito que tenho perdido meu tempo em redundância por insistência rs.

Valeu!

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
Att.
Gustavo Ota - Desenvolvedor de Sistemas
CNPJ: 10.868.122/0001-58 - Valio Informática
Tel: 13 99882-1459 Vivo / WhatsApp
-------------------------------------------------------------------------------------------------------------------------------//
   


Gustavo Ota

unread,
Aug 23, 2018, 5:51:23 PM8/23/18
to nfe...@googlegroups.com
Valeu Lucas, vou instalar o Skype aqui, eu só tenho o ICQ rs.

Lucas Augusto Milanes

unread,
Aug 23, 2018, 5:52:43 PM8/23/18
to nfe...@googlegroups.com
Oloco kkk

Lucas Augusto Milanes

Roberto Machado

unread,
Aug 23, 2018, 5:54:33 PM8/23/18
to nfe...@googlegroups.com
Não quero por muitas virgulas nas suas ideias.
Eu pessoalmente nunca colocaria PHP rodando em desktop (sei que muitos o fazem).

Então essa forma de usar é ESTRANHA, desconsertante e problemática  para mim, apenas isso.

Roberto 

Gustavo Ota

unread,
Aug 23, 2018, 6:36:27 PM8/23/18
to nfe...@googlegroups.com
É, Roberto...

Também concordo que é estranho, por cima cito Front End e Back End a velha história e antes que eu comece a filosofar vou parar, parei rs. Em resumo, desculpe, mas vou persistir mais um pouquinho.

A posprint é "quase" que um passo para tentar comunicar com o Hardware, sendo assim a impressora não deve ser instalada no DATA CENTER e sim na maquina Cliente? Com este principio no projeto, por ser um preguiçoso e achar que tudo tem que ser possivel em PHP, isso não seria quase que um incentivo para resolver a questão do SAT? Mesmo que necessite de outras linguagens, o Projeto tem crescido bastante. É interessante para o projeto comunicar-se com Hardwares também?

Vejo o Front End que é o prejto do SPED-Emissor, uma interface para completar ainda mais as NFe's. 
O SPED-eSocial, onde se houvesse um Front End para ele teriamos que pensar em automação com Leitores de Biometria Digital, que esses também precisam de uma aplicação instalada no Desktop para enviar informações para o Servidor (Vide http://www.dimep.com.br/kairos/).

Em resumo, é de interesse do Projeto tentar algo abrangente assim? 



--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Gustavo Ota

unread,
Aug 23, 2018, 6:46:44 PM8/23/18
to nfe...@googlegroups.com
Obrigado Thiago,

As vezes você não se sente que esta fazendo uma gambiarra? hahahah eu me sinto. rs

Eng Helder Ferreira.

unread,
Aug 23, 2018, 6:51:29 PM8/23/18
to nfe...@googlegroups.com
Eu trabalho desktop com PHP-GTK e em um servidor com o Speed-nfe, e já fiz um meio de imprimir usando o acbrmonitor mas nunca tive um impressor fiscal para testar.

Thiago Smart Sistemas

unread,
Aug 23, 2018, 7:01:51 PM8/23/18
to nfe...@googlegroups.com
Gustavo,

Prefiro pensar mais como ajuste para funcionamento...rsrs
Mas funciona legal, tem integrado com SAT...Impressoras...Coletora de dados...dá mais diversas marcas e o melhor toda essa API como uma serviço do SO.

Pesquisei bastante em algo direto com PHP na época cheguei até falar com o Roberto ele deve lembrar disso...kkk

Mas hoje funciona legal, a ideia é a mesma do funcionamento do projeto Qz.io.

Agora se conseguir algo direto com PHP ou uma melhor solução, estarei por aqui  😉

Valeu.

Abraço.

Gustavo Ota

unread,
Aug 23, 2018, 7:06:52 PM8/23/18
to nfe...@googlegroups.com
Grande Helder,

Já me remoí tanto para usar o PHP-GTK, mas a inatividade do projeto me fez desistir. Gostei muito do ACBRmonitor e esta foi a solução mais interessante e rápida que encontrei, eu evito muito usar ele, mas ate mesmo para fazer o NFePHP trabalhar com certificados A3 ele foi crucial por aqui. Eu evito trabalhar com ECFs, como sou do estado de São Paulo, meu foco tem sido o SAT. E segundo as fofocas, acredito que o SAT tende a ir para todo o Brasil acabando com as ECFs.

A impressão pode ser feita pelo ACBR monitor sim, e é muito eficaz, mas como eu disse, eu gostaria de saber se poderemos de certa forma fazer com que o NFePHP.org que está tomando nome de Projetos SPED, se o projeto irá abranger e se estender até PARTES de automação comercial, gestão administrativa, contábil... Como tudo que envolve o Projeto SPED em sí.

Carlos Martins

unread,
Aug 24, 2018, 7:30:34 AM8/24/18
to nfe...@googlegroups.com
Se servir como exemplo, aquele software de gestão MarketUp que é online e fornecido de graça, para emitir Cfe-SAT eles instalam na máquina do cliente um observer desenvolvido em .net que recebe a requisicao emite o Cfe e envia a resposta pro software online. Toda a solucao deles é .net asp. Lembre-se que no caso da Cfe por lei elas precisam estar disponíveis na máquina do cliente depois de emitidas por cinco anos.

Att.

Carlos Martins

lu...@bitis.com.br

unread,
Aug 24, 2018, 8:04:26 AM8/24/18
to NFePHP
Concordo com você, Roberto.

Usar php localmente na maquina do cliente é, no mínimo, estranho. 

Temos também a necessidade de construir a integração com os esquipamentos S@T, para nós é mais viável usar NodeJS com Electron, lendo as DLLs do S@T com a lib node-ffi.

Porém, a parte mais complicada é realizar a geração do XML e a Impressão da Danfce...

Estamos dispostos a criar uma lib em JavaScript para prover a solução destes problemas, porem, acreditamos que haja uma incompatibilidade técnica, pois seria necessário gerar arquivos XML pelo NodeJS, o que é um tanto quanto exótico, para não dizer impossível!

Roberto Machado

unread,
Aug 24, 2018, 8:13:23 AM8/24/18
to nfe...@googlegroups.com
Luiz;

Tudo é uma questão de foco, suor, persistência e conhecimento.

É possível sim gerar e ler os XML a partir do NodeJS.
Além disso, o XML do SAT é muito mais simples que o da NFe, e não requer a assinatura para ser usado (o SAT assina). 

Para a impressão usando os comandos ESC/POS também.
Logicamente, haverá esforço para obter os resultados esperados e poder interagir com a miríade de equipamentos diferentes disponíveis no mercado, mas nada que não possa ser feito.

Eu apostaria no Electron como uma base bem sólida para criar isso. 

Agora faze-lo em OpenSouce, requer um grupo muito envolvido, coeso e dedicado, pois é necessário o acesso a esses equipamentos (SAT e impressoras) para faze-lo funcionar de forma correta.   

Roberto

Gustavo Ota

unread,
Aug 25, 2018, 10:59:05 PM8/25/18
to NFePHP
Bom Pessoal obrigado por todas as respostas, gostaria de adicionar aqui a minha experiencia com o node.js e o Electron nesses ultimos 3 dias. E como eu acredito que muitos persistem nessa história, normalmente nós que não temos muita experiencia.

Consegui comunicação com o SAT via electron, vou deixar alguns passos aqui para quem nunca foi para esse lado da força, o teste que recomendo é com o emulador SAT da SEFAZ, e quero colocar aqui para deixar alguma explicação prática.
Siga as instruções de instalação: https://portal.fazenda.sp.gov.br/servicos/sat/Downloads/emulador_off_line_v2_5_28.zip

Em meu caso, como uso o windows, tive que instalar a versão 32bits do Node.js, pois a DLL do emulador da SEFAZ é disponibilizada apenas em 32bits, ou eu não encontrei uma de 64bits, porque 32bits? Cara, perdi um tempinho tentando rodar 32bits no 64bits hauhuauha, esquece essa vida. Instala o node.js 32 bits.
Download do Node.js https://nodejs.org/en/download/

Crie uma estrutura de diretorios
C:/electron/resources/app

Acesse via CMD o diretorio app. (Para consumir a DLL no node.js me recomendaram o node-ffi e então eu usei ele:)
Digite no CMD> npm install ffi
> npm install ref

Recomendo uma leitura sobre o node-ffi https://github.com/node-ffi/node-ffi 

Crie um arquivo na pasta app nomeando como main.js (ou qqr nome que vc queira dar pra ele, ex: exemplo,js) com o seguinte codigo:

//------------------------------ inicio
const ffi = require('ffi'); // Carrega a modulo ffi
const ref = require('ref'); // Carrega...

var sat = ffi.Library('SAT.dll', { // SAT.dll é a DLL que a sefaz disponibiliza, deixa na mesma pasta (diretorio) ou coloque o caminho da dll
    'ConsultarSAT': ['string', ['int']], // Comando para constultar o SAT se esta operante, string pois o que retorna é string, e o int é porque vc envia um inteiro qué é um numero                                                            // de sessao enviado pelo Aplicativo Comercial (você)
    'ConsultarStatusOperacional': ['string', ['int', 'string']] // Deixei como exemplo aqui, string pois a resposta é uma string, alias acredito que todos são string, int pois vc envia 
                                                                                       // o numero de sessao e string é o código de ativação do SAT
});
var session = Math.floor(Math.random() * 999999); // Isso aí gera o um numero inteiro aleatorio de 6 digitos
var ConsultarSAT = sat.ConsultarSAT(session); // faço a consulta
console.log(ConsultarSAT); // E aí a resposta
//--------------------- fim


Se der tudo certo a resposta será algo parecido com isso:
815113|08000|SAT-CFe em opera??o.||

O que eu não queria fazer era ter que aprender mais uma liguagem e começar algo do zero, tenho um PDV construido as pressas que roda com Codeigniter jQuery Bootstrap mariaDB e bla bla bla. Percebi que a curva de aprendizado do node.js é curta e para quem esta acostumado com o composer melhor ainda.

Como a Veterano Roberto expressa, realmente o PHP não foi feito pra isso( mas gente sabe disso, mas insiste rs.)

Adaptar é gambiarra rs. O node se entende melhor com C++, .NET e etc pelo pouco que li. e quanto o Electron, o electron é um Chromium Minimal, funciona como um tipo de renderizador. O electron pode empacotar sua aplicação para distribuição, enfim. Não vou entrar a fundo nisso. o que eu queria mostrar é a comunicação com o SAT.

Decidi que o PHP vai ficar apenas no backend (retaguarda) pois ali ele é perfeito como api ou webservice e os PDVs irão migrar para o node.js, mas porque o node e não JAVA ou .NET ou Object Pascal? Preciso economizar com mão de obra e como estou começando (ou recomeçando), talvez em um  futuro o tal PDV migre para uma linguagem DESKTOP quando puder ter programadores em cada área e sua especialização. Ou o DESKTOP deixará de exisistir, sei lá  hehehe.

Ainda quero usar o PHP para gerar o XML do SAT? Não, não compensa o trabalho de carregar de um para outro PHP <=> node.js
E se eu tiver que gerar NFe no PDV? Ou eu faço isso em node.js, ou eu mando pro servidor fazer isso pra mim, enviar para o servidor, e supondo uma queda de rede local ou internet, irá gerar problemas, precisa de internet para NFe? Bom, aí tem a contigência offline e bla bla bla.

Bom, é mais ou menos por aí, e se mais uma vez eu estiver fazendo cácá, Me salve! Valeu!

Roberto Machado

unread,
Aug 26, 2018, 8:11:15 AM8/26/18
to nfe...@googlegroups.com
Gustavo;

Parabens pela sua iniciativa e obrigado pelas informações, que são bastante uteis para quem tentar se aventurar em um novo mundo (com o Electron).
Mas como você disse, dá para aproveitar a parte da interface gráfica que você já tem no seu PDV, e não é complicado montar o xml do SAT no node.
Sucesso para você e se descobrir mais coisas interessantes na sua empreitada ou se pensar em criar algo com e para a comunidade, darei o maior apoio que puder.

Abraço
Roberto 

Reply all
Reply to author
Forward
0 new messages