This commit is contained in:
Mark Gregory
2026-06-10 14:32:44 +01:00
parent 219cf518ba
commit 242158e150
147 changed files with 5448 additions and 0 deletions
Vendored
BIN
View File
Binary file not shown.
+35
View File
@@ -0,0 +1,35 @@
# Platform config and module menu fix
Applied fixes:
- Added `Modules/Platform/config/platform.php`.
- Hardened `Modules/Platform/Providers/PlatformServiceProvider.php` so config loading is safe.
- Removed stale generated files from `bootstrap/cache`.
- Updated `resources/views/layouts/app.blade.php` so it works for both:
- component pages using `<x-layouts::app>`
- legacy placeholder module pages using `@extends('layouts.app')` and `@section('content')`
- Added placeholder module entries to the left navigation:
- Inventory Management
- Shipping
- Carrier Management
- Transportation
- Replenishment
- M3 Integration
- Document Archive
- Analytics
- Reporting
- Audit
- Security
- Configuration
- Added compatibility CSS for the placeholder module pages that use Bootstrap-style classes.
- Ensured cache/runtime directories exist.
Run:
```bash
composer install
npm install
php artisan optimize:clear
php artisan test
npm run build
```
View File
@@ -0,0 +1,25 @@
<?php
namespace Modules\Analytics\Providers;
use Illuminate\Support\ServiceProvider;
class AnalyticsServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'analytics');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Analytics
Display KPIs, warehouse performance trends, executive summaries, and OTTC analysis.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Analytics')
@section('content')
<div class="container-fluid py-4 module-page module-analytics">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Analytics</h1>
<p class="mb-0 opacity-75">Display KPIs, warehouse performance trends, executive summaries, and OTTC analysis.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-graph-up-arrow"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">KPI1 Bar</h3>
<p class="small text-muted mb-0">Placeholder area for kpi1 bar.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">KPI1 Line</h3>
<p class="small text-muted mb-0">Placeholder area for kpi1 line.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">OTTC</h3>
<p class="small text-muted mb-0">Placeholder area for ottc.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Warehouse Performance</h3>
<p class="small text-muted mb-0">Placeholder area for warehouse performance.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Analytics workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Metric</th>
<th>Today</th>
<th>Week</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>KPI1 Bar</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>KPI1 Line</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>OTTC</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Warehouse Performance</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('analytics.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-graph-up-arrow"></i>
<span>Analytics</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('analytics')
->name('analytics.')
->group(function (): void {
Route::view('/', 'analytics::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Analytics",
"alias": "analytics",
"description": "Display KPIs, warehouse performance trends, executive summaries, and OTTC analysis.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Analytics\\Providers\\AnalyticsServiceProvider"
],
"files": []
}
View File
@@ -0,0 +1,25 @@
<?php
namespace Modules\Audit\Providers;
use Illuminate\Support\ServiceProvider;
class AuditServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'audit');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Audit
Review activity logs, data changes, interface events, and administrative actions.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Audit')
@section('content')
<div class="container-fluid py-4 module-page module-audit">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Audit</h1>
<p class="mb-0 opacity-75">Review activity logs, data changes, interface events, and administrative actions.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-clipboard-check"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Activity Log</h3>
<p class="small text-muted mb-0">Placeholder area for activity log.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Data Changes</h3>
<p class="small text-muted mb-0">Placeholder area for data changes.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">API Audit</h3>
<p class="small text-muted mb-0">Placeholder area for api audit.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">User Actions</h3>
<p class="small text-muted mb-0">Placeholder area for user actions.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Audit workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>When</th>
<th>User</th>
<th>Action</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Activity Log</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Data Changes</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>API Audit</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>User Actions</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('audit.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-clipboard-check"></i>
<span>Audit</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('audit')
->name('audit.')
->group(function (): void {
Route::view('/', 'audit::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Audit",
"alias": "audit",
"description": "Review activity logs, data changes, interface events, and administrative actions.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Audit\\Providers\\AuditServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\CarrierManagement\Providers;
use Illuminate\Support\ServiceProvider;
class CarrierManagementServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'carriermanagement');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Carrier Management
Maintain carriers, services, and shipment routing master data.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Carrier Management')
@section('content')
<div class="container-fluid py-4 module-page module-carrier-management">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Carrier Management</h1>
<p class="mb-0 opacity-75">Maintain carriers, services, and shipment routing master data.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-person-vcard"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Carrier Directory</h3>
<p class="small text-muted mb-0">Placeholder area for carrier directory.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Carrier Service Levels</h3>
<p class="small text-muted mb-0">Placeholder area for carrier service levels.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Carrier Rules</h3>
<p class="small text-muted mb-0">Placeholder area for carrier rules.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Carrier Audit</h3>
<p class="small text-muted mb-0">Placeholder area for carrier audit.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Carrier Management workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Carrier</th>
<th>Service</th>
<th>Enabled</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Carrier Directory</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Carrier Service Levels</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Carrier Rules</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Carrier Audit</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('carrier-management.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-person-vcard"></i>
<span>Carrier Management</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('carrier-management')
->name('carrier-management.')
->group(function (): void {
Route::view('/', 'carriermanagement::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "CarrierManagement",
"alias": "carrier-management",
"description": "Maintain carriers, services, and shipment routing master data.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\CarrierManagement\\Providers\\CarrierManagementServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\Configuration\Providers;
use Illuminate\Support\ServiceProvider;
class ConfigurationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'configuration');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Configuration
Centralise system settings, warehouse defaults, interface flags, and feature switches.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Configuration')
@section('content')
<div class="container-fluid py-4 module-page module-configuration">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Configuration</h1>
<p class="mb-0 opacity-75">Centralise system settings, warehouse defaults, interface flags, and feature switches.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-gear"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">System Settings</h3>
<p class="small text-muted mb-0">Placeholder area for system settings.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Feature Flags</h3>
<p class="small text-muted mb-0">Placeholder area for feature flags.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Warehouse Defaults</h3>
<p class="small text-muted mb-0">Placeholder area for warehouse defaults.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Interface Settings</h3>
<p class="small text-muted mb-0">Placeholder area for interface settings.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Configuration workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Setting</th>
<th>Value</th>
<th>Scope</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>System Settings</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Feature Flags</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Warehouse Defaults</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Interface Settings</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('configuration.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-gear"></i>
<span>Configuration</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('configuration')
->name('configuration.')
->group(function (): void {
Route::view('/', 'configuration::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Configuration",
"alias": "configuration",
"description": "Centralise system settings, warehouse defaults, interface flags, and feature switches.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Configuration\\Providers\\ConfigurationServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\DocumentArchive\Providers;
use Illuminate\Support\ServiceProvider;
class DocumentArchiveServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'documentarchive');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Document Archive
Search cached Sentinel documents, shipment PDFs, labels, and BOL records.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Document Archive')
@section('content')
<div class="container-fluid py-4 module-page module-document-archive">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Document Archive</h1>
<p class="mb-0 opacity-75">Search cached Sentinel documents, shipment PDFs, labels, and BOL records.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-file-earmark-text"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Sentinel Doc Archive</h3>
<p class="small text-muted mb-0">Placeholder area for sentinel doc archive.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Shipment PDFs</h3>
<p class="small text-muted mb-0">Placeholder area for shipment pdfs.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Bill of Lading</h3>
<p class="small text-muted mb-0">Placeholder area for bill of lading.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Document Search</h3>
<p class="small text-muted mb-0">Placeholder area for document search.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Document Archive workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Document</th>
<th>Shipment</th>
<th>Type</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Sentinel Doc Archive</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Shipment PDFs</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Bill of Lading</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Document Search</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('document-archive.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-file-earmark-text"></i>
<span>Document Archive</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('document-archive')
->name('document-archive.')
->group(function (): void {
Route::view('/', 'documentarchive::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "DocumentArchive",
"alias": "document-archive",
"description": "Search cached Sentinel documents, shipment PDFs, labels, and BOL records.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\DocumentArchive\\Providers\\DocumentArchiveServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\InventoryManagement\Providers;
use Illuminate\Support\ServiceProvider;
class InventoryManagementServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'inventorymanagement');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Inventory Management
Track inventory movement, stock visibility, pallet quantities, and product availability.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Inventory Management')
@section('content')
<div class="container-fluid py-4 module-page module-inventory-management">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Inventory Management</h1>
<p class="mb-0 opacity-75">Track inventory movement, stock visibility, pallet quantities, and product availability.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-boxes"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Stock Overview</h3>
<p class="small text-muted mb-0">Placeholder area for stock overview.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Pallet Quantity Rules</h3>
<p class="small text-muted mb-0">Placeholder area for pallet quantity rules.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Inventory Exceptions</h3>
<p class="small text-muted mb-0">Placeholder area for inventory exceptions.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Product Movement</h3>
<p class="small text-muted mb-0">Placeholder area for product movement.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Inventory Management workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Part Number</th>
<th>Description</th>
<th>Pallet Qty</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Stock Overview</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Pallet Quantity Rules</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Inventory Exceptions</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Product Movement</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('inventory-management.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-boxes"></i>
<span>Inventory Management</span>
</a>
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('inventory-management')
->name('inventory-management.')
->group(function (): void {
Route::view('/', 'inventorymanagement::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "InventoryManagement",
"alias": "inventory-management",
"description": "Track inventory movement, stock visibility, pallet quantities, and product availability.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\InventoryManagement\\Providers\\InventoryManagementServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\M3Integration\Providers;
use Illuminate\Support\ServiceProvider;
class M3IntegrationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'm3integration');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# M3 Integration
Observe M3 transactions, delivery methods, close shipment calls, and API exchanges.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'M3 Integration')
@section('content')
<div class="container-fluid py-4 module-page module-m3-integration">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">M3 Integration</h1>
<p class="mb-0 opacity-75">Observe M3 transactions, delivery methods, close shipment calls, and API exchanges.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-server"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">M3 Transaction Log</h3>
<p class="small text-muted mb-0">Placeholder area for m3 transaction log.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">M3 Delivery Methods</h3>
<p class="small text-muted mb-0">Placeholder area for m3 delivery methods.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Close Shipment API</h3>
<p class="small text-muted mb-0">Placeholder area for close shipment api.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">M3 Error Queue</h3>
<p class="small text-muted mb-0">Placeholder area for m3 error queue.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">M3 Integration workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Transaction</th>
<th>Program</th>
<th>Message</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>M3 Transaction Log</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>M3 Delivery Methods</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Close Shipment API</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>M3 Error Queue</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('m3-integration.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-server"></i>
<span>M3 Integration</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('m3-integration')
->name('m3-integration.')
->group(function (): void {
Route::view('/', 'm3integration::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "M3Integration",
"alias": "m3-integration",
"description": "Observe M3 transactions, delivery methods, close shipment calls, and API exchanges.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\M3Integration\\Providers\\M3IntegrationServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\Replenishment\Providers;
use Illuminate\Support\ServiceProvider;
class ReplenishmentServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'replenishment');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Replenishment
Configure replenishment thresholds, review stock gaps, and monitor refill activity.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Replenishment')
@section('content')
<div class="container-fluid py-4 module-page module-replenishment">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Replenishment</h1>
<p class="mb-0 opacity-75">Configure replenishment thresholds, review stock gaps, and monitor refill activity.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-arrow-repeat"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Replenishment Rules</h3>
<p class="small text-muted mb-0">Placeholder area for replenishment rules.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Minimum Stock</h3>
<p class="small text-muted mb-0">Placeholder area for minimum stock.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Suggested Transfers</h3>
<p class="small text-muted mb-0">Placeholder area for suggested transfers.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Exception Queue</h3>
<p class="small text-muted mb-0">Placeholder area for exception queue.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Replenishment workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Item</th>
<th>Minimum</th>
<th>Current</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Replenishment Rules</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Minimum Stock</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Suggested Transfers</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Exception Queue</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('replenishment.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-arrow-repeat"></i>
<span>Replenishment</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('replenishment')
->name('replenishment.')
->group(function (): void {
Route::view('/', 'replenishment::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Replenishment",
"alias": "replenishment",
"description": "Configure replenishment thresholds, review stock gaps, and monitor refill activity.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Replenishment\\Providers\\ReplenishmentServiceProvider"
],
"files": []
}
View File
@@ -0,0 +1,25 @@
<?php
namespace Modules\Reporting\Providers;
use Illuminate\Support\ServiceProvider;
class ReportingServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'reporting');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Reporting
Provide operational reports for closed orders, user efficiency, and transaction history.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Reporting')
@section('content')
<div class="container-fluid py-4 module-page module-reporting">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Reporting</h1>
<p class="mb-0 opacity-75">Provide operational reports for closed orders, user efficiency, and transaction history.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-bar-chart"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Closed Order Lines</h3>
<p class="small text-muted mb-0">Placeholder area for closed order lines.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Daily User Efficiency</h3>
<p class="small text-muted mb-0">Placeholder area for daily user efficiency.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Export Centre</h3>
<p class="small text-muted mb-0">Placeholder area for export centre.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Report Filters</h3>
<p class="small text-muted mb-0">Placeholder area for report filters.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Reporting workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Report</th>
<th>Period</th>
<th>Rows</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Closed Order Lines</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Daily User Efficiency</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Export Centre</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Report Filters</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('reporting.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-bar-chart"></i>
<span>Reporting</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('reporting')
->name('reporting.')
->group(function (): void {
Route::view('/', 'reporting::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Reporting",
"alias": "reporting",
"description": "Provide operational reports for closed orders, user efficiency, and transaction history.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Reporting\\Providers\\ReportingServiceProvider"
],
"files": []
}
View File
@@ -0,0 +1,25 @@
<?php
namespace Modules\Security\Providers;
use Illuminate\Support\ServiceProvider;
class SecurityServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'security');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Security
Control roles, permissions, audit visibility, and protected administration actions.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Security')
@section('content')
<div class="container-fluid py-4 module-page module-security">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Security</h1>
<p class="mb-0 opacity-75">Control roles, permissions, audit visibility, and protected administration actions.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-shield-check"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Roles</h3>
<p class="small text-muted mb-0">Placeholder area for roles.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Permissions</h3>
<p class="small text-muted mb-0">Placeholder area for permissions.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Admin Access</h3>
<p class="small text-muted mb-0">Placeholder area for admin access.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Security Audit</h3>
<p class="small text-muted mb-0">Placeholder area for security audit.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Security workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Area</th>
<th>Permission</th>
<th>Role</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Roles</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Permissions</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Admin Access</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Security Audit</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('security.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-shield-check"></i>
<span>Security</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('security')
->name('security.')
->group(function (): void {
Route::view('/', 'security::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Security",
"alias": "security",
"description": "Control roles, permissions, audit visibility, and protected administration actions.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Security\\Providers\\SecurityServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\SentinelIntegration\Providers;
use Illuminate\Support\ServiceProvider;
class SentinelIntegrationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'sentinelintegration');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Sentinel Integration
Track Sentinel API activity, inbound receiver events, and interface status.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Sentinel Integration')
@section('content')
<div class="container-fluid py-4 module-page module-sentinel-integration">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Sentinel Integration</h1>
<p class="mb-0 opacity-75">Track Sentinel API activity, inbound receiver events, and interface status.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-broadcast"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Sentinel Receiver</h3>
<p class="small text-muted mb-0">Placeholder area for sentinel receiver.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">API Activity</h3>
<p class="small text-muted mb-0">Placeholder area for api activity.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Interface Health</h3>
<p class="small text-muted mb-0">Placeholder area for interface health.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Payload Archive</h3>
<p class="small text-muted mb-0">Placeholder area for payload archive.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Sentinel Integration workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Endpoint</th>
<th>Reference</th>
<th>HTTP</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Sentinel Receiver</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>API Activity</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Interface Health</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Payload Archive</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('sentinel-integration.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-broadcast"></i>
<span>Sentinel Integration</span>
</a>
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('sentinel-integration')
->name('sentinel-integration.')
->group(function (): void {
Route::view('/', 'sentinelintegration::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "SentinelIntegration",
"alias": "sentinel-integration",
"description": "Track Sentinel API activity, inbound receiver events, and interface status.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\SentinelIntegration\\Providers\\SentinelIntegrationServiceProvider"
],
"files": []
}
View File
@@ -0,0 +1,25 @@
<?php
namespace Modules\Shipping\Providers;
use Illuminate\Support\ServiceProvider;
class ShippingServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'shipping');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}
+5
View File
@@ -0,0 +1,5 @@
# Shipping
Monitor shipment activity, closed orders, pending loads, and dispatch status.
Contains actual sample Blade views and placeholder service provider/routes only.
@@ -0,0 +1,123 @@
@extends('layouts.app')
@section('title', 'Shipping')
@section('content')
<div class="container-fluid py-4 module-page module-shipping">
<div class="row g-4">
<div class="col-12">
<section class="card border-0 shadow-sm overflow-hidden">
<div class="card-header border-0 text-white module-hero">
<div class="d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
<div>
<div class="small text-uppercase opacity-75 fw-semibold mb-2">Replacement module</div>
<h1 class="h2 fw-bold mb-2">Shipping</h1>
<p class="mb-0 opacity-75">Monitor shipment activity, closed orders, pending loads, and dispatch status.</p>
</div>
<div class="module-hero-icon" aria-hidden="true">
<i class="bi bi-truck"></i>
</div>
</div>
</div>
</section>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">01</div>
<h3 class="h6 mb-2">Open Shipments</h3>
<p class="small text-muted mb-0">Placeholder area for open shipments.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">02</div>
<h3 class="h6 mb-2">Closed Orders</h3>
<p class="small text-muted mb-0">Placeholder area for closed orders.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">03</div>
<h3 class="h6 mb-2">Shipment Close Calls</h3>
<p class="small text-muted mb-0">Placeholder area for shipment close calls.</p>
</div>
</div>
</div>
<div class="col-md-6 col-xl-3">
<div class="card h-100 border-0 shadow-sm module-metric-card">
<div class="card-body">
<div class="small text-uppercase text-muted fw-semibold mb-2">04</div>
<h3 class="h6 mb-2">Dispatch Exceptions</h3>
<p class="small text-muted mb-0">Placeholder area for dispatch exceptions.</p>
</div>
</div>
</div>
<div class="col-12">
<section class="card border-0 shadow-sm">
<div class="card-header bg-white border-bottom">
<div class="d-flex flex-column flex-md-row justify-content-between gap-2">
<div>
<h2 class="h5 mb-1">Shipping workbench</h2>
<p class="small text-muted mb-0">Sample table layout ready to wire into controllers, queries, DataTables, or Livewire.</p>
</div>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-secondary btn-sm">Export</button>
<button type="button" class="btn btn-primary btn-sm">Create</button>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th>Shipment</th>
<th>Order</th>
<th>Customer</th>
<th class="text-end">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Open Shipments</td>
<td>Sample 1</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Closed Orders</td>
<td>Sample 2</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Shipment Close Calls</td>
<td>Sample 3</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
<tr>
<td>Dispatch Exceptions</td>
<td>Sample 4</td>
<td><span class="badge bg-success-subtle text-success border border-success-subtle">Active</span></td>
<td class="text-end"><a href="#" class="btn btn-sm btn-outline-primary">Open</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,4 @@
<a href="{{ route('shipping.index') }}" class="nav-link d-flex align-items-center gap-2">
<i class="bi bi-truck"></i>
<span>Shipping</span>
</a>
+3
View File
@@ -0,0 +1,3 @@
<?php
// API routes can be added here when the module is implemented.
+10
View File
@@ -0,0 +1,10 @@
<?php
use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth'])
->prefix('shipping')
->name('shipping.')
->group(function (): void {
Route::view('/', 'shipping::index')->name('index');
});
+11
View File
@@ -0,0 +1,11 @@
{
"name": "Shipping",
"alias": "shipping",
"description": "Monitor shipment activity, closed orders, pending loads, and dispatch status.",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\Shipping\\Providers\\ShippingServiceProvider"
],
"files": []
}
@@ -0,0 +1,25 @@
<?php
namespace Modules\Transportation\Providers;
use Illuminate\Support\ServiceProvider;
class TransportationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the module services.
*/
public function boot(): void
{
$this->loadRoutesFrom(__DIR__ . '/../Routes/web.php');
$this->loadViewsFrom(__DIR__ . '/../Resources/views', 'transportation');
}
/**
* Register the module services.
*/
public function register(): void
{
// Placeholder only.
}
}

Some files were not shown because too many files have changed in this diff Show More