Skip to content

Instantly share code, notes, and snippets.

@gtan66
Created August 31, 2015 22:04
Show Gist options
  • Save gtan66/bfe8815f54953fb1712d to your computer and use it in GitHub Desktop.
Save gtan66/bfe8815f54953fb1712d to your computer and use it in GitHub Desktop.
finalize invoice with lots of line item weirdness
invoice = Invoice.find 456040
account = invoice.account
location = invoice.location
lis = [2422969,2422970,2422973]
changed_lis = lis.map do |l|
li = LineItem.find l
sd = account.security_deposits.where(refunded_at:nil).select{|m| m.occupiable.name == li.occupiable.name }.last
li.occupiable = sd.occupiable
li
end
changed_lis.each(&:save)
account_balance = account.ensure_balance_for(invoice.location)
invoice.finalize!
AccountBalanceJournalEntry.create_from_finalized_invoice!(invoice)
account.reload
account_balance.reload
resource = Resource.security_deposit
invoice.line_items.where(reservable: resource).each do |sd_line_item|
security_deposit = SecurityDeposit.for_account_by_office_and_location(account, location, sd_line_item.occupiable).last
security_deposit.create_journal_entry(sd_line_item)
security_deposit.refunded_at = Time.now if security_deposit.amount == 0
security_deposit.save!
end
InvoiceService.new.close_invoice!(invoice)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment