Arbeitszeit: Zeitbuchungen anlegen, aendern und loeschen
createZeitbuchung, updateZeitbuchung und deleteZeitbuchung buchen Taetigkeitsbloecke und Pausen ueber module/arbeitszeit/api/. Die erste Buchung eines Tages legt per nachtragen.php die Schicht an, weitere Buchungen kommen in die vorhandene Schicht, die bei Bedarf verlaengert wird. Die Kostenstelle wird an die Notiz gehaengt. Unbekannte Taetigkeiten werden vorher abgelehnt, weil Agrarmonitor sie ohne Fehler speichert. Ablehnungen kommen als ZeitbuchungError mit Grund. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6db6c5b278
commit
d703e46125
21 files changed
+1920
-16
No files matched your search
Vendored
+59
-1
@@ -1,9 +1,10 @@
|
||||
import { type AxiosInstance } from 'axios';
|
||||
import type { AgrarmonitorApiCustomer, AgrarmonitorConnectorOptions, AgrarmonitorConnectorResult, AgrarmonitorDeviceRegistrationOptions, AgrarmonitorDeviceRegistrationResult, AgrarmonitorFetchCustomersOptions, AgrarmonitorFreischaltungStatus, AgrarmonitorKunde2, AgrarmonitorRegistrierungStatus, Artikel, ArtikelEinheit, ArtikelKategorie, EingangsrechnungLivesearchResult, Firma, Maschine, MaschineMitGruppe, MaschinenKategorie, Mitarbeiter, Rechnungsdaten, Taetigkeit } from './types';
|
||||
import type { AgrarmonitorApiCustomer, AgrarmonitorConnectorOptions, AgrarmonitorConnectorResult, AgrarmonitorDeviceRegistrationOptions, AgrarmonitorDeviceRegistrationResult, AgrarmonitorFetchCustomersOptions, AgrarmonitorFreischaltungStatus, AgrarmonitorKunde2, AgrarmonitorRegistrierungStatus, Artikel, ArtikelEinheit, ArtikelKategorie, EingangsrechnungLivesearchResult, Firma, Maschine, MaschineMitGruppe, MaschinenKategorie, Mitarbeiter, Rechnungsdaten, Taetigkeit, ZeitbuchungDaten } from './types';
|
||||
export declare class AgrarmonitorConnector implements AgrarmonitorConnectorResult {
|
||||
private readonly options;
|
||||
http: AxiosInstance;
|
||||
private static readonly maxLivesearchSeiten;
|
||||
private static readonly berlinFormat;
|
||||
private static readonly s3DateienBaseUrl;
|
||||
private readonly baseUrl;
|
||||
private readonly apiBaseUrl;
|
||||
@@ -44,6 +45,63 @@ export declare class AgrarmonitorConnector implements AgrarmonitorConnectorResul
|
||||
getArtikel(artikelGruppe: number, suchstring?: string): Promise<Artikel[]>;
|
||||
getMitarbeiter(suchstring?: string, mitarbeitergruppe?: number): Promise<Mitarbeiter[]>;
|
||||
getTaetigkeiten(): Promise<Taetigkeit[]>;
|
||||
/**
|
||||
* Bucht einen Taetigkeitsblock oder eine Pause. Gibt es fuer Mitarbeiter und
|
||||
* Arbeitstag noch keine Schicht, legt `nachtragen.php` Schicht und Verteilung
|
||||
* an (Pausen brauchen eine vorhandene Schicht). Sonst kommt die Buchung in die
|
||||
* passende Schicht, die bei Bedarf verlaengert wird.
|
||||
*/
|
||||
createZeitbuchung(daten: ZeitbuchungDaten): Promise<{
|
||||
ref: string;
|
||||
}>;
|
||||
updateZeitbuchung(ref: string, daten: ZeitbuchungDaten): Promise<void>;
|
||||
deleteZeitbuchung(ref: string): Promise<void>;
|
||||
private zeitbuchungAufbereiten;
|
||||
/** Rundet auf die volle Minute - Agrarmonitor speichert keine Sekunden. */
|
||||
private zeitpunkt;
|
||||
/** YYYY-MM-DD HH:MM -> dd.mm.yy (HH:MM) */
|
||||
private vergleichZuFormular;
|
||||
private zeitbuchungRef;
|
||||
private parseZeitbuchungRef;
|
||||
private ladeTagesansicht;
|
||||
private ladeSchichten;
|
||||
private ladeSchicht;
|
||||
/** Schicht, die sich mit der Buchung ueberschneidet, sonst die letzte davor, sonst die erste. */
|
||||
private passendeSchicht;
|
||||
/** Neue Verteilungen verlaengern die Schicht in Agrarmonitor nicht von selbst. */
|
||||
private schichtErweitern;
|
||||
private schichtSetzen;
|
||||
/**
|
||||
* Erste Buchung des Tages: nachtragen.php legt Schicht und Verteilung an,
|
||||
* liefert aber keine ID. Die Verteilung wird danach in der Tagesansicht gesucht.
|
||||
*/
|
||||
private taetigkeitNachtragen;
|
||||
/**
|
||||
* editVerteilungForm.php mit shiftID legt sofort eine leere Verteilung an
|
||||
* (das Agrarmonitor-UI loescht sie bei "Abbrechen"). Schlaegt das Speichern
|
||||
* fehl, wird dieser Platzhalter wieder entfernt.
|
||||
*/
|
||||
private verteilungAnlegen;
|
||||
private ladeVerteilungFormular;
|
||||
private verteilungSpeichern;
|
||||
/** Wie bei Verteilungen legt editPauseForm.php mit shiftID sofort eine Pause an. */
|
||||
private pauseAnlegen;
|
||||
private pauseSpeichern;
|
||||
/**
|
||||
* JSON-POST an die Arbeitszeit-API. 4xx (z. B. 422 mit Grund im Body) wird
|
||||
* als ZeitbuchungError geworfen; Netzwerk- und 5xx-Fehler bleiben Axios-Fehler.
|
||||
*/
|
||||
private zeitbuchungPost;
|
||||
private zeitbuchungAntwortPruefen;
|
||||
/** 422-Antworten sehen so aus: {"verteilungForm":"ganzertag must be present"} */
|
||||
private zeitbuchungGrund;
|
||||
/**
|
||||
* Agrarmonitor speichert auch unbekannte oder inaktive Taetigkeits-IDs (dann
|
||||
* ohne Taetigkeit). Deshalb gegen die Auswahl im Buchungsformular pruefen.
|
||||
*/
|
||||
private taetigkeitPruefen;
|
||||
private selectedValue;
|
||||
private normalisiereText;
|
||||
/**
|
||||
* Laedt eine Livesearch-Liste Seite fuer Seite. Die Seitenzahl steht in
|
||||
* `.pagination[data-pages]`; zusaetzlich bricht die Schleife ab, sobald eine
|
||||
|
||||
Reference in new issue
Block a user