app/jobs/billing/issue_print_doc.rb in billing-0.0.8 vs app/jobs/billing/issue_print_doc.rb in billing-0.0.9
- old
+ new
@@ -1,72 +1,7 @@
-module Resque
- module Plugins
- module ExtfaceLonelyDevice
- LOCK_TIMEOUT = 60 * 60 * 24 * 5 # 5 days
+require 'rescue/plugins/extface_lonely_device'
- def lock_timeout
- Time.now.to_i + LOCK_TIMEOUT + 1
- end
-
- def requeue_interval
- self.instance_variable_get(:@requeue_interval) || 1
- end
-
- # Overwrite this method to uniquely identify which mutex should be used
- # for a resque worker.
- def redis_key(*args)
- "extface_"
- end
-
- def can_lock_queue?(*args)
- now = Time.now.to_i
- key = redis_key(*args)
- timeout = lock_timeout
-
- # Per http://redis.io/commands/setnx
- return true if Resque.redis.setnx(key, timeout)
- return false if Resque.redis.get(key).to_i > now
- return true if Resque.redis.getset(key, timeout).to_i <= now
- return false
- rescue ActiveRecord::RecordNotFound #redis_key exception
- p "Not found!!!"
- sleep 1
- reenqueue(*args) #will stop if new redis_key exception
- end
-
- def unlock_queue(*args)
- Resque.redis.del(redis_key(*args))
- end
-
- def reenqueue(*args)
- Resque.enqueue_to(redis_key(*args), self, *args)
- end
-
- def before_perform(*args)
- unless can_lock_queue?(*args)
- # Sleep so the CPU's rest
- sleep(requeue_interval)
-
- # can't get the lock, so re-enqueue the task
- reenqueue(*args)
-
- # and don't perform
- raise Resque::Job::DontPerform
- end
- end
-
- def around_perform(*args)
- begin
- yield
- ensure
- unlock_queue(*args)
- end
- end
- end
- end
-end
-
module Billing
class IssuePrintDoc
extend Resque::Plugins::ExtfaceLonelyDevice
def self.redis_key(bill_id)
@@ -85,27 +20,35 @@
bill.print_job.runtime do |s|
return unless bill.printable?
s.notify "Print Doc Start"
- s.print "******************************\r\n*"
- s.print "Bill ##{bill.number}".center(28)
- s.print "*\r\n******************************\r\n"
- s.print "------------------------------\r\n"
+ s.print bill.origin.print_header
+ s.print "\r\n ****** \r\n"
+ s.print "#{bill.name}".truncate(30)
+ s.print "\r\n------------------------------\r\n"
+
bill.charges.each do |charge|
s.print "#{charge.name.ljust(22)} #{charge.value.to_s.rjust(7)}\r\n"
+ if charge.modifier.present?
+ s.print " Item modifier: #{charge.modifier.human.to_s.rjust(7)}\r\n"
+ end
end
+ if bill.modifiers.any?
+ s.print " Global modifier: #{bill.global_modifier_value.to_s.rjust(7)}\r\n"
+ end
s.print "-----------\r\n".rjust(32)
- s.print "#{bill.total}\r\n".rjust(32)
+ s.print "TOTAL: #{bill.total.to_s.rjust(20)}\r\n"
# s.print "..............................\r\n"
# bill.payments.each do |payment|
# s.print "#{payment.payment_type.name.humanize}\r\n"
# end
-
- s.print "\r\n"
- s.print "------------------------------\r\n"
+
+ s.print " ****** \r\n"
+ s.print bill.origin.print_footer
+ s.print "\r\n------------------------------\r\n"
s.print Time.now.strftime("Printed on %m/%d/%Y %T\r\n").rjust(32)
s.print "\r\n\r\n\r\n"
s.notify "Print Doc End"
end
rescue Resque::TermException
\ No newline at end of file