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