billing 0.0.8 → 0.0.9
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.
- checksums.yaml +4 -4
- data/app/jobs/billing/issue_fiscal_doc.rb +1 -66
- data/app/jobs/billing/issue_print_doc.rb +17 -74
- data/app/models/billing/bill.rb +1 -1
- data/app/models/billing/modifier.rb +4 -0
- data/app/models/billing/modifier_items.rb +2 -2
- data/db/migrate/20160824235224_add_print_headers_to_billing_origin.rb +6 -0
- data/lib/billing/version.rb +1 -1
- data/lib/rescue/plugins/extface_lonely_device.rb +67 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5aaf6345b7a91cc0df617048d93da36900ca1cc4
|
4
|
+
data.tar.gz: f99bb213cb8264b2247a9ba5156804397bff807b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82b21b36a0434f25cf474e3a5b83967e86fd6d6e2e68d50d5773c4dc0b8ea9fb87f32114403c8f5e017b2590b8d5290e82c72559908d00075b1f4aa3822e9b84
|
7
|
+
data.tar.gz: 1c1fcb92d3abd50601794356b4fb6a06dd34f02a8127b72fcb321283f9cdf22710b914751b7943b90ef13d92b843f19f93c351c555de5e2c556bc503f2126250
|
@@ -1,69 +1,4 @@
|
|
1
|
-
|
2
|
-
module Plugins
|
3
|
-
module ExtfaceLonelyDevice
|
4
|
-
LOCK_TIMEOUT = 60 * 60 * 24 * 5 # 5 days
|
5
|
-
|
6
|
-
def lock_timeout
|
7
|
-
Time.now.to_i + LOCK_TIMEOUT + 1
|
8
|
-
end
|
9
|
-
|
10
|
-
def requeue_interval
|
11
|
-
self.instance_variable_get(:@requeue_interval) || 1
|
12
|
-
end
|
13
|
-
|
14
|
-
# Overwrite this method to uniquely identify which mutex should be used
|
15
|
-
# for a resque worker.
|
16
|
-
def redis_key(*args)
|
17
|
-
"extface_"
|
18
|
-
end
|
19
|
-
|
20
|
-
def can_lock_queue?(*args)
|
21
|
-
now = Time.now.to_i
|
22
|
-
key = redis_key(*args)
|
23
|
-
timeout = lock_timeout
|
24
|
-
|
25
|
-
# Per http://redis.io/commands/setnx
|
26
|
-
return true if Resque.redis.setnx(key, timeout)
|
27
|
-
return false if Resque.redis.get(key).to_i > now
|
28
|
-
return true if Resque.redis.getset(key, timeout).to_i <= now
|
29
|
-
return false
|
30
|
-
rescue ActiveRecord::RecordNotFound #redis_key exception
|
31
|
-
p "Not found!!!"
|
32
|
-
sleep 1
|
33
|
-
reenqueue(*args) #will stop if new redis_key exception
|
34
|
-
end
|
35
|
-
|
36
|
-
def unlock_queue(*args)
|
37
|
-
Resque.redis.del(redis_key(*args))
|
38
|
-
end
|
39
|
-
|
40
|
-
def reenqueue(*args)
|
41
|
-
Resque.enqueue_to(redis_key(*args), self, *args)
|
42
|
-
end
|
43
|
-
|
44
|
-
def before_perform(*args)
|
45
|
-
unless can_lock_queue?(*args)
|
46
|
-
# Sleep so the CPU's rest
|
47
|
-
sleep(requeue_interval)
|
48
|
-
|
49
|
-
# can't get the lock, so re-enqueue the task
|
50
|
-
reenqueue(*args)
|
51
|
-
|
52
|
-
# and don't perform
|
53
|
-
raise Resque::Job::DontPerform
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def around_perform(*args)
|
58
|
-
begin
|
59
|
-
yield
|
60
|
-
ensure
|
61
|
-
unlock_queue(*args)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
1
|
+
require 'rescue/plugins/extface_lonely_device'
|
67
2
|
|
68
3
|
module Billing
|
69
4
|
class IssueFiscalDoc
|
@@ -1,69 +1,4 @@
|
|
1
|
-
|
2
|
-
module Plugins
|
3
|
-
module ExtfaceLonelyDevice
|
4
|
-
LOCK_TIMEOUT = 60 * 60 * 24 * 5 # 5 days
|
5
|
-
|
6
|
-
def lock_timeout
|
7
|
-
Time.now.to_i + LOCK_TIMEOUT + 1
|
8
|
-
end
|
9
|
-
|
10
|
-
def requeue_interval
|
11
|
-
self.instance_variable_get(:@requeue_interval) || 1
|
12
|
-
end
|
13
|
-
|
14
|
-
# Overwrite this method to uniquely identify which mutex should be used
|
15
|
-
# for a resque worker.
|
16
|
-
def redis_key(*args)
|
17
|
-
"extface_"
|
18
|
-
end
|
19
|
-
|
20
|
-
def can_lock_queue?(*args)
|
21
|
-
now = Time.now.to_i
|
22
|
-
key = redis_key(*args)
|
23
|
-
timeout = lock_timeout
|
24
|
-
|
25
|
-
# Per http://redis.io/commands/setnx
|
26
|
-
return true if Resque.redis.setnx(key, timeout)
|
27
|
-
return false if Resque.redis.get(key).to_i > now
|
28
|
-
return true if Resque.redis.getset(key, timeout).to_i <= now
|
29
|
-
return false
|
30
|
-
rescue ActiveRecord::RecordNotFound #redis_key exception
|
31
|
-
p "Not found!!!"
|
32
|
-
sleep 1
|
33
|
-
reenqueue(*args) #will stop if new redis_key exception
|
34
|
-
end
|
35
|
-
|
36
|
-
def unlock_queue(*args)
|
37
|
-
Resque.redis.del(redis_key(*args))
|
38
|
-
end
|
39
|
-
|
40
|
-
def reenqueue(*args)
|
41
|
-
Resque.enqueue_to(redis_key(*args), self, *args)
|
42
|
-
end
|
43
|
-
|
44
|
-
def before_perform(*args)
|
45
|
-
unless can_lock_queue?(*args)
|
46
|
-
# Sleep so the CPU's rest
|
47
|
-
sleep(requeue_interval)
|
48
|
-
|
49
|
-
# can't get the lock, so re-enqueue the task
|
50
|
-
reenqueue(*args)
|
51
|
-
|
52
|
-
# and don't perform
|
53
|
-
raise Resque::Job::DontPerform
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def around_perform(*args)
|
58
|
-
begin
|
59
|
-
yield
|
60
|
-
ensure
|
61
|
-
unlock_queue(*args)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
1
|
+
require 'rescue/plugins/extface_lonely_device'
|
67
2
|
|
68
3
|
module Billing
|
69
4
|
class IssuePrintDoc
|
@@ -87,24 +22,32 @@ module Billing
|
|
87
22
|
bill.print_job.runtime do |s|
|
88
23
|
return unless bill.printable?
|
89
24
|
s.notify "Print Doc Start"
|
90
|
-
|
91
|
-
s.print
|
92
|
-
s.print "
|
93
|
-
s.print "
|
25
|
+
|
26
|
+
s.print bill.origin.print_header
|
27
|
+
s.print "\r\n ****** \r\n"
|
28
|
+
s.print "#{bill.name}".truncate(30)
|
29
|
+
s.print "\r\n------------------------------\r\n"
|
94
30
|
|
95
31
|
bill.charges.each do |charge|
|
96
32
|
s.print "#{charge.name.ljust(22)} #{charge.value.to_s.rjust(7)}\r\n"
|
33
|
+
if charge.modifier.present?
|
34
|
+
s.print " Item modifier: #{charge.modifier.human.to_s.rjust(7)}\r\n"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
if bill.modifiers.any?
|
38
|
+
s.print " Global modifier: #{bill.global_modifier_value.to_s.rjust(7)}\r\n"
|
97
39
|
end
|
98
40
|
s.print "-----------\r\n".rjust(32)
|
99
|
-
s.print "#{bill.total}\r\n"
|
41
|
+
s.print "TOTAL: #{bill.total.to_s.rjust(20)}\r\n"
|
100
42
|
|
101
43
|
# s.print "..............................\r\n"
|
102
44
|
# bill.payments.each do |payment|
|
103
45
|
# s.print "#{payment.payment_type.name.humanize}\r\n"
|
104
46
|
# end
|
105
|
-
|
106
|
-
s.print "\r\n"
|
107
|
-
s.print
|
47
|
+
|
48
|
+
s.print " ****** \r\n"
|
49
|
+
s.print bill.origin.print_footer
|
50
|
+
s.print "\r\n------------------------------\r\n"
|
108
51
|
s.print Time.now.strftime("Printed on %m/%d/%Y %T\r\n").rjust(32)
|
109
52
|
s.print "\r\n\r\n\r\n"
|
110
53
|
s.notify "Print Doc End"
|
data/app/models/billing/bill.rb
CHANGED
@@ -107,7 +107,7 @@ module Billing
|
|
107
107
|
if global_modifiers.any?
|
108
108
|
gvalue = Money.new(0)
|
109
109
|
global_modifiers.each do |global_modifier|
|
110
|
-
gvalue += global_modifier.percent_ratio.nil? ? global_modifier.fixed_value : (
|
110
|
+
gvalue += global_modifier.percent_ratio.nil? ? global_modifier.fixed_value : (charges.to_a.sum(0.to_money, &:value).to_money * global_modifier.percent_ratio)
|
111
111
|
end
|
112
112
|
return gvalue
|
113
113
|
end
|
@@ -11,6 +11,10 @@ module Billing
|
|
11
11
|
validates_uniqueness_of :charge, scope: :bill_id, allow_nil: true
|
12
12
|
validates_uniqueness_of :bill, scope: :charge_id
|
13
13
|
|
14
|
+
def human
|
15
|
+
percent_ratio.nil? ? fixed_value : "#{(percent_ratio * 100).to_i}%"
|
16
|
+
end
|
17
|
+
|
14
18
|
private
|
15
19
|
def percent_or_value
|
16
20
|
errors.add :percent_or_value, I18n.t('errors.messages.blank') if percent_ratio.blank? and fixed_value.zero?
|
data/lib/billing/version.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
module Resque
|
2
|
+
module Plugins
|
3
|
+
module ExtfaceLonelyDevice
|
4
|
+
LOCK_TIMEOUT = 60 * 60 * 24 * 5 # 5 days
|
5
|
+
|
6
|
+
def lock_timeout
|
7
|
+
Time.now.to_i + LOCK_TIMEOUT + 1
|
8
|
+
end
|
9
|
+
|
10
|
+
def requeue_interval
|
11
|
+
self.instance_variable_get(:@requeue_interval) || 1
|
12
|
+
end
|
13
|
+
|
14
|
+
# Overwrite this method to uniquely identify which mutex should be used
|
15
|
+
# for a resque worker.
|
16
|
+
def redis_key(*args)
|
17
|
+
"extface_"
|
18
|
+
end
|
19
|
+
|
20
|
+
def can_lock_queue?(*args)
|
21
|
+
now = Time.now.to_i
|
22
|
+
key = redis_key(*args)
|
23
|
+
timeout = lock_timeout
|
24
|
+
|
25
|
+
# Per http://redis.io/commands/setnx
|
26
|
+
return true if Resque.redis.setnx(key, timeout)
|
27
|
+
return false if Resque.redis.get(key).to_i > now
|
28
|
+
return true if Resque.redis.getset(key, timeout).to_i <= now
|
29
|
+
return false
|
30
|
+
rescue ActiveRecord::RecordNotFound #redis_key exception
|
31
|
+
p "Not found!!!"
|
32
|
+
sleep 1
|
33
|
+
reenqueue(*args) #will stop if new redis_key exception
|
34
|
+
end
|
35
|
+
|
36
|
+
def unlock_queue(*args)
|
37
|
+
Resque.redis.del(redis_key(*args))
|
38
|
+
end
|
39
|
+
|
40
|
+
def reenqueue(*args)
|
41
|
+
#Resque.enqueue_to(redis_key(*args), self, *args)
|
42
|
+
Resque.redis.lpush("queue:#{Resque.queue_from_class(self)}", Resque.encode(class: self, args: args))
|
43
|
+
end
|
44
|
+
|
45
|
+
def before_perform(*args)
|
46
|
+
unless can_lock_queue?(*args)
|
47
|
+
# Sleep so the CPU's rest
|
48
|
+
sleep(requeue_interval)
|
49
|
+
|
50
|
+
# can't get the lock, so re-enqueue the task
|
51
|
+
reenqueue(*args)
|
52
|
+
|
53
|
+
# and don't perform
|
54
|
+
raise Resque::Job::DontPerform
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def around_perform(*args)
|
59
|
+
begin
|
60
|
+
yield
|
61
|
+
ensure
|
62
|
+
unlock_queue(*args)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: billing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Vangelov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -177,11 +177,13 @@ files:
|
|
177
177
|
- db/migrate/20150512040421_add_deleted_at_to_billing_report.rb
|
178
178
|
- db/migrate/20160723160908_add_print_device_to_billing_origin.rb
|
179
179
|
- db/migrate/20160723234233_add_print_job_to_billing_bill.rb
|
180
|
+
- db/migrate/20160824235224_add_print_headers_to_billing_origin.rb
|
180
181
|
- lib/billing.rb
|
181
182
|
- lib/billing/billable.rb
|
182
183
|
- lib/billing/engine.rb
|
183
184
|
- lib/billing/version.rb
|
184
185
|
- lib/collection_proxy_wild.rb
|
186
|
+
- lib/rescue/plugins/extface_lonely_device.rb
|
185
187
|
- lib/tasks/billing.rake
|
186
188
|
- lib/tasks/billing_tasks.rake
|
187
189
|
- test/billing_test.rb
|