# Einleitung

TIME+PLUS ermöglicht es Ihre Prozesse zu optimieren. Von der Zeiterfassung, über Zeitbuchung in einem eigenen Ticketsystem, bis hin zu der Erstellung von Zeitnachweisen für Ihre Rechnung hilft ihnen TIME+PLUS eine Lösung zu finden.


# Screenshots

#### Konfigurierbare Feiertage

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FFMV9XINc4WCX84PNRhuO%2Fimage.png?alt=media\&token=685796c0-c557-4aeb-bebd-40e0ad6f80a0)

#### Konfigurierbare Sollarbeitszeit pro MA

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FuERQ1AvstCCcRNnDNPH7%2Fimage.png?alt=media\&token=3a4e118e-80ee-493e-b170-d26cf9502487)

#### Definition des Urlaubsanspruch

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FKMZc4hO5IBObtNIKi8EH%2Fimage.png?alt=media\&token=dc365ebd-276e-4142-9587-2de0c7bc88a5)

#### Darstellung der Zeiterfassung in cobra

#### ![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2F6eguQaqXsXBwZFSmuBIt%2Fimage.png?alt=media\&token=b07be920-6488-4a38-a0b8-61b01ab35df0)

#### ![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FSjHa5JK8oNkulnS6Qjat%2Fimage.png?alt=media\&token=2cdd9de7-8e7e-426c-b638-bc65e4c67af2)

#### ![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FWlaWtb7slvP5mumlgcqf%2Fimage.png?alt=media\&token=cda2358b-2567-4766-a5bc-9c93efbcce7b)

#### ![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2Fu31dYJnD2G0jTLExHlGC%2Fimage.png?alt=media\&token=1eabf3d1-4c94-4641-bb9d-a7e1869eddf0)

#### ![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2F70KI325cQ1Uh1xEd5pqP%2Fimage.png?alt=media\&token=12764ef2-941c-406d-82fa-0b611f731bb9)

#### Darstellung des Tickets in cobra

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FEfmZoaSxCc2MNQK0ZZga%2FTicket%C3%BCbersicht.png?alt=media\&token=5f7bfafd-f087-43d8-9bd1-b61d09fb3c62)

#### Dauerhafte Anzeige des TimeTrackers am Bildschirmrand

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FCWUZFqD214R8pY8nEMdO%2FTimeTracker%20AppBar.png?alt=media\&token=6cb1f727-7391-4b94-aadf-7db348e1f464)

#### Bearbeitung von Zeitbuchung und Ticket im TimeTracker

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FmbldtNbL4dpCSOkDYa1a%2FBuchungseditor%20TimeTracker.png?alt=media\&token=6bdeccb9-0755-4e28-b116-258c3446c02f)

#### Tagesübersicht im TimeTracker

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2Fd5jxNedB5ujyIqtYKPjF%2Fimage.png?alt=media\&token=62c52963-19a9-4d5b-ad34-89522d36e12d)


# Zusammenhänge

## Vereinfachte Darstellung

<figure><img src="https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FbaNByLSoQyJbu8v8dAf0%2FVereinfachte_Darstellung_TIME%2BPLUS.png?alt=media&amp;token=4c175e75-a822-4ede-8e3a-5581074753d6" alt=""><figcaption></figcaption></figure>

## Komplexe Darstellung

<figure><img src="https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FXqLdNXuHnV29eM9vaqsu%2FER-Modell%20TimePlus.png?alt=media&amp;token=70de1e4e-5ee8-4d52-a822-1defc12c31aa" alt=""><figcaption></figcaption></figure>

Dieses Diagramm zeigt die Zusammenhänge innerhalb des Systems TIME+PLUS.


# Allgemein

TIME+PLUS besteht aus mehreren Komponenten:

1. **TimeTracker**\
   Der TimeTracker vereint die Zeiterfassung der Mitarbeiter mit der Zeitbuchung auf Tickets. Mit ihm können auch Tickets bearbeitet werden. Zudem gibt es die mitarbeiterbezogenen Wochen- und Tagesübersichten und die ticketbezogenen Aufwandsübersicht. Diese helfen den Überblick über Ticketstatus und durchgeführter Arbeit zu bewahren. Im TimeTracker können auch Angebote zu einem Ticket erstellt werden, welche direkt als E-Mail an den Kunden gesendet werden.
2. **Ticket-Webseite**\
   Für die Kunden gibt es eine Webseite, auf der die Tickets eingesehen werden können. Mit der entsprechenden Freigabe können Kunden Tickets auch erstellen, bearbeiten und kommentieren.
3. **cobra-Addin**\
   Das cobra-Addin dient der Verwaltung zur Übersicht und Abrechnung der Tickets.
4. **diverse Tasks**\
   Diese sind für automatische Vorgänge nötig.


# TimeTracker

Der TimeTracker dient der Zeiterfassung und Zeitbuchung.

## Zeiterfassung

### Perfekter Arbeitsablauf

Der Timetracker startet auf dem Primärgerät automatisch. Der Tatsache, dass auch das Hoch- und Runterfahren Arbeitszeit ist, wird Rechnung getragen, indem der Timetracker immer zu Gunsten des Mitarbeiters auf die nächste Viertelstunde rundet.

Während der gesamten Arbeitszeit läuft die Zeiterfassung nebenher und beansprucht Platz am Bildschirmrand des Hauptbildschirms. Über ihn kann Zeit auf Tickets gebucht werden.

Pausen werden entsprechend durch Pause/Start verarbeitet, entsprechen allerdings mindestens dem gesetzlichen Minimum (6h → 30m, 9h → 45m).

Am Ende der Arbeitszeit klickt man auf "Beenden mit Speichern und Berechnen":![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2Fu7Hg9Xi4G0fcv1E9dMeZ%2FScreenshot%202022-08-26%20155322.png?alt=media\&token=601eb745-7b8b-4fe1-8faa-130b86e9eb5d)

In Cobra wird nun automatisch die Zeiterfassung des Tages geöffnet.

Hier lässt sich bei Bedarf die Arbeitszeit (Beginn, Ende und Pause) anpassen.

### Beenden durch Herunterfahren

Wird der TimeTracker nicht manuell beendet, so beendet er die laufende automatische Zeiterfassung beim Abmelden, Neustarten, oder Herunterfahren. Solch ein Beenden gleicht der Option "Beenden mit Speichern". Beim Sperren des Bildschirms wird sie *NICHT* beendet.

### Verschiedene Beenden-Optionen

#### Beenden mit Verwerfen

Die automatische Zeiterfassung wird wieder aus der Datenbank gelöscht. Getätigte Buchungen bleiben bestehen.

#### Beenden mit Speichern

Die aktuelle automatische Zeiterfassung wird beendet.

#### Beenden mit Speichern und Berechnen

Die aktuelle automatische Zeiterfassung wird beendet. Der Zeiterfassung-Eintrag des Tages wird mit der berechneten Arbeitszeit überschrieben. Der berechnete Eintrag wird automatisch geöffnet.

#### Nächtlicher Task

Wird der TimeTracker unerwartet beendet, so wird die automatische Zeiterfassung erst von einem nächtlichen Task beendet. Der Nutzer erhält eine E-Mail mit der Anregung die Korrektheit der Daten zu überprüfen.

### Berechnung der Arbeitszeit

Die Arbeitszeit kann manuell, über [#beenden-mit-speichern-und-berechnen](#beenden-mit-speichern-und-berechnen "mention"), oder über den nächtlichen Task erfolgen. Sobald ein Wert berechnet wurde überschreibt der Task den Datensatz nicht mehr. Änderungen an den automatischen Zeiterfassungen bewirken somit keine automatischen Änderungen des amtlichen Datensatzes mehr.

### Berechnung Pausen-/Arbeitszeit <a href="#timetracker-zeiterfassungcobra-berechnungpausen-arbeitszeit" id="timetracker-zeiterfassungcobra-berechnungpausen-arbeitszeit"></a>

**Legende**: "()"=Arbeitszeiten;  "\[]"=Pausenzeiten;  "{}"=Gesamtzeit&#x20;

Durchgehendes Beispiel mit Arbeitszeiten: *>(8:49-12:43), (9:23-11:15), (12:52-13:05), (13:24-18:48)<* und Pausenzeiten: >*\[14:33-14:37], \[14:34-14:42]<*

1. Aus den Arbeitszeiteinträgen des Tages (in automatische Zeiterfassung) wird die Vereinigungsmenge gebildet, d.h. alle Einträge die sich überschneiden oder max. 10min auseinander liegen (damit sollen Neustarts rausgerechnet werden) werden zu einem Eintrag zusammengefasst, um zu jedem Zeitpunkt maximal einen Eintrag zu haben. \
   *(8:49-12:43), (9:23-11:15), (12:52-13:05), (13:24-18:48)   ==>   (8:49-13:05), (13:24-18:48)*
2. Aus diesen zusammengelegten Einträgen werden GesamtVon (Erster Eintrag) abgerundet - und GesamtBis-Zeit (Letzter Eintrag) aufgerundet ermittelt (Gesamtzeitfenster).\
   *(8:49-13:05), (13:24-18:48)  ==>  {8:49-18:48}  ==>  {8:45-19:00}*
3. Wie die Arbeitszeit wird auch aus den Pausen die Vereinigungsmenge gebildet (ohne die 10min Toleranz). \
   *\[14:33-14:37], \[14:34-14:42]  ==>  \[14:33-14:42]*
4. Eine temporäre Pausenzeit wird als Summe aller zusammengelegten Pauseneinträgen ermittelt.\
   *\[14:33-14:42]  ==>  \[0h 09m]*
5. Die Arbeitszeit wird als Summe aller zusammengelegten Arbeitszeiteinträgen abzüglich der temporären Pausenzeit ermittelt und zu Gunsten des Mitarbeiters aufgerundet.\
   *(8:49-13:05) **+** (13:24-18:48) **-** \[0h 09m]  ==>  (4h 16m) **+** (5h 24m) **-** \[0h 09m]  ==>  (9h 31m)  ==>  (9h 45m)*
6. Die tatsächliche Pause wird aus den (aufgerundeten) Gesamtzeitfenster abzüglich der (aufgerundeten) Arbeitszeit ermittelt.\
   *{8:45-19:00} **-** (9h 45m)  ==>  {10h 15m} **-** (9h 45m)  ==>  \[0h 30m]*
7. Die Pause wird angesichts der Arbeitszeit ggf. auf den gesetzlichen Mindestwert (6h => 30m, 9h => 45min) angepasst.\
   (Dies ist der einzige Schritt der die Arbeitszeit zu "Ungunsten" des Mitarbeiters runden kann)*(9h 45m), \[0h 30m]  ==>  (9h 30m), \[0h 45m]*  von ungerundet:  (*9h 22m)*

**Im Endeffekt haben die Mitarbeiter die Hoheit was in der Zeiterfassung tatsächlich steht, da sie den Datensatz nachbearbeiten können.**\
**Lediglich auf die gesetzliche Pausenzeit sollte geachtet werden!**


# Q\&A

Häufige Fragen beantwortet

### Was passiert bei...?

#### ...TimeTracker startet auf Server

TimeTracker mit [#beenden-mit-verwerfen](#beenden-mit-verwerfen "mention")

Server der TimeTrackerGeräteBlacklist hinzufügen um weitere automatische Starts zu verhindern

#### ...TimeTracker startet nicht automatisch

Der TimeTracker kann jederzeit manuell durch ausführen der .exe gestartet werden.

#### ...Zeiterfassung nicht ordnungsgemäß beendet

Wenn der TimeTracker beendet wurde ohne die laufende automatische Zeiterfassung beenden zu können, erscheint beim nächsten Starten des TimeTrackers auf dem gleichen PC/Server die Meldung:

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FrTmAXW3jFfEZwT2VwOIU%2Fimage2020-9-29_11-4-54.png?alt=media\&token=8a01f15b-402c-4637-84e8-1f628a32de77)

Bei "Ja" wird der bestehende Eintrag weiter verwendet, als wäre der TimeTracker nie beendet worden. (Empfohlen, wenn während der Downtime gearbeitet wurde)

Bei "Nein" wird der unvollständige Eintrag beendet und es wird ein neuer Eintrag für die neue Sitzung erstellt. (Empfohlen, wenn während der Downtime *NICHT* gearbeitet wurde. Die Endzeit der beendeten automatischen Zeiterfassung muss manuell in Cobra überprüft werden.)

#### ... Die Zeiterfassung wurde aus Versehen beendet und soll fortgesetzt werden <a href="#timetracker-zeiterfassungcobra-...diezeiterfassungwurdeausversehenbeendetundsollfortgesetztwerden" id="timetracker-zeiterfassungcobra-...diezeiterfassungwurdeausversehenbeendetundsollfortgesetztwerden"></a>

Wenn man den bisherigen Eintrag fortsetzen will kann man einfach den TimeTracker neu starten und die Startzeit der automatischen Zeiterfassung gegebenenfalls vorsetzen.

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FBiL7PuAakhSzGqmcFWaT%2Fimage.png?alt=media\&token=747415b9-49f0-4c90-8d74-9b63f5102a01)

#### ... Ein zweites mal am gleichen Tag "Beenden mit Speichern und Berechnen" <a href="#timetracker-zeiterfassungcobra-...einzweitesmalamgleichentag-beendenmitspeichernundberechnen" id="timetracker-zeiterfassungcobra-...einzweitesmalamgleichentag-beendenmitspeichernundberechnen"></a>

Die Arbeitszeit wird neu berechnet und überschreibt die alte Berechnung, getroffene Änderungen müssen eventuell wiederholt werden.

#### .. Der TimeTracker ist nicht am Bildschirmrand <a href="#timetracker-zeiterfassungcobra-...dertimetrackeristnichtambildschirmrand" id="timetracker-zeiterfassungcobra-...dertimetrackeristnichtambildschirmrand"></a>

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2Fi4nCpPwDceau0ibXWbUo%2Fimage2020-9-30_14-36-4.png?alt=media\&token=960787ce-74ef-4618-a863-3345f39e5b59)

![](https://wiki.ruthardt.eu/download/attachments/108265763/image2020-9-22_18-57-10.png?version=1\&modificationDate=1600793830297\&api=v2)Ist der TimeTracker wie auf dem Bild nicht am Bildschirmrand hilft es die Breite des Fensters über die Einstellungen hin und zurück zu ändern.

#### ... Der TimeTracker reserviert mehr Platz als sichtlich nötig ![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FcoyXSnpAGDQt6pKlS243%2Fimage2020-9-30_14-44-0.png?alt=media\&token=46092599-a933-40b5-b07d-bf5f3beb0b66) <a href="#timetracker-zeiterfassungcobra-...dertimetrackerreserviertmehrplatzalssichtlichnoetig" id="timetracker-zeiterfassungcobra-...dertimetrackerreserviertmehrplatzalssichtlichnoetig"></a>

Der Fehler ist auf ein Scaling des Bildschirms größer 100% zurückzuführen.

Bisher hilft leider nur das Scaling auf 100% zu reduzieren und ggf. als Ausgleich die Auflösung zu reduzieren.


# cobra-Addin

Im cobra-Addin TIME+PLUS sind folgende Funktionen enthalten:

* Dienstleistungen abrechnen\
  Diese Funktion generiert aus den Zeitbuchungen die abrechenbaren Zeitnachweise die in Belegpositionen und Belegen organisiert sind
* Ticket Aufwandsübersicht\
  Über einen PRINT+PLUS-Button lässt sich bei einem geöffneten Ticket die Aufwandsübersicht anzeigen
* Ticket Angebot erstellen\
  Über einen PRINT+PLUS-Button lässt sich bei einem geöffneten Ticket ein Angebot erstellen.


# Tasks

Für TIME+PLUS sind einige Tasks für Automatisierungen nötig. Ein Teil davon ist als PRINT+PLUS-Job realisiert, daher muss auch der PRINT+PLUS Task regelmäßig ausgeführt werden.

Die Empfehlung für den PRINT+PLUS Task lautet täglich ab 1:05 Uhr alle 2 Stunden für 24 Stunden wiederholen.

Die TIME+PLUS-Tasks sind in der folgenden Tabelle aufgelistet:

Es sind derzeit (noch) zwei verschiedene Tasks plus der PRINT+PLUS-Task einzurichten

| Name Aufgabenplanung                | Beschreibung                                                                                | Intervall                          | Anwendung                  | Parameter                               |
| ----------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------- | -------------------------- | --------------------------------------- |
| Ruthardt PRINT+PLUS Task            | Führt die offenen PRINT+PLUS-Aufgaben aus                                                   | täglich ab 1:05 Uhr alle 2 Stunden |                            | \[Pfad zur ADL]                         |
| Ruthardt TIME+PLUS Benachrichtigung | Benachrichtigung Beobachter erzeugen und für Beobachter PRINT+PLUS-Jobs erzeugen.           | täglich ab 1 Uhr alle 2 Stunden    | Ruthardt.TimePlus.Task.exe | beobachtererzeugen beobachterppjobtable |
| Ruthardt TIME+PLUS Datumswechsel    | Offene Timetracker beenden                                                                  | täglich 0:05 Uhr                   | Ruthardt.TimePlus.Task.exe | Datumswechsel                           |
| Ruthardt TIME+PLUS Tagesabrechnung  | Tagesabrechnungen für Arbeitszeit berechnen                                                 | täglich 3:05 Uhr                   | Ruthardt.TimePlus.Task.exe | Tagesabrechnung                         |
| Ruthardt TIME+PLUS Reminder         | Erinnert alle Benutzer, die noch als unklar markierte Buchungen haben, diese zu korrigieren | sonntags, 9 Uhr                    | Ruthardt.TimePlus.Task.exe | buchungskorrekturReminder               |
| Ruthardt TIME+PLUS Autoresponder    | Setzt den Autoresponder für anstehende AUs und Urlaube                                      | täglich 5 Uhr                      | Ruthardt.TimePlus.Task.exe | AutoreponderUpdate                      |

Die TIME+PLUS-Tasks bekommen den ADL-Pfad aus den Settings neben der Exe

Die Tasks können über den Aufruf CreateTask aus der Kommandozeile automatisiert erstellt werden.&#x20;

<figure><img src="https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2F61fTuKmFYQTD7ZzhPAmt%2Fimage.png?alt=media&amp;token=ae1e0d1d-9ba4-4af3-85f2-ecee640bb09c" alt=""><figcaption></figcaption></figure>

Sie müssen dann nur noch alle auf ünabhängig von der Benutzeranmeldung ausführen umgestellt werden:<br>

<figure><img src="https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FQsUpnuOBYDk60UP5D6a3%2Fimage.png?alt=media&amp;token=ad1336e1-41ad-4fce-880c-878026e358ae" alt=""><figcaption></figcaption></figure>


# Checkliste

Folgende Schritte müssen für eine vollständige Inbetriebnahme von TIME+PLUS vorgenommen werden

1. Anlegen der Tabellen und Felder mit Auswahllisten gemäß Kapitel [Datenbanktabellen](/datenbanktabellen/adressen-tabelle) und [Auswahllisten](/auswahllisten/wahrungen)
2. Anlegen der Konfigurationsdatei [\[AdressenAdlName\]\_TimePlusSettings.json](/konfigurationsdateien/adressenadlname-_timeplussettings-json)
3. Installation des TIME+PLUS cobra-Add-In auf allen cobra-Clients auf denen Dienstleistungen abgerechnet werden
4. Installation von PRINT+PLUS Version 6
5. Erfassen der internen Mitarbeitern mit Arbeitssollzeit, Windows-Benutzername und Web-User
6. Zentrales Speichern des Timetrackers im Netzwerk und das Starten via Gruppenrichtlinie auf allen Computer einrichten.
   1. Einrichten der Gruppenrichtlinie zum automatischen Starten beim Hochfahren aller Computer
   2. Hinterlegen der Adl in der Konfigurationsdatei *Ruthardt.TimePlus.TimeTracker.exe.config*
7. Einrichten der cobra-Änderungsnachverfolgung
8. Einrichten der Ticket-Webseite
   1. Anpassung der Konfigurationsdatei [appsettings.json](/konfigurationsdateien/appsettings.json-ticket-webseite)
9. Einrichten der Tasks siehe [Tasks](/funktionsweise-von-time+plus/tasks)
10. Einrichten der Reporting-Services [Reporting-Services](/sql-server-reporting-services/einleitung-reporting-services)


# Adressen-Tabelle

Die Adressen-Tabelle ist die Standard-Tabelle von Cobra. (Tabellentyp: ADDRESSES)

Die Adressen-Tabelle ist individuell konfigurierbar. Es müssen zwar die gelisteten Felder existieren. Die Feldname dienen allerdings nur als Orientierung und können frei gewählt werden.

<table><thead><tr><th>Feldname</th><th>Feldtyp</th><th width="249.33333333333331">Länge</th><th>Anmerkung</th></tr></thead><tbody><tr><td>ID</td><td>ID</td><td>4</td><td>Eingabepflichtig</td></tr><tr><td>Erfasst am</td><td>Erfasst am</td><td>8</td><td></td></tr><tr><td>Erfasst von</td><td>Erfasst von</td><td>20</td><td></td></tr><tr><td>Geändert am</td><td>Geändert am</td><td>8</td><td></td></tr><tr><td>Geändert von</td><td>Geändert von</td><td>20</td><td></td></tr><tr><td>Suchname (Firma)</td><td>Firma</td><td>120</td><td>Eingabepflichtig</td></tr><tr><td>Firma1</td><td>Firma</td><td>120</td><td></td></tr><tr><td>Ort</td><td>Ort</td><td>60</td><td></td></tr><tr><td>Vorname</td><td>Text</td><td>120</td><td></td></tr><tr><td>Nachname</td><td>Text</td><td>120</td><td></td></tr><tr><td>Mobil</td><td>Telefon mobil</td><td>120</td><td></td></tr><tr><td>Abrechnung-Spezialfaktor</td><td>Zahl mit Nachkommastellen</td><td>8</td><td></td></tr><tr><td>Benachrichtigung Adressen</td><td>Text</td><td>255</td><td></td></tr><tr><td>Betreut von Distributor</td><td>Beziehung (Adressen)</td><td>4</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Betreut von Partner</td><td>Beziehung (Adressen)</td><td>4</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Fahrtzeitabrechnung Anteil</td><td>Zahl (Prozent)</td><td>8</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Fahrtzeitabrechnung Sonderfall</td><td>Ja/Nein</td><td>1</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Intern</td><td>Ja/Nein</td><td>1</td><td></td></tr><tr><td>Ist Distributor</td><td>Ja/Nein</td><td>1</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Ist Partner</td><td>Ja/Nein</td><td>1</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Kundennummer</td><td>Text</td><td>60</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Lieferantennummer</td><td>Text</td><td>255</td><td>Für Nebenadressen schreibgeschützt</td></tr><tr><td>Notfallbenachrichtigung Adressen</td><td>Text</td><td>50</td><td></td></tr><tr><td>Notfallbenachrichtigung erlaubt</td><td>Ja/Nein</td><td>1</td><td></td></tr><tr><td>Standard Steuersatz</td><td>Zahl</td><td>8</td><td>Eingabepflichtig</td></tr><tr><td>Standard Währung</td><td>Text Standardwert: €</td><td>50</td><td>Auswahlliste: Währungen</td></tr><tr><td>Web-Passwort-Hash</td><td>Text</td><td>255</td><td></td></tr><tr><td>Web-User</td><td>Text</td><td>255</td><td></td></tr><tr><td>Windows-User</td><td>Text</td><td>50</td><td></td></tr><tr><td>Zeitbuchung_Farbe</td><td>Text</td><td>50</td><td></td></tr><tr><td>Zeiterfassung_Arbeitstage</td><td>Text</td><td>50</td><td>Auswahlliste: Arbeitstage</td></tr><tr><td>Zeiterfassung_Sollstunden</td><td>Zahl mit Nachkommastellen</td><td>8</td><td></td></tr></tbody></table>


# Belege-Tabelle

Die Belege-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb der Adressen-Tabelle befindet. (Tabellentyp: ADDITIONAL)

| Feldname           | Feldtyp                   | Länge      | Anmerkung                                              |
| ------------------ | ------------------------- | ---------- | ------------------------------------------------------ |
| ID                 | ID                        | 4          | Eingabepflichtig                                       |
| Erfasst am         | Erfasst am                | 8          |                                                        |
| Erfasst von        | Erfasst von               | 20         |                                                        |
| Geändert am        | Geändert am               | 8          |                                                        |
| Geändert von       | Geändert von              | 20         |                                                        |
| SuperId            | SuperId (Adressen)        | 4          |                                                        |
| Belegart           | Text                      | 50         | <p>Auswahlliste: Belegarten</p><p>Eingabepflichtig</p> |
| Belegdatum         | Datum (Datum (Kurz))      | 8          | <p>Standardwert: $CurDate$</p><p>Eingabepflichtig</p>  |
| Buchungsperiode    | Text                      | 5          | Auswahlliste: Buchungsperioden                         |
| FIBU Währungs-Kurs | Zahl mit Nachkommastellen | 8          |                                                        |
| Interne Anmerkung  | Bemerkung                 | 2147483647 |                                                        |
| Mandant            | Text                      | 10         | <p>Auswahlliste: Mandanten</p><p>Eingabepflichtig</p>  |
| Steuersatz         | Zahl                      | 8          |                                                        |
| Währung            | Text                      | 5          | Eingabepflichtig                                       |


# Belegpositionen-Tabelle

Die Belegpositionen-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb, der für die TIME+PLUS erstellten Belege-Tabelle befindet. (Tabellentyp: SUBTABLE)

| Feldname                      | Feldtyp                   | Länge      | Anmerkung               |
| ----------------------------- | ------------------------- | ---------- | ----------------------- |
| ID                            | ID                        | 4          | Eingabepflichtig        |
| Erfasst am                    | Erfasst am                | 8          |                         |
| Erfasst von                   | Erfasst von               | 20         |                         |
| Geändert am                   | Geändert am               | 8          |                         |
| Geändert von                  | Geändert von              | 20         |                         |
| SuperId                       | SuperId (Adressen)        | 4          |                         |
| Artikelnummer                 | Text                      | 50         |                         |
| AutomatischGeneriertePosition | Ja/Nein                   | 1          |                         |
| Bezeichnung                   | Text                      | 255        |                         |
| Einheit                       | Text                      | 50         | Auswahlliste: Einheiten |
| Einzel                        | Zahl                      | 8          |                         |
| EK Einzel in €                | Zahl mit Nachkommastellen | 8          |                         |
| Kunde                         | Beziehung (Adressen)      | 4          |                         |
| Langtext                      | Bemerkung                 | 2147483647 |                         |
| Menge                         | Zahl mit Nachkommastellen | 8          | Standardwert: 1         |
| Stammartikel                  | Beziehung (Artikel)       | 4          |                         |
| Warengruppe                   | Text                      | 255        |                         |


# Zeitnachweis-Tabelle

Die Zeitnachweis-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb, der für die TIME+PLUS erstellten Belegpositionen-Tabelle befindet. (Tabellentyp: SUBTABLE)

| Feldname         | Feldtyp                   | Länge      | Anmerkung        |
| ---------------- | ------------------------- | ---------- | ---------------- |
| ID               | ID                        | 4          | Eingabepflichtig |
| Erfasst am       | Erfasst am                | 8          |                  |
| Erfasst von      | Erfasst von               | 20         |                  |
| Geändert am      | Geändert am               | 8          |                  |
| Geändert von     | Geändert von              | 20         |                  |
| SuperId          | SuperId (Adressen)        | 4          |                  |
| Buchender        | Beziehung (Adressen)      | 4          |                  |
| Buchungstext     | Bemerkung                 | 2147483647 |                  |
| Datum            | Datum (Datum (Kurz))      | 8          |                  |
| Dauer in Stunden | Zahl mit Nachkommastellen | 8          |                  |
| Kostenfrei       | Ja/Nein                   | 1          |                  |
| Nicht öffentlich | Ja/Nein                   | 1          |                  |
| Tätigkeitsart    | Ja/Nein                   | 1          |                  |
| Ticket           | Beziehung (Tickets)       | 4          |                  |


# Komponenten-Tabelle

Die Komponenten-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb der Adressen-Tabelle befindet. (Tabellentyp: ADDITIONAL)

| Feldname     | Feldtyp            | Länge | Anmerkung        |
| ------------ | ------------------ | ----- | ---------------- |
| ID           | ID                 | 4     | Eingabepflichtig |
| Erfasst am   | Erfasst am         | 8     |                  |
| Erfasst von  | Erfasst von        | 20    |                  |
| Geändert am  | Geändert am        | 8     |                  |
| Geändert von | Geändert von       | 20    |                  |
| SuperId      | SuperId (Adressen) | 4     |                  |
| Komponente   | Text               | 50    |                  |


# TicketFilter-Tabelle

Die TicketFilter-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb der Adressen-Tabelle befindet. (Tabellentyp: ADDITIONAL)

| Feldname     | Feldtyp            | Länge      | Anmerkung             |
| ------------ | ------------------ | ---------- | --------------------- |
| ID           | ID                 | 4          | Eingabepflichtig      |
| Erfasst am   | Erfasst am         | 8          |                       |
| Erfasst von  | Erfasst von        | 20         |                       |
| Geändert am  | Geändert am        | 8          |                       |
| Geändert von | Geändert von       | 20         |                       |
| SuperId      | SuperId (Adressen) | 4          |                       |
| Bereich      | Text \[50]         | 50         | Auswahlliste: Bereich |
| Name         | Text \[255]        | 255        |                       |
| Order        | Bemerkung          | 2147483647 |                       |
| Where        | Bemerkung          | 2147483647 |                       |


# Zeitbuchung-Tabelle

Die Zeitbuchung-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb der Adressen-Tabelle befindet. (Tabellentyp: ADDITIONAL)

Zeitbuchungen dienen der Dokumentation von Arbeit an einem Ticket. Sie werden vom TimeTracker erstellt und dienen der Weiterverarbeitung zu Zeitnachweisen ([Zeitnachweis-Tabelle](/datenbanktabellen/zeitnachweis-tabelle)).

| Feldname                     | Feldtyp              | Länge      | Anmerkung                                        |
| ---------------------------- | -------------------- | ---------- | ------------------------------------------------ |
| ID                           | ID                   | 4          | Eingabepflichtig                                 |
| Erfasst am                   | Erfasst am           | 8          |                                                  |
| Erfasst von                  | Erfasst von          | 20         |                                                  |
| Geändert am                  | Geändert am          | 8          |                                                  |
| Geändert von                 | Geändert von         | 20         |                                                  |
| SuperId                      | SuperId (Adressen)   | 4          | Eingabepflichtig                                 |
| Abgerechnet mit Zeitnachweis | Zahl                 | 8          |                                                  |
| Anmerkung Intern             | Bemerkung            | 2147483647 |                                                  |
| Berechnungsfaktor            | Zahl (Prozent / 100) | 8          | Standardwert: 100                                |
| Bis                          | Zeit (Uhrzeit)       | 8          |                                                  |
| Bis gerundet                 | Datum                | 8          |                                                  |
| Buchungstext                 | Bemerkung            | 2147483647 |                                                  |
| Computername                 | Text                 | 50         |                                                  |
| Datum                        | Datum (Datum(Kurz))  | 8          |                                                  |
| Dauer                        | Rechenfeld           | 8          | [#rechenfeld-dauer](#rechenfeld-dauer "mention") |
| Ist Fahrt                    | Ja/Nein              | 1          |                                                  |
| Kostenfrei                   | Ja/Nein              | 1          |                                                  |
| Nicht öffentlich             | Ja/Nein              | 1          |                                                  |
| Tätigkeitsart                | Text                 | 50         | Auswahlliste: Tätigkeitsart                      |
| Ticket                       | Beziehung (Tickets)  | 4          |                                                  |
| Unklar                       | Ja/Nein              | 1          |                                                  |
| Von                          | Zeit (Uhrzeit)       | 8          |                                                  |
| Von gerundet                 | Datum                | 8          |                                                  |

#### Rechenfeld "Dauer" <a href="#rechenfeld-dauer" id="rechenfeld-dauer"></a>

IIF (DATEDIFF (MINUTE, CONVERT (TIME, {Von gerundet}), CONVERT (TIME, {Bis gerundet})) >= 5,   DATEDIFF (MINUTE, CONVERT (TIME,{Von gerundet}), CONVERT (TIME, {Bis gerundet})) \* {Berechnungsfaktor}/100, IIF (CONVERT (TIME, {Bis gerundet}) = '00:00', 1440 + DATEDIFF (MINUTE, CONVERT (TIME, {Von gerundet}), CONVERT (TIME, {Bis gerundet})), 5) \* {Berechnungsfaktor} / 100)


# Zeiterfassung-Tabelle

Die Zeiterfassung-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb der Adressen-Tabelle befindet. (Tabellentyp: ADDITIONAL)

Hier wird für jeden Mitarbeiter an jedem Arbeitstag ein Eintrag erstellt. Dieser vermerkt Dinge wie Urlaubs-, Krankheits-, Arbeitsstunden. In Kombination mit den Adressen.Sollstunden des Mitarbeiters kann somit berechnet werden, wie viele Überstunden der Mitarbeiter an dem jeweiligen Tag geleistet, bzw. abgebaut hat.

| Feldname       | Feldtyp                   | Länge      | Anmerkung                                                        |
| -------------- | ------------------------- | ---------- | ---------------------------------------------------------------- |
| ID             | ID                        | 4          | Eingabepflichtig                                                 |
| Erfasst am     | Erfasst am                | 8          |                                                                  |
| Erfasst von    | Erfasst von               | 20         |                                                                  |
| Geändert am    | Geändert am               | 8          |                                                                  |
| Geändert von   | Geändert von              | 20         |                                                                  |
| SuperId        | SuperId (Adressen)        | 4          |                                                                  |
| Arbeitsunfähig | Zahl mit Nachkommastellen | 8          | Eingabepflichtig                                                 |
| Arbeitszeit    | Rechenfeld                | 8          | [#rechenfeld-arbeitszeit](#rechenfeld-arbeitszeit "mention")     |
| AU             | Ja/Nein                   | 1          |                                                                  |
| Ausbildung     | Zahl mit Nachkommastellen | 8          | Eingabepflichtig                                                 |
| Bemerkungen    | Bemerkung                 | 2147483647 |                                                                  |
| Bis            | Datum und Zeit            | 8          |                                                                  |
| Datum          | Datum                     | 8          | Eingabepflichtig                                                 |
| Ist Stunden    | Rechenfeld                | 8          | [#rechenfeld-iststunden](#rechenfeld-iststunden "mention")       |
| Pause          | Zahl mit Nachkommastellen | 8          |                                                                  |
| Saldo Stunden  | Rechenfeld                | 8          | [#rechenfeld-saldo-stunden](#rechenfeld-saldo-stunden "mention") |
| Soll Stunden   | Zahl mit Nachkommastellen | 8          | Eingabepflichtig                                                 |
| Urlaub         | Zahl mit Nachkommastellen | 8          | <p>Standartwert: 0</p><p>Eingabepflichtig</p>                    |
| Von            | Datum und Zeit            | 8          |                                                                  |

#### Rechenfeld "Arbeitszeit" <a href="#rechenfeld-arbeitszeit" id="rechenfeld-arbeitszeit"></a>

IIF (CONVERT (TIME, {Von}) <> '00:00:00' or CONVERT (TIME, {Bis})<> '00:00:00', IIF (CONVERT (TIME, {Bis}) > '03:00:00' OR CONVERT (TIME, {Von}) < '03:00:00', CEILING ((DATEDIFF (minute, CONVERT (TIME, {Von}), CONVERT (TIME, {Bis})) / 15.0)) / 4 - {Pause}, CEILING ((DATEDIFF (minute, CONVERT (TIME, {Von}), CONVERT (TIME, {Bis})) / 15.0)) / 4 - {Pause} + 24), 0)

#### Rechenfeld "Ist Stunden" <a href="#rechenfeld-iststunden" id="rechenfeld-iststunden"></a>

IIF (CONVERT(TIME, {Von}) <> '00:00:00' OR CONVERT (TIME, {Bis})<> '00:00:00', IIF (CONVERT (TIME, {Bis}) > '03:00:00' OR CONVERT (TIME, {Von}) < '03:00:00', CEILING ((DATEDIFF (minute, CONVERT (TIME, {Von}), CONVERT (TIME, {Bis})) / 15.0)) / 4 - {Pause}, CEILING ((DATEDIFF (minute, CONVERT (TIME, {Von}), CONVERT (TIME, {Bis})) / 15.0)) / 4 - {Pause} + 24), 0)

#### Rechenfeld "Saldo Stunden" <a href="#rechenfeld-saldostunden" id="rechenfeld-saldostunden"></a>

{Ist Stunden} - {Soll Stunden}


# Zeiterfassung Automatisch-Tabelle

Die \[Zeiterfassung Automatisch]-Tabelle ist eine Zusatz-Tabelle, die sich unterhalb der Adressen-Tabelle befindet. (Tabellentyp: ADDITIONAL)

Hier werden die automatisch erstellten Einträge des TimeTrackers hinterlegt, welche verwendet werden um am Ende des Tages die einen Eintrag in der [Zeiterfassung-Tabelle](/datenbanktabellen/zeiterfassung-tabelle) zu erstellen.

| Feldname         | Feldtyp            | Länge | Anmerkung                                                      |
| ---------------- | ------------------ | ----- | -------------------------------------------------------------- |
| ID               | ID                 | 4     | Eingabepflichtig                                               |
| Erfasst am       | Erfasst am         | 8     |                                                                |
| Erfasst von      | Erfasst von        | 20    |                                                                |
| Geändert am      | Geändert am        | 8     |                                                                |
| Geändert von     | Geändert von       | 20    |                                                                |
| SuperId          | SuperId (Adressen) | 4     |                                                                |
| Art              | Text               | 50    | <p>Auswahlliste: Zeiterfassung\_Art</p><p>Eingabepflichtig</p> |
| Bis              | Datum und Zeit     | 8     |                                                                |
| ComputerName     | Text               | 50    |                                                                |
| Letzte Aktivität | Datum und Zeit     | 8     |                                                                |
| Von              | Datum und Zeit     | 8     | Eingabepflichtig                                               |


# Artikel-Tabelle

Die Artikel-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

| Feldname      | Feldtyp      | Länge      | Anmerkung                  |
| ------------- | ------------ | ---------- | -------------------------- |
| ID            | ID           | 4          | Eingabepflichtig           |
| Erfasst am    | Erfasst am   | 8          |                            |
| Erfasst von   | Erfasst von  | 20         |                            |
| Geändert am   | Geändert am  | 8          |                            |
| Geändert von  | Geändert von | 20         |                            |
| Artikelnummer | Text         | 50         |                            |
| Bezeichnung   | Text         | 255        |                            |
| Einheit       | Text         | 50         | Auswahlliste: Einheiten    |
| Langtext      | Bemerkung    | 2147483647 |                            |
| Warengruppe   | Text         | 50         | Auswahlliste: Warengruppen |


# ArtikelPreise-Tabelle

Die ArtikelPreise-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

| Feldname                | Feldtyp              | Länge      | Anmerkung                                             |
| ----------------------- | -------------------- | ---------- | ----------------------------------------------------- |
| ID                      | ID                   | 4          | Eingabepflichtig                                      |
| Erfasst am              | Erfasst am           | 8          |                                                       |
| Erfasst von             | Erfasst von          | 20         |                                                       |
| Geändert am             | Geändert am          | 8          |                                                       |
| Geändert von            | Geändert von         | 20         |                                                       |
| Abweichende Bezeichnung | Text                 | 50         |                                                       |
| Artikel                 | Beziehung (Artikel)  | 4          | Eingabepflichtig                                      |
| Auswahl-Name            | Text                 | 50         | Auswahlliste: Tätigkeitsart                           |
| Bemerkungen             | Bemerkung            | 2147483647 |                                                       |
| Einzel                  | Währung              | 8          |                                                       |
| EK Einzel               | Währung              | 8          |                                                       |
| Endkunde                | Beziehung (Adressen) | 4          |                                                       |
| Endkunde-Firma          | Text                 | 255        |                                                       |
| Mandant                 | Text \[50]           | 50         | <p>Auswahlliste: Mandanten</p><p>Eingabepflichtig</p> |
| Währung                 | Text \[50]           | 50         | Auswahlliste: Währungen Standardwert: €               |


# Feiertage-Tabelle

Die Feiertage-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

Feiertage müssen manuell eingetragen werden, damit die Arbeitszeiten in der [Zeiterfassung-Tabelle](/datenbanktabellen/zeiterfassung-tabelle) korrekt berechnet werden können.

| Feldname         | Feldtyp             | Länge | Anmerkung        |
| ---------------- | ------------------- | ----- | ---------------- |
| ID               | ID                  | 4     | Eingabepflichtig |
| Erfasst am       | Erfasst am          | 8     |                  |
| Erfasst von      | Erfasst von         | 20    |                  |
| Geändert am      | Geändert am         | 8     |                  |
| Geändert von     | Geändert von        | 20    |                  |
| Datum            | Datum (Datum(Kurz)) | 8     |                  |
| Feiertagsname    | Text                | 200   |                  |
| Tagesanteil Frei | Zahl (Prozent)      | 8     |                  |


# Tickets-Tabelle

Die Tickets-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

Tickets stellen Arbeitseinheiten dar. Zeitbuchungen und Zeitnachweise durch Zeitbuchungen beschreiben die Umsetzung dieser Arbeitseinheiten

| Feldname                          | Feldtyp                 | Länge      | Anmerkung                                                                                          |
| --------------------------------- | ----------------------- | ---------- | -------------------------------------------------------------------------------------------------- |
| ID                                | ID                      | 4          | Eingabepflichtig                                                                                   |
| Erfasst am                        | Erfasst am              | 8          |                                                                                                    |
| Erfasst von                       | Erfasst von             | 20         |                                                                                                    |
| Geändert am                       | Geändert am             | 8          |                                                                                                    |
| Geändert von                      | Geändert von            | 20         |                                                                                                    |
| Abrechnungsart                    | Text \[255]             | 255        | <p>Auswahlliste: Abrechnungsart</p><p>Standardwert: Nach tatsächlichem Aufwand, mit Auflistung</p> |
| Anmerkungen intern                | Bemerkung               | 2147483647 |                                                                                                    |
| Autor                             | Beziehung (Adressen)    | 4          |                                                                                                    |
| Beschreibung                      | Bemerkung               | 2147483647 |                                                                                                    |
| Fälligkeit intern                 | Datum (Datum (Kurz))    | 8          |                                                                                                    |
| Initialbenachrichtigung versendet | Ja/Nein                 | 1          |                                                                                                    |
| KomponenteBez                     | Beziehung (Komponenten) | 4          |                                                                                                    |
| Kostenfrei                        | Ja/Nein                 | 1          |                                                                                                    |
| Kunde                             | Beziehung (Adressen)    | 4          |                                                                                                    |
| Mandant                           | Text                    | 50         | <p>Auswahlliste: Mandanten</p><p>Eingabepflichtig</p>                                              |
| Nicht öffentlich                  | Ja/Nein                 | 1          |                                                                                                    |
| Priorität                         | Text                    | 50         | <p>Auswahlliste: Priorität</p><p>Standardwert: 03 Normal</p>                                       |
| Status                            | Text                    | 255        | Auswahlliste: Ticketstatus                                                                         |
| Titel                             | Text                    | 255        |                                                                                                    |
| Unklar                            | Ja/Nein                 | 1          |                                                                                                    |
| ZU KORRIGIEREN                    | Ja/Nein                 | 1          |                                                                                                    |
| Zugesichert zum                   | Datum (Datum (Kurz))    | 8          |                                                                                                    |
| Zugewiesen an                     | Beziehung (Adressen)    | 4          |                                                                                                    |


# TicketAngebote-Tabelle

Die TicketAngebote-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

| Feldname              | Feldtyp                   | Länge      | Anmerkung        |
| --------------------- | ------------------------- | ---------- | ---------------- |
| ID                    | ID                        | 4          | Eingabepflichtig |
| Erfasst am            | Erfasst am                | 8          |                  |
| Erfasst von           | Erfasst von               | 20         |                  |
| Geändert am           | Geändert am               | 8          |                  |
| Geändert von          | Geändert von              | 20         |                  |
| Bestätiger Ip         | Text                      | 50         |                  |
| Bestätigt Am          | Datum                     | 8          |                  |
| Bestätigt Durch       | Text                      | 255        |                  |
| Datum                 | Datum                     | 8          | Eingabepflichtig |
| EmpfängerHauptadresse | Beziehung (Adressen)      | 4          |                  |
| Mail Text             | Bemerkung                 | 2147483647 |                  |
| MailEmpfänger         | Beziehung (Adressen)      | 4          |                  |
| Steuersatz            | Zahl mit Nachkommastellen | 8          | Eingabepflichtig |
| Ticket                | Beziehung (Adressen)      | 4          |                  |
| Währung               | Text                      | 50         | Eingabepflichtig |


# TicketAngebotPositionen-Tabelle

Die TicketAngebotPositionen-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

| Feldname           | Feldtyp                    | Länge | Anmerkung                   |
| ------------------ | -------------------------- | ----- | --------------------------- |
| ID                 | ID                         | 4     | Eingabepflichtig            |
| Erfasst am         | Erfasst am                 | 8     |                             |
| Erfasst von        | Erfasst von                | 20    |                             |
| Geändert am        | Geändert am                | 8     |                             |
| Geändert von       | Geändert von               | 20    |                             |
| ArtikelBezeichnung | Text                       | 255   |                             |
| Schätzung          | Zahl mit Nachkommastellen  | 8     |                             |
| Stammartikel       | Beziehung (Artikel)        | 4     |                             |
| Stundensatz        | Zahl mit Nachkommastellen  | 8     |                             |
| Tätigkeitsart      | Text                       | 50    | Auswahlliste: Tätigkeitsart |
| TicketAngebot      | Beziehung (TicketAngebote) | 4     |                             |


# TicketBeobachter-Tabelle

Die TicketBeobachter-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

Speichert Benutzer, welche über Änderungen eines spezifischen Tickets informiert werden wollen.

| Feldname                | Feldtyp              | Länge | Anmerkung        |
| ----------------------- | -------------------- | ----- | ---------------- |
| ID                      | ID                   | 4     | Eingabepflichtig |
| Erfasst am              | Erfasst am           | 8     |                  |
| Erfasst von             | Erfasst von          | 20    |                  |
| Geändert am             | Geändert am          | 8     |                  |
| Geändert von            | Geändert von         | 20    |                  |
| Benutzer                | Beziehung (Adressen) | 4     |                  |
| Letzte Benachrichtigung | Datum (Datum (Kurz)) | 8     |                  |
| Ticket                  | Beziehung (Tickets)  | 4     |                  |


# TicketDokumente-Tabelle

Die TicketDokumente-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

Dokumente, welche an ein Ticket angehangen wurden.

| Feldname     | Feldtyp              | Länge | Anmerkung        |
| ------------ | -------------------- | ----- | ---------------- |
| ID           | ID                   | 4     | Eingabepflichtig |
| Erfasst am   | Erfasst am           | 8     |                  |
| Erfasst von  | Erfasst von          | 20    |                  |
| Geändert am  | Geändert am          | 8     |                  |
| Geändert von | Geändert von         | 20    |                  |
| Autor        | Beziehung (Adressen) | 4     |                  |
| Dokument     | Dokument             | 270   |                  |
| Ticket       | Beziehung (Tickets)  | 4     |                  |
| Titel        | Text                 | 255   |                  |


# TicketKommentare-Tabelle

Die TicketKommentare-Tabelle ist eine freie Tabelle. (Tabellentyp: FREE)

Kommentare, welche an zu einem Ticket verfasst wurden.

| Feldname         | Feldtyp              | Länge      | Anmerkung        |
| ---------------- | -------------------- | ---------- | ---------------- |
| ID               | ID                   | 4          | Eingabepflichtig |
| Erfasst am       | Erfasst am           | 8          |                  |
| Erfasst von      | Erfasst von          | 20         |                  |
| Geändert am      | Geändert am          | 8          |                  |
| Geändert von     | Geändert von         | 20         |                  |
| Anmerkung intern | Bemerkung            | 2147483647 |                  |
| Autor            | Beziehung (Adressen) | 4          |                  |
| Beschreibung     | Bemerkung            | 2147483647 |                  |
| Ticket           | Beziehung (Tickets)  | 4          |                  |


# Währungen

Währungen in denen Preise angegeben werden. Kann angepasst werden.

| Kürzel | Text |
| ------ | ---- |
| €      | €    |
| CHF    | CHF  |


# Wochentage

Zum festhalten der Arbeitstage von Mitarbeitern. Kann bei Bedarf um Samstag und Sonntag erweitert werden.

| Kürzel     | Text       |
| ---------- | ---------- |
| Montag     | Montag     |
| Dienstag   | Dienstag   |
| Mittwoch   | Mittwoch   |
| Donnerstag | Donnerstag |
| Freitag    | Freitag    |


# Belegarten

Angabe, über die Art des Belegs. Kann erweitert werden.

| Kürzel | Text             |
| ------ | ---------------- |
| AN     | Angebot          |
| AR     | Ausgangsrechnung |


# Buchungsperioden

Buchungsperioden eines Jahres. Kann angepasst werden.

| Kürzel | Text |
| ------ | ---- |
| 01     | 01   |
| 02     | 02   |
| 03     | 03   |
| 04     | 04   |
| 05     | 05   |
| 06     | 06   |
| 07     | 07   |
| 08     | 08   |
| 09     | 09   |
| 10     | 10   |
| 11     | 11   |
| 12     | 12   |


# Mandanten

Namen der als Intern geltenden Firmen. Muss angepasst werden.

Text muss Suchname (Firma) aus [Adressen-Tabelle](/datenbanktabellen/adressen-tabelle) entsprechen

| Kürzel | Text   |
| ------ | ------ |
| P17    | P17    |
| Siegel | Siegel |
| RST    | RST    |
| RSH    | RSH    |
| Enorm  | Enorm  |
| RH     | RH     |


# Einheiten

Einheiten, mit denen Artikelanzahlen beschrieben werden können. Kann angepasst werden.

| Kürzel | Text      |
| ------ | --------- |
| B      | Benutzer  |
| JAHR   | Jahr      |
| KM     | Kilometer |
| M      | Monat     |
| MAL    | Mal       |
| Q      | Quartal   |
| Std    | Stunde    |
| Stk    | Stück     |
| Tag    | Tage      |


# Bereich

Bestimmt den Bereich der TicketFilter. Kann nicht angepasst werden.

| Kürzel | Text     |
| ------ | -------- |
| B      | Benutzer |
| F      | Firma    |
| G      | Global   |


# Tätigkeitsart

Funktion des Mitarbeiters, in der er gearbeitet hat. Kann nicht angepasst werden.

| Kürzel | Text           |
| ------ | -------------- |
| A      | Architekt      |
| C      | Consulting     |
| E      | Entwickler     |
| P      | Projektmanager |
| T      | Techniker      |
| Te     | Tester         |


# Zeiterfassung\_Art

Unterscheidung der Zeiterfassung in Arbeitszeit und Pause. Kann nicht angepasst werden.

| Kürzel      | Text        |
| ----------- | ----------- |
| Arbeitszeit | Arbeitszeit |
| Pause       | Pause       |


# Warengruppen

Verschiedene Arten von Waren. Muss angepasst werden.

| Kürzel    | Text             |
| --------- | ---------------- |
| DL        | Dienstleistungen |
| HARDWARE  | Hardware         |
| JIRA      | JIRA             |
| O365      | O365             |
| PLUSTOOLS | PLUSTOOLS        |
| SERVER    | SERVER           |


# Abrechnungsart

Arten der Abrechnung. Kann nicht angepasst werden.

| Kürzel | Text                                       |
| ------ | ------------------------------------------ |
| 01     | Nach tatsächlichem Aufwand, mit Auflistung |
| 02     | Pauschal (wie Schätzung)                   |


# Priorität

Priorität von Tickets. Kann nicht angepasst werden.

|    | Text                |
| -- | ------------------- |
| 01 | 01 Nice to have     |
| 02 | 02 Gelegentlich     |
| 03 | 03 Normal           |
| 04 | 04 Dringend         |
| 05 | 05 Kritisch/Blocker |


# Ticketstatus

Status eines Tickets. Kann nicht angepasst werden.

| Kürzel | Text                                |
| ------ | ----------------------------------- |
| 00     | 00 Angefragt                        |
| 01     | 01 Aktive Initiative                |
| 10     | 10 Angeboten                        |
| 11     | 11 Angeboten, vielleicht später     |
| 20     | 20 Beauftragt                       |
| 30     | 30 In Bearbeitung                   |
| 40     | 40 Pausiert                         |
| 41     | 41 Pausiert, Wartet auf Kunde       |
| 50     | 50 Erledigt                         |
| 59     | 59 Wird nicht erledigt              |
| 80     | 80 Geschlossen, Erledigt            |
| 89     | 89 Geschlossen, wird nicht erledigt |
| 98     | 98 Bei Bedarf                       |
| 99     | 99 Regelmäßig                       |


# appsettings.json Ticket-Webseite

```json
{
	"AdlPath": "C:/inetpub/config/Ticket.WebUi/xxx_web.adl",
	"AdlSystemPath": "C:/inetpub/config/Ticket.WebUi/system_web.adl",
	"AdlUsername": "web",
	"CobraDmsRootFolder": "\\\\server7\\TicketDMS",
	"WebSmsUsername": "xxx@xxx.de",
	"WebSmsPasswort": "xxx", 
	"SmtpMailServer": "smtp.office365.com",
	"SmtpMailName": "support@ruthardt.eu",
	"SmtpMailAdresse": "support@ruthardt.eu",
	"SmtpMailPasswort": "xxx",
	"CcMailAdresse": "",
}
```


# \[AdressenAdlName]\_TimePlusSettings.json

Liegt neben der der AdressenAdl, für die sie gilt

```json
{
  "TimeTrackerGeräteBlacklist": [
	"Server1",
	"Server2",
  ],
  "CriticalWords": [
        "Übergabe",
        "Einweisung",
        "Lesen",
        "Erarbeitung",
        "Terminabsprache",
        "Ticket erstellen",
	"begleit",
	"Mail",
	"intern",
	"Abstimmung"
  ],
  "AdminAdressenIds": [
	2,
	3, 
  ],
  "TicketWebsiteUrl": "https://ticket.ruthardt.eu",
  "AdlSystemPath": "\\\\server7\\cobra\\CRMPRO\\System\\System.adl",
  "AdressenMapping": [
    {
        "Original": "Suchname",
        "Mapped": "Firma"
    }
  ],
  "DynamischeTicketFelder": [
  ]
}
```


# Einleitung Reporting Services

Etliche Auswertungen in TIME+PLUS werden sinnvollerweise mit den kostenfreien Microsoft SQL Server Reporting Services (SSRS) vorgenommen.

Der Vorteil liegt darin, dass die SSRS-Reports unabhängig von cobra z.B. auch von Mobilgeräten ausgewertet werden können.

Im Folgenden wird die Installation und der Betrieb der Reports beschrieben. Außerdem stehen die mitgelieferten Beispiel-Reports zur Verfügung.


# Installation SSRS

#### Download

Der Download erfolgt hier:\
<https://www.microsoft.com/en-us/download/details.aspx?id=100122> (Version 2019)\
<https://www.microsoft.com/en-us/download/details.aspx?id=104502> (Version 2022)

#### Wichtige Anmerkung Lizenz-Schlüssel:

Es ist dringend zu empfehlen die SSRS direkt mit dem richtigen Lizenzkey der SQL-Server Installation zu installieren. Dies nachträglich zu ändern ist relativ aufwändig.

<figure><img src="https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FyPkmfugDvGMNiA4TvoMp%2Fimage.png?alt=media&amp;token=0ba48ee0-ae2a-41d8-8618-14b2aa35bb48" alt=""><figcaption></figcaption></figure>

Dies kann man ggfs. über folgendes Powershell-Kommando abfragen.

{% code lineNumbers="true" %}

```powershell
# Confirmed working for Windows versions of SQL Server 2016-2019
# May work for later versions but this changes a lot!
function GetSqlServerProductKey($InstanceName="MSSQL15.MSSQLSERVER") {
    $localmachine = [Microsoft.Win32.RegistryHive]::LocalMachine
    $defaultview = [Microsoft.Win32.RegistryView]::Default
    $reg = [Microsoft.Win32.RegistryKey]::OpenBaseKey($localmachine, $defaultview)
    $key = "SOFTWARE\Microsoft\Microsoft SQL Server\$InstanceName\Setup"
    $encodedData = $reg.OpenSubKey($key).GetValue("DigitalProductID")
    $reg.Close()
 
    try {
        $binArray = ($encodedData)[0..66]
        $productKey = $null
 
        $charsArray = "B", "C", "D", "F", "G", "H", "J", "K", "M", "P", "Q", "R", "T", "V", "W", "X", "Y", "2", "3", "4", "6", "7", "8", "9"
 
        $isNKey = ([math]::truncate($binArray[14] / 0x6) -band 0x1) -ne 0;
        if ($isNKey) {
        $binArray[14] = $binArray[14] -band 0xF7
        }
 
        $last = 0
 
        for ($i = 24; $i -ge 0; $i--) {
            $k = 0
            for ($j = 14; $j -ge 0; $j--) {
                $k = $k * 256 -bxor $binArray[$j]
                $binArray[$j] = [math]::truncate($k / 24)
                $k = $k % 24
            }
            $productKey = $charsArray[$k] + $productKey
            $last = $k
        }
 
        if ($isNKey) {
            $part1 = $productKey.Substring(1, $last)
            $part2 = $productKey.Substring(1, $productKey.Length-1)
            if ($last -eq 0) {
                $productKey = "N" + $part2
            }
            else {
                $productKey = $part2.Insert($part2.IndexOf($part1) + $part1.Length, "N")
            }
        }
 
        $productKey = $productKey.Insert(20, "-").Insert(15, "-").Insert(10, "-").Insert(5, "-")
    } 
    catch {
        $productkey = "Cannot decode product key."
    }
 
    $productKey
}
```

{% endcode %}


# Einspielen der bereitgestellten Reports

Download via <https://download.ruthardt.eu/plustools/timeplus40/_Neutral/ArbeitszeitUndUrlaubReports.zip>

Wenn der SQL-Server Report Server erfolgreich konfiguriert ist kann zunächst die Datenquelle und anschließend über das Hochladen die einzelnen Reports (Siehe Download) eingespielt werden.

### Anlegen der Datenquelle

Es muss eine Datenquelle TimePlus-DB angelegt werden.

Diese kann anschließend aus den Freigegebenen Datasets verwendet werden

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FayRgtNrSEZJaJUZP09Gx%2Fimage.png?alt=media\&token=bf292585-4d64-4807-806b-df3ad66ed1b8)

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FJ5cAE7fwYdof5cyh1gwf%2Fimage.png?alt=media\&token=dc52cbd3-dcf7-48c3-880f-61e6f3d2b944)

### Einspielen der Datasets

Unsere Reports verwenden für eine Vielzahl an Auswertungen gemeinsame Queries, daher müssen auch die freigegebenen Datasets hochgeladen werden.

<figure><img src="https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FatThRjhHYuBK8yUmt5LG%2Fimage.png?alt=media&amp;token=1138cb87-11ea-43ea-8066-30ea425166c2" alt=""><figcaption></figcaption></figure>

Die Datasets sind die Dateien mit \*.rsd

![](https://4113619914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1CR4Cn3f1Vk9d96VcxAq%2Fuploads%2FN414HTihKD01pKFXHUBJ%2Fimage.png?alt=media\&token=2199427c-c2d5-4de1-b6f1-5a923e91b622)

### Einspielen Berichte

Zuletzt können die RDL-Dateien hochgeladen werden


# Bereinigungsskript

Dieses Skript bereinigt etliche Daten, die dadurch entstehen, wenn nachträglich Adresshierarchien gebildet werden.

```sql
-- Rechnungen die bei einer Nebenadresse sind zur Hauptadresse umhängen.
-- dies kann zum Beispiel passieren, wenn man Hierarchie Bilden verwendet 
-- und eine Hauptadresse dabei zur Nebenadresse wird.
print 'Rechnungen von Nebenadressen zur Hauptadresse umhängen'
update View_Belege
set SuperId = a.VNummer
from 
View_Belege b, View_Adressen a 
where a.id = b.SuperId and a.Haupt = 'N' and b.Belegart = 'Ausgangsrechnung'

print 'Bei Tickets, die bei Nebenadressen sind die Nebenadresse als Ansprechpartner setzen'
update View_Tickets
set [Kunde Ansprechpartner] = Kunde
from 
View_Tickets t, View_Adressen a 
where a.id = t.Kunde and a.Haupt = 'N' and t.[Kunde Ansprechpartner] is null

print 'Tickets von Nebenadressen zur Hauptadresse umhängen'
update View_Tickets
set Kunde = a.VNummer
from 
View_Tickets t, View_Adressen a 
where a.id = t.Kunde and a.Haupt = 'N'

-- Betreut von zu den Hauptadressen umhängen
print 'Betreut von Partner von Nebenadressen zur Hauptadresse umhängen'
update View_Adressen
	set [Betreut von Partner] = p.VNummer
from 
	View_Adressen, View_Adressen p
where 
	View_Adressen.[Betreut von Partner] = p.ID and p.Haupt = 'N'

print 'Betreut von Distributor von Nebenadressen zur Hauptadresse umhängen'
update View_Adressen
	set [Betreut von Distributor] = d.VNummer
from 
	View_Adressen, View_Adressen d
where 
	View_Adressen.[Betreut von Distributor] = d.ID and d.Haupt = 'N'

-- Gibt es Leistungen die beim Kunden, als Partner oder Distri nicht bei der Hauptadresse 
-- sondern beim Ansprechpartner liegen? 
-- dies kann zum Beispiel passieren, wenn man Hierarchie Bilden verwendet 
-- und eine Hauptadresse dabei zur Nebenadresse wird.
print 'Leistung von Nebenadressen zur Hauptadresse umhängen'
update View_Leistung
set superid = a.VNummer
from 
View_Leistung l, View_Adressen a 
where a.id = l.SuperId and a.Haupt = 'N'

print 'Leistungspartner von Nebenadressen zur Hauptadresse umhängen'
update View_Leistung
set Partner = a.VNummer
from 
View_Leistung l, View_Adressen a 
where a.id = l.Partner and a.Haupt = 'N'

print 'Leistungsdistributor von Nebenadressen zur Hauptadresse umhängen'
update View_Leistung
set Distributor = a.VNummer
from 
View_Leistung l, View_Adressen a 
where a.id = l.Distributor and a.Haupt = 'N'


```

Mit Vorsicht prüfen

```sql
select * from View_TicketAngebote where not Ticket in (select id from View_Tickets)
select * from View_TicketAngebotPositionen where not TicketAngebot in (select id from View_TicketAngebote)
select * from View_TicketBeobachter where not Ticket in (select id from View_Tickets)
select * from View_TicketDokumente where not Ticket in (select id from View_Tickets)
select * from View_TicketKommentare where not Ticket in (select id from View_Tickets)
select * from View_Zeitbuchung where not Ticket in (select id from View_Tickets)

-- Doppelte Beobachter löschen
delete from View_TicketBeobachter where id in
(
    select min(id) from View_TicketBeobachter group by Benutzer, Ticket having count(*) > 1
)
```


