Pod pretpostavkom da radite shop za hrvatsko tržište, vrlo vjerojatno neka polja na stranici naplate (checkout) želite ukloniti a neka dodati. Mnogi žele dodati polje za OIB i sl. Nerijetko u takvim situacijama korisnici posežu za pluginovima poput Woocommerce Poor Guys Swiss Knife što je, po meni, overkill jer se pomoću nekoliko linija koda može postići ono što trebamo. U FB grupi WooCommerce Hrvatska smo raspravljali upravo o toj temi te je mnogo članova grupe reklo da bi željeli dodati dodatna polja za unos podataka pravnih osoba potrebnih za izradu R1 računa.
Kako prilagođavati polja na stranici naplate obraditi ćemo detaljno u jednom od slijedećih članaka. Danas ćemo ukloniti defaultno polje za Ime poduzeća jer ćemo ga kasnije pozvati u našoj, zasebnoj sekciji podataka za pravne odsobe. Zatim ćemo dodati nekoliko novih polja (Ime, adresu i OIB tvrtke). Pomoći jQuery-a ćemo skrivati/prikazivati ta polja, ovisno o kliku na checkbox. To znači da ćemo koristiti već poznato ponašanje polja (toggle) kao i prilikom klika na kreiranje novog računa ili upisivanje zasebne adrese za dostavu.
Slijedeći korak će biti spremanje zaprimljenih podataka u meta podatke narudžbe (vidljivo u adminu) te slanje tih podataka u emailu narudžbe. Naravno, u emailu narudžbe će ti podaci biti vidljivi samo ako polja za R1 račun budu ispunjena.
Uklanjanje polja “Ime poduzeća”
Spomenuo sam već da ćemo polje za ime tvrtke kreirati kasnije. Stoga ćemo ovo polje ukloniti iz defaultnih polja za naplatu.
Koristiti ćemo woocommerce_checkout_fields
filter. Kreirat ćemo funkciju koja će ukloniti polje “Ime poduzeća” (Company name).Skrećem vam pažnju da, ako nećete koristiti cijeli plugin, ovaj kod možete zalijepiti u functions.php datoteku vaše aktivne teme, s istim efektom.
Dodavanje novih polja za pravne osobe
Nova polja s podacima pravnih osoba ćemo dodavati nakon polja s podacima za plaćanje. Kako bi vam bilo malo jasnije kako je složena stranica naplate i na koje se kuke (hooks) moramo zakačiti, pročitajte odličan članak WooCommerce Checkout Page [Visual Hook Guide] koji je napisao Rodolfo Melogli.
Dakle, moramo naša polja zakačiti na woocommerce_after_checkout_billing_form
(nakon polja s podacima za plaćanje). Kreirat ćemo checkbox i tri polja s podacima za pravne osobe.
Naša nova stranica naplate sada izgleda ovako:
Za toggle efekt ćemo dodati mrvicu jQuerya
Kako ne bi morali skrivati naša nova polja pomoću CSS-a i kako bi na korisnikov klik na checkbox “Da” nova polja “odslajdala” dole (toggle), koristit ćemo par linija jQuerya.
Spremanje vrijednosti polja u meta podatke narudžbe
Podatke koje su korisnici upisali u nova polja treba spremiti i prikazati ih na stranici narudžbe u Dodatnim poljima (custom fields). Za dodavanje, odnosno spremanje naših novih podataka u meta podatke narudžbe koristit ćemo woocommerce_checkout_update_order_meta
kuku.
Na stranici narudžbe u Dodatnim poljima su sada vidljivi podaci za pravne osobe.
Prikazivanje podataka na stranici s detaljima narudžbe
Dodatna polja su ok ali elegantnije bi bilo prikazati naše podatke direktno u polju s detaljima narudžbe.
Za to će nam poslužiti slijedeći kod:
Prikazivanje podataka na stranici nakon primljene narudžbe
Nakon obavljene narudžbe želimo prikazati podatke i u slijedećem koraku, na stranici s detaljima narudžbe.
Prikazivanje podataka u emailu nove narudžbe
Nakon obavljene kupovine, odnosno gotove narudžbe, vi kao administrator shopa i korisnik kao kupac, primate email s potvrdom narudžbe. Želimo da nam se, u slučaju da je korisnik ispunio polja za R1 račun, ti podaci prikažu i u emailu. Email će u tom slučaju izgledati ovako:
Naša dodatna polja ćemo dodati u email narudžbe koristeći filter woocommerce_email_order_meta_keys
Ali to nije sve. Za dodatnih 0 kuna dobiti ćete još….
Kad smo se već “nakačili” na 5 raznih mjesta s našim novim poljima, za kraj, kako bi sve bilo preglednije, na admin stranici, odnosno pregledu svih narudžbi, dodati ćemo novu kolonu s podatkom o tome da li je u nekoj narudžbi kupac upisivao podatke, tj. želi li R1 račun. U slučaju da netko želi R1 račun u koloni će pisati “Da”. U protivnom, u koloni će pisati “-“.
Prvo moramo registrirati R1 kolonu u administraciji narudžbi a zatim istu ispuniti podacima.
Skrivanje prikaza R1 polja za kupce izvan Hrvatske
Plugin za dodavanje polja za pravne osobe (R1 račun)
Možete skinuti besplatan plugin koji omogućava funkcionalnost opisanu u članku. Downloadajte ga, instalirajte ga kao svaki drugi plugin (upload zip datoteke) ili FTP klijentom povučete raspakirani folder plugina u wp-content/plugins folder i aktivirajte u adminu.
Plugin za dodavanje polja za pravne osobe (R1 račun) u WooCommerceu
NAPOMENA: testirano na WordPressu 4.4.2, WooCommerce inačica 2.5.3, koristeći Storefront temu.
EDIT 08.09.2018.: Objavljena verzija 1.1 – dodano selektivno učitavanje JS-a samo na stranici naplate, ispravljeno pozivanje id-a narudžbe (WC>3.x), ispravljen error u mailovima za otkazane narudžbe (props to Domagoj), testirano na WP v.4.9.8 i WC v3.4.5.
EDIT 30.01.2020.: Objavljena verzija 1.2. – dodana provjera ispravnosti OIB-a po normi ISO 7064 (MOD 11, 10), props to Marko Ivančić, i validacija polja. Testirano na WP v.5.3.2 i WC v3.9.1.
EDIT 05.06.2020.: Objavljena verzija 1.3. – Ako korisnik želi R1 račun, polja za pravne osobe su obavezna, poboljšana validacija polja. Testirano na WP v.5.4.1 i WC v4.2.0.
EDIT 22.09.2020.: Objavljena verzija 1.4. – Promijenjen način pomoću kojeg se prikazuju R1 podaci u mailovima adminu (HTML i plain text). Testirano na WP v.5.5.1 i WC v4.5.2.
EDIT 11.03.2022.: Objavljena verzija 1.5. – Dodana kompatibilnost s pluginom WooCommerce PDF Računi i Otpremnice (WooCommerce PDF Invoices & Packing Slips) . Testirano na WP v.5.9.2 i WC v6.3.1.
EDIT 25.04.2024.: Objavljena verzija 2.0 – dodana kompatibilnost s High-Performance order storage (HPOS) funkcionalnošću
Svaki komentar i share je dobro došao. Živili! 😉
Super mi je ovo. Tko ne zna implementirati kod sada vjerovatno zna. Ako i dalje ne zna tu je plugin. 😉
Ovo ide u bookmarke 🙂
Hvala ti, Luko.
Mogao sam i malo reducirati kod ali složio sam ovako, modularno. Svugdje su komentari tako da ako nekome nije bed malo pročačkati po kodu, po potrebi može ukloniti određene hookove.
Lp
Hvala legendo! Uštedio si mi vrijeme.. OPET 🙂
Hvala tebi na komentaru 😉
Oživljavam temu, da bi nakon 2 godine ponovo rekao: hvala 😀
Pozdrav,
kako bi izbjegli notice…
Notice: Undefined index: r1_checkbox in /home/mojsajt/public_html/wp-content/themes/dijete-od-teme/functions.php on line x
…kod dodatnih polja za e-mail prilikom otkazane narudžbe (neuspješnog plaćanja) što se meni malo prije dogodilo, mislim da je ispravno da linija:
if ( $_POST[‘r1_checkbox’] ) {
bude:
if (isset($_POST[‘r1_checkbox’]) && !empty($_POST[‘r1_checkbox’])) {
Ispravi me ako griješim, ali notica više nema 🙂
Svaka čast, hvala puno!
Hrvoje, hvala tebi na komentaru 😉
Pozdrav Borko,
svi pluginovi su od velike koristi. Jedan problemčić s ovim pluginom na woo 3.9.1 ako je aktivan plugin automatski je chekirano polje dostava na drugu adresu. Updejato sam plugin na 1.2 verziju no nije pomoglo.
Bok Igore,
hvala na komentaru. Da, stvarno zeza s pre-checked poljem. Moram detaljnije proučiti što se točno promijenilo. Vuče na promjenu u JS-u. U međuvremenu, možeš riješiti problem tako što u customizeru označiš da sakrije polje “Poduzeće”. Customizer -> WooCommerce -> Plaćanje
Igore,
ovo nije feature nego bug koji bi uskoro trebao biti uklonjen 😉 https://github.com/woocommerce/woocommerce/issues/25493
Pozdrav, odlicam dodatak i velika pomoc! No nazalost, vjerojatno s novim updejtima Wooa, ne radi bas najbolje. Primjerice, ne ispisuje R1 uopce na emailima koji idu prema klijentu tipa order completed email.
Dal je moguce ocekivat neki updejt?
Bok Mario,
Potrudit ću se objavit update uskoro.
Pozz
Predobro!
Primjetio sam da, kad se pojave polja za ime, adresu i OIB tvrtke, stoji da su neobavezna. Ako osoba želi R1, onda su obavezna. 🙂
Za sad sam riješio s ovim:
#r1_ime_tvrtke_field .optional,
#r1_adresa_tvrtke_field .optional,
#r1_oib_tvrtke_field .optional {
display: none;
}
Ali to ne pokriva situaciju ako polje ostane prazno.
Također, čini se da validacija ne radi u WC 4.2.0. Mislim da bi polje OIB trebalo definirati kao unos broja, tako da validacija pocrveni ako se unose primjerice slova. To je za slučaj da prestane raditi provjera ispravnositi OIB-a, koja također izgleda da ne radi u ovoj verziji WC-a.
Pozdrav!
Bok Miroslave, hvala na feedbacku. Provjerit ću što se promijenilo u WC 4.2. i radi li uredno na latest verziji.
Pozdrav,
super je plugin, puno hvala!
Međutim, kod kartične naplate (PayWay) u mailu se ne prikazuju r1 podaci.
Znate li zbog cega?
Sve je na zadnjim verzijama
Bok Ivice, molim te, skini verziju 1.4 i javi radi li uredno.
Pozdrav,
imate jednu sitnu grešku u pluginu, na mail predlošku se prikazuje dva puta Ime tvrtke umjesto Ime tvrtke + Adresa tvrtke…
Bok Luka, hvala na dojavi. Typo. Možeš skinuti novi, ispravljeni plugin ili u pluginu u datoteci woocommerce-mx-r1.php, na liniji 180 promijeniš pogrešan tekst.
Pozz
Pozdrav
Mali prijedlog za buduću verziju, da se plugin može sakriti na određenom jeziku, npr. eng, jer ako netko naručuje na primjer iz inozemstva onda je ovo polje višak.
Igore,
hvala na sugestiji. Dodao sam potreban kod iznad u postu , za slučaj da želiš sakriti polje za kupce izvan Hr. Možeš ga pejstati na kraju koda/plugina.
Živio!
Bok svima! Zapinje mi Pravna osoba izmedju email adrese i broja telefona i ignorira guranje u drugi red, imate ideju kako ispraviti? https://paste.pics/F74AR
Bok Katarina,
molim te, u style.css datoteku teme (ili u Izgled->Prilagodi->Dodatni CSS) dodaj ovo pravilo:
#mx_custom_checkout_field {
clear: both;
}
Pozdrav i hvala za plugin koji pomaže u baš onome što klijent traži.
Kako uz Woo koristi i PDF Račun, kako ubaciti na račun podatke o tvrtci i OIB-u?
Nisam bas programer pa zato pitanje.
Hvala na pomoći.
Bok Antune,
Molim te, javi točno koji PDF plugin koristiš pa ću pogledati kako to odradit.
Pozdrav Borko,
Kao prvo hvala ti na velikoj pomoći oko plugina i tome što nama pomažeš oko stvari koje ne bi mogli sami. Ja imam isto pitanje za pomoć oko plugina koji kreira PDF račun. Plugin koji koristim za PDF je PDF Invoices & Packing Slips for WooCommerce.
Unaprijed hvala na pomoći.
Roberte,
koristiš li zadnju verziju mog plugina (1.5)? Ona bi trebala omogućavati kompatibilnost s navedenim pluginom za PDF račune i otpremnice.
Štovani,
u error lugu nam često izbaci ovu grešku :
[04-Aug-2022 13:58:44 UTC] PHP Warning: Undefined array key “r1_checkbox” in /home/vidamhr/public_html/wp-content/plugins/woocommerce-mx-r1/woocommerce-mx-r1.php on line 91
[04-Aug-2022 14:11:18 UTC] PHP Warning: Undefined array key “r1_checkbox” in /home/vidamhr/public_html/wp-content/plugins/woocommerce-mx-r1/woocommerce-mx-r1.php on line 91
Što bi mogao biti problem i kako ga riješiti?
Jedino mi se dešava kada ne označim check box za R1 da mi traži podatke tvrtke kada želim predati narudžbu kao kupac.
Pozdrav Robert,
imam isti problem.
Kada želim predati narudžbu bez R1 polja čekiranog, i dalje mi izbacuje da moram unjeti ime tvrke i OIB.
Zna netko rješenje?
Zahvaljujem na vašem radu na pluginovima koji nam pomažu.
Zanima me kada ćete implementirati HPOS kompatibilnost sa pluginovima:
MX WooCommerce HRK + EUR
WooCommerce MX R1 račun
Rado opet doniram za ćevape i pivo 🙂