ig3tool 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,193 +0,0 @@
1
- module Ig3tool
2
-
3
- class ProductsWindow < GladeHelper
4
- MENU_PATH = ["Producten", "Producten"]
5
- ICON = "doos_xsmall.png"
6
-
7
- def initialize
8
- super("products.glade")
9
-
10
- @product_view = @glade.get_widget("producttree")
11
- @barcode_entry = @glade.get_widget("barcode")
12
- @name_entry = @glade.get_widget("name")
13
- @category = @glade.get_widget("category")
14
- @category_combo = @glade.get_widget("category_combo")
15
- @dprice_entry = @glade.get_widget("dprice")
16
- @lprice_entry = @glade.get_widget("lprice")
17
- @nlprice_entry = @glade.get_widget("nlprice")
18
- @stock_label = @glade.get_widget("stock")
19
- @purchase_view = @glade.get_widget("purchaselist")
20
- @date_entry = @glade.get_widget("date")
21
- @new_price = @glade.get_widget("new_price")
22
- @new_stock = @glade.get_widget("new_stock")
23
-
24
- s1 = Gtk::SizeGroup.new(Gtk::SizeGroup::BOTH)
25
- %w(slabel1 slabel2 slabel3 slabel4 slabel5).each do |w|
26
- s1.add_widget(@glade.get_widget(w))
27
- end
28
- s2 = Gtk::SizeGroup.new(Gtk::SizeGroup::BOTH)
29
- %w(update_button new_stock_button stock_correction_button return_button).each do |w|
30
- s2.add_widget(@glade.get_widget(w))
31
- end
32
-
33
- @purchase_list = Gtk::ListStore.new(Object, String, String, String, Integer, Integer)
34
- @purchase_view.model = @purchase_list
35
- renderer = Gtk::CellRendererText.new
36
- renderer.xalign = 1
37
- @purchase_view.insert_column(-1, "Datum", renderer, :text => 1)
38
- @purchase_view.insert_column(-1, "Totaalprijs", renderer, :text => 2)
39
- @purchase_view.insert_column(-1, "Stukprijs", renderer, :text => 3)
40
- @purchase_view.insert_column(-1, "Huidig", renderer, :text => 4)
41
- @purchase_view.insert_column(-1, "Aantal", renderer, :text => 5)
42
-
43
- renderer = Gtk::CellRendererText.new
44
- @products = Gtk::ListStore.new(Object, String)
45
- @product_view.model = @products
46
- @product_view.insert_column(-1, "Product", renderer, :text => 1)
47
-
48
- cat_model = Gtk::ListStore.new(String)
49
- cat_model.prepend[0] = "Alle categorieën"
50
- $client.product_categories.collect {|x| x.name}.sort.each do |cat|
51
- r = cat_model.append
52
- r[0] = cat
53
- end
54
- @category_combo.model = cat_model
55
- @category_combo.active = 0
56
-
57
- renderer = Gtk::CellRendererText.new
58
- @category_combo.pack_start(renderer, true)
59
- @category_combo.set_attributes(renderer, :text => 0)
60
-
61
- @stock_label.text = "0"
62
- @date_entry.text = Date.today.to_s
63
-
64
- [@lprice_entry, @nlprice_entry, @new_price, @new_stock].each do |widget|
65
- make_eval_widget widget
66
- end
67
-
68
- @window.show
69
- @glade = nil
70
-
71
- @selected_product = nil
72
- @barcode_entry.editable = true
73
-
74
- end
75
-
76
- def barcode_ins(a,b,c,d)
77
- _clear_most
78
- end
79
-
80
- def barcode_del(a,b,c)
81
- _clear_most
82
- end
83
-
84
- def product_row_activated (widget, path, column)
85
- prod = @product_view.selection.selected[0]
86
- @selected_product = prod
87
- #@barcode_entry.editable = false
88
- @name_entry.text = prod.name
89
- @barcode_entry.text = prod.barcode
90
- @category.child.text = prod.category
91
- @new_price.text = sprintf("%.2f", prod.dprice.to_i.from_c)
92
- @dprice_entry.text = sprintf("%.2f", prod.dprice.to_i.from_c)
93
- @lprice_entry.text = sprintf("%.2f", prod.mprice.to_i.from_c)
94
- @nlprice_entry.text = sprintf("%.2f", prod.nmprice.to_i.from_c)
95
- @stock_label.text = prod.stock.to_s
96
- _fill_purchases
97
- end
98
-
99
- def btn_clear_clicked_cb
100
- _clear
101
- end
102
-
103
- def btn_apply_clicked_cb
104
- # todo
105
- end
106
-
107
- def add_button_clicked
108
- return if @selected_product.nil?
109
- amount = @new_stock.text.to_i
110
- price = @new_price.text.to_f
111
-
112
- args = { :debugger => $client.username,
113
- :items => { @selected_product.barcode => [amount, amount * price.to_c] }
114
- }
115
-
116
- $client.product_purchase! args
117
- p = $client.product_purchases(@selected_product.barcode).first
118
- _add_purchase(p, false)
119
- end
120
-
121
- def category_combo_changed
122
- active = @category_combo.active
123
- products = $client.product_all
124
- if active > 0
125
- category = @category_combo.active_iter[0]
126
- products = products.select {|p| p.category == category}
127
- end
128
- _fill_products products
129
- end
130
-
131
- private
132
- def _clear
133
- @selected_product = nil
134
- @barcode_entry.text = ""
135
- @name_entry.text = ""
136
- @category.child.text = ""
137
- @dprice_entry.text = ""
138
- @lprice_entry.text = ""
139
- @nlprice_entry.text = ""
140
- @stock_label.text = "0"
141
- @new_price.text = ""
142
- @new_stock.text = ""
143
- _fill_purchases
144
- end
145
-
146
- def _clear_most
147
- @selected_product = nil
148
- @name_entry.text = ""
149
- @category.child.text = ""
150
- @dprice_entry.text = ""
151
- @lprice_entry.text = ""
152
- @nlprice_entry.text = ""
153
- @stock_label.text = "0"
154
- @new_price.text = ""
155
- @new_stock.text = ""
156
- _fill_purchases
157
- end
158
-
159
- def _fill_products (products)
160
- @product_view.model = nil
161
- @products.clear
162
- products.sort {|a,b| a.name.downcase <=> b.name.downcase}.each do |prod|
163
- row = @products.append
164
- row[0] = prod
165
- row[1] = prod.name
166
- end
167
- @product_view.model = @products
168
- end
169
-
170
- def _fill_purchases
171
- @purchase_list.clear
172
- return if @selected_product.nil?
173
- @selected_product.purchases.each do |p|
174
- _add_purchase(p)
175
- end
176
- end
177
-
178
- def _add_purchase(p, at_end = true)
179
- row = at_end ? @purchase_list.append : @purchase_list.prepend
180
- row[0] = p
181
- row[1] = p.time.to_s
182
- row[2] = sprintf("%.2f", p.cost.from_c)
183
- row[3] = sprintf("%.2f", p.cost.from_c/p.count.to_i)
184
- row[4] = p.current.to_i
185
- row[5] = p.count.to_i
186
- end
187
-
188
-
189
- end
190
-
191
- register_window(ProductsWindow)
192
-
193
- end