class YDIM::Html::State::Invoice

Constants

VIEW

Attributes

model[R]

Public Instance Methods

_do_update() click to toggle source
# File lib/ydim/html/state/invoice.rb, line 142
  def _do_update
          if((id = @session.user_input(:unique_id)) \
 && @model.unique_id == id.to_i)
                  ## update items
                  keys = [:text, :quantity, :unit, :price]
                  data = {}
                  user_input(keys).each { |key, hash|
                          hash.each { |idx, value|
                                  (data[idx] ||= {}).store(key, value)
                          } unless hash.nil?
                  }
                  target = origin = nil
                  converter = if((target = @session.user_input(:currency)) \
                           && (origin = @model.currency) \
                           && origin != target)
                          @session.currency_converter
                  end
                  data.each { |idx, item|
                          if(converter)
                                  item[:price] = converter.convert(item[:price], origin, target)
                          end
                          @session.update_item(id.to_i, idx.to_i, item, invoice_key)
                  }

                  _do_update_invoice(user_input(invoice_keys, invoice_mandatory))
@model.update! ## @model is a SortableInvoice
                  @model.odba_store
          end
  end
_do_update_invoice(input) click to toggle source
# File lib/ydim/html/state/invoice.rb, line 171
def _do_update_invoice(input)
  input[:precision] = (input[:precision] || 2).to_i
  input.each { |key, val|
    @model.send("#{key}=", val)
  }
end
ajax_create_item() click to toggle source
# File lib/ydim/html/state/invoice.rb, line 85
  def ajax_create_item
          if(id = @session.user_input(:unique_id))
                  begin
                          @session.add_items(id.to_i, [{:time => Time.now}], invoice_key)
                  rescue IndexError
                  end
@model.update! ## @model is a SortableInvoice
          end
          AjaxItems.new(@session, @model.items)
  end
ajax_delete_item() click to toggle source
# File lib/ydim/html/state/invoice.rb, line 95
  def ajax_delete_item
          if((id = @session.user_input(:unique_id)) \
                  && (idx = @session.user_input(:index)))
                  begin
                          @session.delete_item(id.to_i, idx.to_i, invoice_key)
                  rescue IndexError
                  end
@model.update! ## @model is a SortableInvoice
          end
          AjaxItems.new(@session, @model.items)
  end
ajax_invoice() click to toggle source
# File lib/ydim/html/state/invoice.rb, line 125
def ajax_invoice
        _do_update
        AjaxInvoice.new(@session, @model)
end
ajax_item() click to toggle source
# File lib/ydim/html/state/invoice.rb, line 106
def ajax_item
        data = {}
        if((id = @session.user_input(:unique_id)) \
                && (idx = @session.user_input(:index)))
                begin
                        keys = [:text, :quantity, :unit, :price]
                        input = user_input(keys).delete_if { |key, val| val.nil?  }
                        item = @session.update_item(id.to_i, idx.to_i, input, 
                            invoice_key)
                        input.each { |key, val| data.store("#{key}[#{item.index}]", val) }
                        data.store("total_netto#{item.index}", item.total_netto)
                rescue IndexError
                end
        end
        [:total_netto, :vat, :total_brutto].each { |key|
                data.store(key, @model.send(key))
        }
        AjaxValues.new(@session, data)
end
init() click to toggle source
Calls superclass method
# File lib/ydim/html/state/invoice.rb, line 81
def init
  @model = SortableInvoice.new @model
  super
end
pdf() click to toggle source
Calls superclass method YDIM::Html::State::Global#pdf
# File lib/ydim/html/state/invoice.rb, line 129
def pdf
  newstate = super
  newstate.sortby, newstate.sort_reverse = @sortby, @sort_reverse
  newstate
end
send_invoice() click to toggle source
Calls superclass method YDIM::Html::State::Global#send_invoice
# File lib/ydim/html/state/invoice.rb, line 134
def send_invoice
  _do_update
  super
end
update() click to toggle source
# File lib/ydim/html/state/invoice.rb, line 138
def update
        _do_update
        self
end