== Hurtigmoms

= Spørgsmål til revisor

* Hvordan angiver man, at en given faktura er betalt i et andet regnskabs-år?
** Fx, "Faktura 1" sendt d. 24/12-2009 men betalt af kunden d. 20/1-2010
** Fx, "Faktura 1" udstedt af sælger d. 24/12-2009 men betalt af mig d. 20/1-2010





Consider using state plugin:

  http://api.pluginaweek.org/state_machine/


= Unikke features

 * Der foretages automatisk konverering mellem DKK, USD, GBP og EUR så man ikke manuelt behøver at udregne, hvad en faktura lyder på når kontoudskrifter fra banken skal afstemmes. Det gøres helt automatisk.
 * Samlige bilag bliver automatisk arkiveret på Amazon S3 og kan altid hentes ned på den lokale computer.
 * Genkender ord såsom "Beløb", "Total", "Faktura dato" og benytter disse når købs- eller salgs-transaktionen oprettes.
 * Automatisk udligning af "Køb/Betaling" og "Salg/Betaling" transaktioner baseret på regler for samme beloeb/dato interval.


= Ideer

 * Naar en raekke er aktiv, skal den vaere trukket en smule ud som fx det ses paa
   iPhone interfacet, naar man flytter en raekke op/ned
 * Naar en ny raekke tilfoejes skal den vises i toppen men 'head' paa tabellen 
   skal ikke vises over .. den skal vises under


= Upload af bilag til S3 via Uploadify

 * lav en token der kun virker fem minutter (eller lign)
 * indsaet token samt amazon key i formen


= OCR af billeder

 * Konvert til tif via rmagick

require 'rmagick'
image = Magick::Image.read('test.jpg')
image[0].save('test.tif')

 * Benyt "tesseract" for at faa teksten ud af tif billedet

tesseract test.tif test

 * Laes nu indholdet af "test.txt" der indeholder genkendte tekst


= Genkendelse af PDF

 * Installer "pdf-reader" (sudo gem install pdf-reader) fra
   http://github.com/yob/pdf-reader

 * Benyt flg. klasse

class PageTextReceiver
  attr_accessor :content

  def initialize
    @content = []
  end

  # Called when page parsing starts
  def begin_page(arg = nil)
    @content << ""
  end

  # record text that is drawn on the page
  def show_text(string, *params)
    @content.last << string.strip << "|"
  end

  # there's a few text callbacks, so make sure we process them all
  alias :super_show_text :show_text
  alias :move_to_next_line_and_show_text :show_text
  alias :set_spacing_next_line_show_text :show_text

  # this final text callback takes slightly different arguments
  def show_text_with_positioning(*params)
    params = params.first
    params.each { |str| show_text(str) if str.kind_of?(String)}
  end
end

receiver = PageTextReceiver.new
pdf = PDF::Reader.file("test.pdf", receiver, :pages => true, :metadata => false)
puts receiver.content.inspect