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.
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