Updated datatables, using @pa instead of @js/@css, using conditionalPaging in datatables
All checks were successful
Create Docker Image / Build Docker Image (x86_64) (push) Successful in 35s
Create Docker Image / Final Docker Image Manifest (push) Successful in 10s

This commit is contained in:
Deon George 2024-07-28 21:33:30 +10:00
parent 1c4cb6f38c
commit 5f10175b35
18 changed files with 230 additions and 670 deletions

View File

@ -5,11 +5,9 @@ namespace App\Providers;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Intuit\Traits\IntuitSocialite; use Intuit\Traits\IntuitSocialite;
use Leenooks\Traits\SingleOrFail;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
use SingleOrFail;
use IntuitSocialite; use IntuitSocialite;
/** /**
@ -17,7 +15,6 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function register(): void public function register(): void
{ {
} }
/** /**
@ -25,8 +22,6 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
self::bootSingleOrfail();
Gate::define('wholesaler', function ($user) { Gate::define('wholesaler', function ($user) {
return $user->isWholesaler(); return $user->isWholesaler();
}); });
@ -37,4 +32,4 @@ class AppServiceProvider extends ServiceProvider
$this->bootIntuitSocialite(); $this->bootIntuitSocialite();
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
return [ return [
App\Providers\AppServiceProvider::class, App\Providers\AppServiceProvider::class,
]; ];

148
composer.lock generated
View File

@ -1534,16 +1534,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v11.17.0", "version": "v11.18.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "42f505a0c8afc0743f73e70bec08e641e2870bd6" "reference": "b19ba518c56852567e99fbae9321bc436c2cc5a8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/42f505a0c8afc0743f73e70bec08e641e2870bd6", "url": "https://api.github.com/repos/laravel/framework/zipball/b19ba518c56852567e99fbae9321bc436c2cc5a8",
"reference": "42f505a0c8afc0743f73e70bec08e641e2870bd6", "reference": "b19ba518c56852567e99fbae9321bc436c2cc5a8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1736,7 +1736,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2024-07-23T16:33:27+00:00" "time": "2024-07-26T10:39:29+00:00"
}, },
{ {
"name": "laravel/intuit", "name": "laravel/intuit",
@ -3056,11 +3056,11 @@
}, },
{ {
"name": "leenooks/laravel", "name": "leenooks/laravel",
"version": "11.1.6", "version": "11.1.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://gitea.dege.au/laravel/leenooks.git", "url": "https://gitea.dege.au/laravel/leenooks.git",
"reference": "628fbac8f9ce60c5124ee83b288733ae24e48b63" "reference": "eaece2b69d028fba0db5a5bb55b1386acf017cbc"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -3093,7 +3093,7 @@
"laravel", "laravel",
"leenooks" "leenooks"
], ],
"time": "2024-07-26T02:26:31+00:00" "time": "2024-07-28T04:52:56+00:00"
}, },
{ {
"name": "leenooks/passkey", "name": "leenooks/passkey",
@ -5081,16 +5081,16 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v7.1.2", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "0aa29ca177f432ab68533432db0de059f39c92ae" "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/0aa29ca177f432ab68533432db0de059f39c92ae", "url": "https://api.github.com/repos/symfony/console/zipball/cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
"reference": "0aa29ca177f432ab68533432db0de059f39c92ae", "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5154,7 +5154,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v7.1.2" "source": "https://github.com/symfony/console/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -5170,7 +5170,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-06-28T10:03:55+00:00" "time": "2024-07-26T12:41:01+00:00"
}, },
{ {
"name": "symfony/css-selector", "name": "symfony/css-selector",
@ -5306,16 +5306,16 @@
}, },
{ {
"name": "symfony/error-handler", "name": "symfony/error-handler",
"version": "v7.1.2", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/error-handler.git", "url": "https://github.com/symfony/error-handler.git",
"reference": "2412d3dddb5c9ea51a39cfbff1c565fc9844ca32" "reference": "432bb369952795c61ca1def65e078c4a80dad13c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/2412d3dddb5c9ea51a39cfbff1c565fc9844ca32", "url": "https://api.github.com/repos/symfony/error-handler/zipball/432bb369952795c61ca1def65e078c4a80dad13c",
"reference": "2412d3dddb5c9ea51a39cfbff1c565fc9844ca32", "reference": "432bb369952795c61ca1def65e078c4a80dad13c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5361,7 +5361,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code", "description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/error-handler/tree/v7.1.2" "source": "https://github.com/symfony/error-handler/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -5377,7 +5377,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-06-25T19:55:06+00:00" "time": "2024-07-26T13:02:51+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
@ -5537,16 +5537,16 @@
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v7.1.1", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" "reference": "717c6329886f32dc65e27461f80f2a465412fdca"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", "url": "https://api.github.com/repos/symfony/finder/zipball/717c6329886f32dc65e27461f80f2a465412fdca",
"reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", "reference": "717c6329886f32dc65e27461f80f2a465412fdca",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5581,7 +5581,7 @@
"description": "Finds files and directories via an intuitive fluent interface", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/finder/tree/v7.1.1" "source": "https://github.com/symfony/finder/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -5597,20 +5597,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-05-31T14:57:53+00:00" "time": "2024-07-24T07:08:44+00:00"
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v7.1.1", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa" "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/74d171d5b6a1d9e4bfee09a41937c17a7536acfa", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f602d5c17d1fa02f8019ace2687d9d136b7f4a1a",
"reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa", "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5658,7 +5658,7 @@
"description": "Defines an object-oriented layer for the HTTP specification", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-foundation/tree/v7.1.1" "source": "https://github.com/symfony/http-foundation/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -5674,20 +5674,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-05-31T14:57:53+00:00" "time": "2024-07-26T12:41:01+00:00"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v7.1.2", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6" "reference": "db9702f3a04cc471ec8c70e881825db26ac5f186"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db9702f3a04cc471ec8c70e881825db26ac5f186",
"reference": "ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6", "reference": "db9702f3a04cc471ec8c70e881825db26ac5f186",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5772,7 +5772,7 @@
"description": "Provides a structured process for converting a Request into a Response", "description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-kernel/tree/v7.1.2" "source": "https://github.com/symfony/http-kernel/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -5788,7 +5788,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-06-28T13:13:31+00:00" "time": "2024-07-26T14:58:15+00:00"
}, },
{ {
"name": "symfony/mailer", "name": "symfony/mailer",
@ -6666,16 +6666,16 @@
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v7.1.1", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "febf90124323a093c7ee06fdb30e765ca3c20028" "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", "url": "https://api.github.com/repos/symfony/process/zipball/7f2f542c668ad6c313dc4a5e9c3321f733197eca",
"reference": "febf90124323a093c7ee06fdb30e765ca3c20028", "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6707,7 +6707,7 @@
"description": "Executes commands in sub-processes", "description": "Executes commands in sub-processes",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/process/tree/v7.1.1" "source": "https://github.com/symfony/process/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -6723,20 +6723,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-05-31T14:57:53+00:00" "time": "2024-07-26T12:44:47+00:00"
}, },
{ {
"name": "symfony/psr-http-message-bridge", "name": "symfony/psr-http-message-bridge",
"version": "v7.1.1", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/psr-http-message-bridge.git", "url": "https://github.com/symfony/psr-http-message-bridge.git",
"reference": "9a5dbb606da711f5d40a7596ad577856f9402140" "reference": "1365d10f5476f74a27cf9c2d1eee70c069019db0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9a5dbb606da711f5d40a7596ad577856f9402140", "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/1365d10f5476f74a27cf9c2d1eee70c069019db0",
"reference": "9a5dbb606da711f5d40a7596ad577856f9402140", "reference": "1365d10f5476f74a27cf9c2d1eee70c069019db0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6790,7 +6790,7 @@
"psr-7" "psr-7"
], ],
"support": { "support": {
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.1.1" "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -6806,20 +6806,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-05-31T14:57:53+00:00" "time": "2024-07-17T06:10:24+00:00"
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v7.1.1", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "60c31bab5c45af7f13091b87deb708830f3c96c0" "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/60c31bab5c45af7f13091b87deb708830f3c96c0", "url": "https://api.github.com/repos/symfony/routing/zipball/8a908a3f22d5a1b5d297578c2ceb41b02fa916d0",
"reference": "60c31bab5c45af7f13091b87deb708830f3c96c0", "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6871,7 +6871,7 @@
"url" "url"
], ],
"support": { "support": {
"source": "https://github.com/symfony/routing/tree/v7.1.1" "source": "https://github.com/symfony/routing/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -6887,7 +6887,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-05-31T14:57:53+00:00" "time": "2024-07-17T06:10:24+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@ -6974,16 +6974,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v7.1.2", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8" "reference": "ea272a882be7f20cad58d5d78c215001617b7f07"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8", "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07",
"reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8", "reference": "ea272a882be7f20cad58d5d78c215001617b7f07",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7041,7 +7041,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v7.1.2" "source": "https://github.com/symfony/string/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -7057,20 +7057,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-06-28T09:27:18+00:00" "time": "2024-07-22T10:25:37+00:00"
}, },
{ {
"name": "symfony/translation", "name": "symfony/translation",
"version": "v7.1.1", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation.git", "url": "https://github.com/symfony/translation.git",
"reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3" "reference": "8d5e50c813ba2859a6dfc99a0765c550507934a1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3", "url": "https://api.github.com/repos/symfony/translation/zipball/8d5e50c813ba2859a6dfc99a0765c550507934a1",
"reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3", "reference": "8d5e50c813ba2859a6dfc99a0765c550507934a1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7135,7 +7135,7 @@
"description": "Provides tools to internationalize your application", "description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/translation/tree/v7.1.1" "source": "https://github.com/symfony/translation/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -7151,7 +7151,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-05-31T14:57:53+00:00" "time": "2024-07-26T12:41:01+00:00"
}, },
{ {
"name": "symfony/translation-contracts", "name": "symfony/translation-contracts",
@ -7307,16 +7307,16 @@
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v7.1.2", "version": "v7.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "5857c57c6b4b86524c08cf4f4bc95327270a816d" "reference": "86af4617cca75a6e28598f49ae0690f3b9d4591f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/5857c57c6b4b86524c08cf4f4bc95327270a816d", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/86af4617cca75a6e28598f49ae0690f3b9d4591f",
"reference": "5857c57c6b4b86524c08cf4f4bc95327270a816d", "reference": "86af4617cca75a6e28598f49ae0690f3b9d4591f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7370,7 +7370,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v7.1.2" "source": "https://github.com/symfony/var-dumper/tree/v7.1.3"
}, },
"funding": [ "funding": [
{ {
@ -7386,7 +7386,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-06-28T08:00:31+00:00" "time": "2024-07-26T12:41:01+00:00"
}, },
{ {
"name": "tijsverkoyen/css-to-inline-styles", "name": "tijsverkoyen/css-to-inline-styles",

50
public/css/fixes.css vendored
View File

@ -2,44 +2,11 @@ body {
font-size: 0.75em; font-size: 0.75em;
} }
/* Fixes for data tables */ /* Data Tables */
/* Fix pagination buttons */ /* Row Group columun padding 2 */
.dataTables_wrapper .dataTables_paginate .paginate_button { table.dataTable tbody tr.dtrg-group th {
padding: 0 0; padding-top: 0.5em;
margin-left: 0; padding-bottom: 0.5em;
border: 0 solid;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
border: 0 solid;
background: #fff;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:active {
box-shadow: 0 0 0 #fff;
background-color: #fff;
}
/* Fix select width */
.dataTables_wrapper .dataTables_length select {
width: 5em !important;
}
.dataTables_scrollHeadInner {
width: 100% !important;
}
/* Remove multiple sorting images on tables */
table.dataTable thead .sorting_asc {
background-image: none !important;
}
table.dataTable thead .sorting_desc {
background-image: none !important;
}
table.dataTable thead .sorting {
background-image: none !important;
} }
/* Fix textcolor on navbar focus */ /* Fix textcolor on navbar focus */
@ -55,13 +22,6 @@ table.dataTable thead .sorting {
box-shadow: none !important; box-shadow: none !important;
} }
/* Optional: Customize .focus-visible */
/*
.focus-visible {
outline-color: lightgreen;
}
*/
*:disabled { *:disabled {
cursor: not-allowed; cursor: not-allowed;
} }

View File

@ -1,4 +0,0 @@
.btn-meetup {
background-color: #ed1c40;
color: white;
}

View File

@ -1,206 +0,0 @@
table.dataTable {
clear: both;
margin-top: 6px !important;
margin-bottom: 6px !important;
max-width: none !important;
border-collapse: separate !important;
border-spacing: 0;
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable td.dataTables_empty,
table.dataTable th.dataTables_empty {
text-align: center;
}
table.dataTable.nowrap th,
table.dataTable.nowrap td {
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length select {
width: auto;
display: inline-block;
}
div.dataTables_wrapper div.dataTables_filter {
text-align: right;
}
div.dataTables_wrapper div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left;
}
div.dataTables_wrapper div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto;
}
div.dataTables_wrapper div.dataTables_info {
padding-top: 0.85em;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right;
}
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
justify-content: flex-end;
}
div.dataTables_wrapper div.dataTables_processing {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
margin-left: -100px;
margin-top: -26px;
text-align: center;
padding: 1em 0;
}
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
table.dataTable thead > tr > td.sorting_asc,
table.dataTable thead > tr > td.sorting_desc,
table.dataTable thead > tr > td.sorting {
padding-right: 30px;
}
table.dataTable thead > tr > th:active,
table.dataTable thead > tr > td:active {
outline: none;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative;
}
table.dataTable thead .sorting:before, table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
position: absolute;
bottom: 0.9em;
display: block;
opacity: 0.3;
}
table.dataTable thead .sorting:before,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:before {
right: 1em;
content: "\2191";
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
right: 0.5em;
content: "\2193";
}
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:after {
opacity: 1;
}
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
opacity: 0;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody table thead .sorting:before,
div.dataTables_scrollBody table thead .sorting_asc:before,
div.dataTables_scrollBody table thead .sorting_desc:before,
div.dataTables_scrollBody table thead .sorting:after,
div.dataTables_scrollBody table thead .sorting_asc:after,
div.dataTables_scrollBody table thead .sorting_desc:after {
display: none;
}
div.dataTables_scrollBody table tbody tr:first-child th,
div.dataTables_scrollBody table tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
box-sizing: content-box;
}
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
margin-top: 0 !important;
border-top: none;
}
@media screen and (max-width: 767px) {
div.dataTables_wrapper div.dataTables_length,
div.dataTables_wrapper div.dataTables_filter,
div.dataTables_wrapper div.dataTables_info,
div.dataTables_wrapper div.dataTables_paginate {
text-align: center;
}
}
table.dataTable.table-sm > thead > tr > th {
padding-right: 20px;
}
table.dataTable.table-sm .sorting:before,
table.dataTable.table-sm .sorting_asc:before,
table.dataTable.table-sm .sorting_desc:before {
top: 5px;
right: 0.85em;
}
table.dataTable.table-sm .sorting:after,
table.dataTable.table-sm .sorting_asc:after,
table.dataTable.table-sm .sorting_desc:after {
top: 5px;
}
table.table-bordered.dataTable th,
table.table-bordered.dataTable td {
border-left-width: 0;
}
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
table.table-bordered.dataTable td:last-child,
table.table-bordered.dataTable td:last-child {
border-right-width: 0;
}
table.table-bordered.dataTable tbody th,
table.table-bordered.dataTable tbody td {
border-bottom-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row {
margin: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
padding-left: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
padding-right: 0;
}

View File

@ -1,184 +0,0 @@
/*! DataTables Bootstrap 4 integration
* ©2011-2017 SpryMedia Ltd - datatables.net/license
*/
/**
* DataTables integration for Bootstrap 4. This requires Bootstrap 4 and
* DataTables 1.10 or newer.
*
* This file sets the defaults and adds options to DataTables to style its
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
* for further information.
*/
(function( factory ){
if ( typeof define === 'function' && define.amd ) {
// AMD
define( ['jquery', 'datatables.net'], function ( $ ) {
return factory( $, window, document );
} );
}
else if ( typeof exports === 'object' ) {
// CommonJS
module.exports = function (root, $) {
if ( ! root ) {
root = window;
}
if ( ! $ || ! $.fn.dataTable ) {
// Require DataTables, which attaches to jQuery, including
// jQuery if needed and have a $ property so we can access the
// jQuery object that is used
$ = require('datatables.net')(root, $).$;
}
return factory( $, root, root.document );
};
}
else {
// Browser
factory( jQuery, window, document );
}
}(function( $, window, document, undefined ) {
'use strict';
var DataTable = $.fn.dataTable;
/* Set the defaults for DataTables initialisation */
$.extend( true, DataTable.defaults, {
dom:
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
renderer: 'bootstrap'
} );
/* Default class modification */
$.extend( DataTable.ext.classes, {
sWrapper: "dataTables_wrapper dt-bootstrap4",
sFilterInput: "form-control form-control-sm",
sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
sProcessing: "dataTables_processing card",
sPageButton: "paginate_button page-item"
} );
/* Bootstrap paging button renderer */
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
var api = new DataTable.Api( settings );
var classes = settings.oClasses;
var lang = settings.oLanguage.oPaginate;
var aria = settings.oLanguage.oAria.paginate || {};
var btnDisplay, btnClass, counter=0;
var attach = function( container, buttons ) {
var i, ien, node, button;
var clickHandler = function ( e ) {
e.preventDefault();
if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
api.page( e.data.action ).draw( 'page' );
}
};
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
button = buttons[i];
if ( $.isArray( button ) ) {
attach( container, button );
}
else {
btnDisplay = '';
btnClass = '';
switch ( button ) {
case 'ellipsis':
btnDisplay = '&#x2026;';
btnClass = 'disabled';
break;
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
default:
btnDisplay = button + 1;
btnClass = page === button ?
'active' : '';
break;
}
if ( btnDisplay ) {
node = $('<li>', {
'class': classes.sPageButton+' '+btnClass,
'id': idx === 0 && typeof button === 'string' ?
settings.sTableId +'_'+ button :
null
} )
.append( $('<a>', {
'href': '#',
'aria-controls': settings.sTableId,
'aria-label': aria[ button ],
'data-dt-idx': counter,
'tabindex': settings.iTabIndex,
'class': 'page-link'
} )
.html( btnDisplay )
)
.appendTo( container );
settings.oApi._fnBindAction(
node, {action: button}, clickHandler
);
counter++;
}
}
}
};
// IE9 throws an 'unknown error' if document.activeElement is used
// inside an iframe or frame.
var activeEl;
try {
// Because this approach is destroying and recreating the paging
// elements, focus is lost on the select button which is bad for
// accessibility. So we want to restore focus once the draw has
// completed
activeEl = $(host).find(document.activeElement).data('dt-idx');
}
catch (e) {}
attach(
$(host).empty().html('<ul class="pagination"/>').children('ul'),
buttons
);
if ( activeEl !== undefined ) {
$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
}
};
return DataTable;
}));

View File

@ -1,16 +1,16 @@
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header"> <div class="card-header p-2">
<h4 class="card-title">Accounts</h4> <h4 class="card-title">Accounts</h4>
</div> </div>
<div class="card-body"> <div class="card-body p-2">
@if($x=$o->accounts_all->count()) @if($x=$o->accounts_all->count())
<table class="table table-striped table-hover" id="accounts"> <table class="table table-sm table-striped table-hover" id="accounts">
<thead> <thead>
<tr> <tr>
<th>Profile</th> <th style="width: 10%;">Profile</th>
<th>Name</th> <th>Name</th>
<th class="text-right">Services</th> <th class="text-right" style="width: 10%;">Services</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -40,15 +40,13 @@
</div> </div>
</div> </div>
@section('page-styles') @pa(datatables,rowgroup|conditionalpaging)
@css(datatables,bootstrap4)
@append
@section('page-scripts')
@js(datatables,bootstrap4)
@section('page-scripts')
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$('#accounts').DataTable({ $('#accounts').DataTable({
conditionalPaging: true,
language: { language: {
emptyTable: "No Active Clients" emptyTable: "No Active Clients"
}, },

View File

@ -1,16 +1,16 @@
<!-- $o=Account::class --> <!-- $o=Account::class -->
<!-- Show outstanding invoices --> <!-- Show outstanding invoices -->
<div class="card card-warning"> <div class="card card-warning">
<div class="card-header"> <div class="card-header p-2">
<h3 class="card-title">Invoices Due</h3> <h3 class="card-title">Invoices Due</h3>
</div> </div>
<div class="card-body"> <div class="card-body p-2">
@if(($list=$o->invoiceSummaryDue()->get())->count()) @if(($list=$o->invoiceSummaryDue()->get())->count())
@include('theme.backend.adminlte.invoice.widget.due',['type'=>'account']) @include('theme.backend.adminlte.invoice.widget.due',['type'=>'account','list'=>$list])
@else @else
<p>No invoice due</p> <p>No invoices to list</p>
@endif @endif
</div> </div>
</div> </div>

View File

@ -1,13 +1,13 @@
<!-- $o=Account::class --> <!-- $o=Account::class -->
<!-- Show past 12 months invoices --> <!-- Show past 12 months invoices -->
<div class="card card-success"> <div class="card card-success">
<div class="card-header"> <div class="card-header p-2">
<h3 class="card-title">Past Invoices</h3> <h3 class="card-title">Past Invoices</h3>
</div> </div>
<div class="card-body"> <div class="card-body p-2">
@if(($list=$o->invoiceSummaryPast()->where('invoices.created_at','>=',\Carbon\Carbon::now()->subYears(2)->startOfYear())->get())->count()) @if(($list=$o->invoiceSummaryPast()->where('invoices.created_at','>=',\Carbon\Carbon::now()->subYears(2)->startOfYear())->get())->count())
<table class="table table-bordered w-100" id="invoices_past_{{ $o->id }}"> <table class="table table-sm table-striped" id="invoices_past_{{ $o->id }}">
<thead> <thead>
<tr> <tr>
<th>Account</th> <th>Account</th>
@ -37,16 +37,14 @@
</div> </div>
</div> </div>
@section('page-styles') @pa(datatables,rowgroup|conditionalpaging)
@css(datatables,bootstrap4|rowgroup)
@append
@section('page-scripts')
@js(datatables,bootstrap4|rowgroup)
@section('page-scripts')
<script type="text/javascript"> <script type="text/javascript">
@if($list->count()) @if($list->count())
$(document).ready(function() { $(document).ready(function() {
$('#invoices_past_{{ $o->id }}').DataTable({ $('#invoices_past_{{ $o->id }}').DataTable({
conditionalPaging: true,
order: [[2,'desc'],[0,'asc']], order: [[2,'desc'],[0,'asc']],
rowGroup: { rowGroup: {
dataSrc: 0, dataSrc: 0,

View File

@ -1,17 +1,15 @@
<!-- $o=Account::class --> <!-- $o=Account::class -->
@php @php($o->load(['services_active.invoiced_service_items_active_recent']))
$o->load(['services_active.invoiced_service_items_active_recent']);
@endphp
<!-- Show active services --> <!-- Show active services -->
<div class="card card-light"> <div class="card card-light">
<div class="card-header"> <div class="card-header p-2">
<h3 class="card-title">Active Services</h3> <h3 class="card-title">Active Services</h3>
</div> </div>
<div class="card-body"> <div class="card-body p-2">
@if(($x=$o->services_active)->count()) @if(($x=$o->services_active)->count())
<table class="table table-striped table-hover w-100" id="services_active_{{ $ao->id }}"> <table class="table table-sm table-striped table-hover" id="services_active_{{ $ao->id }}">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
@ -47,29 +45,29 @@
</div> </div>
</div> </div>
@section('page-styles') @pa(datatables,rowgroup|conditionalpaging)
@css(datatables,bootstrap4|rowgroup)
@append
@section('page-scripts')
@js(datatables,bootstrap4|rowgroup)
@section('page-scripts')
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$('#services_active_{{ $ao->id }}').DataTable({ @if($x->count())
order: [[1,'asc'],[2,'asc']], $('#services_active_{{ $ao->id }}').DataTable({
rowGroup: { conditionalPaging: true,
dataSrc: 1, order: [[1,'asc'],[2,'asc']],
endRender: function ( rows, group ) { rowGroup: {
return rows.count()+' x ' + group; dataSrc: 1,
endRender: function (rows,group) {
return rows.count()+' x '+group;
},
}, },
}, columnDefs: [
columnDefs: [ {
{ targets: [1],
targets: [1], visible: false,
visible: false, },
}, ],
], });
}); @endif
}); });
</script> </script>
@append @append

View File

@ -1,57 +1,59 @@
<!-- Show outstanding invoices --> <!-- Show outstanding invoices -->
<table class="table table-bordered w-100" id="invoices_credit_{{$type}}"> @if($list->count())
<thead> <table class="table table-bordered table-striped" id="invoices_credit_{{$type}}">
<tr> <thead>
<th>Account</th>
<th>#</th>
<th>Due</th>
<th class="text-right">Items</th>
<th class="text-right">Discounts</th>
<th class="text-right">Total</th>
<th class="text-right">Payments</th>
<th class="text-right">Balance</th>
</tr>
</thead>
<tbody>
@foreach($list as $oo)
<tr> <tr>
<td>{{ $oo->account->name }}</td> <th>Account</th>
<td><a href="{{ url('u/invoice',$oo->id) }}">{{ $oo->lid }}</a></td> <th>#</th>
<td>{{ $oo->due_at->format('Y-m-d') }}</td> <th>Due</th>
<td class="text-right">${{ number_format($oo->_item+$oo->_tax,2) }}</td> <th class="text-right">Items</th>
<td class="text-right">${{ number_format($oo->_discount,2) }}</td> <th class="text-right">Discounts</th>
<td class="text-right">${{ number_format($oo->_total,2) }}</td> <th class="text-right">Total</th>
<td class="text-right">${{ number_format($oo->_payment,2) }}</td> <th class="text-right">Payments</th>
<td class="text-right">${{ number_format($oo->_balance,2) }}</td> <th class="text-right">Balance</th>
</tr> </tr>
@endforeach </thead>
</tbody>
</table> <tbody>
@foreach($list as $oo)
<tr>
<td>{{ $oo->account->name }}</td>
<td><a href="{{ url('u/invoice',$oo->id) }}">{{ $oo->lid }}</a></td>
<td>{{ $oo->due_at->format('Y-m-d') }}</td>
<td class="text-right">${{ number_format($oo->_item+$oo->_tax,2) }}</td>
<td class="text-right">${{ number_format($oo->_discount,2) }}</td>
<td class="text-right">${{ number_format($oo->_total,2) }}</td>
<td class="text-right">${{ number_format($oo->_payment,2) }}</td>
<td class="text-right">${{ number_format($oo->_balance,2) }}</td>
</tr>
@endforeach
</tbody>
</table>
@else
<p>No invoices to list</p>
@endif
@pa(datatables,rowgroup|conditionalpaging)
@section('page-styles')
@css(datatables,bootstrap4|rowgroup)
@append
@section('page-scripts') @section('page-scripts')
@js(datatables,bootstrap4|rowgroup)
<script type="text/javascript"> <script type="text/javascript">
@if($list->count()) @if($list->count())
$(document).ready(function() { $(document).ready(function() {
$('#invoices_credit_{{$type}}').DataTable({ $('#invoices_credit_{{$type}}').DataTable({
// If we have more than 1 account id, order by account conditionalPaging: true,
order: [[0,'asc'],[2,'asc'],[1,'desc']], // If we have more than 1 account id, order by account
rowGroup: { order: [[0,'asc'],[2,'asc'],[1,'desc']],
dataSrc: 0, rowGroup: {
}, dataSrc: 0,
columnDefs: [ },
{ columnDefs: [
targets: [0], {
visible: false, targets: [0],
} visible: false,
], }
],
});
}); });
});
@endif @endif
</script> </script>
@append @append

View File

@ -1,15 +1,16 @@
@use(App\Models\Account)
<!-- Show outstanding invoices for all clients --> <!-- Show outstanding invoices for all clients -->
<div class="card card-warning"> <div class="card card-warning">
<div class="card-header"> <div class="card-header p-2">
<h3 class="card-title">Invoices Due</h3> <h3 class="card-title">Invoices Due</h3>
</div> </div>
<div class="card-body"> <div class="card-body p-2">
@if(($list=\App\Models\Account::InvoicesDue())->count()) @if(($list=Account::InvoicesDue())->count())
@include('theme.backend.adminlte.invoice.widget.due',['type'=>'all']) @include('theme.backend.adminlte.invoice.widget.due',['type'=>'all','list'=>$list])
@else @else
<p>No invoice due</p> <p>No invoices to list</p>
@endif @endif
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<!-- $list=Collection[Invoice::class] --> <!-- $list=Collection[Invoice::class] -->
<!-- Show outstanding invoices --> <!-- Show outstanding invoices -->
<table class="table table-bordered w-100" id="invoices_due_{{$type}}"> <table class="table table-sm table-striped" id="invoices_due_{{$type}}">
<thead> <thead>
<tr> <tr>
<th>Account</th> <th>Account</th>
@ -24,29 +24,27 @@
</tbody> </tbody>
</table> </table>
@section('page-styles') @pa(datatables,rowgroup|conditionalpaging)
@css(datatables,bootstrap4|rowgroup)
@append
@section('page-scripts')
@js(datatables,bootstrap4|rowgroup)
@section('page-scripts')
<script type="text/javascript"> <script type="text/javascript">
@if($list->count()) @if($list->count())
$(document).ready(function() { $(document).ready(function() {
$('#invoices_due_{{$type}}').DataTable({ $('#invoices_due_{{$type}}').DataTable({
// If we have more than 1 account id, order by account conditionalPaging: true,
order: [[0,'asc'],[2,'asc'],[1,'desc']], // If we have more than 1 account id, order by account
rowGroup: { order: [[0,'asc'],[2,'asc'],[1,'desc']],
dataSrc: 0, rowGroup: {
}, dataSrc: 0,
columnDefs: [ },
{ columnDefs: [
targets: [0], {
visible: false, targets: [0],
} visible: false,
], }
],
});
}); });
});
@endif @endif
</script> </script>
@append @append

View File

@ -62,7 +62,7 @@
@endcan @endcan
</div> </div>
<div class="card-body pt-2 pl-2 pr-2 pb-0"> <div class="card-body p-2">
<div class="tab-content"> <div class="tab-content">
@if($x=! ($o->suspend_billing || $o->external_billing)) @if($x=! ($o->suspend_billing || $o->external_billing))
<div @class(['tab-pane','fade','show active'=>! (session()->has('service_update') || session()->has('charge_add'))]) id="pending_items"> <div @class(['tab-pane','fade','show active'=>! (session()->has('service_update') || session()->has('charge_add'))]) id="pending_items">

View File

@ -1,13 +1,13 @@
@use(App\Models\Service) @use(App\Models\Service)
<!-- Show client movements --> <!-- Show client movements -->
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header"> <div class="card-header p-2">
<h3 class="card-title">Service Movements</h3> <h3 class="card-title">Service Movements</h3>
</div> </div>
<div class="card-body"> <div class="card-body p-2">
@if(($x=Service::movements($user))->count()) @if(($x=Service::movements($user))->count())
<table class="table table-striped table-hover" id="service_movements"> <table class="table table-sm table-striped table-hover" id="service_movements">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
@ -56,15 +56,13 @@
</div> </div>
</div> </div>
@section('page-styles') @pa(datatables,rowgroup|conditionalpaging)
@css(datatables,bootstrap4|rowgroup)
@append
@section('page-scripts')
@js(datatables,bootstrap4|rowgroup)
@section('page-scripts')
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$('#service_movements').DataTable( { $('#service_movements').DataTable({
conditionalPaging: true,
order: [3, 'asc'], order: [3, 'asc'],
rowGroup: { rowGroup: {
dataSrc: 1, dataSrc: 1,

View File

@ -1,5 +1,5 @@
<!-- $o=Service::class --> <!-- $o=Service::class -->
<table class="table table-sm" id="svc_bill_hist"> <table class="table table-sm table-striped" id="svc_bill_hist">
<thead> <thead>
<tr> <tr>
<th>Invoice</th> <th>Invoice</th>
@ -25,15 +25,13 @@
</tbody> </tbody>
</table> </table>
@section('page-styles') @pa(datatables,conditionalpaging)
@css(datatables,bootstrap4)
@append
@section('page-scripts')
@js(datatables,bootstrap4)
@section('page-scripts')
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$('#svc_bill_hist').DataTable({ $('#svc_bill_hist').DataTable({
conditionalPaging: true,
language: { language: {
emptyTable: "No Invoices" emptyTable: "No Invoices"
}, },

View File

@ -1,24 +1,32 @@
@use(App\Models\Account)
<div class="row"> <div class="row">
<div class="col-4"> <div class="col-12 col-md-4">
@include('theme.backend.adminlte.account.widget.admin.list') @include('theme.backend.adminlte.account.widget.admin.list')
</div> </div>
<div class="col-8"> <div class="col-12 col-md-8">
@include('theme.backend.adminlte.service.widget.admin.movement') @include('theme.backend.adminlte.service.widget.admin.movement')
@include('theme.backend.adminlte.invoice.widget.admin.due') <div class="row">
<div class="col-12 col-xl-6">
@can('wholesaler') @include('theme.backend.adminlte.invoice.widget.admin.due')
<!-- Show outstanding invoices for all clients -->
<div class="card card-secondary">
<div class="card-header">
<h3 class="card-title">Invoices In Credit</h3>
</div>
<div class="card-body">
@include('theme.backend.adminlte.invoice.widget.admin.credit',['list'=>\App\Models\Account::InvoicesCredit(),'type'=>'account'])
</div>
</div> </div>
@endcan
<div class="col-12 col-xl-6">
@can('wholesaler')
<!-- Show outstanding invoices for all clients -->
<div class="card card-secondary">
<div class="card-header p-2">
<h3 class="card-title">Invoices In Credit</h3>
</div>
<div class="card-body p-2">
@include('theme.backend.adminlte.invoice.widget.admin.credit',['list'=>Account::InvoicesCredit(),'type'=>'account'])
</div>
</div>
@endcan
</div>
</div>
</div> </div>
</div> </div>