Jump to content
  • 0

Błędne ceny produktu z atrybutami.


Damian Lewandowicz

Question

Przejrzałem forum w poszukiwaniu tego problemu, ale nie znalazłem. W czym problem? Gdy produkt posiada atrybuty, błędnie pokazuje cenę produktu na stronie.

Przykład: tworzę produkt X bez żadnej ceny bazowej produktu za to z trzema atrybutami, z takimi np. cenami:
- Atrybut 1 - 8,00 netto / 9,84 brutto
- Atrybut 2 - 10,00 netto / 12,30 brutto
- Atrybut 3 - 12,00 netto / 14,76 brutto

 

Problem jest w tym, że o ile produkty bez atrybutów wyświetlają ceny poprawnie, to te z atrybutami traktują ceny netto jako brutto, zaś jako ceny netto wyświetlają ceny z kosmosu dodatkowo pomniejszone o "kolejne" 23%. Innymi słowy na karcie produktu, zamiast cen takich jak wyżej, są następujące:

- Atrybut 1 - 6,50 netto / 8,00 brutto
- Atrybut 2 - 8,13 netto / 10,00 brutto
- Atrybut 3 - 9,76 netto / 12,00 brutto

 

Dodam dwie informacje:
1) ceną podstawową sklepu dla wszystkich grup jest cena NETTO. Gdy wcześniej było to brutto - atrybuty działały dobrze!
2) zmieniłem kod w product.tpl aby wyświetlał mi zarówno cenę netto jak i brutto, obecnie kod wygląda następująco:

<p class="our_price_display">
{if $priceDisplay >= 0 && $priceDisplay <= 2}
<span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span> {l s='tax excl.'}</br>
<span  id="our_price_display">{convertPrice price=$product->
getPrice(true, $smarty.const.NULL)}</span> {l s='tax incl.'}</br>
{/if}
</p>

Strzelam, że należy dokonać modyfikacji w pliku product.js, ale java nie jest moją jakkolwiek mocną stroną. Może ktoś coś zasugerować?

Pozdrawiam,

Damian

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Znalazłem dwa obejścia.

 

1) Ponieważ skrypt JS mnoży cenę przez walutę, mogę ustawić kurs na 1,23 i wyrównać cenę do właściwych. Ale boję się, że wpłynie to negatywnie na inne pozycje, poza tym w przyszłości może wprowadzimy inne waluty i będzie kiszka.

2) Tak jak pisałem, nie do końca ogarniam JS, ale znalazłem możliwość edycji kodu:

 

if (!displayPrice && !noTaxForThisProduct)
productPriceDisplay = ps_round(taxExclPrice * tax, 2); // Need to be global => no var
else
productPriceDisplay = ps_round(taxExclPrice, 2); // Need to be global => no var

na kod:

if (!displayPrice && !noTaxForThisProduct)
productPriceDisplay = ps_round(taxExclPrice * tax * tax, 2); // Need to be global => no var
else
productPriceDisplay = ps_round(taxExclPrice * tax, 2); // Need to be global => no var

Czyli mnożę dwukrotnie cenę przez podatek, co powoduje wyrównanie cen do właściwych. Czy takie obejście problemu jest OK, czy może ono spowodować problemy?

 

EDIT: Jednak ta zmiana jest bezużyteczna, cena specyficzna bowiem jest wyświetlana o dziwo poprawnie i z tą modyfikacją rośnie dodatkowo naliczony podatek... Szukam dalej. Ktoś może coś podpowiedzieć?
 

EDIT2: Kod, który wydaje się odpowiadać za cenę sprzed promocji to:

productPriceWithoutReductionDisplay = productPriceDisplay * group_reduction;

Można go łatwo zmienić. Trzeba jednak jeszcze zmienić warunek, który chowa tę cenę gdy jest ona mniejsza niż podstawowa. W sumie więc powyższy kod zmieniłem na:

productPriceWithoutReductionDisplay = productPriceDisplay / tax * group_reduction;

i dodatkowo w drugim warunku poniżej zmieniłem hide na show:

if (productPriceWithoutReductionDisplay > productPriceDisplay)$('#old_price,#old_price_display,#old_price_display_taxes').show();
else
$('#old_price,#old_price_display,#old_price_display_taxes').show();

Nie wiem czy w sumie jest to najlepsze rozwiązanie, ale może komuś się przyda.

Edited by Damian Lewandowicz (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...