Browse Source

Implementa NFse de Campinas

pull/100/head
Fábio Luna 8 years ago
parent
commit
ecb2841f1e
  1. 58
      pytrustnfe/nfse/campinas/__init__.py
  2. 30
      pytrustnfe/nfse/campinas/templates/ConsultaSeqRps.xsd
  3. 46
      pytrustnfe/nfse/campinas/templates/ConsultarLote.xsd
  4. 55
      pytrustnfe/nfse/campinas/templates/cancelar.xsd
  5. 88
      pytrustnfe/nfse/campinas/templates/consulta_notas.xsd
  6. 0
      pytrustnfe/nfse/campinas/templates/consultarLote.xml
  7. 19
      pytrustnfe/nfse/campinas/templates/consultarNFSeRps.xml
  8. 55
      pytrustnfe/nfse/campinas/templates/consultarNFSeRps.xsd
  9. 149
      pytrustnfe/nfse/campinas/templates/enviar.xsd
  10. 3
      setup.py

58
pytrustnfe/nfse/campinas/__init__.py

@ -6,27 +6,22 @@ import os
import suds
from lxml import etree
from pytrustnfe.xml import render_xml, sanitize_response
from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key
from pytrustnfe.nfse.assinatura import Assinatura
from pytrustnfe import HttpClient
from pytrustnfe.client import get_client
def _render_xml(certificado, method, **kwargs):
def _render(certificado, method, **kwargs):
path = os.path.join(os.path.dirname(__file__), 'templates')
xml_send = render_xml(path, '%s.xml' % method, True, **kwargs)
xml_send = etree.tostring(xml_send)
return xml_send
if method == "testeEnviar":
xml_send = render_xml(path, 'enviar.xml', True, **kwargs)
else:
xml_send = render_xml(path, '%s.xml' % method, False, **kwargs)
def _validate(method, xml):
path = os.path.join(os.path.dirname(__file__), 'templates')
schema = os.path.join(path, '%s.xsd' % method)
if type(xml_send) != str:
xml_send = etree.tostring(xml_send)
nfe = etree.fromstring(xml)
esquema = etree.XMLSchema(etree.parse(schema))
esquema.validate(nfe)
erros = [x.message for x in esquema.error_log]
return erros
return xml_send
def _send(certificado, method, **kwargs):
@ -34,19 +29,19 @@ def _send(certificado, method, **kwargs):
path = os.path.join(os.path.dirname(__file__), 'templates')
if method == "testeEnviar":
xml_send = render_xml(path, 'testeEnviar', **kwargs)
else:
xml_send = render_xml(path, '%s.xml' % method, False)
client = HttpClient(url)
xml_send = _render(path, method, **kwargs)
client = get_client(url)
pfx_path = certificado.save_pfx()
signer = Assinatura(pfx_path, certificado.password)
xml_signed = signer.assina_xml(xml_send, '')
if certificado:
cert, key = extract_cert_and_key_from_pfx(
certificado.pfx, certificado.password)
cert, key = save_cert_key(cert, key)
signer = Assinatura(cert, key, certificado.password)
xml_send = signer.assina_xml(xml_send, '')
try:
response = getattr(client.service, method)(xml_signed)
response, obj = sanitize_response(response)
response = getattr(client.service, method)(xml_send)
response, obj = sanitize_response(response.encode())
except suds.WebFault as e:
return {
'sent_xml': xml_send,
@ -62,18 +57,19 @@ def _send(certificado, method, **kwargs):
def enviar(certificado, **kwargs):
if kwargs['ambiente'] == 'producao':
return _send(certificado, 'enviar', **kwargs)
else:
return _send(certificado, 'testeEnviar', **kwargs)
return _send(certificado, 'enviar', **kwargs)
def teste_enviar(certificado, **kwargs):
return _send(certificado, 'testeEnviar', **kwargs)
def cancelar(certificado, ** kwargs):
return _send(certificado, 'cancelar', **kwargs)
def consulta_lote(certificado, **kwargs):
return _send(certificado, 'ConsultarLote', **kwargs)
def consulta_lote(**kwargs):
return _send(False, 'consultarLote', **kwargs)
def consultar_lote_rps(certificado, **kwarg):

30
pytrustnfe/nfse/campinas/templates/ConsultaSeqRps.xsd

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:tipos="http://localhost:8080/WsNFe2/tp"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://localhost:8080/WsNFe2/lote"
targetNamespace="http://localhost:8080/WsNFe2/lote">
<xs:import namespace="http://localhost:8080/WsNFe2/tp"
schemaLocation="Tipos.xsd" />
<xs:element name="ConsultaSeqRps">
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecalho">
<xs:complexType>
<xs:sequence>
<xs:element name="CodCid" type="tipos:tpCodCidade" minOccurs="1" maxOccurs="1"/>
<xs:element name="IMPrestador" type="tipos:tpInscricaoMunicipal" minOccurs="1" maxOccurs="1"/>
<xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1"/>
<xs:element name="SeriePrestacao" type="tipos:tpSeriePrestacao" minOccurs="0" maxOccurs="1"/>
<xs:element name="Versao" type="tipos:tpVersao" fixed="1" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

46
pytrustnfe/nfse/campinas/templates/ConsultarLote.xsd

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:tipos="http://localhost:8080/WsNFe2/tp"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://localhost:8080/WsNFe2/lote" targetNamespace="http://localhost:8080/WsNFe2/lote">
<xs:import namespace="http://localhost:8080/WsNFe2/tp" schemaLocation="Tipos.xsd"/>
<xs:element name="ReqConsultaLote">
<xs:annotation>
<xs:documentation>Schema utilizado para REQUISIçÂO de Consulta de Lote de RPS.</xs:documentation>
<xs:documentation>Este Schema XML é utilizado pelos Prestadores de serviços para consultarem Lote de RPS emitidos por eles.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecalho">
<xs:annotation>
<xs:documentation>Cabeçalho do pedido.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CodCidade" type="tipos:tpCodCidade" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Codigo da Cidade.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o CPF/CNPJ do Remetente autorizado a transmitir a mensagem XML.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Versao" type="tipos:tpVersao" fixed="1" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a Versão do Schema XML utilizado.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="NumeroLote" type="tipos:tpNumero" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Número do Lote a ser consultado.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

55
pytrustnfe/nfse/campinas/templates/cancelar.xsd

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by Marcel (DSF) -->
<xs:schema xmlns:tipos="http://localhost:8080/WsNFe2/tp"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns1="http://localhost:8080/WsNFe2/lote" targetNamespace="http://localhost:8080/WsNFe2/lote">
<xs:import namespace="http://localhost:8080/WsNFe2/tp"
schemaLocation="Tipos.xsd" />
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema_v1.01.xsd" />
<xs:element name="ReqCancelamentoNFSe">
<xs:annotation>
<xs:documentation>Schema utilizado para Cancelamento de NFSe.</xs:documentation>
<xs:documentation>Este Schema XML é utilizado pelos Prestadores de serviços cancelarem NFSe emitidas por eles.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecalho">
<xs:annotation>
<xs:documentation>Cabeçalho do pedido.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CodCidade" type="tipos:tpCodCidade" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Codigo da Cidade.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o CPF/CNPJ do Remetente autorizado a transmitir a mensagem XML.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="transacao" type="xs:boolean" default="true" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe se as NF-e a serem canceladas farão parte de uma mesma transação. True - As NF-e só serão canceladas se não ocorrer nenhum evento de erro durante o processamento de todo o lote; False - As NF-e aptas a serem canceladas serão canceladas, mesmo que ocorram eventos de erro durante processamento do cancelamento de outras NF-e deste lote.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Versao" type="tipos:tpVersao" fixed="1" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a Versão do Schema XML utilizado.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Lote" type="tipos:tpLoteCancelamentoNFSe">
<xs:annotation>
<xs:documentation>Detalhe do pedido de cancelamento de NFSe. Cada detalhe deverá conter a Chave de uma NFSe e sua respectiva assinatura de cancelamento.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

88
pytrustnfe/nfse/campinas/templates/consulta_notas.xsd

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tipos="http://localhost:8080/WsNFe2/tp"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns1="http://localhost:8080/WsNFe2/lote" targetNamespace="http://localhost:8080/WsNFe2/lote">
<xs:import namespace="http://localhost:8080/WsNFe2/tp"
schemaLocation="Tipos.xsd" />
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema_v1.01.xsd" />
<xs:element name="ReqConsultaNotas">
<xs:annotation>
<xs:documentation>Schema utilizado para REQUISIÇAO de consultas
de notas que foram enviadas por lote de RPS.</xs:documentation>
<xs:documentation>Este Schema XML é utilizado pelos prestadores
de serviços para consultas de notas que foram enviadas por lote de
RPS.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecalho">
<xs:annotation>
<xs:documentation>Cabeçalho do pedido.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CodCidade" type="tipos:tpCodCidade"
minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Codigo da Cidade.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ"
minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o CPF/CNPJ do Remetente
autorizado a transmitir a mensagem XML.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="InscricaoMunicipalPrestador" type="tipos:tpInscricaoMunicipal"
minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a Inscrição Municipal do
Prestador</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dtInicio" type="xs:date" minOccurs="1"
maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a data de início do período
transmitido (AAAA-MM-DD).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dtFim" type="xs:date" minOccurs="1"
maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a data final do período
transmitido (AAAA-MM-DD).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="NotaInicial" type="tipos:tpNumero"
minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Numero da nota inicial da consulta. Ou
seja a consulta ira retornar as notas no periodo, onde o
numero da nota seja maior ou igual a esse numero. O retorno
não pode ultrapassar 500Kb. Caso não tenha o numero da nota,
passar o valor Zero, será retornado as notas geradas no
periodo até o limite de 500kb.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Versao" type="tipos:tpVersao"
minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a Versão.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="Id" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element ref="ds:Signature" minOccurs="0"
maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

0
pytrustnfe/nfse/campinas/templates/ConsultarLote.xml → pytrustnfe/nfse/campinas/templates/consultarLote.xml

19
pytrustnfe/nfse/campinas/templates/consultarNFSeRps.xml

@ -1,19 +0,0 @@
<ns1:ReqConsultaNFSeRPS xmlns:ns1="http://localhost:8080/WsNFe2/lote"
xmlns:tipos="http://localhost:8080/WsNFe2/tp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://localhost:8080/WsNFe2/lote http://localhost:8080/WsNFe2/xsd/ReqConsultaNFSeRPS.xsd">
<Cabecalho>
<CodCidade>{{ consulta.cidade }}</CodCidade>
<CPFCNPJRemetente>{{ consulta.cpf_cnpj }}</CPFCNPJRemetente>
<transacao>true</transacao>
<Versao>1</Versao>
</Cabecalho>
<Lote Id="lote:{{ consulta.lote }}">
<RPSConsulta>
<RPS Id="rps:{{ consulta.rps_id }}">
<InscricaoMunicipalPrestador>{{ consulta.inscricao_municipal }}</InscricaoMunicipalPrestador>
<NumeroRPS>{{ consulta.rps_id }}</NumeroRPS>
<SeriePrestacao>{{ consulta.serie_prestacao }}</SeriePrestacao>
</RPS>
</RPSConsulta>
</Lote>
</ns1:ReqConsultaNFSeRPS>

55
pytrustnfe/nfse/campinas/templates/consultarNFSeRps.xsd

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by Marcel (DSF) -->
<xs:schema xmlns:tipos="http://localhost:8080/WsNFe2/tp"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns1="http://localhost:8080/WsNFe2/lote" targetNamespace="http://localhost:8080/WsNFe2/lote">
<xs:import namespace="http://localhost:8080/WsNFe2/tp"
schemaLocation="Tipos.xsd" />
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema_v1.01.xsd" />
<xs:element name="ReqConsultaNFSeRPS">
<xs:annotation>
<xs:documentation>Schema utilizado para Consulta de NFSe.</xs:documentation>
<xs:documentation>Este Schema XML é utilizado pelos Prestadores de serviços consultarem NFSe emitidas por eles.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecalho">
<xs:annotation>
<xs:documentation>Cabeçalho do pedido.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CodCidade" type="tipos:tpCodCidade" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Codigo da Cidade.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o CPF/CNPJ do Remetente autorizado a transmitir a mensagem XML.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="transacao" type="xs:boolean" default="true" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe se as NF-e a serem consultadas farão parte de uma mesma transação. Informe sempre True.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Versao" type="tipos:tpVersao" fixed="1" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe a Versão do Schema XML utilizado.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Lote" type="tipos:tpLoteConsultaNFSe" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Detalhe do pedido de consulta de NFSe. Cada detalhe deverá conter a Chave de uma NFSe e sua respectiva assinatura de consulta.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

149
pytrustnfe/nfse/campinas/templates/enviar.xsd

@ -1,149 +0,0 @@
<xs:schema xmlns:tipos="http://localhost:8080/WsNFe2/tp"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:ns1="http://localhost:8080/WsNFe2/lote" targetNamespace="http://localhost:8080/WsNFe2/lote">
<xs:import namespace="http://localhost:8080/WsNFe2/tp"
schemaLocation="Tipos.xsd" />
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema_v1.01.xsd" />
<xs:element name="ReqEnvioLoteRPS">
<xs:annotation>
<xs:documentation>Schema utilizado para envio de lote de RPS.</xs:documentation>
<xs:documentation>Este Schema XML é utilizado pelos prestadores
de serviços para substituição em lote de RPS por NFS-e.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Cabecalho">
<xs:annotation>
<xs:documentation>Cabeçalho do Lote.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CodCidade" type="tipos:tpCodCidade" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Codigo da Cidade no Padrão SIAFI.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
CNPJ do contribuinte ou CPF do Responsável Legal autorizado a entregar o lote.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RazaoSocialRemetente" type="tipos:tpRazaoSocial" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe o Nome do Contribuinte ou do Responsável Legal
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="transacao" type="xs:boolean"
default="true" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe se os RPS a serem
substituídos por
NF-e farão
parte de uma mesma transação.
True - Os RPS só serão
substituídos por NF-e se não
ocorrer nenhum evento de erro
durante o processamento de todo
o lote; False - Os RPS válidos
serão substituídos por NF-e,
mesmo que ocorram eventos de
erro durante processamento de
outros RPS deste lote. Por definição
estão sendo aceitos apenas lotes com RPS válidos,
o lote é
recusado caso haja algum RPS inválido.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dtInicio" type="xs:date" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe a data de início do
período
transmitido
(AAAA-MM-DD).
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dtFim" type="xs:date" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe a data final do período
transmitido
(AAAA-MM-DD).
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="QtdRPS" type="tipos:tpQtdRpsLote" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe o total de RPS contidos
na mensagem
XML. OBS: O xml não pode ultrapassar o tamanho maximo de 500kb.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ValorTotalServicos" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe o valor total dos
serviços prestados
dos RPS
contidos na mensagem XML.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ValorTotalDeducoes" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe o valor total das
deduções dos RPS
contidos na
mensagem XML.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Versao" type="tipos:tpVersao" fixed="1" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Informe a Versão do Schema XML
utilizado.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MetodoEnvio" type="tipos:tpMetodoEnvio"
minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe o Método de Envio</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VersaoComponente" type="tipos:tpVersaoComponente"
minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Versão da DLL de envio de lote. Não é necessário informar esse campo caso não utilize a DLL.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Lote" type="tipos:tpLote" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>Informe os RPS a serem substituidos por
NF-e.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

3
setup.py

@ -1,7 +1,7 @@
# coding=utf-8
from setuptools import setup, find_packages
VERSION = "0.9.2"
VERSION = "0.9.3"
setup(
name="PyTrustNFe3",
@ -27,6 +27,7 @@ later (LGPLv2+)',
'nfe/templates/*xml',
'nfe/fonts/*ttf',
'nfse/paulistana/templates/*xml',
'nfse/campinas/templates/*xml',
'nfse/ginfes/templates/*xml',
'nfse/simpliss/templates/*xml',
'nfse/betha/templates/*xml',

Loading…
Cancel
Save