dettotranoi Posted October 6, 2010 Share Posted October 6, 2010 Ciao a tutti,sarebbe molto utile fare in modo che, nella registrazione dell'utente, se si compila il campo Azienda, automaticamente diventasse obbligatorio il campo P. IVA. Avete idea di come si può fare?Grazie mille! Link to comment Share on other sites More sharing options...
Sclerato Posted October 9, 2010 Share Posted October 9, 2010 Approfitto del post, per chiedere aiuto ai piu' esperti di PS.Sto proprio cercando di fare questa modifica, anche manualmente senza un modulo, non mi importa.Al momento ho aggiunto una checkbox di selezione privato/azienda, in base alla quale viene modificato il form nascondendo o mostrando i campi azienda, partita iva e cf, e cambiando anche ovviamente il fatto che siano richiesti o meno.Dove mi blocco e' nelle regole interne delle classi customer e address, che sono impostate ovviamente ai campi del form di default, ad esempio: protected $fieldsRequired = array('id_country', 'alias', 'lastname', 'firstname', 'address1', 'postcode', 'city'); Come si potrebbe procedere a rendere dinamici questi array dal controller authentication.php?Se solo disarci o altri [spam-filter] suoi compari :-) potessero darmi la direzione almeno.... Link to comment Share on other sites More sharing options...
Sclerato Posted October 19, 2010 Share Posted October 19, 2010 nessuno che puo' aiutare sulla cosa? Link to comment Share on other sites More sharing options...
Pepozzo Posted October 20, 2010 Share Posted October 20, 2010 La prima cosa che mi è venuta in mente è impostare un campo del form come hidden, recuperarne il valore ed utilizzarlo per determinare gli array attraverso gli if.Non è proprio il massimo, però forse è la cosa più semplice. Link to comment Share on other sites More sharing options...
Sclerato Posted October 20, 2010 Share Posted October 20, 2010 La prima cosa che mi è venuta in mente è impostare un campo del form come hidden, recuperarne il valore ed utilizzarlo per determinare gli array attraverso gli if.Non è proprio il massimo, però forse è la cosa più semplice. Ciao Pepozzo, si avevo pensato anche io una cosa del genere, il problema e' che questi array sono impostati come variabili protected all'interno della classe customer (e anche classe address), e non so se e' possibile cambiarli attraverso il file authentication.php, e se e' possibile come. Link to comment Share on other sites More sharing options...
Pepozzo Posted October 20, 2010 Share Posted October 20, 2010 Purtroppo non ti parlo per esperienza (quindi potrei cadere in errore), però ragioniamo Nella mia idea l'if utilizzato andrebbe a creare una "nuova" variabile $fieldsRequired a seconda del valore del campo hidden.Se tu imposti (esempio infimo): if protected $variabile elseif protected $variabile2 chiuso if Alla fine la variabile rimarrebbe protected e quindi disponibile solamente per la classe e nella $variabile2 potresti aggiungere dei campi richiesti. Link to comment Share on other sites More sharing options...
Sclerato Posted October 20, 2010 Share Posted October 20, 2010 Purtroppo non ti parlo per esperienza (quindi potrei cadere in errore), però ragioniamo Nella mia idea l'if utilizzato andrebbe a creare una "nuova" variabile $fieldsRequired a seconda del valore del campo hidden.Se tu imposti (esempio infimo):if protected $variabile elseif protected $variabile2 chiuso if Alla fine la variabile rimarrebbe protected e quindi disponibile solamente per la classe e nella $variabile2 potresti aggiungere dei campi richiesti. Si corretto, la mia difficolta' e' pero' passare alle due classi che dicevo questo campo extra dal controller authentication.php. Link to comment Share on other sites More sharing options...
ziostanko Posted October 23, 2010 Share Posted October 23, 2010 raga uppo questa discussione perchè secondo me sarebbe un'ottima modifica e potrebbe servire a molti shop italiani.Grazie Link to comment Share on other sites More sharing options...
dettotranoi Posted November 2, 2010 Author Share Posted November 2, 2010 Ciao a tutti,sarebbe molto utile fare in modo che, nella registrazione dell'utente, se si compila il campo Azienda, automaticamente diventasse obbligatorio il campo P. IVA. Avete idea di come si può fare?Grazie mille! La cosa migliore sarebbe di poter scegliere tra Privato, Lavotatore autonomo (o libero professionista) e Azienda.Impostando la partita IVA obbligatoria per lavoratore autonomo ed azienda.Penso sia molto utile per gestire i campi partita IVA e C.F.Avete nuove idee? Link to comment Share on other sites More sharing options...
Germanoufo Posted November 3, 2010 Share Posted November 3, 2010 La gestione tasse dettagliata dovrebbe avvenire nella 1.4 che verrà rilasciata entro natale ( quanto accennatoci durante lo SMAU da Bruno )Ciao ;-) Link to comment Share on other sites More sharing options...
bluego78 Posted November 9, 2012 Share Posted November 9, 2012 (edited) So che è un post vecchio, ma sempre utile magari dare una risposta in più. Anche io come tanti ho affrontato questo problema e la mia soluzione è stata: PASSAGGIO 1 Nel mio template authentication.tpl ho modificato la funzione javascript vat_number() function vat_number() { if ($('#company').val() != '') { $('#vat_number').show(); $('#vat_number p').attr('class','required text'); if($('#vat_number p sup').length==0) $('#vat_number p').append('<sup>*</sup>'); } else { $('#vat_number input').val(''); $('#vat_number').hide(); $('#vat_number p').attr('class','text'); $('#vat_number p sup').remove(); } } } PASSAGGIO 2 Nel mio controller AuthController.php nel metodo processSubmitAccount() a riga 447 nell'else ho inserito else // if registration type is in one step, we save the address { //************************************************************************************************************** // Rende obbligatorio inserimento della PARTITA IVA se è compilato il campo AZIENDA // VALIDO SOLO IN FASE DI REGISTRAZIONE "CON INDIRIZZO" //************************************************************************************************************** if(isset($_POST['company']) && $_POST['company']!='') { if((isset($_POST['vat_number']) && $_POST['vat_number']=='') || !isset($_POST['vat_number'])) $this->errors[] = Tools::displayError('Se inserisci l\'azienda, la Partita IVA è obbligatoria'); } .... Spero sia utile a qualcuno. Purtroppo modificare un controller così in modo crudo non è bello, ma purtroppo l'override sembra non funzionare per niente nella versione 1.5.2, ho postato a riguardo ma ancora non ho ricevuto risposta. Consiglio vivamente di segnarvi a parte qualsiasi modifica facciate alle classi e controller, altrimenti vi giocate la possibilità di fare gli aggiornamenti. ATTENZIONE: VERSIONE 1.5.2 di Prestashop Edited November 9, 2012 by bluego78 (see edit history) 1 Link to comment Share on other sites More sharing options...
l.zuccarini Posted January 11, 2013 Share Posted January 11, 2013 Ciao bluego78, ho provato ad usare il tuo codice, ma a parte la lentezza assurda (testando in locale) una volta caricato la pagina di registrazione non mi compaiono più le province... hai idea del problema? io sto usando la versione 1.5.3.1 Link to comment Share on other sites More sharing options...
l.zuccarini Posted January 30, 2013 Share Posted January 30, 2013 (edited) Nel mio template authentication.tpl ho modificato la funzione javascript vat_number() function vat_number() { if ($('#company').val() != '') { $('#vat_number').show(); $('#vat_number p').attr('class','required text'); if($('#vat_number p sup').length==0) $('#vat_number p').append('<sup>*</sup>'); } else { $('#vat_number input').val(''); $('#vat_number').hide(); $('#vat_number p').attr('class','text'); $('#vat_number p sup').remove(); } } } Ciao a tutti, e ringrazio bluego78 per la soluzione... Mi sono accorto di un piccolo errore nel tuo script che se copiato così come è non funziona sicuramente... In pratica c'è una parentesi graffa in più da rimuovere alla fine dell'else... Ecco la funzione corretta: function vat_number() { if ($('#company').val() != '') { $('#vat_number').show(); $('#vat_number p').attr('class','required text'); if($('#vat_number p sup').length==0) $('#vat_number p').append('<sup>*</sup>'); } else { $('#vat_number input').val(''); $('#vat_number').hide(); $('#vat_number p').attr('class','text'); $('#vat_number p sup').remove(); } } Ora anche chi "mastica" poco di codice, può apportare tale modifica con successo. Io l'ho testata sulla versione 1.5.3.1 con successo. Grazie ancora! Edited January 30, 2013 by l.zuccarini (see edit history) 1 Link to comment Share on other sites More sharing options...
bluego78 Posted January 30, 2013 Share Posted January 30, 2013 Ciao Zuccarini grazie, si mi ero accorto dell'errore ma non avevo più modificato il post, per fortuna l'hai fatto tu, grazie. Tra l'altro alla fine, con una nuova installazione di PS 1.5.2 sono riuscito a far funzionare l'override così la modifica l'ho apportata nel controller in override. Mi fa piacere che sia servito il mio aiuto. Bye! 1 Link to comment Share on other sites More sharing options...
d.raison Posted March 19, 2013 Share Posted March 19, 2013 Salve a tutti, una domanda. Se volessi fare la stessa modifica nella pagina degli indirizzi sapreste come fare? In pratica vorrei attivare la stessa funzionalità quando un utente aggiunge un nuovo indirizzo di spedizione/fatturazione (i miei indirizzi). Grazie in anticipo e buona giornata. Link to comment Share on other sites More sharing options...
aquasport Posted April 3, 2013 Share Posted April 3, 2013 (edited) Io ho un altro problema non ho attivo il b2b ho la versione 1520 quando un cliente si registra nel form alla fine della registrazione compare l'errore che manca la partita iva ma non appare il campo per inserirla, ho risolto con il modulo partita iva europea installato ed il cliente digita sia sul codice fiscale che sulla partita iva gli stessi dati e funziona ma non mi pare corretto Edited April 3, 2013 by blutuna (see edit history) Link to comment Share on other sites More sharing options...
Wiploo Posted May 30, 2013 Share Posted May 30, 2013 (edited) Ciao a tutti, mi permetto di fare un piccolo aggiornamento allo script fornito. Corretto per il modulo di login della versione 1.5.4.1 Nel mio template authentication.tpl ho modificato la funzione javascript vat_number() function vat_number() { if ($('#company').val() != '') { $('#vat_number').show(); $('#vat_number p').addClass('required'); if($('#vat_number label sup').length==0) $('#vat_number label').append('<sup>*</sup>'); } else { $('#vat_number input').val(''); $('#vat_number').hide(); $('#vat_number p').removeClass('required'); $('#vat_number label sup').remove(); } } Edited May 30, 2013 by Wiploo (see edit history) Link to comment Share on other sites More sharing options...
Castalia Posted May 30, 2013 Share Posted May 30, 2013 ciao. dove va questa correzione, e cosa fa? Link to comment Share on other sites More sharing options...
Wiploo Posted May 30, 2013 Share Posted May 30, 2013 (edited) ciao. dove va questa correzione, e cosa fa? Ho aggiornato il post in modo da indicarti in che file va la correzione. Ho usato il template base di prestashop 1.5.4.1. Non fa niente di diverso da prima solo che imposta correttamente il campo IVA come obbligatorio anche per le nuove versioni. Edited May 30, 2013 by Wiploo (see edit history) Link to comment Share on other sites More sharing options...
psyco80 Posted May 31, 2013 Share Posted May 31, 2013 Ciao Wiploo, ho provato a fare la modifica da te descritta, ma a me sembra non funzionare. sono andato negli indirizzi di una utenza già creata ed ho provato ad inserire un nuovo indirizzo, ma anche se lascio la p.iva vuota me lo fa creare (non appare neppure la * di obbligatorio). Se invece non metto il CF, giustamente mi da errore. Probabilmente sbaglio qualcosa io... Qui il codice che ho modificato, prendendolo un po' prima e un po dopo per dirmi se ho dimenticato qualcosa. {literal} $(document).ready(function() { $('#company').blur(function(){ vat_number(); }); vat_number(); function vat_number() { if ($('#company').val() != '') { $('#vat_number').show(); $('#vat_number').show(); $('#vat_number p').addClass('required'); if($('#vat_number label sup').length==0) $('#vat_number label').append('<sup>*</sup>'); } else { $('#vat_number input').val(''); $('#vat_number').hide(); $('#vat_number p').removeClass('required'); $('#vat_number label sup').remove(); } } }); {/literal} </script> Link to comment Share on other sites More sharing options...
Spad Posted July 17, 2013 Share Posted July 17, 2013 (edited) Io ho risolto nella parte i miei indirizzi una volta effettuato l'accesso 1: aggiungere in AddressController.php dopo la condizione // Check country DNI in linea circa 158 /// CHECK piva HACK if ( isset($address->company)&& $address->company !="") { if((isset($_POST['vat_number']) && $_POST['vat_number']=='') || !isset($_POST['vat_number'])) $this->errors[] = Tools::displayError('Partita iva Richiesta'); } 2: ripetere il passaggio 1 anche nel file AuthController.php in /controllers/front/AuthController.php inserite il codice dopo la il controllo // US customer: normalize the address a riga circa 480 3: mettere il * rosso nel form editre il file address.tpl all'interno del vostro thema <div id="vat_area"> <div id="vat_number"> <p class="required text"> <label for="vat_number">{l s='VAT number'} <sup>*</sup></label> <input type="text" class="text" name="vat_number" value="{if isset($smarty.post.vat_number)}{$smarty.post.vat_number}{else}{if isset($address->vat_number)}{$address->vat_number}{/if}{/if}" /> </p> </div> 4: stessa cosa in order-opc-new-account.tpl all'interno del vostro thema <div id="vat_number_block" style="display:none;"> <p class="required text"> <label for="vat_number">{l s='VAT number'} <sup>*</sup></label> <input type="text" class="text" name="vat_number" id="vat_number" value="{if isset($guestInformations) && $guestInformations.vat_number}{$guestInformations.vat_number}{/if}" /> </p> </div> <div id="vat_number_block_invoice" class="is_customer_param" style="display:none;"> <p class="required text"> <label for="vat_number_invoice">{l s='VAT number'} <sup>*</sup></label> <input type="text" class="text" id="vat_number_invoice" name="vat_number_invoice" value="" /> </p> </div> testato su ps 1.5.4 ciao Edited July 17, 2013 by glamnoise (see edit history) Link to comment Share on other sites More sharing options...
universo Posted July 19, 2013 Share Posted July 19, 2013 grazie spad, fatto e funziona ciao 1 Link to comment Share on other sites More sharing options...
dkjo Posted September 30, 2013 Share Posted September 30, 2013 I could't find english version of this, anyway - I did these 4 steps and when I create an account and insert VAT and submit the form I get the error message: "Enter/Inser VAT"? Could you point me to solution (english)? Thanks, cheerz. Link to comment Share on other sites More sharing options...
nimloth Posted December 5, 2013 Share Posted December 5, 2013 (edited) Io ho fatto in un altro modo, che mi sembra più semplice: ve lo propongo. 1) Ho attivato il codice fiscale obbligatorio e l'ho aggiunto in fattura come descritto qui. 2) Ho cambiato in /themes/my_theme/address.tpl questa porzione di codice aggiungendo il commento per fargli tenere il numero di partita iva sempre nascosto: function vat_number() { /*if ($('#company').val() != '') $('#vat_number').show(); else*/ $('#vat_number').hide(); } 3) Ho modificato nello stesso file la zona in cui compare il textbox del codice fiscale in modo da mostrare l'asterisco per indicare che è campo obbligatorio e ho cambiato la label indicando che si può inserire CF o P.IVA [Nota a fondo]. Ho nascosto inoltre quella scritta "DNI / NIF / NIE" perché non mi piaceva! <p class="required text dni"> <label for="dni">{l s='Identification number'} (o Partita IVA se Azienda)<sup>*</sup></label> <input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{if isset($address->dni)}{$address->dni}{/if}{/if}" /> <!--<span class="form_info">{l s='DNI / NIF / NIE'}</span>--> </p> 4) Ho eliminato dalla fattura la voce vat_number, con lo stesso procedimento fatto al punto 1 per aggiungere il CF. In questo modo ho sempre uno dei due dati: che sia P.IVA o CF mi va bene comunque. Un'azienda inserirà la P.IVA, un privato inserirà il suo CF. Per aggiornare le fatture già emesse (fortunatamente poche finora!!!) ho mandato un'email alle persone necessarie, chiedendogli di collegarsi e aggiornare i propri indirizzi. Dopodiché andando sull'ordine, e modificando dal menu a tendina l'indirizzo (selezionando tuttavia lo stesso) si è aggiunto il CF (o P.IVA) così la fattura ora lo contiene. HTH nimloth [Nota]: In realtà sarebbe più corretto modificare la traduzione di quella specifica label dal BO, ma purtroppo non posso farlo perché ho il problema del numero massimo di variabili non configurabile perché sono su un hosting base Aruba Edited December 5, 2013 by nimloth (see edit history) Link to comment Share on other sites More sharing options...
avionicom Posted January 30, 2014 Share Posted January 30, 2014 (edited) Qualcuno sa come fare l'override del file AddressController.php con la soluzione proposta da Spad? In tal modo non ci sarebbero problemi futuri in caso di aggiornamenti. Ho provato a copiare il file dalla cartella controllers/front alla cartella override/front e modificarlo come proposto da Spad, ma non funziona. Funziona invece se modifico direttamente il file controllers/front/AddressController.php Edited January 30, 2014 by avionicom (see edit history) Link to comment Share on other sites More sharing options...
that's Posted December 10, 2015 Share Posted December 10, 2015 (edited) riprendo questa discussione, sono sull'ultima versione di prestashop, e servirebbe anche a me avere la partita iva solo se viene selezionata l'azienda. Ho controllato i file ma sono un po diversi, cosa devo cambiare ? EDIT: Con l'ultima versione è di default Edited December 10, 2015 by that's (see edit history) Link to comment Share on other sites More sharing options...
Romolo P. Posted March 7, 2016 Share Posted March 7, 2016 riprendo questa discussione, sono sull'ultima versione di prestashop, e servirebbe anche a me avere la partita iva solo se viene selezionata l'azienda. Ho controllato i file ma sono un po diversi, cosa devo cambiare ? EDIT: Con l'ultima versione è di default Ciao That's, io sono alla versione 1.6.1.4 di PS, ma la P.IVA obbligatoria SOLO nel caso sia compilato il campo Azienda non è di default come dici tu. Potresti darmi qualche indicazione in più? ho la funzione b2b disattivata perchè a me interessa solo inserire la partita iva in caso di azienda, in tutti gli altri casi mi va bene così e non ho bisogno di altre funz. b2b. Nel caso non sia di default, potremmo scrivere un post completo con le modifiche da apportare all'ultima versione? scorrendo tutto il topic ho provato ad effettuare le modifiche proposte ma è tutto un pò confusionale visto che man mano che si scorre vengono proposte modifiche/correzzioni alle modifiche. Link to comment Share on other sites More sharing options...
Romolo P. Posted March 7, 2016 Share Posted March 7, 2016 Aggiornamento: rimanendo solo sul problema di verificare l'esistenza della partita iva solo nel caso venga inserito il campo azienda ho inserito il codice suggerito da Spad: /// CHECK piva HACK if ( isset($address->company)&& $address->company !="") { if((isset($_POST['vat_number']) && $_POST['vat_number']=='') || !isset($_POST['vat_number'])) $this->errors[] = Tools::displayError('Partita iva Richiesta'); } nel file "/controllers/front/AddressController.php" alla riga 164, dopo il controllo "// Check country DNI" e questo mi ha risolto il problema nel caso un utente già registrato voglia aggiungere un nuovo indirizzo come azienda. Ora mi serve avere lo stesso risultato nel caso di una nuova registrazione ma non so con precisione dove inserire la modifica, il file dovrebbe essere "/controllers/front/AddressController.php" e ho provato, sempre come suggerito da Spad, ad inserirlo alla riga 506, all'interno della funzione processSubmitAccount(), precisamente dopo la porzione di codice che segue: } else { // if registration type is in one step, we save the address /// CHECK piva EMANUELE HACK ... ma in questo caso non ho avuto il risultato atteso, potete aiutarmi? la mia versione di Prestashop è 1.6.1.4, se avete bisogno di altre informazioni fatemi sapere Grazie. Link to comment Share on other sites More sharing options...
Romolo P. Posted March 7, 2016 Share Posted March 7, 2016 Aggiornamento: Ho inserito lo snippet alla riga 562 di AuthController.php if ((Tools::isSubmit('submitAccount') || Tools::isSubmit('submitGuestAccount')) && $contains_state && !$id_state) { $this->errors[] = Tools::displayError('This country requires you to choose a State.'); } /// CHECK piva EMANUELE HACK if ( isset($address->company)&& $address->company !="") { if((isset($_POST['vat_number']) && $_POST['vat_number']=='') || !isset($_POST['vat_number'])) $this->errors[] = Tools::displayError('Partita IVA obbligatoria se viene compilato il campo Azienda.'); } Ora funziona Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now