Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

intial SOAP support for NF-e #121

Open
wants to merge 38 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
9a958fe
initial NFe servers scraper/scraped URLs
rvalyi Mar 22, 2025
49fb3df
better scraper
rvalyi Mar 22, 2025
a97def0
test NF-e servers
rvalyi Mar 22, 2025
c33bb1b
add SOAP test deps
rvalyi Mar 22, 2025
9d3bfca
initial generic WSDL downloader
rvalyi Mar 22, 2025
ecd857b
initial NF-e WSDL downloader
rvalyi Mar 22, 2025
7419601
refactor: reusable servers_scrapers
rvalyi Mar 22, 2025
f986ba9
add CT-e scraper/servers
rvalyi Mar 22, 2025
b2d639d
refactor: reusable wsdl_downloader + generate SOAP bindings option
rvalyi Mar 22, 2025
e5dd8cf
add NF-e WSDL files
rvalyi Mar 22, 2025
dda54bd
add NF-e SOAP bindings
rvalyi Mar 22, 2025
a3a0dab
add NF-e initial SOAP client
rvalyi Mar 22, 2025
156862a
scoped files with v4_0; cleanup
rvalyi Mar 23, 2025
786db8e
clean up servers scraper
rvalyi Mar 23, 2025
99af2f7
fixed SOAP bindings generation
rvalyi Mar 23, 2025
aad719e
proper NFe SOAP bindings
rvalyi Mar 23, 2025
376e354
NFe SOAP client clean up
rvalyi Mar 23, 2025
d7fc2c2
add NFe SOAP client test
rvalyi Mar 23, 2025
70d0b7c
clean up CTe client files layout
rvalyi Mar 23, 2025
b4e8481
add brazil-fiscal-client test dep
rvalyi Mar 23, 2025
17d58b1
add decorator test dep
rvalyi Mar 23, 2025
6cc6879
added missing NFe client test fixture
rvalyi Mar 23, 2025
03afde8
mypy checker uses types-requests
rvalyi Mar 24, 2025
ee5ce65
pre-commit fixes
rvalyi Mar 24, 2025
7fdf016
don't format scraped servers list
rvalyi Mar 24, 2025
fdfbaf1
py3.8 compat
rvalyi Mar 24, 2025
5e1d42b
pre-commit fixes
rvalyi Mar 24, 2025
bb0d22c
pre-commit fixes
rvalyi Mar 24, 2025
3cbe2cb
fix typo
rvalyi Mar 24, 2025
b0fd129
pre-commit fix
rvalyi Mar 24, 2025
509aa08
consultar cadastro is not a national service anymore
rvalyi Mar 24, 2025
a8516d6
add CTe WSDL + SOAP bindings
rvalyi Mar 24, 2025
2f03dda
don't try to lint MDF-e scraped servers
rvalyi Mar 24, 2025
b1eeffe
add MDF-e servers and servers_scraper
rvalyi Mar 24, 2025
b584fa8
add MDF-e WSDL downloader and files
rvalyi Mar 24, 2025
f7b7f85
add MDFe SOAP bindings
rvalyi Mar 24, 2025
e0467cb
optional [soap] dependencies
rvalyi Mar 24, 2025
d6803bf
import NFe servers
rvalyi Mar 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add NF-e SOAP bindings
rvalyi committed Mar 24, 2025
commit dda54bd379afc0d93d74b130c95fc259bc674693
1 change: 1 addition & 0 deletions nfelib/nfe/soap/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# nothing here
97 changes: 97 additions & 0 deletions nfelib/nfe/soap/v4_0/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
from nfelib.nfe.soap.v4_0.nfeautorizacao4 import (
NfeAutorizacao4SoapNfeAutorizacaoLote,
NfeAutorizacao4SoapNfeAutorizacaoLoteZip,
NfeAutorizacao4SoapNfeAutorizacaoLoteZipInput,
NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput,
NfeAutorizacao4SoapNfeAutorizacaoLoteInput,
NfeAutorizacao4SoapNfeAutorizacaoLoteOutput,
NfeDadosMsg as Nfeautorizacao4NfeDadosMsg,
NfeDadosMsgZip,
NfeMonitoria,
NfeResultMsg as Nfeautorizacao4NfeResultMsg,
)
from nfelib.nfe.soap.v4_0.nfeconsulta4 import (
NfeConsultaProtocolo4SoapNfeConsultaNf,
NfeConsultaProtocolo4SoapNfeConsultaNfInput,
NfeConsultaProtocolo4SoapNfeConsultaNfOutput,
NfeDadosMsg as Nfeconsulta4NfeDadosMsg,
NfeResultMsg as Nfeconsulta4NfeResultMsg,
)
from nfelib.nfe.soap.v4_0.nfedistribuicaodfe import (
NfeDistribuicaoDfeSoapNfeDistDfeInteresse,
NfeDistribuicaoDfeSoapNfeDistDfeInteresseInput,
NfeDistribuicaoDfeSoapNfeDistDfeInteresseOutput,
NfeDistDfeInteresse,
NfeDistDfeInteresseResponse,
)
from nfelib.nfe.soap.v4_0.nfeinutilizacao4 import (
NfeInutilizacao4SoapNfeInutilizacaoNf,
NfeInutilizacao4SoapNfeInutilizacaoNfInput,
NfeInutilizacao4SoapNfeInutilizacaoNfOutput,
NfeDadosMsg as Nfeinutilizacao4NfeDadosMsg,
NfeResultMsg as Nfeinutilizacao4NfeResultMsg,
)
from nfelib.nfe.soap.v4_0.nferetautorizacao4 import (
NfeRetAutorizacao4SoapNfeRetAutorizacaoLote,
NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteInput,
NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteOutput,
NfeDadosMsg as Nferetautorizacao4NfeDadosMsg,
NfeResultMsg as Nferetautorizacao4NfeResultMsg,
)
from nfelib.nfe.soap.v4_0.nfestatusservico4 import (
NfeStatusServico4SoapNfeStatusServicoNf,
NfeStatusServico4SoapNfeStatusServicoNfInput,
NfeStatusServico4SoapNfeStatusServicoNfOutput,
NfeDadosMsg as Nfestatusservico4NfeDadosMsg,
NfeResultMsg as Nfestatusservico4NfeResultMsg,
)
from nfelib.nfe.soap.v4_0.recepcaoevento4 import (
NfeRecepcaoEvento4SoapNfeRecepcaoEvento,
NfeRecepcaoEvento4SoapNfeRecepcaoEventoInput,
NfeRecepcaoEvento4SoapNfeRecepcaoEventoOutput,
NfeDadosMsg as Recepcaoevento4NfeDadosMsg,
NfeResultMsg as Recepcaoevento4NfeResultMsg,
)

__all__ = [
"NfeAutorizacao4SoapNfeAutorizacaoLote",
"NfeAutorizacao4SoapNfeAutorizacaoLoteZip",
"NfeAutorizacao4SoapNfeAutorizacaoLoteZipInput",
"NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput",
"NfeAutorizacao4SoapNfeAutorizacaoLoteInput",
"NfeAutorizacao4SoapNfeAutorizacaoLoteOutput",
"Nfeautorizacao4NfeDadosMsg",
"NfeDadosMsgZip",
"NfeMonitoria",
"Nfeautorizacao4NfeResultMsg",
"NfeConsultaProtocolo4SoapNfeConsultaNf",
"NfeConsultaProtocolo4SoapNfeConsultaNfInput",
"NfeConsultaProtocolo4SoapNfeConsultaNfOutput",
"Nfeconsulta4NfeDadosMsg",
"Nfeconsulta4NfeResultMsg",
"NfeDistribuicaoDfeSoapNfeDistDfeInteresse",
"NfeDistribuicaoDfeSoapNfeDistDfeInteresseInput",
"NfeDistribuicaoDfeSoapNfeDistDfeInteresseOutput",
"NfeDistDfeInteresse",
"NfeDistDfeInteresseResponse",
"NfeInutilizacao4SoapNfeInutilizacaoNf",
"NfeInutilizacao4SoapNfeInutilizacaoNfInput",
"NfeInutilizacao4SoapNfeInutilizacaoNfOutput",
"Nfeinutilizacao4NfeDadosMsg",
"Nfeinutilizacao4NfeResultMsg",
"NfeRetAutorizacao4SoapNfeRetAutorizacaoLote",
"NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteInput",
"NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteOutput",
"Nferetautorizacao4NfeDadosMsg",
"Nferetautorizacao4NfeResultMsg",
"NfeStatusServico4SoapNfeStatusServicoNf",
"NfeStatusServico4SoapNfeStatusServicoNfInput",
"NfeStatusServico4SoapNfeStatusServicoNfOutput",
"Nfestatusservico4NfeDadosMsg",
"Nfestatusservico4NfeResultMsg",
"NfeRecepcaoEvento4SoapNfeRecepcaoEvento",
"NfeRecepcaoEvento4SoapNfeRecepcaoEventoInput",
"NfeRecepcaoEvento4SoapNfeRecepcaoEventoOutput",
"Recepcaoevento4NfeDadosMsg",
"Recepcaoevento4NfeResultMsg",
]
315 changes: 315 additions & 0 deletions nfelib/nfe/soap/v4_0/nfeautorizacao4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,315 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import Dict, List, Optional


@dataclass
class NfeAutorizacao4SoapNfeAutorizacaoLoteZipInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeAutorizacao4SoapNfeAutorizacaoLoteZipInput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeDadosMsgZip: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4",
},
)


@dataclass
class NfeDadosMsg(CommonMixin):
class Meta:
name = "nfeDadosMsg"
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4"

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeDadosMsgZip(CommonMixin):
class Meta:
name = "nfeDadosMsgZip"
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4"

value: str = field(
default="",
metadata={
"required": True,
},
)


@dataclass
class NfeMonitoria(CommonMixin):
class Meta:
name = "nfeMonitoria"
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4"

nomeServidor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
},
)
dhServidor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
},
)
any_attributes: Dict[str, str] = field(
default_factory=dict,
metadata={
"type": "Attributes",
"namespace": "##any",
},
)


@dataclass
class NfeResultMsg(CommonMixin):
class Meta:
name = "nfeResultMsg"
nillable = True
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4"

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)
Header: Optional[
"NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput.Header"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4",
"nillable": True,
},
)
Fault: Optional[
"NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)

@dataclass
class Header(CommonMixin):
nfeMonitoria: Optional[NfeMonitoria] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4",
},
)


@dataclass
class NfeAutorizacao4SoapNfeAutorizacaoLoteInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeAutorizacao4SoapNfeAutorizacaoLoteInput.Body"] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Body(CommonMixin):
nfeDadosMsg: Optional[NfeDadosMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4",
},
)


@dataclass
class NfeAutorizacao4SoapNfeAutorizacaoLoteOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeAutorizacao4SoapNfeAutorizacaoLoteOutput.Body"] = field(
default=None,
metadata={
"type": "Element",
},
)
Header: Optional["NfeAutorizacao4SoapNfeAutorizacaoLoteOutput.Header"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4",
"nillable": True,
},
)
Fault: Optional[
"NfeAutorizacao4SoapNfeAutorizacaoLoteOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)

@dataclass
class Header(CommonMixin):
nfeMonitoria: Optional[NfeMonitoria] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4",
},
)


class NfeAutorizacao4SoapNfeAutorizacaoLote:
style = "document"
location = (
"https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx"
)
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4/nfeAutorizacaoLote"
input = NfeAutorizacao4SoapNfeAutorizacaoLoteInput
output = NfeAutorizacao4SoapNfeAutorizacaoLoteOutput


class NfeAutorizacao4SoapNfeAutorizacaoLoteZip:
style = "document"
location = (
"https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx"
)
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4/nfeAutorizacaoLoteZip"
input = NfeAutorizacao4SoapNfeAutorizacaoLoteZipInput
output = NfeAutorizacao4SoapNfeAutorizacaoLoteZipOutput
139 changes: 139 additions & 0 deletions nfelib/nfe/soap/v4_0/nfeconsulta4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import List, Optional


@dataclass
class NfeDadosMsg(CommonMixin):
class Meta:
name = "nfeDadosMsg"
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4"
)

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeResultMsg(CommonMixin):
class Meta:
name = "nfeResultMsg"
nillable = True
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4"
)

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeConsultaProtocolo4SoapNfeConsultaNfInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeConsultaProtocolo4SoapNfeConsultaNfInput.Body"] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Body(CommonMixin):
nfeDadosMsg: Optional[NfeDadosMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4",
},
)


@dataclass
class NfeConsultaProtocolo4SoapNfeConsultaNfOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeConsultaProtocolo4SoapNfeConsultaNfOutput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4",
"nillable": True,
},
)
Fault: Optional[
"NfeConsultaProtocolo4SoapNfeConsultaNfOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)


class NfeConsultaProtocolo4SoapNfeConsultaNf:
style = "document"
location = "https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx"
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeConsultaProtocolo4/nfeConsultaNF"
input = NfeConsultaProtocolo4SoapNfeConsultaNfInput
output = NfeConsultaProtocolo4SoapNfeConsultaNfOutput
161 changes: 161 additions & 0 deletions nfelib/nfe/soap/v4_0/nfedistribuicaodfe.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import List, Optional


@dataclass
class NfeDistDfeInteresse(CommonMixin):
class Meta:
name = "nfeDistDFeInteresse"
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe"
)

nfeDadosMsg: Optional["NfeDistDfeInteresse.NfeDadosMsg"] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class NfeDadosMsg(CommonMixin):
content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeDistDfeInteresseResponse(CommonMixin):
class Meta:
name = "nfeDistDFeInteresseResponse"
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe"
)

nfeDistDFeInteresseResult: Optional[
"NfeDistDfeInteresseResponse.NfeDistDfeInteresseResult"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class NfeDistDfeInteresseResult(CommonMixin):
content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeDistribuicaoDfeSoapNfeDistDfeInteresseInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeDistribuicaoDfeSoapNfeDistDfeInteresseInput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeDistDFeInteresse: Optional[NfeDistDfeInteresse] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe",
},
)


@dataclass
class NfeDistribuicaoDfeSoapNfeDistDfeInteresseOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeDistribuicaoDfeSoapNfeDistDfeInteresseOutput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeDistDFeInteresseResponse: Optional[NfeDistDfeInteresseResponse] = (
field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe",
},
)
)
Fault: Optional[
"NfeDistribuicaoDfeSoapNfeDistDfeInteresseOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)


class NfeDistribuicaoDfeSoapNfeDistDfeInteresse:
style = "document"
location = "https://www1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx"
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe/nfeDistDFeInteresse"
input = NfeDistribuicaoDfeSoapNfeDistDfeInteresseInput
output = NfeDistribuicaoDfeSoapNfeDistDfeInteresseOutput
135 changes: 135 additions & 0 deletions nfelib/nfe/soap/v4_0/nfeinutilizacao4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import List, Optional


@dataclass
class NfeDadosMsg(CommonMixin):
class Meta:
name = "nfeDadosMsg"
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4"

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeResultMsg(CommonMixin):
class Meta:
name = "nfeResultMsg"
nillable = True
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4"

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeInutilizacao4SoapNfeInutilizacaoNfInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeInutilizacao4SoapNfeInutilizacaoNfInput.Body"] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Body(CommonMixin):
nfeDadosMsg: Optional[NfeDadosMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4",
},
)


@dataclass
class NfeInutilizacao4SoapNfeInutilizacaoNfOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeInutilizacao4SoapNfeInutilizacaoNfOutput.Body"] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4",
"nillable": True,
},
)
Fault: Optional[
"NfeInutilizacao4SoapNfeInutilizacaoNfOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)


class NfeInutilizacao4SoapNfeInutilizacaoNf:
style = "document"
location = (
"https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx"
)
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeInutilizacao4/nfeInutilizacaoNF"
input = NfeInutilizacao4SoapNfeInutilizacaoNfInput
output = NfeInutilizacao4SoapNfeInutilizacaoNfOutput
141 changes: 141 additions & 0 deletions nfelib/nfe/soap/v4_0/nferetautorizacao4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import List, Optional


@dataclass
class NfeDadosMsg(CommonMixin):
class Meta:
name = "nfeDadosMsg"
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4"
)

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeResultMsg(CommonMixin):
class Meta:
name = "nfeResultMsg"
nillable = True
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4"
)

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteInput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeDadosMsg: Optional[NfeDadosMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4",
},
)


@dataclass
class NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional[
"NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteOutput.Body"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4",
"nillable": True,
},
)
Fault: Optional[
"NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)


class NfeRetAutorizacao4SoapNfeRetAutorizacaoLote:
style = "document"
location = "https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx"
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeRetAutorizacao4/nfeRetAutorizacaoLote"
input = NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteInput
output = NfeRetAutorizacao4SoapNfeRetAutorizacaoLoteOutput
139 changes: 139 additions & 0 deletions nfelib/nfe/soap/v4_0/nfestatusservico4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import List, Optional


@dataclass
class NfeDadosMsg(CommonMixin):
class Meta:
name = "nfeDadosMsg"
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4"

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeResultMsg(CommonMixin):
class Meta:
name = "nfeResultMsg"
nillable = True
namespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4"

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeStatusServico4SoapNfeStatusServicoNfInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeStatusServico4SoapNfeStatusServicoNfInput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeDadosMsg: Optional[NfeDadosMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4",
},
)


@dataclass
class NfeStatusServico4SoapNfeStatusServicoNfOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeStatusServico4SoapNfeStatusServicoNfOutput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4",
"nillable": True,
},
)
Fault: Optional[
"NfeStatusServico4SoapNfeStatusServicoNfOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)


class NfeStatusServico4SoapNfeStatusServicoNf:
style = "document"
location = (
"https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx"
)
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4/nfeStatusServicoNF"
input = NfeStatusServico4SoapNfeStatusServicoNfInput
output = NfeStatusServico4SoapNfeStatusServicoNfOutput
143 changes: 143 additions & 0 deletions nfelib/nfe/soap/v4_0/recepcaoevento4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import List, Optional


@dataclass
class NfeDadosMsg(CommonMixin):
class Meta:
name = "nfeDadosMsg"
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4"
)

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeResultMsg(CommonMixin):
class Meta:
name = "nfeResultMsg"
nillable = True
namespace = (
"http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4"
)

content: List[object] = field(
default_factory=list,
metadata={
"type": "Wildcard",
"namespace": "##any",
"mixed": True,
},
)


@dataclass
class NfeRecepcaoEvento4SoapNfeRecepcaoEventoInput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeRecepcaoEvento4SoapNfeRecepcaoEventoInput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeDadosMsg: Optional[NfeDadosMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4",
},
)


@dataclass
class NfeRecepcaoEvento4SoapNfeRecepcaoEventoOutput(CommonMixin):
class Meta:
name = "Envelope"
namespace = "http://schemas.xmlsoap.org/soap/envelope/"

Body: Optional["NfeRecepcaoEvento4SoapNfeRecepcaoEventoOutput.Body"] = (
field(
default=None,
metadata={
"type": "Element",
},
)
)

@dataclass
class Body(CommonMixin):
nfeResultMsg: Optional[NfeResultMsg] = field(
default=None,
metadata={
"type": "Element",
"namespace": "http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4",
"nillable": True,
},
)
Fault: Optional[
"NfeRecepcaoEvento4SoapNfeRecepcaoEventoOutput.Body.Fault"
] = field(
default=None,
metadata={
"type": "Element",
},
)

@dataclass
class Fault(CommonMixin):
faultcode: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultstring: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
faultactor: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
detail: Optional[str] = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)


class NfeRecepcaoEvento4SoapNfeRecepcaoEvento:
style = "document"
location = (
"https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx"
)
transport = "http://schemas.xmlsoap.org/soap/http"
soapAction = "http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4/nfeRecepcaoEvento"
input = NfeRecepcaoEvento4SoapNfeRecepcaoEventoInput
output = NfeRecepcaoEvento4SoapNfeRecepcaoEventoOutput