loan paid off ltter

This commit is contained in:
2025-11-02 23:16:32 +05:00
parent 8c1b128df2
commit 44f00a8f5d
7 changed files with 233 additions and 2 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Filament\Clusters\Loans\Loans\Tables;
use App\Modules\Loan\Filaments\Actions\ShowLoanRemainingAction;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\TextColumn;
@@ -34,6 +35,7 @@ class LoansTable
->recordActions([
ShowLoanRemainingAction::make(),
EditAction::make(),
DeleteAction::make(),
])
->toolbarActions([
BulkActionGroup::make([

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Modules\LoanPaidOffLetter\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class LoanPaidOffLetterController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request): void
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): void
{
//
}
/**
* Display the specified resource.
*/
public function show(Request $request): void
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request): void
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Request $request): void
{
//
}
}

View File

@@ -0,0 +1,53 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('loan_paid_off_letters', function (Blueprint $table) {
$table->id();
$table->string('unique_id')->nullable()->unique();
$table->string('region', 2)->index();
$table->foreignId('branch_id')->constrained('branches')->restrictOnDelete();
$table->string('customer_name')->index();
$table->string('customer_surname')->index();
$table->string('customer_patronic_name')->nullable();
$table->date('born_at')->nullable();
$table->string('phone')->nullable()->index();
$table->string('passport_serie')->index();
$table->string('passport_id')->index();
$table->string('status')->nullable()->index();
$table->text('notes')->nullable();
$table->foreignId('user_id')->constrained('users')->restrictOnDelete();
$table->string('loan_contract_number')->nullable();
$table->string('loan_contract_date')->nullable();
$table->string('loan_amount')->nullable();
$table->string('loan_reason')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};

View File

@@ -0,0 +1,64 @@
<?php
namespace App\Modules\LoanPaidOffLetter;
use App\Modules\Makeable;
use App\Modules\ModuleContract;
class LoanPaidOffLetterModule implements ModuleContract
{
use Makeable;
/**
* Module is enabled
*/
protected bool $enabled = true;
/**
* Check if is module enabled
*/
public function isEnabled(): bool
{
return $this->enabled;
}
/**
* Disable module
*/
public function disable(): void
{
$this->enabled = false;
}
/**
* Enable module
*/
public function enable(): void
{
$this->enabled = true;
}
/**
* Check if module has a filament resource
*/
public function hasFilamentResource(): bool
{
return false;
}
/**
* Get module composer requirements
*/
public function getComposerRequirements(): array
{
return [];
}
/**
* Get module composer suggestions
*/
public function getComposerSuggestions(): array
{
return [];
}
}

View File

@@ -0,0 +1,60 @@
<?php
namespace App\Modules\LoanPaidOffLetter\Models;
use App\Models\User;
use App\Modules\Branch\Models\Branch;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* @property int $id
* @property string $unique_id
* @property string $region
* @property int $branch_id
* @property string $customer_name
* @property string $customer_surname
* @property string $customer_patronic_name
* @property \Illuminate\Support\Carbon $born_at
* @property string $phone
* @property string $passport_serie
* @property string $passport_id
* @property string $status
* @property string $notes
* @property int $user_id
* @property string $loan_contract_number
* @property string $loan_contract_date
* @property string $loan_amount
* @property string $loan_reason
* @property \Illuminate\Support\Carbon $created_at
* @property \Illuminate\Support\Carbon $updated_at
*/
class LoanPaidOffLetter extends Model
{
protected $table = 'loan_paid_off_letters';
protected $casts = [
'born_at' => 'date',
'loan_contract_date' => 'date',
];
/**
* User
*
* @return BelongsTo<User, $this>
*/
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
/**
* Branch
*
* @return BelongsTo<Branch, $this>
*/
public function branch(): BelongsTo
{
return $this->belongsTo(Branch::class);
}
}

View File

@@ -0,0 +1,5 @@
<?php
namespace App\Modules\LoanPaidOffLetter\Repositories;
class LoanPaidOffLetterRepository {}

View File

@@ -16,7 +16,6 @@ use Filament\Panel;
use Filament\PanelProvider;
use Filament\Support\Colors\Color;
use Filament\Widgets\AccountWidget;
use Filament\Widgets\FilamentInfoWidget;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
@@ -47,7 +46,6 @@ class WorkPanelProvider extends PanelProvider
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets')
->widgets([
AccountWidget::class,
FilamentInfoWidget::class,
])
->middleware([
EncryptCookies::class,