Joomla.it Forum
Componenti per Joomla! => Gestione e-commerce => : edwe 11 Mar 2014, 19:37:50
-
Salve, Volevo chiedere se fosse possibile visualizzare nel campo Sconto la percentuale dello sconto e non l'importo. Ovvero se un prodotto costa 100 € e io applico uno sconto del 50% Virtuemart nel campo Sconto metterà -50 € io voglio invece che appaia -50%. E' possibile?
-
sì, basta inserire la formula per il calcolo dello sconto invece dell'importo dello sconto.
override di /productdetails/default_showprices.php ed inserimento della formula.
ciao,
marco
-
Ehm...Potresti essere più preciso? che tipo di formula? E in quale default_showprices? Quello di Virtuemart o quello presente nel template?
-
la formula è quella che ti permette, dato il prezzo di vendita pieno e lo sconto, di ottenere la percentuale di sconto. non è una funzione di VM2, la devi scrivere tu. in effetti si tratta di una proporzione, quindi niente di difficile.
(è che non mi ricordo a memoria i nomi dei campi, ma li ricavi velocemente vedendo i valori stampati)
se esiste già l'ovverride nella directory del template usi quest'ultimo. se tu modificassi il file in VM non avresti alcun effetto dato che, appunto, esiste già un override.
ciao,
marco
-
Ok! Perfetto! Se ho ben capito la formula dovrebbe essere:
(1 - (discountAmount / basePriceWithTax)) * 100
oppure
discountAmount / basePriceWithTax * 100
cercando su internet ho trovato queste due. Non so però se sono giuste. Puoi aiutarmi?
-
Li ho provati entrambi ma mi da come risultato: " Warning: Division by zero"
Perchè?
Grazie!
-
Le due formule differiscono, ovvero non sono una ugualianza, quindi non possono essere entrambe giuste.
detti:
basePriceWithTax = prezzo di vendita pieno
discountAmount = ammontare dello sconto (in valuta)
possiamo scrivere:
basePriceWithTax : discountAmount = 100 : percentualeSconto
da cui consegue:
percentualeSconto = (100 * discountAmount) / basePriceWithTax
se ne deduce che la formula corretta è la seconda.
tieni però presente che basePriceWithTax e discountAmount non sono variabili, ma indici dell'array associativo 'prices' che una proprietà dell'istanza del prodotto.
facendo riferimento al codice standard del template di VM2 il calcolo diventa, con un poco di formattazione:
<?php printf("%02.1f%%", 100 * $this->product->prices['discountAmount'] / $this->product->prices['basePriceWithTax']); ?>
ps: nota che discountAmount, in VM2, è un valore negativo.
che division by zero sia un warning poi è tutt'altro discorso...
ciao,
marco
-
Ciao, continuo a non capire bene. questo è il mio codice per Discount Amount:
echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices)
;
Dove dovrei mettere la formula che mi hai dato?
Grazie, Edel
-
Ho trovato la soluzione spulciando dei forum in inglese. Allora bisogna mettere questo codice nel file default_showprice.php (components\com_virtuemart\views\productdetails) al posto di quello di discountAmount:
if (round($this->product->prices['discountAmount'] != 0 )) {
$discount_percent = round(($this->product->prices['basePrice'] - $this->product->prices['salesPrice']) * 100 / $this->product->prices['basePrice']);
?>
<div class="discountAmount">
Sconto: <?php echo $discount_percent; ?>%
<>
<?php
}
[size=78%]
Nel mio caso uso basePrice poichè non applico nessuna tassa altrimenti userei basePriceWithTax.
Questo codice vi permette di visualizzare lo sconto in percentuale nel momento in cui si è nel dettaglio prodotto. Per visualizzarlo sulla vetrina dovrete mettere un altro codice in default.php che dovrebbe essere in components\com_virtuemart\views\virtuemart\tmpl\ non ne sono certa perchè io ho un template con override e quindi sono andata a modificare il file del template. Il codice da inserire, sempre al posto di discountAmount è:
[/size]if (round($this->product->prices['discountAmount'] != 0 )) {
$discount_percent = round(($this->product->prices['basePrice'] - $this->product->prices['salesPrice']) * 100 / $this->product->prices['basePrice']);
?>
<div class="discountAmount">
Sconto: <?php echo $discount_percent; ?>%
<>
<?php
}
[size=78%]
Spero di essere stata utile! :) [/size]
-
è esattamente quello che è scritto sopra, ma perché nessuno mai fa lo sforzo di capire ciò che sta facendo?
:( :( :( :(
-
Ho solo dato una spiegazione più dettagliata, nulla di più. Pensavo di fare cosa buona!