Попробую более доходчиво изложить проблему (быть может тогда кто-то сможет мне помочь
.
Итак, код состоит из 2-х блоков.
Первый (условно назовем его блоком пересчета суммы):
Вот если здесь тупо прописать скажем: $DELIVERYPRICE = 333; то к сумме заказа прибавиться доставка стоимостью 333 рубля (прибавиться и на этапе формирования заказа, на экране; и в самом заказе)!
Следующий блок я добавил на четвертом этапе формирования заказа (блок формы ввода суммы доставки оператором Интернет-магазина):
Почему именно на четвертом? Потому-что на других этапах (я пытался вставлять форму на всех этапах формирования заказа) сумма не передается вообще. А с таким кодом сумма отображается на последнем этапе формирования заказа НО не попадает в сам заказ (В БД MySQL). Т.е. сейчас задача состоит в том чтобы корректно получить (из формы) сумму введенную оператором и передать ее в переменную DELIVERYPRICENEW (в форме цифр, числа!!!).
Я подозроеваю что загвоздка может быть либо в неправильном построении формы, либо в том что переменная теряется на каком-то этапе (как сделать ее так сказать глобальной, не теряемой?), либо что-то не так с использованием функции IntVal (ибо без нее сумма вообще не передается, а с ней - ДА, но возможно нужно использовать не IntVal а что-то другое).
ЗЫ: Если кому интересно - могу запостить весь код файла: order_full.php (но это около 100 кб).
.Итак, код состоит из 2-х блоков.
Первый (условно назовем его блоком пересчета суммы):
| Код |
|---|
// DELIVERY
// Рассчитываем стоимость доставки
// $DELIVERY_ID == 128 - почтовая доставка
$DELIVERY_ID = IntVal($_REQUEST["DELIVERY_ID"]);
$DELIVERY_PRICE = 0;
$DELIVERYPRICE = IntVal($_REQUEST["DELIVERYPRICENEW"]);
if (($DELIVERY_ID > 0) && !($arDeliv = CSaleDelivery::GetByID($DELIVERY_ID))) $errorMessage .= GetMessage("SALE_DELIVERY_NOT_FOUND")."<br>";
elseif (($DELIVERY_ID == 128) && $arDeliv) $DELIVERY_PRICE = $ORDER_PRICE / 10 * 3;
elseif (($DELIVERY_ID == 170) && $arDeliv) $DELIVERY_PRICE = $DELIVERYPRICE + 300;
elseif (($DELIVERY_ID == 5) && $arDeliv) $DELIVERY_PRICE = $DELIVERYPRICE;
elseif (($DELIVERY_ID > 0) && $arDeliv) $DELIVERY_PRICE = roundEx(CCurrencyRates::ConvertCurrency($arDeliv["PRICE"], $arDeliv["CURRENCY"], $BASE_LANG_CURRENCY), SALE_VALUE_PRECISION);
if(strlen($errorMessage) > 0) $CurrentStep = 3;
}
if(strlen($errorMessage) <= 0 && $CurrentStep > 4)
{ |
Вот если здесь тупо прописать скажем: $DELIVERYPRICE = 333; то к сумме заказа прибавиться доставка стоимостью 333 рубля (прибавиться и на этапе формирования заказа, на экране; и в самом заказе)!
Следующий блок я добавил на четвертом этапе формирования заказа (блок формы ввода суммы доставки оператором Интернет-магазина):
| Код |
|---|
<form method="GET" action="<?= htmlspecialchars($ORDER_PAGE) ?>" name="order_form">
<?
if(getenv('REMOTE_ADDR') == '88.88.888.888')
{
echo '<br><b>Если нужно - исправьте стоимость доставки (для заказов с доставкой в Область):</b>';
echo '<input type="text" name="DELIVERYPRICENEW" size="8" class="inputtext">';
}
?> |
Почему именно на четвертом? Потому-что на других этапах (я пытался вставлять форму на всех этапах формирования заказа) сумма не передается вообще. А с таким кодом сумма отображается на последнем этапе формирования заказа НО не попадает в сам заказ (В БД MySQL). Т.е. сейчас задача состоит в том чтобы корректно получить (из формы) сумму введенную оператором и передать ее в переменную DELIVERYPRICENEW (в форме цифр, числа!!!).
Я подозроеваю что загвоздка может быть либо в неправильном построении формы, либо в том что переменная теряется на каком-то этапе (как сделать ее так сказать глобальной, не теряемой?), либо что-то не так с использованием функции IntVal (ибо без нее сумма вообще не передается, а с ней - ДА, но возможно нужно использовать не IntVal а что-то другое).
ЗЫ: Если кому интересно - могу запостить весь код файла: order_full.php (но это около 100 кб).

