Zapytania ofertowe (RFQ)
Moduł zapytań ofertowych (RFQ) zamienia przycisk “Dodaj do koszyka” na “Zapytaj o cenę”. Klienci składają zapytania zamiast kupować bezpośrednio. Przydatne w sklepach B2B i przy produktach z indywidualną wyceną.
Konfiguracja
Dział zatytułowany „Konfiguracja”Przejdź do WooCommerce > Ustawienia > Polski PRO > Zapytania ofertowe i włącz moduł.
Ustawienia podstawowe
Dział zatytułowany „Ustawienia podstawowe”| Ustawienie | Opcja w bazie | Domyślna wartość | Opis |
|---|---|---|---|
| Włącz moduł | polski_quote | Nie | Aktywuje funkcjonalność zapytań ofertowych |
| Tekst przycisku | polski_quote_button_text | ”Zapytaj o cenę” | Tekst wyświetlany na przycisku |
| Pokaż na listach | polski_quote_show_on_loops | Nie | Wyświetla przycisk zapytania na stronach archiwum i kategorii |
| Wymagaj logowania | polski_quote_require_login | Nie | Wymaga zalogowania przed wysłaniem zapytania |
| Zgoda na przetwarzanie | polski_quote_consent | Tak | Dodaje checkbox zgody RODO do formularza |
Pola formularza
Dział zatytułowany „Pola formularza”Formularz zapytania ofertowego zawiera domyślnie:
- Imię i nazwisko - wymagane
- Adres e-mail - wymagane, walidacja formatu
- Telefon - opcjonalne
- Ilość - wymagane, walidacja liczbowa
- Wiadomość - opcjonalne, textarea
- Zgoda RODO - checkbox, wymagane jeśli włączone
Działanie na froncie
Dział zatytułowany „Działanie na froncie”Zamiana przycisku
Dział zatytułowany „Zamiana przycisku”Po włączeniu moduł zamienia przycisk “Dodaj do koszyka” na przycisk zapytania. Dotyczy:
- Strony pojedynczego produktu
- Stron archiwum i kategorii (jeśli opcja
polski_quote_show_on_loopsjest włączona) - Widgetów i shortcode’ów produktowych
Shortcode
Dział zatytułowany „Shortcode”Przycisk zapytania umieść w dowolnym miejscu shortcodem:
[polski_quote_button product_id="123" text="Zapytaj o cenę" class="custom-class"]Parametry:
| Parametr | Wymagany | Opis |
|---|---|---|
product_id | Nie | ID produktu (domyślnie bieżący produkt) |
text | Nie | Tekst przycisku |
class | Nie | Dodatkowe klasy CSS |
Wysyłka formularza (AJAX)
Dział zatytułowany „Wysyłka formularza (AJAX)”Formularz wysyła się przez AJAX, bez przeładowania strony. Klient widzi potwierdzenie z numerem zapytania.
/** * Filtruje dane zapytania ofertowego przed zapisem. * * @param array $quote_data Dane zapytania * @param int $product_id ID produktu * @param \WP_User $user Obiekt zalogowanego użytkownika lub pusty */apply_filters('polski_pro/quote/before_save', array $quote_data, int $product_id, $user): array;Przykład - dodanie niestandardowego pola:
add_filter('polski_pro/quote/before_save', function (array $quote_data, int $product_id, $user): array { $quote_data['meta']['company_nip'] = sanitize_text_field($_POST['company_nip'] ?? ''); return $quote_data;}, 10, 3);Logowanie zgód
Dział zatytułowany „Logowanie zgód”Każde zapytanie zapisuje dane o udzielonych zgodach:
- Znacznik czasu (timestamp) udzielenia zgody
- Adres IP klienta (hashowany SHA-256)
- Treść zgody w momencie udzielenia
- Wersja formularza
Dane trafiają do tabeli {prefix}_polski_quote_consents i można je eksportować do audytu RODO.
/** * Akcja wywoływana po zapisaniu zgody. * * @param int $quote_id ID zapytania ofertowego * @param array $consent Dane zgody * @param string $ip_hash Zahashowany adres IP */do_action('polski_pro/quote/consent_logged', int $quote_id, array $consent, string $ip_hash);Panel administracyjny
Dział zatytułowany „Panel administracyjny”Lista zapytań
Dział zatytułowany „Lista zapytań”Przejdź do WooCommerce > Zapytania ofertowe. Lista zawiera:
- Numer zapytania
- Dane klienta (imię, e-mail, telefon)
- Produkt i ilość
- Status (nowe, w trakcie, odpowiedziano, zamknięte)
- Data złożenia
Statusy zapytań
Dział zatytułowany „Statusy zapytań”| Status | Opis |
|---|---|
new | Nowe zapytanie, nieobsłużone |
in_progress | W trakcie przygotowywania oferty |
replied | Oferta wysłana do klienta |
accepted | Klient zaakceptował ofertę |
rejected | Klient odrzucił ofertę |
closed | Zapytanie zamknięte |
Odpowiadanie na zapytanie
Dział zatytułowany „Odpowiadanie na zapytanie”Administrator może:
- Przejrzeć szczegóły zapytania
- Dodać notatkę wewnętrzną
- Ustawić cenę ofertową
- Wysłać odpowiedź e-mail do klienta
- Przekształcić zapytanie w zamówienie WooCommerce
Powiadomienia e-mail
Dział zatytułowany „Powiadomienia e-mail”Szablony e-mail modułu:
| Odbiorca | Wyzwalacz | |
|---|---|---|
| Nowe zapytanie ofertowe | Administrator | Złożenie zapytania przez klienta |
| Potwierdzenie zapytania | Klient | Złożenie zapytania |
| Odpowiedź na zapytanie | Klient | Wysłanie oferty przez administratora |
| Zmiana statusu zapytania | Klient | Zmiana statusu zapytania |
Szablony e-mail można nadpisać w motywie w katalogu woocommerce/emails/:
polski-pro-quote-new.phppolski-pro-quote-confirmation.phppolski-pro-quote-reply.phppolski-pro-quote-status.php
Filtr formularza
Dział zatytułowany „Filtr formularza”/** * Filtruje pola formularza zapytania ofertowego. * * @param array $fields Tablica pól formularza * @param int $product_id ID produktu */apply_filters('polski_pro/quote/form_fields', array $fields, int $product_id): array;Przykład - dodanie pola NIP:
add_filter('polski_pro/quote/form_fields', function (array $fields, int $product_id): array { $fields['company_nip'] = [ 'type' => 'text', 'label' => 'NIP firmy', 'required' => false, 'priority' => 35, ]; return $fields;}, 10, 2);Akcja po wysłaniu
Dział zatytułowany „Akcja po wysłaniu”/** * Akcja wywoływana po zapisaniu zapytania ofertowego. * * @param int $quote_id ID zapytania * @param array $quote_data Dane zapytania */do_action('polski_pro/quote/submitted', int $quote_id, array $quote_data);Przykład - wysyłka do CRM:
add_action('polski_pro/quote/submitted', function (int $quote_id, array $quote_data): void { $crm_api = new MyCrmApi(); $crm_api->create_lead([ 'name' => $quote_data['name'], 'email' => $quote_data['email'], 'product' => $quote_data['product_name'], 'qty' => $quote_data['quantity'], ]);}, 10, 2);Rozwiązywanie problemów
Dział zatytułowany „Rozwiązywanie problemów”Przycisk “Dodaj do koszyka” nadal się wyświetla
Sprawdź, czy opcja polski_quote jest włączona. Wyczyść cache wtyczek cache’ujących (WP Super Cache, W3 Total Cache, LiteSpeed Cache).
Formularz nie wysyła się (błąd AJAX)
Sprawdź konsolę przeglądarki pod kątem błędów JavaScript. Upewnij się, że skrypt polski-pro-quote.js jest załadowany. Konflikty z innymi wtyczkami mogą blokować AJAX - wyłącz pozostałe wtyczki, aby zidentyfikować konflikt.
E-maile nie są wysyłane Sprawdź konfigurację e-mail w WooCommerce > Ustawienia > E-maile. Upewnij się, że szablony Polski PRO są włączone.
Dalsze kroki
Dział zatytułowany „Dalsze kroki”- Zgłaszaj problemy: GitHub Issues
- Integracja z trybem katalogowym: Tryb katalogowy B2B