Energievertrag: Ankreuzfeld "Keine Bonis erwuenscht"
Neues Feld EnergyContractDetails.noBonusDesired (Boolean, default false) + Migration. Checkbox im Vertragsformular (Strom/Gas, bei den Bonus-Feldern), Anzeige im Vertragsdetail wenn gesetzt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
-- "Keine Bonis erwünscht": Kunde möchte bei diesem Energievertrag keine Bonis.
|
||||||
|
ALTER TABLE `EnergyContractDetails` ADD COLUMN IF NOT EXISTS `noBonusDesired` BOOLEAN NOT NULL DEFAULT false;
|
||||||
@@ -923,6 +923,7 @@ model EnergyContractDetails {
|
|||||||
// `instantBonus` (Annahme: meistgenutzte Variante).
|
// `instantBonus` (Annahme: meistgenutzte Variante).
|
||||||
instantBonus Float? // Sofort-Bonus
|
instantBonus Float? // Sofort-Bonus
|
||||||
newCustomerBonus Float? // Neukunden-Bonus
|
newCustomerBonus Float? // Neukunden-Bonus
|
||||||
|
noBonusDesired Boolean @default(false) // Kunde wünscht keine Bonis
|
||||||
previousProviderName String?
|
previousProviderName String?
|
||||||
previousCustomerNumber String?
|
previousCustomerNumber String?
|
||||||
invoices Invoice[] // Rechnungen
|
invoices Invoice[] // Rechnungen
|
||||||
|
|||||||
@@ -255,6 +255,7 @@ interface ContractCreateData {
|
|||||||
unitPrice?: number;
|
unitPrice?: number;
|
||||||
instantBonus?: number;
|
instantBonus?: number;
|
||||||
newCustomerBonus?: number;
|
newCustomerBonus?: number;
|
||||||
|
noBonusDesired?: boolean;
|
||||||
previousProviderName?: string;
|
previousProviderName?: string;
|
||||||
previousCustomerNumber?: string;
|
previousCustomerNumber?: string;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2825,6 +2825,12 @@ export default function ContractDetail() {
|
|||||||
</div>
|
</div>
|
||||||
) : null;
|
) : null;
|
||||||
})()}
|
})()}
|
||||||
|
{c.energyDetails.noBonusDesired && (
|
||||||
|
<div>
|
||||||
|
<dt className="text-sm text-gray-500">Bonis</dt>
|
||||||
|
<dd className="text-orange-700 font-medium">Keine Bonis erwünscht</dd>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{c.energyDetails.annualConsumption ? (
|
{c.energyDetails.annualConsumption ? (
|
||||||
<div>
|
<div>
|
||||||
<dt className="text-sm text-gray-500">
|
<dt className="text-sm text-gray-500">
|
||||||
|
|||||||
@@ -356,6 +356,7 @@ export default function ContractForm() {
|
|||||||
unitPriceNt: c.energyDetails?.unitPriceNt || '',
|
unitPriceNt: c.energyDetails?.unitPriceNt || '',
|
||||||
instantBonus: c.energyDetails?.instantBonus || '',
|
instantBonus: c.energyDetails?.instantBonus || '',
|
||||||
newCustomerBonus: c.energyDetails?.newCustomerBonus || '',
|
newCustomerBonus: c.energyDetails?.newCustomerBonus || '',
|
||||||
|
noBonusDesired: c.energyDetails?.noBonusDesired || false,
|
||||||
// Internet details
|
// Internet details
|
||||||
downloadSpeed: c.internetDetails?.downloadSpeed || '',
|
downloadSpeed: c.internetDetails?.downloadSpeed || '',
|
||||||
uploadSpeed: c.internetDetails?.uploadSpeed || '',
|
uploadSpeed: c.internetDetails?.uploadSpeed || '',
|
||||||
@@ -679,6 +680,7 @@ export default function ContractForm() {
|
|||||||
unitPriceNt: data.unitPriceNt ? parseFloat(data.unitPriceNt) : null,
|
unitPriceNt: data.unitPriceNt ? parseFloat(data.unitPriceNt) : null,
|
||||||
instantBonus: data.instantBonus ? parseFloat(data.instantBonus) : null,
|
instantBonus: data.instantBonus ? parseFloat(data.instantBonus) : null,
|
||||||
newCustomerBonus: data.newCustomerBonus ? parseFloat(data.newCustomerBonus) : null,
|
newCustomerBonus: data.newCustomerBonus ? parseFloat(data.newCustomerBonus) : null,
|
||||||
|
noBonusDesired: !!data.noBonusDesired,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1558,6 +1560,11 @@ export default function ContractForm() {
|
|||||||
<Input label="Neukunden-Bonus (€)" type="number" step="0.01" {...register('newCustomerBonus')} />
|
<Input label="Neukunden-Bonus (€)" type="number" step="0.01" {...register('newCustomerBonus')} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<label className="flex items-center gap-2 mt-3">
|
||||||
|
<input type="checkbox" {...register('noBonusDesired')} className="rounded" />
|
||||||
|
<span className="text-sm text-gray-700">Keine Bonis erwünscht</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
{/* Hinweis für Zählerstände und Rechnungen */}
|
{/* Hinweis für Zählerstände und Rechnungen */}
|
||||||
{isEdit && (
|
{isEdit && (
|
||||||
<div className="mt-4 p-3 bg-blue-50 border border-blue-200 rounded-lg text-sm text-blue-700">
|
<div className="mt-4 p-3 bg-blue-50 border border-blue-200 rounded-lg text-sm text-blue-700">
|
||||||
|
|||||||
@@ -661,6 +661,7 @@ export interface EnergyContractDetails {
|
|||||||
unitPriceNt?: number; // €/kWh NT-Preis (nur bei Zweitarifzähler)
|
unitPriceNt?: number; // €/kWh NT-Preis (nur bei Zweitarifzähler)
|
||||||
instantBonus?: number; // Sofort-Bonus
|
instantBonus?: number; // Sofort-Bonus
|
||||||
newCustomerBonus?: number; // Neukunden-Bonus
|
newCustomerBonus?: number; // Neukunden-Bonus
|
||||||
|
noBonusDesired?: boolean; // Kunde wünscht keine Bonis
|
||||||
previousProviderName?: string;
|
previousProviderName?: string;
|
||||||
previousCustomerNumber?: string;
|
previousCustomerNumber?: string;
|
||||||
invoices?: Invoice[]; // Rechnungen
|
invoices?: Invoice[]; // Rechnungen
|
||||||
|
|||||||
Reference in New Issue
Block a user