feat(billing): renewals, coupons, VAT numbering, billing cycles and invoice payment tracking

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
baodev0
2026-10-19 16:37:56 +07:00
co-authored by Claude Sonnet 5.5
parent ea9a53f742
commit 25f23d541e
134 changed files with 4926 additions and 185 deletions
+11
View File
@@ -2,10 +2,12 @@
use App\Http\Controllers\Api\Admin\ActivityLog\ActivityLogController;
use App\Http\Controllers\Api\Admin\EmailLog\EmailLogController;
use App\Http\Controllers\Api\Admin\EmailTemplate\EmailHealthController;
use App\Http\Controllers\Api\Admin\EmailTemplate\EmailTemplateController;
use App\Http\Controllers\Api\Admin\MailCampaign\MailCampaignController;
use App\Http\Controllers\Api\Admin\Setting\ClientMenuController;
use App\Http\Controllers\Api\Admin\Setting\PopupBannerController;
use App\Http\Controllers\Api\Admin\Setting\VatNumberingController;
use App\Http\Controllers\Api\Admin\Setting\SettingController as AdminSettingController;
use App\Http\Controllers\Api\Admin\Staff\StaffOnlineController;
use App\Http\Controllers\Api\Admin\Ticket\TicketController as AdminTicketController;
@@ -54,6 +56,14 @@ Route::prefix('vat-settings')
Route::put('/', 'vatUpdate');
});
Route::prefix('vat-numbering')
->controller(VatNumberingController::class)
->middleware('perm:setting.manager')
->group(function () {
Route::get('/', 'show');
Route::put('/', 'update');
});
// Dashboard Stats
Route::prefix('dashboard')
->controller(\App\Http\Controllers\Api\Admin\Dashboard\DashboardController::class)
@@ -97,6 +107,7 @@ Route::prefix('email-templates')
->group(function () {
Route::get('/', 'index');
Route::post('/', 'store');
Route::get('health', [EmailHealthController::class, 'show']);
Route::get('scenarios', 'scenarios');
Route::put('scenarios/{key}/label', 'updateScenarioLabel');
Route::get('email-settings', 'getEmailSettings');