ig3tool 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,7 +87,7 @@ require "ui/automaatwindow"
87
87
  require "ui/peoplewindow"
88
88
  require "ui/saleswindow"
89
89
  require "ui/printingwindow.rb"
90
- require "ui/newinterne.rb"
90
+ require "ui/interne.rb"
91
91
  require "ui/protjes.rb"
92
92
  require "ui/loginwindow.rb"
93
93
 
@@ -30,51 +30,40 @@
30
30
  <placeholder/>
31
31
  </child>
32
32
  <child>
33
- <widget class="GtkComboBox" id="debugger">
33
+ <widget class="GtkLabel" id="label6">
34
34
  <property name="visible">True</property>
35
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
36
- <property name="active">0</property>
37
- <signal name="changed" handler="debugger_changed"/>
35
+ <property name="xalign">0</property>
36
+ <property name="label" translatable="yes">Debugger:</property>
38
37
  </widget>
39
38
  <packing>
40
- <property name="left_attach">1</property>
41
- <property name="right_attach">2</property>
42
39
  <property name="top_attach">1</property>
43
40
  <property name="bottom_attach">2</property>
41
+ <property name="x_options">GTK_FILL</property>
42
+ <property name="y_options"></property>
44
43
  </packing>
45
44
  </child>
46
45
  <child>
47
- <widget class="GtkEntry" id="smartzap">
46
+ <widget class="GtkEntry" id="count">
48
47
  <property name="visible">True</property>
49
48
  <property name="can_focus">True</property>
50
- <signal name="activate" handler="smartzap_activate"/>
49
+ <property name="text" translatable="yes">1</property>
50
+ <signal name="activate" handler="count_activate"/>
51
51
  </widget>
52
52
  <packing>
53
53
  <property name="left_attach">1</property>
54
54
  <property name="right_attach">2</property>
55
+ <property name="top_attach">2</property>
56
+ <property name="bottom_attach">3</property>
55
57
  <property name="y_options"></property>
56
58
  </packing>
57
59
  </child>
58
60
  <child>
59
- <widget class="GtkLabel" id="label1">
60
- <property name="visible">True</property>
61
- <property name="xalign">0</property>
62
- <property name="label" translatable="yes">Smartzap:</property>
63
- </widget>
64
- <packing>
65
- <property name="x_options">GTK_FILL</property>
66
- <property name="y_options"></property>
67
- </packing>
68
- </child>
69
- <child>
70
- <widget class="GtkLabel" id="label7">
61
+ <widget class="GtkLabel" id="label5">
71
62
  <property name="visible">True</property>
72
63
  <property name="xalign">0</property>
73
- <property name="label" translatable="yes">Lid:</property>
64
+ <property name="label" translatable="yes">Aantal:</property>
74
65
  </widget>
75
66
  <packing>
76
- <property name="left_attach">2</property>
77
- <property name="right_attach">3</property>
78
67
  <property name="top_attach">2</property>
79
68
  <property name="bottom_attach">3</property>
80
69
  <property name="x_options">GTK_FILL</property>
@@ -86,8 +75,8 @@
86
75
  <property name="visible">True</property>
87
76
  <property name="active">0</property>
88
77
  <property name="items" translatable="yes">non member
89
- member
90
78
  debugger</property>
79
+ <signal name="changed" handler="member_changed"/>
91
80
  <child internal-child="entry">
92
81
  <widget class="GtkEntry" id="comboboxentry-entry1">
93
82
  <property name="text" translatable="yes">non member</property>
@@ -104,12 +93,14 @@ debugger</property>
104
93
  </packing>
105
94
  </child>
106
95
  <child>
107
- <widget class="GtkLabel" id="label5">
96
+ <widget class="GtkLabel" id="label7">
108
97
  <property name="visible">True</property>
109
98
  <property name="xalign">0</property>
110
- <property name="label" translatable="yes">Aantal:</property>
99
+ <property name="label" translatable="yes">Lid:</property>
111
100
  </widget>
112
101
  <packing>
102
+ <property name="left_attach">2</property>
103
+ <property name="right_attach">3</property>
113
104
  <property name="top_attach">2</property>
114
105
  <property name="bottom_attach">3</property>
115
106
  <property name="x_options">GTK_FILL</property>
@@ -117,31 +108,40 @@ debugger</property>
117
108
  </packing>
118
109
  </child>
119
110
  <child>
120
- <widget class="GtkEntry" id="count">
111
+ <widget class="GtkLabel" id="label1">
112
+ <property name="visible">True</property>
113
+ <property name="xalign">0</property>
114
+ <property name="label" translatable="yes">Smartzap:</property>
115
+ </widget>
116
+ <packing>
117
+ <property name="x_options">GTK_FILL</property>
118
+ <property name="y_options"></property>
119
+ </packing>
120
+ </child>
121
+ <child>
122
+ <widget class="GtkEntry" id="smartzap">
121
123
  <property name="visible">True</property>
122
124
  <property name="can_focus">True</property>
123
- <property name="text" translatable="yes">1</property>
124
- <signal name="activate" handler="count_activate"/>
125
+ <signal name="activate" handler="smartzap_activate"/>
125
126
  </widget>
126
127
  <packing>
127
128
  <property name="left_attach">1</property>
128
129
  <property name="right_attach">2</property>
129
- <property name="top_attach">2</property>
130
- <property name="bottom_attach">3</property>
131
130
  <property name="y_options"></property>
132
131
  </packing>
133
132
  </child>
134
133
  <child>
135
- <widget class="GtkLabel" id="label6">
134
+ <widget class="GtkComboBox" id="debugger">
136
135
  <property name="visible">True</property>
137
- <property name="xalign">0</property>
138
- <property name="label" translatable="yes">Debugger:</property>
136
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
137
+ <property name="active">0</property>
138
+ <signal name="changed" handler="debugger_changed"/>
139
139
  </widget>
140
140
  <packing>
141
+ <property name="left_attach">1</property>
142
+ <property name="right_attach">2</property>
141
143
  <property name="top_attach">1</property>
142
144
  <property name="bottom_attach">2</property>
143
- <property name="x_options">GTK_FILL</property>
144
- <property name="y_options"></property>
145
145
  </packing>
146
146
  </child>
147
147
  </widget>
@@ -222,27 +222,33 @@ debugger</property>
222
222
  <property name="column_spacing">6</property>
223
223
  <property name="row_spacing">3</property>
224
224
  <child>
225
- <widget class="GtkLabel" id="label9">
225
+ <widget class="GtkEntry" id="change">
226
226
  <property name="visible">True</property>
227
- <property name="xalign">0</property>
228
- <property name="label" translatable="yes">€</property>
227
+ <property name="can_focus">True</property>
228
+ <property name="editable">False</property>
229
+ <property name="has_frame">False</property>
230
+ <property name="width_chars">9</property>
229
231
  </widget>
230
232
  <packing>
231
- <property name="left_attach">2</property>
232
- <property name="right_attach">3</property>
233
+ <property name="left_attach">1</property>
234
+ <property name="right_attach">2</property>
235
+ <property name="top_attach">2</property>
236
+ <property name="bottom_attach">3</property>
233
237
  <property name="x_options">GTK_FILL</property>
234
238
  <property name="y_options"></property>
235
239
  </packing>
236
240
  </child>
237
241
  <child>
238
- <widget class="GtkLabel" id="label10">
242
+ <widget class="GtkEntry" id="paid">
239
243
  <property name="visible">True</property>
240
- <property name="xalign">0</property>
241
- <property name="label" translatable="yes">€</property>
244
+ <property name="can_focus">True</property>
245
+ <property name="has_frame">False</property>
246
+ <property name="width_chars">9</property>
247
+ <signal name="changed" handler="price_entries_changed"/>
242
248
  </widget>
243
249
  <packing>
244
- <property name="left_attach">2</property>
245
- <property name="right_attach">3</property>
250
+ <property name="left_attach">1</property>
251
+ <property name="right_attach">2</property>
246
252
  <property name="top_attach">1</property>
247
253
  <property name="bottom_attach">2</property>
248
254
  <property name="x_options">GTK_FILL</property>
@@ -250,27 +256,31 @@ debugger</property>
250
256
  </packing>
251
257
  </child>
252
258
  <child>
253
- <widget class="GtkLabel" id="label11">
259
+ <widget class="GtkEntry" id="total">
254
260
  <property name="visible">True</property>
255
- <property name="xalign">0</property>
256
- <property name="label" translatable="yes">€</property>
261
+ <property name="can_focus">True</property>
262
+ <property name="editable">False</property>
263
+ <property name="has_frame">False</property>
264
+ <property name="width_chars">9</property>
265
+ <property name="text" translatable="yes">0.00</property>
266
+ <signal name="changed" handler="price_entries_changed"/>
257
267
  </widget>
258
268
  <packing>
259
- <property name="left_attach">2</property>
260
- <property name="right_attach">3</property>
261
- <property name="top_attach">2</property>
262
- <property name="bottom_attach">3</property>
269
+ <property name="left_attach">1</property>
270
+ <property name="right_attach">2</property>
263
271
  <property name="x_options">GTK_FILL</property>
264
272
  <property name="y_options"></property>
265
273
  </packing>
266
274
  </child>
267
275
  <child>
268
- <widget class="GtkLabel" id="label12">
276
+ <widget class="GtkLabel" id="label14">
269
277
  <property name="visible">True</property>
270
278
  <property name="xalign">0</property>
271
- <property name="label" translatable="yes">Totaal:</property>
279
+ <property name="label" translatable="yes">Terug:</property>
272
280
  </widget>
273
281
  <packing>
282
+ <property name="top_attach">2</property>
283
+ <property name="bottom_attach">3</property>
274
284
  <property name="x_options">GTK_FILL</property>
275
285
  <property name="y_options"></property>
276
286
  </packing>
@@ -289,46 +299,40 @@ debugger</property>
289
299
  </packing>
290
300
  </child>
291
301
  <child>
292
- <widget class="GtkLabel" id="label14">
302
+ <widget class="GtkLabel" id="label12">
293
303
  <property name="visible">True</property>
294
304
  <property name="xalign">0</property>
295
- <property name="label" translatable="yes">Terug:</property>
305
+ <property name="label" translatable="yes">Totaal:</property>
296
306
  </widget>
297
307
  <packing>
298
- <property name="top_attach">2</property>
299
- <property name="bottom_attach">3</property>
300
308
  <property name="x_options">GTK_FILL</property>
301
309
  <property name="y_options"></property>
302
310
  </packing>
303
311
  </child>
304
312
  <child>
305
- <widget class="GtkEntry" id="total">
313
+ <widget class="GtkLabel" id="label11">
306
314
  <property name="visible">True</property>
307
- <property name="can_focus">True</property>
308
- <property name="editable">False</property>
309
- <property name="has_frame">False</property>
310
- <property name="width_chars">9</property>
311
- <property name="text" translatable="yes">0.00</property>
312
- <signal name="changed" handler="price_entries_changed"/>
315
+ <property name="xalign">0</property>
316
+ <property name="label" translatable="yes">€</property>
313
317
  </widget>
314
318
  <packing>
315
- <property name="left_attach">1</property>
316
- <property name="right_attach">2</property>
319
+ <property name="left_attach">2</property>
320
+ <property name="right_attach">3</property>
321
+ <property name="top_attach">2</property>
322
+ <property name="bottom_attach">3</property>
317
323
  <property name="x_options">GTK_FILL</property>
318
324
  <property name="y_options"></property>
319
325
  </packing>
320
326
  </child>
321
327
  <child>
322
- <widget class="GtkEntry" id="paid">
328
+ <widget class="GtkLabel" id="label10">
323
329
  <property name="visible">True</property>
324
- <property name="can_focus">True</property>
325
- <property name="has_frame">False</property>
326
- <property name="width_chars">9</property>
327
- <signal name="changed" handler="price_entries_changed"/>
330
+ <property name="xalign">0</property>
331
+ <property name="label" translatable="yes">€</property>
328
332
  </widget>
329
333
  <packing>
330
- <property name="left_attach">1</property>
331
- <property name="right_attach">2</property>
334
+ <property name="left_attach">2</property>
335
+ <property name="right_attach">3</property>
332
336
  <property name="top_attach">1</property>
333
337
  <property name="bottom_attach">2</property>
334
338
  <property name="x_options">GTK_FILL</property>
@@ -336,18 +340,14 @@ debugger</property>
336
340
  </packing>
337
341
  </child>
338
342
  <child>
339
- <widget class="GtkEntry" id="change">
343
+ <widget class="GtkLabel" id="label9">
340
344
  <property name="visible">True</property>
341
- <property name="can_focus">True</property>
342
- <property name="editable">False</property>
343
- <property name="has_frame">False</property>
344
- <property name="width_chars">9</property>
345
+ <property name="xalign">0</property>
346
+ <property name="label" translatable="yes">€</property>
345
347
  </widget>
346
348
  <packing>
347
- <property name="left_attach">1</property>
348
- <property name="right_attach">2</property>
349
- <property name="top_attach">2</property>
350
- <property name="bottom_attach">3</property>
349
+ <property name="left_attach">2</property>
350
+ <property name="right_attach">3</property>
351
351
  <property name="x_options">GTK_FILL</property>
352
352
  <property name="y_options"></property>
353
353
  </packing>
@@ -123,11 +123,12 @@ module Ig3tool
123
123
  def number_eval_widget(widget, fallback="")
124
124
  text = widget.text
125
125
  text.strip!
126
- text.gsub! /[^\d+\/*()-]/, ""
126
+ text.gsub! /[^\d+\/*().-]/, ""
127
+ text.gsub! /(\D|^)\./, '\1'+'0.' # Ruby laat geen ".2" toe
127
128
  if text =~ /[+\/*()-]/
128
129
  text = begin eval(text).to_s rescue fallback.to_s end
129
130
  else
130
- text = text.to_i.to_s
131
+ text = text.to_f.to_s
131
132
  end
132
133
  widget.text = text
133
134
  end
@@ -105,7 +105,8 @@ module Ig3tool
105
105
  begin
106
106
  amount = @amount.text
107
107
  raise Ig3tool::IG3Error, "uncorrect format for amount" unless amount =~ /\d+(\.\d{1,2}){0,1}/
108
- $client.interne_transfer!("from" => fromusername, "to" => tousername, "amount" => @amount.text.strip.to_c, "message" => @message.text.strip)
108
+ message = @message.text.strip || "No Message"
109
+ $client.interne_transfer!("from" => fromusername, "to" => tousername, "amount" => @amount.text.strip.to_c, "message" => message)
109
110
  _clear
110
111
  _update_transactions(fromusername)
111
112
  @notification.text = "transferred #{amount} EUR from #{fromusername} to #{tousername}"
@@ -98,8 +98,8 @@ module Ig3tool
98
98
  def find_by_barcode(widget)
99
99
  begin
100
100
  barc = @barcode.text
101
- clear_all(nil)
102
101
  p = $client.person_member(barc)
102
+ clear_all(nil)
103
103
  _show(p)
104
104
  rescue Exception => e
105
105
  @notification.text = "no user with barcode #{barc} found..."
@@ -337,7 +337,7 @@ module Ig3tool
337
337
  raise NotFound, "the ig3tool imps found no such user..." if person.nil?
338
338
  person = person[0]
339
339
  @email.text = person["email"]
340
- @saldo.text = user["saldo"]
340
+ @saldo.text = user["saldo"].from_c.to_s
341
341
  @firstname.text = person["first_name"]
342
342
  @lastname.text = person["last_name"]
343
343
  @status.text = $client.person_status(person["username"])
@@ -351,7 +351,7 @@ module Ig3tool
351
351
  raise NotFound, "the ig3tool imps found no such user..." if person.nil? or person.empty?
352
352
  person = person[0]
353
353
  @email.text = person["email"]
354
- @saldo.text = "0"
354
+ @saldo.text = "0.0"
355
355
  @firstname.text = person["first_name"]
356
356
  @lastname.text = person["last_name"]
357
357
  @status.text = $client.person_status(person["username"])
@@ -374,11 +374,11 @@ module Ig3tool
374
374
  def clear_all(widget, clearnotification=true)
375
375
  @username.text = ""
376
376
  @email.text = ""
377
- @saldo.text = ""
377
+ @saldo.text = "0.0"
378
378
  @firstname.text = ""
379
379
  @lastname.text = ""
380
380
  @notification.text = "" if clearnotification
381
- @delta.text = ""
381
+ @delta.text = "0.0"
382
382
  @apply.image = Gtk::Image.new(Gtk::Stock::APPLY, Gtk::IconSize::BUTTON)
383
383
  @apply.label = Gtk::Stock::APPLY
384
384
  @usernames.grab_focus
@@ -387,11 +387,11 @@ module Ig3tool
387
387
 
388
388
  def clear_most(widget)
389
389
  @email.text = ""
390
- @saldo.text = ""
390
+ @saldo.text = "0.0"
391
391
  @firstname.text = ""
392
392
  @lastname.text = ""
393
393
  @notification.text = ""
394
- @delta.text = ""
394
+ @delta.text = "0.0"
395
395
  @apply.image = Gtk::Image.new(Gtk::Stock::APPLY, Gtk::IconSize::BUTTON)
396
396
  @apply.label = Gtk::Stock::APPLY
397
397
  #@statussearch.active = -1
@@ -214,6 +214,12 @@ def initialize
214
214
  make_debugger_combo(@purchase_debugger)
215
215
  make_debugger_combo(@stock_debugger)
216
216
 
217
+ [@purchase_amount, @purchase_price, @purchase_plebs, @purchase_debuggers,
218
+ @purchase_members, @manage_debuggers, @manage_plebs, @manage_members,
219
+ @stock_stock_new].each do |w|
220
+ make_eval_widget w
221
+ end
222
+
217
223
  end
218
224
 
219
225
  def get_debugger(widget)
@@ -6,13 +6,15 @@ module Ig3tool
6
6
 
7
7
  def initialize
8
8
  super("sales.glade")
9
- make_debugger_combo(_get_widget("debugger"), @window)
10
9
  @status = "non member"
11
10
  @target = nil
12
11
 
12
+ @statushash = {0 => "non member", 1 => "debugger"}
13
+ @statushashi = @statushash.invert
14
+
13
15
  # init items
14
16
  @items = _get_widget("list")
15
- @items.model = Gtk::ListStore.new(Integer, String, Float, Object)
17
+ @items.model = Gtk::ListStore.new(Integer, String, Float, Object, String)
16
18
  r = Gtk::CellRendererText.new
17
19
  @items.insert_column(-1, "Aantal", r, :text => 0)
18
20
  @items.insert_column(-1, "Product", r, :text => 1)
@@ -20,9 +22,8 @@ module Ig3tool
20
22
  @member_id = @glade.get_widget("member_id")
21
23
 
22
24
  @window.show
23
- @statushash = {1 => "member", 0 => "non-member", 2 => "debugger"}
24
- @statushashi = @statushash.invert
25
25
 
26
+ make_debugger_combo(_get_widget("debugger"), @window)
26
27
  make_eval_widget @glade.get_widget("count"), 1
27
28
  end
28
29
 
@@ -35,7 +36,7 @@ module Ig3tool
35
36
  when "non member"
36
37
  @target = nil
37
38
  @status = "non member"
38
- @member_id.active = @statushashi[@status]
39
+ @member_id.active = @statushashi[@status]
39
40
  return
40
41
 
41
42
  when "kaching"
@@ -49,20 +50,25 @@ module Ig3tool
49
50
  return
50
51
 
51
52
  # is het een debugger?
52
- when /^[a-z]/
53
+ when /^[a-z-]/i
53
54
  wanted = {"username", value, "status", "debugger"}
54
55
  pers = $client.person_lookup(wanted)
55
56
 
57
+ if pers.empty? # XXX tijdelijk tot we nieuw zapblad hebben
58
+ wanted = {"first_name", value, "status", "debugger"}
59
+ pers = $client.person_lookup(wanted)
60
+ end
61
+
56
62
  unless pers.empty?
57
63
  pers = pers.first
58
64
 
59
65
  @status = "debugger"
60
- @member_id.active = @statushashi[@status]
61
66
  @target = @debugger = pers.username
62
67
 
63
68
  _get_widget("debugger").model.each do |m, p, i|
64
69
  if i[1] == @target
65
70
  _get_widget("debugger").active_iter = i
71
+ @member_id.active = @statushashi[@status]
66
72
  break
67
73
  end
68
74
  end
@@ -72,11 +78,11 @@ module Ig3tool
72
78
 
73
79
  # is het een member?
74
80
  begin
75
- memb = $client.membership_lookup(value)
81
+ memb = $client.person_member(value)
76
82
 
77
- @target = memb.barcode
83
+ @target = value
78
84
  @status = "member"
79
- @member_id.active = @statushashi[@status]
85
+ @member_id.active = @statushashi[@status]
80
86
  return
81
87
  rescue Exception => e
82
88
  end
@@ -92,7 +98,35 @@ module Ig3tool
92
98
  end
93
99
 
94
100
  def debugger_changed
95
- @debugger = _get_widget("debugger").active_iter[1]
101
+ @status = "debugger"
102
+ iter = _get_widget("debugger").active_iter
103
+ unless iter.nil?
104
+ @target = @debugger = iter[1]
105
+ @member_id.active = @statushashi[@status]
106
+ end
107
+ end
108
+
109
+ def member_changed
110
+ chosen = @member_id.active_text.strip
111
+ @target = nil
112
+
113
+ case chosen
114
+ when "non member"
115
+ @status = "non member"
116
+
117
+ when "debugger"
118
+ @target = @debugger = _get_widget("debugger").active_iter[1]
119
+ @status = "debugger"
120
+
121
+ else # member
122
+ begin
123
+ memb = $client.person_member(chosen)
124
+
125
+ @target = chosen
126
+ @status = "member"
127
+ rescue NotAMember => e
128
+ end
129
+ end
96
130
  end
97
131
 
98
132
  def delete_clicked
@@ -130,8 +164,8 @@ module Ig3tool
130
164
 
131
165
  def clear_clicked
132
166
  @items.model.clear
133
- @status = "non-member"
134
- @member_id.active = @statushashi[@status]
167
+ @status = "non member"
168
+ @member_id.active = @statushashi[@status]
135
169
  _update_total
136
170
  end
137
171
 
@@ -146,6 +180,15 @@ module Ig3tool
146
180
  products
147
181
  end
148
182
 
183
+ def _get_items_with_status
184
+ products = {}
185
+ @items.model.each do |model, path, row|
186
+ recip = products[row[4]] ||= []
187
+ recip.push([row[3].barcode,row[0]])
188
+ end
189
+ products
190
+ end
191
+
149
192
  def _scribble
150
193
  unless @status == "debugger"
151
194
  warn "not a debugger"
@@ -156,7 +199,7 @@ module Ig3tool
156
199
 
157
200
  return if items.empty?
158
201
  params = { "debugger" => @debugger,
159
- "items" => items }
202
+ "items" => items }
160
203
 
161
204
  begin
162
205
  $client.scribble! params
@@ -168,18 +211,21 @@ module Ig3tool
168
211
  end
169
212
 
170
213
  def _kaching
171
- items = _get_items
214
+ items = _get_items_with_status
172
215
 
173
- params = { "debugger" => @debugger,
174
- "items" => items,
175
- "status" => @status }
216
+ items.each do |status, items|
176
217
 
177
- begin
178
- $client.kaching! params
179
- clear_clicked
180
- # XXX make sound
181
- rescue Exception => e
182
- puts "Error: #{$!}"
218
+ params = { "debugger" => @debugger,
219
+ "items" => items,
220
+ "status" => status }
221
+
222
+ begin
223
+ $client.kaching! params
224
+ clear_clicked
225
+ # XXX make sound
226
+ rescue Exception => e
227
+ puts "Error: #{$!}"
228
+ end
183
229
  end
184
230
  end
185
231
 
@@ -190,7 +236,7 @@ module Ig3tool
190
236
  # zoek eerst naar een bestaande entry voor prod
191
237
  found = nil
192
238
  @items.model.each do |model, path, row|
193
- found = row if row[3].barcode == prod.barcode
239
+ found = row if row[3].barcode == prod.barcode and @status == row[4]
194
240
  end
195
241
 
196
242
  if found
@@ -203,6 +249,7 @@ module Ig3tool
203
249
  row[1] = prod.name
204
250
  row[2] = qty * prod.send(_price).to_f / 100
205
251
  row[3] = prod
252
+ row[4] = @status
206
253
  end
207
254
 
208
255
  _get_widget("count").text = "1"