Помощь Как передать переменную?

Статус
В этой теме нельзя размещать новые ответы.

paqwerty

Постоялец
Регистрация
22 Апр 2009
Сообщения
53
Реакции
2
Помогите пожалуйста передать переменную из cart_function.php в тело письма с уведомлением о заказе admin_order_notification.txt

Суть заключается в том, что клиент может заказать товар превысив количество, которое есть на складе. Тогда ему в корзине и форме оформления заказа пишеться число товара, на которое он превысил и надпись "под заказ". И надо, чтобы мне в письме заказа писалось это число товара под заказ.

Я сделал, в корзине и форме оформления заказа все работает, а в письме пишется не правильно, т.к. для уведомления он высчитывает уже после списания товара со склада.

Чтобы было понятнее я приложил картинки:

Вот так выглядит корзина, в которой клиент указал кол-во товара 10, а на складе есть только 3. И ему пишется, что 7 штук будет оформлено под заказ:

attachment.php


Это фрагмент последнего шага оформления заказа - "подтверждение":

attachment.php


Вот кусок кода где я считаю эту разницу в количестве и присваиваю переменной :

/core_functions/cart_functions.php
PHP:
function cartGetCartContent()
...
if (  $cart_item["Quantity"] > $product["in_stock"] && $product         ["in_stock"] <= 0 ) {
   $product["in_stock"] = 0;
   $tmp["stock_raznica"] = $cart_item["Quantity"] - $product["in_stock"];
}
else if (  $cart_item["Quantity"] > $product["in_stock"] && $product["in_stock"] > 0 ) {
   $tmp["stock_raznica"] = $cart_item["Quantity"] - $product["in_stock"];
} else {
   $tmp["stock_raznica"] = 0;
}
...

А это в шаблоне корзины:
HTML:
{section loop=$cart_content name=i}
{counter name=product_count print=false}
<tr>
<td>
{if $this_is_a_popup_cart_window}
<b>{$cart_content[i].name}</b>
{else}
<a href='{$cart_php_file}?productID={$cart_content[i].productID}'>{$cart_content[i].name}</a>
<br />
{if $cart_content[i].in_stock < $cart_content[i].quantity}
{$cart_content[i].stock_raznica} {$smarty.const.CART_PREORDER}
{else}
&nbsp;
{/if}
{/if}
{/section}

и в шаблоне подтверждения заказа:

HTML:
{section name=i loop=$orderSum.sumOrderContent}
<tr>
<td>{$orderSum.sumOrderContent[i].name}</td>
<td>({$orderSum.sumOrderContent[i].quantity} / <span style="color: #CC0000;">{$orderSum.sumOrderContent[i].stock_raznica}</span>)</td>
<td>{$orderSum.sumOrderContent[i].cost}</td>
</tr>
{/section}

А КАК СДЕЛАТЬ ТАК, ЧТОБЫ МНЕ В ПИСЬМЕ УВЕДОМЛЕНИЯ ЗАКАЗА ПИСАЛАСЬ ЭТА ЦИФРА 7?

Помогите пожалуйста, люди добрые....
 

Вложения

  • 1.jpg
    1.jpg
    69,4 KB · Просмотры: 64
  • 2.jpg
    2.jpg
    75,2 KB · Просмотры: 65
Вобщем смысл такой: Человек может заказать товар с кол-ом превышающим остаток на складе (например, на складе 5 шт., заказ на 10 шт. или на складе 0 шт., заказ на 10 шт.). Соответственно разница между заказом и остатком оформляется под заказ.

Когда товар находится в корзине или на стадии оформления заказа, его кол-во на складе остается прежним, но как только человек нажал кнопку "Оформить заказ" на 5-ой последней стадии оформления заказа, то со склада списывается (вычитается) кол-во товара в заказе. Из этого вытекает 2 ситуации рассчета разницы кол-ва (под заказ:(

1. Разница в корзине или на стадии оформления заказа (до списания).
2. Разница в заказе или уведомлении о заказе (после списания).

В первой ситуации все просто - высчитывается разница, присваивается переменной, помещается в массив cart_content и передается в шаблон. ВСЕ!


А вот во второй ситуации чуть посложнее. Там, если просто вычесть из заказанного кол-ва кол-во на складе, получится ерунда, потому что товар уже списался и вычитать мы будем уже именно остаток после списания. Вытекает задача, надо высчитыва или товар на складе ДО списания, но это как мне кажется не реально, потому что такая функция будет все равно вызыватся после списания, или вычитать ПРАВИЛЬНО из остатка после списания, что я и сделал.


А к вопросу почему у меня не получалось вывесть в уведомлении - да потому что я пытался брать значения этой разницы из сессии корзины и оформления заказа, а т.к. это делалось после оформления заказа, то получалось что эта сессия уже пустая (товар ведь не висит больше в корзине). Вот нам и ничего и не писалось...

Но это полбеды оказалось. Все это с уведомлениями получилось понапрасну, т.к. мне надо чтобы эта разница была еще и в админке, а там все берется из бд, т.е. и разницу надо заносить в бд, но это решаемо. А без бд реально не обойтись, т.к. если без нее, то тогда если был 1 заказ с разницей в кол-ве, то будешь видеть все нормально в админке, НО если после этого заказа был 2-ой и т.д. заказ с разницей в кол-ве этого же товара, то в первом заказе разница будет периодически высчитыватся заново и рез-т будет все время разным.

Так что эта проблема решена, буду решать следующую...

ВОТ ТАКИЕ ПИРОГИ...

Если впринципе тебе это все актуально, то чуть позже могу дать всю эту затею, а затеял это все чтобы можно было заказывать товар которого нет на складе, т.е. "ПОД ЗАКАЗ"
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху