{{ screenTitle }}
Bestellliste
{{ orderListCount }}Alles unter Mindestbestand und aus abgeschickten Events. Antippen öffnet die Liste unter „Bestellungen".
Letzte Bewegungen
| Name | Istbestand | Mindestbestand | Status | Lagerort | |
|---|---|---|---|---|---|
|
{{ p.name }}
{{ p.quantitaet }} · EAN {{ p.ean }}
|
{{ p.istLabel }} | {{ p.minLabel }} | {{ p.statusLabel }} | {{ p.ort }} | Details |
{{ eanScanTitle }}
Bestandsverlauf dieses Produkts
{{ dhCountLabel }}| Datum | Vorgang | Menge | Bestand danach | Person |
|---|---|---|---|---|
| {{ r.when }} | {{ r.kind }} | {{ r.delta }} | {{ r.after }} | {{ r.who }} |
Für dieses Produkt gibt es noch keine Buchungen.
{{ current.name }}
Entnehmen oder nachfüllen
Menge eingeben und buchen. Jede Buchung wird mit Person und Zeitstempel protokolliert.
{{ current.name }}
Wirklich vollständig löschen?
{{ deleteWarning }}
Wer den Verlauf behalten will, schaltet das Produkt stattdessen auf „nicht aktiv" — es verschwindet dann aus allen Listen, bleibt aber auffindbar.
Informationen über das Produkt
Nur dieses Produkt. Scan öffnet direkt diese Detailansicht.
Am Lagerort den QR-Code am Regal scannen. Der Code passt nur auf ein Produkt und öffnet dessen Detailansicht.
Kamera nicht verfügbar
{{ camErrorText }}
Die Kamera funktioniert nur über eine verschlüsselte Verbindung. Beim ersten Mal fragt der Browser um Erlaubnis — ohne Zustimmung bleibt das Bild schwarz.
Auswahl
Beliebig kombinierbar. Leer heißt: alles.Bestand im Zeitverlauf
{{ hChart }}Summe im Zeitraum
Meistbewegte Artikel
Einzelne Buchungen
{{ hCountLabel }}| Zeitpunkt | Artikel | Menge | Bestand danach | Person | Lagerort | |
|---|---|---|---|---|---|---|
| {{ r.when }} | {{ r.name }} | {{ r.delta }} | {{ r.after }} | {{ r.who }} | {{ r.ort }} |
Fehlerhafte Bestände
Hier landen Ausbuchungen, die ohne Verbindung gespeichert wurden und beim Übertragen mehr abbuchen wollten, als im Bestand war. Der Bestand steht dann auf 0 und stimmt nicht mit dem Lager überein — eine Inventur klärt das.
| Zeitpunkt | Ware | Fehlmenge | Vorgang | Person | |
|---|---|---|---|---|---|
| {{ iv.when }} | {{ iv.name }} | −{{ iv.missing }} | {{ iv.note }} | {{ iv.who }} |
Liegen mehr Meldungen vor als eingestellt, geht eine Mail mit den betroffenen Waren an alle Kontakte. Nach dem Zurücksetzen wird erst wieder gemailt, wenn die Grenze erneut überschritten ist.
Preisverlauf und Umsatz
Jede Preisänderung gilt ab ihrem Datum. Der Umsatz nimmt für jede Entnahme den Preis, der an diesem Tag gültig war — über ein Produkt oder über mehrere zusammen.
| Produkt | Entnommen | Preis heute | Umsatz |
|---|---|---|---|
| {{ rv.name }} | {{ rv.qty }} | {{ rv.price }} | {{ rv.sum }} |
| Datum | Produkt | Preis | Änderung |
|---|---|---|---|
| {{ pr.datum }} | {{ pr.name }} | {{ pr.preis }} | {{ pr.delta }} |
Aus der Bestellmail: Positionen wählen
{{ pickCountLabel }}Bestellliste
{{ orderListCount }} Alles unter Mindestbestand und aus abgeschickten Events, gesammelt für die nächste Bestellung| {{ row.name }} {{ row.srcNote }} |
|
Offene Bestellungen
{{ ordersCountLabel }}Alle Produkte mit dem Status „in Bestellung". Menge bei Bedarf anpassen. „Zurück in Bestand" bucht sie ein: reicht der Bestand danach noch nicht bis zum Mindestbestand, kommt das Produkt zurück in die Bestellliste, sonst ist es wieder „Bestand ok".
|
{{ od.code }} · {{ od.ort }}
|
|
Nichts in Bestellung
Bestellverlauf
{{ histCountLabel }}Noch keine Bestellung gespeichert. Jede Bestellung erscheint hier, sobald sie auf „in Bestellung" gesetzt wird.
{{ h.when }} {{ h.summary }} {{ h.by }} · {{ h.id }} {{ h.stateLabel }}
Bestelllisten je Person
{{ plCountLabel }}Alles, was offen ist — aus der Bestellliste, aus Bestellungen und aus kommenden Events — landet zuerst bei der verantwortlichen Person. Einzelne Positionen lassen sich zu einer anderen Person verschieben.
| Artikel | Menge | Quelle | Lieferant | Verschieben zu |
|---|---|---|---|---|
| {{ pr.name }} | {{ pr.amount }} | {{ pr.src }} | {{ pr.lieferant }} |
{{ plEmptyNote }}
Nichts in Bestellung
Sobald ein Artikel in Bestellung gesetzt wird — hier, im Produkt oder über den Knopf in der Bestellmail — erscheint er an dieser Stelle.
{{ o.id }}
{{ o.countLabel }} {{ o.stateLabel }}Infos und Rückmeldung
{{ ii.title }}
{{ ii.body }}
Deine Rückmeldung geht ohne Namen an alle mit höherer Rechteebene. Sobald jemand sie liest, bekommst du eine Info mit dem Zeitpunkt.
Über dir gibt es keine höhere Rechteebene.
{{ fm.body }}
Anonym — ohne Namen der Person.
{{ fi.body }}
Trinkgeld verteilen
Für jeden Tag das Tagestrinkgeld und die Arbeitszeiten eintragen. Verteilt wird nach Arbeitszeit: Wer länger da war, bekommt mehr. „Berechnen“ fasst alle Tage zusammen.
Noch keine Tage angelegt.
{{ tipResTitle }}
Abläufe Schritt für Schritt
Alle, die einen Ablauf sehen, haken gemeinsam ab — jeder Haken wird sofort gespeichert. Abschließen geht erst, wenn jeder Punkt abgehakt oder mit Begründung übersprungen ist.
{{ wfEditTitle }}
Sobald jemand den Ablauf bestätigt, gilt er für alle in den gewählten Abteilungen als erledigt, bis der nächste Zeitraum beginnt.
{{ w.desc }}
{{ w.notDueText }}
Inaktiv — nur für Bearbeitende sichtbar, abhaken ist gesperrt.
{{ ws.info }}
| Arbeitsablauf | Zu erledigen | Erledigt | Teilweise erledigt | Nicht erledigt |
|---|---|---|---|---|
| {{ sr.title }} | {{ sr.tot }} | {{ sr.full }} | {{ sr.part }} | {{ sr.miss }} |
| Arbeitsablauf | Zeitraum | Erledigt |
|---|---|---|
| {{ mr.title }} | {{ mr.when }} | {{ mr.count }} |
| Arbeitsablauf | Person | Begonnen | Erledigt | Dauer | |
|---|---|---|---|---|---|
| {{ lr.title }} | {{ lr.who }} | {{ lr.start }} | {{ lr.end }} | {{ lr.dur }} | |
|
{{ ls.mark }}
{{ ls.text }}
{{ ls.who }}
{{ ls.at }}
{{ ls.reason }}
|
|||||
Meine Merkzettel
Produkte und Mengen vormerken. Abhaken bucht die Position sofort aus dem Bestand aus. Gespeicherte Merkzettel lassen sich immer wieder verwenden.
Du darfst keine Entnahmen buchen — abhaken ist deshalb gesperrt.
{{ memoEditTitle }}
Noch keine Positionen.
{{ mc.name }}
{{ mc.statusLabel }}Alle Positionen sind abgehakt und ausgebucht.
Noch kein Merkzettel gespeichert.
{{ eventName }}
{{ eventMeta }}| {{ thName }} | Benötigt | Bestand | {{ thMissing }} | {{ thSupplier }} | {{ thPlace }} | Status |
|---|---|---|---|---|---|---|
| {{ r.name }} {{ r.id }} {{ r.offLabel }} |
{{ r.needLabel }} | {{ r.stockLabel }} | {{ r.missLabel }} | {{ r.lieferant }} | {{ r.ort }} | {{ r.statusLabel }} |
Vorschau
Was kommende Events brauchen, zusammengerechnet und gegen den heutigen Bestand gestellt. Vergangene Events zählen nicht mit.
| Artikel | Bedarf | Bestand | Rest |
|---|---|---|---|
| {{ fr.name }} {{ fr.note }} |
{{ fr.need }} | {{ fr.stock }} | {{ fr.rest }} |
Geplante Events
{{ upcomingCount }}Keine kommenden Events.
Vergangene Events
{{ pastCount }}Keine vergangenen Events.
{{ evFormTitle }}
Artikel und Mengen eintragen — auch deaktivierte. Beim Anlegen entsteht automatisch die Bedarfs- und Bestellliste mit den Fehlmengen.
Einzelnes Produkt anlegen
Viele Produkte aus einer Tabelle importieren
- Vorlage wählen: leer oder mit dem heutigen Bestand
- Zeile für Zeile ausfüllen, eine Zeile ist ein Produkt
- In Excel über „Speichern unter" als CSV ablegen (Trennzeichen Semikolon)
- Datei unten hochladen, Spalten prüfen, importieren
| Spalte in Datei | Feld im System | Prüfung |
|---|---|---|
| {{ r.col }} | {{ r.field }} | {{ r.check }} |
Etiketten gestalten
{{ qrCountLabel }}Ein Etikett in der Vorschau anklicken, um es einzeln zu beschriften.
{{ qeTitle }}
Rollen und ihre Standardrechte{{ roleCountLabel }}
Eine Rolle ist eine Vorlage: Wer sie bekommt, startet mit genau diesen Rechten. Einzelne Personen lassen sich danach weiter oben abweichend einstellen. Die inhabende Person darf immer alles und ist deshalb nicht änderbar.
{{ rl.summaryLabel }}
Team
| Person | Rolle | Status | |
|---|---|---|---|
{{ u.name }} {{ u.email }} |
{{ u.statusLabel }} |
Team einladen
Die Einladung gilt 3 Stunden. Läuft sie ab, kannst du erneut einladen.
Kein Zugriff auf die Rechteverwaltung
Wer welche Rechte hat, sehen und ändern nur die inhabende Person und wer das Recht „Rechte ändern" ausdrücklich bekommen hat.
{{ pickedName }}
Scheidet jemand aus dem Unternehmen aus, können Profildaten hier geändert, der Zugang gesperrt oder die Person entfernt werden.
{{ pg.title }}{{ pg.count }}▾
Wie mache ich …?
Kurze Antworten zu allem, was im Lager täglich vorkommt. Tippe ein Stichwort ein, um zu filtern.
Tutorials
Schritt für Schritt auf den echten Seiten — jedes Tutorial für sich{{ tu.title }}
{{ tu.text }}
- {{ ts }}
{{ hg.title }}
{{ hi.q }}
{{ par }}
Nichts gefunden
Kein Eintrag passt zu diesem Stichwort. Versuche ein einzelnes Wort — etwa „Mail", „Etikett" oder „Import".
{{ meName }}
{{ meEmail }}Sprache und Darstellung
Passwort ändern
Zwei-Faktor-Anmeldung
VorbereitetDie Anmeldung verlangt Passwort und Bot-Prüfung. Der zweite Faktor über eine Authenticator-App ist im Programm angelegt, aber noch abgeschaltet — er lässt sich später zuschalten, ohne dass Konten neu eingerichtet werden müssen.
Meine Rechte
{{ myPermCount }}Was du in dieser Firma darfst.
{{ pg.title }}{{ pg.count }}▾
Lager und Artikel
Lagerorte, Gebinde und eigene Felder {{ lblSetStock }}{{ chevSetStock }}Abteilungen
Abteilungen sind streng getrennt: jede hat ihren eigenen Bestand, eigene Kennzahlen und eigene QR-Codes. Wer einer Abteilung nicht zugeordnet ist, sieht sie nicht. Zuordnen unter Team & Rechte.
Sichtbarkeit je Abteilung
Welche Lagerorte, Quantitäten und eigenen Merkmale in einer Abteilung zur Auswahl stehen. Abgewählt heißt: in dieser Abteilung ausgeblendet.
Produkte in andere Abteilung kopieren
Spart das Neuanlegen. Die Kopien haben gleiche Bezeichnung und EAN, aber eigenen Bestand (startet bei 0), eigene Kennzahlen und neue QR-Codes.
Lagerorte
Die Auswahl, die beim Anlegen eines Produkts und in allen Filtern erscheint. Ein Lagerort lässt sich nur löschen, wenn kein Produkt mehr darin liegt.
Quantitäten
Gebinde, in denen eure Ware ankommt und rausgeht: Flasche, Kiste, Palette, Rolle, Sack. Eine Quantität kann für sich stehen oder sich auf eine andere beziehen — dann rechnet das Lager beim Buchen um.
„Kiste, Verhältnis zu Flasche, 12" ergibt 1 Kiste = 12 Flaschen. Eine Palette mit 32 Kisten wird auf die Kiste bezogen, nicht auf die Flasche — die Kette rechnet sich von selbst durch. Gebinde ohne Bezug bleiben eigenständig.
Eigene Merkmale
Zusätzliche Felder für jedes Produkt. Wähle Name und Art — und wenn gewünscht, was das Feld in der Bestandsverwaltung auslöst.
Warnungen und Mail
Wann wer eine Nachricht bekommt {{ lblSetMail }}{{ chevSetMail }}Benachrichtigung bei Unterschreitung
Keine Einstellungen freigegeben
Die Bereiche „Lager und Artikel" und „Warnungen und Mail" hat die inhabende Person für dich gesperrt. Deine persönlichen Einstellungen findest du unter „Mein Konto".
System und Kosten
Dienste, Mailversand prüfen, Grenzen {{ lblSetSys }}{{ chevSetSys }}Datenquelle
Produkte, Bestände, Verläufe und Konten liegen in Supabase, die Mails verschickt Brevo, Bilder und große Dateien liegen in Cloudflare R2, und die Seite selbst läuft auf GitHub Pages. Keiner dieser Dienste wird hier bedient — sie werden einmalig im Browser eingerichtet: die öffentlichen Angaben in config.js, der Brevo-Schlüssel in der Datenbank, der Bucket im Cloudflare-Worker. Es gibt keinen eigenen Server und keine Kommandozeile. Die Schritte stehen in SETUP.md.
Mailversand prüfen
Zwei Wege, die getrennt geprüft werden müssen. Konto-Mails — Registrierung und Passwort — verschickt Supabase selbst; dafür muss im Supabase-Dashboard der SMTP-Zugang von Brevo eingetragen sein, sonst erscheint in Brevo kein einziger Eintrag. Fach-Mails — Bestandswarnung, Bestellliste, Einladung — verschickt die Datenbank über die Brevo-API. Die Testmail unten nimmt genau diesen zweiten Weg.
| Zeit | Betreff | Antwort von Brevo |
|---|---|---|
| {{ m.when }} |
{{ m.subject }}
{{ m.to }}
|
{{ m.statusLabel }}
{{ m.hint }}
|
Kostenbremse
{{ guardLabel }}{{ guardNote }}
Umschalten in config.js: FREE_TIER_GUARD auf false setzen hebt die Sperre auf, einzelne Grenzen stehen in FREE_TIER_LIMITS.
Firmen
| Firma | Abo | Personen | Artikel | Angelegt | Status | |
|---|---|---|---|---|---|---|
{{ c.name }} {{ c.admin }} |
{{ c.plan }} | {{ c.users }} | {{ c.items }} | {{ c.created }} | {{ c.statusLabel }} |