× Kereskedelmi és bolt bővítmények

file Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra

Több
2014 jan. 09 15:24 #1 Írta: sanya93
Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra téma létrehozva sanya93 által
Üdv A csvi importálás után a nettó árakból ugye bruttó árak lesznek.hogyan lehet azt megoldani,hogy a nettó 1655 ft bruttósítás után ne 2102 ft legyen hanem ilyen esetben legyen kerek 2100 ft. és 3 vagy 4 végződésnél kerekítsen 5 végződésre. Köszi

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2014 jan. 10 01:40 - 2014 jan. 10 01:50 #2 Írta: Balázs
Balázs válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
Jó kérdés, hogy-hogy oldották meg ezt mások. Ez egyébként lehetséges hogy egyedi megoldást kíván, egy magyarországi kerekítési szabállyal megtoldani a calculationh.php-t.

Pár hasonló téma/megoldás a hivatalos VM fórumból:
forum.virtuemart.net/index.php?topic=111435
forum.virtuemart.net/index.php?topic=107610
és egy régebbi szál az org.hu-s fórumból:
forum.joomla.org.hu/kerekites-problema-t5083.html

Ha bizalmas információt szeretnél közölni az adminokkal, akkor tedd az üzeneted tartalmát a [ confidential ][ /confidential ] címkék közé (szóközök nélkül).

Joomla! tanácsadás, oktatás, fejlesztés - joomlabs.hu
Utolsó szerkesztés: 2014 jan. 10 01:50 Balázs által.

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2014 jan. 10 08:51 - 2014 jan. 10 08:56 #3 Írta: Zotius
Zotius válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
Bocs', hogy beleszólok problémádba, de szerintem webáruháznál ez a 0/5-ös kerekítés teljesen felesleges. Indulj ki abból, hogy a webáruházi vásárlásokat többnyire átutalással, előre kell kifizetni, kisebb részben utánvéttel (futár/gyorsposta) útján.
Átutaláskor az összeget nem kell 0/5-re kerekíteni, a futár/gyp. pedig - ugyanúgy, mint a postahivatalokban - "helyben" kerekítenek, s a kerekítési különbözettel a posta, illetve a futár/gyp később el tud számolni.
Ráadásul - ahogy írod - a kerekítést a tételnél szeretnéd megoldani, ami pedig nem helyes.
Tovább ragozva a kérdést: Jól is néznénk ki, ha a tételben nem csak a tétel bruttó végösszege, hanem már az ÁFA összege is kerekítésre kerülne...
Mi van, ha több tételt vásárol a vevő? Egy több tételből álló számlában nem tételenként kell 0/5-re kerekíteni, hanem csak a számla legvégén, ott is csak a bruttó végösszeget.
Nem muszáj az ő problémájukat neked megoldani.

Ha hasznos volt a hozzászólásom számodra, nyugodtan megnyomhatod lent a „Köszönet” gombot :)
Skype: zotius
Utolsó szerkesztés: 2014 jan. 10 08:56 Zotius által. Indoklás: kiegészítés

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2014 jan. 10 10:50 #4 Írta: sanya93
sanya93 válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
Lehet hogy felesleges a kerekítés,de én szeretnék szép árakat,nem akarok a 999 ft-osok közé állni. Ebben a shopunkban nem lehet rendelni csak katalógusként működik,ha megtetszik az árú akkor bejön érte a boltba.Ezért kell a kerekítés,

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2014 febr. 21 09:44 - 2014 febr. 21 09:45 #5 Írta: kovacshazi
kovacshazi válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
Nekem több pénznem esetén amikor az alapár USD a következő megoldás segítette. Még nincs végig tesztelve, hogy kosárban, visszaigazoló emailban is végig jó-e de elsőre úgy tűnik igen.
Tehát a megoldásom:
administrator/compontns/com_virtuemasrt/helpers/currencydisplay.php fájlt kell módosítani:
Ebben a function roundForDisplay résztbe illesztettem be a következő kódot.
		} elseif($this->_numeric_code===348){
			$price = round((float)$price * 2,-1) * 0.5;
		}
A teljes function roundForDisplay így néz ki:
	public function roundForDisplay($price, $currencyId=0,$quantity = 1.0,$inToShopCurrency = false,$nb= -1){

		$currencyId = $this->getCurrencyForDisplay($currencyId);
		if($nb==-1){
			$nb = $this->_nbDecimal;
		}

		$price = (float)$price * (float)$quantity;

		$price = $this->convertCurrencyTo($currencyId,$price,$inToShopCurrency);

		if($this->_numeric_code===756 and VmConfig::get('rappenrundung',FALSE)=="1"){
			$price = round((float)$price * 2,1) * 0.5;
		} elseif($this->_numeric_code===348){
			$price = round((float)$price * 2,-1) * 0.5;
		} else {
			$price = round($price,$nb);
		}
		return $price;
	}

Segítség Joomla és VirtueMart webáruház készítéséhet, problémák megoldásában
www.webprogramok.hu

Joomladay2013 - Budapest, Hungary
www.joomladay.hu
Utolsó szerkesztés: 2014 febr. 21 09:45 kovacshazi által.

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2014 febr. 21 11:51 #6 Írta: sanya93
sanya93 válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
Nekem ezt a hibát adja ha modosítom a roundForDisplay részt
public_html/administrator/components/com_virtuemart/helpers/currencydisplay.php on line 375

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2019 jan. 06 09:53 #7 Írta: Rendy77
Rendy77 válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
Erre azóta sincs megoldás? Engem is érdekelne. Szeretném már a webshopban lévő árakat kerekíteni, de nem találok rá semmi megoldást :(

Jelentkezz be, hogy te is részt vehess beszélgetésben!

Több
2021 jún. 02 08:50 - 2021 jún. 02 08:53 #8 Írta: rakuszj
rakuszj válaszolt a következő témában: Virtuemart - Végső ár kerekítése 0 vagy 5 ft-ra
A megoldás jó, nekem működik, J 3.9.27 - VM 3.8.8


public function roundForDisplay($price, $currencyId=0,$quantity = 1.0,$inToShopCurrency = false,$nb= -1){
if(empty($currencyId)) $currencyId = $this->getCurrencyForDisplay($currencyId);
if($nb==-1){
$nb = $this->_nbDecimal;
}
$price = $this->convertCurrencyTo($currencyId,$price,$inToShopCurrency);
if(VmConfig::get('roundindig')){
$price = round((float)$price * (float)$quantity,$nb); //('roundForDisplay roundindig',$price1);
} else {
$price = round((float)$price,$nb) * (float)$quantity;
}
if($this->_numeric_code===756 and VmConfig::get('rappenrundung',FALSE)=="1"){
//$price = (float)$price * (float)$quantity;
$price = round((float)$price * 2,1) * 0.5; }
elseif($this->_numeric_code===348){
$price = round((float)$price * 2,-1) * 0.5;
}
return $price;
}
 
Utolsó szerkesztés: 2021 jún. 02 08:53 rakuszj által.

Jelentkezz be, hogy te is részt vehess beszélgetésben!