Pagina 1 di 1

Codice fiscale

Inviato: 14/09/2007, 16:14
da linda74
Ciao a tutti ....

è possibile disabilitare il controllo sul campo Codice Fiscale quando un nuovo utente si registra e richiede fattura?

Chiedo questo perchè, a volte capita che sia una società di capitali ed il codice fiscale è solo numerico anzichè alfanumerico .

Grazie.

Linda.

Inviato: 16/09/2007, 13:24
da Spiderweb
Anch'io ho il tuo stesso problema ma perfortuna per adesso tutti i cienti registrati sono privati...

Comunque non è che devi disabilitare il controllo nel caso che il cliente richieda fattura, perchè se questo è un privato il CF ti serve visto che lo devi riportare nel documento, va disabilitato solo nel caso sia una società.

Secondo me la soluzione migliore è fare come hanno fatto altri, cioè creare 2 pagine distinte per la registrazione.
Altrimenti si potrebbe creare un altro campo per il codice fiscale aziendale, e quello senza controllo.
Appena posso faccio qualche prova e se ho dei risultati li posto qui, ma non prometto niente a nessuno :wink: :wink:

AGGIORNAMENTO:

Per aggiungere uno o più campi in fase di registrazione, comodamente modificabili nella parte Admin, basta installare la contribution customers_extra_fields_1_2a.

Come installazione è un po' lunga ma da quello che ho visto funziona bene, devo sempre testarla per bene ed adesso non ho tempo però mi sembra che faccia al caso mio.

Per riaggancarsi al "problema2 del controllo CF, adesso con questa contribution ho creato un nuovo campo chiamato "Codice Fiscale Aziendale" dove l'unico controllo è la lunghezzapertanto si può inserire anche numerico senza problemi.
Naturalmente non va settato obbligatorio altrimenti viene richiesto anche a un privato.

Di suo la contribution crea un nuovo riquadro per questo campo, con tanto di titolo chiamato "Extra Fields", se si vuole far sol apparire il form nei dati Aziendali basta modificare un po' il codice ricordandosi però che se poi si aggiungono altri campi extra vengono mostrati in quel punto.
Insomma, con qualche modifica questa contribution è la soluzione (almeno per me :wink: )

P.S. non la cercate sul mio sito perchè per adesso non ho messo le modifiche online, penso di farlo stasera.

Inviato: 20/09/2007, 21:51
da Spiderweb
Per semplificare le cose e togliere permanentemente il controllo del Codice Fiscale, così da poter inserire anche numeri, nel file create_account.php cancella la parte in rosso:

if (ACCOUNT_CF == 'true') {
if (($cf == "") && (ACCOUNT_CF_REQ == 'true')) {
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
} else if ((strlen($cf) != 16) && ($cf != "")) {
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
} else if (strlen($cf) == 16) {
$cf = strtoupper($cf);
if( ! ereg("^[A-Z0-9]+$", $cf) ){
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
} else {
$s = 0;
for( $i = 1; $i <= 13; $i += 2 ){
$c = $cf[$i];
if( '0' <= $c && $c <= '9' )
$s += ord($c) - ord('0');
else
$s += ord($c) - ord('A');
}
for( $i = 0; $i <= 14; $i += 2 ){
$c = $cf[$i];
switch( $c ){
case '0': $s += 1; break;
case '1': $s += 0; break;
case '2': $s += 5; break;
case '3': $s += 7; break;
case '4': $s += 9; break;
case '5': $s += 13; break;
case '6': $s += 15; break;
case '7': $s += 17; break;
case '8': $s += 19; break;
case '9': $s += 21; break;
case 'A': $s += 1; break;
case 'B': $s += 0; break;
case 'C': $s += 5; break;
case 'D': $s += 7; break;
case 'E': $s += 9; break;
case 'F': $s += 13; break;
case 'G': $s += 15; break;
case 'H': $s += 17; break;
case 'I': $s += 19; break;
case 'J': $s += 21; break;
case 'K': $s += 2; break;
case 'L': $s += 4; break;
case 'M': $s += 18; break;
case 'N': $s += 20; break;
case 'O': $s += 11; break;
case 'P': $s += 3; break;
case 'Q': $s += 6; break;
case 'R': $s += 8; break;
case 'S': $s += 12; break;
case 'T': $s += 14; break;
case 'U': $s += 16; break;
case 'V': $s += 10; break;
case 'W': $s += 22; break;
case 'X': $s += 25; break;
case 'Y': $s += 24; break;
case 'Z': $s += 23; break;
}
}
if( chr($s%26 + ord('A')) != $cf[15] ){
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
}
}

}
}

Questo è il codice che esegue in controllo...

Inviato: 27/10/2007, 23:42
da Spiderweb
Mi sono accorto adesso che va fatta questa modifica anche nel file account_edit altrimenti se un Cliente prova a modificare qualche dato della registrazione salta fuori l'errore del CF perchè numerico.

Inviato: 28/10/2007, 19:33
da linda74
Grazie Spiderweb per la risposta ....

Ho provato a fare come hai scritto in entrambi i file ma al momento della prova di registrazione mi compare il seguente errore:

Parse error: syntax error, unexpected $end in /home/web/www.eurostore-shop.com/website/catalog/ ... ccount.php on line 317

Questo è il file CREATE_ACCOUNT.PHP:

<?php
/*
$Id: create_account.php,v 1.65 2003/06/09 23:03:54 hpdl Exp $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright (c) 2003 osCommerce

Released under the GNU General Public License
*/

require('includes/application_top.php');

// needs to be included earlier to set the success message in the messageStack
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CREATE_ACCOUNT);

$process = false;
if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process')) {
$process = true;

if (ACCOUNT_GENDER == 'true') {
if (isset($HTTP_POST_VARS['gender'])) {
$gender = tep_db_prepare_input($HTTP_POST_VARS['gender']);
} else {
$gender = false;
}
}
$firstname = tep_db_prepare_input(strtoupper($HTTP_POST_VARS['firstname']{0}) . substr($HTTP_POST_VARS['firstname'], 1));
$lastname = tep_db_prepare_input(strtoupper($HTTP_POST_VARS['lastname']));
if (ACCOUNT_DOB == 'true') $dob = tep_db_prepare_input($HTTP_POST_VARS['dob']);
$email_address = tep_db_prepare_input($HTTP_POST_VARS['email_address']);
if (ACCOUNT_COMPANY == 'true') $company = tep_db_prepare_input($HTTP_POST_VARS['company']);

//PIVACF start
if (ACCOUNT_PIVA == 'true') $piva = tep_db_prepare_input($HTTP_POST_VARS['piva']);
if (ACCOUNT_CF == 'true') $cf = tep_db_prepare_input($HTTP_POST_VARS['cf']);
//PIVACF end

$street_address = tep_db_prepare_input($HTTP_POST_VARS['street_address']);
if (ACCOUNT_SUBURB == 'true') $suburb = tep_db_prepare_input($HTTP_POST_VARS['suburb']);
$postcode = tep_db_prepare_input($HTTP_POST_VARS['postcode']);
$city = tep_db_prepare_input($HTTP_POST_VARS['city']);
if (ACCOUNT_STATE == 'true') {
$state = tep_db_prepare_input($HTTP_POST_VARS['state']);
if (isset($HTTP_POST_VARS['zone_id'])) {
$zone_id = tep_db_prepare_input($HTTP_POST_VARS['zone_id']);
} else {
$zone_id = false;
}
}
$country = tep_db_prepare_input($HTTP_POST_VARS['country']);
$telephone = tep_db_prepare_input($HTTP_POST_VARS['telephone']);
$fax = tep_db_prepare_input($HTTP_POST_VARS['fax']);
if (isset($HTTP_POST_VARS['newsletter'])) {
$newsletter = tep_db_prepare_input($HTTP_POST_VARS['newsletter']);
} else {
$newsletter = false;
}
$password = tep_db_prepare_input($HTTP_POST_VARS['password']);
$confirmation = tep_db_prepare_input($HTTP_POST_VARS['confirmation']);

$error = false;

if (ACCOUNT_GENDER == 'true') {
if ( ($gender != 'm') && ($gender != 'f') ) {
$error = true;

$messageStack->add('create_account', ENTRY_GENDER_ERROR);
}
}

if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_FIRST_NAME_ERROR);
}

if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_LAST_NAME_ERROR);
}

if (ACCOUNT_DOB == 'true') {
if (checkdate(substr(tep_date_raw($dob), 4, 2), substr(tep_date_raw($dob), 6, 2), substr(tep_date_raw($dob), 0, 4)) == false) {
$error = true;

$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR);
}
}

if (strlen($email_address) < ENTRY_EMAIL_ADDRESS_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR);
} elseif (tep_validate_email($email_address) == false) {
$error = true;

$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_CHECK_ERROR);
} else {
$check_email_query = tep_db_query("select count(*) as total from " . TABLE_CUSTOMERS . " where customers_email_address = '" . tep_db_input($email_address) . "'");
$check_email = tep_db_fetch_array($check_email_query);
if ($check_email['total'] > 0) {
$error = true;

$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
}
}

//PIVACF start
if (ACCOUNT_PIVA == 'true'){
if (($piva == "") && (ACCOUNT_PIVA_REQ == 'true')) {
$error = true;
$messageStack->add('create_account', ENTRY_PIVA_ERROR);
} else if ((strlen($piva) != 11) && ($piva != "")) {
$error = true;
$messageStack->add('create_account', ENTRY_PIVA_ERROR);
} else if (strlen($piva) == 11) {
if( ! ereg("^[0-9]+$", $piva) ) {
$error = true;
$messageStack->add('create_account', ENTRY_PIVA_ERROR);
} else {
$s = 0;
for( $i = 0; $i <= 9; $i += 2 ) $s += ord($piva[$i]) - ord('0');
for( $i = 1; $i <= 9; $i += 2 ) {
$c = 2*( ord($piva[$i]) - ord('0') );
if( $c > 9 ) $c = $c - 9;
$s += $c;
}
if( ( 10 - $s%10 )%10 != ord($piva[10]) - ord('0') ) {
$error = true;
$messageStack->add('create_account', ENTRY_PIVA_ERROR);
}
}
}
}
if (ACCOUNT_CF == 'true') {
if (($cf == "") && (ACCOUNT_CF_REQ == 'true')) {
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
} else if ((strlen($cf) != 16) && ($cf != "")) {
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
} else if (strlen($cf) == 16) { $cf = strtoupper($cf);
if( ! ereg("^[A-Z0-9]+$", $cf) ){
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
} else {
$s = 0;
for( $i = 1; $i <= 13; $i += 2 ){
$c = $cf[$i];
if( '0' <= $c && $c <= '9' )
$s += ord($c) - ord('0');
else
$s += ord($c) - ord('A');
}
for( $i = 0; $i <= 14; $i += 2 ){
$c = $cf[$i];
switch( $c ){
case '0': $s += 1; break;
case '1': $s += 0; break;
case '2': $s += 5; break;
case '3': $s += 7; break;
case '4': $s += 9; break;
case '5': $s += 13; break;
case '6': $s += 15; break;
case '7': $s += 17; break;
case '8': $s += 19; break;
case '9': $s += 21; break;
case 'A': $s += 1; break;
case 'B': $s += 0; break;
case 'C': $s += 5; break;
case 'D': $s += 7; break;
case 'E': $s += 9; break;
case 'F': $s += 13; break;
case 'G': $s += 15; break;
case 'H': $s += 17; break;
case 'I': $s += 19; break;
case 'J': $s += 21; break;
case 'K': $s += 2; break;
case 'L': $s += 4; break;
case 'M': $s += 18; break;
case 'N': $s += 20; break;
case 'O': $s += 11; break;
case 'P': $s += 3; break;
case 'Q': $s += 6; break;
case 'R': $s += 8; break;
case 'S': $s += 12; break;
case 'T': $s += 14; break;
case 'U': $s += 16; break;
case 'V': $s += 10; break;
case 'W': $s += 22; break;
case 'X': $s += 25; break;
case 'Y': $s += 24; break;
case 'Z': $s += 23; break;
}
}
if( chr($s%26 + ord('A')) != $cf[15] ){
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);
}
}
}
}
//PIVACF end


if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_STREET_ADDRESS_ERROR);
}

if (strlen($postcode) < ENTRY_POSTCODE_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_POST_CODE_ERROR);
}

if (strlen($city) < ENTRY_CITY_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_CITY_ERROR);
}

if (is_numeric($country) == false) {
$error = true;

$messageStack->add('create_account', ENTRY_COUNTRY_ERROR);
}

if (ACCOUNT_STATE == 'true') {
$zone_id = 0;
$check_query = tep_db_query("select count(*) as total from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "'");
$check = tep_db_fetch_array($check_query);
$entry_state_has_zones = ($check['total'] > 0);
if ($entry_state_has_zones == true) {
$zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name like '" . tep_db_input($state) . "%' or zone_code like '%" . tep_db_input($state) . "%')");
if (tep_db_num_rows($zone_query) == 1) {
$zone = tep_db_fetch_array($zone_query);
$zone_id = $zone['zone_id'];
} else {
$error = true;

$messageStack->add('create_account', ENTRY_STATE_ERROR_SELECT);
}
} else {
if (strlen($state) < ENTRY_STATE_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_STATE_ERROR);
}
}
}

if (strlen($telephone) < ENTRY_TELEPHONE_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_TELEPHONE_NUMBER_ERROR);
}


if (strlen($password) < ENTRY_PASSWORD_MIN_LENGTH) {
$error = true;
$messageStack->add('create_account', ENTRY_PASSWORD_ERROR);
} elseif ($password != $confirmation) {
$error = true;

$messageStack->add('create_account', ENTRY_PASSWORD_ERROR_NOT_MATCHING);
}

// opzione privacy start
if (ACCOUNT_PRIVACY == true) {
if ( $privacy == false) {
$error = true;
$messageStack->add('create_account', ENTRY_PRIVACY_ERROR);
}
}
// opzione privacy end


if ($error == false) {
$sql_data_array = array('customers_firstname' => $firstname,
'customers_lastname' => $lastname,
'customers_email_address' => $email_address,
'customers_telephone' => $telephone,
'customers_fax' => $fax,
'customers_newsletter' => $newsletter,
'customers_password' => tep_encrypt_password($password));

if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender;
if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = tep_date_raw($dob);

tep_db_perform(TABLE_CUSTOMERS, $sql_data_array);

$customer_id = tep_db_insert_id();

$sql_data_array = array('customers_id' => $customer_id,
'entry_firstname' => $firstname,
'entry_lastname' => $lastname,
'entry_street_address' => $street_address,
'entry_postcode' => $postcode,
'entry_city' => $city,
'entry_country_id' => $country);

if (ACCOUNT_GENDER == 'true') $sql_data_array['entry_gender'] = $gender;
if (ACCOUNT_COMPANY == 'true') $sql_data_array['entry_company'] = $company;


//PIVACF start
if (ACCOUNT_PIVA == 'true') $sql_data_array['entry_piva'] = $piva;
if (ACCOUNT_CF == 'true') $sql_data_array['entry_cf'] = $cf;
//PIVACF end

if (ACCOUNT_SUBURB == 'true') $sql_data_array['entry_suburb'] = $suburb;
if (ACCOUNT_STATE == 'true') {
if ($zone_id > 0) {
$sql_data_array['entry_zone_id'] = $zone_id;
$sql_data_array['entry_state'] = '';
} else {
$sql_data_array['entry_zone_id'] = '0';
$sql_data_array['entry_state'] = $state;
}
}

tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);

$address_id = tep_db_insert_id();

tep_db_query("update " . TABLE_CUSTOMERS . " set customers_default_address_id = '" . (int)$address_id . "' where customers_id = '" . (int)$customer_id . "'");

tep_db_query("insert into " . TABLE_CUSTOMERS_INFO . " (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('" . (int)$customer_id . "', '0', now())");

if (SESSION_RECREATE == 'True') {
tep_session_recreate();
}

$customer_first_name = $firstname;
$customer_default_address_id = $address_id;
$customer_country_id = $country;
$customer_zone_id = $zone_id;
tep_session_register('customer_id');
tep_session_register('customer_first_name');
tep_session_register('customer_default_address_id');
tep_session_register('customer_country_id');
tep_session_register('customer_zone_id');

// restore cart contents
$cart->restore_contents();

// build the message content
$name = $firstname . ' ' . $lastname;

if (ACCOUNT_GENDER == 'true') {
if ($gender == 'm') {
$email_text = sprintf(EMAIL_GREET_MR, $lastname);
} else {
$email_text = sprintf(EMAIL_GREET_MS, $lastname);
}
} else {
$email_text = sprintf(EMAIL_GREET_NONE, $firstname);
}

$email_text .= EMAIL_WELCOME ."-------------------------------------------------\n" . EMAIL_USERNAME . EMAIL_PASSWORD ."-------------------------------------------------\n\n" . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING;
tep_mail($name, $email_address, EMAIL_SUBJECT, $email_text, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

tep_redirect(tep_href_link(FILENAME_CREATE_ACCOUNT_SUCCESS, '', 'SSL'));
}
}

$breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));

$content = CONTENT_CREATE_ACCOUNT;
$javascript = 'form_check.js.php';
require(DIR_WS_TEMPLATES . TEMPLATENAME_MAIN_PAGE);

require(DIR_WS_INCLUDES . 'application_bottom.php');
?>



Alla riga 317 del file file Create_account.php inizia con " if (ACCOUNT_STATE == 'true') { .... "

Cosa può essere ?

Grazie.

Ciao.

Inviato: 28/10/2007, 22:02
da linda74
finalmente sono riuscita a risolvere ....

Oltre a quello che hai segnati in rosso ho eliminato anche il pezzo sopra e cioè:
if (ACCOUNT_CF == 'true') {
if (($cf == "") && (ACCOUNT_CF_REQ == 'true')) {
$error = true;
$messageStack->add('create_account', ENTRY_CF_ERROR);

Tolto queste righe in entrambi i file funziona ....

Grazie ancora dell'aiuto Spiderweb ...

Ciao.

Linda.

Inviato: 28/10/2007, 22:36
da Spiderweb
Quell'errore te lo da se c'è qualcosa di sbagliato nel codice, per esempio una { in più o in meno ecc....

E' facile che sia stata colpa di quelle parentesi, alla fine ce ne devono essere solo 2.
A me funziona bene anche con quelle righe e l'ho lasciate perchè penso (ma non sono sicuro) che siano quelle che controllano se il CF viene inserito e da l'errore nel caso il campo sia vuoto (se dal lato admin è impostato come obbligatorio).

Hai provato a lasciarlo vuoto per vedere se ti da l'errore?

Ciao! :)

Inviato: 29/10/2007, 9:16
da linda74
Nel mio caso adesso funziona perfettamente ...

Se un'azienda inserisce il CF numerico, viene regolarmente accettato e non da errore.

Io il CF l'ho impostato "Non Obbligatorio" dal lato Admin.

L'ultima cosa che voglio risolvere è, una volta registrata l'azienda, poter modificare i dati del proprio Account per quanto riguarda il nome azienda e partita iva, perchè non compare la riga per poterli modificare.

Hai qualche idea ?

Grazie dell'aiuto.

Ciao.

Linda.

Inviato: 29/10/2007, 15:02
da Spiderweb
L'ho notato anch'io.... i dati dell'Azienda non compaiono nella scheda Modifica Account (oppure modifica informazioni personali) ma li puoi modificare andando nella sezione della Rubrica Personale (in poche parole dove ci sono i dati per la spedizione, l'Address Book).

E' un po' una cavolata perchè sarebbe meglio che il nome dell'Azienda e la PI si trovassero insieme ai dati personali, cmq non penso sia una modifica difficile, basta mettere un po' mano al codice.
Appena ho tempo vedo se risolvo e ti faccio sapere, già ieri sera avevo fatto una prova ma senza sucesso :evil:

Ciao! :)

P.S: io ho settato il CF obbligatorio perchè in caso di fatturazione va inserito nel documento e se non ce l'ho dovrei contattare il Cliente per farmelo dare, così invece ce l'ho già nella registrazione :wink:

Inviato: 08/11/2007, 10:40
da linda74
Ciao Spiderweb,

sono riuscita ad inserire i campi per modificare CF , P. Iva e nome azienda nella scheda Modifica Account.

Però una volta modificati, non registra nulla della modifica.

Cosa ho dimenticato ??

Ciao.

Linda.

Inviato: 10/11/2007, 0:59
da Spiderweb
Ciao, scusami ma non ho ancora provato a fare quella modifica perchè non sono stati bene in questi giorni e se mi mettevo davanti al pc mi veniva un mal di testa insopportabile :twisted:

Nei prox giorni provo sicuramente e ti faccio sapere, semmai se non ci sono risultati positivi ci possiamo sentite con dei messaggi privati altrimenti riempiamo il post di prove :)

Poi postiamo la soluzione, se la troviamo!

Ciao :)

Inviato: 09/02/2008, 14:35
da ovi
già...