Added CSV export for items
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / system-test (push) Has been cancelled

This commit is contained in:
2026-05-22 04:47:04 +02:00
parent e4bbb329b5
commit ae05cb53b6
5 changed files with 55 additions and 1 deletions

View File

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