added place to telecommunication, added contract documents, added invoice to other contracts

This commit is contained in:
2026-03-25 16:55:48 +01:00
parent eaa94e766a
commit 3dd4f7b656
30 changed files with 3424 additions and 90 deletions
@@ -288,6 +288,9 @@ export default function ContractForm() {
routerSerialNumber: c.internetDetails?.routerSerialNumber || '',
installationDate: c.internetDetails?.installationDate ? c.internetDetails.installationDate.split('T')[0] : '',
internetUsername: c.internetDetails?.internetUsername || '',
propertyType: c.internetDetails?.propertyType || '',
propertyLocation: c.internetDetails?.propertyLocation || '',
connectionLocation: c.internetDetails?.connectionLocation || '',
homeId: c.internetDetails?.homeId || '',
activationCode: c.internetDetails?.activationCode || '',
// Mobile details
@@ -531,6 +534,10 @@ export default function ContractForm() {
// Internet-Zugangsdaten
internetUsername: emptyToNull(data.internetUsername),
internetPassword: data.internetPassword || undefined, // Passwort: undefined = nicht ändern
// Objekt & Lage
propertyType: emptyToNull(data.propertyType),
propertyLocation: emptyToNull(data.propertyLocation),
connectionLocation: emptyToNull(data.connectionLocation),
// Glasfaser-spezifisch
homeId: emptyToNull(data.homeId),
// Vodafone DSL/Kabel spezifisch
@@ -1027,6 +1034,65 @@ export default function ContractForm() {
value={watch('installationDate') || ''}
onClear={() => setValue('installationDate', '')}
/>
</div>
{/* Objekt & Lage */}
<h4 className="text-sm font-medium text-gray-700 mt-4 mb-2">Objekt & Lage</h4>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
<Select
label="Objekttyp"
{...register('propertyType')}
options={[
{ value: '', label: 'Bitte wählen...' },
{ value: 'Mehrparteienhaus', label: 'Mehrparteienhaus' },
{ value: 'Freistehendes Haus', label: 'Freistehendes Haus' },
{ value: 'Doppelhaushälfte', label: 'Doppelhaushälfte' },
{ value: 'Reihenhaus', label: 'Reihenhaus' },
{ value: 'Wohnung', label: 'Wohnung' },
{ value: 'Bürogebäude', label: 'Bürogebäude' },
{ value: 'Gewerbeeinheit', label: 'Gewerbeeinheit' },
]}
/>
<Select
label="Lage"
{...register('propertyLocation')}
options={[
{ value: '', label: 'Bitte wählen...' },
{ value: 'Vorderhaus', label: 'Vorderhaus' },
{ value: 'Hinterhaus', label: 'Hinterhaus' },
{ value: 'Links', label: 'Links' },
{ value: 'Rechts', label: 'Rechts' },
{ value: 'Mitte', label: 'Mitte' },
{ value: 'Keller', label: 'Keller' },
{ value: 'Souterrain', label: 'Souterrain' },
{ value: 'Erdgeschoss', label: 'Erdgeschoss' },
...[...Array(25)].map((_, i) => ({ value: `${i + 1}. OG`, label: `${i + 1}. Obergeschoss` })),
{ value: 'Dachgeschoss', label: 'Dachgeschoss' },
]}
/>
<Select
label="Lage des Anschlusses"
{...register('connectionLocation')}
options={[
{ value: '', label: 'Bitte wählen...' },
{ value: 'Flur', label: 'Flur' },
{ value: 'Wohnzimmer', label: 'Wohnzimmer' },
{ value: 'Schlafzimmer', label: 'Schlafzimmer' },
{ value: 'Kinderzimmer', label: 'Kinderzimmer' },
{ value: 'Küche', label: 'Küche' },
{ value: 'Büro', label: 'Büro' },
{ value: 'HWR', label: 'Hauswirtschaftsraum (HWR)' },
{ value: 'Hausanschlussraum', label: 'Hausanschlussraum' },
{ value: 'Abstellraum', label: 'Abstellraum' },
{ value: 'Garage', label: 'Garage' },
{ value: 'Serverraum', label: 'Serverraum' },
{ value: 'Empfang', label: 'Empfang / Rezeption' },
{ value: 'Keller', label: 'Keller' },
]}
/>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-4">
{/* HomeID nur bei Glasfaser */}
{contractType === 'FIBER' && (
<Input label="Home-ID" {...register('homeId')} />