Jump to content

Aggiungere un nuovo campo nella fase ordine "Spedizione" order-carrier.tpl


alepul

Recommended Posts

Ciao a tutti,

Nella form contenuta in order-carrire.tpl ho aggiunto un nuovo campo di testo che in teoria dovrebbe "portare con se" un valore lungo tutto il percorso dell'ordine, sino alla sua chiusura e ovviamente scrivere il dato in un nuovo record( tipo text) contenuto nella tabella ps_orders. chiamato ws_ddt

inoltre questo valore lo dovrò riportare in fattura.

Premetto che sono già riuscito a legare la presenza o meno del campo testo in base al gruppo di utenza collegato.Mi spiegerò meglio più avanti con l'esempio pratico.

 

Diciamo che il comportamento dovrebbe essere simile a quello del valore gift_message, ma senza la necessità di abilitare o meno la confezione regalo.

 

Ovviamente voglio mantenere integro il codice inerente la scelta o meno della confezione regalo legata al suo messaggio.

 

questo è quello che ho fatto.

 

creo un corriere legato solo a un gruppo di utenza.

ho forzato il codice del file "order-carrier.tpl" in questo modo:

 

{if $carrier.id_carrier == 22}

<p id="ws_ddt" class="textarea">

<label for="ws_ddt">{l s='DDT n'}</label>

<textarea rows="1" cols="15" id="ws_ddt" name="ws_ddt" >{$cart->ws_ddt|escape:'htmlall':'UTF-8'}</textarea>

</p>

{else}

{$carrier.delay|escape:'htmlall':'UTF-8'}

 

{/if}

dove 22 è il valore dell'id del correre che intendo utilizzare per un solo gruppo di utenza.

 

ho modificato la classe Order.php in questo modo:

 

public $ws_ddt;

 

protected $fieldsValidate = array(

'id_address_delivery' => 'isUnsignedId',

....

....

'ws_ddt' => 'isMessage'

);

 

poi ho aggiunto :

 

public function getFields()

{

parent::validateFields();

 

$fields['id_address_delivery'] = intval($this->id_address_delivery);

....

....

$fields['ws_ddt'] = pSQL($this->ws_ddt);

 

return $fields;

}

 

Ho apportato anche le modifice nel file order.php contenuto nella root di prestashop

intorno alla riga 217

/* Carrier step */

function processCarrier()

{

global $cart, $smarty, $isVirtualCart, $orderTotal;

$errors = array();

$cart->recyclable = (isset($_POST['recyclable']) AND !empty($_POST['recyclable'])) ? 1 : 0;

$cart->ws_ddt = ($_POST['ws_ddt']);

 

 

nonostante tutto il valore della variabile "ws_ddt" si perde subito dopo il suo inserimento, già nella fase di scelta della forma di pagamento, mentre , pur simulandone il "comportamento", il valore inserito nel campo "gift_message" viene trascinato sino alla fine del processo dell'ordine e scritto nel database .

 

qualcuno è in grado di aiutarmi??

:blink:

 

Grazie per la disponibilità.

Ale.

 

p.s.

ho dato già un occhiata al seguente topic

http://www.prestasho...-order-carrier/

Edited by alepul (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...