@@ -167,6 +167,7 @@ def init_db() -> None:
ensure_price_column ( db )
ensure_image_column ( db )
ensure_sale_column ( db )
ensure_info_column ( db )
ensure_orders_columns ( db )
ensure_payment_columns ( db )
ensure_indexes ( db )
@@ -201,6 +202,16 @@ def ensure_sale_column(db: sqlite3.Connection) -> None:
logger . info ( " Sale-Spalte für items erstellt " )
def ensure_info_column ( db : sqlite3 . Connection ) - > None :
""" Fügt info-Spalte für zusätzliche Artikelinformationen hinzu. """
cols = db . execute ( " PRAGMA table_info(items) " ) . fetchall ( )
if any ( c [ " name " ] == " info " for c in cols ) :
return
db . execute ( " ALTER TABLE items ADD COLUMN info TEXT " )
db . commit ( )
logger . info ( " Info-Spalte für items erstellt " )
def ensure_orders_columns ( db : sqlite3 . Connection ) - > None :
""" Sorgt für alle nachträglich eingeführten Orders‑ Spalten. """
cols = db . execute ( " PRAGMA table_info(orders) " ) . fetchall ( )
@@ -475,6 +486,7 @@ def new_item():
if uploaded :
bild_url = uploaded
sale = 1 if request . form . get ( " sale " ) else 0
info = ( request . form . get ( " info " ) or " " ) . strip ( ) or None
soll = int ( request . form . get ( " soll " ) or 0 )
gezaehlt = int ( request . form . get ( " gezaehlt " ) or 0 )
verkaeufe = int ( request . form . get ( " verkaeufe " ) or 0 )
@@ -483,12 +495,12 @@ def new_item():
db = get_db ( )
db . execute (
"""
INSERT INTO items (artikel, groesse, preis, bild_url, sale, soll, gezaehlt, verkaeufe, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
INSERT INTO items (artikel, groesse, preis, bild_url, sale, info, soll, gezaehlt, verkaeufe, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""" ,
( artikel , groesse , preis , bild_url , sale , soll , gezaehlt , verkaeufe , now_iso ( ) , now_iso ( ) ) ,
( artikel , groesse , preis , bild_url , sale , info , soll , gezaehlt , verkaeufe , now_iso ( ) , now_iso ( ) ) ,
)
db . execute ( " UPDATE items SET preis = ?, bild_url = ?, sale = ? WHERE artikel = ? " , ( preis , bild_url , sale , artikel ) )
db . execute ( " UPDATE items SET preis = ?, bild_url = ?, sale = ?, info = ? WHERE artikel = ? " , ( preis , bild_url , sale , info , artikel ) )
db . commit ( )
return redirect ( url_for ( " bp.index " ) )
@@ -513,6 +525,7 @@ def edit_item(item_id: int):
if uploaded :
bild_url = uploaded
sale = 1 if request . form . get ( " sale " ) else 0
info = ( request . form . get ( " info " ) or " " ) . strip ( ) or None
soll = int ( request . form . get ( " soll " ) or 0 )
gezaehlt = int ( request . form . get ( " gezaehlt " ) or 0 )
verkaeufe = int ( request . form . get ( " verkaeufe " ) or 0 )
@@ -520,12 +533,12 @@ def edit_item(item_id: int):
db . execute (
"""
UPDATE items
SET artikel = ?, groesse = ?, preis = ?, bild_url = ?, sale = ?, soll = ?, gezaehlt = ?, verkaeufe = ?, updated_at = ?
SET artikel = ?, groesse = ?, preis = ?, bild_url = ?, sale = ?, info = ?, soll = ?, gezaehlt = ?, verkaeufe = ?, updated_at = ?
WHERE id = ?
""" ,
( artikel , groesse , preis , bild_url , sale , soll , gezaehlt , verkaeufe , now_iso ( ) , item_id ) ,
( artikel , groesse , preis , bild_url , sale , info , soll , gezaehlt , verkaeufe , now_iso ( ) , item_id ) ,
)
db . execute ( " UPDATE items SET preis = ?, bild_url = ?, sale = ? WHERE artikel = ? " , ( preis , bild_url , sale , artikel ) )
db . execute ( " UPDATE items SET preis = ?, bild_url = ?, sale = ?, info = ? WHERE artikel = ? " , ( preis , bild_url , sale , info , artikel ) )
db . commit ( )
return redirect ( url_for ( " bp.index " ) )
@@ -719,7 +732,7 @@ def build_bestand() -> list[dict]:
""" Aggregiert DB‑ Zeilen in die Struktur der Live‑ Bestand Ansicht. """
rows = get_db ( ) . execute (
"""
SELECT artikel, groesse, preis, bild_url, sale, soll, gezaehlt, verkaeufe
SELECT artikel, groesse, preis, bild_url, sale, info, soll, gezaehlt, verkaeufe
FROM items
ORDER BY artikel, groesse
"""
@@ -732,7 +745,7 @@ def build_bestand() -> list[dict]:
continue
item = data . setdefault (
artikel ,
{ " artikel " : artikel , " preis " : 0 , " bild_url " : " " , " sale " : 0 , " rows " : [ ] , " totals " : { " soll " : 0 , " gezaehlt " : 0 , " abweichung " : 0 , " fehlbestand " : 0 , " verkaeufe " : 0 } } ,
{ " artikel " : artikel , " preis " : 0 , " bild_url " : " " , " sale " : 0 , " info " : None , " rows" : [ ] , " totals " : { " soll " : 0 , " gezaehlt " : 0 , " abweichung " : 0 , " fehlbestand " : 0 , " verkaeufe " : 0 } } ,
)
if not item [ " preis " ] :
item [ " preis " ] = float ( r [ " preis " ] or 0 )
@@ -741,6 +754,9 @@ def build_bestand() -> list[dict]:
# Sale-Status (1 wenn mindestens eine Größe sale=1 hat)
if r [ " sale " ] :
item [ " sale " ] = 1
# Info-Text (nur wenn vorhanden)
if r [ " info " ] and not item [ " info " ] :
item [ " info " ] = ( r [ " info " ] or " " ) . strip ( )
soll = int ( r [ " soll " ] or 0 )
gezaehlt = int ( r [ " gezaehlt " ] or 0 )
verkaeufe = int ( r [ " verkaeufe " ] or 0 )
@@ -886,13 +902,8 @@ def order():
db = get_db ( )
cursor = db . execute (
"""
<<<<<<< HEAD
INSERT INTO orders (name, handy, email, mannschaft, artikel, groesse, menge, notiz, created_at, done, completed_by, completed_at, canceled, canceled_by, canceled_at, payment_method, payment_status)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0, NULL, NULL, 0, NULL, NULL, ?, ' unpaid ' )
=======
INSERT INTO orders (name, handy, mannschaft, artikel, groesse, menge, notiz, created_at, done, completed_by, completed_at, canceled, canceled_by, canceled_at, payment_method, payment_status)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0, NULL, NULL, 0, NULL, NULL, ?, ' unpaid ' )
>>>>>>> origin/main
""" ,
(
data . get ( " name " ) ,
@@ -1031,11 +1042,7 @@ def orders():
""" Bestellliste in der Verwaltung. """
rows = get_db ( ) . execute (
"""
<<<<<<< HEAD
SELECT id, name, handy, email, mannschaft, artikel, groesse, menge, notiz, created_at, done, completed_by, completed_at, canceled, canceled_by, canceled_at, payment_method, payment_status, paid_at, paid_by
=======
SELECT id, name, handy, mannschaft, artikel, groesse, menge, notiz, created_at, done, completed_by, completed_at, canceled, canceled_by, canceled_at, payment_method, payment_status, paid_at, paid_by
>>>>>>> origin/main
FROM orders
ORDER BY id DESC
LIMIT 500