nfe_reader 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/lib/nfe_reader.rb +4 -4
  4. data/lib/nfe_reader/address.rb +38 -0
  5. data/lib/nfe_reader/authorization.rb +8 -10
  6. data/lib/nfe_reader/billing.rb +21 -0
  7. data/lib/nfe_reader/billing/duplicate.rb +14 -0
  8. data/lib/nfe_reader/carrier.rb +12 -14
  9. data/lib/nfe_reader/customer.rb +15 -57
  10. data/lib/nfe_reader/delivery.rb +16 -18
  11. data/lib/nfe_reader/document.rb +63 -65
  12. data/lib/nfe_reader/export.rb +8 -10
  13. data/lib/nfe_reader/fiscal.rb +29 -31
  14. data/lib/nfe_reader/header.rb +114 -123
  15. data/lib/nfe_reader/helpers/attribute_helper.rb +24 -0
  16. data/lib/nfe_reader/helpers/creator_helper.rb +40 -0
  17. data/lib/{helpers → nfe_reader/helpers}/nokogiri_hash.rb +2 -0
  18. data/lib/nfe_reader/information.rb +17 -19
  19. data/lib/nfe_reader/nfe.rb +78 -87
  20. data/lib/nfe_reader/person.rb +53 -0
  21. data/lib/nfe_reader/product.rb +69 -67
  22. data/lib/nfe_reader/product/armament.rb +18 -20
  23. data/lib/nfe_reader/product/cane.rb +22 -24
  24. data/lib/nfe_reader/product/exportation.rb +15 -17
  25. data/lib/nfe_reader/product/fuel.rb +13 -15
  26. data/lib/nfe_reader/product/importation.rb +42 -44
  27. data/lib/nfe_reader/product/medicament.rb +15 -17
  28. data/lib/nfe_reader/product/vehicle.rb +113 -115
  29. data/lib/nfe_reader/provider.rb +10 -40
  30. data/lib/nfe_reader/purchase.rb +9 -12
  31. data/lib/nfe_reader/removal.rb +17 -19
  32. data/lib/nfe_reader/taxation/cofins.rb +41 -41
  33. data/lib/nfe_reader/taxation/cofins_st.rb +15 -17
  34. data/lib/nfe_reader/taxation/icms.rb +80 -81
  35. data/lib/nfe_reader/taxation/importation_tax.rb +14 -16
  36. data/lib/nfe_reader/taxation/ipi.rb +35 -37
  37. data/lib/nfe_reader/taxation/issqn.rb +17 -19
  38. data/lib/nfe_reader/taxation/pis.rb +41 -41
  39. data/lib/nfe_reader/taxation/pis_st.rb +16 -18
  40. data/lib/nfe_reader/total.rb +71 -71
  41. data/lib/nfe_reader/transport.rb +76 -89
  42. data/lib/nfe_reader/version.rb +2 -4
  43. data/nfe-reader.gemspec +2 -1
  44. data/test/nfe_reader/address_test.rb +75 -0
  45. data/test/nfe_reader/authorization_test.rb +2 -2
  46. data/test/nfe_reader/{collection → billing}/duplicate_test.rb +2 -2
  47. data/test/nfe_reader/{collection_test.rb → billing_test.rb} +13 -13
  48. data/test/nfe_reader/cane_test.rb +2 -2
  49. data/test/nfe_reader/carrier_test.rb +4 -4
  50. data/test/nfe_reader/customer_test.rb +6 -101
  51. data/test/nfe_reader/delivery_test.rb +2 -2
  52. data/test/nfe_reader/document_test.rb +2 -2
  53. data/test/nfe_reader/export_test.rb +2 -2
  54. data/test/nfe_reader/fiscal_test.rb +2 -2
  55. data/test/nfe_reader/header_test.rb +2 -2
  56. data/test/{helpers → nfe_reader/helpers}/attributte_helper_test.rb +3 -3
  57. data/test/{helpers → nfe_reader/helpers}/creator_helper_test.rb +3 -3
  58. data/test/{helpers → nfe_reader/helpers}/nokogiri_test.rb +1 -1
  59. data/test/nfe_reader/information_test.rb +2 -2
  60. data/test/nfe_reader/nfe_test.rb +13 -13
  61. data/test/nfe_reader/person_test.rb +60 -0
  62. data/test/nfe_reader/product/armament_test.rb +2 -2
  63. data/test/nfe_reader/product/exportation_test.rb +2 -2
  64. data/test/nfe_reader/product/fuel_test.rb +2 -2
  65. data/test/nfe_reader/product/importation_test.rb +2 -2
  66. data/test/nfe_reader/product/medicament_test.rb +2 -2
  67. data/test/nfe_reader/product/vehicle_test.rb +2 -2
  68. data/test/nfe_reader/product_test.rb +2 -2
  69. data/test/nfe_reader/provider_test.rb +5 -118
  70. data/test/nfe_reader/purchase_test.rb +2 -2
  71. data/test/nfe_reader/removal_test.rb +2 -2
  72. data/test/nfe_reader/taxation/cofins_st_test.rb +2 -2
  73. data/test/nfe_reader/taxation/cofins_test.rb +2 -2
  74. data/test/nfe_reader/taxation/icms_test.rb +2 -2
  75. data/test/nfe_reader/taxation/importation_tax_test.rb +2 -2
  76. data/test/nfe_reader/taxation/ipi_test.rb +2 -2
  77. data/test/nfe_reader/taxation/issqn_test.rb +2 -2
  78. data/test/nfe_reader/taxation/pis_st_test.rb +2 -2
  79. data/test/nfe_reader/taxation/pis_test.rb +2 -2
  80. data/test/nfe_reader/total_test.rb +2 -2
  81. data/test/nfe_reader/transport_test.rb +3 -3
  82. metadata +37 -17
  83. data/lib/helpers/attribute_helper.rb +0 -18
  84. data/lib/helpers/creator_helper.rb +0 -32
  85. data/lib/nfe_reader/collection.rb +0 -38
  86. data/lib/nfe_reader/collection/duplicate.rb +0 -16
@@ -1,46 +1,16 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- # Identificação do Emitente da Nota Fiscal eletrônica
5
- class Provider
6
- include ::AttributeHelper
2
+ module NfeReader
3
+ # Identificação do Emitente da Nota Fiscal eletrônica
4
+ class Provider
5
+ attr_reader :person, :address
7
6
 
8
- attr_reader :cnpj, :cpf, :name, :phone, :state_registration, :state_registration_st,
9
- :city_registration, :regime, :cnae, :address, :number, :complement, :neighborhood,
10
- :city_code, :city, :zip_code, :country_code, :country, :fantasy, :state
7
+ def initialize(attrs = {})
8
+ # Person
9
+ @person = Person.new(attrs)
11
10
 
12
- # == Fields Values
13
- #
14
- # CRT: 1 - Simples Nacional,
15
- # 2 - Simples Nacional – excesso de sublimite de receita bruta,
16
- # 3 - Regime Normal
17
- #
18
- def initialize(attrs = {})
19
- # Provider Info
20
- @cnpj = attrs[:CNPJ]
21
- @cpf = attrs[:CPF]
22
- @name = attrs[:xNome]
23
- @fantasy = attrs[:xFant]
24
- @state_registration = attrs[:IE]
25
- @state_registration_st = attrs[:IEST]
26
- @city_registration = attrs[:IM]
27
- @regime = attrs[:CRT]
28
- @cnae = attrs[:CNAE]
29
-
30
- # Address
31
- if attrs[:enderEmit]
32
- @phone = attrs[:enderEmit][:fone]
33
- @address = attrs[:enderEmit][:xLgr]
34
- @number = attrs[:enderEmit][:nro]
35
- @complement = attrs[:enderEmit][:xCpl]
36
- @neighborhood = attrs[:enderEmit][:xBairro]
37
- @city_code = attrs[:enderEmit][:cMun]
38
- @city = attrs[:enderEmit][:xMun]
39
- @zip_code = attrs[:enderEmit][:CEP]
40
- @country_code = attrs[:enderEmit][:cPais]
41
- @country = attrs[:enderEmit][:xPais]
42
- @state = attrs[:enderEmit][:UF]
43
- end
11
+ # Address
12
+ if attrs[:enderEmit]
13
+ @address = Address.new(attrs[:enderEmit])
44
14
  end
45
15
  end
46
16
  end
@@ -1,18 +1,15 @@
1
1
  # encoding: UTF-8
2
+ module NfeReader
3
+ # Informações de Compras
4
+ class Purchase
5
+ include AttributeHelper
2
6
 
3
- # Informações de Compras
4
- module Nfe
5
- module Reader
6
- class Purchase
7
- include ::AttributeHelper
7
+ attr_reader :number, :demand, :contract
8
8
 
9
- attr_reader :number, :demand, :contract
10
-
11
- def initialize(attrs = {})
12
- @number = attrs[:xNEmp]
13
- @demand = attrs[:xPed]
14
- @contract = attrs[:xCont]
15
- end
9
+ def initialize(attrs = {})
10
+ @number = attrs[:xNEmp]
11
+ @demand = attrs[:xPed]
12
+ @contract = attrs[:xCont]
16
13
  end
17
14
  end
18
15
  end
@@ -1,24 +1,22 @@
1
- # Local de Retirada
2
- module Nfe
3
- module Reader
4
- # Identificação do Local de Retirada
5
- class Removal
6
- include ::AttributeHelper
1
+ # encoding: UTF-8
2
+ module NfeReader
3
+ # Identificação do Local de Retirada
4
+ class Removal
5
+ include AttributeHelper
7
6
 
8
- attr_reader :cnpj, :cpf, :address, :number, :complement,
9
- :neighborhood, :city_code, :city, :state
7
+ attr_reader :cnpj, :cpf, :address, :number, :complement,
8
+ :neighborhood, :city_code, :city, :state
10
9
 
11
- def initialize(attrs = {})
12
- @cnpj = attrs[:CNPJ]
13
- @cpf = attrs[:CPF]
14
- @address = attrs[:xLgr]
15
- @number = attrs[:nro]
16
- @complement = attrs[:xCpl]
17
- @neighborhood = attrs[:xBairro]
18
- @city_code = attrs[:cMun]
19
- @city = attrs[:xMun]
20
- @state = attrs[:UF]
21
- end
10
+ def initialize(attrs = {})
11
+ @cnpj = attrs[:CNPJ]
12
+ @cpf = attrs[:CPF]
13
+ @address = attrs[:xLgr]
14
+ @number = attrs[:nro]
15
+ @complement = attrs[:xCpl]
16
+ @neighborhood = attrs[:xBairro]
17
+ @city_code = attrs[:cMun]
18
+ @city = attrs[:xMun]
19
+ @state = attrs[:UF]
22
20
  end
23
21
  end
24
22
  end
@@ -1,47 +1,47 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Cofins
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Cofins
4
+ include AttributeHelper
6
5
 
7
- attr_reader :cst, :base, :percentage, :value, :amount,
8
- :aliquot
6
+ attr_reader :cst, :base, :percentage, :value, :amount,
7
+ :aliquot
9
8
 
10
- # Fieds Values
11
- #
12
- # cst:
13
- # COFINSAliq:
14
- # 01 - Operação Tributável
15
- # (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
16
- # 02 - Operação Tributável
17
- # (base de cálculo = valor da operação (alíquota diferenciada));
18
- # COFINSQtde:
19
- # 03 - Operação Tributável
20
- # (base de cálculo = quantidade vendida x alíquota por unidadede produto);
21
- # COFINSNT:
22
- # 04 - Operação Tributável
23
- # (tributação monofásica(alíquota zero));
24
- # 06 - Operação Tributável(alíquota zero);
25
- # 07 - Operação Isenta da Contribuição;
26
- # 08 - Operação Sem Incidência da Contribuição;
27
- # 09 - Operação com Suspensão da Contribuição;
28
- # COFINSOutr:
29
- # 99 - Outras Operações;
30
- #
31
- def initialize(attrs = {})
32
- # Cst COFINS
33
- @cst = attrs[:CST]
34
- # Base COFINS
35
- @base = attrs[:vBC]
36
- # % COFINS
37
- @percentage = attrs[:pCOFINS]
38
- # Valor COFINS
39
- @value = attrs[:vCOFINS]
40
- # Quantidade Vendida
41
- @amount = attrs[:qBCProd]
42
- # Alíquota do COFINS
43
- @aliquot = attrs[:vAliqProd]
44
- end
9
+ # Fieds Values
10
+ #
11
+ # cst:
12
+ # COFINSAliq:
13
+ # 01 - Operação Tributável
14
+ # (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
15
+ # 02 - Operação Tributável
16
+ # (base de cálculo = valor da operação (alíquota diferenciada));
17
+ # COFINSQtde:
18
+ # 03 - Operação Tributável
19
+ # (base de cálculo = quantidade vendida x alíquota por unidadede produto);
20
+ # COFINSNT:
21
+ # 04 - Operação Tributável
22
+ # (tributação monofásica(alíquota zero));
23
+ # 06 - Operação Tributável(alíquota zero);
24
+ # 07 - Operação Isenta da Contribuição;
25
+ # 08 - Operação Sem Incidência da Contribuição;
26
+ # 09 - Operação com Suspensão da Contribuição;
27
+ # COFINSOutr:
28
+ # 99 - Outras Operações;
29
+ #
30
+ def initialize(attrs = {})
31
+ attrs = attrs.values[0]
32
+
33
+ # Cst COFINS
34
+ @cst = attrs[:CST]
35
+ # Base COFINS
36
+ @base = attrs[:vBC]
37
+ # % COFINS
38
+ @percentage = attrs[:pCOFINS]
39
+ # Valor COFINS
40
+ @value = attrs[:vCOFINS]
41
+ # Quantidade Vendida
42
+ @amount = attrs[:qBCProd]
43
+ # Alíquota do COFINS
44
+ @aliquot = attrs[:vAliqProd]
45
45
  end
46
46
  end
47
47
  end
@@ -1,23 +1,21 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class CofinsSt
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class CofinsSt
4
+ include AttributeHelper
6
5
 
7
- attr_reader :base, :percentage, :amount, :aliquot, :value
6
+ attr_reader :base, :percentage, :amount, :aliquot, :value
8
7
 
9
- def initialize(attrs = {})
10
- # Valor Base
11
- @base = attrs[:vBC]
12
- # % COFINS ST
13
- @percentage = attrs[:pCOFINS]
14
- # Quantidade
15
- @amount = attrs[:qBCProd]
16
- # Aliquota COFINS ST
17
- @aliquot = attrs[:vAliqProd]
18
- # Valor COFINS ST
19
- @value = attrs[:vCOFINS]
20
- end
8
+ def initialize(attrs = {})
9
+ # Valor Base
10
+ @base = attrs[:vBC]
11
+ # % COFINS ST
12
+ @percentage = attrs[:pCOFINS]
13
+ # Quantidade
14
+ @amount = attrs[:qBCProd]
15
+ # Aliquota COFINS ST
16
+ @aliquot = attrs[:vAliqProd]
17
+ # Valor COFINS ST
18
+ @value = attrs[:vCOFINS]
21
19
  end
22
20
  end
23
21
  end
@@ -1,90 +1,89 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Icms
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Icms
4
+ include AttributeHelper
6
5
 
7
- attr_reader :origin, :cst, :icms_percentage, :icms, :icms_base_kind,
8
- :icms_base, :icms_base_reduction, :icms_st_base_kind, :icms_st_base_reduction,
9
- :mva, :icms_st_base, :icms_st_percentage, :icms_st, :icms_st_base_retained_sender,
10
- :icms_st_retained_sender, :icms_st_base_retained, :icms_st_retained, :state,
11
- :retained_reason, :credit_percentage, :icms_credit, :sn_operation_code
6
+ attr_reader :origin, :cst, :icms_percentage, :icms, :icms_base_kind,
7
+ :icms_base, :icms_base_reduction, :icms_st_base_kind, :icms_st_base_reduction,
8
+ :mva, :icms_st_base, :icms_st_percentage, :icms_st, :icms_st_base_retained_sender,
9
+ :icms_st_retained_sender, :icms_st_base_retained, :icms_st_retained, :state,
10
+ :retained_reason, :credit_percentage, :icms_credit, :sn_operation_code
11
+
12
+ # == Field Values
13
+ #
14
+ # ori: 0 - Nacional
15
+ # 1 - Estrangeira - Importação direta
16
+ # 2 - Estrangeira – Adquirida no mercado interno.
17
+ #
18
+ # modBC: 0 - Margem Valor Agregado (%);
19
+ # 1 - Pauta (Valor);
20
+ # 2 - Preço Tabelado Máx. (valor);
21
+ # 3 - valor da operação.
22
+ #
23
+ # modBCST: 0 – Preço tabelado ou máximosugerido;
24
+ # 1 - Lista Negativa (valor);
25
+ # 2 - Lista Positiva (valor);
26
+ # 3 - Lista Neutra (valor);
27
+ # 4 - Margem Valor Agregado (%);
28
+ # 5 - Pauta (valor);
29
+
30
+ def initialize(attrs = {})
31
+ attrs = attrs.values[0]
32
+
33
+ # Origem da mercadoria
34
+ @origin = attrs[:orig] || attrs[:Orig]
35
+
36
+ # Tributação do ICMS
37
+ @cst = attrs[:CST]
12
38
 
13
- # == Field Values
39
+ # == ICMS
14
40
  #
15
- # ori: 0 - Nacional
16
- # 1 - Estrangeira - Importação direta
17
- # 2 - Estrangeira – Adquirida no mercado interno.
41
+ # % ICMS
42
+ @icms_percentage = attrs[:pICMS]
43
+ # Valor ICMS
44
+ @icms = attrs[:vICMS]
45
+ # Modalidade de determinação da BC do ICMS
46
+ @icms_base_kind = attrs[:modBC]
47
+ # Base ICMS
48
+ @icms_base = attrs[:vBC]
49
+ # % Redução Base ICMS
50
+ @icms_base_reduction = attrs[:pRedBC]
51
+
52
+ # == ICMS ST
18
53
  #
19
- # modBC: 0 - Margem Valor Agregado (%);
20
- # 1 - Pauta (Valor);
21
- # 2 - Preço Tabelado Máx. (valor);
22
- # 3 - valor da operação.
54
+ # Modalidade de determinação da BC do ICMS ST
55
+ @icms_st_base_kind = attrs[:modBCST]
56
+ # % redução Base ICMS ST
57
+ @icms_st_base_reduction = attrs[:pRedBCST]
58
+ # MVA ST
59
+ @mva = attrs[:pMVAST]
60
+ # Base ICMS ST
61
+ @icms_st_base = attrs[:vBCST]
62
+ # % ICMS ST
63
+ @icms_st_percentage = attrs[:pICMSST]
64
+ # Valor ICMS ST
65
+ @icms_st = attrs[:vICMSST]
66
+ # Valor do BC do ICMS ST Retido UF Remetente
67
+ @icms_st_base_retained_sender = attrs[:vBCSTRet]
68
+ # Valor ICMS ST Retido UF Remetente
69
+ @icms_st_retained_sender = attrs[:vICMSSTRet]
70
+ # Valor do BC do ICMS ST Retido UF Destiantaria
71
+ @icms_st_base_retained = attrs[:vBCSTDest]
72
+ # Valor ICMS ST Retido UF Destinataria
73
+ @icms_st_retained = attrs[:vICMSSTDes]
74
+ # UF para qual é devido o ICMS ST
75
+ @state = attrs[:UFST]
76
+
77
+ # == Simples Nacional
23
78
  #
24
- # modBCST: 0 Preço tabelado ou máximosugerido;
25
- # 1 - Lista Negativa (valor);
26
- # 2 - Lista Positiva (valor);
27
- # 3 - Lista Neutra (valor);
28
- # 4 - Margem Valor Agregado (%);
29
- # 5 - Pauta (valor);
30
-
31
- def initialize(attrs = {})
32
- # Origem da mercadoria
33
- @origin = attrs[:orig]
34
- @origin ||= attrs[:Orig]
35
-
36
- # Tributação do ICMS
37
- @cst = attrs[:CST]
38
-
39
- # == ICMS
40
- #
41
- # % ICMS
42
- @icms_percentage = attrs[:pICMS]
43
- # Valor ICMS
44
- @icms = attrs[:vICMS]
45
- # Modalidade de determinação da BC do ICMS
46
- @icms_base_kind = attrs[:modBC]
47
- # Base ICMS
48
- @icms_base = attrs[:vBC]
49
- # % Redução Base ICMS
50
- @icms_base_reduction = attrs[:pRedBC]
51
-
52
- # == ICMS ST
53
- #
54
- # Modalidade de determinação da BC do ICMS ST
55
- @icms_st_base_kind = attrs[:modBCST]
56
- # % redução Base ICMS ST
57
- @icms_st_base_reduction = attrs[:pRedBCST]
58
- # MVA ST
59
- @mva = attrs[:pMVAST]
60
- # Base ICMS ST
61
- @icms_st_base = attrs[:vBCST]
62
- # % ICMS ST
63
- @icms_st_percentage = attrs[:pICMSST]
64
- # Valor ICMS ST
65
- @icms_st = attrs[:vICMSST]
66
- # Valor do BC do ICMS ST Retido UF Remetente
67
- @icms_st_base_retained_sender = attrs[:vBCSTRet]
68
- # Valor ICMS ST Retido UF Remetente
69
- @icms_st_retained_sender = attrs[:vICMSSTRet]
70
- # Valor do BC do ICMS ST Retido UF Destiantaria
71
- @icms_st_base_retained = attrs[:vBCSTDest]
72
- # Valor ICMS ST Retido UF Destinataria
73
- @icms_st_retained = attrs[:vICMSSTDes]
74
- # UF para qual é devido o ICMS ST
75
- @state = attrs[:UFST]
76
-
77
- # == Simples Nacional
78
- #
79
- # Motivo da desoneração do ICMS
80
- @retained_reason = attrs[:motDesICMS]
81
- # Alíquota aplicável de cálculo do crédito
82
- @credit_percentage = attrs[:pCredSN]
83
- # Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123
84
- @icms_credit = attrs[:vCredICMSSN]
85
- # Código de Situação da Operação
86
- @sn_operation_code = attrs[:CSOSN]
87
- end
79
+ # Motivo da desoneração do ICMS
80
+ @retained_reason = attrs[:motDesICMS]
81
+ # Alíquota aplicável de cálculo do crédito
82
+ @credit_percentage = attrs[:pCredSN]
83
+ # Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123
84
+ @icms_credit = attrs[:vCredICMSSN]
85
+ # Código de Situação da Operação
86
+ @sn_operation_code = attrs[:CSOSN]
88
87
  end
89
88
  end
90
89
  end
@@ -1,21 +1,19 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class ImportationTax
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class ImportationTax
4
+ include AttributeHelper
6
5
 
7
- attr_reader :base, :expenditure, :taxes, :iof
8
-
9
- def initialize(attrs = {})
10
- # Base de Caluclo
11
- @base = attrs[:vBC]
12
- # Despesas Aduaneiras
13
- @expenditure = attrs[:vDespAdu]
14
- # Imposto de Importação
15
- @taxes = attrs[:vII]
16
- # IOF
17
- @iof = attrs[:vIOF]
18
- end
6
+ attr_reader :base, :expenditure, :taxes, :iof
7
+
8
+ def initialize(attrs = {})
9
+ # Base de Caluclo
10
+ @base = attrs[:vBC]
11
+ # Despesas Aduaneiras
12
+ @expenditure = attrs[:vDespAdu]
13
+ # Imposto de Importação
14
+ @taxes = attrs[:vII]
15
+ # IOF
16
+ @iof = attrs[:vIOF]
19
17
  end
20
18
  end
21
19
  end