Jump to content
naptalky

Problem: Atrybuty a rabaty ilościowe.

Recommended Posts

Witam wszystkich prestowiczów!

Jestem świeżakiem w Prestashopie, choć programowanie nieco znam i mniej więcej "wiem co czytam". Jednakże mam problem nurtujący mnie od pewnego czasu. Otóż w podglądzie produktu (product.tpl - domyślny szablon) dokonałem zmian w tabeli rabatów ilościowych tak, by pokazywały [ilość] - [koszt całościowy] - [koszt/1szt.] . Dodatkowo obróciłem kolejność na ASC, ponieważ domyślnie było DESC. Dodam, że te zmiany robiłem w kodzie (product.tpl) OK, śmiga. Tylko teraz mam problem, ponieważ gdy tylko dodam atrybut do jakiegoś produktu, tabelka szaleje i w ostatniej kolumnie, gdzie jest [koszt/1szt.] pokazuje "Do [jakaś liczba zł]" (tak jak pokazywało pierwotnie oszczędność), jednakże nie byłem w stanie znaleźć w kodzie algorytmu odpowiadającego za przeliczanie tej dziwnej liczby. Czy ktoś mógłby mi powiedzieć, co mogę robić źle? Dodatkowo, wolałbym uniknąć zmian w rdzeniu systemu. Poniżej zamieszczam screenshoty co konkretnie się dzieje.

 

Z góry dzięki za pomoc,

Talky.

 

PS: Przez atrybuty mam na myśli kombinacje.

 

EDIT: Kod odpowiadający za kolejne kolumny tabelki:

 

Ilość:

{$quantity_discount.quantity|intval}

Cena za pakiet:

{convertPrice price = ($productPrice-($productPrice*$quantity_discount.reduction))*$quantity_discount.quantity|floatval}

Cena jednostkowa:

{convertPrice price = $productPrice-($productPrice*$quantity_discount.reduction)|floatval}

post-1084973-0-93269400-1441101277_thumb.jpg

post-1084973-0-17172700-1441101279_thumb.jpg

Edited by naptalky (see edit history)

Share this post


Link to post
Share on other sites

W wersji 1,6 cała kolumna (a właściwie <td> ) jest nadpisywany w js.

Szukaj w pliku product.js funkcji:  function updateDiscountTable(newPrice)

 

tam będziesz miał warunki : if (displayDiscountPrice != 0)

u mnie wygląda to tak i działa: 

if (displayDiscountPrice != 0)
			$(this).children('td').eq(1).text( formatCurrency(discountedPrice * currencyRate, currencyFormat, currencySign, currencyBlank) );
			$(this).children('td').eq(2).text(/*upToTxt + ' ' +*/ formatCurrency(discountedPrice, currencyFormat, currencySign, currencyBlank));
			$(this).children('td').eq(3).text( upToTxt + ' ' + formatCurrency(Math.round(discountUpTo * currencyRate), currencyFormat, currencySign, currencyBlank));

332_jednostka.png

Share this post


Link to post
Share on other sites

Hmm chciałem zastosować twoją tabelę ale ona mi się nie chce pokazać. Czy mowisz o pliku product.js który znajduje sie w js w konkretnym szablonie?

Czy możesz mi przesłać całą tą funkcję od początku do końca?

Share this post


Link to post
Share on other sites

Domyślnie plik js jest  /themes/default-bootstrap/js ale jak używasz innego szablonu to tylko podmieniasz nazwę.

 

funkcja o której piszę powinna się zaczynać w 926 linijce 

function updateDiscountTable(newPrice)
{
	$('#quantityDiscount tbody tr').each(function(){
		var type = $(this).data("discount-type");
		var discount = $(this).data("discount");
		var quantity = $(this).data("discount-quantity");

		if (type == 'percentage')
		{
			var discountedPrice = newPrice * (1 - discount/100);
			var discountUpTo = newPrice * (discount/100) * quantity;
		}
		else if (type == 'amount')
		{
			var discountedPrice = newPrice - discount;
			var discountUpTo = discount * quantity;
		}

		if (displayDiscountPrice != 0)
			$(this).children('td').eq(1).text( formatCurrency(discountedPrice * currencyRate, currencyFormat, currencySign, currencyBlank) );
			$(this).children('td').eq(2).text(/*upToTxt + ' ' + */formatCurrency(discountedPrice, currencyFormat, currencySign, currencyBlank));
			$(this).children('td').eq(3).text(upToTxt + ' ' + formatCurrency(Math.round(discountUpTo * currencyRate), currencyFormat, currencySign, currencyBlank));
	});
}

 

Edited by Sasni (see edit history)

Share this post


Link to post
Share on other sites

Witam,
Odkopuje temat :
Więc samo edytowanie pliku product.js - nic nie da, prawda? W takim razie jak konkretnie powinien wyglądać kod w pliku product.tpl, żeby dodać kolumnę "cena jednostkowa" (oczywiście po obniżce) do tabelki rabaty ilościowe?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More