Skip to main content

Impressão dos Extratos do CF-e-SAT

Project description

Projeto SATExtrato

Build status Development status Supported Python versions License Latest version Join the chat at https://gitter.im/base4sistemas/satcfe

This project prints receipts for fiscal electronic documents called “CF-e”. Those documents are created through a system called SAT-CF-e which is a system for autorization and transmission of fiscal documents, developed by Finance Secretary of state of São Paulo, Brazil. The entire project, including variable names, classes and methods, are written in Brazilian portuguese.


Este projeto realiza a impressão dos Extratos do CF-e-SAT em impressoras ESC/POS® e são normalmente impressos em mini-impressoras de cupons, térmicas ou de impacto, mas não limitado à elas. As impressoras, marcas e modelos suportados dependem dos modelos suportados no projeto PyESCPOS.

Para autorizar e transmitir documentos eletrônicos através da tecnologia SAT-CF-e é preciso comunicar-se com os equipamentos SAT. Para isso, dê uma olhada no Projeto SATCFe. Este projeto lida apenas com a impressão do extrato de documentos CF-e.

Exemplos de Uso

Há dois tipos de documentos CF-e-SAT: de venda e de cancelamento de uma venda anteriormente autorizada.

Extratos do CF-e de Venda

Para emitir um extrato de um CF-e de venda, você irá precisar do XML do CF-e-SAT de venda, que é o documento fiscal, e de uma impressora que seja compatível com o padrão ESC/POS®:

from escpos import SerialConnection
from escpos.impl.daruma import DR700
from satextrato import ExtratoCFeVenda

conn = SerialConnection.create('COM1:9600,8,1,N')
impressora = DR700(conn)
impressora.init()

with open(r'C:\CFe351702.xml', 'r') as fp:
    extrato = ExtratoCFeVenda(fp, impressora)
    extrato.imprimir()

Veja as implementações ESC/POS® disponíveis no projeto PyESCPOS

Extratos do CF-e de Cancelamento

Para emitir um extrato do CF-e-SAT de cancelamento, além do documento de cancelamento você também irá precisar do documento da venda, ao qual o documento de cancelamento se refere. Seguindo a mesma linha do exemplo anterior:

with open('CFe_1.xml', 'r') as fvenda, open('CFeCanc_1.xml', 'r') as fcanc:
    extrato = ExtratoCFeCancelamento(fvenda, fcanc, impressora)
    extrato.imprimir()

Wiki do Projeto

Visite o Wiki do projeto para saber como configurar as várias partes do extrato ou então para encontrar outros exemplos e mais informações.

Você é Bem-vindo para Ajudar

Primeiro, configure seu ambiente de desenvolvimento:

git clone git@github.com:base4sistemas/satextrato.git
cd satextrato
python -m venv .env
source .env/bin/activate
pip install -r requirements/dev.txt
tox

Executando Testes

Simplesmente execute pytest ou então tox para executar os testes contra várias versões de Python. Por padrão, as impressões dos extratos de testes serão enviadas para uma interface que realmente não faz nada (dummy).

Você pode mudar isso, realizando testes contra uma impressora ESC/POS real, usando as opções customizadas. Use pytest --help e procure pela seção custom options. Por exemplo, para imprimir em uma Daruma DR700 conectada à porta serial COM1:

pytest \
    --escpos-impl=escpos.impl.daruma.DR700 \
    --escpos-if=serial \
    --escpos-if-settings=COM1:9600,8,1,N,RTSCTS

Ou via tox, em uma impressora com interface ETH (ethernet):

tox -e py37 -- \
    --escpos-impl=escpos.impl.epson.TMT20 \
    --escpos-if=network \
    --escpos-if-settings=192.168.1.200:9100

Note que executar os testes de ambientes relacionados à interfaces de conexão específicos (eg. py37-serial), só faz sentido se você especificar também as configurações da interface via --escpos-if-* que irá configurar a interface onde provavelmente terá uma impressora real conectada ou, no mínimo, um emulador ou um null modem.

Isenção de Responsabilidade

Por favor, leia atentamente:

A Base4 Sistemas e os desenvolvedores envolvidos neste projeto, NÃO ASSUMEM NEM TEM QUALQUER RESPONSABILIDADE sobre os “Extratos do CF-e-SAT” gerados por esta biblioteca de código, seja diretamente ou através de uma APLICAÇÃO USUÁRIA. Use por sua própria conta e risco.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for satextrato, version 0.3
Filename, size File type Python version Upload date Hashes
Filename, size satextrato-0.3-py3-none-any.whl (25.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size satextrato-0.3.tar.gz (31.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page