diff --git a/Modules/Pricing/Config/.gitkeep b/Modules/Pricing/Config/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Config/config.php b/Modules/Pricing/Config/config.php
new file mode 100644
index 00000000..236bae28
--- /dev/null
+++ b/Modules/Pricing/Config/config.php
@@ -0,0 +1,8 @@
+ 'Pricing',
+ 'features' =>
+ [
+ ],
+];
diff --git a/Modules/Pricing/Console/.gitkeep b/Modules/Pricing/Console/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Database/Migrations/.gitkeep b/Modules/Pricing/Database/Migrations/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Database/Seeders/.gitkeep b/Modules/Pricing/Database/Seeders/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php b/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php
new file mode 100644
index 00000000..3e07becf
--- /dev/null
+++ b/Modules/Pricing/Database/Seeders/PricingDatabaseSeeder.php
@@ -0,0 +1,21 @@
+call("OthersTableSeeder");
+ }
+}
diff --git a/Modules/Pricing/Database/factories/.gitkeep b/Modules/Pricing/Database/factories/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Helpers/.gitkeep b/Modules/Pricing/Helpers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Helpers/Helper.php b/Modules/Pricing/Helpers/Helper.php
new file mode 100644
index 00000000..7870ce08
--- /dev/null
+++ b/Modules/Pricing/Helpers/Helper.php
@@ -0,0 +1,12 @@
+registerTranslations();
+ $this->registerConfig();
+ $this->registerViews();
+ $this->registerHelpers();
+ $this->registerCommands();
+ $this->loadMigrationsFrom(module_path(ModuleInfo::name(), 'Database/Migrations'));
+ }
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register(): void
+ {
+ $this->app->register(RouteServiceProvider::class);
+ }
+
+ /**
+ * Register the helpers.
+ *
+ * @return void
+ */
+ protected function registerHelpers(): void
+ {
+ foreach (glob(__DIR__.'/../Helpers/*.php') as $filename) {
+ require_once $filename;
+ }
+ }
+
+ /**
+ * Dynamically Register Commands.
+ *
+ * @return void
+ */
+ public function registerCommands(): void
+ {
+ if (!$this->app->runningInConsole()) {
+ return;
+ }
+ $commandPath = __DIR__ . '/../Console';
+ $commands = collect(File::allFiles($commandPath))
+ ->map(function ($file) {
+ $class = 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension();
+ return $class;
+ })
+ ->filter(function ($class) {
+ return class_exists($class);
+ })
+ ->values()
+ ->all();
+ $this->commands($commands);
+ }
+
+ /**
+ * Register config.
+ *
+ * @return void
+ */
+ protected function registerConfig(): void
+ {
+ $this->publishes([
+ module_path(ModuleInfo::name(), 'Config/config.php') => config_path( ModuleInfo::nameLower(). '.php'),
+ ], 'config');
+ $this->mergeConfigFrom(
+ module_path(ModuleInfo::name(), 'Config/config.php'), ModuleInfo::nameLower()
+ );
+ }
+
+ /**
+ * Register views.
+ *
+ * @return void
+ */
+ public function registerViews(): void
+ {
+ $viewPath = resource_path('views/modules/' . ModuleInfo::nameLower());
+ $sourcePath = module_path(ModuleInfo::name(), 'Resources/views');
+ $this->publishes([
+ $sourcePath => $viewPath
+ ], ['views', ModuleInfo::nameLower() . '-module-views']);
+ $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), ModuleInfo::nameLower());
+ }
+
+ /**
+ * Register translations.
+ *
+ * @return void
+ */
+ public function registerTranslations(): void
+ {
+ $langPath = resource_path('lang/modules/' . ModuleInfo::nameLower());
+
+ if (is_dir($langPath)) {
+ $this->loadTranslationsFrom($langPath, ModuleInfo::nameLower());
+ } else {
+ $this->loadTranslationsFrom(module_path(ModuleInfo::name(), 'Resources/lang'), ModuleInfo::nameLower());
+ }
+ }
+
+ /**
+ * Regsiter View Paths
+ * @return array
+ */
+ private function getPublishableViewPaths(): array
+ {
+ $paths = [];
+ foreach (Config::get('view.paths') as $path) {
+ if (is_dir($path . '/modules/' . ModuleInfo::nameLower())) {
+ $paths[] = $path . '/modules/' . ModuleInfo::nameLower();
+ }
+ }
+ return $paths;
+ }
+}
diff --git a/Modules/Pricing/Providers/RouteServiceProvider.php b/Modules/Pricing/Providers/RouteServiceProvider.php
new file mode 100644
index 00000000..dc3d35f9
--- /dev/null
+++ b/Modules/Pricing/Providers/RouteServiceProvider.php
@@ -0,0 +1,69 @@
+mapApiRoutes();
+
+ $this->mapWebRoutes();
+ }
+
+ /**
+ * Define the "web" routes for the application.
+ *
+ * These routes all receive session state, CSRF protection, etc.
+ *
+ * @return void
+ */
+ protected function mapWebRoutes()
+ {
+ Route::middleware('web')
+ ->namespace($this->moduleNamespace)
+ ->group(module_path('Pricing', '/Routes/web.php'));
+ }
+
+ /**
+ * Define the "api" routes for the application.
+ *
+ * These routes are typically stateless.
+ *
+ * @return void
+ */
+ protected function mapApiRoutes()
+ {
+ Route::prefix('api')
+ ->middleware('api')
+ ->namespace($this->moduleNamespace)
+ ->group(module_path('Pricing', '/Routes/api.php'));
+ }
+}
diff --git a/Modules/Pricing/Resources/assets/.gitkeep b/Modules/Pricing/Resources/assets/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Resources/assets/js/app.js b/Modules/Pricing/Resources/assets/js/app.js
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Resources/assets/sass/app.scss b/Modules/Pricing/Resources/assets/sass/app.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Resources/lang/.gitkeep b/Modules/Pricing/Resources/lang/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Resources/views/.gitkeep b/Modules/Pricing/Resources/views/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Resources/views/index.blade.php b/Modules/Pricing/Resources/views/index.blade.php
new file mode 100644
index 00000000..5b13e20c
--- /dev/null
+++ b/Modules/Pricing/Resources/views/index.blade.php
@@ -0,0 +1,9 @@
+@extends('pricing::layouts.master')
+
+@section('content')
+
Hello World
+
+
+ This view is loaded from module: {!! config('pricing.name') !!}
+
+@endsection
diff --git a/Modules/Pricing/Resources/views/layouts/master.blade.php b/Modules/Pricing/Resources/views/layouts/master.blade.php
new file mode 100644
index 00000000..6a396da1
--- /dev/null
+++ b/Modules/Pricing/Resources/views/layouts/master.blade.php
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Module Pricing
+
+ {{-- Laravel Mix - CSS File --}}
+ {{-- --}}
+
+
+
+ @yield('content')
+
+ {{-- Laravel Mix - JS File --}}
+ {{-- --}}
+
+
diff --git a/Modules/Pricing/Routes/.gitkeep b/Modules/Pricing/Routes/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Routes/api.php b/Modules/Pricing/Routes/api.php
new file mode 100644
index 00000000..8d2aeea4
--- /dev/null
+++ b/Modules/Pricing/Routes/api.php
@@ -0,0 +1,18 @@
+get('/pricing', function (Request $request) {
+ return $request->user();
+});
\ No newline at end of file
diff --git a/Modules/Pricing/Routes/web.php b/Modules/Pricing/Routes/web.php
new file mode 100644
index 00000000..2dcb7c83
--- /dev/null
+++ b/Modules/Pricing/Routes/web.php
@@ -0,0 +1,16 @@
+group(function() {
+ Route::get('/', 'PricingController@index');
+});
diff --git a/Modules/Pricing/Support/.gitkeep b/Modules/Pricing/Support/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/Modules/Pricing/Support/ModuleInfo.php b/Modules/Pricing/Support/ModuleInfo.php
new file mode 100644
index 00000000..e5048710
--- /dev/null
+++ b/Modules/Pricing/Support/ModuleInfo.php
@@ -0,0 +1,26 @@
+ 'Modules',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Module Stubs
+ |--------------------------------------------------------------------------
+ |
+ | Default module stubs.
+ |
+ */
+
+ 'stubs' => [
+ 'enabled' => false,
+ 'path' => base_path() . '/Vendors/mpba/laravel-modules/src/Commands/stubs',
+ 'files' => [
+ 'routes/web' => 'Routes/web.php',
+ 'routes/api' => 'Routes/api.php',
+ 'views/index' => 'Resources/views/index.blade.php',
+ 'views/master' => 'Resources/views/layouts/master.blade.php',
+ 'scaffold/config' => 'Config/config.php',
+ 'composer' => 'composer.json',
+ 'assets/js/app' => 'Resources/assets/js/app.js',
+ 'assets/sass/app' => 'Resources/assets/sass/app.scss',
+ 'webpack' => 'webpack.mix.js',
+ 'package' => 'package.json',
+ ],
+ 'replacements' => [
+ 'routes/web' => ['LOWER_NAME', 'STUDLY_NAME'],
+ 'routes/api' => ['LOWER_NAME'],
+ 'webpack' => ['LOWER_NAME'],
+ 'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'PROVIDER_NAMESPACE'],
+ 'views/index' => ['LOWER_NAME'],
+ 'views/master' => ['LOWER_NAME', 'STUDLY_NAME'],
+ 'scaffold/config' => ['STUDLY_NAME'],
+ 'composer' => [
+ 'LOWER_NAME',
+ 'STUDLY_NAME',
+ 'VENDOR',
+ 'AUTHOR_NAME',
+ 'AUTHOR_EMAIL',
+ 'MODULE_NAMESPACE',
+ 'PROVIDER_NAMESPACE',
+ ],
+ ],
+ 'gitkeep' => true,
+ ],
'paths' => [
- 'modules' => base_path('Modules'),
+ /*
+ |--------------------------------------------------------------------------
+ | Modules path
+ |--------------------------------------------------------------------------
+ |
+ | This path used for save the generated module. This path also will be added
+ | automatically to list of scanned folders.
+ |
+ */
+
+ 'modules' => base_path('modules'),
+ /*
+ |--------------------------------------------------------------------------
+ | Modules assets path
+ |--------------------------------------------------------------------------
+ |
+ | Here you may update the modules assets path.
+ |
+ */
+
'assets' => public_path('modules'),
+ /*
+ |--------------------------------------------------------------------------
+ | The migrations path
+ |--------------------------------------------------------------------------
+ |
+ | Where you run 'module:publish-migration' command, where do you publish the
+ | the migration files?
+ |
+ */
+
'migration' => base_path('database/migrations'),
+ /*
+ |--------------------------------------------------------------------------
+ | Generator path
+ |--------------------------------------------------------------------------
+ | Customise the paths where the folders will be generated.
+ | Set the generate key to false to not generate that folder
+ */
+ 'generator' => [
+ 'config' => ['path' => 'Config', 'generate' => true],
+ 'trait' => ['path' => 'Traits', 'generate' => true],
+ 'helper' => ['path' => 'Helpers', 'generate' => true],
+ 'command' => ['path' => 'Console', 'generate' => true],
+ 'support' => ['path' => 'Support', 'generate' => true],
+ 'migration' => ['path' => 'Database/Migrations', 'generate' => true],
+ 'seeder' => ['path' => 'Database/Seeders', 'generate' => true],
+ 'factory' => ['path' => 'Database/factories', 'generate' => true],
+ 'model' => ['path' => 'Models', 'generate' => true],
+ 'routes' => ['path' => 'Routes', 'generate' => true],
+ 'controller' => ['path' => 'Http/Controllers', 'generate' => true],
+ 'filter' => ['path' => 'Http/Middleware', 'generate' => true],
+ 'request' => ['path' => 'Http/Requests', 'generate' => true],
+ 'provider' => ['path' => 'Providers', 'generate' => true],
+ 'assets' => ['path' => 'Resources/assets', 'generate' => true],
+ 'lang' => ['path' => 'Resources/lang', 'generate' => true],
+ 'views' => ['path' => 'Resources/views', 'generate' => true],
+ 'test' => ['path' => 'Tests/Unit', 'generate' => true],
+ 'test-feature' => ['path' => 'Tests/Feature', 'generate' => true],
+ 'test-browser' => ['path' => 'Tests/Browser', 'generate' => true,],
+ 'repository' => ['path' => 'Repositories', 'generate' => false],
+ 'event' => ['path' => 'Events', 'generate' => false],
+ 'listener' => ['path' => 'Listeners', 'generate' => false],
+ 'policies' => ['path' => 'Policies', 'generate' => false],
+ 'rules' => ['path' => 'Rules', 'generate' => false],
+ 'jobs' => ['path' => 'Jobs', 'generate' => false],
+ 'emails' => ['path' => 'Emails', 'generate' => false],
+ 'notifications' => ['path' => 'Notifications', 'generate' => false],
+ 'resource' => ['path' => 'Transformers', 'generate' => false],
+ 'component' => ['path' => 'View', 'generate' => true],
+ ],
],
+ /*
+ |--------------------------------------------------------------------------
+ | Scan Path
+ |--------------------------------------------------------------------------
+ |
+ | Here you define which folder will be scanned. By default will scan Vendors
+ | directory. This is useful if you host the package in packagist website.
+ |
+ */
+
'scan' => [
- 'enabled' => true,
- 'paths' => [base_path('Modules')],
+ 'enabled' => false,
+ 'paths' => [
+ base_path('Vendors/*/*'),
+ ],
],
+ /*
+ |--------------------------------------------------------------------------
+ | Composer File Template
+ |--------------------------------------------------------------------------
+ |
+ | Here is the config for composer.json file, generated by this package
+ |
+ */
+
'composer' => [
- 'vendor' => 'mpba',
- 'author' => ['name' => 'MPBA Limited', 'email' => 'mark.gregory@mpba.co.uk'],
+ 'Vendors' => 'mpba',
+ 'author' => [
+ 'name' => 'Mark Gregory',
+ 'email' => 'mark.gregory@mpba.co.uk',
+ ],
],
+ /*
+ |--------------------------------------------------------------------------
+ | Caching
+ |--------------------------------------------------------------------------
+ |
+ | Here is the config for setting up caching feature.
+ |
+ */
+ 'cache' => [
+ 'enabled' => false,
+ 'key' => 'laravel-modules',
+ 'lifetime' => 60,
+ ],
+ /*
+ |--------------------------------------------------------------------------
+ | Choose what laravel-modules will register as custom namespaces.
+ | Setting one to false will require you to register that part
+ | in your own Service Provider class.
+ |--------------------------------------------------------------------------
+ */
+ 'register' => [
+ 'translations' => true,
+ /**
+ * load files on boot or register method
+ *
+ * @example boot|register
+ */
+ 'files' => 'register',
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Activators
+ |--------------------------------------------------------------------------
+ |
+ | You can define new types of activators here, file, database etc. The only
+ | required parameter is 'class'.
+ | The file activator will store the activation status in storage/installed_modules
+ */
+ 'activators' => [
+ 'file' => [
+ 'class' => FileActivator::class,
+ 'statuses-file' => base_path('modules_statuses.json'),
+ 'cache-key' => 'activator.installed',
+ 'cache-lifetime' => 604800,
+ ],
+ 'database' => [
+ 'class' => DatabaseActivator::class,
+ 'cache-key' => 'activator.installed',
+ 'cache-lifetime' => 604800,
+ ],
+ ],
+
+ 'activator' => 'file',
];
diff --git a/modules_statuses.json b/modules_statuses.json
index a51d6263..33580a0d 100644
--- a/modules_statuses.json
+++ b/modules_statuses.json
@@ -14,5 +14,6 @@
"SentinelIntegration": true,
"Shipping": true,
"Transportation": true,
- "Warehouse": true
-}
+ "Warehouse": true,
+ "Pricing": true
+}
\ No newline at end of file
diff --git a/storage/framework/views/21f61e9ca584c89ec770720417f0530b.php b/storage/framework/views/21f61e9ca584c89ec770720417f0530b.php
new file mode 100755
index 00000000..9284a70f
--- /dev/null
+++ b/storage/framework/views/21f61e9ca584c89ec770720417f0530b.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Security')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Security'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Roles
+
Placeholder area for roles.
+
+
+
+
+
+
+
02
+
Permissions
+
Placeholder area for permissions.
+
+
+
+
+
+
+
03
+
Admin Access
+
Placeholder area for admin access.
+
+
+
+
+
+
+
04
+
Security Audit
+
Placeholder area for security audit.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Area |
+ Permission |
+ Role |
+ Action |
+
+
+
+
+ | Roles |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Permissions |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Admin Access |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Security Audit |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/42634dc40de4b30dc1bfd8e4e5216a37.php b/storage/framework/views/42634dc40de4b30dc1bfd8e4e5216a37.php
new file mode 100755
index 00000000..cf15f552
--- /dev/null
+++ b/storage/framework/views/42634dc40de4b30dc1bfd8e4e5216a37.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Shipping')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Shipping'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Open Shipments
+
Placeholder area for open shipments.
+
+
+
+
+
+
+
02
+
Closed Orders
+
Placeholder area for closed orders.
+
+
+
+
+
+
+
03
+
Shipment Close Calls
+
Placeholder area for shipment close calls.
+
+
+
+
+
+
+
04
+
Dispatch Exceptions
+
Placeholder area for dispatch exceptions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Shipment |
+ Order |
+ Customer |
+ Action |
+
+
+
+
+ | Open Shipments |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Closed Orders |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Shipment Close Calls |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Dispatch Exceptions |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/52f11b25b837da8f038135d7f0333077.php b/storage/framework/views/52f11b25b837da8f038135d7f0333077.php
new file mode 100755
index 00000000..46a854b0
--- /dev/null
+++ b/storage/framework/views/52f11b25b837da8f038135d7f0333077.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('M3 Integration')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('M3 Integration'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
M3 Transaction Log
+
Placeholder area for m3 transaction log.
+
+
+
+
+
+
+
02
+
M3 Delivery Methods
+
Placeholder area for m3 delivery methods.
+
+
+
+
+
+
+
03
+
Close Shipment API
+
Placeholder area for close shipment api.
+
+
+
+
+
+
+
04
+
M3 Error Queue
+
Placeholder area for m3 error queue.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Transaction |
+ Program |
+ Message |
+ Action |
+
+
+
+
+ | M3 Transaction Log |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | M3 Delivery Methods |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Close Shipment API |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | M3 Error Queue |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/5b5b77309f4b7f191045e5f4c576e279.php b/storage/framework/views/5b5b77309f4b7f191045e5f4c576e279.php
new file mode 100755
index 00000000..9d10a49a
--- /dev/null
+++ b/storage/framework/views/5b5b77309f4b7f191045e5f4c576e279.php
@@ -0,0 +1,67 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Platform')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Platform'))]); ?>
+
+
+
+
+ addLoop($__currentLoopData); foreach($__currentLoopData as [$label, $value]): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
+
+
+
+
+ popLoop(); $loop = $__env->getLastLoop(); ?>
+
+
+
+
+
+
Recent companies
+
Tenant isolation is enforced by company ownership on every warehouse record.
+
+
Manage companies
+
+
+
+
+
+ | Company |
+ Users |
+ Warehouses |
+ Licences |
+ Status |
+
+
+
+ addLoop($__currentLoopData); foreach($__currentLoopData as $company): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
+
+ | name); ?> |
+ users_count); ?> |
+ warehouses_count); ?> |
+ license_keys_count); ?> |
+ is_system_company ? 'System' : ucfirst($company->status)); ?> |
+
+ popLoop(); $loop = $__env->getLastLoop(); ?>
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/6a3f8577bb5893d5c6b28206846a19c9.php b/storage/framework/views/6a3f8577bb5893d5c6b28206846a19c9.php
new file mode 100755
index 00000000..6a4af623
--- /dev/null
+++ b/storage/framework/views/6a3f8577bb5893d5c6b28206846a19c9.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Document Archive')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Document Archive'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Sentinel Doc Archive
+
Placeholder area for sentinel doc archive.
+
+
+
+
+
+
+
02
+
Shipment PDFs
+
Placeholder area for shipment pdfs.
+
+
+
+
+
+
+
03
+
Bill of Lading
+
Placeholder area for bill of lading.
+
+
+
+
+
+
+
04
+
Document Search
+
Placeholder area for document search.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Document |
+ Shipment |
+ Type |
+ Action |
+
+
+
+
+ | Sentinel Doc Archive |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Shipment PDFs |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Bill of Lading |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Document Search |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/7c1cf9bb421fbf887cdff4ea5e33db8c.php b/storage/framework/views/7c1cf9bb421fbf887cdff4ea5e33db8c.php
new file mode 100755
index 00000000..46038296
--- /dev/null
+++ b/storage/framework/views/7c1cf9bb421fbf887cdff4ea5e33db8c.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Replenishment')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Replenishment'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Replenishment Rules
+
Placeholder area for replenishment rules.
+
+
+
+
+
+
+
02
+
Minimum Stock
+
Placeholder area for minimum stock.
+
+
+
+
+
+
+
03
+
Suggested Transfers
+
Placeholder area for suggested transfers.
+
+
+
+
+
+
+
04
+
Exception Queue
+
Placeholder area for exception queue.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Item |
+ Minimum |
+ Current |
+ Action |
+
+
+
+
+ | Replenishment Rules |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Minimum Stock |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Suggested Transfers |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Exception Queue |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/8738ae0d0151ba8518c373d30a966954.php b/storage/framework/views/8738ae0d0151ba8518c373d30a966954.php
new file mode 100755
index 00000000..ab498b94
--- /dev/null
+++ b/storage/framework/views/8738ae0d0151ba8518c373d30a966954.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Carrier Management')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Carrier Management'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Carrier Directory
+
Placeholder area for carrier directory.
+
+
+
+
+
+
+
02
+
Carrier Service Levels
+
Placeholder area for carrier service levels.
+
+
+
+
+
+
+
03
+
Carrier Rules
+
Placeholder area for carrier rules.
+
+
+
+
+
+
+
04
+
Carrier Audit
+
Placeholder area for carrier audit.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Carrier |
+ Service |
+ Enabled |
+ Action |
+
+
+
+
+ | Carrier Directory |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Carrier Service Levels |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Carrier Rules |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Carrier Audit |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/96a1d29e16fe91252eff7ac360f0df68.php b/storage/framework/views/96a1d29e16fe91252eff7ac360f0df68.php
new file mode 100755
index 00000000..e9300ea1
--- /dev/null
+++ b/storage/framework/views/96a1d29e16fe91252eff7ac360f0df68.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Transportation')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Transportation'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Pending Truck Closure
+
Placeholder area for pending truck closure.
+
+
+
+
+
+
+
02
+
Trailer Activity
+
Placeholder area for trailer activity.
+
+
+
+
+
+
+
03
+
Freight Terms
+
Placeholder area for freight terms.
+
+
+
+
+
+
+
04
+
Transport Exceptions
+
Placeholder area for transport exceptions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Trailer |
+ Carrier |
+ Close Status |
+ Action |
+
+
+
+
+ | Pending Truck Closure |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Trailer Activity |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Freight Terms |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Transport Exceptions |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/99164f46a080c8d514958312e91a9ba5.php b/storage/framework/views/99164f46a080c8d514958312e91a9ba5.php
new file mode 100755
index 00000000..7695ad21
--- /dev/null
+++ b/storage/framework/views/99164f46a080c8d514958312e91a9ba5.php
@@ -0,0 +1,48 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('WMS Dashboard')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('WMS Dashboard'))]); ?>
+
+
+
+
+
+
+
Warehouse management
+
user()->company->name); ?>
+
High-performance tenant-isolated warehouse operations with per-warehouse validation and licence-aware access.
+
+
+
+
+
+ addLoop($__currentLoopData); foreach($__currentLoopData as $warehouse): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
+
+
+ validation_rules_count); ?> validation rules configured.
+
+ popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
+ Create your first warehouse
Warehouses are isolated to your company tenant.
Add warehouse
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/baa1cf8b19011fad7a6a8433aa3f46a2.php b/storage/framework/views/baa1cf8b19011fad7a6a8433aa3f46a2.php
new file mode 100755
index 00000000..facdad9f
--- /dev/null
+++ b/storage/framework/views/baa1cf8b19011fad7a6a8433aa3f46a2.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Configuration')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Configuration'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
System Settings
+
Placeholder area for system settings.
+
+
+
+
+
+
+
02
+
Feature Flags
+
Placeholder area for feature flags.
+
+
+
+
+
+
+
03
+
Warehouse Defaults
+
Placeholder area for warehouse defaults.
+
+
+
+
+
+
+
04
+
Interface Settings
+
Placeholder area for interface settings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Setting |
+ Value |
+ Scope |
+ Action |
+
+
+
+
+ | System Settings |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Feature Flags |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Warehouse Defaults |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Interface Settings |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/bd1292fcb4e235ced2c6a0e395decc9b.php b/storage/framework/views/bd1292fcb4e235ced2c6a0e395decc9b.php
new file mode 100755
index 00000000..264479e2
--- /dev/null
+++ b/storage/framework/views/bd1292fcb4e235ced2c6a0e395decc9b.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Reporting')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Reporting'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Closed Order Lines
+
Placeholder area for closed order lines.
+
+
+
+
+
+
+
02
+
Daily User Efficiency
+
Placeholder area for daily user efficiency.
+
+
+
+
+
+
+
03
+
Export Centre
+
Placeholder area for export centre.
+
+
+
+
+
+
+
04
+
Report Filters
+
Placeholder area for report filters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Report |
+ Period |
+ Rows |
+ Action |
+
+
+
+
+ | Closed Order Lines |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Daily User Efficiency |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Export Centre |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Report Filters |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/e4a92aa5a75a7eea6a82c78a2f2a994e.php b/storage/framework/views/e4a92aa5a75a7eea6a82c78a2f2a994e.php
new file mode 100755
index 00000000..3188aec1
--- /dev/null
+++ b/storage/framework/views/e4a92aa5a75a7eea6a82c78a2f2a994e.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Audit')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Audit'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Activity Log
+
Placeholder area for activity log.
+
+
+
+
+
+
+
02
+
Data Changes
+
Placeholder area for data changes.
+
+
+
+
+
+
+
03
+
API Audit
+
Placeholder area for api audit.
+
+
+
+
+
+
+
04
+
User Actions
+
Placeholder area for user actions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | When |
+ User |
+ Action |
+ Action |
+
+
+
+
+ | Activity Log |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Data Changes |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | API Audit |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | User Actions |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/ee034f19895af1b0d484543ea87b1fa4.php b/storage/framework/views/ee034f19895af1b0d484543ea87b1fa4.php
new file mode 100755
index 00000000..98fbf3d6
--- /dev/null
+++ b/storage/framework/views/ee034f19895af1b0d484543ea87b1fa4.php
@@ -0,0 +1,42 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Warehouses')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Warehouses'))]); ?>
+
+
+
+
+
Warehouses
+
+
+
+ addLoop($__currentLoopData); foreach($__currentLoopData as $warehouse): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
+
code); ?>
name); ?>
validation_rules_count); ?> rules
+ popLoop(); $loop = $__env->getLastLoop(); ?>
+
+ links()); ?>
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/f407c5224019b100e738e4c1a2968ef4.php b/storage/framework/views/f407c5224019b100e738e4c1a2968ef4.php
new file mode 100755
index 00000000..dc43216e
--- /dev/null
+++ b/storage/framework/views/f407c5224019b100e738e4c1a2968ef4.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Sentinel Integration')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Sentinel Integration'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Sentinel Receiver
+
Placeholder area for sentinel receiver.
+
+
+
+
+
+
+
02
+
API Activity
+
Placeholder area for api activity.
+
+
+
+
+
+
+
03
+
Interface Health
+
Placeholder area for interface health.
+
+
+
+
+
+
+
04
+
Payload Archive
+
Placeholder area for payload archive.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Endpoint |
+ Reference |
+ HTTP |
+ Action |
+
+
+
+
+ | Sentinel Receiver |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | API Activity |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Interface Health |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Payload Archive |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/fe6625f603a7e8e776c7e813e2f60270.php b/storage/framework/views/fe6625f603a7e8e776c7e813e2f60270.php
new file mode 100755
index 00000000..55e355a6
--- /dev/null
+++ b/storage/framework/views/fe6625f603a7e8e776c7e813e2f60270.php
@@ -0,0 +1,140 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::app','data' => ['title' => __('Inventory Management')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::app'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Inventory Management'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Stock Overview
+
Placeholder area for stock overview.
+
+
+
+
+
+
+
02
+
Pallet Quantity Rules
+
Placeholder area for pallet quantity rules.
+
+
+
+
+
+
+
03
+
Inventory Exceptions
+
Placeholder area for inventory exceptions.
+
+
+
+
+
+
+
04
+
Product Movement
+
Placeholder area for product movement.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Part Number |
+ Description |
+ Pallet Qty |
+ Action |
+
+
+
+
+ | Stock Overview |
+ Sample 1 |
+ Active |
+ Open |
+
+
+ | Pallet Quantity Rules |
+ Sample 2 |
+ Active |
+ Open |
+
+
+ | Inventory Exceptions |
+ Sample 3 |
+ Active |
+ Open |
+
+
+ | Product Movement |
+ Sample 4 |
+ Active |
+ Open |
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file