/**
* 6) Kolumny w tabeli klientów: następny SMS, typ SMS, akcje
*/
add_filter('manage_kt_client_posts_columns', function ($cols) {
$cols['next_sms'] = 'Następny SMS';
$cols['sms_type'] = 'Typ SMS';
$cols['sms_actions'] = 'Akcje';
return $cols;
});
add_action('manage_kt_client_posts_custom_column', function ($col, $post_id) {
if ($col === 'next_sms') {
$install = get_post_meta($post_id, 'install_date', true);
if (!$install) {
echo 'brak daty';
return;
}
try {
$install_date = new DateTime($install);
} catch (Exception $e) {
echo 'błąd daty';
return;
}
$today = new DateTime('today');
$diff = $install_date->diff($today);
$years = (int) $diff->y;
// Rok 0 → SMS 14 dni
if ($years === 0) {
$d14 = clone $install_date;
$d14->modify('+14 days');
echo $d14->format('Y-m-d');
return;
}
// Rok 1 → Twój moduł roczny
if ($years === 1) {
$r1 = clone $install_date;
$r1->modify('+12 months -30 days');
echo $r1->format('Y-m-d');
return;
}
// Rok 2+ → wieloletnie
$next = clone $install_date;
$next->modify('+' . $years . ' years -30 days');
echo $next->format('Y-m-d');
}
if ($col === 'sms_type') {
$install = get_post_meta($post_id, 'install_date', true);
if (!$install) {
echo '-';
return;
}
try {
$install_date = new DateTime($install);
} catch (Exception $e) {
echo '-';
return;
}
$today = new DateTime('today');
$diff = $install_date->diff($today);
$years = (int) $diff->y;
if ($years === 0) {
echo '14 dni';
} elseif ($years === 1) {
echo 'Roczny (gwarancja)';
} elseif ($years >= 2 && $years <= 5) {
echo 'Roczny ' . $years . ' (gwarancja)';
} else {
echo 'Roczny ' . $years . ' (bez gwarancji)';
}
}
if ($col === 'sms_actions') {
echo 'Anuluj ';
echo 'Wyślij teraz';
}
}, 10, 2);
/**
* 7) Akcja: anuluj następny SMS
*/
add_action('admin_post_kt_cancel_next_sms', function () {
if (!current_user_can('manage_options')) wp_die('Brak uprawnień.');
$id = (int) $_GET['client'];
if ($id) {
update_post_meta($id, '_cancel_next_sms', 'yes');
}
wp_redirect(admin_url('edit.php?post_type=kt_client'));
exit;
});
/**
* 8) Akcja: wyślij SMS teraz
*/
add_action('admin_post_kt_send_sms_now', function () {
if (!current_user_can('manage_options')) wp_die('Brak uprawnień.');
$id = (int) $_GET['client'];
if (!$id) wp_die('Brak ID.');
$phone = get_post_meta($id, 'client_phone', true);
if (!$phone) wp_die('Brak numeru.');
// Używamy tej samej logiki co w CRON
$install = get_post_meta($id, 'install_date', true);
if (!$install) wp_die('Brak daty montażu.');
try {
$install_date = new DateTime($install);
} catch (Exception $e) {
wp_die('Błąd daty.');
}
$today = new DateTime('today');
$diff = $install_date->diff($today);
$years = (int) $diff->y;
// Treść SMS zależna od roku
if ($years <= 5) {
$raw = "Dzień dobry {IMIE}.
Dla zachowania komfortu i higieny klimatyzacji montowanej {DATA_MONTAZU} warto wykonać okresowy przegląd: czyszczenie, dezynfekcję oraz kontrolę gwarancyjną.
Producent wymaga takiego przeglądu, aby przedłużyć gwarancję o kolejny rok.
Jeśli chcesz, napisz proszę SMS — dobiorę termin, który Ci pasuje.";
} else {
$raw = "Dzień dobry {IMIE}.
Minęło już ponad 5 lat od montażu klimatyzacji ({DATA_MONTAZU}).
Dla zachowania higieny i pełnej wydajności urządzenia warto wykonać okresowy przegląd: czyszczenie, dezynfekcję oraz kontrolę techniczną.
Jeśli chcesz, napisz proszę SMS — dobiorę dogodny termin.";
}
$msg = kt_crm_render_sms_template($raw, $id);
if (function_exists('kt_httpsms_send_sms')) {
kt_httpsms_send_sms($phone, $msg);
kt_crm_mark_sms_sent($id, 'Ręczne wysłanie SMS');
kt_crm_log_sms($id, $phone, $msg, 'Ręczne wysłanie SMS', 'manual');
}
wp_redirect(admin_url('edit.php?post_type=kt_client'));
exit;
});