WP Desk Care - zadbaj o swój biznes online!

Sprawdzona opieka techniczna dla Twojego sklepu.

Jak dodać dane odbiorcy do faktur w WooCommerce we wtyczce Fakturownia WooCommerce?

Jak dodać dane odbiorcy do faktur w WooCommerce we wtyczce Fakturownia WooCommerce

Prowadząc sklep internetowy na WooCommerce, często trzeba dostosować proces wystawiania faktur do indywidualnych wymagań. Wiele firm oczekuje, że dokumenty sprzedaży będą zawierały nie tylko dane do faktury (billing), ale również dane odbiorcy przesyłki (shipping) – zwłaszcza gdy są one różne.

W tym studium przypadku pokazujemy, jak przy pomocy wtyczki Fakturownia WooCommerce rozwiązać problem braku danych wysyłki na automatycznie generowanych fakturach i proformach.

Dzięki temu artykułowi dowiesz się:

  • jak krok po kroku wdrożyć nową funkcjonalność,
  • jak wykorzystać filtry w WooCommerce do przesyłania dodatkowych danych do Fakturownii,
  • jakie są korzyści z takiego rozwiązania.

Opis sytuacji

W sklepie internetowym opartym na WooCommerce wykorzystywano wtyczkę Fakturownia WooCommerce do automatycznego wystawiania faktur i proform.

Początkowo celem było dodanie dodatkowych pól do automatycznych faktur. W trakcie wdrożenia pojawił się nowy wymóg – faktury powinny zawierać również dane odbiorcy przesyłki (shipping), które pojawiają się po zaznaczeniu opcji „Wyślij na inny adres?” na stronie zamówienia WooCommerce.

Problem polegał na tym, że mimo uzupełnienia pól wysyłki, dane te nie pojawiały się na wygenerowanej proformie w Fakturownii.

Fakturownia dane odbiorcy

Analiza przypadku i rozwiązanie

1. Identyfikacja przyczyny problemu

Podczas testów okazało się, że mechanizm sprawdzający dane wysyłki porównuje je z danymi do faktury. Jeśli adresy są identyczne – pola wysyłki nie są przesyłane do faktury. W przypadku, gdy w sekcji „Dane do faktury” i „Adres wysyłki” użyto tych samych informacji, kod nie dodawał dodatkowych pól.

2. Rozwiązanie problemu – użycie filtra fakturownia/invoice_proforma/data

Aby dane wysyłki pojawiły się w proformie, należało użyć odpowiedniego filtra dostępnego we wtyczce Fakturownia WooCommerce.

add_filter( 'fakturownia/invoice_proforma/data', 'wpdesk_fakturownia_shipping_client_data', 10, 2 );
function wpdesk_fakturownia_shipping_client_data( array $data, WPDesk\WooCommerceFakturownia\Data\DocumentData $document_data ) {
$shipping_address1   = $document_data->getOrder()->get_shipping_address_1();
$shipping_address2   = $document_data->getOrder()->get_shipping_address_2();
$shipping_company    = $document_data->getOrder()->get_shipping_company();
$shipping_country    = $document_data->getOrder()->get_shipping_country();
$shipping_first_name = $document_data->getOrder()->get_shipping_first_name();
$shipping_last_name  = $document_data->getOrder()->get_shipping_last_name();
$shipping_city       = $document_data->getOrder()->get_shipping_city();
$shipping_postcode   = $document_data->getOrder()->get_shipping_postcode();
$data['recipient_name']      = $shipping_company . ' ' . $shipping_first_name . ' ' . $shipping_last_name;
$data['recipient_street']    = $shipping_address1 . ' ' . $shipping_address2;
$data['recipient_post_code'] = $shipping_postcode;
$data['recipient_city']      = $shipping_city;
$data['recipient_country']   = $shipping_country;
return $data;
}

Dzięki temu kodowi dane odbiorcy przesyłki są przekazywane do API Fakturownii i pojawiają się w wygenerowanym dokumencie.

3. Wersja z warunkiem – tylko gdy adresy są różne

Fakturownia proforma dane odbiorcy

Aby uniknąć sytuacji, w której dane wysyłki dublują dane fakturowe, można użyć filtra z warunkiem:

add_filter( 'fakturownia/invoice_proforma/data', 'wpdesk_fakturownia_shipping_client_data', 10, 2 );
function wpdesk_fakturownia_shipping_client_data( array $data, WPDesk\WooCommerceFakturownia\Data\DocumentData $document_data ) {
if ( $document_data->getOrder()->get_shipping_address_1() !== $document_data->getOrder()->get_billing_address_1() ) {
$shipping_address1 = $document_data->getOrder()->get_shipping_address_1();
$shipping_address2 = $document_data->getOrder()->get_shipping_address_2();
$shipping_company = $document_data->getOrder()->get_shipping_company();
$shipping_country = $document_data->getOrder()->get_shipping_country();
$shipping_first_name = $document_data->getOrder()->get_shipping_first_name();
$shipping_last_name = $document_data->getOrder()->get_shipping_last_name();
$shipping_city = $document_data->getOrder()->get_shipping_city();
$shipping_postcode = $document_data->getOrder()->get_shipping_postcode();
$shipping_phone = '';
$shipping_email = '';
$data['recipient_name'] = $shipping_company . ' ' . $shipping_first_name . ' ' . $shipping_last_name;
$data['recipient_street'] = $shipping_address1 . '' . $shipping_address2;
$data['recipient_post_code'] = $shipping_postcode;
$data['recipient_city'] = $shipping_city;
$data['recipient_country'] = $shipping_country;
$data['recipient_email'] = $shipping_email;
$data['recipient_phone'] = $shipping_phone;
}
return $data;
}

4. Rozszerzenie rozwiązania – faktury właściwe

Aby dane odbiorcy wysyłki były dodawane również do faktur VAT, wystarczy zmienić filtr na:

fakturownia/invoice/data

Ostateczny kształt filtra, który będzie działać dla proformy oraz zwykłej faktury, oraz będzie usuwać pola odbiorca, kiedy dane odbiorcy i sprzedawcy są te same, prezentuje się następująco:

add_filter( 'fakturownia/invoice_proforma/data', 'wpdesk_fakturownia_shipping_client_data', 10, 2 );
add_filter( 'fakturownia/invoice/data', 'wpdesk_fakturownia_shipping_client_data', 10, 2 );
function wpdesk_fakturownia_shipping_client_data( array $data, WPDesk\WooCommerceFakturownia\Data\DocumentData $document_data ) {
if ( $document_data->getOrder()->get_shipping_address_1() !== $document_data->getOrder()->get_billing_address_1() ) {
$shipping_address1 = $document_data->getOrder()->get_shipping_address_1();
$shipping_address2 = $document_data->getOrder()->get_shipping_address_2();
$shipping_company = $document_data->getOrder()->get_shipping_company();
$shipping_country = $document_data->getOrder()->get_shipping_country();
$shipping_first_name = $document_data->getOrder()->get_shipping_first_name();
$shipping_last_name = $document_data->getOrder()->get_shipping_last_name();
$shipping_city = $document_data->getOrder()->get_shipping_city();
$shipping_postcode = $document_data->getOrder()->get_shipping_postcode();
$shipping_phone = '';
$shipping_email = '';
$data['recipient_name'] = $shipping_company . ' ' . $shipping_first_name . ' ' . $shipping_last_name;
$data['recipient_street'] = $shipping_address1 . '' . $shipping_address2;
$data['recipient_post_code'] = $shipping_postcode;
$data['recipient_city'] = $shipping_city;
$data['recipient_country'] = $shipping_country;
$data['recipient_email'] = $shipping_email;
$data['recipient_phone'] = $shipping_phone;
}
return $data;
}

Praktyczne wskazówki

  • Testuj na różnych danych – jeśli adresy wysyłki i faktury są identyczne, warunek może zablokować dodanie pól.
  • Sprawdzaj dokumentację wtyczki – wiele przydatnych filtrów i akcji jest opisanych w oficjalnych materiałach.

Korzyści z wdrożenia

  • Pełna zgodność dokumentów z wymaganiami – faktury zawierają wszystkie potrzebne dane.
  • Automatyzacja – dane przesyłane są automatycznie, bez potrzeby ręcznej edycji faktur.
  • Profesjonalny wygląd dokumentów – spójne dane w fakturach i proformach poprawiają wizerunek sklepu.

Podsumowanie

Wtyczka Fakturownia WooCommerce daje możliwości personalizacji dokumentów sprzedażowych w sklepie WooCommerce. Dzięki prostemu filtrowi w kodzie można rozwiązać problem braku danych wysyłki na fakturach.

Najważniejsze wnioski:

  • zawsze warto upewnić się, czy dane fakturowe i wysyłkowe różnią się, jeśli stosujemy warunki w kodzie,
  • filtry fakturownia/invoice_proforma/data oraz fakturownia/invoice/data pozwalają dodawać dane o odbiorcy do dokumentów,
  • korzystanie z dokumentacji i wsparcia technicznego przyspiesza proces rozwiązywania problemów.

Zobacz inne artykuły

Dołącz do ponad 10 000 czytelników

Poradniki WooCommerce i nowości –
wprost na Twój e-mail.

Preferencje plików cookies

Inne

Inne niekategoryzowane pliki cookie to te, które są analizowane i nie zostały jeszcze przypisane do żadnej z kategorii.

Niezbędne

Niezbędne
Niezbędne pliki cookie są absolutnie niezbędne do prawidłowego funkcjonowania strony. Te pliki cookie zapewniają działanie podstawowych funkcji i zabezpieczeń witryny. Anonimowo.

Reklamowe

Reklamowe pliki cookie są stosowane, by wyświetlać użytkownikom odpowiednie reklamy i kampanie marketingowe. Te pliki śledzą użytkowników na stronach i zbierają informacje w celu dostarczania dostosowanych reklam.

Analityczne

Analityczne pliki cookie są stosowane, by zrozumieć, w jaki sposób odwiedzający wchodzą w interakcję ze stroną internetową. Te pliki pomagają zbierać informacje o wskaźnikach dot. liczby odwiedzających, współczynniku odrzuceń, źródle ruchu itp.

Funkcjonalne

Funkcjonalne pliki cookie wspierają niektóre funkcje tj. udostępnianie zawartości strony w mediach społecznościowych, zbieranie informacji zwrotnych i inne funkcjonalności podmiotów trzecich.

Wydajnościowe

Wydajnościowe pliki cookie pomagają zrozumieć i analizować kluczowe wskaźniki wydajności strony, co pomaga zapewnić lepsze wrażenia dla użytkowników.