diff --git a/app/Http/Requests/Accounting/Account/ListRequest.php b/app/Http/Requests/Accounting/Account/ListRequest.php index b62e57e..ddf5ead 100644 --- a/app/Http/Requests/Accounting/Account/ListRequest.php +++ b/app/Http/Requests/Accounting/Account/ListRequest.php @@ -27,12 +27,12 @@ class ListRequest extends FormRequest 'search' => 'nullable', 'filter' => 'nullable|array', - 'filter.*.column' => 'required|in:name', + 'filter.*.column' => 'required|in:code,name,sheet,type,category,subcategory', 'filter.*.operator' => 'nullable|in:eq,in', 'filter.*.query' => 'required', 'sort' => 'nullable|array', - 'sort.column' => 'nullable|in:name', + 'sort.column' => 'nullable|in:code,name,sheet,type,category,subcategory', 'sort.dir' => 'nullable', ]; } diff --git a/app/Http/Requests/Accounting/Account/StoreRequest.php b/app/Http/Requests/Accounting/Account/StoreRequest.php index a2658a6..f980bad 100644 --- a/app/Http/Requests/Accounting/Account/StoreRequest.php +++ b/app/Http/Requests/Accounting/Account/StoreRequest.php @@ -29,6 +29,7 @@ class StoreRequest extends FormRequest 'category' => 'required|string', 'subcategory' => 'nullable|string', 'structure' => 'required|string', + 'totaling' => 'nullable|string', ]; } } diff --git a/app/Models/Account.php b/app/Models/Account.php index d33514a..d8b8c39 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -13,7 +13,7 @@ class Account extends Model use HasFactory; use LogsActivity; - protected $fillable = ['code', 'name','sheet','type','category','subcategory','structure']; + protected $fillable = ['code', 'name','sheet','type','category','subcategory','structure','totaling']; public function getActivitylogOptions(): LogOptions { diff --git a/app/Repositories/Accounting/AccountRepository.php b/app/Repositories/Accounting/AccountRepository.php index 3fa04e8..1af0acd 100644 --- a/app/Repositories/Accounting/AccountRepository.php +++ b/app/Repositories/Accounting/AccountRepository.php @@ -3,6 +3,7 @@ namespace App\Repositories\Accounting; use App\Models\Account; +use DB; class AccountRepository { @@ -15,7 +16,7 @@ class AccountRepository $sortDir = @$params["sort"]["dir"] ?? "desc"; return Account::skip($offset) - ->orderBy($sortColumn, $sortDir) + ->orderBy(DB::raw("structure::ltree"), "asc") ->when(@$params["filter"], function ($query) use ($params) { foreach ($params["filter"] as $filter) { diff --git a/app/Repositories/Auth/RoleRepository.php b/app/Repositories/Auth/RoleRepository.php index 84de474..e1236e5 100644 --- a/app/Repositories/Auth/RoleRepository.php +++ b/app/Repositories/Auth/RoleRepository.php @@ -13,10 +13,18 @@ class RoleRepository $offset = @$params["offset"] ?? 0; $sortColumn = @$params["sort"]["column"] ?? "id"; $sortDir = @$params["sort"]["dir"] ?? "desc"; + $search = @$params["search"] ?? 0; return Role::skip($offset) ->orderBy($sortColumn, $sortDir) + ->when($search, function ($query) use ($search){ + $query->where(function($query) use ($search){ + $query->where("name","ilike","%$search%"); + $query->orWhere("code","ilike","%$search%"); + }); + }) + ->when(@$params["filter"], function ($query) use ($params) { foreach ($params["filter"] as $filter) { $query->where($filter["column"], $filter["query"]); diff --git a/database/factories/AccountFactory.php b/database/factories/AccountFactory.php index a4770d1..d0210b7 100644 --- a/database/factories/AccountFactory.php +++ b/database/factories/AccountFactory.php @@ -23,7 +23,7 @@ class AccountFactory extends Factory 'type' => fake()->randomElement(["header","posting","begin-total","end-total"]), 'category' => fake()->name(), 'subcategory' => fake()->name(), - 'structure' => fake()->name(), + 'structure' => str_replace(" ",".",strtolower(fake()->name())), ]; } } diff --git a/database/migrations/2025_02_12_061947_create_accounts_table.php b/database/migrations/2025_02_12_061947_create_accounts_table.php index 7e6556c..95d0f7b 100644 --- a/database/migrations/2025_02_12_061947_create_accounts_table.php +++ b/database/migrations/2025_02_12_061947_create_accounts_table.php @@ -16,10 +16,11 @@ return new class extends Migration $table->string('code')->unique(); $table->string('name'); $table->string('sheet'); // Balance/Income - $table->string('category'); // Assets, Equity, Liabilities, Income, Expense, Cost of Goods - $table->string('subcategory'); - $table->string('type'); // Header, Begin-Total, Posting, End-Total + $table->string('category')->nullable(); // Assets, Equity, Liabilities, Income, Expense, Cost of Goods + $table->string('subcategory')->nullable(); + $table->string('type')->nullable(); // Header, Begin-Total, Posting, End-Total $table->string('structure'); + $table->string('totaling')->nullable(); $table->timestamps(); }); } diff --git a/database/migrations/2025_02_13_050422_create_activity_log_table.php b/database/migrations/2025_02_13_050422_create_activity_log_table.php new file mode 100644 index 0000000..7c05bc8 --- /dev/null +++ b/database/migrations/2025_02_13_050422_create_activity_log_table.php @@ -0,0 +1,27 @@ +create(config('activitylog.table_name'), function (Blueprint $table) { + $table->bigIncrements('id'); + $table->string('log_name')->nullable(); + $table->text('description'); + $table->nullableMorphs('subject', 'subject'); + $table->nullableMorphs('causer', 'causer'); + $table->json('properties')->nullable(); + $table->timestamps(); + $table->index('log_name'); + }); + } + + public function down() + { + Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name')); + } +} diff --git a/database/migrations/2025_02_13_050423_add_event_column_to_activity_log_table.php b/database/migrations/2025_02_13_050423_add_event_column_to_activity_log_table.php new file mode 100644 index 0000000..7b797fd --- /dev/null +++ b/database/migrations/2025_02_13_050423_add_event_column_to_activity_log_table.php @@ -0,0 +1,22 @@ +table(config('activitylog.table_name'), function (Blueprint $table) { + $table->string('event')->nullable()->after('subject_type'); + }); + } + + public function down() + { + Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) { + $table->dropColumn('event'); + }); + } +} diff --git a/database/migrations/2025_02_13_050424_add_batch_uuid_column_to_activity_log_table.php b/database/migrations/2025_02_13_050424_add_batch_uuid_column_to_activity_log_table.php new file mode 100644 index 0000000..8f7db66 --- /dev/null +++ b/database/migrations/2025_02_13_050424_add_batch_uuid_column_to_activity_log_table.php @@ -0,0 +1,22 @@ +table(config('activitylog.table_name'), function (Blueprint $table) { + $table->uuid('batch_uuid')->nullable()->after('properties'); + }); + } + + public function down() + { + Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) { + $table->dropColumn('batch_uuid'); + }); + } +}