Módulo satcfe.base

class satcfe.base.BibliotecaSAT(caminho, convencao=None)

Configura a localização da biblioteca que efetivamente acessará o equipamento SAT. A biblioteca deverá ser uma DLL (dynamic linked library, em sistemas Microsoft Windows) ou uma shared library em sistemas baseados no UNIX ou GNU/Linux.

Parâmetros:
  • caminho (string) – Caminho completo para a biblioteca SAT.
  • convencao (integer) – Opcional. Indica a convenção de chamada da biblioteca, devendo ser uma das constantes definidas em CONVENCOES_CHAMADA. Se não for informado, a convenção de chamada será decidida conforme a extensão do nome do arquivo, assumindo WINDOWS_STDCALL para as extensões .DLL ou .dll. Quaisquer outras extensões, assume a convenção de chamada STANDARD_C.
caminho

Caminho completo para a biblioteca SAT.

convencao

Convenção de chamada para a biblioteca SAT. Deverá ser um dos valores disponíveis na contante CONVENCOES_CHAMADA.

ref

Uma referência para a biblioteca SAT carregada.

class satcfe.base.FuncoesSAT(biblioteca, codigo_ativacao=None, numerador_sessao=None, encoding='utf-8', encoding_errors='strict')

Estabelece a interface básica para acesso às funções da biblioteca SAT.

A intenção é que esta classe seja a base para classes mais especializadas capazes de trabalhar as respostas, resultando em objetos mais úteis, já que os métodos desta classe invocam as funções da biblioteca SAT e retornam o resultado verbatim.

As funções implementadas estão descritas na ER SAT, item 6.1.

Item ER Função Método
6.1.1 AtivarSAT ativar_sat()
6.1.2 ComunicarCertificadoICPBRASIL comunicar_certificado_icpbrasil()
6.1.3 EnviarDadosVenda enviar_dados_venda()
6.1.4 CancelarUltimaVenda cancelar_ultima_venda()
6.1.5 ConsultarSAT consultar_sat()
6.1.6 TesteFimAFim teste_fim_a_fim()
6.1.7 ConsultarStatusOperacional consultar_status_operacional()
6.1.8 ConsultarNumeroSessao consultar_numero_sessao()
6.1.9 ConfigurarInterfaceDeRede configurar_interface_de_rede()
6.1.10 AssociarAssinatura associar_assinatura()
6.1.11 AtualizarSoftwareSAT atualizar_software_sat()
6.1.12 ExtrairLogs extrair_logs()
6.1.13 BloquearSAT bloquear_sat()
6.1.14 DesbloquearSAT desbloquear_sat()
6.1.15 TrocarCodigoDeAtivacao trocar_codigo_de_ativacao()
6.1.16 ConsultarUltimaSessaoFiscal consultar_ultima_sessao_fiscal()
Parâmetros:
  • biblioteca – Uma instância de BibliotecaSAT.
  • codigo_ativacao (string) – Código de ativação. Senha definida pelo contribuinte no software de ativação, conforme item 2.1.1 da ER SAT.
  • numerador_sessao – Opcional. Um callable capaz de gerar um número de sessão conforme descrito no item 6, alínea “a”, “Funções do Equipamento SAT”, da ER SAT. Se não for especificado, será utilizado um NumeroSessaoMemoria.
associar_assinatura(sequencia_cnpj, assinatura_ac)

Função AssociarAssinatura conforme ER SAT, item 6.1.10. Associação da assinatura do aplicativo comercial.

Parâmetros:
  • sequencia_cnpj – Sequência string de 28 dígitos composta do CNPJ do desenvolvedor da AC e do CNPJ do estabelecimento comercial contribuinte, conforme ER SAT, item 2.1.3.
  • assinatura_ac – Sequência string contendo a assinatura digital do parâmetro sequencia_cnpj codificada em base64.
Retorna:

Retorna verbatim a resposta da função SAT.

Tipo de retorno:
 

string

ativar_sat(tipo_certificado, cnpj, codigo_uf)

Função AtivarSAT conforme ER SAT, item 6.1.1. Ativação do equipamento SAT. Dependendo do tipo do certificado, o procedimento de ativação é complementado enviando-se o certificado emitido pela ICP-Brasil (comunicar_certificado_icpbrasil()).

Parâmetros:
  • tipo_certificado (int) – Deverá ser um dos valores satcomum.constantes.CERTIFICADO_ACSAT_SEFAZ, satcomum.constantes.CERTIFICADO_ICPBRASIL ou satcomum.constantes.CERTIFICADO_ICPBRASIL_RENOVACAO, mas nenhuma validação será realizada antes que a função de ativação seja efetivamente invocada.
  • cnpj (str) – Número do CNPJ do estabelecimento contribuinte, contendo apenas os dígitos. Nenhuma validação do número do CNPJ será realizada antes que a função de ativação seja efetivamente invocada.
  • codigo_uf (int) – Código da unidade federativa onde o equipamento SAT será ativado (eg. 35 para o Estado de São Paulo). Nenhuma validação do código da UF será realizada antes que a função de ativação seja efetivamente invocada.
Retorna:

Retorna verbatim a resposta da função SAT.

Tipo de retorno:
 

string

atualizar_software_sat()

Função AtualizarSoftwareSAT conforme ER SAT, item 6.1.11, Atualização do software do equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
bloquear_sat()

Função BloquearSAT conforme ER SAT, item 6.1.13. Bloqueio operacional do equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
cancelar_ultima_venda(chave_cfe, dados_cancelamento, *args, **kwargs)

Função CancelarUltimaVenda conforme ER SAT, item 6.1.4. Envia o CF-e de cancelamento para o equipamento SAT, que o enviará para autorização e cancelamento do CF-e pela SEFAZ.

Parâmetros:
  • chave_cfe – String contendo a chave do CF-e de venda que será cancelado (deve possuir o prefixo "CFe" seguido dos dígitos da chave do CF-e-SAT autorizado anteriormente).
  • dados_cancelamento – Uma instância de CFeCancelamento ou uma string contendo o XML do CF-e de cancelamento.
Retorna:

Retorna verbatim a resposta da função SAT.

Tipo de retorno:
 

string

comunicar_certificado_icpbrasil(certificado)

Função ComunicarCertificadoICPBRASIL conforme ER SAT, item 6.1.2. Envio do certificado criado pela ICP-Brasil.

Parâmetros:certificado (str) – Conteúdo do certificado digital criado pela autoridade certificadora ICP-Brasil.
Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
configurar_interface_de_rede(configuracao, *args, **kwargs)

Função ConfigurarInterfaceDeRede conforme ER SAT, item 6.1.9. Configuração da interface de comunicação do equipamento SAT.

Parâmetros:configuracao – Um objeto ConfiguracaoRede ou uma string contendo o XML com as configurações de rede.
Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
consultar_numero_sessao(numero_sessao)

Função ConsultarNumeroSessao conforme ER SAT, item 6.1.8. Consulta o equipamento SAT por um número de sessão específico.

Parâmetros:numero_sessao (int) – Número da sessão que se quer consultar.
Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
consultar_sat()

Função ConsultarSAT conforme ER SAT, item 6.1.5. Usada para testes de comunicação entre a AC e o equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 str
consultar_status_operacional()

Função ConsultarStatusOperacional conforme ER SAT, item 6.1.7. Consulta do status operacional do equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
consultar_ultima_sessao_fiscal()

Função ConsultarUltimaSessaoFiscal conforme ER SAT, item 6.1.16. Retorna a resposta da última sessão fiscal, isto é, do último comando fiscal (EnviarDadosVenda ou CancelarUltimaVenda) executado pelo equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
desbloquear_sat()

Função DesbloquearSAT conforme ER SAT, item 6.1.14. Desbloqueio operacional do equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
enviar_dados_venda(dados_venda, *args, **kwargs)

Função EnviarDadosVenda conforme ER SAT, item 6.1.3. Envia o CF-e de venda para o equipamento SAT, que o enviará para autorização pela SEFAZ.

Parâmetros:dados_venda – Instância de CFeVenda ou uma string contendo o XML do CF-e de venda.
Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
extrair_logs()

Função ExtrairLogs conforme ER SAT, item 6.1.12. Extração dos registros de log do equipamento SAT.

Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
gerar_numero_sessao()

Gera o número de sessão para a próxima invocação de função SAT.

teste_fim_a_fim(dados_venda, *args, **kwargs)

Função TesteFimAFim conforme ER SAT, item 6.1.6. Teste de comunicação entre a AC, o equipamento SAT e a SEFAZ.

Parâmetros:dados_venda – Instância de CFeVenda ou uma string contendo o XML do CF-e de venda de teste.
Retorna:Retorna verbatim a resposta da função SAT.
Tipo de retorno:
 string
trocar_codigo_de_ativacao(novo_codigo_ativacao, opcao=1, codigo_emergencia=None)

Função TrocarCodigoDeAtivacao conforme ER SAT, item 6.1.15. Troca do código de ativação do equipamento SAT. YouX.

Parâmetros:
  • novo_codigo_ativacao (str) – O novo código de ativação escolhido pelo contribuinte.
  • opcao (int) – Indica se deverá ser utilizado o código de ativação atualmente configurado, que é um código de ativação regular, definido pelo contribuinte, ou se deverá ser usado um código de emergência. Deverá ser o valor de uma das constantes satcomum.constantes.CODIGO_ATIVACAO_REGULAR (padrão) ou satcomum.constantes.CODIGO_ATIVACAO_EMERGENCIA. Nenhuma validação será realizada antes que a função seja efetivamente invocada. Entretanto, se opção de código de ativação indicada for CODIGO_ATIVACAO_EMERGENCIA, então o argumento que informa o codigo_emergencia será checado e deverá avaliar como verdadeiro.
  • codigo_emergencia (str) – O código de ativação de emergência, que é definido pelo fabricante do equipamento SAT. Este código deverá ser usado quando o usuário perder o código de ativação regular, e precisar definir um novo código de ativação. Note que, o argumento opcao deverá ser informado com o valor satcomum.constantes.CODIGO_ATIVACAO_EMERGENCIA para que este código de emergência seja considerado.
Retorna:

Retorna verbatim a resposta da função SAT.

Tipo de retorno:
 

string

Levanta:

ValueError – Se o novo código de ativação avaliar como falso (possuir uma string nula por exemplo) ou se o código de emergencia avaliar como falso quando a opção for pelo código de ativação de emergência.

Aviso

De acordo com a ER SAT, a função TrocarCodigoDeAtivacao requer que o novo código de ativação seja especificado duas vezes.

Este método ignora isso e apenas informa o mesmo código de ativação duas vezes na chamada da função. O entendimento é de que a confirmação do código de ativação é responsabilidade de outras camadas da aplicação (eg. interface com o usuário) e, portanto, fora do escopo desta biblioteca.

class satcfe.base.NumeroSessaoMemoria(tamanho=100)

Implementa um numerador de sessão simples, baseado em memória, não persistente, que irá gerar um número de sessão (seis dígitos) diferente entre os n últimos números de sessão gerados. Conforme a ER SAT, um número de sessão não poderá ser igual aos últimos 100 números.