Sha256: 52e743609739fc39317ba939d5ed56f26635410caa49c8878c0cdc4bded4aba0

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

module BrDanfe
  module DanfeNfceLib
    class Header
      def initialize(pdf, xml, logo, logo_dimensions)
        @pdf = pdf
        @xml = xml
        @logo = logo
        @logo_dimensions = logo_dimensions
      end

      def render
        cursor = @pdf.cursor

        render_company_info(cursor)
        render_logo(cursor) if @logo.present?

        render_homologation if BrDanfe::Helper.homologation?(@xml)
      end

      private

      def render_company_info(cursor)
        one_line = 1

        @pdf.bounding_box([x_position, cursor], width: width_box, height: 45) do
          @pdf.text "#{@xml['emit/xNome']}", size: 7, align: :left, style: :bold
          @pdf.text cnpj(@xml['emit/CNPJ']), size: 6, align: :left
          @pdf.text BrDanfe::DanfeNfceLib::Helper.address(@xml.css('enderEmit')), size: 6, align: :left
          @pdf.render_blank_line if count_name_lines(@xml['emit/xNome']) == one_line
          @pdf.text 'Documento Auxiliar da Nota Fiscal de Consumidor Eletrônica', size: 6, align: :left
        end
      end

      def x_position
        @logo.present? ? 1.7.cm : 0
      end

      def width_box
        @logo.present? ? 5.7.cm : 7.4.cm
      end

      def cnpj(info)
        cnpj = BrDocuments::CnpjCpf::Cnpj.new info
        data = "CNPJ: #{cnpj.valid? ? cnpj.formatted : ''}"
        data
      end

      def count_name_lines(company_name)
        company_name.scan(/([\s\S]{1,38}( |$)|[\s\S]{1,38})/).length
      end

      def render_logo(cursor)
        box_size = 45
        logo_options = BrDanfe::Logo::Options.new(box_size, @logo_dimensions).options

        @pdf.bounding_box([0, cursor], width: box_size, height: box_size) do
          @pdf.image @logo, logo_options
        end
      end

      def render_homologation
        @pdf.render_blank_line
        @pdf.text 'EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO – SEM VALOR FISCAL', size: 7, align: :center, style: :bold
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
br_danfe-0.12.1 lib/br_danfe/danfe_nfce_lib/header.rb
br_danfe-0.12.0 lib/br_danfe/danfe_nfce_lib/header.rb