Przejdź do głównej zawartości

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ą.

Przejdź do WooCommerce > Ustawienia > Polski PRO > Zapytania ofertowe i włącz moduł.

UstawienieOpcja w bazieDomyślna wartośćOpis
Włącz modułpolski_quoteNieAktywuje funkcjonalność zapytań ofertowych
Tekst przyciskupolski_quote_button_text”Zapytaj o cenę”Tekst wyświetlany na przycisku
Pokaż na listachpolski_quote_show_on_loopsNieWyświetla przycisk zapytania na stronach archiwum i kategorii
Wymagaj logowaniapolski_quote_require_loginNieWymaga zalogowania przed wysłaniem zapytania
Zgoda na przetwarzaniepolski_quote_consentTakDodaje checkbox zgody RODO do 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

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_loops jest włączona)
  • Widgetów i shortcode’ów produktowych

Przycisk zapytania umieść w dowolnym miejscu shortcodem:

[polski_quote_button product_id="123" text="Zapytaj o cenę" class="custom-class"]

Parametry:

ParametrWymaganyOpis
product_idNieID produktu (domyślnie bieżący produkt)
textNieTekst przycisku
classNieDodatkowe klasy CSS

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);

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);

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
StatusOpis
newNowe zapytanie, nieobsłużone
in_progressW trakcie przygotowywania oferty
repliedOferta wysłana do klienta
acceptedKlient zaakceptował ofertę
rejectedKlient odrzucił ofertę
closedZapytanie zamknięte

Administrator może:

  1. Przejrzeć szczegóły zapytania
  2. Dodać notatkę wewnętrzną
  3. Ustawić cenę ofertową
  4. Wysłać odpowiedź e-mail do klienta
  5. Przekształcić zapytanie w zamówienie WooCommerce

Szablony e-mail modułu:

E-mailOdbiorcaWyzwalacz
Nowe zapytanie ofertoweAdministratorZłożenie zapytania przez klienta
Potwierdzenie zapytaniaKlientZłożenie zapytania
Odpowiedź na zapytanieKlientWysłanie oferty przez administratora
Zmiana statusu zapytaniaKlientZmiana statusu zapytania

Szablony e-mail można nadpisać w motywie w katalogu woocommerce/emails/:

  • polski-pro-quote-new.php
  • polski-pro-quote-confirmation.php
  • polski-pro-quote-reply.php
  • polski-pro-quote-status.php
/**
* 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 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);

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.

Ta strona ma wyłącznie charakter informacyjny i nie stanowi porady prawnej. Przed wdrożeniem skonsultuj się z prawnikiem. Polski for WooCommerce jest oprogramowaniem open source (GPLv2) dostarczanym bez gwarancji.