Zaliczka

sprintserwis

Avatar: sprintserwis

2010-10-16 16:17

Witam,
W swoim sklepie chce mieć towar do realizacji na zamówienie.
Chciałbym aby klient nie musiał wpłacać od razu całej kwoty, tylko samą zaliczkę (15%).

W pliku orders.php (funkcja listProducts):
po
$aData['fProductsSummary'] = normalizePrice( $this->fProductsSummary );

$aData['sProductsSummary'] = displayPrice( $aData['fProductsSummary'] );

wpisałem
$aData['Zaliczka'] = displayPrice(normalizePrice(fProductsSummary * 15 / 100));

Następnie w orders_form.tpl w sekcji <!-- BEGIN ORDER_PRODUCTS_HEAD -->
oraz w orders_print.tpl w sekcji <!-- BEGIN ORDER_PRINT_HEAD -->,
wykorzystuję ją do wyświetlenia informacji o wysokości zaliczki. Wstawiłem:
<tr class="ZaliczkaInfo">

<th colspan="3">

w tym zaliczka 15%

</th>

<td id="ZaliczkaKwota">

$aData[Zaliczka]

</td>

</tr>


Wyświetla się dobrze.

Problem jest z informacją w e-mail. W pliku orders_print.tpl w sekcjach
<!-- BEGIN ORDER_EMAIL_BODY --> oraz <!-- BEGIN CUSTOMER_ORDER_EMAIL_BODY -->
zawartość $aData[Zaliczka] jest pusta!

Czy ktoś mógłby podpowiedzieć co zrobiłem źle?
Może w złym miejscu wpisałem obliczenie zaliczki?
Szperam po plikach szukając przyczyny "zniknięcia" zawartości $aData[Zaliczka],
ale całkiem ugrzązłem w tym i pogubiłem się już.

Może ktoś pomóc i dać chociaż jakąś wskazówkę?

» Quick.Cart v3.x

boboo

Avatar: boboo

2010-10-16 16:50

Na pierwszy rzut oka, wszystko dobrze, ale... za mało ;-)
Zerknij na funkcję:
sendEmailWithOrderDetails
w /core/orders.php

Do emaila są pobierane dane z:
throwOrder( $iOrder )

a tam nie ma nic o zaliczce.

dopisz tam jakiś
$aData['Zaliczka'] = $this->(int)aOrders[$iOrder]['sOrderSummary']*0.15;
nad:
$oTpl->setVariables( 'aData', $aData);

Powinno zadziałać

http://skupienie.kimla.de/?software-quickcart,106

sprintserwis

Avatar: sprintserwis

2010-10-16 17:19

Dzięki boboo,

Faktycznie za mało. Właśnie mnie olśniło i chciałem sobie odpisać, ale byłeś szybszy :)
Zrobiłem to nieco inaczej:

W funkcji listProducts po
$this->aOrders[$iId]['fProductsSummary'] = $aData['fProductsSummary'];

dopisałem:
$this->aOrders[$iId]['Zaliczka'] = $aData['Zaliczka'];


A w funkcjach sendEmailWithOrderDetails i sendEmailToCustomerWithOrderDetails po
$aData['sOrderSummary'] = $this->aOrders[$iOrder]['sOrderSummary'];

dopisałem:
$aData['Zaliczka'] = $this->aOrders[$iOrder]['Zaliczka'];


i działa.

Hehe, zmieniłem też * 15 / 100 na * 0.15
Ach te nawyki z liczenia w integer ... :D

Sądzisz, że zaliczkę powinienem wyliczać jednak w funkcji throwOrder? Tak jak to proponujesz?
Zastanawiam się, czy to by coś ułatwiło na przyszłość - przeanalizuję.

Jeszcze raz dzięki

sprintserwis

Avatar: sprintserwis

2010-10-16 17:47

No tak, już widzę różnicę.
Po przeniesieniu wyliczenia zaliczki do throwOrder nie wyświetla mi się ona w formularzu zamówienia.
Wyliczenie musiałby być w dwóch miejscach.
Póki co pozostanę więc przy swoim rozwiązaniu, gdyż aby uniknąć jakiś nieporozumień w przyszłości wolę liczyć to w jednym miejscu.

Do góry
o nas | kontakt