Add machine category lookup
This commit is contained in:
@@ -14,6 +14,7 @@ import type {
|
||||
AgrarmonitorRegistrierungStatus,
|
||||
EingangsrechnungLivesearchResult,
|
||||
Logger,
|
||||
MaschinenKategorie,
|
||||
Rechnungsdaten,
|
||||
} from './types';
|
||||
|
||||
@@ -352,6 +353,26 @@ export class AgrarmonitorConnector implements AgrarmonitorConnectorResult {
|
||||
throw new Error('Ungueltige Agrarmonitor Kunden-API-Antwort');
|
||||
}
|
||||
|
||||
async getMaschinenKategorien(): Promise<MaschinenKategorie[]> {
|
||||
const response = await this.http.get('/maschinen/kategorien');
|
||||
|
||||
await this.saveSession();
|
||||
|
||||
const document = this.parseHtmlDocument(response.data);
|
||||
const rows = Array.from(document.querySelectorAll<HTMLTableRowElement>('table#kategorien tbody tr'));
|
||||
|
||||
return rows.map(row => {
|
||||
const cells = Array.from(row.querySelectorAll<HTMLTableCellElement>('td'));
|
||||
|
||||
return {
|
||||
id: this.parseNumber(row.id),
|
||||
name: cells[0]?.textContent?.trim() ?? '',
|
||||
zugmaschine: this.parseJaNein(cells[2]?.textContent ?? ''),
|
||||
mobilSichtbar: Boolean(cells[4]?.querySelector<HTMLInputElement>('input[type="checkbox"]')?.checked),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
private createHttpClient(): AxiosInstance {
|
||||
const client = wrapper(
|
||||
axios.create({
|
||||
@@ -596,6 +617,10 @@ export class AgrarmonitorConnector implements AgrarmonitorConnectorResult {
|
||||
return Number.isFinite(numberValue) ? numberValue : 0;
|
||||
}
|
||||
|
||||
private parseJaNein(value: string): boolean {
|
||||
return value.trim().toLowerCase() === 'ja';
|
||||
}
|
||||
|
||||
private parseGermanShortDate(value: string): Date | null {
|
||||
const match = value.trim().match(/^(\d{2})\.(\d{2})\.(\d{2})$/);
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ export interface AgrarmonitorConnectorResult {
|
||||
setLieferscheinNummer(rechnungId: number, nummer: string): Promise<void>;
|
||||
setEingangsdatum(rechnungId: number, datum: Date): Promise<boolean>;
|
||||
getCustomerById(id: number): Promise<AgrarmonitorApiCustomer>;
|
||||
getMaschinenKategorien(): Promise<MaschinenKategorie[]>;
|
||||
}
|
||||
|
||||
export interface AgrarmonitorFreischaltungStatus {
|
||||
@@ -129,3 +130,10 @@ export interface Rechnungsdaten {
|
||||
kundenId: number;
|
||||
adresstext: string;
|
||||
}
|
||||
|
||||
export interface MaschinenKategorie {
|
||||
id: number;
|
||||
name: string;
|
||||
zugmaschine: boolean;
|
||||
mobilSichtbar: boolean;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user