54 lines
1.9 KiB
PHP
54 lines
1.9 KiB
PHP
<?php
|
|
require_once __DIR__ . '/db/config.php';
|
|
require_once __DIR__ . '/includes/callcenter_test_helpers.php';
|
|
require_once __DIR__ . '/includes/drive_test_orders.php';
|
|
|
|
if (php_sapi_name() !== 'cli') {
|
|
http_response_code(403);
|
|
header('Content-Type: text/plain; charset=utf-8');
|
|
echo "Este worker solo se ejecuta por CLI." . PHP_EOL;
|
|
exit(0);
|
|
}
|
|
|
|
$pdo = db();
|
|
$availableStores = drive_test_available_stores();
|
|
$assessors = cc_test_fetch_assessors($pdo);
|
|
$processedAnyStore = false;
|
|
|
|
foreach ($availableStores as $storeKey => $storeConfig) {
|
|
if (!cc_test_is_tuani_main_store_key((string) $storeKey)) {
|
|
continue;
|
|
}
|
|
|
|
$processedAnyStore = true;
|
|
$repartoSettings = cc_test_fetch_reparto_settings($pdo, (string) $storeKey, $assessors);
|
|
|
|
if (!cc_test_reparto_mode_is_auto($repartoSettings['reparto_mode'] ?? 'manual')) {
|
|
echo '[' . date('Y-m-d H:i:s') . '] Reparto automático omitido: modo manual en ' . $storeKey . PHP_EOL;
|
|
continue;
|
|
}
|
|
|
|
$result = cc_test_run_locked_reparto_job(
|
|
$pdo,
|
|
(string) $storeKey,
|
|
$assessors,
|
|
static function () use ($pdo, $storeKey): array {
|
|
return cc_test_load_reparto_orders($pdo, (string) $storeKey);
|
|
},
|
|
$repartoSettings,
|
|
static function (array $orders) use ($storeKey, $storeConfig): array {
|
|
return cc_test_filter_reparto_orders($orders, (string) $storeKey, $storeConfig);
|
|
}
|
|
);
|
|
|
|
$assignedCount = (int) ($result['assigned_count'] ?? 0);
|
|
$message = (string) ($result['message'] ?? '');
|
|
$status = !empty($result['locked']) ? 'ok' : 'busy';
|
|
|
|
echo '[' . date('Y-m-d H:i:s') . '] ' . $storeKey . ' | estado=' . $status . ' | asignados=' . $assignedCount . ' | ' . $message . PHP_EOL;
|
|
}
|
|
|
|
if (!$processedAnyStore) {
|
|
echo '[' . date('Y-m-d H:i:s') . '] No se encontraron tiendas principales para reparto automático.' . PHP_EOL;
|
|
}
|