nfe_reader 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +38 -0
- data/Rakefile +13 -0
- data/lib/nfe_reader/authorization.rb +12 -0
- data/lib/nfe_reader/carrier.rb +16 -0
- data/lib/nfe_reader/collection/duplicate.rb +12 -0
- data/lib/nfe_reader/collection.rb +34 -0
- data/lib/nfe_reader/customer.rb +62 -0
- data/lib/nfe_reader/delivery.rb +20 -0
- data/lib/nfe_reader/document.rb +73 -0
- data/lib/nfe_reader/export.rb +12 -0
- data/lib/nfe_reader/fiscal.rb +33 -0
- data/lib/nfe_reader/header.rb +129 -0
- data/lib/nfe_reader/information.rb +38 -0
- data/lib/nfe_reader/product/armament.rb +22 -0
- data/lib/nfe_reader/product/cane.rb +42 -0
- data/lib/nfe_reader/product/exportation.rb +20 -0
- data/lib/nfe_reader/product/fuel.rb +18 -0
- data/lib/nfe_reader/product/importation.rb +49 -0
- data/lib/nfe_reader/product/medicament.rb +19 -0
- data/lib/nfe_reader/product/vehicle.rb +117 -0
- data/lib/nfe_reader/product.rb +90 -0
- data/lib/nfe_reader/provider.rb +43 -0
- data/lib/nfe_reader/purchase.rb +14 -0
- data/lib/nfe_reader/removal.rb +20 -0
- data/lib/nfe_reader/taxation/cofins.rb +43 -0
- data/lib/nfe_reader/taxation/cofins_st.rb +19 -0
- data/lib/nfe_reader/taxation/icms.rb +86 -0
- data/lib/nfe_reader/taxation/importation_tax.rb +17 -0
- data/lib/nfe_reader/taxation/ipi.rb +41 -0
- data/lib/nfe_reader/taxation/issqn.rb +22 -0
- data/lib/nfe_reader/taxation/pis.rb +42 -0
- data/lib/nfe_reader/taxation/pis_st.rb +19 -0
- data/lib/nfe_reader/total.rb +76 -0
- data/lib/nfe_reader/transport.rb +97 -0
- data/lib/nfe_reader/version.rb +5 -0
- data/lib/nfe_reader.rb +129 -0
- data/lib/nokogiri_hash.rb +60 -0
- data/nfe-reader.gemspec +24 -0
- data/test/files/sample-nfe.xml +234 -0
- data/test/files/sample2-nfe.xml +192 -0
- data/test/nfe_reader/authorization_test.rb +22 -0
- data/test/nfe_reader/cane_test.rb +71 -0
- data/test/nfe_reader/carrier_test.rb +46 -0
- data/test/nfe_reader/collection/duplicate_test.rb +27 -0
- data/test/nfe_reader/collection_test.rb +78 -0
- data/test/nfe_reader/customer_test.rb +133 -0
- data/test/nfe_reader/delivery_test.rb +57 -0
- data/test/nfe_reader/document_test.rb +113 -0
- data/test/nfe_reader/export_test.rb +22 -0
- data/test/nfe_reader/fiscal_test.rb +67 -0
- data/test/nfe_reader/header_test.rb +135 -0
- data/test/nfe_reader/information_test.rb +37 -0
- data/test/nfe_reader/product/armament_test.rb +32 -0
- data/test/nfe_reader/product/exportation_test.rb +34 -0
- data/test/nfe_reader/product/fuel_test.rb +44 -0
- data/test/nfe_reader/product/importation_test.rb +64 -0
- data/test/nfe_reader/product/medicament_test.rb +37 -0
- data/test/nfe_reader/product/vehicle_test.rb +133 -0
- data/test/nfe_reader/product_test.rb +125 -0
- data/test/nfe_reader/provider_test.rb +155 -0
- data/test/nfe_reader/purchase_test.rb +27 -0
- data/test/nfe_reader/removal_test.rb +57 -0
- data/test/nfe_reader/taxation/cofins_st_test.rb +37 -0
- data/test/nfe_reader/taxation/cofins_test.rb +42 -0
- data/test/nfe_reader/taxation/icms_test.rb +122 -0
- data/test/nfe_reader/taxation/importation_tax_test.rb +32 -0
- data/test/nfe_reader/taxation/ipi_test.rb +78 -0
- data/test/nfe_reader/taxation/issqn_test.rb +42 -0
- data/test/nfe_reader/taxation/pis_st_test.rb +37 -0
- data/test/nfe_reader/taxation/pis_test.rb +42 -0
- data/test/nfe_reader/total_test.rb +148 -0
- data/test/nfe_reader/transport_test.rb +172 -0
- data/test/nfe_reader_test.rb +125 -0
- data/test/nokogiri_test.rb +27 -0
- data/test/test_helper.rb +13 -0
- 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,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
|