ig3tool 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ig3tool +114 -0
- data/lib/glade/bib.glade +539 -0
- data/lib/glade/bibliotheek.glade +994 -0
- data/lib/glade/icons/cola.png +0 -0
- data/lib/glade/icons/emblem-money.png +0 -0
- data/lib/glade/icons/emblem-package.png +0 -0
- data/lib/glade/icons/emblem-penning.xpm +98 -0
- data/lib/glade/icons/emblem-people.png +0 -0
- data/lib/glade/icons/emblem-sales.png +0 -0
- data/lib/glade/icons/gdict.png +0 -0
- data/lib/glade/icons/members_klein.png +0 -0
- data/lib/glade/icons/members_xklein.png +0 -0
- data/lib/glade/icons/no.xpm +34 -0
- data/lib/glade/icons/stock_book.svg +338 -0
- data/lib/glade/icons/stock_book_klein.png +0 -0
- data/lib/glade/icons/stock_book_xklein.png +0 -0
- data/lib/glade/icons/stock_bookmark.svg +327 -0
- data/lib/glade/icons/stock_bookmark_klein.png +0 -0
- data/lib/glade/icons/stock_bookmark_xklein.png +0 -0
- data/lib/glade/icons/stock_print.png +0 -0
- data/lib/glade/interne.glade +228 -0
- data/lib/glade/loginwindow.glade +255 -0
- data/lib/glade/memberinfo.svg +411 -0
- data/lib/glade/memberinfo_klein.png +0 -0
- data/lib/glade/memberinfo_xklein.png +0 -0
- data/lib/glade/members.glade +596 -0
- data/lib/glade/members.svg +559 -0
- data/lib/glade/members_klein.png +0 -0
- data/lib/glade/members_xklein.png +0 -0
- data/lib/glade/penningtool.glade +731 -0
- data/lib/glade/people.glade +947 -0
- data/lib/glade/printen.glade +358 -0
- data/lib/glade/printer.png +0 -0
- data/lib/glade/printer_klein.png +0 -0
- data/lib/glade/printer_xklein.png +0 -0
- data/lib/glade/printerlog_klein.png +0 -0
- data/lib/glade/printerlog_xklein.png +0 -0
- data/lib/glade/printing.glade +841 -0
- data/lib/glade/products.glade +404 -0
- data/lib/glade/sales.glade +426 -0
- data/lib/glade/stock_book.svg +338 -0
- data/lib/glade/stock_book_klein.png +0 -0
- data/lib/glade/stock_book_xklein.png +0 -0
- data/lib/glade/stock_bookmark_klein.png +0 -0
- data/lib/glade/stock_bookmark_xklein.png +0 -0
- data/lib/glade/vendingmachine.glade +207 -0
- data/lib/lib/errors.rb +90 -0
- data/lib/lib/util.rb +89 -0
- data/lib/ui/automaatwindow.rb +107 -0
- data/lib/ui/bibliotheekwindow.rb +453 -0
- data/lib/ui/bibwindow.rb +537 -0
- data/lib/ui/gladehelper.rb +110 -0
- data/lib/ui/internewindow.rb +126 -0
- data/lib/ui/loginwindow.rb +60 -0
- data/lib/ui/memberswindow.rb +327 -0
- data/lib/ui/messagebox.rb +23 -0
- data/lib/ui/peoplewindow.rb +333 -0
- data/lib/ui/printenwindow.rb +329 -0
- data/lib/ui/printingwindow.rb +395 -0
- data/lib/ui/productswindow.rb +160 -0
- data/lib/ui/saleswindow.rb +207 -0
- data/lib/ui/toolwindow.rb +97 -0
- metadata +128 -0
@@ -0,0 +1,207 @@
|
|
1
|
+
module Ig3tool
|
2
|
+
|
3
|
+
class SalesWindow < GladeHelper
|
4
|
+
MENU_PATH = ["Sales", "Sales"]
|
5
|
+
ICON = "emblem-sales.png"
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
super("sales.glade")
|
9
|
+
make_debugger_combo(_get_widget("debugger"), @window)
|
10
|
+
@status = "non member"
|
11
|
+
@target = nil
|
12
|
+
|
13
|
+
# init items
|
14
|
+
@items = _get_widget("list")
|
15
|
+
@items.model = Gtk::ListStore.new(Integer, String, Float, Object)
|
16
|
+
r = Gtk::CellRendererText.new
|
17
|
+
@items.insert_column(-1, "Aantal", r, :text => 0)
|
18
|
+
@items.insert_column(-1, "Product", r, :text => 1)
|
19
|
+
@items.insert_column(-1, "Prijs", r, :text => 2)
|
20
|
+
|
21
|
+
@window.show
|
22
|
+
end
|
23
|
+
|
24
|
+
def smartzap_activate
|
25
|
+
value = _get_widget("smartzap").text
|
26
|
+
value.strip!
|
27
|
+
_get_widget("smartzap").text = ""
|
28
|
+
|
29
|
+
case value
|
30
|
+
when "non member"
|
31
|
+
@target = nil
|
32
|
+
@status = "non member"
|
33
|
+
return
|
34
|
+
|
35
|
+
when "kaching"
|
36
|
+
_kaching
|
37
|
+
@items.model.clear
|
38
|
+
return
|
39
|
+
|
40
|
+
when "scribble"
|
41
|
+
_scribble
|
42
|
+
@items.model.clear
|
43
|
+
return
|
44
|
+
|
45
|
+
# is het een debugger?
|
46
|
+
when /^[a-z]/
|
47
|
+
wanted = {"username", value, "status", "debugger"}
|
48
|
+
pers = $global["client"].person_lookup(wanted)
|
49
|
+
|
50
|
+
unless pers.empty?
|
51
|
+
pers = pers.first
|
52
|
+
|
53
|
+
@target = pers.username
|
54
|
+
@status = "debugger"
|
55
|
+
|
56
|
+
_get_widget("debugger").model.each do |m, p, i|
|
57
|
+
if i[1] == @target
|
58
|
+
_get_widget("debugger").active_iter = i
|
59
|
+
break
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
return
|
64
|
+
end
|
65
|
+
|
66
|
+
# is het een member?
|
67
|
+
begin
|
68
|
+
memb = $global["client"].membership_lookup(value)
|
69
|
+
|
70
|
+
@target = memb.barcode
|
71
|
+
@status = "member"
|
72
|
+
return
|
73
|
+
rescue Exception => e
|
74
|
+
end
|
75
|
+
|
76
|
+
# is het een product?
|
77
|
+
begin
|
78
|
+
prod = $global["client"].product_lookup(value)
|
79
|
+
qty = _get_widget("count").text.to_i
|
80
|
+
_add_product(prod, qty)
|
81
|
+
return
|
82
|
+
end
|
83
|
+
# het is een vliegtuig!
|
84
|
+
end
|
85
|
+
|
86
|
+
def delete_clicked
|
87
|
+
sel = @items.selection.selected
|
88
|
+
@items.model.remove(sel) if sel
|
89
|
+
end
|
90
|
+
|
91
|
+
def price_entries_changed
|
92
|
+
paid = _get_widget("paid").text.to_f
|
93
|
+
total = _get_widget("total").text.to_f
|
94
|
+
|
95
|
+
change = paid - total
|
96
|
+
change = 0 if change < 0
|
97
|
+
|
98
|
+
_get_widget("change").text = sprintf("%.2f", change)
|
99
|
+
end
|
100
|
+
|
101
|
+
def scribble_clicked
|
102
|
+
_scribble
|
103
|
+
end
|
104
|
+
|
105
|
+
def clear_clicked
|
106
|
+
@items.model.clear
|
107
|
+
_update_total
|
108
|
+
end
|
109
|
+
|
110
|
+
alias_method :count_activate, :smartzap_activate
|
111
|
+
|
112
|
+
private
|
113
|
+
def _get_items
|
114
|
+
products = []
|
115
|
+
@items.model.each do |model, path, row|
|
116
|
+
products.push([row[3].barcode,row[0]])
|
117
|
+
end
|
118
|
+
products
|
119
|
+
end
|
120
|
+
|
121
|
+
def _scribble
|
122
|
+
unless @status == "debugger"
|
123
|
+
warn "not a debugger"
|
124
|
+
return
|
125
|
+
end
|
126
|
+
|
127
|
+
items = _get_items
|
128
|
+
|
129
|
+
return if items.empty?
|
130
|
+
params = { "debugger" => @target,
|
131
|
+
"items" => items }
|
132
|
+
|
133
|
+
begin
|
134
|
+
$global["client"].scribble! params
|
135
|
+
clear_clicked
|
136
|
+
# XXX make sound
|
137
|
+
rescue Exception => e
|
138
|
+
puts "Error: #{$!}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def _kaching
|
143
|
+
items = _get_items
|
144
|
+
|
145
|
+
params = { "debugger" => "dharnie", # XXX get username
|
146
|
+
"items" => items,
|
147
|
+
"status" => @status }
|
148
|
+
|
149
|
+
begin
|
150
|
+
$global["client"].kaching! params
|
151
|
+
clear_clicked
|
152
|
+
# XXX make sound
|
153
|
+
rescue Exception => e
|
154
|
+
puts "Error: #{$!}"
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def _add_product(prod, qty)
|
159
|
+
qty = qty.to_i
|
160
|
+
return if qty < 1
|
161
|
+
|
162
|
+
# zoek eerst naar een bestaande entry voor prod
|
163
|
+
found = nil
|
164
|
+
@items.model.each do |model, path, row|
|
165
|
+
found = row if row[3].barcode == prod.barcode
|
166
|
+
end
|
167
|
+
|
168
|
+
if found
|
169
|
+
oldqty = found[0]
|
170
|
+
found[0] += qty
|
171
|
+
found[2] = found[2] * (oldqty+qty)/oldqty
|
172
|
+
else
|
173
|
+
row = @items.model.append
|
174
|
+
row[0] = qty
|
175
|
+
row[1] = prod.name
|
176
|
+
row[2] = qty * prod.send(_price).to_f / 100
|
177
|
+
row[3] = prod
|
178
|
+
end
|
179
|
+
|
180
|
+
_get_widget("count").text = "1"
|
181
|
+
_update_total
|
182
|
+
end
|
183
|
+
|
184
|
+
def _price
|
185
|
+
case @status
|
186
|
+
when "debugger"
|
187
|
+
:dprice
|
188
|
+
|
189
|
+
when "member"
|
190
|
+
:mprice
|
191
|
+
|
192
|
+
else
|
193
|
+
:nmprice
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def _update_total
|
198
|
+
total = 0.0
|
199
|
+
@items.model.each { |m, p, r| total += r[2].to_f }
|
200
|
+
_get_widget("total").text = sprintf "%.2f", total
|
201
|
+
end
|
202
|
+
|
203
|
+
end
|
204
|
+
|
205
|
+
register_window(SalesWindow)
|
206
|
+
|
207
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module Ig3tool
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
# Hoofdmenu (altijd on top)
|
6
|
+
# Zorgt voor dynamische uitbreidingsmogelijkheden van de ig3tool
|
7
|
+
|
8
|
+
class ToolWindow
|
9
|
+
|
10
|
+
@@windows = {}
|
11
|
+
|
12
|
+
ICON_BASEPATH = Pathname.new(__FILE__).parent.parent + "glade/icons"
|
13
|
+
|
14
|
+
def initialize (klasses)
|
15
|
+
window = Gtk::Window.new
|
16
|
+
window.title = "Ig3tool"
|
17
|
+
window.type_hint = Gdk::Window::TYPE_HINT_UTILITY
|
18
|
+
#window.keep_above = true
|
19
|
+
window.move(0,0)
|
20
|
+
|
21
|
+
bigbox = Gtk::VBox.new(true)
|
22
|
+
bigbox.border_width = 6
|
23
|
+
bigbox.spacing = 12
|
24
|
+
window.add(bigbox)
|
25
|
+
|
26
|
+
|
27
|
+
klasses.each do |klass|
|
28
|
+
name = klass::MENU_PATH.last
|
29
|
+
icon = (klass::ICON || "no.xpm")
|
30
|
+
button = create_button(name, icon.to_s)
|
31
|
+
button.signal_connect("clicked") do
|
32
|
+
@@windows[klass] ||= klass.new
|
33
|
+
@@windows[klass].show
|
34
|
+
@@windows[klass].present
|
35
|
+
end
|
36
|
+
bigbox.add(button)
|
37
|
+
end
|
38
|
+
|
39
|
+
window.signal_connect("delete-event") do
|
40
|
+
not ask_to_quit(window)
|
41
|
+
end
|
42
|
+
window.signal_connect("destroy") do
|
43
|
+
Gtk::main_quit
|
44
|
+
end
|
45
|
+
|
46
|
+
bigbox.show_all
|
47
|
+
size = window.size_request
|
48
|
+
size[0] += 24
|
49
|
+
size[1] += klasses.length * 12
|
50
|
+
window.set_default_size(*size)
|
51
|
+
window.show_all
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def create_button (label, icon = nil)
|
57
|
+
if not icon
|
58
|
+
return Gtk::Button.new(label)
|
59
|
+
end
|
60
|
+
|
61
|
+
i = Gtk::Image.new((ICON_BASEPATH + icon).to_s)
|
62
|
+
l = Gtk::Label.new(label)
|
63
|
+
l.set_alignment(0, 0.5)
|
64
|
+
|
65
|
+
h = Gtk::HBox.new(false, 6)
|
66
|
+
h.pack_start(i, false, false)
|
67
|
+
h.pack_start(l, false, false)
|
68
|
+
|
69
|
+
a = Gtk::Alignment.new(0.5, 0.5, 0, 0)
|
70
|
+
a.add(h)
|
71
|
+
|
72
|
+
b = Gtk::Button.new
|
73
|
+
b.add(a)
|
74
|
+
return b
|
75
|
+
end
|
76
|
+
|
77
|
+
def ask_to_quit (window)
|
78
|
+
dialog = Gtk::MessageDialog.new(window, 0,
|
79
|
+
Gtk::MessageDialog::QUESTION,
|
80
|
+
Gtk::MessageDialog::BUTTONS_NONE,
|
81
|
+
"De ig3tool (met alle venstertjes) afsluiten?")
|
82
|
+
dialog.add_buttons(
|
83
|
+
[ Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL ],
|
84
|
+
[ Gtk::Stock::QUIT, Gtk::Dialog::RESPONSE_OK ])
|
85
|
+
dialog.move(169,0)
|
86
|
+
dialog.default_response = Gtk::Dialog::RESPONSE_OK
|
87
|
+
quit = dialog.run == Gtk::Dialog::RESPONSE_OK
|
88
|
+
dialog.destroy
|
89
|
+
return quit
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.remove_window (klass)
|
93
|
+
@@windows.delete klass
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ig3tool
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kevin Pinte
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-03-05 00:00:00 +01:00
|
13
|
+
default_executable: ig3tool
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ig3client
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.1.0
|
23
|
+
version:
|
24
|
+
description:
|
25
|
+
email: igtool@infogroep.be
|
26
|
+
executables:
|
27
|
+
- ig3tool
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files: []
|
31
|
+
|
32
|
+
files:
|
33
|
+
- lib/glade
|
34
|
+
- lib/lib
|
35
|
+
- lib/ui
|
36
|
+
- bin/ig3tool
|
37
|
+
- lib/glade/bib.glade
|
38
|
+
- lib/glade/bibliotheek.glade
|
39
|
+
- lib/glade/icons
|
40
|
+
- lib/glade/icons/cola.png
|
41
|
+
- lib/glade/icons/emblem-money.png
|
42
|
+
- lib/glade/icons/emblem-package.png
|
43
|
+
- lib/glade/icons/emblem-penning.xpm
|
44
|
+
- lib/glade/icons/emblem-people.png
|
45
|
+
- lib/glade/icons/emblem-sales.png
|
46
|
+
- lib/glade/icons/gdict.png
|
47
|
+
- lib/glade/icons/members_klein.png
|
48
|
+
- lib/glade/icons/members_xklein.png
|
49
|
+
- lib/glade/icons/no.xpm
|
50
|
+
- lib/glade/icons/stock_book.svg
|
51
|
+
- lib/glade/icons/stock_book_klein.png
|
52
|
+
- lib/glade/icons/stock_book_xklein.png
|
53
|
+
- lib/glade/icons/stock_bookmark.svg
|
54
|
+
- lib/glade/icons/stock_bookmark_klein.png
|
55
|
+
- lib/glade/icons/stock_bookmark_xklein.png
|
56
|
+
- lib/glade/icons/stock_print.png
|
57
|
+
- lib/glade/interne.glade
|
58
|
+
- lib/glade/loginwindow.glade
|
59
|
+
- lib/glade/memberinfo.svg
|
60
|
+
- lib/glade/memberinfo_klein.png
|
61
|
+
- lib/glade/memberinfo_xklein.png
|
62
|
+
- lib/glade/members.glade
|
63
|
+
- lib/glade/members.svg
|
64
|
+
- lib/glade/members_klein.png
|
65
|
+
- lib/glade/members_xklein.png
|
66
|
+
- lib/glade/penningtool.glade
|
67
|
+
- lib/glade/people.glade
|
68
|
+
- lib/glade/printen.glade
|
69
|
+
- lib/glade/printer.png
|
70
|
+
- lib/glade/printer_klein.png
|
71
|
+
- lib/glade/printer_xklein.png
|
72
|
+
- lib/glade/printerlog_klein.png
|
73
|
+
- lib/glade/printerlog_xklein.png
|
74
|
+
- lib/glade/printing.glade
|
75
|
+
- lib/glade/products.glade
|
76
|
+
- lib/glade/sales.glade
|
77
|
+
- lib/glade/stock_book.svg
|
78
|
+
- lib/glade/stock_book_klein.png
|
79
|
+
- lib/glade/stock_book_xklein.png
|
80
|
+
- lib/glade/stock_bookmark_klein.png
|
81
|
+
- lib/glade/stock_bookmark_xklein.png
|
82
|
+
- lib/glade/vendingmachine.glade
|
83
|
+
- lib/lib/errors.rb
|
84
|
+
- lib/lib/util.rb
|
85
|
+
- lib/ui/automaatwindow.rb
|
86
|
+
- lib/ui/bibliotheekwindow.rb
|
87
|
+
- lib/ui/bibwindow.rb
|
88
|
+
- lib/ui/gladehelper.rb
|
89
|
+
- lib/ui/internewindow.rb
|
90
|
+
- lib/ui/loginwindow.rb
|
91
|
+
- lib/ui/memberswindow.rb
|
92
|
+
- lib/ui/messagebox.rb
|
93
|
+
- lib/ui/peoplewindow.rb
|
94
|
+
- lib/ui/printenwindow.rb
|
95
|
+
- lib/ui/printingwindow.rb
|
96
|
+
- lib/ui/productswindow.rb
|
97
|
+
- lib/ui/saleswindow.rb
|
98
|
+
- lib/ui/toolwindow.rb
|
99
|
+
has_rdoc: false
|
100
|
+
homepage: http://infogroep.be
|
101
|
+
post_install_message:
|
102
|
+
rdoc_options: []
|
103
|
+
|
104
|
+
require_paths:
|
105
|
+
- lib
|
106
|
+
- lib
|
107
|
+
- lib/ui
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: "0"
|
113
|
+
version:
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "0"
|
119
|
+
version:
|
120
|
+
requirements: []
|
121
|
+
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 1.0.1
|
124
|
+
signing_key:
|
125
|
+
specification_version: 2
|
126
|
+
summary: gtk ig3tool client
|
127
|
+
test_files: []
|
128
|
+
|