https://wiki.bergau.de/index.php?title=Spezial:Neue_Seiten&feed=atom&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter=OBS Wiki - Neue Seiten [de]2024-03-29T05:56:15ZAus OBS WikiMediaWiki 1.39.0-rc.1https://wiki.bergau.de/OBS/System/DatenbankdefinitionOBS/System/Datenbankdefinition2024-03-08T11:10:54Z<p>Nimz: /* Fehler in der Definition */</p>
<hr />
<div>Die Definition der Datenbankstruktur, das heißt die Tabellen und Felder von OBS, findet mit Dateien im sys-Verzeichnis von OBS statt. Neben der von OBS mit dem Update ausgelieferten obsdb.sys können zu Individualisierung, z. B. für Customize-Funktionalitäten, Standardtabellen erweitert oder auch neue Tabellen hinzugefügt werden. Im Nachfolgenden werden Aufbau und Definition einer solchen Datenbankdefinitionsdatei beschrieben.<br />
=Arten von Definitionsdateien=<br />
==OBS Standard==<br />
Die Datenbankdefinition wird beim OBS-Update mit ausgeliefert und befindet sich im OBS-Unterverzeichnis ''sys'' in der Datei ''obsdb.sys''. <br />
==individuelle Tabellen und Felder==<br />
Standardtabellen von OBS können sich erweitern lassen oder auch neue Tabellen definiert werden. Die Definition muss ebenfalls im ''sys''-Verzeichnis der OBS-Installation abgelegt werden. Der Dateiname muss mit ''User_'' beginnen, auf ''_obsdb.sys'' enden und dazwischen Ihre Kundennummer enthalten. Sollten Sie mit mehreren Installationen arbeiten wird zur Kundennummer möglicherweise noch eine Sub-Identifikation benötigt.<br /><br />
Beispiel Dateiname: User_101234_obsdb.sys.<br /><br />
Falls Sie sich nicht sicher sind, unter welcher Identifikation eine bestimmte Installation läuft, können Sie dies beim [[OBS/System/Ticket-System|OBS-Support erfragen]].<br />
<br />
=Aufbau einer Datenbankdefinitionsdatei=<br />
==Datenbank Flag==<br />
Flags sind besondere "Markierungen" für Felder, die an verschiedenen Stellen in OBS besondere Funktionalitäten erfüllen. Die Flags werden am Anfang einer Datei definiert, da diese zum Zeitpunkt der Verwendung in den Definition einer Tabelle oder eines Tabellenfelds bekannt sein müssen.<br />
===Liste Flags===<br />
{{Hinweis|Diese Auflistung kann unvollständig sein. Eine Definion und/oder Beschreibung finden Sie am Anfang der obsdb.sys. Suchen Sie nach #DBFLAG.}}<br />
{| class="wikitable"<br />
|-<br />
! Angabe!! Beschreibung<br />
|- valign="top"<br />
| PERSONENNR || Feld enthält eine OBS-Personennummer. Wird beim Ändern der Personennummer automatisch angepasst.<br />
|- valign="top"<br />
| PERSDELCHK || Verhindert das Löschen einer Person, wenn es einen Datensatz mit der entsprechenden Nummer in diesem Feld gibt<br />
|- valign="top"<br />
| PERSSETEMPTY || Löscht beim Löschen einer Person nicht den Datensatz sondern leert das Feld<br />
|- valign="top"<br />
| ARTIKELNR || Feld enthält eine OBS-Artikelnummer. Wird beim Ändern der Artikelnummer automatisch angepasst.<br />
|- valign="top"<br />
| ARTIKELDELCHK || Verhindert das Löschen eines Artikels, wenn es einen Datensatz mit der entsprechenden Nummer in diesem Feld gibt.<br />
|- valign="top"<br />
| ARTIKELSETEMPTY || Setzt das Feld leer, wenn der referenzierte Artikel gelöscht wird statt den Datensatz zu löschen.<br />
|- valign="top"<br />
| LEISTUNGNR || Feld enthält eine OBS-Leistungsnummer<br />
|- valign="top"<br />
| LEISTUNGDELCHK || Verhindert das Löschen einer Leistung, wenn es einen Datensatz mit der entsprechenden Nummer in diesem Feld gibt.<br />
|- valign="top"<br />
| AUTOINC || Das Zahlenfeld (Ganzzahl) wird mit einem automatischen Zähler versehen (z. B. MySQL: AUTO_INCREMENT). Das bedeutet, dass für neue Datensätze dieser Zähler sich automatisch um 1 erhöht.<br />
|- valign="top"<br />
| AUTODATE || Bei Änderung des Datensatzes wird das Feld automatisch auf den Zeitpunkt der Änderung aktualisiert.<br />
|- valign="top"<br />
| INSERTDATE || Erstellt ein Datumsfeld mit den Standardwert CURRENT_TIMESTAMP. Dies sorgt dafür, dass beim Einfügen eines Datensatzes der Zeitstempel des Anlagezeitpunkts in dieses Feld eingetragen wird.<br />
|- valign="top"<br />
| NOCREATE || Verhindert die Anlage eines Feldes. Dieses Flag ist nützlich, wenn Felder nicht mehr verwendet werden und somit nicht mehr angelegt werden sollen, aber z. B. für Konvertierungen möglicherweise noch bekannt sein müssen, wenn das Feld bereits engelegt ist.<br />
|- valign="top"<br />
| DEFAULT || Definition eines Standardwerts für die Datenbank. Wird ein neuer Datensatz in der Tabell hinzugefügt und für das Feld ist kein Wert angegeben, so fügt die Datenbank automatisch den in in Default angegebenen Wert ein. Syntax ist dabei DEFAULT in Großbuchstaben gefolgt von einem Dopelpunk und dem Wert in Anführungszeichen.<br />Beispiel: DEFAULT:"1".<br />
{{Hinweis|Ohne Angabe wird für Textfelder DEFAULT:"" und für Zahlen DEFAULT:"0" verwendet.}}<br />
|- valign="top"<br />
| SETEMPTYTODEFAULT || Im Zusammenspiel mit DEFAULT werden Felder deren Wert "Leer" entspricht auf den in DEFAULT definierten Wert gesetzt. Dies passiert einmal täglich im OBS-Dienst.<br />Textfelder gelten als leer, wenn kein Text enthalten ist und Zahlenfelder, wenn der Wert 0 ist.<br />
|}<br />
<br />
==Definition einer Tabelle==<br />
Eine Tabelle wird mit einem Namen, Feldern und Indizes definiert. Die Definition einer neuen Tabelle beginnt immer mit #DBNAME. Alle Felder und Indizes müssen zwischen dem #DBNAME der Tabelle zu der die Felder und Indizes gehören und der nächsten Tabellendefinition stehen.<br />
===Tabelle===<br />
Die Definition einer neuen Tabelle wird mit #DBNAME begonnen. Mit einem Leerzeichen Abstand tragen Sie dahinter den Namen der Tabelle ein. Der Name einer Tabelle beschränkt sich in den verwendbaren Zeichen auf A bis Z, 0 bis 9 und Unterstrichen.<br /><br />
OK: #DBNAME MEINE_LISTEN<br /><br />
Falsch: #DBNAME MEINE LISTEN<br />
<br />
===Feld===<br />
Felder werden mit #FELDNAME hinzugefügt. Dahinter werden dann mit Komma getrennt folgende weitere Angaben gemacht:<br />
{| class="wikitable"<br />
|-<br />
! Angabe!! Beschreibung<br />
|- valign="top"<br />
| Feldname || Name des Tabellenfeld bzw Tabellenspalte. Die Definition darf nur aus A bis Z, 0 bis 9 und Unterstrich bestehen. Umlaute sind nicht gültig.<br />FELD_STRASSE ist OK<br />FELD_STRAßE ist FALSCH<br />
|- valign="top"<br />
| Typ || Einzelner Buchstabe. Dieser definiert den Datentyp für die Speicherung. Aktuell Unterstützt werden in der Definition:<br />
*C : Text vom Typ Char<br />
*V : Text vom Typ Varchar<br />
*M : Langtext (mehr als 255 Zeichen)<br />
*I : Ganzzahl (Integer / Int)<br />
*N : Dezimalzahl (Decimal)<br />
*D : Datum/Uhrzeit (Datetime)<br />
*B : Blob-Daten<br />
|- valign="top"<br />
| Feldlänge || Gesamtlänge der Daten, die maximal in das Feld geschrieben werden können. Wenn Sie z. B. eine OBS-Artikelnummer in ein Feld schreiben möchten, muss das Feld mindestens eine Länge von 25 haben, das dies die maximale Länge einer OBS-Artikelnummer ist. Beachten Sie, dass bei Dezimalzahlen die Gesamtlänge den Vor- und Nachkommastellen entsprechen muss. Prozentzahlen von 0 bis 100 mit zwei Nachkommastellen benötigt also eine Länge von mindestens 5.<br />
|- valign="top"<br />
| Nachkommastellen || Nur gültig bei Dezimalzahlen. Darf nicht gleich oder Größer sein als die Gesamtlänge - 1, da immer mindestens eine Vorkommastelle vorhanden sein muss.<br />
|- valign="top"<br />
| Picture/Maske || Spannend, wenn Datenbankfelder in Eingabemaske geladen werden. Die Maske sollte daher zu Typ, Feldlänge und Nachkommastellen passen.<br /><br />
Folgende Angaben sind erlaubt:<br />
*C<br />
*#C wiederholt bis maximal der Feldlänge. Feldlänge 10 gibt also die Freiheit von "C" bis "CCCCCCCCCC"<br />
*#Maske mit Sternchen ("*") veranlasst OBS automatisch die maximale Feldlänge zu verwenden<br />
*#Zeiten im digitalen 24-Stunden Format können auch in Textfelder gespeichert werden. Als Vorgabe kann dazu mit zwei Varianten gearbeitet werden: "ZZ:ZZ" oder "ZZ:ZZ:ZZ". Je nachdem, ob auch Sekunden mit angegeben werden können.{{Hinweis|Die Feldlänge muss in diesem Fall entweder 5 für "ZZ:ZZ" oder 8 für "ZZ:ZZ:ZZ" sein. Sonst ist die Verwendung ungültig.}}<br />
*V : wie Char (C)<br />
*M : Maske ist immer "*"<br />
*I : N bis zur maximalen Feldlänge. Feldlänge 10 gibt also die Freiheit von "N" bis "NNNNNNNNNN"<br />
*N : Die Kommastelle ist mit einem Punkt anzugeben. Ansonsten gilt hier auch N bis zur maximalen Feldlänge. 10 , 3 ermöglicht als Maske von "N.N" bis "NNNNNNN.NNN"<br />
*D : Maske immer auf "TT.MM.JJ"<br />
*B : Maske ist immer "*"<br />
|- valign="top"<br />
| Flags|| Flags sind besondere Markierungen für Felder, welche zu besonderen Verhalten von OBS führen. Wenn mehrere Flags angegeben werden sollen, dann sind diese mit Komma zu trennen.<br />siehe [[#Liste_Flags|Liste Flags]]<br />
|}<br />
<br />
Beispiel für ein Feld mit eine OBS-Artikelnummer (Flag ARTIKELNR):<br />
#FELDNAME MEIN_FELD , C , 25 , 0 , "CCCCCCCCCCCCCCCCCCCCCCCCC" , ARTIKELNR , ARTIKELDELCHK<br />
===Index===<br />
Ein Index dient der Tabelle zur schnelleren Identifikation von Datensätzen. Felder, welche sich zur Identifikation eigenen, lassen sich hier angeben, damit später Suchen in der Tabelle anhand dieser Felder schneller zu einem Ergebnis führen. Dabei gibt es unterschiedliche Arten und entsprechend unterschiedlichen Identifikationsnamen. Die Struktur ist dabei Identifiaktionsname, Leerzeichen, Name des Index, Leerzeichen und die Tabellenfelderfelder mit Komma getrennt. Der Name des Index muss dabei den Namen der Tabelle enthalten und darf nicht mit einem anderen Index der Tabelle identisch sein. für den Definition nehmen wir daher in der Regel den Namen der Tabelle und einen Zähler (z. B. TABELLENNAME01).<br /><br />
Folgende Identifikationsnamen können für die Definition eines Index genutzt werden:<br />
{| class="wikitable"<br />
|-<br />
! Fehler!! Lösung<br />
|- valign="top"<br />
| #INDEX || Legt einen einfachen Index mit dem angegebenen Namen und den Feldern an.<br />
|- valign="top"<br />
| #XINDEX<br />oder<br />#UINDEX || Der Index wird als eindeutig Index angelegt. Eindeutig bedeutet, dass über sämtliche Datensätze der Tabelle die Kombination der Daten in den angegebenen Feldern nur einmal vorkommen darf. Wird versucht einen neuen Datensatz anzulegen oder einen vorhandenen zu ändern und die Daten wären identisch mit einem anderen Datensatz, bricht die Datenbank die Ausführung ab und speichert den Datensatz nicht, außer dieser Umstand wird im Datenbankbefehl entsprechend beachtet (z. B. in MySQL mit INSERT IGNORE oder REPLACE; siehe [https://dev.mysql.com/doc/refman/8.0/en/insert.html MySQL Insert]).<br />Der Unterschied zwischen XINDEX und UINDEX ist, dass UINDEX den Index als eindeutig anlegt oder gar nicht. XINDEX legt einen normalen Index an, sollten die Daten einer Tabelle die Anlage eines eindeutigen Index für die Felder nicht zulassen. Im Zweifel wird daher XINDEX empfohlen.<br />
|- valign="top"<br />
| #FINDEX || Erzeugt einen Volltext-Index, welcher für bestimmte Arten der Suche in Textfeldern optimiert ist (z. B. [https://dev.mysql.com/doc/refman/8.3/en/fulltext-search.html Funktionalität in MySQL]).<br />
|}<br />
Beispiel:<br /><br />
#XINDEX TABELLENNAME01 TB_NUMMER , TB_STATUS<br />
==Beispiel Definition einer Tabelle==<br />
#DBNAME MEINE_LISTEN<br /><br />
#FELDNAME NUMMER , C , 5 , 0 , "CCCCC"<br />
#FELDNAME NAME , C , 60 , 0 , "*"<br />
#FELDNAME BESCHREIBUNG , M , 2000 , 0 , "*"<br />
#FELDNAME EINTRAEGE , N , 10 , 0 , "NNNNNNNNNN"<br />
#FELDNAME SYS_UID , C , 10 , 0 , "CCCCCCCCCC"<br />
#FELDNAME SYS_DATE , D , 4 , 0 , "TT.MM.JJ", AUTODATE<br /><br />
#XINDEX MEINE_LISTEN01 SYS_UID<br />
#XINDEX MEINE_LISTEN02 NUMMER<br />
=Fehler in der Definition=<br />
Beim Starten von OBS erhalten Sie bei Fehlern in der Definition folgende Meldung (ID: Y006GZTPFV):<br /><br />
[[image:Db_struktur_fehlerhaft.png]]<br /><br />
<br /><br />
Sollte dies der Fall sein, prüfen Sie die adminerror.txt im OBS-Unterverzeichnis ..\data\debug\.<br />
{| class="wikitable"<br />
|-<br />
! Fehler!! Lösung<br />
|- valign="top"<br />
| Tabelle "Tabellenname" Feldname "Feld" Maske passt nicht zur Definition! || #Die Maske enthält unerlaubte Zeichen für den Typen oder ist zu lang. siehe dazu [[#Feld|Definition Feld]]<br />
#Es wurde das Komma zwischen der Maske und dem ersten Flag vergessen<br />
|- valign="top"<br />
| Tabelle "Tabellenname" Feldname "Feld" Feldlänge 0 nicht erlaubt! || In der Spalte für die Feldlänge steht eine 0. Tragen Sie hier die gewünschte Feldlänge ein.<br />
|- valign="top"<br />
| Tabelle "Tabellenname" Feldname "Feld" Typ "Typ" falsche Syntax! || Der Buchstabe passt zu keinem der für die Definition des Datentyps erlaubten Buchstaben. siehe dazu [[#Feld|Definition Typ]]<br />
|- valign="top"<br />
| Tabelle "Tabellenname" Feldname "Feld" Falsche Definition der Feldgröße für Typ "Typ". Nachkommastelle ist nicht 0. || Bis auf Dezimalzahlen (Typ N) sind alle anderen Typen mit 0 zu definieren. Passen Sie den Wert für die Nachkommastellen entsprechend an.<br />
|- valign="top"<br />
| Tabelle "Tabellenname" Feldname "Feld" Falsche Definition der Feldgröße für Typ "N". Nachkommastelle ist größer oder gleich der Feldlänge. || Die Nachkommastelle ist zu groß, als damit ein Feld definiert werden könnte. Passen Sie entweder die Feldlänge oder die Nachkommastellen an. Die Nachkommastellen dürfen nicht größer sein als die Gesamtlänge des Feldes subtrahiert um 1.<br />Beispiel:<br />
#FELDNAME FAKTOR , N , 4 , 6 , "NN.NNNNNN"<br />
Die Länge 4 ist kleiner als die 6 Nachkommastellen. Entweder muss die Definition der Nachkommastellen 3 reduziert werden oder die Länge mindestens 7 betragen. Die Maske würde in diesem Fall implizieren, dass 8 , 6 die korrekte Definition wäre.<br />
|- valign="top"<br />
| Tabelle "Tabellenname" Feldname "Feld" Flag "Flag" Flag nicht definiert! || Das Flag "Flag" ist nicht definiert. Fügen Sie die Definition mit #DBFLAG hinzu oder entfernen Sie das Flag aus der Tabellendefinition.<br />
|- valign="top"<br />
| Tabelle "Tabellenname" #Index "Index" Name nicht erlaubt! || Der Indexname beginnt nicht mit dem Tabellennamen. Passen Sie den Namen entsprechend an.<br />
|- valign="top"<br />
| Tabelle "Tabellenname" #Index "Index" schon vorhanden! || Der Name des Index ist mehrfach vergeben. Prüfen Sie die Index-Definitionen der Tabelle und ändern Sie die Indexnamen so ab, dass diese eindeutig sind.<br />
|- valign="top"<br />
| Feld "Feld" nicht in Tabellendefinition vorhanden! || In der Indexdefinition ist ein Feld aufgeführt, dass in der Tabellendefinition nicht vorhanden ist. Entfernen Sie das Feld aus der Indexdefinition oder definieren Sie das Feld in der Tabelle.<br />
|}</div>Nimzhttps://wiki.bergau.de/OBS/OBS-Kasse/GastroMWSTOBS/OBS-Kasse/GastroMWST2024-02-20T12:28:26Z<p>Thiel: /* Welche Sätze gelten für Getränke und Speisen? */</p>
<hr />
<div>== Gesetzliche Grundlagen ==<br />
Quelle: Stand 20.02.2024 https://www.payone.com/DE-de/ueber-uns/insights/mehrwertsteuer-gastronomie#mehrwertsteuer-getraenke<br />
<br />
=== Welche Sätze gelten für Getränke und Speisen? ===<br />
{{Vorlage:Kasse}}<br />
Im Grunde ist alles ganz einfach: Nach [https://www.gesetze-im-internet.de/ustg_1980/__12.html §12 Abs.1 des Umsatzsteuergesetzes (UStG)] beträgt der Regelsteuersatz 19 Prozent.<br />
<br />
§12 Abs.2 UStG und die sich auf [https://www.gesetze-im-internet.de/ustg_1980/anlage_2.html Absatz 2 beziehenden Anlage 2] regeln, wann 7% und wann 19% Mehrwertsteuer in der Gastronomie anzuwenden sind. Das klingt einfach verständlich, ist es aber leider nicht.<br />
<br />
{{Achtung|Stand 20.02.2024. Es ist wichtig zu beachten, dass steuerliche Bestimmungen Änderungen unterliegen können, und es ist ratsam, die aktuellen Gesetze und Regelungen zu überprüfen. <br />
Wir können keine rechtlich verbindliche Aussage zu diesem Thema treffen.}}<br />
<br />
=== Wie hoch ist die Mehrwertsteuer auf Speisen in der Gastronomie? ===<br />
Das Vor-Ort-Bereitstellen von Speisen gilt als Dienstleistung und nicht als Lieferung gemäß Anlage 2 zum §12 Abs. 2. Diese Dienstleistung rechtfertigt keine Mehrwertsteuersenkung und ist entsprechend mit 19% zu besteuern.<br />
{{Achtung|"Luxus-Nahrungsmittel" wie Kaviar, Hummer, Langusten, Austern und Schnecken sind unabhängig von Art des Verzehrs und der Dienstleistung immer mit 19% zu besteuern.}}<br />
<br />
==== Unterscheidet sich die Außerhaus-Mehrwertsteuer vom Vor-Ort-Mehrwertsteuersatz? ====<br />
Prinzipiell ja: Für den Außerhaus-Verzehr ist der ermäßigte Steuersatz von sieben Prozent anzuwenden. <br />
<br />
==== Imbiss, Foodtruck & Co. ====<br />
Hier ist der Aufbau Ihres Imbisses oder Food-Trucks ausschlaggebend. Abhängig davon gelten mal 7%, mal 19% Mehrwertsteuer. Relevant ist, ob Sie Ihren Kunden eine Verzehrmöglichkeit geben, "die mit dem Ort der Abgabe im räumlichen Zusammenhang steht".<br />
<br />
Ein Tresen an der Seite des Imbisses (nicht der Verkaufstresen) und von Ihnen bereitgestellte Stehtische oder Bierbänke gelten als solche "Verzehrmöglichkeit im räumlichen Zusammenhang". In diesen Fällen müssen Sie 19 Prozent USt. berechnen.<br />
<br />
Fehlt eine von Ihnen bereitgestellte Verzehrmöglichkeit, gilt für die Berechnung der Speisen der ermäßigte Steuersatz von 7%. <br />
<br />
==== Catering & Partyservice ====<br />
Die Lieferung von Lebensmitteln (zubereitet und/oder nicht zubereitet, ausgenommen Luxus-Nahrungsmittel) unterliegt dem ermäßigten Steuersatz von 7%.<br />
<br />
Doch ist Catering nicht immer nur auf die Lieferung beschränkt. Oft bietet ein Caterer zusätzlich zur Lieferung weitere Dienstleistungen an wie z. B. Geschirr-Bereitstellung, Zubereitung von Speisen am Veranstaltungsort oder die Bereitstellung von Servicepersonal. Und abhängig vom Anteil dieser Dienstleistung(en) ist dann doch der 19%-Mehrwertsteuersatz anzuwenden. Um diesen Anteil zu messen, wird der Umsatz zugrunde gelegt, nicht die dafür nötige Arbeitszeit. Überwiegt der mit dem Regelsteuersatz zu besteuernde Dienstleistungsanteil, sind insgesamt 19% USt.-Satz anzuwenden. Argument für die Besteuerung der Speisen mit 19% bei überwiegendem Dienstleistungsanteil ist, dass im Prinzip eine Restaurantdienstleistung erbracht wird.<br />
<br />
Welche Dienstleistungen für die Berechnung des Dienstleistungsanteil zu berücksichtigen sind, können Sie der folgenden Übersicht entnehmen:<br />
<br />
* '''Geschirrbereitstellung'''Weist eine Rechnung Mietgeschirr aus, gilt für diesen Dienstleistungsanteil der normale Steuersatz.<br />
* '''Servicepersonal am Veranstaltungsort'''<br />
* '''Bereitstellung von Tischen und/ oder Sitzgelegenheiten'''Auch hier sind 19% USt. anzuwenden.<br />
* '''Zubereitung von Speisen vor Ort:''' Damit entfällt der reine Liefercharakter, entsprechend gelten für die Speisen 19% Regelsteuersatz.<br />
<br />
* '''Beraten des Kunden vor Ort'''Berät der Caterer seinen Kunden vor Ort bspw. hinsichtlich Zusammenstellung und Menge vor Ort, ist dies für den Dienstleistungsanteil nicht zu berücksichtigen.<br />
<br />
=== Welcher Mehrwertsteuersatz gilt für Getränke? ===<br />
Grundsätzlich werden Getränke – unabhängig davon, ob sie vor Ort verzehrt oder zum Mitnehmen verkauft werden – mit dem regulären Mehrwertsteuersatz von 19% versteuert.<br />
<br />
Einige wenige Getränke werden als Grundnahrungsmittel angesehen. Für diese ist der ermäßigte Steuersatz anzuwenden:<br />
<br />
* '''Kaffee, Tee, Mate:'''Zu berücksichtigen ist hier, wie hoch der Milchanteil am fertigen Getränk ausfällt. Bspw. Eine Latte Macchiato enthält i.d.R. mehr als 75% Milchanteil und gilt nicht mehr als Kaffee sondern als Milchmischgetränk.<br />
<br />
* '''Milch und Milchmischgetränke:'''Der Gesetzgeber sieht nur Kuhmilch als Milch an.<br />
<br />
* '''Leitungswasser:'''Für Leitungswasser ist 7% anzuwenden, für jedes andere Wasser 19%.<br />
<br />
* '''Kakao:'''Wird ein Kakao aus Kakaopulver ohne Zuckerzusatz zubereitet, gilt die ermäßigte USt.<br />
== Wie funktioniert das ganze mit OBS-Kasse ==<br />
Generell entscheiden Sie bei der Anlage von Artikel welcher Regelsteuersatz an der Kasse gilt.<br />
<br />
Zusätzlich können Sie im Kassenparameter 105 eintragen, welcher geminderte Steuersatz für zum Beispiel außer Haus gelten soll. <br />
<br />
Wenn dieser Kassenparameter mit einem gültigen Steuersatz aus der Liste der [[OBS/Stammdaten/Weitere Stammdaten/Mehrwertsteuer erstellen/bearbeiten|Mehrwertsteuern]] gefüllt ist, erhalten Sie beim Bonabschluss die Möglichkeit über eine Checkbox (Im Standard "Außer Haus") die abweichenden Steuersätze für alle vorhanden Positionen zu übernehmen.<br />
<br />
=== Artikel ausnehmen ===<br />
Da es zum Beispiel für Getränke nötig ist, diese Artikel von der abweichenden Mehrwertsteuer auszunehmen, können Sie mit der [[OBS/Eigenschaften|Eigenschaft]] "9057 - kein abw. Steuersatz an Kasse (z.B.: außer Haus)" entsprechende Artikel kennzeichnen.<br />
<br />
=== Parken ===<br />
Wenn Sie bestimmte Parkbuttons eingerichtet haben (Außer Haus Tische für [[OBS/OBS-Kasse#Küchenausdrucke|Küchenausdrucke]]), bei denen Sie bereits wissen, das diese nur für Außer Haus Geschäfte genutzt werden, können Sie diese bei der Anlage bereits entsprechend kennzeichnen.<br />
<br />
Dann ist beim Abschluss des entsprechenden Bons eine Vorbelegung der "Außer Haus" Checkbox vorhanden.</div>Thielhttps://wiki.bergau.de/OBS/Adminhilfe/RegularExpressionsOBS/Adminhilfe/RegularExpressions2024-02-19T10:08:24Z<p>Nimz: /* Teil-String anhand eines bestimmten Schemas auslesen */</p>
<hr />
<div>{{ZugriffOBS}}<br />
[[Kategorie:Adminhilfe]]<br />
Kurze Erklärung zum Arbeiten mit Regulären Audrücken in Delphi und MySQL.<br />
=Arbeiten mit regulären Ausdrücken=<br />
Reguläre Ausdrücke sind ein Musterabgleich für Zeichenketten. Delphi und MySQL verfügen über eigene Funktionalitäten, um mit Regulären Ausdrücken zu arbeiten. Für die Erkennung muss ein entsprechendes Muster mitgegeben werden. Gute Beispiele finden sich in den [[#externe_Links|externen Links]] für MySQL und regexr (bessere visuelle Darstellung).<br />
{{Achtung|Beim Arbeiten mit MySQL ist eventuell auf case-sensitive zu achten. Der Standard scheint case-insensitive zu sein (Set [A-Z] verhält sich wie [a-zA-Z]), weshalb die Verwendung von z. B. REGEXP nicht zum gewünschten Ergebnis führen kann, sondern REGEXP_LIKE mit entsprechendem "match_type"-Parameter genutzt werden muss! Der Parameter ist optional.}}<br />
==externe Links==<br />
*[http://docwiki.embarcadero.com/RADStudio/Rio/de/Regul%C3%A4re_Ausdr%C3%BCcke Delphi Regul&auml;re Ausdr&uuml;cke]<br />
*[https://dev.mysql.com/doc/refman/8.0/en/regexp.html MySQL Regul&auml;re Ausdr&uuml;cke]<br />
*[https://regexr.com/ regexr.com]<br />
<br />
=Anwedungsbeispiele=<br />
==EClass: Finden eines bestimmten Schemas==<br />
EClass definiert Codes für die Zuordnung von Texten und Warengruppenbezeichnungen in verschiedenen Sprachen und ermöglicht so den Datenaustausch von Artikeldaten über verschiedene Sprachen mit nur einer Datei.<br /><br />
<br /><br />
'''Ident''' ist eine 6-stellige Zeichenkette mit drei Buchstaben gefolgt von drei Zahlen. Dies lässt sich mit entsprechenden Sets abbilden:<br />
[A-Z][A-Z][A-Z][0-9][0-9][0-9]<br />
Da dies aber recht lang werden kann, kann dies gekürzt werden. Dazu lässt sich die Wiederholung in geschweiften Klammern angeben. In diesem Fall ist es in beiden Fällen {3}.<br />
[A-Z]{3}[0-9]{3}<br />
Wenn wir jetzt noch Zeichenketten ignorieren möchten, die noch weitere Zeichen beinhalten (z. B. bei ABCD123456 würde BCD123 dem Muster entsprechen), geben wir jetzt noch an, dass diese sechs Zeichen auch die vollständige Zeichenkette mit Beginn (^) und Ende ($) ist.<br />
^[A-Z]{3}[0-9]{3}$<br />
<br /><br />
Ein anderer Fall wäre der '''Irdi'''-Wert. Dieser setzt sich aus anderen Angaben zusammen und sieht so aus: 123-4#56-ABC789#123. Neben Sets lasen sich feste Zeichen auch einfach als solche angeben. In diesem Fall Minus und Raute/Hashtag. Dies könnte dann wie folgt aussehen:<br />
^[0-9]{4}-[0-9]#[0-9]{2}-[A-Z]{3}[0-9]{3}#[0-9]{3}$<br />
<br /><br />
<br />
===Delphi===<br />
----<br />
<source lang="Delphi"><br />
lIsEClass := TRegex.IsMatch(cMerkmalWert, '^[A-Z]{3}[0-9]{3}$');<br />
</source><br />
Beispieldaten:<br />
cMerkmalWert = 'WDA057' -> lIsEClass = true;<br />
cMerkmalWert = 'BRUNNEN' -> lIsEClass = false;<br />
<br /><br />
siehe auch:<br />
*[http://docwiki.embarcadero.com/Libraries/Rio/de/System.RegularExpressions.TRegEx.IsMatch TRegEx.IsMatch]<br />
*[http://docwiki.embarcadero.com/Libraries/Rio/de/System.RegularExpressions.TRegExOptions TRegExOptions]<br />
<br /><br />
<br />
===MySQL===<br />
----<br />
In MySQL kann mit '''REGEXP''', '''REGEXP_LIKE''' oder '''RLIKE''' selektiert werden.<br />
<source lang="SQL"><br />
SELECT mm_classificationsystem, mm_classmerkmalwert<br />
FROM m_merkmale<br />
WHERE mm_classmerkmalwert REGEXP '^[A-Z]{3}[0-9]{3}$';<br />
<br />
SELECT mm_classificationsystem, mm_classmerkmalwert<br />
FROM m_merkmale<br />
WHERE mm_classmerkmalwert RLIKE '^[A-Z]{3}[0-9]{3}$';<br />
<br />
SELECT mm_classificationsystem, mm_classmerkmalwert<br />
FROM m_merkmale<br />
WHERE REGEXP_LIKE(mm_classmerkmalwert, '^[A-Z]{3}[0-9]{3}$');<br />
<br />
SELECT mm_classificationsystem, mm_classmerkmalwert<br />
FROM m_merkmale<br />
WHERE REGEXP_LIKE(mm_classmerkmalwert, '^[A-Z]{3}[0-9]{3}$', 'c'); #case-sensitive (siehe Hinweis unter Punkt 1)<br />
<br />
SELECT mm_classificationsystem, mm_classmerkmalwert<br />
FROM m_merkmale WHERE<br />
REGEXP_LIKE(mm_classmerkmalwert, '^[A-Z]{3}[0-9]{3}$', 'i'); #case-insensitive<br />
</source><br />
Beispieldaten:<br />
{| class="wikitable"<br />
|-<br />
! mm_classificationsystem!! mm_classmerkmalwert<br />
|-<br />
| ECLASS-6.2|| CAA133<br />
|-<br />
| ECLASS-6.2|| weiß<br />
|-<br />
| ECLASS-10.1|| BRUNNEN<br />
|-<br />
| ECLASS-6.2|| DAA349<br />
|-<br />
| ECLASS-7.1|| orange<br />
|}<br />
gefiltert mit regul&auml;ren Ausdr&uuml;cken:<br />
{| class="wikitable"<br />
|-<br />
! mm_classificationsystem!! mm_classmerkmalwert<br />
|-<br />
| ECLASS-6.2|| CAA133<br />
|-<br />
| ECLASS-6.2|| DAA349<br />
|}<br />
<br /><br />
siehe auch:<br />
*[https://dev.mysql.com/doc/refman/8.0/en/regexp.html#operator_regexp REGEXP]<br />
*[https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-like REGEXP_LIKE]<br />
<br />
==Teil-String anhand eines bestimmten Schemas auslesen==<br />
Nehmen wir an, wir haben eine Auflistung mit Vorgangsnummer für Aufträge und Reparaturaufträge und den Kundennamen als einzelne Zeichenkette und mögliche weitere Informatioen am Ende der Zeichenkette. Auch ist die Formatierung nicht durchgängig.<br />
Max Mustermann R13687<br />
Muster GmbH 238077 Herr Muster<br />
R90222 Boris Beispiel<br />
Moritz Musterknabe Auftrag 302248/storniert<br />
<br />
Um an die Vorgangsnummern zu kommen, lässt sich wieder mit regulären Ausdrücken arbeiten. Delphi und MySQL haben sogar beide die Möglichkeit entsprechende Zeichenketten anhand eines Musters zu extrahieren. Aber zunächst einmal wieder die Definition eines passenden Ausdrucks zur Erkennung der Vorgangsnummern. Reparaturaufträge bekommen als führendes Zeichen immer ein R. Werden Produktionsaufträge verwendet, sind auch P als mögliches Zeichen in der Auflistung zu finden. Mit Lageraufträgen kommt noch ein L hinzu. Entsprechend kann das Set für den führenden Buchstaben angegeben werden oder man sucht nach Vorgangstyp entsprechen einzeln.<br />
{{Hinweis|Die Anzahl an Zahlen sollte entsprechend der Vorgangslänge gesetzt werden (Base.Util VorgangLen())! Beispiele hier mit Default 6, bei führenden Buchstaben wie bei Repas also 5.}}<br />
<br /><br />
Nur Repas:<br />
R[0-9]{5}<br />
Nur Produktionsaufträge:<br />
P[0-9]{5}<br />
Nur Lageraufträge:<br />
L[0-9]{5}<br />
Wollten wir dies zusammenfassen in einem Set:<br />
[LPR][0-9]{5}<br />
Und was ist mit Aufträgen?<br />
[0-9]{6}<br />
Und wenn wir daraus eine Abfrage machen möchten? Hier lassen Reguläre ausdrücke auch variable Mengenangaben zu. Ein Bereich wäre z. B. {5,6} für 5 bis 6 vorkommen. So lässt sich auch die Suche über alle Auftragstypen kombinieren.<br />
[LPR]{0,1}[0-9]{5,6}<br />
Die Angabe {0,1} lässt sich ebenfalls noch kürzer darstellen mit einem Fragezeichen<br />
[LPR]?[0-9]{5,6}<br />
<br /><br />
===Delphi===<br />
----<br />
Mit der Matches-Methode von TRegEx, lässt sich eine Sammlung der Treffer auslesen. Die Sammlung ist ein Record mit Count und Item-Propery (siehe Links unter Codebeispiel).<br /><br />
Da dies im Beispiel wohl in einer Query oder Liste laufen wird das Beispiel entsprechen mit Schleife:<br />
<source lang="Delphi"><br />
while (not qQuery.Eof) do begin<br />
<br />
rMatches := TRegEx.Matches(qQuery.A2C('db_feld'), '[LPR]?[0-9]{5,6}');<br />
<br />
for var i := 0 to rMatches.Count-1 do begin<br />
<br />
cMatch := rMatches.Item[i].Value;<br />
//hier irgendetwas mit dem Wert in cMatch machen<br />
<br />
end;<br />
<br />
qQuery.Next;<br />
end;<br />
</source><br />
Entsprechend des Beispiels sollte dies dann im Ergebnis für jeden Datensatz genau ein Eintrag in rMatches enthalten sein. Der Wert ist dann entsprechend:<br />
R13687<br />
238077<br />
R90222<br />
302248<br />
<br />
siehe auch:<br />
*[http://docwiki.embarcadero.com/Libraries/Rio/de/System.RegularExpressions.TRegEx.Matches TRegEx.Matches]<br />
*[http://docwiki.embarcadero.com/Libraries/Rio/de/System.RegularExpressions.TRegEx.TMatchCollection TRegEx.TMatchCollection]<br />
*[http://docwiki.embarcadero.com/Libraries/Rio/de/System.RegularExpressions.TRegEx.TMatch TRegEx.TMatch]<br />
*[http://docwiki.embarcadero.com/Libraries/Rio/de/System.RegularExpressions.TRegExOptions TRegExOptions]<br />
<br /><br />
<br />
===MySQL===<br />
----<br />
Die MySQL-Funktion REGEXP_SUBSTR ermöglicht das Auslesen von Teilen des Wertes (Datenbankfeld?) im ersten Parameter. Die muss für ein Feld eventuell mehrmals ausgeführt werden, je nachdem, wie die Daten aussehen. Spannend ist dazu dann Parameter 4 "occurence". Hier die Optionalen Parameter ausgelistet:<br />
*Parameter 3: pos -> Position, an der begonnen werden soll<br />
*Parameter 4: occurence -> der x-te werte, der genommen werden soll<br />
*Parameter 5 match_type -> Vorgabe wie der Abgleich stattfinden soll<br />
<source lang="SQL"><br />
SELECT REGEXP_SUBSTR(db_feld, '[LPR]?[0-9]{5,6}') FROM db_table;<br />
SELECT REGEXP_SUBSTR(db_feld, '[LPR]?[0-9]{5,6}', 1, 1, 'c') FROM db_table; #case-sensitive (siehe Hinweis unter Punkt 1)<br />
</source><br />
Entsprechend des Beispiels sollte dies dann im Ergebnis für die Spalte sie folgt aussehen:<br />
R13687<br />
238077<br />
R90222<br />
302248<br />
siehe auch:<br />
*[https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-substr REGEXP_SUBSTR]<br />
*[https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-like REGEXP_LIKE] (Werte für Parameter match_type)</div>Nimzhttps://wiki.bergau.de/Kostenpflichtige_Module/Internet-Shop/brShop24/PDF-Druck_ArtikellinkKostenpflichtige Module/Internet-Shop/brShop24/PDF-Druck Artikellink2024-02-08T11:48:36Z<p>Nimz: /* Kurzlink zu einem Artikel */</p>
<hr />
<div>{{Vorlage:Kostenpflichtige Module}}<br />
Diese Seite beschreibt die Einrichtung von Hyperlinks zu Artikeln im eigenen brShop24 für Angebote "gedruckt" als E-Mail (PDF-Anhang) oder PDF-Export (Druckauswahl "Export").<br /><br />
[[image:Br24_kurzlink_auswahl.png]]<br />
{{Hinweis|OBS verwendet den '''Kurzlink'''. Da Kurzlinks nur eine Artikelnummer als Referenz zum Artikel haben, beachten Sie bitte, dass eine Verlinkung zum falschen Artikel erfolgen kann, wenn die gleiche Artikelnummer in mehreren Artikeln verwendet werden. Eine Artikelnummer ist nur pro Lager eindeutig. Sollten Sie also eigene Artikel nutzen und diese Funktionalität für Ihre Angebote in Erwägung ziehen, sollten Sie darauf achten, dass die Artikelnummern über den kompletten Artikelstamm des Shops eindeutig sind.}}<br />
=Kurzlink zu einem Artikel=<br />
Die URL ist '''Ihre Shop-URL''' mit dem Pfad "artnr" und der Artikelnummer.<br /><br />
Beispiel: https://obs.brshop24.de/artnr/BROTN2320<br /><br />
<br /><br />
Damit OBS einen solchen Kurzlink erstellen kann, muss die URL mit einem Platzhalter für die Artikelnummer im OBS hinterlegt werden. Als Platzhalter verwenden Sie dabei "$REFERENZ".<br /><br />
Beispiel: <nowiki>https://obs.brshop24.de/artnr/$REFERENZ</nowiki><br />
<br />
=Einrichtung Schnittstelle=<br />
In Angebotsdrucken kann in PDF-Exporten und E-Mails zu jedem aufgeführten Artikel ein Link zum brShop24 gesetzt werden. Vorraussetzung ist dafür, dass der Artikel im Shop vorkommt und vom OBS als solcher erkannt wurde. Damit ein Link im Druck eingefügt wird, muss in der Konfiguration (Menü: Stammdaten &rarr; I Schnittstellen &rarr; I Internet-Shop &rarr; F10 Menü &rarr; X Konfiguration) der Schnittstelle die Einstellung '''Allgemein.Kurzlink.Artikel''' entsprechend der gewünschten Funktionalität eingestellt werden. Ihnen stehen dabei zwei Varianten zur Verfügung:<br />
#URL wird gedruckt<br />Sie Tragen in die Einstellung die URL mit dem Platzhalter ein (siehe [[#Kurzlink_zu_einem_Artikel|Kurzlink zu einem Artikel]]). Die URL wird so wie sie ist im Druck eingefügt. Der PDF-Export erstellt daraus automatisch den klickbaren Hyperlink.<br />[[image:Br24_kurzlink_config_url.png]]<br /><br />
#Textbaustein mit Hyperlink<br />Sie erstellen einen Textbaustein mit einem gewünschten Text, der im Ausdruck angezeigt werden soll. Fügen Sie im Textbaustein die URL als Hyperlink ein. Diese Variante unterstützt auch die Verwendung von Grafiken als Hyperlink.<br />[[image:Br24_kurzlink_config.png]]<br /><br />
==Variante 1: URL gleich sichtbarer Text==<br />
Tragen Sie die URL direkt in die Einstellung '''Allgemein.Kurzlink.Artikel''' ein.<br /><br />
[[image:Br24_kurzlink_config_url.png]]<br /><br />
<br /><br />
Beispiel PDF:<br /><br />
[[File:Br24_kurzlink_pdf_url.png|thumb|none|500px|PDF mit URL zum Artikel]]<br />
<br />
==Variante 2: Textbaustein mit Hyperlink==<br />
Erstellen Sie hierfür als Erstes den Textbaustein. Sie können im Textbaustein den Hyperlink entweder mit Text oder einer Grafik erstellen.<br />
<div><ul> <br />
<li style="display: inline-block;"> [[File:Br24_kurzlink_tb_text_v2.png|thumb|none|500px|Textbaustein mit Text als Hyperlink]] </li><br />
<li style="display: inline-block;"> [[File:Br24_kurzlink_tb_bild.png|thumb|none|500px|Textbaustein mit Bild als Hyperlink]] </li><br />
</ul></div><br />
Hyperlinks fügen Sie über das kleine kugelförmige Symbol mit einer Kette ein. Sie können zuvor einen Teil des Inhalts des Textes markieren und danach die Schaltfläche für Hyperlinks klicken. So machen Sie den markierten Abschnitt zum Hyperlink. Tragen Sie im Feld ''Ziel'' den Kurzlink mit Platzhalter ein.<br /><br />
[[image:Br24_kurzlink_tb_hyperlink.png]]<br /><br />
<br /><br />
Wenn Sie eine Grafik verwenden möchten, so fügen Sie die Grafik zunächst im Textbaustein ein und markieren Sie danach die Grafik. Jetzt können Sie mit einem Klick auf die Hyperlink-Schaltfläche aus der Grafik einen Hyperlink machen. Eine Grafik fügen Sie über die ''RTF Texteigenschaften'' mit dem Bild-Sysmbol unter dem Hyperlink ein. Alternativ können Sie mit Kopieren ({{Key|Strg}}+{{Key|C}}) und Einfügen ({{Key|Strg}}+{{Key|V}}) ein Bild auch in den Text kopieren.<br />
{{Achtung|Wenn Sie eine Grafik als Hyperlink verwenden möchten, muss der Textbaustein neben der Grafik noch ein weitere Zeichen enthalten, da der Text sonst nicht gespeichert wird. Wir empfehlen ein Leerzeichen hinter die Grafik einzufügen.<br /><br />
[[image:Br24_kurzlink_tb_hyperlink_img.png]]}}<br />
<br /><br />
Tragen Sie zum Schluss die Nummer des Textbausteins in die Einstellung '''Allgemein.Kurzlink.Artikel''' ein.<br /><br />
[[image:Br24_kurzlink_config.png]]<br /><br />
<br /><br />
Beispiele PDF:<br />
<div><ul> <br />
<li style="display: inline-block;"> [[File:Br24_kurzlink_pdf_text.png|thumb|none|500px|PDF mit Text als Hyperlink]] </li><br />
<li style="display: inline-block;"> [[File:Br24_kurzlink_pdf_bild.png|thumb|none|500px|PDF mit Bild als Hyperlink]] </li><br />
</ul></div><br />
<br />
=Priorisierung Lager=<br />
Wird ein Artikel in mehreren Lagern geführt, so kann mit der Priorisierung ein bestimmtes Lager bevozugt verlinkt werden. Dazu tragen Sie im jeweiligen Lager eine Priorität ([[Kostenpflichtige_Module/Internet-Shop/Konfiguration/Zuordnungen/DepotPartner#Maske|Feld ''Priorisierung Link'']]) ein. Der Standardwert ist 0. Das Lager mit der höchsten Priorität wird bevorzugt. OBS verwendet für den Link antsprechend die Artikelnummer aus dem Lager, dass von allen Lägern, in denen der Artikel vorkommt, die höchste Priorität hat.<br />
{{Achtung|OBS verwendet den '''Kurzlink'''. Da Kurzlinks nur eine Artikelnummer als Referenz zum Artikel haben, beachten Sie bitte, dass eine Verlinkung zum falschen Artikel erfolgen kann, wenn die gleiche Artikelnummer in mehreren Artikeln verwendet werden. Die Artikelnummern ist nur pro Lager eindeutig!}}<br />
=Artikel ausnehmen=<br />
Artikel können für die Erstellung eines Links mit einer Eigenschaft ausgenommen werden. Hinterlegen Sie beim Artikel die Eigenschaft 9207 ''SHOP Keinen Link setzen'', wenn in der PDF für einen Artikel kein Link mit ausgegeben werden soll.<br /><br />
[[Datei:Artikeleigenschaften.png|links|mini|Eigenschaft]]</div>Praktihttps://wiki.bergau.de/OBS-DemoOBS-Demo2024-02-06T13:37:47Z<p>Schinke: </p>
<hr />
<div>=OBS-Demo=<br />
Sie können eine Demo-Version von OBS direkt in Ihrem Browser starten. <br />
Aktuell stehen 3 verschiedene Demos zur Verfügung: <br />
<br />
*OBS-PBS<br />
*OBS-Handwerk <br />
*OBS-Kasse<br />
<br />
<br />
[[Datei:OBS Web-Demo.png|rahmenlos|444x444px]]{{Hinweis|Sie können in der Demo beliebig testen, die Daten werden täglich neu erzeugt. Geben Sie aus datenschutzrechtlichen Gründen bitte keine persönlichen Daten in der Demo ein. }}<br />
<br />
==Demo starten==<br />
<br />
Sie können sich mit folgenden Zugangsdaten in der der Demo anmelden: <br />
{| class="wikitable"<br />
|+ Zugangsdaten der Demo<br />
|-<br />
! Parameter !! Beschreibung<br />
|-<br />
| Benutzer || demo<br />
|-<br />
| Passwort || demo<br />
|}<br />
<br />
Wenn Sie auf folgenden Link zur Demo klicken können Sie zwischen einer PBS, Handwerk oder Kassen-Demo auswählen. <br />
<br />
[http://obsdemo.bergau.de:6580/ OBS Demo im Browser öffnen]</div>Schinkehttps://wiki.bergau.de/OBS/Adminhilfe/TankkartenOBS/Adminhilfe/Tankkarten2024-02-01T11:31:24Z<p>Nimz: </p>
<hr />
<div>{{ZugriffOBS}}<br />
Benötigt:<br />
*Software zum Auslesen der ID <br />
*Lesegerät anschließen (eventuell Treiber installieren)<br />aktuelles Lesegerät [http://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/ ACR122U]<br />
*Neue NFC/RFID-Karte<br />
<br /><br />
<br /><br />
Beispiel ID lesen mit NFC21 Reader (https://tools.nfc21.de/readerWin/)<br />
#Anwendung NFC21 Reader starten<br />
#Einstellung aktivieren "UID auslesen und in aktives Fenster eingeben" (verhält sich dann wie EAN-Lesegerät und schreibt die ID in das aktive Fenster/Feld)<br />
#Überwachnung aktivieren<br />
#In SteVe anmelden (Daten siehe Technik Passwort Verwaltung)<br />
#Data Management -> OCPP Tags -> Add New<br />
#Fokus auf "ID Tag" setzen und Karte auf das Lesegerät legen<br />
#(optional) "Expiry Date/Time" mit Ablaufdatum setzen<br />
#Mit Button {{Key|&nbsp;&nbsp;Add&nbsp;&nbsp;}} speichern<br />
#Data Management -> Users -> Add New<br />
#In "First Name" das Kennzeichen des Autos eintragen<br />
#OCPP ID Tag den zuvor angelegten Tag eintragen<br />
#Mit Button {{Key|&nbsp;&nbsp;Add&nbsp;&nbsp;}} speichern<br />
#OBS-Benutzer mit Adminrechten muss die Daten noch in die RFID Karten eintragen<br />Name = Kennzeichen<br />Ident = OCPP ID Tag / Karten-ID<br />OCPP UserPK = SteVe User ID<br />
<br /><br />
<br /><br />
Siehe auch:<br />
[[OBS/Adminhilfe/SteVe/Einrichtung|Einrichtung SteVe]]</div>Nimzhttps://wiki.bergau.de/OBS/OBSRemoteOBS/OBSRemote2024-02-01T10:11:34Z<p>Schinke: /* OBS Remote */</p>
<hr />
<div>{{Vorlage:OBSRemote}}<br />
=OBS Remote=<br />
OBS Remoteist ein Modul, mit dem OBS von mobilen Geräten (Smartphones, Tablets, etc) ausgeführt werden kann. Das ermöglicht den Betrieb von OBS auf verschiedenen Betriebsystemen. (MacOS/Linux/Windows/Android)<br />
<br />
Auch gemischte Systeme können nun eingesetzt werden. (Windows/MacOS/Pad's) Der volle Funktionsumfang von OBS steht ihnen damit zu Verfügung. Es muss immer eine Verbindung vom Endgerät zum OBS-Server vorhanden sein. Befindet sich das Gerät nicht im lokalen Netzwerk kann eine Verbindung per VPN (z.B. über Open VPN) hergestellt werden. <br />
<br />
Sinnvoll ist der Einsatz nun auch bei Technikern die im Außendienst mit Notebook's oder Pad's ausgerüstet sind. Hier kann durch Einschränkung (Rechtevergabe) der Funktionsumfang für die notwendigen Aufgaben eingestellt werden<br />
<br />
Sinvoll ist auch der Einsatz als Pad-OBS Kasse. Gehen sie zusammen mit dem Kunden durch die Regale. Drucken sie auf den Bondrucker. TSE über Serverbetrieb. Hierfür ist ein EAN Scanner für das Pad erforderlich.<br />
<br />
== Preise ==<br />
Jede Verwendung von OBS-Remote wird als zusätzlicher Arbeitsplatz in den OBS Servicevertrag aufgenommen.<br />
<br />
Bitte kontaktieren Sie uns bei Rückfragen.</div>Schinkehttps://wiki.bergau.de/OBS/OBSRemote/KonfigurationOBS/OBSRemote/Konfiguration2024-02-01T10:11:31Z<p>Schinke: </p>
<hr />
<div>{{Vorlage:OBSRemote}}<br />
<br />
=OBS Remote Konfiguration=<br />
<br />
==VPN==<br />
===OpenVPN Verbindung auf Mobilgerät importieren===<br />
<br />
<br />
Zunächst muss die OpenVPN App für das jeweilige Gerät heruntergeladen werden. <br />
<br />
[https://play.google.com/store/apps/details?id=net.openvpn.openvpn OpenVPN im Google Play Store]<br />
<br />
[https://apps.apple.com/us/app/openvpn-connect-openvpn-app/id590379981 OpenVPN im iOS Store]<br />
<br />
Beim ersten Start ist die App noch Leer. Über einen Druck auf das orangene Plus Zeichen kann ein neues Profil hinzugefügt werden: <br />
<br />
[[Datei:OBSRemote OVPN Profiles.jpg|rahmenlos]]<br />
<br />
<br />
Über '''Upload File''' → '''Browse''' können OpenVPN Konfigurationsdateien ausgewählt und importiert werden.<br />
<br />
[[Datei:OBSRemote OVPN Import.jpg|rahmenlos]]<br />
<br />
<br />
Es ist wichtig alle zusammenhängenden Dateien auszuwählen, die zur Configurationsdateien gehören. <br />
<br />
[[Datei:OBSRemote OVPN ImportConnectsion.jpg|rahmenlos|542x542px]]<br />
<br />
<br />
[[Datei:OBSRemote OVPN Import2.jpg|rahmenlos]]<br />
<br />
<br />
Anschließend erscheint Verbindung der '''Profiles''' Liste. Über das Stift-Symbol kann die Verbindung konfiguriert und der Benutzername und Kennwort hinterlegt werden. <br />
<br />
[[Datei:OBSRemote OVPN ProfilesEmpty.jpg|rahmenlos]] [[Datei:OBSRemote OVPN Configuration.jpg|rahmenlos]]<br />
<br />
<br />
Mit einem Druck auf den Schiebe-Schalter kann die Verbindung aufgebaut werden. <br />
<br />
[[Datei:OBSRemote Connected.jpg|rahmenlos]]<br />
<br />
==RDP==<br />
===Remoteverbindung (RDP) auf Mobilgeräten einrichten===<br />
Wenn eine Verbindung ins Netzwerk besteht (lokal oder per VPN) kann eine Verbindung zum OBS-Server hergestellt werden. <br />
<br />
Hier muss die Remote Desktop App für das entsprechende Gerät heruntergeladen werden: <br />
<br />
[https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx Remote Desktop App im Google Play Store]<br />
<br />
[https://apps.apple.com/de/app/microsoft-remotedesktop/id714464092 Remote Desktop App im iOS Store]<br />
<br />
<br />
Beim ersten Start der App ist die Liste noch leer.<br />
<br />
[[Datei:OBSRemote RDP FirstStart.jpg|rahmenlos]]<br />
<br />
<br />
Über das orangene Plus Symbol oben rechts kann eine neue Verbindung hinzugefügt werden. Es muss dann '''PC hinzufügen''' ausgewählt werden. Falls Geräte im Netzwerk gefunden werden muss danach noch ein mal '''Manuell hinzufügen''' ausgewählt werden. <br />
<br />
In diesem Fenster muss der '''Name''' oder die '''IP''' des '''Terminalservers''' eingetragen unter dem Punkt '''PC-Name''' werden. <br />
<br />
[[Datei:OBSRemote RDP NewPC.jpg|rahmenlos]]<br />
<br />
<br />
Unter dem Punkt '''Benutzerkonto''' können über '''Benutzerkonto hinzufügen''' die Zugangsdaten für den Terminalserver hinterlegt werden, damit diese nicht jedes Mal eingegeben werden müssen. <br />
<br />
[[Datei:OBSRemote RDP User.jpg|rahmenlos]]<br />
<br />
<br />
Ganz unten in dieser Einstellung kann unter '''Bildschirm → Bildschirmauflösung anpassen''' eingestellt werden, dass die Auflösung der Terminalsitzung für das Gerät skaliert werden soll. (Bei Tablets sollte diese aktiviert werden).<br />
<br />
[[Datei:OBSRemote RDP Resolution.jpg|rahmenlos]]<br />
<br />
<br />
Nachdem alles konfiguriert ist, kann in der Liste die Verbindung ausgewählt und somit gestartet werden. <br />
<br />
[[Datei:OBSRemote RDP ConnectionList.jpg|rahmenlos]]<br />
<br />
Beispiel einer Verbindung ohne Auflösungskalierung auf einem Andoird Smartphone:<br />
<br />
[[Datei:OBSRemote RDP OBS.jpg|rahmenlos|791x791px]]</div>Schinkehttps://wiki.bergau.de/OBS/Remote/FAQOBS/Remote/FAQ2024-02-01T10:04:48Z<p>Schinke: </p>
<hr />
<div>{{Vorlage:OBSRemote}}<br />
=Häufig gestellte Fragen (FAQ)=<br />
==Wie verwende ich OBS im Touch Modus?==<br />
In der Remotedesktop Client App kann während einer Verbindung am oberen Bildschirmrand der Modus zwischen Touch- und Maussteuerung umgetellt werden. <br />
Bei der Maussteuerung wird ein digitaler Mauszeiger bewegt während bei der Touch-Steuerung direkt auf den Bildschirm gedrückt werden kann. <br />
<br />
===Wie kann bei der Touch-Steuerung in OBS-Listen gescrollt werden?===<br />
Wenn die Touch-Steuerung gewählt ist, kann in OBS-Liste gescrollt werden, indem man zwei mal schnell nach oben oder unten wischt. Alternativ kann mit zwei Fingern gewischt werden.<br />
<br />
==Kann ich die Auflösung anpassen?==<br />
In der Remotedesktop-Client App kann in den Einstellungen der Verbindung unter '''Bildschirm → Bildschirmauflösung anpassen''' die Auflösung bzw. eine Skalierung konfiguriert werden. Für Tablets empfehlen wir die Einstellung '''Dieses Gerät abgleichen'''.</div>Schinkehttps://wiki.bergau.de/OBS/Adminhilfe/BergauZeiterfassungTermineOBS/Adminhilfe/BergauZeiterfassungTermine2023-12-21T10:56:01Z<p>Schinke: /* Termine in OBS */</p>
<hr />
<div>{{ZugriffOBS}}<br />
=Termine in OBS=<br />
Folgende Richtlinien gelten für die Terminerfassung der Firma Bergau: <br />
<br />
Unter [System → K Benutzerpflege → F10 → [[OBS/System/Benutzer#E_-_Zeiten|E - Zeiten]]] können die Stunden ausgewertet werden.<br />
<br />
==Erfassung==<br />
Wenn man nicht da ist und nicht arbeitet sollte OBS ausgeschaltet werden. (Während der Mittagspause bleibt OBS jedoch eingeschaltet.)<br />
Bei Terminen wie ''Privat'' und ''Überstunden'' ist das Häkchen ''Von der Zeiterfassung abziehen'' schon vorbelegt, damit diese Zeit nicht hinzugerechnet wird. <br />
Wenn man arbeitet, dass OBS während der Zeit aber nicht eingeschaltet ist (z.B. Vor-Ort-Termin) muss im Termin das ''Zeiterfassung''-Häkchen aktiviert werden.</div>Schinke