br_nfe 2.3.2 → 3.0.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.markdown +1 -1
- data/br_nfe.gemspec +0 -0
- data/lib/br_nfe/constants.rb +2 -2
- data/lib/br_nfe/product/nf_xml_value.rb +6 -11
- data/lib/br_nfe/product/nfe/cobranca/pagamento.rb +39 -12
- data/lib/br_nfe/product/nfe/item.rb +83 -36
- data/lib/br_nfe/product/nfe/item_tax/icms.rb +182 -46
- data/lib/br_nfe/product/nfe/item_tax/icms_uf_destino.rb +33 -22
- data/lib/br_nfe/product/nfe/item_tax/ipi.rb +18 -18
- data/lib/br_nfe/product/nfe/transporte/base.rb +17 -15
- data/lib/br_nfe/product/nota_fiscal.rb +72 -6
- data/lib/br_nfe/product/operation/base.rb +14 -13
- data/lib/br_nfe/product/reader/item.rb +19 -2
- data/lib/br_nfe/product/reader/nfe.rb +28 -9
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/_tc_prod.xml.slim +2 -2
- data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/_tc_ICMSUFDest.xml.slim +1 -1
- data/lib/br_nfe/product/xml/v4_00/_tc_infNFe.xml.slim +45 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/_tc_ide.xml.slim +30 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/_tc_total.xml.slim +84 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/_tc_prod.xml.slim +62 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS00.xml.slim +11 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS10.xml.slim +28 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS20.xml.slim +18 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS201.xml.slim +21 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS202.xml.slim +20 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS30.xml.slim +23 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS500.xml.slim +13 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS51.xml.slim +25 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS60.xml.slim +12 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS70.xml.slim +35 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS90.xml.slim +38 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS900.xml.slim +31 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/_tc_ICMSUFDest.xml.slim +15 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/_tc_IPI.xml.slim +27 -0
- data/lib/br_nfe/product/xml/v4_00/infNFe/pag/_tc_detPag.xml.slim +17 -0
- data/lib/br_nfe/version.rb +4 -4
- data/lib/config/settings/nfe/reader_xml_paths.yml +40 -9
- data/lib/config/settings/nfe/v4_00/operation.yml +843 -0
- data/lib/config/settings/nfe/v4_00/soap_client.yml +807 -0
- data/lib/config/settings/nfe/v4_00/xml_paths.yml +577 -0
- data/test/br_nfe/product/nfe/item_tax/icms_uf_destino_test.rb +9 -8
- data/test/br_nfe/product/nota_fiscal_test.rb +28 -36
- data/test/br_nfe/product/reader/nfe_test.rb +31 -31
- data/test/factories/product/nfe/item_tax/icms_uf_destino.rb +1 -1
- data/test/factories/product/operation/nfe_autorizacao.rb +3 -3
- metadata +26 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc61633f3351001a44b643c587d569d2a812c4ff
|
4
|
+
data.tar.gz: eee81fd1f1921d09e7f1681290f7c6f67d1dd763
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c0bfe8eeb56b06eefc89a74c82eda71265bdfc845488682d84256de8bc3993faf82eacd284b80d32805079309753118db6887358b854e991002a2f35e67baf4
|
7
|
+
data.tar.gz: 51999f39df9327e52fb8f27391b865fdceccba945a74d5ae11430de3b1128c9a6cc79894d53cb0e3b1b914df9f4fc46818242b72c8b3e174d80ace8f77161331
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
br_nfe (
|
4
|
+
br_nfe (3.0.0.beta.1)
|
5
5
|
activemodel (~> 4.2)
|
6
6
|
activesupport (~> 4.2)
|
7
7
|
nokogiri (~> 1.6)
|
@@ -73,7 +73,7 @@ GEM
|
|
73
73
|
gyoku (1.3.1)
|
74
74
|
builder (>= 2.1.2)
|
75
75
|
hashdiff (0.3.0)
|
76
|
-
httpi (2.4.
|
76
|
+
httpi (2.4.3)
|
77
77
|
rack
|
78
78
|
socksify
|
79
79
|
i18n (0.7.0)
|
data/README.markdown
CHANGED
@@ -420,7 +420,7 @@ Seja um contribuidor. Você pode contribuir de várias formas:
|
|
420
420
|
|
421
421
|
----------
|
422
422
|
|
423
|
-
|
423
|
+
¹ **Órgão Emissor: ** É a empresa contratada pela prefeitura com a finalidade de processar as notas fiscais. Exemplo: (Betha, Simpliss, Thema)
|
424
424
|
|
425
425
|
----------
|
426
426
|
|
data/br_nfe.gemspec
CHANGED
File without changes
|
data/lib/br_nfe/constants.rb
CHANGED
@@ -27,7 +27,7 @@ module BrNfe
|
|
27
27
|
'50', # Mato Grosso do Sul
|
28
28
|
'51', # Mato Grosso
|
29
29
|
'52', # Goiás
|
30
|
-
'53', # Distrito Federal
|
30
|
+
'53', # Distrito Federal
|
31
31
|
]
|
32
32
|
SIGLAS_UF = [
|
33
33
|
'AC', # Acre
|
@@ -60,7 +60,7 @@ module BrNfe
|
|
60
60
|
'EX' # Exterior
|
61
61
|
]
|
62
62
|
|
63
|
-
FORMAS_PAGAMENTO = [1, 2, 3, 4, 5, 10, 11, 12, 13, 99, '1', '2', '3', '4', '5', '01', '02', '03', '04', '05', '10', '11', '12', '13', '99']
|
63
|
+
FORMAS_PAGAMENTO = [1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 90, 99, '1', '2', '3', '4', '5', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '90', '99']
|
64
64
|
|
65
65
|
NFE_STATUS_SUCCESS = %w[100 101 102 103 104 107 111 112 124 128 135 138 139 140 150 151]
|
66
66
|
NFE_STATUS_PROCESSING = %w[105]
|
@@ -73,9 +73,9 @@ module BrNfe
|
|
73
73
|
#
|
74
74
|
# Nota 1: No caso de NFC-e informar indIEDest=9 e não informar
|
75
75
|
# a tag IE do destinatário;
|
76
|
-
# Nota 2: No caso de operação com o Exterior informar indIEDest=9 e
|
76
|
+
# Nota 2: No caso de operação com o Exterior informar indIEDest=9 e
|
77
77
|
# não informar a tag IE do destinatário;
|
78
|
-
# Nota 3: No caso de Contribuinte Isento de Inscrição (indIEDest=2),
|
78
|
+
# Nota 3: No caso de Contribuinte Isento de Inscrição (indIEDest=2),
|
79
79
|
# não informar a tag IE do destinatário.
|
80
80
|
#
|
81
81
|
def nf_xml_value_indicador_IE indicador_ie, nfe, xml_version=:v3_10
|
@@ -190,20 +190,15 @@ module BrNfe
|
|
190
190
|
def nf_xml_value_EAN ean, xml_version=:v3_10
|
191
191
|
if ean.to_i > 0
|
192
192
|
if "#{ean}".strip.size > 8
|
193
|
-
"#{ean}".strip.rjust(12, '0')
|
193
|
+
"#{ean}".strip.rjust(12, '0')
|
194
194
|
else
|
195
|
-
"#{ean}".strip.rjust(8, '0')
|
195
|
+
"#{ean}".strip.rjust(8, '0')
|
196
196
|
end
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
200
200
|
def nf_xml_value_NCM ncm, xml_version=:v3_10
|
201
|
-
ncm
|
202
|
-
if ncm > 0
|
203
|
-
"#{ncm}".rjust(8, '0')
|
204
|
-
else
|
205
|
-
"#{ncm}".rjust(2, '0')
|
206
|
-
end
|
201
|
+
"#{ncm}".rjust(8, '0')
|
207
202
|
end
|
208
203
|
|
209
204
|
def nf_xml_value_EXTIPI value, xml_version=:v3_10
|
@@ -223,7 +218,7 @@ module BrNfe
|
|
223
218
|
end
|
224
219
|
|
225
220
|
def nf_xml_value_drawback value, xml_version=:v3_10
|
226
|
-
if "#{value}".strip.size <= 9
|
221
|
+
if "#{value}".strip.size <= 9
|
227
222
|
only_numbers value, min_size: 9, max_size: 9
|
228
223
|
else
|
229
224
|
only_numbers value, min_size: 11, max_size: 11
|
@@ -13,8 +13,11 @@ module BrNfe
|
|
13
13
|
# 11=Vale Refeição
|
14
14
|
# 12=Vale Presente
|
15
15
|
# 13=Vale Combustível
|
16
|
+
# 14=Duplicata Mercantil
|
17
|
+
# 15=Boleto Bancário
|
18
|
+
# 90=Sem Pagamento
|
16
19
|
# 99=Outros
|
17
|
-
#
|
20
|
+
#
|
18
21
|
# <b>Type: </b> _Number_
|
19
22
|
# <b>Required: </b> _Yes_
|
20
23
|
# <b>Exemplo: </b> _1_ ou _'01'_
|
@@ -25,7 +28,7 @@ module BrNfe
|
|
25
28
|
alias_attribute :tPag, :forma_pagamento
|
26
29
|
|
27
30
|
# Valor do pagamento
|
28
|
-
#
|
31
|
+
#
|
29
32
|
# <b>Type: </b> _Float_
|
30
33
|
# <b>Required: </b> _Yes_
|
31
34
|
# <b>Exemplo: </b> _1500.50_
|
@@ -35,13 +38,13 @@ module BrNfe
|
|
35
38
|
alias_attribute :vPag, :total
|
36
39
|
|
37
40
|
# TIPO DE INTEGRAÇÃO COM O CARTÃO
|
38
|
-
# Tipo de Integração do processo de pagamento com o sistema de automação da empresa/
|
39
|
-
# 1 = Pagamento integrado com o sistema de automação da empresa Ex. equipamento TEF , Comercio Eletronico
|
41
|
+
# Tipo de Integração do processo de pagamento com o sistema de automação da empresa/
|
42
|
+
# 1 = Pagamento integrado com o sistema de automação da empresa Ex. equipamento TEF , Comercio Eletronico
|
40
43
|
# 2 = Pagamento não integrado com o sistema de automação da empresa Ex: equipamento POS
|
41
|
-
#
|
44
|
+
#
|
42
45
|
# <b>Type: </b> _Float_
|
43
46
|
# <b>Required: </b> _Yes_
|
44
|
-
# <b>Exemplo: </b>
|
47
|
+
# <b>Exemplo: </b> _2_
|
45
48
|
# <b>tag: </b> tpIntegra
|
46
49
|
#
|
47
50
|
attr_accessor :tipo_integracao
|
@@ -49,7 +52,7 @@ module BrNfe
|
|
49
52
|
|
50
53
|
# CNPJ da Credenciadora de cartão de crédito e/ou débito
|
51
54
|
# Informar o CNPJ da Credenciadora de cartão de crédito / débito
|
52
|
-
#
|
55
|
+
#
|
53
56
|
# <b>Type: </b> _String_
|
54
57
|
# <b>Required: </b> _Yes_ (if forma_pagamento IN [3, 4] )
|
55
58
|
# <b>Exemplo: </b> _12.123.456/0001-88_ ou _12345678901234_
|
@@ -67,8 +70,13 @@ module BrNfe
|
|
67
70
|
# 02=Mastercard
|
68
71
|
# 03=American Express
|
69
72
|
# 04=Sorocred
|
73
|
+
# 05=Diners Club
|
74
|
+
# 06=Elo
|
75
|
+
# 07=Hipercard
|
76
|
+
# 08=Aura
|
77
|
+
# 09=Cabal
|
70
78
|
# 99=Outros
|
71
|
-
#
|
79
|
+
#
|
72
80
|
# <b>Type: </b> _Number_
|
73
81
|
# <b>Required: </b> _Yes_ (if forma_pagamento IN [3, 4] )
|
74
82
|
# <b>Exemplo: </b> _1_ ou _'02'_
|
@@ -78,7 +86,7 @@ module BrNfe
|
|
78
86
|
alias_attribute :tBand, :cartao_bandeira
|
79
87
|
|
80
88
|
# Número de autorização da operação cartão de crédito e/ou débito.
|
81
|
-
# Identifica o número da autorização da transação da operação com
|
89
|
+
# Identifica o número da autorização da transação da operação com
|
82
90
|
# cartão de crédito e/ou débito
|
83
91
|
#
|
84
92
|
# <b>Type: </b> _String_
|
@@ -89,22 +97,41 @@ module BrNfe
|
|
89
97
|
attr_accessor :cartao_autorizacao
|
90
98
|
alias_attribute :cAut, :cartao_autorizacao
|
91
99
|
|
100
|
+
# Indicador da forma de pagamento
|
101
|
+
# 0=Pagamento à vista; (Default)
|
102
|
+
# 1=Pagamento a prazo;
|
103
|
+
#
|
104
|
+
# <b>Type: </b> _Number_ OR _String_
|
105
|
+
# <b>Required: </b> _Yes_
|
106
|
+
# <b>Default: </b> _0_
|
107
|
+
# <b>Length: </b> _1_
|
108
|
+
# <b>tag: </b> indPag (ID: YA01b)
|
109
|
+
#
|
110
|
+
attr_accessor :indicacao_pagamento
|
111
|
+
alias_attribute :indPag, :indicacao_pagamento
|
112
|
+
|
113
|
+
def default_values
|
114
|
+
{
|
115
|
+
indicacao_pagamento: 0,
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
92
119
|
validates :forma_pagamento, :total, presence: true
|
93
120
|
validates :forma_pagamento, inclusion: {in: BrNfe::Constants::FORMAS_PAGAMENTO}
|
94
121
|
validates :total, numericality: {greater_than_or_equal_to: 0.0}
|
95
|
-
|
122
|
+
|
96
123
|
with_options if: :cartao? do |record|
|
97
124
|
record.validates :cartao_cnpj, :cartao_bandeira, :cartao_autorizacao, presence: true
|
98
125
|
record.validates :cartao_cnpj, length: {maximum: 14}
|
99
126
|
record.validates :cartao_autorizacao, length: {maximum: 20}
|
100
|
-
record.validates :cartao_bandeira, inclusion: {in: [1, 2, 3, 4, 99, '1', '2', '3', '4', '01', '02', '03', '04', '99']}
|
127
|
+
record.validates :cartao_bandeira, inclusion: {in: [1, 2, 3, 4, 5, 6, 7, 8, 9, 99, '1', '2', '3', '4', '5', '6', '7', '8', '9', '01', '02', '03', '04', '05', '06', '07', '08', '09', '99']}
|
101
128
|
end
|
102
129
|
|
103
130
|
|
104
131
|
def cartao?
|
105
132
|
forma_pagamento.to_i.in?([3, 4])
|
106
133
|
end
|
107
|
-
|
134
|
+
|
108
135
|
end
|
109
136
|
end
|
110
137
|
end
|
@@ -6,7 +6,7 @@ module BrNfe
|
|
6
6
|
############################ INFORMAÇÕES DO PRODUTO ############################
|
7
7
|
# Utilizado apenas para fins de validação.
|
8
8
|
# informa se o item da NF-e é um produto ou um serviço.
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# <b>Type: </b> _Symbol_
|
11
11
|
# <b>Required: </b> _Yes_
|
12
12
|
# <b>Default: </b> _:product_
|
@@ -22,7 +22,7 @@ module BrNfe
|
|
22
22
|
#
|
23
23
|
# OBS: Caso não seja preenchido irá pegar automaticamente o valor
|
24
24
|
# da CFOP.
|
25
|
-
#
|
25
|
+
#
|
26
26
|
# <b>Type: </b> _String_
|
27
27
|
# <b>Required: </b> _Yes_
|
28
28
|
# <b>Default: </b> _CFOP#{cfop}_
|
@@ -38,11 +38,11 @@ module BrNfe
|
|
38
38
|
alias_attribute :cProd, :codigo_produto
|
39
39
|
|
40
40
|
# GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barras
|
41
|
-
# Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14
|
42
|
-
# (antigos códigos EAN, UPC e DUN-14), não informar o conteúdo da TAG
|
41
|
+
# Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14
|
42
|
+
# (antigos códigos EAN, UPC e DUN-14), não informar o conteúdo da TAG
|
43
43
|
# em caso de o produto não possuir este código.
|
44
44
|
#
|
45
|
-
# OBS: esse atributo sempre vai retornar apenas os números setados
|
45
|
+
# OBS: esse atributo sempre vai retornar apenas os números setados
|
46
46
|
#
|
47
47
|
# <b>Type: </b> _Number_
|
48
48
|
# <b>Required: </b> _No_
|
@@ -58,7 +58,7 @@ module BrNfe
|
|
58
58
|
end
|
59
59
|
|
60
60
|
# Descrição do produto ou serviço
|
61
|
-
#
|
61
|
+
#
|
62
62
|
# <b>Type: </b> _String_
|
63
63
|
# <b>Required: </b> _Yes_
|
64
64
|
# <b>Example: </b> _COPO DE PLÁSTICO 700 ML PARATA_
|
@@ -68,15 +68,15 @@ module BrNfe
|
|
68
68
|
attr_accessor :descricao_produto
|
69
69
|
alias_attribute :xProd, :descricao_produto
|
70
70
|
|
71
|
-
# Código NCM com 8 dígitos
|
71
|
+
# Código NCM com 8 dígitos
|
72
72
|
# Obrigatória informação do NCM completo (8 dígitos).
|
73
73
|
# Nota: Em caso de item de serviço ou item que não tenham
|
74
74
|
# produto (ex. transferência de crédito, crédito do ativo
|
75
|
-
# imobilizado, etc.), informar o valor 00 (dois zeros).
|
75
|
+
# imobilizado, etc.), informar o valor 00 (dois zeros).
|
76
76
|
# (NT 2014/004)
|
77
77
|
#
|
78
78
|
# OBS: esse atributo sempre vai retornar apenas os números
|
79
|
-
#
|
79
|
+
#
|
80
80
|
# <b>Type: </b> _Number_
|
81
81
|
# <b>Required: </b> _Yes_
|
82
82
|
# <b>Example: </b> _'12345678'_ OR _123454_
|
@@ -97,7 +97,7 @@ module BrNfe
|
|
97
97
|
# Formato: duas letras maiúsculas e 4 algarismos. Se a
|
98
98
|
# mercadoria se enquadrar em mais de uma codificação, informar
|
99
99
|
# até 8 codificações principais. Vide: Anexo XII.03 - Identificador NVE.
|
100
|
-
#
|
100
|
+
#
|
101
101
|
# <b>Type: </b> _Array_
|
102
102
|
# <b>Required: </b> _No_
|
103
103
|
# <b>Example: </b> _['AB12324','AB5678'] OU 'AB4567'_
|
@@ -131,7 +131,7 @@ module BrNfe
|
|
131
131
|
#
|
132
132
|
# OBS: esse atributo sempre vai retornar apenas os números
|
133
133
|
# EX: Se preencher com '5.102' vai retornar '5102'
|
134
|
-
#
|
134
|
+
#
|
135
135
|
# <b>Type: </b> _String_ OR _Number_
|
136
136
|
# <b>Required: </b> _Yes_
|
137
137
|
# <b>Example: </b> _'5.102'_ OR _5102_
|
@@ -145,7 +145,7 @@ module BrNfe
|
|
145
145
|
alias_attribute :CFOP, :cfop
|
146
146
|
|
147
147
|
# Unidade Comercial
|
148
|
-
# informar a unidade de comercialização do produto
|
148
|
+
# informar a unidade de comercialização do produto
|
149
149
|
# (Ex. pc, und, dz, kg, etc.).
|
150
150
|
#
|
151
151
|
# <b>Type: </b> _String_
|
@@ -197,14 +197,14 @@ module BrNfe
|
|
197
197
|
attr_accessor :valor_total_produto
|
198
198
|
alias_attribute :vProd, :valor_total_produto
|
199
199
|
|
200
|
-
# GTIN (Global Trade Item Number) da unidade tributável,
|
200
|
+
# GTIN (Global Trade Item Number) da unidade tributável,
|
201
201
|
# antigo código EAN ou código de barras
|
202
|
-
# Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14
|
202
|
+
# Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14
|
203
203
|
# (antigos códigos EAN, UPC e DUN-14) da unidade tributável
|
204
204
|
# do produto, não informar o conteúdo da TAG em caso de o
|
205
205
|
# produto não possuir este código.
|
206
206
|
#
|
207
|
-
# OBS: esse atributo sempre vai retornar apenas os números setados
|
207
|
+
# OBS: esse atributo sempre vai retornar apenas os números setados
|
208
208
|
#
|
209
209
|
# <b>Type: </b> _Number_
|
210
210
|
# <b>Required: </b> _No_
|
@@ -220,7 +220,7 @@ module BrNfe
|
|
220
220
|
alias_attribute :cEANTrib, :codigo_ean_tributavel
|
221
221
|
|
222
222
|
# Unidade Tributável
|
223
|
-
# Informar a unidade de tributação do produto
|
223
|
+
# Informar a unidade de tributação do produto
|
224
224
|
# (Ex. pc, und, dz, kg, etc.).
|
225
225
|
#
|
226
226
|
# <b>Type: </b> _String_
|
@@ -238,20 +238,20 @@ module BrNfe
|
|
238
238
|
# Quantidade Tributável
|
239
239
|
# Informar a quantidade de tributação do produto (v2.0).
|
240
240
|
#
|
241
|
-
# NOTA: Por termos diversos casos na legislação onde a tributação
|
242
|
-
# incide em unidades de produtos diferentes da que ele é costumeiramente
|
243
|
-
# vendido no mercado, especialmente no atacado. Ou seja, a unidade tributa
|
244
|
-
# é diferente da unidade comercializada, por este motivo é que foram criados
|
245
|
-
# os respectivos campos na NF-e (uCom, qCom e vCom) (uTrib, qTrib e vUnTrib),
|
241
|
+
# NOTA: Por termos diversos casos na legislação onde a tributação
|
242
|
+
# incide em unidades de produtos diferentes da que ele é costumeiramente
|
243
|
+
# vendido no mercado, especialmente no atacado. Ou seja, a unidade tributa
|
244
|
+
# é diferente da unidade comercializada, por este motivo é que foram criados
|
245
|
+
# os respectivos campos na NF-e (uCom, qCom e vCom) (uTrib, qTrib e vUnTrib),
|
246
246
|
# sendo que o resultado (qCom * uCom) seja igual a (qTrib * uTrib).
|
247
|
-
# Tomemos como exemplo o refrigerante pet de 2 litros que tem
|
248
|
-
# definido na pauta fiscal a “unidade tributável” como garrafa de 2litros,
|
247
|
+
# Tomemos como exemplo o refrigerante pet de 2 litros que tem
|
248
|
+
# definido na pauta fiscal a “unidade tributável” como garrafa de 2litros,
|
249
249
|
# sendo que o fabricante comercializa o mesmo produto em pacote com 6 unidades.
|
250
|
-
# Assim na venda de 2 pacotes, temos como unidade comercial de 2 unidades
|
250
|
+
# Assim na venda de 2 pacotes, temos como unidade comercial de 2 unidades
|
251
251
|
# que equivalem a 12 litros (2 x 6), com 2 litros cada.
|
252
252
|
# Na unidade tributável, temos também 12 unidades tributáveis (12 x 1 unidade de 2 litros).
|
253
253
|
# Observem que sempre qCom * uCom = qTrib * uTrib.
|
254
|
-
# É importante ressaltar que na maioria dos casos a unidade comercial e a
|
254
|
+
# É importante ressaltar que na maioria dos casos a unidade comercial e a
|
255
255
|
# unidade tributável são iguais.
|
256
256
|
# Fonte: http://www.tecnospeed.com.br/forum/o-contador/motivo-da-rejeicao-nos-campos-unidade-tributave-e-unidade-comercial/
|
257
257
|
#
|
@@ -359,6 +359,53 @@ module BrNfe
|
|
359
359
|
attr_accessor :codigo_cest
|
360
360
|
alias_attribute :CEST, :codigo_cest
|
361
361
|
|
362
|
+
# INDICADOR DE ESCALA RELEVANTE
|
363
|
+
# Indicador de Produção em escala relevante, conforme
|
364
|
+
# Cláusula 23 do Convenio ICMS 52/2017:
|
365
|
+
# S - Produzido em Escala Relevante;
|
366
|
+
# N - Produzido em Escala NÃO Relevante.
|
367
|
+
# Nota: preenchimento obrigatório para produtos com NCM
|
368
|
+
# relacionado no Anexo XXVII do Convenio 52/2017.
|
369
|
+
#
|
370
|
+
# Caso você informe que um produto é emitido em escala não relevante, é
|
371
|
+
# obrigatório a informação do CNPJ do fabricante (campo CNPJFab)
|
372
|
+
#
|
373
|
+
# <b>Type: </b> _String_
|
374
|
+
# <b>Required: </b> _No_
|
375
|
+
# <b>Example: </b> _N_
|
376
|
+
# <b>Length: </b> _1_
|
377
|
+
# <b>tag: </b> indEscala
|
378
|
+
#
|
379
|
+
attr_accessor :escala_relevante
|
380
|
+
alias_attribute :indEscala, :escala_relevante
|
381
|
+
|
382
|
+
# CNPJ DO FABRICANTE DA MERCADORIA
|
383
|
+
# ICNPJ do Fabricante da Mercadoria, obrigatório para
|
384
|
+
# produto em escala NÃO relevante
|
385
|
+
#
|
386
|
+
# <b>Type: </b> _Number_
|
387
|
+
# <b>Required: </b> _No_
|
388
|
+
# <b>Example: </b> _12345678901234_
|
389
|
+
# <b>Length: </b> _14_
|
390
|
+
# <b>tag: </b> CNPJFab
|
391
|
+
#
|
392
|
+
attr_accessor :cnpj_fabricante
|
393
|
+
alias_attribute :CNPJFab, :cnpj_fabricante
|
394
|
+
|
395
|
+
# CÓDIGO DE BENEFÍCIO FISCAL NA UF APLICADO AO ITEM
|
396
|
+
# Código de Benefício Fiscal utilizado pela UF, aplicado ao item.
|
397
|
+
# Obs.: Deve ser utilizado o mesmo código adotado na EFD
|
398
|
+
# e outras declarações, nas UF que o exigem.
|
399
|
+
#
|
400
|
+
# <b>Type: </b> _String_
|
401
|
+
# <b>Required: </b> _No_
|
402
|
+
# <b>Example: </b> _1234567890_
|
403
|
+
# <b>Length: </b> _10_
|
404
|
+
# <b>tag: </b> cBenef
|
405
|
+
#
|
406
|
+
attr_accessor :codigo_beneficio_fiscal
|
407
|
+
alias_attribute :cBenef, :codigo_beneficio_fiscal
|
408
|
+
|
362
409
|
# Declaração de Importação
|
363
410
|
# Informar dados da importação
|
364
411
|
#
|
@@ -370,7 +417,7 @@ module BrNfe
|
|
370
417
|
#
|
371
418
|
has_many :declaracoes_importacao, 'BrNfe.declaracao_importacao_product_class'
|
372
419
|
alias_attribute :DI, :declaracoes_importacao
|
373
|
-
|
420
|
+
|
374
421
|
# GRUPO DE INFORMAÇÕES DE EXPORTAÇÃO PARA O ITEM
|
375
422
|
# Informar apenas no Drawback e nas exportações
|
376
423
|
#
|
@@ -474,7 +521,7 @@ module BrNfe
|
|
474
521
|
#
|
475
522
|
has_one :icms, 'BrNfe.icms_item_tax_product_class', null: false
|
476
523
|
alias_attribute :ICMS, :icms
|
477
|
-
|
524
|
+
|
478
525
|
# IMPOSTO SOBRE PRODUTOS INDUSTRIALIZADOS - IPI
|
479
526
|
# Informar apenas quando o item for sujeito ao IPI
|
480
527
|
#
|
@@ -485,7 +532,7 @@ module BrNfe
|
|
485
532
|
#
|
486
533
|
has_one :ipi, 'BrNfe.ipi_item_tax_product_class'
|
487
534
|
alias_attribute :IPI, :ipi
|
488
|
-
|
535
|
+
|
489
536
|
# Imposto de Importação - II
|
490
537
|
# Informar apenas quando o item for sujeito ao II
|
491
538
|
#
|
@@ -518,7 +565,7 @@ module BrNfe
|
|
518
565
|
#
|
519
566
|
has_one :pis_st, 'BrNfe.pis_st_item_tax_product_class'
|
520
567
|
alias_attribute :PISST, :pis_st
|
521
|
-
|
568
|
+
|
522
569
|
# GRUPO COFINS
|
523
570
|
# Informar apenas um dos grupos S02, S03, S04 ou S04 com
|
524
571
|
# base valor atribuído ao campo de CST da COFINS
|
@@ -530,7 +577,7 @@ module BrNfe
|
|
530
577
|
#
|
531
578
|
has_one :cofins, 'BrNfe.cofins_item_tax_product_class', null: false
|
532
579
|
alias_attribute :COFINS, :cofins
|
533
|
-
|
580
|
+
|
534
581
|
# GRUPO COFINS SUBSTITUIÇÃO TRIBUTÁRIA - COFINS ST
|
535
582
|
#
|
536
583
|
# <b>Type: </b> _HasOne_
|
@@ -540,7 +587,7 @@ module BrNfe
|
|
540
587
|
#
|
541
588
|
has_one :cofins_st, 'BrNfe.cofins_st_item_tax_product_class'
|
542
589
|
alias_attribute :COFINSST, :cofins_st
|
543
|
-
|
590
|
+
|
544
591
|
# GRUPO ISSQN
|
545
592
|
# Campos para cálculo do ISSQN na NF-e conjugada, onde há a
|
546
593
|
# prestação de serviços sujeitos ao ISSQN e fornecimento de
|
@@ -556,7 +603,7 @@ module BrNfe
|
|
556
603
|
#
|
557
604
|
has_one :issqn, 'BrNfe.issqn_item_tax_product_class'
|
558
605
|
alias_attribute :ISSQN, :issqn
|
559
|
-
|
606
|
+
|
560
607
|
# Grupo de Tributação do ICMS para a UF de destino
|
561
608
|
# Grupo a ser informado nas vendas interestaduais para
|
562
609
|
# consumidor final, não contribuinte do ICMS.
|
@@ -630,18 +677,18 @@ module BrNfe
|
|
630
677
|
validates :unidade_tributavel, length: {maximum: 6}, allow_blank: true
|
631
678
|
validates :valor_unitario_tributavel, presence: true
|
632
679
|
validates :valor_unitario_tributavel, numericality: true
|
633
|
-
|
680
|
+
|
634
681
|
validates :total_frete, numericality: true, allow_blank: true
|
635
682
|
validates :total_seguro, numericality: true, allow_blank: true
|
636
683
|
validates :total_desconto, numericality: true, allow_blank: true
|
637
684
|
validates :total_outros, numericality: true, allow_blank: true
|
638
|
-
|
685
|
+
|
639
686
|
validates :codigo_cest, length: {maximum: 7}
|
640
|
-
|
687
|
+
|
641
688
|
validate_has_many :declaracoes_importacao, message: :invalid_declaracao_importacao
|
642
689
|
validates :declaracoes_importacao, length: {maximum: 100}
|
643
690
|
validate_has_many :detalhes_exportacao, message: :invalid_detalhe_exportacao
|
644
|
-
|
691
|
+
|
645
692
|
validates :numero_pedido_compra, length: {maximum: 15}
|
646
693
|
validates :item_pedido_compra, length: {maximum: 6}
|
647
694
|
|