Class: Ig3tool::ProductsWindow

Inherits:
GladeHelper show all
Defined in:
lib/ui/productswindow.rb

Constant Summary collapse

["Producten", "Producten"]
ICON =
"doos_xsmall.png"

Constants inherited from GladeHelper

GladeHelper::GLADE_DIR

Instance Method Summary collapse

Methods inherited from GladeHelper

#_get_widget, #add_window_colorer, #make_debugger_combo, #make_eval_widget, #make_status_combo, #present, #show

Constructor Details

#initializeProductsWindow

Returns a new instance of ProductsWindow.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/ui/productswindow.rb', line 7

def initialize
	super("products.glade")

	@product_view   = @glade.get_widget("producttree")
	@barcode_entry  = @glade.get_widget("barcode")
	@name_entry     = @glade.get_widget("name")
	@category       = @glade.get_widget("category")
	@category_combo = @glade.get_widget("category_combo")
	@dprice_entry   = @glade.get_widget("dprice")
	@lprice_entry   = @glade.get_widget("lprice")
	@nlprice_entry  = @glade.get_widget("nlprice")
	@stock_label    = @glade.get_widget("stock")
	@purchase_view  = @glade.get_widget("purchaselist")
	@date_entry     = @glade.get_widget("date")
	@new_price      = @glade.get_widget("new_price")
	@new_stock      = @glade.get_widget("new_stock")

	s1 = Gtk::SizeGroup.new(Gtk::SizeGroup::BOTH)
	%w(slabel1 slabel2 slabel3 slabel4 slabel5).each do |w|
		s1.add_widget(@glade.get_widget(w))
	end
	s2 = Gtk::SizeGroup.new(Gtk::SizeGroup::BOTH)
	%w(update_button new_stock_button stock_correction_button return_button).each do |w|
		s2.add_widget(@glade.get_widget(w))
	end

	@purchase_list = Gtk::ListStore.new(Object, String, String, String, Integer, Integer)
	@purchase_view.model = @purchase_list
	renderer = Gtk::CellRendererText.new
	renderer.xalign = 1
	@purchase_view.insert_column(-1, "Datum", renderer, :text => 1)
	@purchase_view.insert_column(-1, "Totaalprijs", renderer, :text => 2)
	@purchase_view.insert_column(-1, "Stukprijs", renderer, :text => 3)
	@purchase_view.insert_column(-1, "Huidig", renderer, :text => 4)
	@purchase_view.insert_column(-1, "Aantal", renderer, :text => 5)

	renderer = Gtk::CellRendererText.new
	@products = Gtk::ListStore.new(Object, String)
	@product_view.model = @products
	@product_view.insert_column(-1, "Product", renderer, :text => 1)

	cat_model = Gtk::ListStore.new(String)
	cat_model.prepend[0] = "Alle categorieën"
	$client.product_categories.collect {|x| x.name}.sort.each do |cat|
		r    = cat_model.append
		r[0] = cat
	end
	@category_combo.model  = cat_model
	@category_combo.active = 0

	renderer = Gtk::CellRendererText.new
	@category_combo.pack_start(renderer, true)
	@category_combo.set_attributes(renderer, :text => 0)

	@stock_label.text = "0"
	@date_entry.text = Date.today.to_s

	[@lprice_entry, @nlprice_entry, @new_price, @new_stock].each do |widget|
		make_eval_widget widget
	end

	@window.show
	@glade = nil

	@selected_product = nil

end

Instance Method Details

#add_button_clickedObject



98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/ui/productswindow.rb', line 98

def add_button_clicked
	return if @selected_product.nil?
	amount = @new_stock.text.to_i
	price  = @new_price.text.to_f

	args = { :debugger => $client.username,
	         :items    => { @selected_product.barcode => [amount, amount * price.to_c] }
	}

	$client.product_purchase! args
	p = $client.product_purchases(@selected_product.barcode).first
	_add_purchase(p, false)
end

#btn_apply_clicked_cbObject



94
95
96
# File 'lib/ui/productswindow.rb', line 94

def btn_apply_clicked_cb
	# todo
end

#btn_clear_clicked_cbObject



90
91
92
# File 'lib/ui/productswindow.rb', line 90

def btn_clear_clicked_cb
	_clear
end

#category_combo_changedObject



112
113
114
115
116
117
118
119
120
# File 'lib/ui/productswindow.rb', line 112

def category_combo_changed
	active = @category_combo.active 
	products = $client.product_all
	if active > 0
		category = @category_combo.active_iter[0]
		products = products.select {|p| p.category == category}
	end
	_fill_products products
end

#product_row_activated(widget, path, column) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/ui/productswindow.rb', line 75

def product_row_activated (widget, path, column)
	prod = @product_view.selection.selected[0]
	@selected_product       = prod
	@barcode_entry.editable = false
	@name_entry.text        = prod.name
	@barcode_entry.text     = prod.barcode
	@category.child.text    = prod.category
	@new_price.text         = sprintf("%.2f", prod.dprice.to_i.from_c)
	@dprice_entry.text      = sprintf("%.2f", prod.dprice.to_i.from_c)
	@lprice_entry.text      = sprintf("%.2f", prod.mprice.to_i.from_c)
	@nlprice_entry.text     = sprintf("%.2f", prod.nmprice.to_i.from_c)
	@stock_label.text       = prod.stock.to_s
	_fill_purchases
end