Skip to content

Commit bcbdb3a

Browse files
committed
Add filter tabs to all List pages
Added getTabs() with OData-compatible filters to: - ListOrders: All, Open, Closed, This Month, Overdue - ListInvoices: All, Open, Unpaid, Overdue, This Month - ListItems: All, Active, In Stock, Out of Stock, Sales Items - ListPartners: All, Customers, Suppliers, Leads, With Balance - ListAuditLogs: All, Today, Created, Updated, Deleted - ListSyncHistory: All, Running, Failed, Today
1 parent 2a1936f commit bcbdb3a

6 files changed

Lines changed: 149 additions & 0 deletions

File tree

src/Resources/AuditLogResource/Pages/ListAuditLogs.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SapB1\Toolkit\Filament\Resources\AuditLogResource\Pages;
66

77
use Filament\Actions;
8+
use Filament\Resources\Components\Tab;
89
use Filament\Resources\Pages\ListRecords;
910
use Illuminate\Support\Facades\Response;
1011
use SapB1\Toolkit\Filament\Resources\AuditLogResource;
@@ -25,6 +26,30 @@ protected function getHeaderActions(): array
2526
];
2627
}
2728

29+
/**
30+
* @return array<string, Tab>
31+
*/
32+
public function getTabs(): array
33+
{
34+
$today = now()->startOfDay();
35+
36+
return [
37+
'all' => Tab::make(__('sapb1-filament::resources.audit_log.tabs.all')),
38+
39+
'today' => Tab::make(__('sapb1-filament::resources.audit_log.tabs.today'))
40+
->modifyQueryUsing(fn ($query) => $query->whereDate('created_at', '>=', $today)),
41+
42+
'created' => Tab::make(__('sapb1-filament::resources.audit_log.tabs.created'))
43+
->modifyQueryUsing(fn ($query) => $query->where('event', 'created')),
44+
45+
'updated' => Tab::make(__('sapb1-filament::resources.audit_log.tabs.updated'))
46+
->modifyQueryUsing(fn ($query) => $query->where('event', 'updated')),
47+
48+
'deleted' => Tab::make(__('sapb1-filament::resources.audit_log.tabs.deleted'))
49+
->modifyQueryUsing(fn ($query) => $query->where('event', 'deleted')),
50+
];
51+
}
52+
2853
public function exportAuditLogs(): StreamedResponse
2954
{
3055
$filename = 'audit-logs-'.now()->format('Y-m-d-His').'.csv';

src/Resources/InvoiceResource/Pages/ListInvoices.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SapB1\Toolkit\Filament\Resources\InvoiceResource\Pages;
66

77
use Filament\Actions;
8+
use Filament\Resources\Components\Tab;
89
use Filament\Resources\Pages\ListRecords;
910
use SapB1\Toolkit\Filament\Resources\InvoiceResource;
1011

@@ -18,4 +19,31 @@ protected function getHeaderActions(): array
1819
Actions\CreateAction::make(),
1920
];
2021
}
22+
23+
/**
24+
* @return array<string, Tab>
25+
*/
26+
public function getTabs(): array
27+
{
28+
$today = now()->format('Y-m-d');
29+
$firstOfMonth = now()->startOfMonth()->format('Y-m-d');
30+
31+
return [
32+
'all' => Tab::make(__('sapb1-filament::resources.invoice.tabs.all')),
33+
34+
'open' => Tab::make(__('sapb1-filament::resources.invoice.tabs.open'))
35+
->modifyQueryUsing(fn ($query) => $query->where('DocumentStatus', 'bost_Open')),
36+
37+
'unpaid' => Tab::make(__('sapb1-filament::resources.invoice.tabs.unpaid'))
38+
->modifyQueryUsing(fn ($query) => $query->filter("PaidToDate lt DocTotal")),
39+
40+
'overdue' => Tab::make(__('sapb1-filament::resources.invoice.tabs.overdue'))
41+
->modifyQueryUsing(fn ($query) => $query
42+
->where('DocDueDate', '<', $today)
43+
->where('DocumentStatus', 'bost_Open')),
44+
45+
'this_month' => Tab::make(__('sapb1-filament::resources.invoice.tabs.this_month'))
46+
->modifyQueryUsing(fn ($query) => $query->where('DocDate', '>=', $firstOfMonth)),
47+
];
48+
}
2149
}

src/Resources/ItemResource/Pages/ListItems.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SapB1\Toolkit\Filament\Resources\ItemResource\Pages;
66

77
use Filament\Actions;
8+
use Filament\Resources\Components\Tab;
89
use Filament\Resources\Pages\ListRecords;
910
use SapB1\Toolkit\Filament\Resources\ItemResource;
1011

@@ -18,4 +19,26 @@ protected function getHeaderActions(): array
1819
Actions\CreateAction::make(),
1920
];
2021
}
22+
23+
/**
24+
* @return array<string, Tab>
25+
*/
26+
public function getTabs(): array
27+
{
28+
return [
29+
'all' => Tab::make(__('sapb1-filament::resources.item.tabs.all')),
30+
31+
'active' => Tab::make(__('sapb1-filament::resources.item.tabs.active'))
32+
->modifyQueryUsing(fn ($query) => $query->where('Valid', 'tYES')),
33+
34+
'in_stock' => Tab::make(__('sapb1-filament::resources.item.tabs.in_stock'))
35+
->modifyQueryUsing(fn ($query) => $query->where('QuantityOnStock', '>', 0)),
36+
37+
'out_of_stock' => Tab::make(__('sapb1-filament::resources.item.tabs.out_of_stock'))
38+
->modifyQueryUsing(fn ($query) => $query->where('QuantityOnStock', '<=', 0)),
39+
40+
'sales_items' => Tab::make(__('sapb1-filament::resources.item.tabs.sales_items'))
41+
->modifyQueryUsing(fn ($query) => $query->where('SalesItem', 'tYES')),
42+
];
43+
}
2144
}

src/Resources/OrderResource/Pages/ListOrders.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SapB1\Toolkit\Filament\Resources\OrderResource\Pages;
66

77
use Filament\Actions;
8+
use Filament\Resources\Components\Tab;
89
use Filament\Resources\Pages\ListRecords;
910
use SapB1\Toolkit\Filament\Resources\OrderResource;
1011

@@ -18,4 +19,31 @@ protected function getHeaderActions(): array
1819
Actions\CreateAction::make(),
1920
];
2021
}
22+
23+
/**
24+
* @return array<string, Tab>
25+
*/
26+
public function getTabs(): array
27+
{
28+
$today = now()->format('Y-m-d');
29+
$firstOfMonth = now()->startOfMonth()->format('Y-m-d');
30+
31+
return [
32+
'all' => Tab::make(__('sapb1-filament::resources.order.tabs.all')),
33+
34+
'open' => Tab::make(__('sapb1-filament::resources.order.tabs.open'))
35+
->modifyQueryUsing(fn ($query) => $query->where('DocumentStatus', 'bost_Open')),
36+
37+
'closed' => Tab::make(__('sapb1-filament::resources.order.tabs.closed'))
38+
->modifyQueryUsing(fn ($query) => $query->where('DocumentStatus', 'bost_Close')),
39+
40+
'this_month' => Tab::make(__('sapb1-filament::resources.order.tabs.this_month'))
41+
->modifyQueryUsing(fn ($query) => $query->where('DocDate', '>=', $firstOfMonth)),
42+
43+
'overdue' => Tab::make(__('sapb1-filament::resources.order.tabs.overdue'))
44+
->modifyQueryUsing(fn ($query) => $query
45+
->where('DocDueDate', '<', $today)
46+
->where('DocumentStatus', 'bost_Open')),
47+
];
48+
}
2149
}

src/Resources/PartnerResource/Pages/ListPartners.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace SapB1\Toolkit\Filament\Resources\PartnerResource\Pages;
66

77
use Filament\Actions;
8+
use Filament\Resources\Components\Tab;
89
use Filament\Resources\Pages\ListRecords;
910
use SapB1\Toolkit\Filament\Resources\PartnerResource;
1011

@@ -18,4 +19,26 @@ protected function getHeaderActions(): array
1819
Actions\CreateAction::make(),
1920
];
2021
}
22+
23+
/**
24+
* @return array<string, Tab>
25+
*/
26+
public function getTabs(): array
27+
{
28+
return [
29+
'all' => Tab::make(__('sapb1-filament::resources.partner.tabs.all')),
30+
31+
'customers' => Tab::make(__('sapb1-filament::resources.partner.tabs.customers'))
32+
->modifyQueryUsing(fn ($query) => $query->where('CardType', 'cCustomer')),
33+
34+
'suppliers' => Tab::make(__('sapb1-filament::resources.partner.tabs.suppliers'))
35+
->modifyQueryUsing(fn ($query) => $query->where('CardType', 'cSupplier')),
36+
37+
'leads' => Tab::make(__('sapb1-filament::resources.partner.tabs.leads'))
38+
->modifyQueryUsing(fn ($query) => $query->where('CardType', 'cLid')),
39+
40+
'with_balance' => Tab::make(__('sapb1-filament::resources.partner.tabs.with_balance'))
41+
->modifyQueryUsing(fn ($query) => $query->where('CurrentAccountBalance', '>', 0)),
42+
];
43+
}
2144
}

src/Resources/SyncHistoryResource/Pages/ListSyncHistory.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace SapB1\Toolkit\Filament\Resources\SyncHistoryResource\Pages;
66

7+
use Filament\Resources\Components\Tab;
78
use Filament\Resources\Pages\ListRecords;
89
use SapB1\Toolkit\Filament\Resources\SyncHistoryResource;
910

@@ -15,4 +16,25 @@ protected function getHeaderActions(): array
1516
{
1617
return [];
1718
}
19+
20+
/**
21+
* @return array<string, Tab>
22+
*/
23+
public function getTabs(): array
24+
{
25+
$today = now()->startOfDay();
26+
27+
return [
28+
'all' => Tab::make(__('sapb1-filament::resources.sync_history.tabs.all')),
29+
30+
'running' => Tab::make(__('sapb1-filament::resources.sync_history.tabs.running'))
31+
->modifyQueryUsing(fn ($query) => $query->where('status', 'running')),
32+
33+
'failed' => Tab::make(__('sapb1-filament::resources.sync_history.tabs.failed'))
34+
->modifyQueryUsing(fn ($query) => $query->where('status', 'failed')),
35+
36+
'today' => Tab::make(__('sapb1-filament::resources.sync_history.tabs.today'))
37+
->modifyQueryUsing(fn ($query) => $query->whereDate('started_at', '>=', $today)),
38+
];
39+
}
1840
}

0 commit comments

Comments
 (0)