feat(helpdesk): add Software Products page with BC contract type sync
Add a new Software-Produkte feature to the helpdesk module that syncs contract types (Create_SaaS_License=true) from BC OData into a local database table with a nightly scheduler job, providing a Grid.js list page and detail/edit page for managing custom product names. - DB migration 003: helpdesk_software_products table (code UNIQUE key) - BcODataGateway: FS_Contract_Types entity with SaaS filter + fallback - SoftwareProductRepository: upsert, listPaged, softDelete, updateName - SoftwareProductSyncService: fetch → upsert → soft-delete lifecycle - SoftwareProductSyncJobHandler: daily at 02:00 via scheduler platform - SoftwareProductService: web UI business logic with validation - Permission: helpdesk.software-products.manage (nav-gated) - List page: Grid.js with Code, BC Description, Name, Status columns - Detail page: Code/BC Description read-only, Name editable, PRG pattern - i18n: de + en translation keys Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,9 @@ return [
|
||||
['path' => 'helpdesk/team-workload-data', 'target' => 'helpdesk/team-workload-data'],
|
||||
['path' => 'helpdesk/risk-radar', 'target' => 'helpdesk/risk-radar'],
|
||||
['path' => 'helpdesk/risk-radar-data', 'target' => 'helpdesk/risk-radar-data'],
|
||||
['path' => 'helpdesk/software-products', 'target' => 'helpdesk/software-products'],
|
||||
['path' => 'helpdesk/software-products-data', 'target' => 'helpdesk/software-products-data'],
|
||||
['path' => 'helpdesk/software-products/edit/{code}', 'target' => 'helpdesk/software-products/edit'],
|
||||
],
|
||||
'public_paths' => [],
|
||||
|
||||
@@ -92,6 +95,12 @@ return [
|
||||
'active' => true,
|
||||
'is_system' => true,
|
||||
],
|
||||
[
|
||||
'key' => 'helpdesk.software-products.manage',
|
||||
'description' => 'Manage helpdesk software products (view and edit product names)',
|
||||
'active' => true,
|
||||
'is_system' => true,
|
||||
],
|
||||
],
|
||||
|
||||
'search_resources' => [],
|
||||
@@ -100,7 +109,22 @@ return [
|
||||
'modules/helpdesk/css/helpdesk.css',
|
||||
],
|
||||
],
|
||||
'scheduler_jobs' => [],
|
||||
'scheduler_jobs' => [
|
||||
[
|
||||
'job_key' => 'helpdesk_software_product_sync',
|
||||
'handler' => \MintyPHP\Module\Helpdesk\Handler\SoftwareProductSyncJobHandler::class,
|
||||
'label' => 'Software product sync',
|
||||
'description' => 'Syncs contract types with Create_SaaS_License from Business Central to local database',
|
||||
'default_enabled' => 1,
|
||||
'default_timezone' => 'Europe/Berlin',
|
||||
'default_schedule_type' => 'daily',
|
||||
'default_schedule_interval' => 1,
|
||||
'default_schedule_time' => '02:00',
|
||||
'default_schedule_weekdays_csv' => null,
|
||||
'default_catchup_once' => 1,
|
||||
'allowed_schedule_types' => ['daily', 'weekly'],
|
||||
],
|
||||
],
|
||||
'layout_context_providers' => [
|
||||
\MintyPHP\Module\Helpdesk\Providers\HelpdeskLayoutProvider::class,
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user