nfe_reader 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +38 -0
  6. data/Rakefile +13 -0
  7. data/lib/nfe_reader/authorization.rb +12 -0
  8. data/lib/nfe_reader/carrier.rb +16 -0
  9. data/lib/nfe_reader/collection/duplicate.rb +12 -0
  10. data/lib/nfe_reader/collection.rb +34 -0
  11. data/lib/nfe_reader/customer.rb +62 -0
  12. data/lib/nfe_reader/delivery.rb +20 -0
  13. data/lib/nfe_reader/document.rb +73 -0
  14. data/lib/nfe_reader/export.rb +12 -0
  15. data/lib/nfe_reader/fiscal.rb +33 -0
  16. data/lib/nfe_reader/header.rb +129 -0
  17. data/lib/nfe_reader/information.rb +38 -0
  18. data/lib/nfe_reader/product/armament.rb +22 -0
  19. data/lib/nfe_reader/product/cane.rb +42 -0
  20. data/lib/nfe_reader/product/exportation.rb +20 -0
  21. data/lib/nfe_reader/product/fuel.rb +18 -0
  22. data/lib/nfe_reader/product/importation.rb +49 -0
  23. data/lib/nfe_reader/product/medicament.rb +19 -0
  24. data/lib/nfe_reader/product/vehicle.rb +117 -0
  25. data/lib/nfe_reader/product.rb +90 -0
  26. data/lib/nfe_reader/provider.rb +43 -0
  27. data/lib/nfe_reader/purchase.rb +14 -0
  28. data/lib/nfe_reader/removal.rb +20 -0
  29. data/lib/nfe_reader/taxation/cofins.rb +43 -0
  30. data/lib/nfe_reader/taxation/cofins_st.rb +19 -0
  31. data/lib/nfe_reader/taxation/icms.rb +86 -0
  32. data/lib/nfe_reader/taxation/importation_tax.rb +17 -0
  33. data/lib/nfe_reader/taxation/ipi.rb +41 -0
  34. data/lib/nfe_reader/taxation/issqn.rb +22 -0
  35. data/lib/nfe_reader/taxation/pis.rb +42 -0
  36. data/lib/nfe_reader/taxation/pis_st.rb +19 -0
  37. data/lib/nfe_reader/total.rb +76 -0
  38. data/lib/nfe_reader/transport.rb +97 -0
  39. data/lib/nfe_reader/version.rb +5 -0
  40. data/lib/nfe_reader.rb +129 -0
  41. data/lib/nokogiri_hash.rb +60 -0
  42. data/nfe-reader.gemspec +24 -0
  43. data/test/files/sample-nfe.xml +234 -0
  44. data/test/files/sample2-nfe.xml +192 -0
  45. data/test/nfe_reader/authorization_test.rb +22 -0
  46. data/test/nfe_reader/cane_test.rb +71 -0
  47. data/test/nfe_reader/carrier_test.rb +46 -0
  48. data/test/nfe_reader/collection/duplicate_test.rb +27 -0
  49. data/test/nfe_reader/collection_test.rb +78 -0
  50. data/test/nfe_reader/customer_test.rb +133 -0
  51. data/test/nfe_reader/delivery_test.rb +57 -0
  52. data/test/nfe_reader/document_test.rb +113 -0
  53. data/test/nfe_reader/export_test.rb +22 -0
  54. data/test/nfe_reader/fiscal_test.rb +67 -0
  55. data/test/nfe_reader/header_test.rb +135 -0
  56. data/test/nfe_reader/information_test.rb +37 -0
  57. data/test/nfe_reader/product/armament_test.rb +32 -0
  58. data/test/nfe_reader/product/exportation_test.rb +34 -0
  59. data/test/nfe_reader/product/fuel_test.rb +44 -0
  60. data/test/nfe_reader/product/importation_test.rb +64 -0
  61. data/test/nfe_reader/product/medicament_test.rb +37 -0
  62. data/test/nfe_reader/product/vehicle_test.rb +133 -0
  63. data/test/nfe_reader/product_test.rb +125 -0
  64. data/test/nfe_reader/provider_test.rb +155 -0
  65. data/test/nfe_reader/purchase_test.rb +27 -0
  66. data/test/nfe_reader/removal_test.rb +57 -0
  67. data/test/nfe_reader/taxation/cofins_st_test.rb +37 -0
  68. data/test/nfe_reader/taxation/cofins_test.rb +42 -0
  69. data/test/nfe_reader/taxation/icms_test.rb +122 -0
  70. data/test/nfe_reader/taxation/importation_tax_test.rb +32 -0
  71. data/test/nfe_reader/taxation/ipi_test.rb +78 -0
  72. data/test/nfe_reader/taxation/issqn_test.rb +42 -0
  73. data/test/nfe_reader/taxation/pis_st_test.rb +37 -0
  74. data/test/nfe_reader/taxation/pis_test.rb +42 -0
  75. data/test/nfe_reader/total_test.rb +148 -0
  76. data/test/nfe_reader/transport_test.rb +172 -0
  77. data/test/nfe_reader_test.rb +125 -0
  78. data/test/nokogiri_test.rb +27 -0
  79. data/test/test_helper.rb +13 -0
  80. metadata +201 -0
@@ -0,0 +1,49 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ # Declaração de Importação
4
+ class Importation
5
+ attr_reader :number, :date, :local, :state, :customs_clearance, :exporter,
6
+ :addition_number, :addition_sequence, :manufacturer, :addition_descount,
7
+ :drawn
8
+
9
+ def initialize(attrs = {})
10
+ # Número do Documento de Importação
11
+ @number = attrs[:nDI]
12
+ # Data de Registro do documento
13
+ @date = attrs[:dDI]
14
+ # Local de desembaraço
15
+ @local = attrs[:xLocDesemb]
16
+ # Sigla da UF onde ocorreu o Desembaraço Aduaneiro
17
+ @state = attrs[:UFDesemb]
18
+ # Data do Desembaraço Aduaneiro
19
+ @customs_clearance = attrs[:dDesemb]
20
+ # Código do Exportador
21
+ @exporter = attrs[:cExportador]
22
+
23
+ # Via de transporte internacional
24
+ @transport = attrs[:tpViaTransp]
25
+ # Valor da AFRMM - Adicional ao Frete para Renovação da Marinha Mercante
26
+ @afrmm = attrs[:vAFRMM]
27
+ # Forma de importação
28
+ @intermediate_kind = attrs[:tpIntermedio]
29
+ # CNPJ do adquirente
30
+ @cnpj = attrs[:CNPJ]
31
+ # Sigla da UF
32
+ @uf_customer = attrs[:UFTerceiro]
33
+
34
+ # Adições
35
+ if attrs[:adi]
36
+ # Numero da Adição
37
+ @addition_number = attrs[:adi][:nAdicaonSeqAdic]
38
+ # Numero sequencial do item
39
+ @addition_sequence = attrs[:adi][:nSeqAdic]
40
+ # Código do fabricante estrangeiro
41
+ @manufacturer = attrs[:adi][:cFabricante]
42
+ # Valor do desconto do item
43
+ @addition_descount = attrs[:adi][:vDescDI]
44
+ # Drawback
45
+ @drawn = attrs[:adi][:nDraw]
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Medicament
4
+ attr_reader :lot_number, :lot_amount, :fabrication, :validity, :ceiling_price
5
+
6
+ def initialize(attrs = {})
7
+ # Numero de Lote
8
+ @lot_number = attrs[:nLote]
9
+ # Quantidade de Lotes
10
+ @lot_amount = attrs[:qLote]
11
+ # Data de Fabricação
12
+ @fabrication = attrs[:dFab]
13
+ # Data de Validade
14
+ @validity = attrs[:dVal]
15
+ # Preço maximo venda para Consumidor Final
16
+ @ceiling_price = attrs[:vPMC]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,117 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Vehicle
4
+ attr_reader :operation, :chassi, :color, :color_name, :engine_power,
5
+ :engine_capacities, :weight_net, :weight_gross, :serie, :fuel_kind,
6
+ :engine_number, :cmt, :wheelbase, :year, :fabrication_year,
7
+ :paint_kind, :kind, :vehicle_kind, :vin, :condiction, :model,
8
+ :color_code, :capacity, :restriction
9
+
10
+ # Fields Values
11
+ #
12
+ # pOp: 1 - Venda concessionária,
13
+ # 2 - Faturamento direto para consumidor final
14
+ # 3 - Venda direta para grandes consumidores (frotista, governo, ...)
15
+ # 0 - Outros
16
+ #
17
+ # tpComb: 01-Álcool
18
+ # 02-Gasolina
19
+ # 03-Diesel
20
+ # (...) - Tabela Renavam 2.0
21
+ #
22
+ # tpVeic: Utilizar Tabela RENAVAM
23
+ # 06-AUTOMÓVEL
24
+ # 14-CAMINHÃO
25
+ # 13-CAMINHONETA
26
+ # ...
27
+ #
28
+ # espVeic: Utilizar Tabela RENAVAM
29
+ # 1 - PASSAGEIRO
30
+ # 2 - CARGA
31
+ # 3 - MISTO
32
+ # 4 - CORRIDA
33
+ # 5 - TRAÇÃO
34
+ # 6 - ESPECIAL
35
+ #
36
+ # VIN: R - Remarcado
37
+ # N - Normal
38
+ #
39
+ # condVeic: 1 - Acabado;
40
+ # 2 - Inacabado;
41
+ # 3 - Semi-acabado
42
+ #
43
+ # cCorDEN: 01 - AMARELO
44
+ # 02 - AZUL
45
+ # 03 - BEGE
46
+ # 04 - BRANCA
47
+ # 05 - CINZA
48
+ # 06 - DOURADA
49
+ # 07 - GRENA
50
+ # 08 - LARANJA
51
+ # 09 - MARROM
52
+ # 10 - PRATA
53
+ # 11 - PRETA
54
+ # 12 - ROSA
55
+ # 13 - ROXA
56
+ # 14 - VERDE
57
+ # 15 - VERMELHA
58
+ # 16 - FANTASIA
59
+ #
60
+ # tpRest: 0 - Não há;
61
+ # 1 - Alienação Fiduciária;
62
+ # 2 - Arrendamento Mercantil;
63
+ # 3 - Reserva de Domínio;
64
+ # 4 - Penhor de Veículos;
65
+ #
66
+ def initialize(attrs = {})
67
+ # Tipo da operação
68
+ @operation = attrs[:pOp]
69
+ # Numero do Chassi
70
+ @chassi = attrs[:chassi]
71
+ # Cor do Fabricante
72
+ @color = attrs[:cCor]
73
+ # Nome da Cor do Fabricante
74
+ @color_name = attrs[:xCor]
75
+ # Potencia do Motor em CV
76
+ @engine_power = attrs[:pot]
77
+ # Potencia do Motor em CC
78
+ @engine_capacities = attrs[:cilin]
79
+ # Peso Liquido
80
+ @weight_net = attrs[:pesoL]
81
+ # Peso Bruto
82
+ @weight_gross = attrs[:pesoB]
83
+ # Numero serie
84
+ @serie = attrs[:nSerie]
85
+ # Tipo de Combustivel
86
+ @fuel_kind = attrs[:tpComb]
87
+ # Numeracao do Motor
88
+ @engine_number = attrs[:nMotor]
89
+ # CMT: Capacidade Maxima de Tração
90
+ @cmt = attrs[:CMT]
91
+ # Distancia entre os Eixos
92
+ @wheelbase = attrs[:dist]
93
+ # Ano do Modelo
94
+ @year = attrs[:anoMod]
95
+ # Ano de Fabricacao
96
+ @fabrication_year = attrs[:anoFab]
97
+ # Tipo de Pintura
98
+ @paint_kind = attrs[:tpPint]
99
+ # Tipo de Veiculo
100
+ @kind = attrs[:tpVeic]
101
+ # Especie do veiculo
102
+ @vehicle_kind = attrs[:espVeic]
103
+ # Condição do VIN
104
+ @vin = attrs[:VIN]
105
+ # Condições do Veiculo
106
+ @condiction = attrs[:condVeic]
107
+ # Modelo
108
+ @model = attrs[:cMod]
109
+ # Codigo da Cor
110
+ @color_code = attrs[:cCorDEN]
111
+ # Capacidade
112
+ @capacity = attrs[:lota]
113
+ # Restrição
114
+ @restriction = attrs[:tpRest]
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,90 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ # Detalhamento de Produtos e Serviços da NF-e
4
+ class Product
5
+ attr_reader :number, :product_code, :product, :ean, :ncm, :cfop,
6
+ :unit_sale, :value_sale, :amount_sale, :total, :gtin, :unit,
7
+ :amount, :value, :kind, :ipi_exception, :freight, :insurance,
8
+ :discount, :other_value, :importation, :icms, :ipi, :pis,
9
+ :importation_tax, :exportation, :demand_number, :demand_item,
10
+ :armament, :fuel
11
+
12
+ # == Fields Values
13
+ #
14
+ # indTot: 0 - o valor do item (vProd) compõe o valor total da NF-e (vProd)
15
+ # 1 - o valor do item (vProd) não compõe o valor total da NF-e (vProd) (v2.0)
16
+ #
17
+ def initialize(attrs = {})
18
+ @number = attrs[:nItem]
19
+
20
+ if attrs[:prod]
21
+ @product_code = attrs[:prod][:cProd]
22
+ @product = attrs[:prod][:xProd]
23
+ @ean = attrs[:prod][:cEAN]
24
+ @ncm = attrs[:prod][:NCM]
25
+
26
+ # Sale
27
+ @cfop = attrs[:prod][:CFOP]
28
+ @unit_sale = attrs[:prod][:uCom]
29
+ @amount_sale = attrs[:prod][:qCom]
30
+ @value_sale = attrs[:prod][:vUnCom]
31
+ @total = attrs[:prod][:vProd]
32
+
33
+ # Numero do Pedido de Compra
34
+ @demand_number = attrs[:prod][:xPed]
35
+ # Item do Pedido de Compra
36
+ @demand_item = attrs[:prod][:nItemPed]
37
+
38
+ # GTIN (Global Trade ItemNumber)
39
+ @gtin = attrs[:prod][:cEANTrib]
40
+
41
+ @unit = attrs[:prod][:uTrib]
42
+ @amount = attrs[:prod][:qTrib]
43
+ @value = attrs[:prod][:vUnTrib]
44
+ @kind = attrs[:prod][:indTot]
45
+ @ipi_exception = attrs[:prod][:EXTIPI]
46
+ @freight = attrs[:prod][:vFrete]
47
+ @insurance = attrs[:prod][:vSeg]
48
+ @discount = attrs[:prod][:vDesc]
49
+ @other_value = attrs[:prod][:vOutro]
50
+
51
+ @importation = create_resource(Nfe::Importation, attrs[:prod][:DI])
52
+ end
53
+
54
+ @armament = create_resources(Nfe::Armament, attrs[:arma]) if attrs[:arma]
55
+ @medicament = create_resources(Nfe::Medicament, attrs[:med]) if attrs[:med]
56
+ @fuel = Nfe::Fuel.new(attrs[:comb]) if attrs[:comb]
57
+ @vehicle = Nfe::Vehicle.new(attrs[:veicProd]) if attrs[:veicProd]
58
+
59
+ @exportation = create_resources(Nfe::Exportation, attrs[:detExport])
60
+
61
+ if attrs[:imposto]
62
+ @icms = create_resources(Nfe::Icms, attrs[:imposto][:ICMS])
63
+ @cofins = create_resources(Nfe::Cofins, attrs[:imposto][:COFINS])
64
+ @pis = create_resources(Nfe::Pis, attrs[:imposto][:PIS])
65
+ @importation_tax = create_resource(Nfe::ImportationTax, attrs[:imposto][:II])
66
+ @ipi = create_resource(Nfe::Ipi, attrs[:imposto][:IPI])
67
+ @pis_st = create_resource(Nfe::PisSt, attrs[:imposto][:PISST])
68
+ @cofins_st = create_resource(Nfe::CofinsSt, attrs[:imposto][:COFINSST])
69
+ @issqn = create_resource(Nfe::Issqn, attrs[:imposto][:ISSQN])
70
+ end
71
+ end
72
+
73
+ def create_resource(klass, attrs = {})
74
+ return unless attrs
75
+ klass.new(attrs)
76
+ end
77
+
78
+ def create_resources(klass, attrs = {})
79
+ resources = []
80
+
81
+ return resources unless attrs
82
+
83
+ attrs.each do |a|
84
+ resources << klass.new(a.last)
85
+ end
86
+
87
+ resources
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ # Identificação do Emitente da Nota Fiscal eletrônica
4
+ class Provider
5
+ attr_reader :cnpj, :cpf, :name, :phone, :state_registration, :state_registration_st,
6
+ :city_registration, :regime, :cnae, :address, :number, :complement, :neighborhood,
7
+ :city_code, :city, :zip_code, :country_code, :country, :fantasy, :state
8
+
9
+ # == Fields Values
10
+ #
11
+ # CRT: 1 - Simples Nacional,
12
+ # 2 - Simples Nacional – excesso de sublimite de receita bruta,
13
+ # 3 - Regime Normal
14
+ #
15
+ def initialize(attrs = {})
16
+ # Provider Info
17
+ @cnpj = attrs[:CNPJ]
18
+ @cpf = attrs[:CPF]
19
+ @name = attrs[:xNome]
20
+ @fantasy = attrs[:xFant]
21
+ @state_registration = attrs[:IE]
22
+ @state_registration_st = attrs[:IEST]
23
+ @city_registration = attrs[:IM]
24
+ @regime = attrs[:CRT]
25
+ @cnae = attrs[:CNAE]
26
+
27
+ # Address
28
+ if attrs[:enderEmit]
29
+ @phone = attrs[:enderEmit][:fone]
30
+ @address = attrs[:enderEmit][:xLgr]
31
+ @number = attrs[:enderEmit][:nro]
32
+ @complement = attrs[:enderEmit][:xCpl]
33
+ @neighborhood = attrs[:enderEmit][:xBairro]
34
+ @city_code = attrs[:enderEmit][:cMun]
35
+ @city = attrs[:enderEmit][:xMun]
36
+ @zip_code = attrs[:enderEmit][:CEP]
37
+ @country_code = attrs[:enderEmit][:cPais]
38
+ @country = attrs[:enderEmit][:xPais]
39
+ @state = attrs[:enderEmit][:UF]
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: UTF-8
2
+
3
+ # Informações de Compras
4
+ module Nfe
5
+ class Purchase
6
+ attr_reader :number, :demand, :contract
7
+
8
+ def initialize(attrs = {})
9
+ @number = attrs[:xNEmp]
10
+ @demand = attrs[:xPed]
11
+ @contract = attrs[:xCont]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ # Local de Retirada
2
+ module Nfe
3
+ # Identificação do Local de Retirada
4
+ class Removal
5
+ attr_reader :cnpj, :cpf, :address, :number, :complement,
6
+ :neighborhood, :city_code, :city, :state
7
+
8
+ def initialize(attrs = {})
9
+ @cnpj = attrs[:CNPJ]
10
+ @cpf = attrs[:CPF]
11
+ @address = attrs[:xLgr]
12
+ @number = attrs[:nro]
13
+ @complement = attrs[:xCpl]
14
+ @neighborhood = attrs[:xBairro]
15
+ @city_code = attrs[:cMun]
16
+ @city = attrs[:xMun]
17
+ @state = attrs[:UF]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Cofins
4
+ attr_reader :cst, :base, :percentage, :value, :amount,
5
+ :aliquot
6
+
7
+ # Fieds Values
8
+ #
9
+ # cst:
10
+ # COFINSAliq:
11
+ # 01 - Operação Tributável
12
+ # (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
13
+ # 02 - Operação Tributável
14
+ # (base de cálculo = valor da operação (alíquota diferenciada));
15
+ # COFINSQtde:
16
+ # 03 - Operação Tributável
17
+ # (base de cálculo = quantidade vendida x alíquota por unidadede produto);
18
+ # COFINSNT:
19
+ # 04 - Operação Tributável
20
+ # (tributação monofásica(alíquota zero));
21
+ # 06 - Operação Tributável(alíquota zero);
22
+ # 07 - Operação Isenta da Contribuição;
23
+ # 08 - Operação Sem Incidência da Contribuição;
24
+ # 09 - Operação com Suspensão da Contribuição;
25
+ # COFINSOutr:
26
+ # 99 - Outras Operações;
27
+ #
28
+ def initialize(attrs = {})
29
+ # Cst COFINS
30
+ @cst = attrs[:CST]
31
+ # Base COFINS
32
+ @base = attrs[:vBC]
33
+ # % COFINS
34
+ @percentage = attrs[:pCOFINS]
35
+ # Valor COFINS
36
+ @value = attrs[:vCOFINS]
37
+ # Quantidade Vendida
38
+ @amount = attrs[:qBCProd]
39
+ # Alíquota do COFINS
40
+ @aliquot = attrs[:vAliqProd]
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class CofinsSt
4
+ attr_reader :base, :percentage, :amount, :aliquot, :value
5
+
6
+ def initialize(attrs = {})
7
+ # Valor Base
8
+ @base = attrs[:vBC]
9
+ # % COFINS ST
10
+ @percentage = attrs[:pCOFINS]
11
+ # Quantidade
12
+ @amount = attrs[:qBCProd]
13
+ # Aliquota COFINS ST
14
+ @aliquot = attrs[:vAliqProd]
15
+ # Valor COFINS ST
16
+ @value = attrs[:vCOFINS]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,86 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Icms
4
+ attr_reader :origin, :cst, :icms_percentage, :icms, :icms_base_kind,
5
+ :icms_base, :icms_base_reduction, :icms_st_base_kind, :icms_st_base_reduction,
6
+ :mva, :icms_st_base, :icms_st_percentage, :icms_st, :icms_st_base_retained_sender,
7
+ :icms_st_retained_sender, :icms_st_base_retained, :icms_st_retained, :state,
8
+ :retained_reason, :credit_percentage, :icms_credit, :sn_operation_code
9
+
10
+ # == Field Values
11
+ #
12
+ # ori: 0 - Nacional
13
+ # 1 - Estrangeira - Importação direta
14
+ # 2 - Estrangeira – Adquirida no mercado interno.
15
+ #
16
+ # modBC: 0 - Margem Valor Agregado (%);
17
+ # 1 - Pauta (Valor);
18
+ # 2 - Preço Tabelado Máx. (valor);
19
+ # 3 - valor da operação.
20
+ #
21
+ # modBCST: 0 – Preço tabelado ou máximosugerido;
22
+ # 1 - Lista Negativa (valor);
23
+ # 2 - Lista Positiva (valor);
24
+ # 3 - Lista Neutra (valor);
25
+ # 4 - Margem Valor Agregado (%);
26
+ # 5 - Pauta (valor);
27
+
28
+ def initialize(attrs = {})
29
+ # Origem da mercadoria
30
+ @origin = attrs[:orig]
31
+ @origin ||= attrs[:Orig]
32
+
33
+ # Tributação do ICMS
34
+ @cst = attrs[:CST]
35
+
36
+ # == ICMS
37
+ #
38
+ # % ICMS
39
+ @icms_percentage = attrs[:pICMS]
40
+ # Valor ICMS
41
+ @icms = attrs[:vICMS]
42
+ # Modalidade de determinação da BC do ICMS
43
+ @icms_base_kind = attrs[:modBC]
44
+ # Base ICMS
45
+ @icms_base = attrs[:vBC]
46
+ # % Redução Base ICMS
47
+ @icms_base_reduction = attrs[:pRedBC]
48
+
49
+ # == ICMS ST
50
+ #
51
+ # Modalidade de determinação da BC do ICMS ST
52
+ @icms_st_base_kind = attrs[:modBCST]
53
+ # % redução Base ICMS ST
54
+ @icms_st_base_reduction = attrs[:pRedBCST]
55
+ # MVA ST
56
+ @mva = attrs[:pMVAST]
57
+ # Base ICMS ST
58
+ @icms_st_base = attrs[:vBCST]
59
+ # % ICMS ST
60
+ @icms_st_percentage = attrs[:pICMSST]
61
+ # Valor ICMS ST
62
+ @icms_st = attrs[:vICMSST]
63
+ # Valor do BC do ICMS ST Retido UF Remetente
64
+ @icms_st_base_retained_sender = attrs[:vBCSTRet]
65
+ # Valor ICMS ST Retido UF Remetente
66
+ @icms_st_retained_sender = attrs[:vICMSSTRet]
67
+ # Valor do BC do ICMS ST Retido UF Destiantaria
68
+ @icms_st_base_retained = attrs[:vBCSTDest]
69
+ # Valor ICMS ST Retido UF Destinataria
70
+ @icms_st_retained = attrs[:vICMSSTDes]
71
+ # UF para qual é devido o ICMS ST
72
+ @state = attrs[:UFST]
73
+
74
+ # == Simples Nacional
75
+ #
76
+ # Motivo da desoneração do ICMS
77
+ @retained_reason = attrs[:motDesICMS]
78
+ # Alíquota aplicável de cálculo do crédito
79
+ @credit_percentage = attrs[:pCredSN]
80
+ # Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123
81
+ @icms_credit = attrs[:vCredICMSSN]
82
+ # Código de Situação da Operação
83
+ @sn_operation_code = attrs[:CSOSN]
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class ImportationTax
4
+ attr_reader :base, :expenditure, :taxes, :iof
5
+
6
+ def initialize(attrs = {})
7
+ # Base de Caluclo
8
+ @base = attrs[:vBC]
9
+ # Despesas Aduaneiras
10
+ @expenditure = attrs[:vDespAdu]
11
+ # Imposto de Importação
12
+ @taxes = attrs[:vII]
13
+ # IOF
14
+ @iof = attrs[:vIOF]
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Ipi
4
+ attr_reader :frame_class, :frame_code, :cnpj, :seal, :seal_amount,
5
+ :cst, :ipi_base, :amount, :value_unit, :percentage, :value, :cst_group
6
+
7
+ def initialize(attrs = {})
8
+ # Classe de enquadramento do IPI para Cigarros e Bebidas
9
+ @frame_class = attrs[:clEnq]
10
+ # Codigo enquadramento
11
+ @frame_code = attrs[:cEnq]
12
+ # CNPJ do produtor
13
+ @cnpj = attrs[:CNPJProd]
14
+ # Código do selo de controle
15
+ @seal = attrs[:cSelo]
16
+ # Quantidade do selo de controle
17
+ @seal_amount = attrs[:qSelo]
18
+
19
+ # == Tributação
20
+ if attrs[:IPITrib]
21
+ # Código da situação tributária do IPI
22
+ @cst = attrs[:IPITrib][:CST]
23
+ # Valor da BC do IPI
24
+ @ipi_base = attrs[:IPITrib][:vBC]
25
+ # Quantidade total na unidade padrão para tributação
26
+ @amount = attrs[:IPITrib][:qUnid]
27
+ # Valor por Unidade Tributável
28
+ @value_unit = attrs[:IPITrib][:vUnid]
29
+ # % do IPI
30
+ @percentage = attrs[:IPITrib][:pIPI]
31
+ # Valor do IPI
32
+ @value = attrs[:IPITrib][:vIPI]
33
+ end
34
+
35
+ if attrs[:IPINT]
36
+ # Grupo do CST 01, 02, 03, 04, 51, 52, 53, 54 e 55
37
+ @cst_group = attrs[:IPINT][:CST]
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Issqn
4
+ attr_accessor :base, :aliquot, :value, :city, :services, :cst
5
+
6
+ # Fields Values
7
+ #
8
+ # cStiTrib : N - NORMAL;
9
+ # R - RETIDA;
10
+ # S - SUBSTITUTA;
11
+ # I - ISENTA
12
+
13
+ def initialize(attrs = {})
14
+ @base = attrs[:vBC]
15
+ @aliquot = attrs[:vAliq]
16
+ @value = attrs[:vISSQN]
17
+ @city = attrs[:cMunFG]
18
+ @services = attrs[:cListServ]
19
+ @cst = attrs[:cSitTrib]
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class Pis
4
+ attr_reader :cst, :base, :percentage, :value, :amount, :aliquot
5
+
6
+ # Fieds Values
7
+ #
8
+ # cst:
9
+ # PISAliq:
10
+ # 01 - Operação Tributável
11
+ # (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
12
+ # 02 - Operação Tributável
13
+ # (base de cálculo = valor da operação (alíquota diferenciada));
14
+ # PISQtde:
15
+ # 03 - Operação Tributável
16
+ # (base de cálculo = quantidade vendida x alíquota por unidadede produto);
17
+ # PISNT:
18
+ # 04 - Operação Tributável
19
+ # (tributação monofásica(alíquota zero));
20
+ # 06 - Operação Tributável(alíquota zero);
21
+ # 07 - Operação Isenta da Contribuição;
22
+ # 08 - Operação Sem Incidência da Contribuição;
23
+ # 09 - Operação com Suspensão da Contribuição;
24
+ # PISOutr:
25
+ # 99 - Outras Operações;
26
+ #
27
+ def initialize(attrs = {})
28
+ # Cst PIS
29
+ @cst = attrs[:CST]
30
+ # Base PIS
31
+ @base = attrs[:vBC]
32
+ # % PIS
33
+ @percentage = attrs[:pPIS]
34
+ # Valor PIS
35
+ @value = attrs[:vPIS]
36
+ # Quantidade Vendida
37
+ @amount = attrs[:qBCProd]
38
+ # Alíquota do PIS
39
+ @aliquot = attrs[:vAliqProd]
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+ module Nfe
3
+ class PisSt
4
+ attr_reader :base, :percentage, :amount, :aliquot, :value
5
+
6
+ def initialize(attrs = {})
7
+ # Valor Base
8
+ @base = attrs[:vBC]
9
+ # % PISST
10
+ @percentage = attrs[:pPIS]
11
+ # Quantidade
12
+ @amount = attrs[:qBCProd]
13
+ # Aliquota PIS ST
14
+ @aliquot = attrs[:vAliqProd]
15
+ # Valor PIS ST
16
+ @value = attrs[:vPIS]
17
+ end
18
+ end
19
+ end