=== Romanian billing fields ===
Contributors: robertutzu
Donate link: https://paypal.me/gheorghiucezarrobert
Tags: factura, facturare, persoana juridica, billing romania, persoana fizica
Requires at least: 4.3.0
Requires PHP: 7.4
Tested up to: 7.0
WC requires at least: 7.0.0
WC tested up to: 9.9
Stable tag: 2.2.0
WC HPOS compatible: yes
License: GPL v3 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html

Adaugă automat câmpuri de facturare în limba română la WooCommerce Checkout (clasic și block).

== Description ==

Acest plugin adaugă câmpuri de facturare în limba română la WooCommerce Checkout.

Adaugă câmpuri personalizate pentru legislația română:

PF (Persoană Fizică):
* CNP - validat cu cifra de control

PJ (Persoană Juridică):
* CIF/CUI - validat cu cifra de control (acceptă și prefixul RO)
* Număr de înregistrare la Registrul Comerțului (opțional - parohiile, ONG-urile, asociațiile și instituțiile publice nu au)
* Numărul contului bancar (IBAN)
* Numele băncii

La checkout utilizatorul alege mai întâi tipul de facturare (PF sau PJ), după care sunt afișate doar câmpurile relevante. Câmpurile obligatorii sunt validate atât în browser cât și pe server, inclusiv algoritmic (cifra de control pentru CNP și CIF).

Câmpurile sunt afișate în adresa de facturare sub Numele companiei - pe pagina checkout, pagina de mulțumire, comenzile din admin și e-mailuri. Tipul de facturare (PF/PJ) este afișat și în adminul comenzii.

Puteți modifica aceste câmpuri ca administrator prin comenzi sau ca utilizator din pagina Contul meu.

= Checkout clasic și Checkout block =

Pluginul funcționează cu ambele tipuri de checkout:

* Checkout clasic (shortcode `[woocommerce_checkout]`) - câmpurile apar în adresa de facturare.
* Checkout block (WooCommerce 8.9+) - câmpurile apar în secțiunea Contact și sunt salvate în contul clientului. Afișarea condiționată (CIF doar la PJ, CNP doar la PF) necesită WooCommerce 9.9+; pe versiuni mai vechi toate câmpurile sunt vizibile, iar regulile sunt aplicate pe server.

Pentru Checkout block, setați câmpul Companie pe „Opțional" din setările blocului Checkout, altfel persoanele juridice nu pot completa denumirea firmei.

= Nr.Reg.Com. obligatoriu =

Implicit, Nr.Reg.Com. este opțional. Pentru magazine strict B2B îl puteți face obligatoriu:

`add_filter( 'grc_rbf_nrregcom_required', '__return_true' );`

Demo:
https://tastewp.com/new?pre-installed-plugin-slug=woocommerce%2Cromanian-billing-fields&redirect=plugins.php&ni=true

== Installation ==

Consultați:
http://codex.wordpress.org/Managing_Plugins#Installing_Plugins

După instalare și activare nu este necesară nicio configurare - câmpurile apar automat în checkout.

== Changelog ==

** 2.2.0 **
- Adăugat: suport pentru Checkout block prin Additional Checkout Fields API (WooCommerce 8.9+) - selectul PF/PJ, CIF, Nr.Reg.Com., IBAN, Banca și CNP apar în secțiunea Contact
- Adăugat: afișare și obligativitate condiționată în Checkout block (WooCommerce 9.9+)
- Adăugat: validare server-side pentru Checkout block (tip facturare, nume firmă și CIF obligatorii la PJ, cifră de control CNP/CIF)
- Adăugat: datele din Checkout block sunt salvate și în aceleași meta-uri ca la checkout-ul clasic (`_persoana`, `_billing_b_*`) - adresa formatată, adminul, e-mailurile și integrările de facturare funcționează identic
- Schimbat: compatibilitatea cu Checkout block este acum declarată (`cart_checkout_blocks` = true)
- Fix: Nr.Reg.Com. nu mai este obligatoriu pentru PJ - entitățile neînregistrate la ONRC (parohii, ONG-uri, asociații, instituții publice) pot plasa comenzi doar cu CIF
- Adăugat: filtrul `grc_rbf_nrregcom_required` pentru cine vrea Nr.Reg.Com. obligatoriu

** 2.1.0 **
- Adăugat: label explicit „Nume firma" și placeholder pentru câmpul de companie (înlocuiește label-ul default WooCommerce)
- Adăugat: placeholdere pentru toate câmpurile custom (CIF, Nr.Reg.Com., Cont/IBAN, Banca, CNP)
- Fix: câmpurile CIF, Nr.Reg.Com. și Compania nu mai sunt obligatorii în afara checkout-ului - persoanele fizice își pot salva acum adresa din Contul meu → Adrese fără a completa date de firmă
- Fix: câmpul Compania nu mai este obligatoriu pe adresa de livrare (required se propaga din câmpurile default și pe shipping)
- Fix: selectul „tip de facturare" își păstrează valoarea după o eroare de validare la checkout (nu se mai resetează la gol)
- Adăugat: validare algoritmică CNP (13 cifre + cifra de control) și CIF/CUI (cifra de control, cu sau fără prefixul RO) pe server
- Adăugat: tipul de facturare (PF/PJ) este afișat în adminul comenzii, lângă adresa de facturare
- Adăugat: declarată explicit incompatibilitatea cu Checkout block (`cart_checkout_blocks` = false) - utilizatorii nu mai rămân fără câmpuri fără avertisment
- Îmbunătățit: JS-ul de toggle este acum atașat de scriptul `wc-checkout` prin `wp_add_inline_script` și se re-aplică la `updated_checkout` și după re-randarea formularului
- Îmbunătățit: text domain propriu (`grc-romanian-billing-fields`) pentru toate stringurile - traducerile se pot încărca corect
- Îmbunătățit: `wp_unslash()` înainte de `wc_clean()` la toate citirile din $_POST, plus adnotări PHPCS pentru Plugin Check
- Îmbunătățit: hook-urile se înregistrează pe `plugins_loaded` cu verificare `class_exists('WooCommerce')` - funcționează corect și pe multisite cu WooCommerce activat la nivel de rețea
- Adăugat header `Requires Plugins: woocommerce` (WordPress 6.5+)

** 2.0.0 **
- Versiune majoră - refactorizare completă a codului
- Fix critic: eliminat `apply_filters('woocommerce_default_address_fields')` din `woocommerce_admin_billing_fields` care putea crea o buclă recursivă; câmpurile custom sunt acum adăugate direct în filtrul de admin
- Fix: mutat accesul la `$_POST['persoana']` din `woocommerce_default_address_fields` (context generic) în `woocommerce_checkout_fields` (apelat doar la checkout), eliminând warning-uri PHP în admin și în alte contexte
- Adăugat validare server-side prin `woocommerce_checkout_process` - câmpul „tip de facturare" este acum verificat și pe server, nu doar în browser
- Salvare explicită a câmpurilor custom prin `woocommerce_checkout_order_created` folosind `$order->update_meta_data()` și `$order->save()` - compatibil complet HPOS
- Îmbunătățit JS: selectorii jQuery sunt acum cacheați în variabile, nu recreați la fiecare apel de funcție
- Adăugat case `else hideAll()` în JS pentru situația în care utilizatorul revine la opțiunea goală din select
- Actualizat versiune PHP minimă la 7.4 și WC minimă la 7.0.0

** 1.9.7 **
- Fix major compatibilitate WooCommerce: eliminat accesul direct la meta `_billing_*`
- Înlocuit `get_meta()` cu getters oficiali WooCommerce (`get_billing_*`)
- Elimină erorile `is_internal_meta_key was called incorrectly`
- Compatibilitate mai bună cu WooCommerce 8+ și HPOS
- Îmbunătățiri minore validare input (`wc_clean`)

** 1.9.6 **
- Diverse îmbunătățiri vizuale
- Suport HPOS

** 1.7.0 **
- Changed from radio buttons to select input PF/PJ

** 1.6.3 **
- Support check

** 1.6.2 **
- Support check

** 1.6.1 **
- Support check

** 1.6 **
- Support check

** 1.5 **
- Fixed admin field show

** 1.4 **
- Fixed input save

** 1.3 **
- Fixed tags

** 1.2 **
- Fixed compatibility with WooCommerce 4.*

** 1.1 **
- Fixed error of get_order

** 1.0 **
- Initial release
