nfe_reader 1.0.5 → 1.0.6

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 (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,44 +1,42 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Ipi
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Ipi
4
+ include AttributeHelper
6
5
 
7
- attr_reader :frame_class, :frame_code, :cnpj, :seal, :seal_amount,
8
- :cst, :ipi_base, :amount, :value_unit, :percentage, :value, :cst_group
6
+ attr_reader :frame_class, :frame_code, :cnpj, :seal, :seal_amount,
7
+ :cst, :ipi_base, :amount, :value_unit, :percentage, :value, :cst_group
9
8
 
10
- def initialize(attrs = {})
11
- # Classe de enquadramento do IPI para Cigarros e Bebidas
12
- @frame_class = attrs[:clEnq]
13
- # Codigo enquadramento
14
- @frame_code = attrs[:cEnq]
15
- # CNPJ do produtor
16
- @cnpj = attrs[:CNPJProd]
17
- # Código do selo de controle
18
- @seal = attrs[:cSelo]
19
- # Quantidade do selo de controle
20
- @seal_amount = attrs[:qSelo]
21
-
22
- # == Tributação
23
- if attrs[:IPITrib]
24
- # Código da situação tributária do IPI
25
- @cst = attrs[:IPITrib][:CST]
26
- # Valor da BC do IPI
27
- @ipi_base = attrs[:IPITrib][:vBC]
28
- # Quantidade total na unidade padrão para tributação
29
- @amount = attrs[:IPITrib][:qUnid]
30
- # Valor por Unidade Tributável
31
- @value_unit = attrs[:IPITrib][:vUnid]
32
- # % do IPI
33
- @percentage = attrs[:IPITrib][:pIPI]
34
- # Valor do IPI
35
- @value = attrs[:IPITrib][:vIPI]
36
- end
9
+ def initialize(attrs = {})
10
+ # Classe de enquadramento do IPI para Cigarros e Bebidas
11
+ @frame_class = attrs[:clEnq]
12
+ # Codigo enquadramento
13
+ @frame_code = attrs[:cEnq]
14
+ # CNPJ do produtor
15
+ @cnpj = attrs[:CNPJProd]
16
+ # Código do selo de controle
17
+ @seal = attrs[:cSelo]
18
+ # Quantidade do selo de controle
19
+ @seal_amount = attrs[:qSelo]
20
+
21
+ # == Tributação
22
+ if attrs[:IPITrib]
23
+ # Código da situação tributária do IPI
24
+ @cst = attrs[:IPITrib][:CST]
25
+ # Valor da BC do IPI
26
+ @ipi_base = attrs[:IPITrib][:vBC]
27
+ # Quantidade total na unidade padrão para tributação
28
+ @amount = attrs[:IPITrib][:qUnid]
29
+ # Valor por Unidade Tributável
30
+ @value_unit = attrs[:IPITrib][:vUnid]
31
+ # % do IPI
32
+ @percentage = attrs[:IPITrib][:pIPI]
33
+ # Valor do IPI
34
+ @value = attrs[:IPITrib][:vIPI]
35
+ end
37
36
 
38
- if attrs[:IPINT]
39
- # Grupo do CST 01, 02, 03, 04, 51, 52, 53, 54 e 55
40
- @cst_group = attrs[:IPINT][:CST]
41
- end
37
+ if attrs[:IPINT]
38
+ # Grupo do CST 01, 02, 03, 04, 51, 52, 53, 54 e 55
39
+ @cst_group = attrs[:IPINT][:CST]
42
40
  end
43
41
  end
44
42
  end
@@ -1,26 +1,24 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Issqn
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Issqn
4
+ include AttributeHelper
6
5
 
7
- attr_accessor :base, :aliquot, :value, :city, :services, :cst
6
+ attr_accessor :base, :aliquot, :value, :city, :services, :cst
8
7
 
9
- # Fields Values
10
- #
11
- # cStiTrib : N - NORMAL;
12
- # R - RETIDA;
13
- # S - SUBSTITUTA;
14
- # I - ISENTA
8
+ # Fields Values
9
+ #
10
+ # cStiTrib : N - NORMAL;
11
+ # R - RETIDA;
12
+ # S - SUBSTITUTA;
13
+ # I - ISENTA
15
14
 
16
- def initialize(attrs = {})
17
- @base = attrs[:vBC]
18
- @aliquot = attrs[:vAliq]
19
- @value = attrs[:vISSQN]
20
- @city = attrs[:cMunFG]
21
- @services = attrs[:cListServ]
22
- @cst = attrs[:cSitTrib]
23
- end
15
+ def initialize(attrs = {})
16
+ @base = attrs[:vBC]
17
+ @aliquot = attrs[:vAliq]
18
+ @value = attrs[:vISSQN]
19
+ @city = attrs[:cMunFG]
20
+ @services = attrs[:cListServ]
21
+ @cst = attrs[:cSitTrib]
24
22
  end
25
23
  end
26
24
  end
@@ -1,46 +1,46 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Pis
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Pis
4
+ include AttributeHelper
6
5
 
7
- attr_reader :cst, :base, :percentage, :value, :amount, :aliquot
8
-
9
- # Fieds Values
10
- #
11
- # cst:
12
- # PISAliq:
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
- # PISQtde:
18
- # 03 - Operação Tributável
19
- # (base de cálculo = quantidade vendida x alíquota por unidadede produto);
20
- # PISNT:
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
- # PISOutr:
28
- # 99 - Outras Operações;
29
- #
30
- def initialize(attrs = {})
31
- # Cst PIS
32
- @cst = attrs[:CST]
33
- # Base PIS
34
- @base = attrs[:vBC]
35
- # % PIS
36
- @percentage = attrs[:pPIS]
37
- # Valor PIS
38
- @value = attrs[:vPIS]
39
- # Quantidade Vendida
40
- @amount = attrs[:qBCProd]
41
- # Alíquota do PIS
42
- @aliquot = attrs[:vAliqProd]
43
- end
6
+ attr_reader :cst, :base, :percentage, :value, :amount, :aliquot
7
+
8
+ # Fieds Values
9
+ #
10
+ # cst:
11
+ # PISAliq:
12
+ # 01 - Operação Tributável
13
+ # (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
14
+ # 02 - Operação Tributável
15
+ # (base de cálculo = valor da operação (alíquota diferenciada));
16
+ # PISQtde:
17
+ # 03 - Operação Tributável
18
+ # (base de cálculo = quantidade vendida x alíquota por unidadede produto);
19
+ # PISNT:
20
+ # 04 - Operação Tributável
21
+ # (tributação monofásica(alíquota zero));
22
+ # 06 - Operação Tributável(alíquota zero);
23
+ # 07 - Operação Isenta da Contribuição;
24
+ # 08 - Operação Sem Incidência da Contribuição;
25
+ # 09 - Operação com Suspensão da Contribuição;
26
+ # PISOutr:
27
+ # 99 - Outras Operações;
28
+ #
29
+ def initialize(attrs = {})
30
+ attrs = attrs.values[0]
31
+
32
+ # Cst PIS
33
+ @cst = attrs[:CST]
34
+ # Base PIS
35
+ @base = attrs[:vBC]
36
+ # % PIS
37
+ @percentage = attrs[:pPIS]
38
+ # Valor PIS
39
+ @value = attrs[:vPIS]
40
+ # Quantidade Vendida
41
+ @amount = attrs[:qBCProd]
42
+ # Alíquota do PIS
43
+ @aliquot = attrs[:vAliqProd]
44
44
  end
45
45
  end
46
46
  end
@@ -1,23 +1,21 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class PisSt
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class PisSt
4
+ include AttributeHelper
6
5
 
7
- attr_reader :base, :percentage, :amount, :aliquot, :value
8
-
9
- def initialize(attrs = {})
10
- # Valor Base
11
- @base = attrs[:vBC]
12
- # % PISST
13
- @percentage = attrs[:pPIS]
14
- # Quantidade
15
- @amount = attrs[:qBCProd]
16
- # Aliquota PIS ST
17
- @aliquot = attrs[:vAliqProd]
18
- # Valor PIS ST
19
- @value = attrs[:vPIS]
20
- end
6
+ attr_reader :base, :percentage, :amount, :aliquot, :value
7
+
8
+ def initialize(attrs = {})
9
+ # Valor Base
10
+ @base = attrs[:vBC]
11
+ # % PISST
12
+ @percentage = attrs[:pPIS]
13
+ # Quantidade
14
+ @amount = attrs[:qBCProd]
15
+ # Aliquota PIS ST
16
+ @aliquot = attrs[:vAliqProd]
17
+ # Valor PIS ST
18
+ @value = attrs[:vPIS]
21
19
  end
22
20
  end
23
21
  end
@@ -1,79 +1,79 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Total
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Total
4
+ include AttributeHelper
6
5
 
7
- attr_reader :icms_base, :icms, :st_base, :st, :product, :freight,
8
- :insurance, :descount, :ii, :ipi, :pis, :cofins, :another, :total,
9
- :service_value, :service_base, :service_iss, :service_pis, :service_cofins,
10
- :retention_pis, :retention_csll, :retention_irrf_base, :retention_cofins,
11
- :retention_irrf, :retention_foresight_base, :retention_foresight
6
+ attr_reader :icms_base, :icms, :st_base, :st, :product, :freight,
7
+ :insurance, :descount, :ii, :ipi, :pis, :cofins, :another, :total,
8
+ :service_value, :service_base, :service_iss, :service_pis, :service_cofins,
9
+ :retention_pis, :retention_csll, :retention_irrf_base, :retention_cofins,
10
+ :retention_irrf, :retention_foresight_base, :retention_foresight, :tax
12
11
 
13
- def initialize(attrs = {})
14
- # Impostos
15
- if attrs[:ICMSTot]
16
- # Base ICMS
17
- @icms_base = attrs[:ICMSTot][:vBC]
18
- # Valor ICMS
19
- @icms = attrs[:ICMSTot][:vICMS]
20
- # Base ICMS ST
21
- @st_base = attrs[:ICMSTot][:vBCST]
22
- # Valor ICMS ST
23
- @st = attrs[:ICMSTot][:vST]
24
- # Total de Produtos
25
- @product = attrs[:ICMSTot][:vProd]
26
- # Total de Frete
27
- @freight = attrs[:ICMSTot][:vFrete]
28
- # Total de Seguro
29
- @insurance = attrs[:ICMSTot][:vSeg]
30
- # Total de Desconto
31
- @descount = attrs[:ICMSTot][:vDesc]
32
- # Total de Imposto de Importacao
33
- @ii = attrs[:ICMSTot][:vII]
34
- # Total de IPI
35
- @ipi = attrs[:ICMSTot][:vIPI]
36
- # Total de PIS
37
- @pis = attrs[:ICMSTot][:vPIS]
38
- # Total de COFINS
39
- @cofins = attrs[:ICMSTot][:vCOFINS]
40
- # Total de Outros
41
- @another = attrs[:ICMSTot][:vOutro]
42
- # Total NFe
43
- @total = attrs[:ICMSTot][:vNF]
44
- end
12
+ def initialize(attrs = {})
13
+ # Impostos
14
+ if attrs[:ICMSTot]
15
+ # Base ICMS
16
+ @icms_base = attrs[:ICMSTot][:vBC]
17
+ # Valor ICMS
18
+ @icms = attrs[:ICMSTot][:vICMS]
19
+ # Base ICMS ST
20
+ @st_base = attrs[:ICMSTot][:vBCST]
21
+ # Valor ICMS ST
22
+ @st = attrs[:ICMSTot][:vST]
23
+ # Total de Produtos
24
+ @product = attrs[:ICMSTot][:vProd]
25
+ # Total de Frete
26
+ @freight = attrs[:ICMSTot][:vFrete]
27
+ # Total de Seguro
28
+ @insurance = attrs[:ICMSTot][:vSeg]
29
+ # Total de Desconto
30
+ @descount = attrs[:ICMSTot][:vDesc]
31
+ # Total de Imposto de Importacao
32
+ @ii = attrs[:ICMSTot][:vII]
33
+ # Total de IPI
34
+ @ipi = attrs[:ICMSTot][:vIPI]
35
+ # Total de PIS
36
+ @pis = attrs[:ICMSTot][:vPIS]
37
+ # Total de COFINS
38
+ @cofins = attrs[:ICMSTot][:vCOFINS]
39
+ # Total de Outros
40
+ @another = attrs[:ICMSTot][:vOutro]
41
+ # Total NFe
42
+ @total = attrs[:ICMSTot][:vNF]
43
+ # Total NFe
44
+ @tax = attrs[:ICMSTot][:vTotTrib]
45
+ end
45
46
 
46
- # Servicos
47
- if attrs[:ISSQNtot]
48
- # Valor do Servico
49
- @service_value = attrs[:ISSQNtot][:vServ]
50
- # Base de calculo do Servico
51
- @service_base = attrs[:ISSQNtot][:vBC]
52
- # ISS do Servico
53
- @service_iss = attrs[:ISSQNtot][:vISS]
54
- # Pis do Servico
55
- @service_pis = attrs[:ISSQNtot][:vPIS]
56
- # Cofins do Servico
57
- @service_cofins = attrs[:ISSQNtot][:vCOFINS]
58
- end
47
+ # Servicos
48
+ if attrs[:ISSQNtot]
49
+ # Valor do Servico
50
+ @service_value = attrs[:ISSQNtot][:vServ]
51
+ # Base de calculo do Servico
52
+ @service_base = attrs[:ISSQNtot][:vBC]
53
+ # ISS do Servico
54
+ @service_iss = attrs[:ISSQNtot][:vISS]
55
+ # Pis do Servico
56
+ @service_pis = attrs[:ISSQNtot][:vPIS]
57
+ # Cofins do Servico
58
+ @service_cofins = attrs[:ISSQNtot][:vCOFINS]
59
+ end
59
60
 
60
- # Retencoes
61
- if attrs[:retTrib]
62
- # Retencao de PIS
63
- @retention_pis = attrs[:retTrib][:vRetPIS]
64
- # Retencao de COFINS
65
- @retention_cofins = attrs[:retTrib][:vRetCOFINS]
66
- # Retencao de CSLL
67
- @retention_csll = attrs[:retTrib][:vRetCSLL]
68
- # Base de Retencao do IRRF
69
- @retention_irrf_base = attrs[:retTrib][:vBCIRRF]
70
- # Valor de Retencao do IRRF
71
- @retention_irrf = attrs[:retTrib][:vIRRF]
72
- # Base de Retencao da Previdencia
73
- @retention_foresight_base = attrs[:retTrib][:vBCRetPrev]
74
- # Valor de Retencao da Previdencia
75
- @retention_foresight = attrs[:retTrib][:vRetPrev]
76
- end
61
+ # Retencoes
62
+ if attrs[:retTrib]
63
+ # Retencao de PIS
64
+ @retention_pis = attrs[:retTrib][:vRetPIS]
65
+ # Retencao de COFINS
66
+ @retention_cofins = attrs[:retTrib][:vRetCOFINS]
67
+ # Retencao de CSLL
68
+ @retention_csll = attrs[:retTrib][:vRetCSLL]
69
+ # Base de Retencao do IRRF
70
+ @retention_irrf_base = attrs[:retTrib][:vBCIRRF]
71
+ # Valor de Retencao do IRRF
72
+ @retention_irrf = attrs[:retTrib][:vIRRF]
73
+ # Base de Retencao da Previdencia
74
+ @retention_foresight_base = attrs[:retTrib][:vBCRetPrev]
75
+ # Valor de Retencao da Previdencia
76
+ @retention_foresight = attrs[:retTrib][:vRetPrev]
77
77
  end
78
78
  end
79
79
  end
@@ -1,100 +1,87 @@
1
1
  # encoding: UTF-8
2
- module Nfe
3
- module Reader
4
- class Transport
5
- include ::AttributeHelper
2
+ module NfeReader
3
+ class Transport
4
+ include AttributeHelper
5
+ include CreatorHelper
6
6
 
7
- attr_reader :kind, :service_value, :base, :icms_aliquot, :icms_value,
8
- :cfop, :city, :vehicle_plaque, :vehicle_state, :vehicle_rntc, :hauling_palque,
9
- :hauling_state, :hauling_rntc, :wagon, :ferry, :volume_amount, :volume_kind,
10
- :volume_brand, :volume_number, :weight_net, :weight_gross, :seals, :carrier
7
+ attr_reader :kind, :service_value, :base, :icms_aliquot, :icms_value,
8
+ :cfop, :city, :vehicle_plaque, :vehicle_state, :vehicle_rntc, :hauling_palque,
9
+ :hauling_state, :hauling_rntc, :wagon, :ferry, :volume_amount, :volume_kind,
10
+ :volume_brand, :volume_number, :weight_net, :weight_gross, :seals, :carrier
11
11
 
12
- # Fields Values:
13
- #
14
- # modFrete: 0- Por conta do emitente;
15
- # 1- Por conta do destinatário/remetente;
16
- # 2- Por conta de terceiros;
17
- # 9- Sem frete.
18
- #
19
- def initialize(attrs = {})
20
- # Modalidade
21
- @kind = attrs[:modFrete]
22
-
23
- # == Grupo de Retenção do ICMS do transporte
24
- if attrs[:retTransp]
25
- # Valor do Servico
26
- @service_value = attrs[:retTransp][:vServ]
27
- # BC da Retenção do ICMS
28
- @base = attrs[:retTransp][:vBCRet]
29
- # Alíquota da Retenção
30
- @icms_aliquot = attrs[:retTransp][:pICMSRet]
31
- # Valor do ICMS Retido
32
- @icms_value = attrs[:retTransp][:vICMSRet]
33
- # CFOP
34
- @cfop = attrs[:retTransp][:CFOP]
35
- # Municipio gerador de ICMS
36
- @city = attrs[:retTransp][:cMunFG]
37
- end
38
-
39
- # == Veiculo
40
- if attrs[:veicTransp]
41
- # Placa
42
- @vehicle_plaque = attrs[:veicTransp][:placa]
43
- # Estado
44
- @vehicle_state = attrs[:veicTransp][:UF]
45
- # Registro Nacional de Transportador de Carga
46
- @vehicle_rntc = attrs[:veicTransp][:RNTC]
47
- end
48
-
49
- # == Reboque
50
- if attrs[:reboque]
51
- # Placa
52
- @hauling_palque = attrs[:reboque][:placa]
53
- # Estado
54
- @hauling_state = attrs[:reboque][:UF]
55
- # Registro Nacional de Transportador de Carga
56
- @hauling_rntc = attrs[:reboque][:RNTC]
57
- end
58
-
59
- # Vagao
60
- @wagon = attrs[:vagao]
61
- # Balsa
62
- @ferry = attrs[:balsa]
63
-
64
- # == Volume
65
- if attrs[:vol]
66
- # Quantidade de volumes
67
- @volume_amount = attrs[:vol][:qVol]
68
- # Espécie dos volumes
69
- @volume_kind = attrs[:vol][:esp]
70
- # Marca dos volumes
71
- @volume_brand = attrs[:vol][:marca]
72
- # Numeração dos volumes
73
- @volume_number = attrs[:vol][:nVol]
74
- # Peso Liquido
75
- @weight_net = attrs[:vol][:pesoL]
76
- # Peso Bruto
77
- @weight_gross = attrs[:vol][:pesoB]
78
- # Lacres
79
- @seals = set_seals(attrs[:vol][:lacres])
80
- end
12
+ # Fields Values:
13
+ #
14
+ # modFrete: 0- Por conta do emitente;
15
+ # 1- Por conta do destinatário/remetente;
16
+ # 2- Por conta de terceiros;
17
+ # 9- Sem frete.
18
+ #
19
+ def initialize(attrs = {})
20
+ # Modalidade
21
+ @kind = attrs[:modFrete]
22
+
23
+ # == Grupo de Retenção do ICMS do transporte
24
+ if attrs[:retTransp]
25
+ # Valor do Servico
26
+ @service_value = attrs[:retTransp][:vServ]
27
+ # BC da Retenção do ICMS
28
+ @base = attrs[:retTransp][:vBCRet]
29
+ # Alíquota da Retenção
30
+ @icms_aliquot = attrs[:retTransp][:pICMSRet]
31
+ # Valor do ICMS Retido
32
+ @icms_value = attrs[:retTransp][:vICMSRet]
33
+ # CFOP
34
+ @cfop = attrs[:retTransp][:CFOP]
35
+ # Municipio gerador de ICMS
36
+ @city = attrs[:retTransp][:cMunFG]
37
+ end
81
38
 
82
- # Transportadora
83
- if attrs[:transporta]
84
- @carrier = Carrier.new(attrs[:transporta])
85
- end
39
+ # == Veiculo
40
+ if attrs[:veicTransp]
41
+ # Placa
42
+ @vehicle_plaque = attrs[:veicTransp][:placa]
43
+ # Estado
44
+ @vehicle_state = attrs[:veicTransp][:UF]
45
+ # Registro Nacional de Transportador de Carga
46
+ @vehicle_rntc = attrs[:veicTransp][:RNTC]
86
47
  end
87
48
 
88
- def set_seals(attrs = {})
89
- return unless attrs
49
+ # == Reboque
50
+ if attrs[:reboque]
51
+ # Placa
52
+ @hauling_palque = attrs[:reboque][:placa]
53
+ # Estado
54
+ @hauling_state = attrs[:reboque][:UF]
55
+ # Registro Nacional de Transportador de Carga
56
+ @hauling_rntc = attrs[:reboque][:RNTC]
57
+ end
90
58
 
91
- if attrs.is_a? Array
92
- seals = attrs.map { |l| l[:nLacre] }.join(', ')
93
- else
94
- seals = attrs[:nLacre]
95
- end
59
+ # Vagao
60
+ @wagon = attrs[:vagao]
61
+ # Balsa
62
+ @ferry = attrs[:balsa]
63
+
64
+ # == Volume
65
+ if attrs[:vol]
66
+ # Quantidade de volumes
67
+ @volume_amount = attrs[:vol][:qVol]
68
+ # Espécie dos volumes
69
+ @volume_kind = attrs[:vol][:esp]
70
+ # Marca dos volumes
71
+ @volume_brand = attrs[:vol][:marca]
72
+ # Numeração dos volumes
73
+ @volume_number = attrs[:vol][:nVol]
74
+ # Peso Liquido
75
+ @weight_net = attrs[:vol][:pesoL]
76
+ # Peso Bruto
77
+ @weight_gross = attrs[:vol][:pesoB]
78
+ # Lacres
79
+ @seals = to_array(attrs[:vol][:lacres]).join(', ')
80
+ end
96
81
 
97
- seals
82
+ # Transportadora
83
+ if attrs[:transporta]
84
+ @carrier = Carrier.new(attrs[:transporta])
98
85
  end
99
86
  end
100
87
  end