tests/pr/curitiba/basetestesserializacao.py
import unittest
from datetime import datetime
from decimal import Decimal
from pynfse.base.models import RPS, LoteRPS, PedidoCancelamentoNFSe, Prestador, Servico, Tomador
from pynfse.nfse.pr.curitiba import _schema as nfse_schema
from pyxb import BIND
class BaseTestesSerializacao(unittest.TestCase):
maxDiff = None
def setUp(self):
self.prestador = Prestador(**{"cnpj": "12345678000123", "inscricao_municipal": "0987654321"})
self.tomador = Tomador(
**{
"razao_social": "Nome Cliente",
"tipo_documento": "CNPJ",
"numero_documento": "12345678000123",
"endereco": "Rua Cliente",
"endereco_numero": "1234",
"bairro": "Bairro Cliente",
"codigo_municipio": "4106902",
"uf": "PR",
"cep": "80000000",
"telefone": "4132221122",
"email": "financeiro@cliente.com.br",
}
)
self.servico = Servico(
**{
"valor_servico": Decimal("1000.00"),
"iss_retido": 2, # 1 - Sim, 2 - Não
"item_lista": "1401",
"discriminacao": "Descrição do Serviço Prestado",
"codigo_municipio": "4106902",
"codigo_cnae": 9511800,
"codigo_tributacao_municipio": "1401",
"aliquota": Decimal("0.02"),
}
)
self.rps = RPS(
**{
"identificador": "N1",
"data_emissao": datetime(2016, 12, 12, 17, 22, 39, 960610),
"servico": self.servico,
"prestador": self.prestador,
"tomador": self.tomador,
"simples": 1,
"incentivo": 2,
"numero": 1,
"serie": "A1",
"tipo": "1",
"natureza_operacao": 1,
}
)
self.lote_rps = LoteRPS(
**{
"identificador": "L1",
"numero_lote": 1,
"cnpj": self.prestador.cnpj,
"inscricao_municipal": self.prestador.inscricao_municipal,
"quantidade_rps": 1,
"lista_rps": [self.rps],
}
)
self.pedido_cancelamento_nfse = PedidoCancelamentoNFSe(
**{
"identificador": "C1",
"prestador": self.prestador,
"numero_nota": 192,
"codigo_municipio": "4106902",
"codigo_cancelamento": "1",
}
)
# Necessário para "serializar" os objetos antes do lote completo.
self.tc_inf_rps = nfse_schema.tcInfRps()
self.tc_lote_rps = nfse_schema.tcLoteRps()
self.tc_lote_rps.ListaRps = BIND()
def xml_expected(arquivo_xml):
with open("tests/pr/curitiba/xml_expected/{}".format(arquivo_xml), "r") as xml:
xml_expected = xml.read()
return xml_expected