contractnumber provider added, old provider number field only if no previous contact exist
This commit is contained in:
+1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
-715
File diff suppressed because one or more lines are too long
+715
File diff suppressed because one or more lines are too long
Vendored
+2
-2
@@ -5,8 +5,8 @@
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>OpenCRM</title>
|
||||
<script type="module" crossorigin src="/assets/index-BUCLPhDH.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-BTfzRMgT.css">
|
||||
<script type="module" crossorigin src="/assets/index-OTeAOPxR.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-B06MVODt.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
@@ -105,6 +105,39 @@ export default function ContractDetailModal({ contractId, isOpen, onClose }: Con
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.contractNumberAtProvider && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Vertragsnummer beim Anbieter</dt>
|
||||
<dd className="font-mono flex items-center gap-1">
|
||||
{c.contractNumberAtProvider}
|
||||
<CopyButton value={c.contractNumberAtProvider} />
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Card>
|
||||
)}
|
||||
|
||||
{/* Zähler (nur bei Strom/Gas) */}
|
||||
{(c.type === 'ELECTRICITY' || c.type === 'GAS') && c.energyDetails?.meter && (
|
||||
<Card title="Zähler">
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Zählernummer</dt>
|
||||
<dd className="font-mono flex items-center gap-1">
|
||||
{c.energyDetails.meter.meterNumber}
|
||||
<CopyButton value={c.energyDetails.meter.meterNumber} />
|
||||
</dd>
|
||||
</div>
|
||||
{c.energyDetails.maloId && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">MaLo-ID</dt>
|
||||
<dd className="font-mono flex items-center gap-1">
|
||||
{c.energyDetails.maloId}
|
||||
<CopyButton value={c.energyDetails.maloId} />
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Card>
|
||||
)}
|
||||
|
||||
@@ -1569,6 +1569,12 @@ export default function ContractDetail() {
|
||||
<dd className="font-mono">{c.previousContract.customerNumberAtProvider}</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.previousContract.contractNumberAtProvider && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Vertragsnummer</dt>
|
||||
<dd className="font-mono">{c.previousContract.contractNumberAtProvider}</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.previousContract.portalUsername && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Zugangsdaten</dt>
|
||||
@@ -1579,6 +1585,38 @@ export default function ContractDetail() {
|
||||
</Card>
|
||||
)}
|
||||
|
||||
{/* Altanbieter-Info (nur wenn KEIN Vorgängervertrag aber Altanbieter-Daten vorhanden) */}
|
||||
{!c.previousContract && (c.previousProvider || c.previousCustomerNumber || c.previousContractNumber) && (
|
||||
<Card className="mb-6 border-l-4 border-l-gray-400" title="Altanbieter">
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
|
||||
{c.previousProvider && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Anbieter</dt>
|
||||
<dd>{c.previousProvider.name}</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.previousCustomerNumber && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Kundennummer</dt>
|
||||
<dd className="font-mono flex items-center gap-1">
|
||||
{c.previousCustomerNumber}
|
||||
<CopyButton value={c.previousCustomerNumber} />
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.previousContractNumber && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Vertragsnummer</dt>
|
||||
<dd className="font-mono flex items-center gap-1">
|
||||
{c.previousContractNumber}
|
||||
<CopyButton value={c.previousContractNumber} />
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Card>
|
||||
)}
|
||||
|
||||
{/* Cancellation Confirmation Warning */}
|
||||
{c.cancellationConfirmationDate && (
|
||||
<div className="mb-6 p-4 bg-red-50 border-2 border-red-400 rounded-lg flex items-start gap-3">
|
||||
@@ -1635,6 +1673,15 @@ export default function ContractDetail() {
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.contractNumberAtProvider && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Vertragsnummer</dt>
|
||||
<dd className="font-mono flex items-center gap-1">
|
||||
{c.contractNumberAtProvider}
|
||||
<CopyButton value={c.contractNumberAtProvider} />
|
||||
</dd>
|
||||
</div>
|
||||
)}
|
||||
{c.salesPlatform && (
|
||||
<div>
|
||||
<dt className="text-sm text-gray-500">Vertriebsplattform</dt>
|
||||
|
||||
@@ -77,6 +77,7 @@ export default function ContractForm() {
|
||||
|
||||
const contractType = watch('type') as ContractType;
|
||||
const customerId = watch('customerId');
|
||||
const previousContractId = watch('previousContractId');
|
||||
|
||||
// Fetch existing contract for edit
|
||||
const { data: contract } = useQuery({
|
||||
@@ -255,6 +256,7 @@ export default function ContractForm() {
|
||||
providerName: c.providerName || '',
|
||||
tariffName: c.tariffName || '',
|
||||
customerNumberAtProvider: c.customerNumberAtProvider || '',
|
||||
contractNumberAtProvider: c.contractNumberAtProvider || '',
|
||||
priceFirst12Months: c.priceFirst12Months || '',
|
||||
priceFrom13Months: c.priceFrom13Months || '',
|
||||
priceAfter24Months: c.priceAfter24Months || '',
|
||||
@@ -273,8 +275,6 @@ export default function ContractForm() {
|
||||
basePrice: c.energyDetails?.basePrice || '',
|
||||
unitPrice: c.energyDetails?.unitPrice || '',
|
||||
bonus: c.energyDetails?.bonus || '',
|
||||
previousProviderName: c.energyDetails?.previousProviderName || '',
|
||||
previousCustomerNumber: c.energyDetails?.previousCustomerNumber || '',
|
||||
// Internet details
|
||||
downloadSpeed: c.internetDetails?.downloadSpeed || '',
|
||||
uploadSpeed: c.internetDetails?.uploadSpeed || '',
|
||||
@@ -317,6 +317,10 @@ export default function ContractForm() {
|
||||
wasSpecialCancellation: c.wasSpecialCancellation || false,
|
||||
// Vorgänger-Vertrag
|
||||
previousContractId: c.previousContractId?.toString() || '',
|
||||
// Altanbieter (nur wenn kein Vorgängervertrag)
|
||||
previousProviderId: c.previousProviderId?.toString() || '',
|
||||
previousCustomerNumber: c.previousCustomerNumber || '',
|
||||
previousContractNumber: c.previousContractNumber || '',
|
||||
});
|
||||
|
||||
// Load simCards if available
|
||||
@@ -473,6 +477,7 @@ export default function ContractForm() {
|
||||
providerName: emptyToNull(data.providerName),
|
||||
tariffName: emptyToNull(data.tariffName),
|
||||
customerNumberAtProvider: emptyToNull(data.customerNumberAtProvider),
|
||||
contractNumberAtProvider: emptyToNull(data.contractNumberAtProvider),
|
||||
priceFirst12Months: emptyToNull(data.priceFirst12Months),
|
||||
priceFrom13Months: emptyToNull(data.priceFrom13Months),
|
||||
priceAfter24Months: emptyToNull(data.priceAfter24Months),
|
||||
@@ -490,6 +495,10 @@ export default function ContractForm() {
|
||||
cancellationConfirmationOptionsDate: data.cancellationConfirmationOptionsDate ? new Date(data.cancellationConfirmationOptionsDate) : null,
|
||||
wasSpecialCancellation: data.wasSpecialCancellation || false,
|
||||
previousContractId: safeParseInt(data.previousContractId) ?? null,
|
||||
// Altanbieter (nur wenn kein Vorgängervertrag)
|
||||
previousProviderId: data.previousContractId ? null : (safeParseInt(data.previousProviderId) ?? null),
|
||||
previousCustomerNumber: data.previousContractId ? null : emptyToNull(data.previousCustomerNumber),
|
||||
previousContractNumber: data.previousContractId ? null : emptyToNull(data.previousContractNumber),
|
||||
};
|
||||
|
||||
// Add type-specific details
|
||||
@@ -502,8 +511,6 @@ export default function ContractForm() {
|
||||
basePrice: data.basePrice ? parseFloat(data.basePrice) : null,
|
||||
unitPrice: data.unitPrice ? parseFloat(data.unitPrice) : null,
|
||||
bonus: data.bonus ? parseFloat(data.bonus) : null,
|
||||
previousProviderName: emptyToNull(data.previousProviderName),
|
||||
previousCustomerNumber: emptyToNull(data.previousCustomerNumber),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -710,6 +717,29 @@ export default function ContractForm() {
|
||||
placeholder="Keinen Vorgänger auswählen"
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* Altanbieter-Daten (nur wenn KEIN Vorgängervertrag ausgewählt) */}
|
||||
{customerId && !previousContractId && (
|
||||
<div className="mt-4 p-4 bg-gray-50 rounded-lg border border-gray-200">
|
||||
<h4 className="text-sm font-medium text-gray-700 mb-3">Altanbieter-Daten</h4>
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
<Select
|
||||
label="Altanbieter"
|
||||
{...register('previousProviderId')}
|
||||
options={providers.map((p) => ({ value: p.id, label: p.name }))}
|
||||
placeholder="Bitte wählen..."
|
||||
/>
|
||||
<Input
|
||||
label="Kundennr. beim Altanbieter"
|
||||
{...register('previousCustomerNumber')}
|
||||
/>
|
||||
<Input
|
||||
label="Vertragsnr. beim Altanbieter"
|
||||
{...register('previousContractNumber')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
@@ -775,6 +805,7 @@ export default function ContractForm() {
|
||||
disabled={!selectedProviderId}
|
||||
/>
|
||||
<Input label="Kundennummer beim Anbieter" {...register('customerNumberAtProvider')} />
|
||||
<Input label="Vertragsnummer beim Anbieter" {...register('contractNumberAtProvider')} />
|
||||
<Input label="Provision (€)" type="number" step="0.01" {...register('commission')} />
|
||||
<Input label="Preis erste 12 Monate" {...register('priceFirst12Months')} placeholder="z.B. 29,99 €/Monat" />
|
||||
<Input label="Preis ab 13. Monat" {...register('priceFrom13Months')} placeholder="z.B. 39,99 €/Monat" />
|
||||
@@ -943,8 +974,6 @@ export default function ContractForm() {
|
||||
{...register('unitPrice')}
|
||||
/>
|
||||
<Input label="Bonus (€)" type="number" step="0.01" {...register('bonus')} />
|
||||
<Input label="Vorversorger" {...register('previousProviderName')} />
|
||||
<Input label="Kundennr. beim Vorversorger" {...register('previousCustomerNumber')} />
|
||||
</div>
|
||||
|
||||
{/* Hinweis für Zählerstände und Rechnungen */}
|
||||
|
||||
@@ -297,6 +297,11 @@ export interface Contract {
|
||||
salesPlatform?: SalesPlatform;
|
||||
previousContractId?: number;
|
||||
previousContract?: Contract;
|
||||
// Altanbieter (nur wenn kein Vorgängervertrag)
|
||||
previousProviderId?: number;
|
||||
previousProvider?: Provider;
|
||||
previousCustomerNumber?: string;
|
||||
previousContractNumber?: string;
|
||||
providerId?: number;
|
||||
provider?: Provider;
|
||||
tariffId?: number;
|
||||
@@ -308,6 +313,7 @@ export interface Contract {
|
||||
providerName?: string;
|
||||
tariffName?: string;
|
||||
customerNumberAtProvider?: string;
|
||||
contractNumberAtProvider?: string;
|
||||
priceFirst12Months?: string;
|
||||
priceFrom13Months?: string;
|
||||
priceAfter24Months?: string;
|
||||
|
||||
Reference in New Issue
Block a user