Jump to content

[HOW TO] Bonifico Bancario: utilizzarlo con tutte le valute ma fatturare solo in quella di default


viger

Recommended Posts

Ciao a tutti, 

presento qui la mia ultima fatica...  :)

 

Prestashop 1.5.0.17 (ma credo in generale per tutta la 1.5)

 

Il modulo di pagamento con bonifico bancario in prestashop è totalmente sbagliato, a mio avviso.

Il bonifico è molto utile ed economico, non immediato, ma spesso conveniente. Il problema che nasce dal modulo di PS è che viene proposto il bonifico solo se il cliente seleziona nel front office la valuta che noi abbiamo accettato di ricevere.

Quindi se accettiamo solo euro (il mio caso) e fatturiamo solo in euro, e il cliente visualizza lo shop in dollari, non gli verrà neanche proposto il pagamento col bonifico.

Per me è un funzionamento un po' folle...

Spiego perché:

 

- Io cliente posso visualizzare tutto lo shop in dollari, valuta a me più familiare, ma poi posso benissimo inviare un bonifico in euro (esattamente come accade in automatico con PayPal).

 

- Io venditore decido di accettare solo euro e fare fatture solo in euro, ma un bonifico in euro posso riceverlo da ovunque, anche da paesi con valuta differente.

 

 

Quindi, con grande fatica (non so programmare!) ho modificato il .tpl del modulo, modificandone leggermente il funzionamento e i contenuti.

 

Per installarlo, prima creare una copia di bakup del file

/modules/bankwire/views/templates/front/payment_execution.tpl

poi aprire il file payment_execution.tpl e sostituire il codice al suo interno con questo:

 

{*
* 2007-2012 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2012 PrestaShop SA
*  @version  Release: $Revision: 7465 $
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}


{capture name=path}{l s='Bank wire payment' mod='bankwire'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}


<h2>{l s='Order summary' mod='bankwire'}</h2>


{assign var='current_step' value='payment'}
{include file="$tpl_dir./order-steps.tpl"}


{if $nbProducts <= 0}
<p class="warning">{l s='Your shopping cart is empty.' mod='bankwire'}</p>
{else}


<h3>{l s='Bank wire payment' mod='bankwire'}</h3>
<form action="{$link->getModuleLink('bankwire', 'validation')}" method="post">
<p>
<img src="{$this_path}bankwire.jpg" alt="{l s='bank wire' mod='bankwire'}" width="86" height="49" style="float:left; margin: 0px 10px 5px 0px;" />
<br/>
{l s='You have chosen to pay by bank wire.' mod='bankwire'}
<br/><br />
</p>
<p>
<!-- if customer currency is that one I want -->
{if ($cart->id_currency) == 1}
{l s='The total amount of your order is' mod='bankwire'}
<span id="amount" class="price" style="font-weight: bold">{displayPrice price=$total}</span>{if $use_taxes == 1} {l s='(tax incl.)' mod='bankwire'}
{/if}
</p>
<p>
{l s='Bank wire account information will be displayed on the next page.' mod='bankwire'}
</p>
<p>
<b>{l s='Please confirm your order by clicking \'I confirm my order\'' mod='bankwire'}.</b>
</p>
<p class="cart_navigation">
<input type="submit" name="submit" value="{l s='I confirm my order' mod='bankwire'}" class="exclusive_large" />
<a href="{$link->getPageLink('order', true, NULL, "step=3")}" class="button_large">{l s='Other payment methods' mod='bankwire'}</a>
</p>
</form>
<!-- if customer currency is different from what I want -->
{else}
{l s='We only accept payments in' mod='bankwire'} <b>{l s='Euros' mod='bankwire'}</b>. {l s='Your current currency is' mod='bankwire'} <b>{if ($cart->id_currency) == 2}{l s='Dollar' mod='bankwire'}{/if}</b><b>{if ($cart->id_currency) == 3}{l s='Pound' mod='bankwire'}{/if}</b>.<br /><br />
{l s='The total amount of your order is' mod='bankwire'}
<span id="amount" class="price"><b>{displayPrice price=$total}</b></span>{if $use_taxes == 1} {l s='(tax incl.)' mod='bankwire'}
{/if}<br /><br />
<b>{l s='Please note' mod='bankwire'}</b>:<br />
{l s='The reference prices of entire shop are in' mod='bankwire'} {l s='Euros' mod='bankwire'}. {l s='The conversion in' mod='bankwire'} {if ($cart->id_currency) == 2}{l s='Dollar' mod='bankwire'}{/if}{if ($cart->id_currency) == 3}{l s='Pound' mod='bankwire'}{/if} {l s='is automatically made using daily updated exchange rates, but keep in mind that exchange rates of your bank may be slightly different' mod='bankwire'}.<br /><br />
{l s='By clicking' mod='bankwire'} <b>OK</b> {l s='your order will be converted in' mod='bankwire'} {l s='Euros' mod='bankwire'} {l s='and you will be able to conclude the check out paying with bank wire' mod='bankwire'}.<br /><br />
{l s='Otherwise click' mod='bankwire'} <b>{l s='Other payment methods' mod='bankwire'}</b> {l s='and choose another kind of payment' mod='bankwire'}.
</p>
<p class="cart_navigation">
<input type="button" id="currency_payement" name="currency_payement" value="OK" onclick="setCurrency(1);" class="exclusive_large" />
<a href="{$link->getPageLink('order', true, NULL, "step=3")}" class="button_large">{l s='Other payment methods' mod='bankwire'}</a>
</p>
{/if}
{/if}

Ora il modulo funziona così:

- da BO si attiva il bonifico per tutte le valute attivate (Moduli==>Pagamenti==>Limitazioni di modulo di pagamento)

- al cliente, qualsiasi sia la valuta che egli ha impostato in front office, viene ora proposta la possibilità di pagare col bonifico

- il modulo quindi controlla la valuta impostata dal cliente:

       - se è quella di default va avanti normalmente

       - se è diversa, fa apparire un passaggio in più in cui spiega che si accettano solo pagamenti in euro (o la valuta scelta dal venditore), che l'ordine verrà convertito nella valuta accettata dal venditore e verrà mostrato prima di essere definitivamente inviato dal cliente.

 

 

Il settaggio delle varie valute è manuale e direttamente sul template. Utilizza gli ID delle valute che possono essere facilmente identificati nel BO "Localizzazione==>Valute"

 

La valuta che vogliamo di default è alla riga 49 (qui rappresentata dal numero 1 - euro):

{if ($cart->id_currency) == 1}

Bisogna poi inserire alla riga 67 e 72 gli ID delle altre valute attivate nello shop con i rispettivi nomi in inglese (qui il 2 è Dollar e il 3 è Pound):

{if ($cart->id_currency) == 2}{l s='Dollar' mod='bankwire'}{/if}</b><b>{if ($cart->id_currency) == 3}{l s='Pound' mod='bankwire'}{/if}

Sempre alle righe 67, 72 e 73 dichiarare in che valuta si vuole essere pagati (qui appunto "Euros"):

{l s='Euros' mod='bankwire'} 

Ultimo parametro alla riga 77 dove si metterà nuovamente l'ID della valuta di default (qui 1 per rappresentare gli euro):

onclick="setCurrency(1);"

Ovviamente ci sono parti nuove da tradurre nel BO: buon lavoro!

 

 

Io l'ho testato e lo uso nel mio shop, va alla grande.

 

Io credo sarebbe bene che qualche pezzo grosso dei programmatori che fanno parte dello sviluppo di PS proponesse di adottare questo sistema in maniera ufficiale, magari evolvendolo con un settaggio più agevole direttamente da BO invece che col codice. Altrimenti, di fatto, il bonifico è ben poco utilizzabile!

Ma questo lo vedrà chi di dovere, io sono a posto!  :P

 

Che dire, fatemi sapere se vi piace e se qualcuno riscontra un qualsiasi problema! 

 

Ciau!

 

:D

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

Ciao.

No e' solo una limitazione della tua versione.

Nella 1.5.5 la versione aggiornata del modulo e'

{capture name=path}{l s='Bank-wire payment.' mod='bankwire'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}

<h2>{l s='Order summary' mod='bankwire'}</h2>

{assign var='current_step' value='payment'}
{include file="$tpl_dir./order-steps.tpl"}

{if $nbProducts <= 0}
	<p class="warning">{l s='Your shopping cart is empty.' mod='bankwire'}</p>
{else}

<h3>{l s='Bank-wire payment.' mod='bankwire'}</h3>
<form action="{$link->getModuleLink('bankwire', 'validation', [], true)|escape:'html'}" method="post">
<p>
	<img src="{$this_path_bw}bankwire.jpg" alt="{l s='Bank wire' mod='bankwire'}" width="86" height="49" style="float:left; margin: 0px 10px 5px 0px;" />
	{l s='You have chosen to pay by bank wire.' mod='bankwire'}
	<br/><br />
	{l s='Here is a short summary of your order:' mod='bankwire'}
</p>
<p style="margin-top:20px;">
	- {l s='The total amount of your order is' mod='bankwire'}
	<span id="amount" class="price">{displayPrice price=$total}</span>
	{if $use_taxes == 1}
    	{l s='(tax incl.)' mod='bankwire'}
    {/if}
</p>
<p>
	-
	{if $currencies|@count > 1}
		{l s='We allow several currencies to be sent via bank wire.' mod='bankwire'}
		<br /><br />
		{l s='Choose one of the following:' mod='bankwire'}
		<select id="currency_payement" name="currency_payement" onchange="setCurrency($('#currency_payement').val());">
			{foreach from=$currencies item=currency}
				<option value="{$currency.id_currency}" {if $currency.id_currency == $cust_currency}selected="selected"{/if}>{$currency.name}</option>
			{/foreach}
		</select>
	{else}
		{l s='We allow the following currency to be sent via bank wire:' mod='bankwire'} <b>{$currencies.0.name}</b>
		<input type="hidden" name="currency_payement" value="{$currencies.0.id_currency}" />
	{/if}
</p>
<p>
	{l s='Bank wire account information will be displayed on the next page.' mod='bankwire'}
	<br /><br />
	<b>{l s='Please confirm your order by clicking "Place my order."' mod='bankwire'}.</b>
</p>
<p class="cart_navigation">
	<input type="submit" name="submit" value="{l s='Place my order' mod='bankwire'}" class="exclusive_large" />
	<a href="{$link->getPageLink('order', true, NULL, "step=3")|escape:'html'}" class="button_large">{l s='Other payment methods' mod='bankwire'}</a>
</p>
</form>
{/if}

che come puoi vedere non limita il modulo ad una sola valuta e prevede la possibilita' per il cliente di modificare la valuta in fase di pagamento. In pratica:

{if $currencies|@count > 1}
		{l s='We allow several currencies to be sent via bank wire.' mod='bankwire'}
		<br /><br />
		{l s='Choose one of the following:' mod='bankwire'}
		<select id="currency_payement" name="currency_payement" onchange="setCurrency($('#currency_payement').val());">
			{foreach from=$currencies item=currency}
				<option value="{$currency.id_currency}" {if $currency.id_currency == $cust_currency}selected="selected"{/if}>{$currency.name}</option>
			{/foreach}
		</select>
	{else}
		{l s='We allow the following currency to be sent via bank wire:' mod='bankwire'} <b>{$currencies.0.name}</b>
		<input type="hidden" name="currency_payement" value="{$currencies.0.id_currency}" />
	{/if}

Poi lo puoi modificare come ti pare ma quello che mi chiedo e' se sia veramente conveniente ricevere un bonifico estero quando (oltre agli aggiornamenti SEPA) si pelano minimo 20 euro mentre con un gateway non italiano vai su una media di 3% a transazione all-inclusive (senza spese extra per valute non-euro)...

Link to comment
Share on other sites

No, la mia versione è uguale, infatti lascia al cliente (esattamente come quella postata da te) la scelta di inviarti un bonifico in una delle valute che tu hai deciso, come venditore, di accettare. Il che vuol dire che tutta la fatturazione di PS viene compilata nella valuta scelta dal cliente, che tu ricevi della valuta estera e le conseguenti spese di cambio e scocciature di fatturazione sono a tuo carico.

 

Con la modifica che ho fatto, il bonifico viene sempre proposto, ma può essere inviato solo nella valuta scelta dal venditore.

Il che è molto differente.

Oltre che impossibile in qualsiasi versione di PS senza modifica.

 

Quanto al costo, dipende dall'importo e quindi da cosa vendi. per piccole cifre sono d'accordo con te, per somme più ingenti il discorso cambia (2000 euro o più il costo comincia a diventare di 60/80 euro per ricevere con paypal, sempre che il plafond della carta credito lo consenta). In ogni caso, la pagina e l'email di accettazione dell'ordine le ho modificate affinché sia ben chiaro che le spese di invio sono a carico del compratore e che l'ordine non parte fino a ricevimento dell'intera somma.

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...