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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/README.markdown +1 -1
  4. data/br_nfe.gemspec +0 -0
  5. data/lib/br_nfe/constants.rb +2 -2
  6. data/lib/br_nfe/product/nf_xml_value.rb +6 -11
  7. data/lib/br_nfe/product/nfe/cobranca/pagamento.rb +39 -12
  8. data/lib/br_nfe/product/nfe/item.rb +83 -36
  9. data/lib/br_nfe/product/nfe/item_tax/icms.rb +182 -46
  10. data/lib/br_nfe/product/nfe/item_tax/icms_uf_destino.rb +33 -22
  11. data/lib/br_nfe/product/nfe/item_tax/ipi.rb +18 -18
  12. data/lib/br_nfe/product/nfe/transporte/base.rb +17 -15
  13. data/lib/br_nfe/product/nota_fiscal.rb +72 -6
  14. data/lib/br_nfe/product/operation/base.rb +14 -13
  15. data/lib/br_nfe/product/reader/item.rb +19 -2
  16. data/lib/br_nfe/product/reader/nfe.rb +28 -9
  17. data/lib/br_nfe/product/xml/v3_10/infNFe/det/_tc_prod.xml.slim +2 -2
  18. data/lib/br_nfe/product/xml/v3_10/infNFe/det/imposto/_tc_ICMSUFDest.xml.slim +1 -1
  19. data/lib/br_nfe/product/xml/v4_00/_tc_infNFe.xml.slim +45 -0
  20. data/lib/br_nfe/product/xml/v4_00/infNFe/_tc_ide.xml.slim +30 -0
  21. data/lib/br_nfe/product/xml/v4_00/infNFe/_tc_total.xml.slim +84 -0
  22. data/lib/br_nfe/product/xml/v4_00/infNFe/det/_tc_prod.xml.slim +62 -0
  23. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS00.xml.slim +11 -0
  24. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS10.xml.slim +28 -0
  25. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS20.xml.slim +18 -0
  26. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS201.xml.slim +21 -0
  27. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS202.xml.slim +20 -0
  28. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS30.xml.slim +23 -0
  29. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS500.xml.slim +13 -0
  30. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS51.xml.slim +25 -0
  31. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS60.xml.slim +12 -0
  32. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS70.xml.slim +35 -0
  33. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS90.xml.slim +38 -0
  34. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/ICMS/_tc_ICMS900.xml.slim +31 -0
  35. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/_tc_ICMSUFDest.xml.slim +15 -0
  36. data/lib/br_nfe/product/xml/v4_00/infNFe/det/imposto/_tc_IPI.xml.slim +27 -0
  37. data/lib/br_nfe/product/xml/v4_00/infNFe/pag/_tc_detPag.xml.slim +17 -0
  38. data/lib/br_nfe/version.rb +4 -4
  39. data/lib/config/settings/nfe/reader_xml_paths.yml +40 -9
  40. data/lib/config/settings/nfe/v4_00/operation.yml +843 -0
  41. data/lib/config/settings/nfe/v4_00/soap_client.yml +807 -0
  42. data/lib/config/settings/nfe/v4_00/xml_paths.yml +577 -0
  43. data/test/br_nfe/product/nfe/item_tax/icms_uf_destino_test.rb +9 -8
  44. data/test/br_nfe/product/nota_fiscal_test.rb +28 -36
  45. data/test/br_nfe/product/reader/nfe_test.rb +31 -31
  46. data/test/factories/product/nfe/item_tax/icms_uf_destino.rb +1 -1
  47. data/test/factories/product/operation/nfe_autorizacao.rb +3 -3
  48. metadata +26 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d534d0464b7d4c1506c464e2674f2b37c6795c21
4
- data.tar.gz: e1c948e5ed5e2770b5c5f9d5b3401e7bffbeb091
3
+ metadata.gz: dc61633f3351001a44b643c587d569d2a812c4ff
4
+ data.tar.gz: eee81fd1f1921d09e7f1681290f7c6f67d1dd763
5
5
  SHA512:
6
- metadata.gz: 5b25d11716afeac88c6afc85f8e21712c437ea3b16b756eae3e246f36da608fa57c265a2279e426af3f1f5116ef0976aaba59ca467f7e6fa65b3212d826ced2f
7
- data.tar.gz: 1d082261be80b158cbc63855cabea10829f68e232f920fa2dec49d6ad71323ad0dc46c99fdc526e9f668c5f4d64a21db6cc9582baa863f8f39efb8f28a94cd82
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 (2.3.2)
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.2)
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
- > ¹ **Órgão Emissor: ** É a empresa contratada pela prefeitura com a finalidade de processar as notas fiscais. Exemplo: (Betha, Simpliss, Thema)
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
@@ -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 = ncm.to_i
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> _1500.50_
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