cleanup
parent
88655172b2
commit
97e389bf90
|
|
@ -15,7 +15,7 @@ class BuyContractsSheet extends ContractsSheet
|
|||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
['Kaufverträge ' . $this->year],
|
||||
['Ankaufsverträge ' . $this->year],
|
||||
[
|
||||
'Datum',
|
||||
'Auto',
|
||||
|
|
@ -39,6 +39,6 @@ class BuyContractsSheet extends ContractsSheet
|
|||
|
||||
public function title(): string
|
||||
{
|
||||
return 'Ankaufverträge';
|
||||
return 'Ankaufsverträge';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class SellContractsSheet extends ContractsSheet
|
|||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
['Verkaufverträge ' . $this->year],
|
||||
['Verkaufsverträge ' . $this->year],
|
||||
[
|
||||
'Datum',
|
||||
'Auto',
|
||||
|
|
@ -46,13 +46,6 @@ class SellContractsSheet extends ContractsSheet
|
|||
|
||||
public function title(): string
|
||||
{
|
||||
return 'Verkaufverträge';
|
||||
}
|
||||
|
||||
public static function afterSheet(AfterSheet $event)
|
||||
{
|
||||
$event->sheet->appendRows([
|
||||
[null, null, null, null, 'Total', 1112, 100, 1002],
|
||||
], $event);
|
||||
return 'Verkaufsverträge';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -200,10 +200,9 @@ class CarController extends Controller
|
|||
'stammnummer' => $car->stammnummer,
|
||||
'vin' => $car->vin,
|
||||
'buy_contract' => $this->getContractFields($car->latestBuyContract()),
|
||||
'sell_contract' => $car->isSold() ? $this->getContractFields($car->latestSellContract()) : null,
|
||||
'sell_contract' => $this->getContractFields($car->latestSellContract()),
|
||||
'car_model' => $car->carModel->only('name'),
|
||||
'name' => $car->name,
|
||||
'initial_date' => $car->initial_date_formatted,
|
||||
'name' => $car->name_with_year,
|
||||
'deleted_at' => $car->deleted_at,
|
||||
'link' => route('cars.show', $car),
|
||||
]),
|
||||
|
|
@ -340,7 +339,7 @@ class CarController extends Controller
|
|||
{
|
||||
return [
|
||||
'stammnummer' => ['required', 'unique:cars', 'string', 'size:11', 'regex:/[0-9]{3}[.][0-9]{3}[.][0-9]{3}/i'],
|
||||
'vin' => ['required', 'unique:cars', 'string', 'size:17', 'min:17', 'max:17'],
|
||||
'vin' => ['required', 'unique:cars', 'string', 'size:17'],
|
||||
'initial_date' => ['required', 'date'],
|
||||
'last_check_date' => ['required', 'date'],
|
||||
'colour' => ['nullable', 'max:75'],
|
||||
|
|
@ -426,7 +425,7 @@ class CarController extends Controller
|
|||
$car->update(
|
||||
$request->validate([
|
||||
'stammnummer' => ['required', 'unique:cars,stammnummer,' . $car->id, 'string', 'size:11', 'regex:/[0-9]{3}[.][0-9]{3}[.][0-9]{3}/i'],
|
||||
'vin' => ['required', 'unique:cars,vin,' . $car->id, 'string', 'size:17', 'min:17', 'max:17'],
|
||||
'vin' => ['required', 'unique:cars,vin,' . $car->id, 'string', 'size:17'],
|
||||
'initial_date' => ['required', 'date'],
|
||||
'last_check_date' => ['required', 'date'],
|
||||
'colour' => ['nullable', 'max:75'],
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@ use App\Models\Car;
|
|||
use Inertia\Inertia;
|
||||
use App\Models\Brand;
|
||||
use App\Models\Contact;
|
||||
use App\Models\Payment;
|
||||
use App\Models\Contract;
|
||||
use App\Enums\PaymentType;
|
||||
use App\Enums\ContractType;
|
||||
use App\Enums\InsuranceType;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -55,7 +57,7 @@ class ContractController extends Controller
|
|||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$type = (string)($request->get('type') ?: '1');
|
||||
$type = (string)($request->get('type') ?? '1');
|
||||
$car = Car::find($request->get('car'));
|
||||
$contact = Contact::find($request->get('contact'));
|
||||
|
||||
|
|
@ -140,6 +142,7 @@ class ContractController extends Controller
|
|||
{
|
||||
$request->merge([
|
||||
'type' => (string)$request->get('type'),
|
||||
'payment_type' => (string)$request->get('payment_type'),
|
||||
'insurance_type' => (string)$request->get('insurance_type'),
|
||||
'date' => Carbon::parse($request->get('date'))->format('Y-m-d'),
|
||||
'delivery_date' => Carbon::parse($request->get('delivery_date'))->format('Y-m-d'),
|
||||
|
|
@ -158,6 +161,20 @@ class ContractController extends Controller
|
|||
])
|
||||
);
|
||||
|
||||
$request->merge([
|
||||
'type' => (string)$request->get('payment_type'),
|
||||
'contract_id' => $contract->id,
|
||||
]);
|
||||
|
||||
Payment::create(
|
||||
$request->validate([
|
||||
'date' => ['required', 'date'],
|
||||
'amount' => ['required', 'integer'],
|
||||
'type' => ['required', 'string', Rule::in(PaymentType::getValues())],
|
||||
'contract_id' => ['required', 'exists:App\Models\Contract,id'],
|
||||
])
|
||||
);
|
||||
|
||||
session()->flash('flash.banner', 'Vertrag erstellt.');
|
||||
return Redirect::route('contracts.show', $contract);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class PaymentController extends Controller
|
|||
'date' => Carbon::parse($request->get('date'))->format('Y-m-d'),
|
||||
]);
|
||||
|
||||
$Payment = Payment::create(
|
||||
$payment = Payment::create(
|
||||
$request->validate([
|
||||
'date' => ['required', 'date'],
|
||||
'amount' => ['required', 'integer'],
|
||||
|
|
@ -35,7 +35,7 @@ class PaymentController extends Controller
|
|||
);
|
||||
|
||||
session()->flash('flash.banner', 'Einzahlung gespeichert.');
|
||||
return Redirect::route('contracts.show', $Payment->contract);
|
||||
return Redirect::route('contracts.show', $payment->contract);
|
||||
}
|
||||
|
||||
public function destroy(Request $request, Contract $contract)
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ class Contract extends Model
|
|||
|
||||
public function getTypeFormattedAttribute()
|
||||
{
|
||||
return $this->isSellContract() ? 'Kaufsvertrag' : 'Ankaufsvertrag';
|
||||
return $this->isSellContract() ? 'Kaufvertrag' : 'Ankaufsvertrag';
|
||||
}
|
||||
|
||||
public function documents()
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class RouteServiceProvider extends ServiceProvider
|
|||
*
|
||||
* @var string
|
||||
*/
|
||||
public const HOME = '/dashboard';
|
||||
public const HOME = '/';
|
||||
|
||||
/**
|
||||
* The controller namespace for the application.
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -27,13 +27,13 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@inertiajs/inertia-vue3": "^0.3.5",
|
||||
"axios": "^0.21",
|
||||
"lodash": "^4.17.21",
|
||||
"vue": "^3.0.5",
|
||||
"vue-currency-input": "^2.0.0",
|
||||
"vue-multiselect": "^3.0.0-alpha.2",
|
||||
"vue-unicons": "^3.2.1",
|
||||
"vue3-datepicker": "^0.2.4",
|
||||
"vuex": "^4.0.0",
|
||||
"axios": "^0.21",
|
||||
"lodash": "^4.17.21",
|
||||
"vue": "^3.0.5"
|
||||
"vuex": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -12,7 +12,7 @@
|
|||
<template v-else #form>
|
||||
<div class="col-span-3">
|
||||
<jet-label for="car" value="Auto" />
|
||||
<multiselect @select="onCarChange" :disabled="createCar" v-model="car" label="name" track-by="id" :options="carsChoice" class="mt-1 block w-full" placeholder="Auto auswählen" />
|
||||
<multiselect :allow-empty="false" @select="onCarChange" :disabled="createCar" v-model="car" label="name" track-by="id" :options="carsChoice" class="mt-1 block w-full" placeholder="Auto auswählen" />
|
||||
</div>
|
||||
<div class="col-span-6">
|
||||
<car-card v-if="car.id" class="mt-3 col-span-3" :car="car" hideEmpty="true" />
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
<template #header>
|
||||
<slot name="header"></slot>
|
||||
</template>
|
||||
<div class="grid grid-cols-12 gap-12 mb-8">
|
||||
<div class="xl:col-span-6 col-span-12">
|
||||
<div class="grid grid-cols-12 gap-12 mb-8 max-w-5xl mx-auto">
|
||||
<div class="xl:col-span-9 col-span-12">
|
||||
<slot name="info"></slot>
|
||||
</div>
|
||||
<div class="xl:col-span-3 xl:col-end-13 col-span-12">
|
||||
|
|
@ -13,9 +13,9 @@
|
|||
<slot name="actions"></slot>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-12 gap-12">
|
||||
<slot name="more"></slot>
|
||||
<div class="xl:col-span-9 col-span-12">
|
||||
<slot name="more"></slot>
|
||||
</div>
|
||||
</div>
|
||||
</layout>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<jet-label for="brand" value="Marke" />
|
||||
<multiselect v-model="brandSelection" @SearchChange="updateBrandSearch" @select="updateBrand" label="name" track-by="id" :options="brands" class="mt-1 block w-full border-gray-300" placeholder="Marke auswählen">
|
||||
<multiselect :allow-empty="false" v-model="brandSelection" @SearchChange="updateBrandSearch" @select="updateBrand" label="name" track-by="id" :options="brands" class="mt-1 block w-full border-gray-300" placeholder="Marke auswählen">
|
||||
<template v-slot:noResult>
|
||||
<span @click="addBrand">
|
||||
<b>{{ brandSearch }}</b> als neue Marke speichern?
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
<div v-if="brandSelection" class="col-span-6 sm:col-span-4">
|
||||
<jet-label for="model" value="Modell" />
|
||||
<multiselect v-model="car_modelSelection" @SearchChange="updateCarModelSearch" @select="updateCarModel" label="name" track-by="id" :options="carModels" class="mt-1 block w-full border-gray-300" placeholder="Modell auswählen">
|
||||
<multiselect :allow-empty="false" v-model="car_modelSelection" @SearchChange="updateCarModelSearch" @select="updateCarModel" label="name" track-by="id" :options="carModels" class="mt-1 block w-full border-gray-300" placeholder="Modell auswählen">
|
||||
<template v-slot:noResult>
|
||||
<span @click="addCarModel">
|
||||
<b>{{ modelSearch }}</b> als neues {{ brand.name }}-Modell speichern?
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
</div>
|
||||
<div class="col-span-12 sm:col-span-7">
|
||||
<jet-label for="vin" value="Chassisnummer" />
|
||||
<jet-input id="vin" type="text" class="mt-1 block w-full" v-model="form.vin" ref="vin" autocomplete="vin" />
|
||||
<jet-input id="vin" type="text" class="mt-1 block w-full" minlength="17" maxlength="17" v-model="form.vin" ref="vin" autocomplete="vin" />
|
||||
<jet-input-error :message="form.errors.vin" class="mt-2" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
</h2>
|
||||
</template>
|
||||
<template #info>
|
||||
<small-title title="Auto" class="mb-3" />
|
||||
<car-card :car="car" />
|
||||
</template>
|
||||
<template #actions>
|
||||
|
|
@ -18,24 +19,21 @@
|
|||
</div>
|
||||
</template>
|
||||
<template #more>
|
||||
<div class="xl:col-span-6 col-span-12">
|
||||
<contract-table
|
||||
:contracts="car.buy_contracts"
|
||||
:type="0"
|
||||
:carId="car.id"
|
||||
:show_upload="!car.deleted_at"
|
||||
:title="car.buy_contracts.length > 1 ? car.buy_contracts.length + ' Ankaufsverträge' : 'Ankaufsvertrag'"
|
||||
/>
|
||||
</div>
|
||||
<div class="xl:col-span-6 col-span-12">
|
||||
<contract-table
|
||||
:contracts="car.sell_contracts"
|
||||
:type="1"
|
||||
:carId="car.id"
|
||||
:show_upload="!car.deleted_at"
|
||||
:title="car.sell_contracts.length > 1 ? car.sell_contracts.length + ' Verkaufsverträge' : 'Verkaufsvertrag'"
|
||||
/>
|
||||
</div>
|
||||
<contract-table
|
||||
:contracts="car.buy_contracts"
|
||||
:type="0"
|
||||
:carId="car.id"
|
||||
:show_upload="!car.deleted_at"
|
||||
:title="car.buy_contracts.length > 1 ? car.buy_contracts.length + ' Ankaufsverträge' : 'Ankaufsvertrag'"
|
||||
/>
|
||||
<contract-table
|
||||
:contracts="car.sell_contracts"
|
||||
:type="1"
|
||||
:carId="car.id"
|
||||
class="mt-10"
|
||||
:show_upload="!car.deleted_at"
|
||||
:title="car.sell_contracts.length > 1 ? car.sell_contracts.length + ' Verkaufsverträge' : 'Verkaufsvertrag'"
|
||||
/>
|
||||
</template>
|
||||
</show-page>
|
||||
</template>
|
||||
|
|
@ -48,6 +46,7 @@ import EditButton from '@/Components/Buttons/EditButton.vue';
|
|||
import DeleteButton from '@/Components/Buttons/DeleteButton.vue';
|
||||
import RestoreButton from '@/Components/Buttons/RestoreButton.vue';
|
||||
import ContractTable from '../../Components/Contracts/ContractTable.vue';
|
||||
import SmallTitle from '../../Components/SmallTitle.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -58,6 +57,7 @@ export default {
|
|||
DeleteButton,
|
||||
RestoreButton,
|
||||
ContractTable,
|
||||
SmallTitle,
|
||||
},
|
||||
props: {
|
||||
car: Object,
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ export default {
|
|||
columns: [
|
||||
{ key: 'name', value: 'Marke & Modell', sortable: true },
|
||||
{ key: 'stammnummer', value: 'Stammnummer', sortable: true },
|
||||
{ key: 'initial_date', value: 'Inverkehrssetzung', sortable: true },
|
||||
{ key: 'buy_contract.date', value: 'Einkaufsdatum', sortable: true },
|
||||
{ key: 'buy_contract.price', value: 'Einkaufspreis', sortable: true },
|
||||
],
|
||||
|
|
@ -42,3 +41,4 @@ export default {
|
|||
},
|
||||
};
|
||||
</script>
|
||||
§
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
</template>
|
||||
|
||||
<template #info>
|
||||
<small-title title="Kontakt" class="mb-3" />
|
||||
<contact-card :contact="contact" />
|
||||
</template>
|
||||
|
||||
|
|
@ -21,24 +22,21 @@
|
|||
</template>
|
||||
|
||||
<template #more>
|
||||
<div class="xl:col-span-6 col-span-12">
|
||||
<contract-table
|
||||
:contracts="contact.buy_contracts"
|
||||
:type="0"
|
||||
:contactId="contact.id"
|
||||
:show_upload="!contact.deleted_at"
|
||||
:title="contact.buy_contracts.length > 1 ? contact.buy_contracts.length + ' Ankaufsverträge' : 'Ankaufsvertrag'"
|
||||
/>
|
||||
</div>
|
||||
<div class="xl:col-span-6 col-span-12">
|
||||
<contract-table
|
||||
:contracts="contact.sell_contracts"
|
||||
:type="1"
|
||||
:contactId="contact.id"
|
||||
:show_upload="!contact.deleted_at"
|
||||
:title="contact.sell_contracts.length > 1 ? contact.sell_contracts.length + ' Verkaufsverträge' : 'Verkaufsvertrag'"
|
||||
/>
|
||||
</div>
|
||||
<contract-table
|
||||
:contracts="contact.buy_contracts"
|
||||
:type="0"
|
||||
:contactId="contact.id"
|
||||
:show_upload="!contact.deleted_at"
|
||||
:title="contact.buy_contracts.length > 1 ? contact.buy_contracts.length + ' Ankaufsverträge' : 'Ankaufsvertrag'"
|
||||
/>
|
||||
<contract-table
|
||||
:contracts="contact.sell_contracts"
|
||||
:type="1"
|
||||
class="mt-10"
|
||||
:contactId="contact.id"
|
||||
:show_upload="!contact.deleted_at"
|
||||
:title="contact.sell_contracts.length > 1 ? contact.sell_contracts.length + ' Verkaufsverträge' : 'Verkaufsvertrag'"
|
||||
/>
|
||||
</template>
|
||||
</show-page>
|
||||
</template>
|
||||
|
|
@ -51,6 +49,7 @@ import EditButton from '@/Components/Buttons/EditButton.vue';
|
|||
import DeleteButton from '@/Components/Buttons/DeleteButton.vue';
|
||||
import RestoreButton from '@/Components/Buttons/RestoreButton.vue';
|
||||
import ContractTable from '../../Components/Contracts/ContractTable.vue';
|
||||
import SmallTitle from '../../Components/SmallTitle.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -61,6 +60,7 @@ export default {
|
|||
DeleteButton,
|
||||
RestoreButton,
|
||||
ContractTable,
|
||||
SmallTitle,
|
||||
},
|
||||
|
||||
props: {
|
||||
|
|
|
|||
|
|
@ -22,11 +22,26 @@
|
|||
</div>
|
||||
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<jet-label for="price" value="Betrag" />
|
||||
<jet-label for="price" :value="form.type === '0' ? 'Einkaufspreis' : 'Verkaufspreis'" />
|
||||
<currency-input v-model="form.price" :options="currencyOptions" id="price" class="w-full mt-1 block border-gray-300 rounded-md shadow-sm" ref="price"/>
|
||||
<jet-input-error :message="form.errors.price" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<jet-label for="amount" value="Anzahlung" />
|
||||
<currency-input v-model="form.amount" :options="currencyOptions" id="price" class="w-full mt-1 block border-gray-300 rounded-md shadow-sm" ref="amount"/>
|
||||
<jet-input-error :message="form.errors.amount" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="col-span-6 sm:col-span-4">
|
||||
<jet-label for="payment_type" value="Einzahlungsart" />
|
||||
<select v-model="form.payment_type" class="mt-1 block w-full border-gray-300 rounded-md shadow-sm">
|
||||
<option value="0" :selected="form.payment_type == '0'">Banküberweisung</option>
|
||||
<option value="1" :selected="form.payment_type == '1'">Barzahlung</option>
|
||||
</select>
|
||||
<jet-input-error :message="form.errors.type" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div v-if="form.is_sell_contract" class="col-span-6 sm:col-span-4">
|
||||
<jet-label for="insurance_type" value="Versicherung" />
|
||||
<select v-model="form.insurance_type" class="mt-1 block w-full border-gray-300 rounded-md shadow-sm">
|
||||
|
|
@ -48,7 +63,7 @@
|
|||
{{ meta.on_success }}
|
||||
</jet-action-message>
|
||||
|
||||
<jet-button :class="{ 'opacity-25': form.processing }" :disabled="form.processing">
|
||||
<jet-button :class="{ 'opacity-25': form.processing }" :disabled="form.processing || !data.contact_id || !data.car_id">
|
||||
{{ meta.button_text }}
|
||||
</jet-button>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ export default {
|
|||
car_id: this.car?.id ?? null,
|
||||
contact_id: this.contact?.id ?? null,
|
||||
is_sell_contract: this.type === '0',
|
||||
amount: null,
|
||||
payment_type: '0',
|
||||
},
|
||||
};
|
||||
},
|
||||
|
|
|
|||
|
|
@ -76,16 +76,12 @@
|
|||
</div>
|
||||
</template>
|
||||
<template #more>
|
||||
<div class="xl:col-span-6 col-span-12">
|
||||
<span class="w-full inline-flex items-end justify-between mb-3">
|
||||
<small-title title="Einzahlungen" />
|
||||
<payments-upload v-if="!contract.deleted_at" :show_upload="!contract.deleted_at" :contract="contract" />
|
||||
</span>
|
||||
<payments-view :payments="contract.payments" :contract="contract" />
|
||||
</div>
|
||||
<div class="xl:col-span-6 col-span-12 mt-4">
|
||||
<documents-view :initial_documents="contract.documents" :id="contract.id" :show_upload="!contract.deleted_at" />
|
||||
</div>
|
||||
<span class="inline-flex items-end w-full justify-between mb-3">
|
||||
<small-title title="Einzahlungen" />
|
||||
<payments-upload v-if="!contract.deleted_at" :show_upload="!contract.deleted_at" :contract="contract" />
|
||||
</span>
|
||||
<payments-view :payments="contract.payments" :contract="contract" />
|
||||
<documents-view :initial_documents="contract.documents" :id="contract.id" :show_upload="!contract.deleted_at" />
|
||||
</template>
|
||||
</show-page>
|
||||
</template>
|
||||
|
|
|
|||
Loading…
Reference in New Issue