Skip to content

Commit a8f2d54

Browse files
authored
Merge pull request #295 from leogregianin/fix/nota-importacao
Ajusta campos para emissão de nota de importação
2 parents fbc5b71 + 6e5221a commit a8f2d54

9 files changed

Lines changed: 290 additions & 13 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
9999999 Exterior

pynfe/data/MunIBGE/PaisIBGE.txt

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
132 AFEGANISTAO
2+
175 ALBANIA, REPUBLICA DA
3+
1504 GUERNSEY, ILHA DO CANAL (INCLUI ALDERNEY E SARK)
4+
230 ALEMANHA
5+
310 BURKINA FASO
6+
370 ANDORRA
7+
400 ANGOLA
8+
418 ANGUILLA
9+
434 ANTIGUA E BARBUDA
10+
477 ANTILHAS HOLANDESAS
11+
531 ARABIA SAUDITA
12+
590 ARGELIA
13+
639 ARGENTINA
14+
647 ARMENIA, REPUBLICA DA
15+
655 ARUBA
16+
698 AUSTRALIA
17+
728 AUSTRIA
18+
736 AZERBAIJAO, REPUBLICA DO
19+
779 BAHAMAS, ILHAS
20+
809 BAHREIN, ILHAS
21+
817 BANGLADESH
22+
833 BARBADOS
23+
850 BELARUS, REPUBLICA DA
24+
876 BELGICA
25+
884 BELIZE
26+
906 BERMUDAS
27+
930 MIANMAR (BIRMANIA)
28+
973 BOLIVIA
29+
981 BOSNIA-HERZEGOVINA (REPUBLICA DA)
30+
9900 BONAIRE, SAINT EUSTATIUS E SABA
31+
1015 BOTSUANA
32+
1058 BRASIL
33+
1082 BRUNEI
34+
1112 BULGARIA, REPUBLICA DA
35+
1155 BURUNDI
36+
1198 BUTAO
37+
1279 CABO VERDE, REPUBLICA DE
38+
1376 CAYMAN, ILHAS
39+
1414 CAMBOJA
40+
1457 CAMAROES
41+
1490 CANADA
42+
1508 JERSEY, ILHA DO CANAL
43+
1511 CANARIAS, ILHAS
44+
1538 CAZAQUISTAO, REPUBLICA DO
45+
1546 CATAR
46+
1589 CHILE
47+
1600 CHINA, REPUBLICA POPULAR
48+
1619 FORMOSA (TAIWAN)
49+
1635 CHIPRE
50+
1651 COCOS(KEELING),ILHAS
51+
1694 COLOMBIA
52+
1732 COMORES, ILHAS
53+
1775 CONGO
54+
1830 COOK, ILHAS
55+
1872 COREIA, REP.POP.DEMOCRATICA
56+
1902 COREIA, REPUBLICA DA
57+
1937 COSTA DO MARFIM
58+
1953 CROACIA (REPUBLICA DA)
59+
1961 COSTA RICA
60+
1988 COVEITE
61+
1996 CUBA
62+
2003 CURAÇAO
63+
2291 BENIN
64+
2321 DINAMARCA
65+
2356 DOMINICA,ILHA
66+
2399 EQUADOR
67+
2402 EGITO
68+
2437 ERITREIA
69+
2445 EMIRADOS ARABES UNIDOS
70+
2453 ESPANHA
71+
2461 ESLOVENIA, REPUBLICA DA
72+
2470 ESLOVACA, REPUBLICA
73+
2496 ESTADOS UNIDOS
74+
2518 ESTONIA, REPUBLICA DA
75+
2534 ETIOPIA
76+
2550 FALKLAND (ILHAS MALVINAS)
77+
2593 FEROE, ILHAS
78+
2674 FILIPINAS
79+
2712 FINLANDIA
80+
2755 FRANCA
81+
2810 GABAO
82+
2852 GAMBIA
83+
2895 GANA
84+
2917 GEORGIA, REPUBLICA DA
85+
2933 GIBRALTAR
86+
2976 GRANADA
87+
3018 GRECIA
88+
3050 GROENLANDIA
89+
3093 GUADALUPE
90+
3131 GUAM
91+
3174 GUATEMALA
92+
3255 GUIANA FRANCESA
93+
3298 GUINE
94+
3310 GUINE-EQUATORIAL
95+
3344 GUINE-BISSAU
96+
3379 GUIANA
97+
3417 HAITI
98+
3450 HONDURAS
99+
3514 HONG KONG
100+
3557 HUNGRIA, REPUBLICA DA
101+
3573 IEMEN
102+
3595 MAN, ILHA DE
103+
3611 INDIA
104+
3654 INDONESIA
105+
3697 IRAQUE
106+
3727 IRA, REPUBLICA ISLAMICA DO
107+
3751 IRLANDA
108+
3794 ISLANDIA
109+
3832 ISRAEL
110+
3867 ITALIA
111+
3913 JAMAICA
112+
3964 JOHNSTON, ILHAS
113+
3999 JAPAO
114+
4030 JORDANIA
115+
4111 KIRIBATI
116+
4200 LAOS, REP.POP.DEMOCR.DO
117+
4235 LEBUAN,ILHAS
118+
4260 LESOTO
119+
4278 LETONIA, REPUBLICA DA
120+
4316 LIBANO
121+
4340 LIBERIA
122+
4383 LIBIA
123+
4405 LIECHTENSTEIN
124+
4421 LITUANIA, REPUBLICA DA
125+
4456 LUXEMBURGO
126+
4472 MACAU
127+
4499 MACEDONIA, ANT.REP.IUGOSLAVA
128+
4502 MADAGASCAR
129+
4525 MADEIRA, ILHA DA
130+
4553 MALASIA
131+
4588 MALAVI
132+
4618 MALDIVAS
133+
4642 MALI
134+
4677 MALTA
135+
4723 MARIANAS DO NORTE
136+
4740 MARROCOS
137+
4766 MARSHALL,ILHAS
138+
4774 MARTINICA
139+
4855 MAURICIO
140+
4880 MAURITANIA
141+
4885 MAYOTTE (ILHAS FRANCESAS)
142+
4901 MIDWAY, ILHAS
143+
4936 MEXICO
144+
4944 MOLDAVIA, REPUBLICA DA
145+
4952 MONACO
146+
4979 MONGOLIA
147+
4985 MONTENEGRO
148+
4995 MICRONESIA
149+
5010 MONTSERRAT,ILHAS
150+
5053 MOCAMBIQUE
151+
5070 NAMIBIA
152+
5088 NAURU
153+
5118 CHRISTMAS,ILHA (NAVIDAD)
154+
5177 NEPAL
155+
5215 NICARAGUA
156+
5258 NIGER
157+
5282 NIGERIA
158+
5312 NIUE,ILHA
159+
5355 NORFOLK,ILHA
160+
5380 NORUEGA
161+
5428 NOVA CALEDONIA
162+
5452 PAPUA NOVA GUINE
163+
5487 NOVA ZELANDIA
164+
5517 VANUATU
165+
5568 OMA
166+
5665 PACIFICO,ILHAS DO (POSSESSAO DOS EUA)
167+
5738 PAISES BAIXOS (HOLANDA)
168+
5754 PALAU
169+
5762 PAQUISTAO
170+
5780 PALESTINA
171+
5800 PANAMA
172+
5860 PARAGUAI
173+
5894 PERU
174+
5932 PITCAIRN,ILHA
175+
5991 POLINESIA FRANCESA
176+
6033 POLONIA, REPUBLICA DA
177+
6076 PORTUGAL
178+
6114 PORTO RICO
179+
6238 QUENIA
180+
6254 QUIRGUIZ, REPUBLICA
181+
6289 REINO UNIDO
182+
6408 REPUBLICA CENTRO-AFRICANA
183+
6475 REPUBLICA DOMINICANA
184+
6602 REUNIAO, ILHA
185+
6653 ZIMBABUE
186+
6700 ROMENIA
187+
6750 RUANDA
188+
6769 RUSSIA, FEDERACAO DA
189+
6777 SALOMAO, ILHAS
190+
6781 SAINT KITTS E NEVIS
191+
6858 SAARA OCIDENTAL
192+
6874 EL SALVADOR
193+
6904 SAMOA
194+
6912 SAMOA AMERICANA
195+
6955 SAO CRISTOVAO E NEVES,ILHAS
196+
6971 SAN MARINO
197+
6980 SAO MARTINHO, ILHA DE (PARTE FRANCESA)
198+
6998 SAO MARTINHO, ILHA DE (PARTE HOLANDESA)
199+
7005 SAO PEDRO E MIQUELON
200+
7056 SAO VICENTE E GRANADINAS
201+
7102 SANTA HELENA
202+
7153 SANTA LUCIA
203+
7200 SAO TOME E PRINCIPE, ILHAS
204+
7285 SENEGAL
205+
7315 SEYCHELLES
206+
7358 SERRA LEOA
207+
7370 SERVIA
208+
7412 CINGAPURA
209+
7447 SIRIA, REPUBLICA ARABE DA
210+
7480 SOMALIA
211+
7501 SRI LANKA
212+
7544 ESWATINI
213+
7560 AFRICA DO SUL
214+
7595 SUDAO
215+
7600 SUDAO DO SUL
216+
7641 SUECIA
217+
7676 SUICA
218+
7706 SURINAME
219+
7722 TADJIQUISTAO, REPUBLICA DO
220+
7765 TAILANDIA
221+
7803 TANZANIA, REP.UNIDA DA
222+
7820 TERRITORIO BRIT.OC.INDICO
223+
7838 DJIBUTI
224+
7889 CHADE
225+
7919 TCHECA, REPUBLICA
226+
7951 TIMOR LESTE
227+
8001 TOGO
228+
8052 TOQUELAU,ILHAS
229+
8109 TONGA
230+
8150 TRINIDAD E TOBAGO
231+
8206 TUNISIA
232+
8230 TURCAS E CAICOS,ILHAS
233+
8249 TURCOMENISTAO, REPUBLICA DO
234+
8273 TURQUIA
235+
8281 TUVALU
236+
8311 UCRANIA
237+
8338 UGANDA
238+
8451 URUGUAI
239+
8478 UZBEQUISTAO, REPUBLICA DO
240+
8486 VATICANO, EST.DA CIDADE DO
241+
8508 VENEZUELA
242+
8583 VIETNA
243+
8630 VIRGENS,ILHAS (BRITANICAS)
244+
8664 VIRGENS,ILHAS (E.U.A.)
245+
8702 FIJI
246+
8737 WAKE, ILHA
247+
8885 CONGO, REPUBLICA DEMOCRATICA DO
248+
8907 ZAMBIA
249+
8958 ZONA DO CANAL DO PANAMA

pynfe/entidades/cliente.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# -*- coding: utf-8 -*-
22
from .base import Entidade
3-
from pynfe.utils.flags import CODIGO_BRASIL
43

54

65
class Cliente(Entidade):
@@ -50,7 +49,7 @@ class Cliente(Entidade):
5049
endereco_cep = str()
5150

5251
# - Pais (seleciona de lista)
53-
endereco_pais = CODIGO_BRASIL
52+
endereco_pais = str()
5453

5554
# - UF (obrigatorio)
5655
endereco_uf = str()

pynfe/entidades/notafiscal.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from .base import Entidade
55
from pynfe import get_version
6-
from pynfe.utils.flags import NF_STATUS, CODIGO_BRASIL, CODIGOS_ESTADOS
6+
from pynfe.utils.flags import NF_STATUS, CODIGOS_ESTADOS
77

88
# from pynfe.utils import so_numeros, memoize
99
from pynfe.utils import so_numeros
@@ -1064,7 +1064,7 @@ class NotaFiscalEntregaRetirada(Entidade):
10641064
endereco_cep = str()
10651065

10661066
# - Pais (seleciona de lista)
1067-
endereco_pais = CODIGO_BRASIL
1067+
endereco_pais = str()
10681068

10691069
# - UF (obrigatorio)
10701070
endereco_uf = str()

pynfe/processamento/serializacao.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,7 @@ def _serializar_imposto_ipi(
10241024
else:
10251025
if (produto_servico.ipi_valor_base_calculo > 0) and\
10261026
(produto_servico.ipi_aliquota > 0) and\
1027-
(produto_servico.ipi_valor > 0):
1027+
(produto_servico.ipi_valor_ipi > 0):
10281028
ipi = etree.SubElement(tag_raiz, 'IPI')
10291029

10301030
# Preenchimento conforme Atos Normativos editados pela Receita Federal
@@ -1040,7 +1040,7 @@ def _serializar_imposto_ipi(
10401040
etree.SubElement(ipi_item, 'pIPI').text = '{:.2f}'.format(
10411041
produto_servico.ipi_aliquota or 0)
10421042
etree.SubElement(ipi_item, 'vIPI').text = '{:.2f}'.format(
1043-
produto_servico.ipi_valor or 0)
1043+
produto_servico.ipi_valor_ipi or 0)
10441044

10451045
def _serializar_imposto_pis(
10461046
self, produto_servico, modelo, tag_raiz="imposto", retorna_string=True

pynfe/utils/__init__.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,14 @@ def so_numeros(texto) -> str:
2929

3030
# @memoize
3131
def obter_pais_por_codigo(codigo):
32-
# TODO
33-
if codigo == "1058":
34-
return "Brasil"
32+
if codigo == '1058' or codigo == '' or codigo is None:
33+
return 'Brasil'
34+
35+
pais = carregar_arquivo_pais(codigo=codigo)
36+
pais = pais.get(codigo)
37+
if not pais:
38+
raise ValueError
39+
return pais
3540

3641

3742
CAMINHO_DATA = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "data")
@@ -157,6 +162,16 @@ def remover_acentos(txt):
157162
return normalize("NFKD", txt).encode("ASCII", "ignore").decode("ASCII")
158163

159164

165+
def carregar_arquivo_pais(codigo):
166+
caminho_arquivo = os.path.join(CAMINHO_MUNICIPIOS, 'PaisIBGE.txt')
167+
168+
with open(caminho_arquivo, "r", encoding="utf-8-sig") as arquivo:
169+
linhas = arquivo.readlines()
170+
171+
return {linha.split('\t', maxsplit=1)[0].strip(): linha.split('\t', maxsplit=1)[1].strip()
172+
for linha in linhas}
173+
174+
160175
class CustomXMLSigner(XMLSigner):
161176
def __init__(self, method, signature_algorithm, digest_algorithm, c14n_algorithm):
162177
super().__init__(method, signature_algorithm, digest_algorithm, c14n_algorithm)

pynfe/utils/flags.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,4 +595,5 @@
595595
"GO": "52",
596596
"DF": "53",
597597
"AN": "91",
598+
"EX": "99",
598599
}

tests/test_nfe_serializacao_ii_di_ipi.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ def preenche_notafiscal_produto_cst00(self):
193193
ipi_codigo_enquadramento='00',
194194
ipi_valor_base_calculo=Decimal('117.00'),
195195
ipi_aliquota=Decimal('10.00'),
196-
ipi_valor=Decimal('11.70'),
196+
ipi_valor_ipi=Decimal('11.70'),
197197
# ii
198198
imposto_importacao_valor_base_calculo=Decimal('117.00'),
199199
imposto_importacao_valor_despesas_aduaneiras=Decimal('0.00'),
@@ -394,12 +394,12 @@ def total_e_produto_cst00_test(self):
394394
self.assertEqual(vSeg, '0.00')
395395
self.assertEqual(vDesc, '0.00')
396396
self.assertEqual(vII, '0.00')
397-
self.assertEqual(vIPI, '0.00')
397+
self.assertEqual(vIPI, '11.70')
398398
self.assertEqual(vIPIDevol, '10.00')
399399
self.assertEqual(vPIS, '0.76')
400400
self.assertEqual(vCOFINS, '3.51')
401401
self.assertEqual(vOutro, '0.00')
402-
self.assertEqual(vNF, '127.00')
402+
self.assertEqual(vNF, '138.70')
403403
self.assertEqual(vTotTrib, '21.06')
404404

405405
def test_notafiscal_produto_cst00(self):

tests/test_utils.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,20 @@ def test_so_numeros_somente_com_letras(self):
3939
def test_obter_pais_por_codigo_brasil(self):
4040
self.assertEqual(obter_pais_por_codigo("1058"), "Brasil")
4141

42+
def test_obter_pais_por_codigo__informar_vazio_e_retornar_brasil(self):
43+
self.assertEqual(obter_pais_por_codigo(""), "Brasil")
44+
45+
def test_obter_pais_por_codigo__informar_none_e_retornar_brasil(self):
46+
self.assertEqual(obter_pais_por_codigo(None), "Brasil")
47+
4248
def test_obter_pais_por_codigo_paisesbaixos(self):
43-
self.assertEqual(obter_pais_por_codigo("5738"), None)
49+
self.assertEqual(obter_pais_por_codigo("5738"), 'PAISES BAIXOS (HOLANDA)')
50+
51+
def test_obter_pais_por_codigo_reino_unido(self):
52+
self.assertEqual(obter_pais_por_codigo("6289"), 'REINO UNIDO')
53+
54+
def test_obter_pais_por_codigo_ilhas_cayman(self):
55+
self.assertEqual(obter_pais_por_codigo("1376"), 'CAYMAN, ILHAS')
4456

4557
# normalizar_municipio
4658
def test_normalizar_municipio_acento_til_na_letra_a(self):

0 commit comments

Comments
 (0)