nfe_reader 1.0.1
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.
- 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
         
     |