1
0
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:
Sylvain 2023-03-31 17:21:33 +02:00
parent e9205775ce
commit a25a31b95c
3 changed files with 19 additions and 25 deletions

View File

@ -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?

View File

@ -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

View File

@ -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,