mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-20 14:54:15 +01:00
(bug) invoice with esoteric ref pattern
This commit is contained in:
parent
e9205775ce
commit
a25a31b95c
@ -191,7 +191,7 @@ class Invoice < PaymentDocument
|
||||
end
|
||||
|
||||
def paid_by_card?
|
||||
!payment_gateway_object.nil? && payment_method == 'card'
|
||||
payment_method == 'card'
|
||||
end
|
||||
|
||||
def paid_by_wallet?
|
||||
|
@ -34,31 +34,20 @@ class Invoices::NumberService
|
||||
|
||||
pattern = pattern(date, setting)
|
||||
pattern = pattern.gsub(/([SXR]\[[^\]]+\])+/, '%')
|
||||
if pattern.match?(/n+/)
|
||||
pattern = pattern.gsub(/n+/) do |match|
|
||||
pad_and_truncate(number, match.to_s.length)
|
||||
end
|
||||
case pattern
|
||||
when /n+/
|
||||
pattern = pattern.gsub(/[YMD]+/) { |match| '_' * match.to_s.length }
|
||||
else
|
||||
case pattern
|
||||
when /y+/
|
||||
pattern = pattern.gsub(/y+/) do |match|
|
||||
pad_and_truncate(number, match.to_s.length)
|
||||
end
|
||||
pattern = pattern.gsub(/[MD]+/) { |match| '_' * match.to_s.length }
|
||||
when /m+/
|
||||
pattern = pattern.gsub(/m+/) do |match|
|
||||
pad_and_truncate(number, match.to_s.length)
|
||||
end
|
||||
pattern = pattern.gsub(/D+/) { |match| '_' * match.to_s.length }
|
||||
when /d+/
|
||||
pattern = pattern.gsub(/d+/) do |match|
|
||||
pad_and_truncate(number, match.to_s.length)
|
||||
end
|
||||
end
|
||||
when /y+/
|
||||
pattern = pattern.gsub(/[MD]+/) { |match| '_' * match.to_s.length }
|
||||
when /m+/
|
||||
pattern = pattern.gsub(/D+/) { |match| '_' * match.to_s.length }
|
||||
end
|
||||
pattern = PaymentDocumentService.send(:replace_date_pattern, pattern, date)
|
||||
|
||||
pattern = pattern.gsub(/n+|y+|m+|d+/) do |match|
|
||||
pad_and_truncate(number, match.to_s.length)
|
||||
end
|
||||
|
||||
field = setting == 'invoice_reference' ? 'reference' : 'order_number'
|
||||
field = 'reference' if klass == Order
|
||||
klass.where("#{field} LIKE '#{pattern}'").first
|
||||
|
@ -13,13 +13,18 @@ namespace :fablab do
|
||||
|
||||
# browse invoices to list missing reference
|
||||
puts 'Computing missing references...'
|
||||
not_closed(Invoice).order(created_at: :desc).each do |invoice|
|
||||
not_closed(Invoice).find_each do |invoice|
|
||||
number = Invoices::NumberService.number(invoice)
|
||||
next if number == 1
|
||||
|
||||
previous = Invoice.where('created_at < :date', date: db_time(invoice.created_at))
|
||||
.order(created_at: :desc)
|
||||
.limit(1)
|
||||
.first
|
||||
previous_saved_number = Invoices::NumberService.number(previous)
|
||||
previous_number = number - 1
|
||||
loop do
|
||||
break if previous_number.zero?
|
||||
break if previous_number.zero? || previous_number == previous_saved_number
|
||||
|
||||
previous_invoice = Invoices::NumberService.find_by_number(previous_number, date: invoice.created_at)
|
||||
break if previous_invoice.present?
|
||||
@ -36,7 +41,7 @@ namespace :fablab do
|
||||
total = missing_references.values.filter(&:present?).flatten.count
|
||||
counter = 1
|
||||
missing_references.each_pair do |date, numbers|
|
||||
numbers.uniq.sort.reverse_each.with_index do |number, index|
|
||||
numbers.each_with_index do |number, index|
|
||||
print "#{counter} / #{total}\r"
|
||||
invoice = Invoice.new(
|
||||
total: 0,
|
||||
|
Loading…
x
Reference in New Issue
Block a user