Sha256: 7cb41ee2375aa648f68f74fa5e3edca6091d9fe5b4f71475ec34a41174a56023

Contents?: true

Size: 1.78 KB

Versions: 15

Compression:

Stored size: 1.78 KB

Contents

#!/usr/bin/env ruby
# encoding: utf-8
# Factory -- ydim -- 16.01.2006 -- hwyss@ywesee.com

require 'ydim/debitor'
require 'ydim/invoice'

module YDIM
	class Factory
		def initialize(serv)
			@serv = serv
		end
		def create_autoinvoice(debitor)
			id = @serv.id_server.next_id(:autoinvoice, 
                                   @serv.config.invoice_number_start)
			invoice = AutoInvoice.new(id)
			yield(invoice) if(block_given?)
      if debitor.foreign?
        invoice.suppress_vat = true
      end
			invoice.debitor = debitor
			debitor.autoinvoices.odba_store
			invoice
		end
		def create_invoice(debitor)
			id = @serv.id_server.next_id(:invoice, @serv.config.invoice_number_start)
			invoice = Invoice.new(id)
			yield(invoice) if(block_given?)
			invoice.debitor = debitor
      if debitor.foreign?
        invoice.suppress_vat = true
      end
			debitor.invoices.odba_store
			invoice
		end
    def generate_invoice(autoinvoice)
      create_invoice(autoinvoice.debitor) { |inv|
        date = autoinvoice.date || Date.today
        nextdate = autoinvoice.advance(date)
        inv.date = date
        inv.currency = autoinvoice.currency
        inv.description = sprintf("%s %s-%s", autoinvoice.description,
                                  date.strftime("%d.%m.%Y"),
                                  (nextdate - 1).strftime("%d.%m.%Y"))
        inv.precision = autoinvoice.precision
        inv.payment_period = autoinvoice.payment_period
        autoinvoice.items.each { |item|
          nitem = item.dup
          nitem.time = Time.now
          nitem.expiry_time = Time.local(nextdate.year, nextdate.month,
                                         nextdate.day)
          nitem.vat_rate = @serv.config.vat_rate
          inv.add_item(nitem)
        }
        autoinvoice.odba_store
      }
    end
	end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ydim-1.1.5 lib/ydim/factory.rb
ydim-1.1.4 lib/ydim/factory.rb
ydim-1.1.3 lib/ydim/factory.rb
ydim-1.1.2 lib/ydim/factory.rb
ydim-1.1.1 lib/ydim/factory.rb
ydim-1.1.0 lib/ydim/factory.rb
ydim-1.0.9 lib/ydim/factory.rb
ydim-1.0.8 lib/ydim/factory.rb
ydim-1.0.7 lib/ydim/factory.rb
ydim-1.0.6 lib/ydim/factory.rb
ydim-1.0.5 lib/ydim/factory.rb
ydim-1.0.4 lib/ydim/factory.rb
ydim-1.0.3 lib/ydim/factory.rb
ydim-1.0.2 lib/ydim/factory.rb
ydim-1.0.1 lib/ydim/factory.rb