ciao, io sono partita da questa contribution:
http://www.oscommerce.com/community/con ... ch,piva+cf
e l'ho modificata in modo tale che:
- il controllo venisse effettuato solo per i clienti che in fase di registrazione inseriscono "Italia" come stato (in realtà la p iva potrebbe servire anche all'estero, ma per ora l'ho cambiato così...).
- il CF fosse obbligatorio solo per chi NON inserisce la ragione sociale
- la P.IVA fosse obbligatoria solo per chi inserisce la ragione sociale (rendendo quindi non obbligatorio il campo del CF).
Ti riporto di seguito la procedura, purtroppo potrei dimenticare qualcosa perchè è una modifica fatta molto tempo fa.
- Intanto installa la contribution e in admin->customer details rendi attivi e obbligatori sia CF che P.IVA
Poi devi fare una serie di modifiche:
- nei due file configure.php (sia nel file in root/includes che in root/admin/includes) ho aggiunto questa riga:
Codice: Seleziona tutto
define('ZZZ_ITANUM', '105'); // codice dell'italia nelle select
(è l'id dell'italia nel DB, probabilmente c'è un modo migliore per ricavare questo numero nelle varie pagine senza salvarlo qui, ma avendo nozioni quasi nulle di php, ho risolto così)
- in address_book_process.php circa alla riga 70
sostituisci
con
Codice: Seleziona tutto
//modifico: PIVA richiesto solo se si inserisce l'azienda e l'ITALIA
if ((ACCOUNT_PIVA) == 'true' && ($company !="") && ($country== ZZZ_ITANUM)){
circa alla riga 95 sostituisci
Codice: Seleziona tutto
//modifico: CF richiesto solo se NON si inserisce l'azienda
if ((ACCOUNT_CF == 'true') && ($company =="") && ($country== ZZZ_ITANUM)) {
in create_account.php, circa alla riga 110 sostituisci
con
Codice: Seleziona tutto
//modifico: PIVA richiesto solo se si inserisce l'azienda e l'ITALIA
if ((ACCOUNT_PIVA) == 'true' && ($company !="") && ($country== ZZZ_ITANUM)){
e (riga 135 ca)
con
Codice: Seleziona tutto
//modifico: CF richiesto solo se NON si inserisce l'azienda
if ((ACCOUNT_CF == 'true') && ($company =="") && ($country== ZZZ_ITANUM)) {
in includes/form_check.js.php riga 23 sostituisci (occhio che io come nome della nazione uso Italia e non Italy)
Codice: Seleziona tutto
if (field_value == '' || field_value.length < field_size) {
error_message = error_message + "* " + message + "\n";
error = true;
}
con
Codice: Seleziona tutto
if (field_value == '' || field_value.length < field_size) {
if (field_name == 'cf') {
if (form.elements["country"].options[form.elements["country"].selectedIndex].text=="Italia" && form.elements["company"].value==""){
error_message = error_message + "* " + message +"\n";
error = true;
}
} else if (field_name == 'piva') {
if (form.elements["country"].options[form.elements["country"].selectedIndex].text=="Italia" && form.elements["company"].value!=""){
error_message = error_message + "* " + message +"\n";
error = true;
}
} else {
error_message = error_message + "* " + message +"\n";
error = true;
}
}
circa alla riga 125 sostituisci (sembra un errore di ortografia...)
Codice: Seleziona tutto
<?php if (ACCOUNT_PIVA_REQ == 'true') echo ' check_input("pivae", 0, "' . ENTRY_PIVA_ERROR . '");' . "\n"; ?>
con
Codice: Seleziona tutto
<?php if (ACCOUNT_PIVA_REQ == 'true') echo ' check_input("piva", 0, "' . ENTRY_PIVA_ERROR . '");' . "\n"; ?>
in inludes/languages/italiano.php (duplicarlo nelle altre lingue) verificare che siano definite tutte queste voci:
Codice: Seleziona tutto
define('ENTRY_PIVA', 'Parita Iva:');
define('ENTRY_PIVA_ERROR', 'Numero di Partita Iva non corretto.');
define('ENTRY_PIVA_TEXT', '* Obbligatorio per le aziende italiane');
define('ENTRY_CF', 'Codice Fiscale:');
define('ENTRY_CF_TEXT', '* Obbligatorio per i privati italiani');
define('ENTRY_CF_ERROR', 'Codice Fiscale non corretto.');
in admin/customers.php circa alla riga 370 sostituisci
Codice: Seleziona tutto
if (document.customers.elements['entry_cf'].value == "") {
con
Codice: Seleziona tutto
//modificato: CF richiesto solo per privati italiani
if (document.customers.elements['entry_cf'].value == "" && document.customers.entry_country_id.options[document.customers.entry_country_id.selectedIndex].text=="Italia" && document.customers.elements['entry_company'].value=="") {
in admin/languages/italiano.php (duplicare nelle altre lingue) verificare la presenza di:
Codice: Seleziona tutto
define('ENTRY_PIVA', 'Partita IVA:');
define('ENTRY_CF', 'Codice Fiscale:');
define('JS_PIVA', 'La Partita IVA è obbligatoria per le aziende italiane\n');
define('JS_CF', 'Il codice fiscale è obbligatorio per i privati italiani\n');
Spero di non aver dimenticato qualche pezzo... Nel caso fammi sapere... nel mio negozio la modifica funziona senza problemi
Ciao
Nadia