Added CSV export for items
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
require "rqrcode"
|
||||
require "csv"
|
||||
|
||||
class Item < ApplicationRecord
|
||||
belongs_to :category
|
||||
@@ -31,6 +32,41 @@ class Item < ApplicationRecord
|
||||
).html_safe # Sagt Rails, dass das HTML unbedenklich ausgegeben werden darf
|
||||
end
|
||||
|
||||
def self.to_csv
|
||||
# Die Spaltenüberschriften, die in der Excel-Datei erscheinen sollen
|
||||
headers = [ "ID", "Artikelname", "SKU", "Seriennummer", "Sticker_ID", "Einkaufspreis", "Kategorie", "Aktueller_Standort", "Notizen", "Registriert_am" ]
|
||||
|
||||
CSV.generate(headers: true, col_sep: ";", encoding: "UTF-8") do |csv|
|
||||
# 1. Kopfzeile schreiben
|
||||
csv << headers
|
||||
|
||||
# 2. Datenzeilen schreiben (includes verhindert langsame N+1 Datenbankabfragen)
|
||||
all.includes(:category, :user, :room).each do |item|
|
||||
# Dynamischen Standort-Text ermitteln
|
||||
current_location = if item.user.present?
|
||||
"👤 #{item.user.name}"
|
||||
elsif item.room.present?
|
||||
"📍 #{item.room.name_with_building}"
|
||||
else
|
||||
"📦 Im Hauptlager"
|
||||
end
|
||||
|
||||
csv << [
|
||||
item.id,
|
||||
item.name,
|
||||
item.sku,
|
||||
item.serial_number,
|
||||
item.sticker_id,
|
||||
item.price,
|
||||
item.category&.name,
|
||||
current_location,
|
||||
item.notes,
|
||||
item.created_at.strftime("%d.%m.%Y %H:%M")
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def either_user_or_room
|
||||
|
||||
Reference in New Issue
Block a user