You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.2 KiB
118 lines
4.2 KiB
# coding=utf-8
|
|
|
|
import mock
|
|
import os.path
|
|
import unittest
|
|
from pytrustnfe.certificado import Certificado
|
|
from pytrustnfe.nfse.betha import envio_lote_rps
|
|
from pytrustnfe.nfse.betha import cancelar_nfse
|
|
|
|
|
|
class test_nfse_betha(unittest.TestCase):
|
|
|
|
caminho = os.path.dirname(__file__)
|
|
|
|
def _get_nfse(self):
|
|
rps = [
|
|
{
|
|
'assinatura': '123',
|
|
'serie': '1',
|
|
'numero': '1',
|
|
'data_emissao': '2016-08-29',
|
|
'codigo_atividade': '07498',
|
|
'total_servicos': '2.00',
|
|
'total_deducoes': '3.00',
|
|
'prestador': {
|
|
'inscricao_municipal': '123456'
|
|
},
|
|
'tomador': {
|
|
'tipo_cpfcnpj': '1',
|
|
'cpf_cnpj': '12345678923256',
|
|
'inscricao_municipal': '123456',
|
|
'razao_social': 'Trustcode',
|
|
'tipo_logradouro': '1',
|
|
'logradouro': 'Vinicius de Moraes, 42',
|
|
'numero': '42',
|
|
'bairro': 'Corrego',
|
|
'cidade': 'Floripa',
|
|
'uf': 'SC',
|
|
'cep': '88037240',
|
|
},
|
|
'codigo_atividade': '07498',
|
|
'aliquota_atividade': '5.00',
|
|
'descricao': 'Venda de servico'
|
|
}
|
|
]
|
|
nfse = {
|
|
'cpf_cnpj': '12345678901234',
|
|
'data_inicio': '2016-08-29',
|
|
'data_fim': '2016-08-29',
|
|
'lista_rps': rps,
|
|
'ambiente': 'homologacao',
|
|
}
|
|
return nfse
|
|
|
|
def test_envio_nfse_lote(self):
|
|
pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
|
|
pfx = Certificado(pfx_source, '123456')
|
|
nfse = self._get_nfse()
|
|
|
|
retorno = envio_lote_rps(pfx, nfse=nfse, ambiente='homologacao')
|
|
|
|
self.assertEqual(retorno['object'].Cabecalho.Sucesso, True)
|
|
self.assertEqual(
|
|
retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe, 446)
|
|
self.assertEqual(
|
|
retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS, 6)
|
|
|
|
def _get_cancelamento(self):
|
|
return {
|
|
'cnpj_remetente': '123',
|
|
'assinatura': 'assinatura',
|
|
'numero_nfse': '456',
|
|
'inscricao_municipal': '654',
|
|
'codigo_verificacao': '789',
|
|
'ambiente': 'homologacao',
|
|
}
|
|
|
|
def test_cancelamento_nfse_ok(self):
|
|
pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
|
|
pfx = Certificado(pfx_source, '123456')
|
|
cancelamento = self._get_cancelamento()
|
|
|
|
path = os.path.join(os.path.dirname(__file__), 'XMLs')
|
|
xml_return = open(os.path.join(
|
|
path, 'paulistana_canc_ok.xml'), 'r').read()
|
|
|
|
with mock.patch('pytrustnfe.nfse.betha.get_authenticated_client') as client:
|
|
retorno = mock.MagicMock()
|
|
client.return_value = retorno
|
|
retorno.service.CancelarNfse.return_value = xml_return
|
|
|
|
retorno = cancelar_nfse(pfx, cancelamento=cancelamento,
|
|
ambiente='homologacao')
|
|
|
|
self.assertEqual(retorno['received_xml'], xml_return)
|
|
self.assertEqual(retorno['object'].Cabecalho.Sucesso, True)
|
|
|
|
def test_cancelamento_nfse_com_erro(self):
|
|
pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read()
|
|
pfx = Certificado(pfx_source, '123456')
|
|
cancelamento = self._get_cancelamento()
|
|
|
|
path = os.path.join(os.path.dirname(__file__), 'XMLs')
|
|
xml_return = open(os.path.join(
|
|
path, 'paulistana_canc_errado.xml'), 'r').read()
|
|
|
|
with mock.patch('pytrustnfe.nfse.betha.get_authenticated_client') as client:
|
|
retorno = mock.MagicMock()
|
|
client.return_value = retorno
|
|
retorno.service.CancelarNfse.return_value = xml_return
|
|
|
|
retorno = cancelar_nfse(pfx, cancelamento=cancelamento,
|
|
ambiente='homologacao')
|
|
|
|
self.assertEqual(retorno['received_xml'], xml_return)
|
|
self.assertEqual(retorno['object'].Cabecalho.Sucesso, False)
|
|
self.assertEqual(
|
|
retorno['object'].Erro.ChaveNFe.NumeroNFe, 446)
|