br_nfe 2.3.2 → 3.0.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|