b05234ef1a
Layer 2 add-on for MokoSuite CRM. Field service operations for plumbing, electrical, HVAC, and general trades. Schema (12 tables): - Technicians (trade, certifications, GPS, service radius, vehicle) - Service Locations (customer properties with access notes, GPS) - Work Orders (full lifecycle: new > dispatched > en_route > on_site > in_progress > completed > invoiced, with priority/trade/category) - WO Line Items (labor, parts, materials, flat rate, permits) - WO Photos (before/during/after with GPS coordinates) - Service Agreements (recurring maintenance contracts with SLA) - Equipment (HVAC units, panels, water heaters with serial/warranty) - Vehicles (fleet tracking with mileage, inspection, GPS) - Truck Stock (per-vehicle parts inventory with reorder points) - Dispatch Log (assignment and routing history with GPS) - Estimates (on-site quoting with token-based customer acceptance) - Time Entries (per-WO labor tracking with overtime/travel flags) Helpers: - DispatchHelper: find best tech by trade/location/workload, dispatch board, auto-assignment, unassigned queue - WorkOrderHelper: create, status lifecycle, completion with signature, dashboard stats Infrastructure: - Joomla 6 (PHP 8.3+), admin dashboard with dispatch board - Git submodules: MokoSuite + MokoSuiteCRM - GPL-3.0 license
19 lines
687 B
PHP
19 lines
687 B
PHP
<?php
|
|
defined('_JEXEC') or die;
|
|
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
|
|
use Joomla\CMS\Extension\ComponentInterface;
|
|
use Joomla\CMS\Extension\MVCComponent;
|
|
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
|
|
use Joomla\DI\Container;
|
|
use Joomla\DI\ServiceProviderInterface;
|
|
return new class implements ServiceProviderInterface {
|
|
public function register(Container $container): void
|
|
{
|
|
$container->set(ComponentInterface::class, function (Container $container) {
|
|
$component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
|
|
$component->setMVCFactory($container->get(MVCFactoryInterface::class));
|
|
return $component;
|
|
});
|
|
}
|
|
};
|