prefix . 'statpress_equipment'; $message = ''; $notice_class = ''; // Handle POST requests (add/update) if ( isset( $_POST['submit'] ) && check_admin_referer( 'statpress_manage_equipment' ) ) { $item_id = isset( $_POST['equipment_id'] ) ? intval( $_POST['equipment_id'] ) : 0; $data = array( 'name' => sanitize_text_field( $_POST['equipment_name'] ), 'type' => sanitize_text_field( $_POST['equipment_type'] ), 'purchase_date' => empty( $_POST['purchase_date'] ) ? null : sanitize_text_field( $_POST['purchase_date'] ), 'initial_cost' => empty( $_POST['initial_cost'] ) ? null : floatval( str_replace( ',', '.', $_POST['initial_cost'] ) ), 'status' => sanitize_text_field( $_POST['status'] ), 'notes' => sanitize_textarea_field( $_POST['notes'] ), ); if ( ! empty( $data['name'] ) ) { if ( $item_id > 0 ) { // Update $result = $wpdb->update( $table_equipment, $data, array( 'id' => $item_id ) ); if ( false !== $result ) { $message = 'Sprzęt zaktualizowany.'; $notice_class = 'notice-success'; } else { $message = 'Błąd podczas aktualizacji sprzętu: ' . $wpdb->last_error; $notice_class = 'notice-error'; } } else { // Insert $result = $wpdb->insert( $table_equipment, $data ); if ( false !== $result ) { $message = 'Sprzęt dodany.'; $notice_class = 'notice-success'; } else { $message = 'Błąd podczas dodawania sprzętu: ' . $wpdb->last_error; $notice_class = 'notice-error'; } } } else { $message = 'Nazwa sprzętu nie może być pusta.'; $notice_class = 'notice-error'; } } // Handle GET requests (delete) if ( isset( $_GET['action'], $_GET['id'], $_GET['_wpnonce'] ) && 'delete' === $_GET['action'] ) { if ( wp_verify_nonce( $_GET['_wpnonce'], 'statpress_delete_equipment_' . $_GET['id'] ) ) { // Sprawdź, czy sprzęt nie jest używany $usage_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}statpress_activities WHERE equipment_id = %d", intval( $_GET['id'] ) ) ); if ( 0 == $usage_count ) { $wpdb->delete( $table_equipment, array( 'id' => intval( $_GET['id'] ) ) ); // Usuń również powiązane wpisy w dzienniku $wpdb->delete( $wpdb->prefix . 'statpress_equipment_log', array( 'equipment_id' => intval( $_GET['id'] ) ) ); $message = 'Sprzęt usunięty.'; $notice_class = 'notice-success'; } else { $message = 'Nie można usunąć sprzętu, ponieważ jest przypisany do ' . $usage_count . ' aktywności. Zmień jego status na "wycofany".'; $notice_class = 'notice-error'; } } } // Prepare for form (for editing) $item_to_edit = null; $statuses = array( 'aktywny', 'sprzedany', 'wycofany' ); if ( isset( $_GET['action'], $_GET['id'] ) && 'edit' === $_GET['action'] ) { $item_to_edit = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_equipment WHERE id = %d", intval( $_GET['id'] ) ) ); } $table_activities = $wpdb->prefix . 'statpress_activities'; $equipment_list = $wpdb->get_results(" SELECT eq.id, eq.name, eq.type, eq.status, SUM(a.distance) as total_distance, COUNT(a.id) as activity_count FROM {$table_equipment} eq LEFT JOIN {$table_activities} a ON eq.id = a.equipment_id GROUP BY eq.id, eq.name, eq.type, eq.status ORDER BY eq.status ASC, eq.name ASC" ); ?>

id ); ?>
NazwaPrzebiegLiczba aktywnościStatusAkcje
name ); ?>
type ); ?>
total_distance ? number_format( $item->total_distance, 2, ',', ' ' ) . ' km' : '0 km'; ?> activity_count; ?> status ) ); ?> Dziennik / Serwis Edytuj Usuń

Błąd

Nie podano ID sprzętu.

'; return; } $table_equipment = $wpdb->prefix . 'statpress_equipment'; $table_equipment_log = $wpdb->prefix . 'statpress_equipment_log'; $table_activities = $wpdb->prefix . 'statpress_activities'; $message = ''; $notice_class = ''; // --- Handle Service Log form submissions (add/update/delete) --- if ( isset( $_POST['submit_log'] ) && check_admin_referer( 'statpress_manage_equipment_log' ) ) { $log_id = isset( $_POST['log_id'] ) ? intval( $_POST['log_id'] ) : 0; $log_data = array( 'equipment_id' => $equipment_id, 'log_date' => sanitize_text_field( $_POST['log_date'] ), 'log_type' => sanitize_text_field( $_POST['log_type'] ), 'description' => sanitize_textarea_field( $_POST['description'] ), 'cost' => empty( $_POST['cost'] ) ? null : floatval( str_replace( ',', '.', $_POST['cost'] ) ), 'mileage' => empty( $_POST['mileage'] ) ? null : intval( $_POST['mileage'] ), ); if ( ! empty( $log_data['log_date'] ) && ! empty( $log_data['log_type'] ) && ! empty( $log_data['description'] ) ) { if ( $log_id > 0 ) { $wpdb->update( $table_equipment_log, $log_data, array( 'id' => $log_id ) ); $message = 'Wpis w dzienniku zaktualizowany.'; } else { $wpdb->insert( $table_equipment_log, $log_data ); $message = 'Wpis dodany do dziennika.'; } $notice_class = 'notice-success'; } else { $message = 'Wypełnij wymagane pola (Data, Typ, Opis).'; $notice_class = 'notice-error'; } } if ( isset( $_GET['action'], $_GET['log_id'], $_GET['_wpnonce'] ) && 'delete_log' === $_GET['action'] ) { if ( wp_verify_nonce( $_GET['_wpnonce'], 'statpress_delete_log_' . $_GET['log_id'] ) ) { $wpdb->delete( $table_equipment_log, array( 'id' => intval( $_GET['log_id'] ) ) ); $message = 'Wpis z dziennika usunięty.'; $notice_class = 'notice-success'; } } // --- Get Data --- $equipment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_equipment WHERE id = %d", $equipment_id ) ); if ( ! $equipment ) { echo '

Błąd

Nie znaleziono sprzętu o podanym ID.

'; return; } $total_mileage = $wpdb->get_var( $wpdb->prepare( "SELECT SUM(distance) FROM $table_activities WHERE equipment_id = %d", $equipment_id ) ); $total_service_cost = $wpdb->get_var( $wpdb->prepare( "SELECT SUM(cost) FROM $table_equipment_log WHERE equipment_id = %d", $equipment_id ) ); $service_log = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $table_equipment_log WHERE equipment_id = %d ORDER BY log_date DESC, id DESC", $equipment_id ) ); $log_to_edit = null; if ( isset( $_GET['action'], $_GET['log_id'] ) && 'edit_log' === $_GET['action'] ) { $log_to_edit = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_equipment_log WHERE id = %d", intval( $_GET['log_id'] ) ) ); } $log_types = array( 'Naprawa', 'Zakup części', 'Przegląd', 'Modyfikacja', 'Inne' ); ?>

← Powrót do listy sprzętu

Podsumowanie Sprzętu

Całkowity przebieg: km

0 ) : ?>

Całkowity koszt serwisu:

Status: status ) ); ?>

purchase_date ) : ?>

Data zakupu: purchase_date ); ?>

initial_cost ) : ?>

Koszt zakupu: initial_cost, 2, ',', ' ' ); ?> zł

notes ) : ?>

Notatki:
notes ) ); ?>

Przebieg sprzętu w momencie serwisu. Domyślnie aktualny całkowity przebieg.

Anuluj edycję
Suma kosztów:
DataTypOpisKosztPrzebiegAkcje
Brak wpisów w dzienniku.
log_date ); ?> log_type ); ?> description ) ); ?> cost ? number_format( $log->cost, 2, ',', ' ' ) . ' zł' : '-'; ?> mileage ? number_format( $log->mileage, 0, '', ' ' ) . ' km' : '-'; ?> Edytuj | Usuń