updates
This commit is contained in:
@@ -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
|
||||
```
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('analytics')
|
||||
->name('analytics.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'analytics::index')->name('index');
|
||||
});
|
||||
@@ -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": []
|
||||
}
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('audit')
|
||||
->name('audit.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'audit::index')->name('index');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('carrier-management')
|
||||
->name('carrier-management.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'carriermanagement::index')->name('index');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('configuration')
|
||||
->name('configuration.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'configuration::index')->name('index');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('document-archive')
|
||||
->name('document-archive.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'documentarchive::index')->name('index');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('m3-integration')
|
||||
->name('m3-integration.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'm3integration::index')->name('index');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('replenishment')
|
||||
->name('replenishment.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'replenishment::index')->name('index');
|
||||
});
|
||||
@@ -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": []
|
||||
}
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('reporting')
|
||||
->name('reporting.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'reporting::index')->name('index');
|
||||
});
|
||||
@@ -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": []
|
||||
}
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('security')
|
||||
->name('security.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'security::index')->name('index');
|
||||
});
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
});
|
||||
@@ -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": []
|
||||
}
|
||||
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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('shipping')
|
||||
->name('shipping.')
|
||||
->group(function (): void {
|
||||
Route::view('/', 'shipping::index')->name('index');
|
||||
});
|
||||
@@ -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
Reference in New Issue
Block a user