Gutschriften Phase 3a: Firmenstammdaten (Absender) fuer PDF/ZUGFeRD
Neues CompanyProfile-Modell (Einzel-Zeile) + Migration (IF NOT EXISTS): Firmenname, Anschrift, USt-IdNr, Steuernummer, Handelsregister, Geschaeftsfuehrer, Kontakt, IBAN/BIC/Bank. Fliesst spaeter in Gutschrift-PDF + ZUGFeRD-Verkaeuferdaten ein. Backend: Service (getOrCreate/update mit Feld-Whitelist), Controller, Routes GET/PUT /api/company-profile (settings:read/update), auditiert. Frontend: Settings-Seite 'Firmenstammdaten (Absender)' (/settings/company-profile) mit Firma/Anschrift, Steuer/Register, Kontakt/Bank. Typ + companyProfileApi + Menue-Eintrag. Phase 3b (PDF + ZUGFeRD-Erzeugung) folgt darauf auf. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import axios from 'axios';
|
||||
import type { ApiResponse, Customer, Contract, ContractTask, ContractTaskSubtask, ContractTaskStatus, SalesPlatform, CancellationPeriod, ContractDuration, ContractCategory, Provider, Tariff, User, Address, BankCard, IdentityDocument, Meter, MeterReading, Invoice, Role, PortalSettings, CustomerRepresentative, CustomerSummary, CustomerReferrals, CreditNote, CreditNoteDefaults, CreditNoteNumberRange, ContractHistoryEntry, AuditLog, AuditSensitivity, AuditRetentionPolicy, CustomerConsent, ConsentType, ConsentStatus, DataDeletionRequest, DeletionRequestStatus, GDPRDashboardStats, RepresentativeAuthorization } from '../types';
|
||||
import type { ApiResponse, Customer, Contract, ContractTask, ContractTaskSubtask, ContractTaskStatus, SalesPlatform, CancellationPeriod, ContractDuration, ContractCategory, Provider, Tariff, User, Address, BankCard, IdentityDocument, Meter, MeterReading, Invoice, Role, PortalSettings, CustomerRepresentative, CustomerSummary, CustomerReferrals, CreditNote, CreditNoteDefaults, CreditNoteNumberRange, CompanyProfile, ContractHistoryEntry, AuditLog, AuditSensitivity, AuditRetentionPolicy, CustomerConsent, ConsentType, ConsentStatus, DataDeletionRequest, DeletionRequestStatus, GDPRDashboardStats, RepresentativeAuthorization } from '../types';
|
||||
|
||||
// ============================================================================
|
||||
// In-Memory-Token-Store
|
||||
@@ -263,6 +263,18 @@ export const referralApi = {
|
||||
},
|
||||
};
|
||||
|
||||
// Firmenstammdaten (Absender für Gutschrift-PDF/ZUGFeRD)
|
||||
export const companyProfileApi = {
|
||||
get: async () => {
|
||||
const res = await api.get<ApiResponse<CompanyProfile>>('/company-profile');
|
||||
return res.data;
|
||||
},
|
||||
update: async (payload: Partial<CompanyProfile>) => {
|
||||
const res = await api.put<ApiResponse<CompanyProfile>>('/company-profile', payload);
|
||||
return res.data;
|
||||
},
|
||||
};
|
||||
|
||||
// Gutschriften (Subventionen am Vertrag)
|
||||
export const creditNoteApi = {
|
||||
listByContract: async (contractId: number) => {
|
||||
|
||||
Reference in New Issue
Block a user