Pagina 1 di 2

partita iva / codice fiscale

Inviato: 24/04/2005, 19:25
da varr98
mi è venuto un dubbio:

se si registra una persona fisica, devo obbligatoriamente far inserire il CF, ma se si registra un'azienda (e nello specifico chi lavora all'ufficio acquisti), mi deve obbligatoriamente inserire la partita iva ...

insomma dovrei verificare che ci sia la p.iva SOLO se c'è il nome azienda e in questo caso non avere più il CF come obbligatorio ...

o no ?

nel caso qualcuno ha già avuto/risolto questo problema?

Inviato: 08/09/2006, 17:31
da Manah
Uhmmm... sto affrontando un problema del genere:
A me basta che il cliente inserisca SOLO la partita iva o SOLO il codice fiscale, per questo dal pannello amministrazione, non posso renderli obbligatori entrambi.

Qualcuno ha risolto?

Re: partita iva / codice fiscale

Inviato: 08/09/2006, 18:52
da Bass
varr98 ha scritto: se si registra una persona fisica, devo obbligatoriamente far inserire il CF,
Il CF in fattura a un privato non e' obbligatorio
Comunque credo che l'unica soluzione sia crare deu files distinti per la registrazione oppure una scelta prima di aprire la pagina

'iao

Sergio

Inviato: 08/09/2006, 19:01
da Manah
Grazie per la risposta, Bass!
Sebbene possa non essere obbligatorio, la mia azienda vuole che in fattura risulti l'uno o l'altro, quindi suppongo che dovrò settare entrambi i campi come non obbligatori, mettere degli asterischi fittizzi oppure una riga di testo con un invito... e sperare nella comprensione dei clienti :-)

Mah, ripeto, non capendone poco o nulla di php, immaginavo bastasse uan riga tipo IF codicefiscale AND partitaiva = vuoto THEN metti un messaggio d'allarme!

Si vede che non ne capisco un tubo?? :-D

Inviato: 08/09/2006, 19:11
da Bass
Manah ha scritto:Grazie per la risposta, Bass!
Sebbene possa non essere obbligatorio, la mia azienda vuole che in fattura Mah, ripeto, non capendone poco o nulla di php, immaginavo bastasse uan riga tipo IF codicefiscale AND partitaiva = vuoto THEN metti un messaggio d'allarme!
Quello lo fa gia', quando abiliti l'obbligatorieta' fa un controllo. Qui il problema e' che bisogna capire a priori se chi si registra e' un privato oppure un'azienda

'iao

Sergio

Inviato: 08/09/2006, 19:23
da Manah
No Bass, scusa se mi permetto.
Il controllo non lo fa.
Se rendo tutti e due i campi obbligatori, il cliente è obbligato a scriverli entrambi.
Se non li rendo obbligatori, il cliente è libero di non inserirne nemmeno uno e poi devo chiamarlo al telefono per farmelo dire!

Il discorso di capire se si tratta di un'azienda o meno è secondario.

Inviato: 08/09/2006, 19:25
da Manah
La cosa positiva è comunque che se non li rendo obbligatori ed il cliente scrive in uno dei 2 campi, il controllo sulla veridicità viene effettuato lo stesso, sia per la partita iva che per il c.f.!

Inviato: 09/09/2006, 12:10
da Maipiusenza
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

Codice: Seleziona tutto

if (ACCOUNT_PIVA == 'true'){
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

if (ACCOUNT_CF == 'true') {

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

Codice: Seleziona tutto

if (ACCOUNT_PIVA == 'true'){
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)

Codice: Seleziona tutto

if (ACCOUNT_CF == 'true') {
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

Inviato: 09/09/2006, 12:15
da Bass
Manah ha scritto:No Bass, scusa se mi permetto.
Il controllo non lo fa.
Se rendo tutti e due i campi obbligatori, il cliente è obbligato a scriverli entrambi.
Se non li rendo obbligatori, il cliente è libero di non inserirne nemmeno uno e poi devo chiamarlo al telefono per farmelo dire!
E' quello che intendevo dire, il codice c'e' gia' se e' obbligatorio controlla se il campo e' vuoto se non lo e' non lo controlla :)
Il discorso di capire se si tratta di un'azienda o meno è secondario.
Non credo sia secondario, come hai detto tu nel primo post devi distinguere se e' un'azienda o meno. Prova a vedere la procedura di registrazione di http://www.extraitaly.it e capisci cosa intendo

'iao

Sergio

Inviato: 11/09/2006, 10:31
da Manah
@Bass: Come ho già scritto, per la mia azienda è secondario che si tratti di privato o azienda, lavoriamo tranquillamente con entrambi ed ai fini fiscali, emettiamo fattura a chicchessìa.
E poi ti confermo che il controllo sulla partita iva ed il codice fiscale li fa anche se non sono settati come obbligatori da admin!

@Maipiusenza:
Forte! Provo il codice e ti fo' sapere.

p.s.: il tuo sito è una figata (ed anche ciò che vendi)!

Inviato: 11/09/2006, 11:06
da Bass
Manah ha scritto:@Bass:
E poi ti confermo che il controllo sulla partita iva ed il codice fiscale li fa anche se non sono settati come obbligatori da admin!
Certo, fa un controllo sulla validita', non sul campo obbligatorio. Ah, occhio che il controllo dell'IVA vale solo per l'italia

'iao

Sergio

Inviato: 11/09/2006, 12:16
da Manah
Uhm... sembra funzionare, comunque se non si inserisce il codice fiscale ma solo la partita iva (omettendo il nome dell'azienda) si riceve un errore (codice fiscale errato).
Inizialmente ho pensato fosse più corretto disattivare il controllo dell'immissione dell'azienda, perché in effetti posso avere una partita iva senza possedere un'azienda, quindi questo check è superfluo, giusto?
Poi ho pensato fosse più opportuno un messaggio più specifico che (ovviamente) non mensioni il c.f., ma che ricordi all'utente di inserire comunque il suo nome e cognome nel campo dell'azienda, che ho ribatezzato "ragione sociale", per evitare dimenticanze nel caso si trattasse, invece, di una ditta che scorda di inserire il suo nome per fatturare.

A questo punto, su quali righe intervengo per creare un messaggio ad hoc?

Inviato: 11/09/2006, 14:51
da Maipiusenza
Ecco le modifiche... In questo modo se NON ho inserito il CF, ho inserito la P.Iva ma non c'è la ragione sociale, si riceve un msg di errore.

In teoria potremmo mettere anche un controllo se uno ha inserito sia CF che P.IVA ma non la ragione sociale, ma per il momento l'ho evitato perchè si presuppone che se uno sta inserendo il CF, è con quello che desidera la fattura. Un ulteriore msg di errore sarebbe in discordanza con l'ipotesi che è obbligatorio uno solo dei due campi.

Fatte queste modifiche ho notato un piccolo problema: nell'area riservata, se un utente vuole cambiare i dati dell'account, si trova un form che chiede solo i dati personali con CF, la partita iva è nella pagina di modifica degli indirizzi. Se uno fa una modifica in questa pagina, è costretto a inserire il CF. Bisognerebbe aggiungere un IF in account_edit.php e verificare che se l'utente è registrato con p.IVA non va richiesto il CF. Come detto in precedenza, non ho grandi conoscenze di php e non so come recuperare la var della p.Iva dal DB senza fare danni (es. lasciare connessioni aperte o roba del genere). Se qualcuno è in grado di cambiare questa pagina forse risuciamo a sistemare bene la questione di CF e P.iva.

Ecco le modifiche:
Aggiungere/modificare in includes/languages/italian.php (duplicare per le altre lingue)

Codice: Seleziona tutto

define('ENTRY_PIVA_ERROR', 'Numero di Partita Iva assente o non corretto.');
define('ENTRY_CF_ERROR', 'Codice Fiscale assente o non corretto.');
define('ENTRY_PIVA_NONAME', 'Inserire la Ragione Sociale o il Codice Fiscale');
in includes/form_check.js.php sostituire circa alla riga 19

Codice: Seleziona tutto

function check_input(field_name, field_size, message) {
con

Codice: Seleziona tutto

function check_input(field_name, field_size, message,altMsg) {
circa alla riga 25 sostituire

Codice: Seleziona tutto

		 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;
			}
con

Codice: Seleziona tutto

		 if (field_name == 'cf') {
			if (form.elements["country"].options[form.elements["country"].selectedIndex].text=="Italia" && form.elements["company"].value==""){
				if (form.elements["piva"].value==""){
					error_message = error_message + "* " +  message +"\n";
				} else {
					error_message = error_message + "* " +  altMsg +"\n";
				}
				error = true;
			}
circa alla riga 150:

Codice: Seleziona tutto

<?php if (ACCOUNT_CF_REQ == 'true') echo '  check_input("cf", 0, "' . ENTRY_CF_ERROR . '");' . "\n"; ?>
con

Codice: Seleziona tutto

<?php if (ACCOUNT_CF_REQ == 'true') echo '  check_input("cf", 0, "' . ENTRY_CF_ERROR . '","' . ENTRY_PIVA_NONAME . '");' . "\n"; ?>
Ciao
Nadia

P.S. Grazie per i complimenti al sito, spero a breve di metterne on line una versione con css layout.

Inviato: 11/09/2006, 16:10
da Manah
Ottimo! Mi pare di aver visto che l'immissione del codice fiscale si ripresenta anche nella rubrica. A questo punto non risolviamo tutto togliendo semplicemente la voce codice fiscale nelle "informazioni account"??

Inviato: 11/09/2006, 16:44
da Manah
Ho controllato e ricontrollato, quest'ultima modifica non funziona (sono stato pure attento all'Italy).
Se non inserisco né codice fiscale né p.iva ottengo solo l'errore per il primo.
Se metto solo la partita iva, ottengo sempre l'errore del codice fiscale!

Sbaglio qualcosa? Ma da te funziona, immagino...