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

Projeto SATExtrato

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 variables, methods and class names, as well as documentation, 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: documentos de venda e documentos de cancelamento de uma venda anteriormente autorizada.

Extratos do CF-e de Venda

Para emitir um extrato de um CF-e-SAT de venda, você irá precisar do arquivo XML do CF-e-SAT de venda, que é o próprio documento fiscal, e de uma impressora que seja suportada pelo projeto PyESCPOS:

from escpos import SerialConnection
from escpos.impl.epson import TMT20
from satextrato import ExtratoCFeVenda

conn = SerialConnection.create('COM1:9600,8,1,N')
impressora = TMT20(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 de um CF-e-SAT de cancelamento você irá precisar de dois arquivos XML: o documento de venda e o documento de cancelamento. Seguindo a mesma linha do exemplo anterior:

cfe_venda = r'C:\CFe_venda.xml'
cfe_canc = r'C:\CFe_cancelamento.xml'
with open(cfe_venda, 'r') as fvenda, open(cfe_canc, '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 e execute os testes:

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

Mais Sobre 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 printer).

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

pytest \
    --escpos-impl=escpos.impl.bematech.MP2800TH \
    --escpos-if=serial \
    --escpos-if-settings=COM1:9600,8,1,N,RTSCTS \
    --config-file=/home/user/satextrato.ini

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

tox -e py39 -- \
    --escpos-impl=escpos.impl.controlid.PrintIdTouch \
    --escpos-if=network \
    --escpos-if-settings=192.168.1.200:9100 \
    --config-file=/home/user/satextrato.ini

Note que executar os testes de ambientes relacionados à interfaces de conexão específicos (eg. py39-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.

Metadata

Release files for satextrato 0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for satextrato 0.4
File Size Uploaded
satextrato-0.4.tar.gz 34.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for satextrato 0.4
File Interpreter ABI Platform
satextrato-0.4-py3-none-any.whl Python 3 none any Details

Total release size: 60.7 kB

Release files / satextrato-0.4.tar.gz

Download URL satextrato-0.4.tar.gz
Size 34.1 kB
Tags Source
SHA-256 checksum
How to use checksums
94a1feb3c5ead9ca27d7940592ce71a4726c6e611cd7f79b74d94bc52e8c0ab6
BLAKE2b-256 checksum
How to use checksums
5e8c98f6092685c5192333d191a51d4a6b76e3f891456e0a0835be494e899378
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.7

Release files / satextrato-0.4-py3-none-any.whl

Download URL satextrato-0.4-py3-none-any.whl
Size 26.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b58a20e0937e9793027f1d04720be97b4dfb027b6a3d5a8ef3c5cccd3c75bc69
BLAKE2b-256 checksum
How to use checksums
2733f249a99a391611a8dd8dea5b4f0d8caa0d318c7b2e64a7ffaf55f0c86f8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.7

Release history Release notifications | RSS feed

This release

0.4 This release

2 release files

0.3

2 release files

0.2

1 release file

0.1

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page