Example #1
0
><?php 
echo htmlspecialcharsex(GetMessage("SCA_YES"));
?>
</option>
				<option value="N"<?php 
if ($filter_active == "N") {
    echo " selected";
}
?>
><?php 
echo htmlspecialcharsex(GetMessage("SCA_NO"));
?>
</option>
			</select>
		</td>
	</tr>
<?php 
$oFilter->Buttons(array("table_id" => $sTableID, "url" => $APPLICATION->GetCurPage(), "form" => "find_form"));
$oFilter->End();
?>
</form>

<?php 
if (!CSaleUserCards::CheckPassword()) {
    echo CAdminMessage::ShowMessage(array("DETAILS" => GetMessage("SCA_NO_VALID_PASSWORD"), "TYPE" => "ERROR", "MESSAGE" => GetMessage("SCA_ATTENTION")));
}
?>

<?php 
$lAdmin->DisplayList();
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
Example #2
0
        }
    }
    if (strlen($errorMessage) <= 0) {
        if (strlen($_POST["save"]) > 0) {
            LocalRedirect($arParams["PATH_TO_LIST"]);
        } elseif (strlen($_POST["apply"]) > 0) {
            LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_DETAIL"], array("ID" => $ID)));
        }
    } else {
        $bVarsFromForm = true;
    }
}
$dbUserCards = CSaleUserCards::GetList(array("DATE_UPDATE" => "DESC"), array("ID" => $ID, "USER_ID" => IntVal($GLOBALS["USER"]->GetID())), false, false, array("ID", "USER_ID", "ACTIVE", "SORT", "PAY_SYSTEM_ACTION_ID", "CURRENCY", "CARD_TYPE", "CARD_NUM", "CARD_CODE", "CARD_EXP_MONTH", "CARD_EXP_YEAR", "DESCRIPTION", "SUM_MIN", "SUM_MAX", "SUM_CURRENCY", "TIMESTAMP_X", "LAST_STATUS", "LAST_STATUS_CODE", "LAST_STATUS_DESCRIPTION", "LAST_STATUS_MESSAGE", "LAST_SUM", "LAST_CURRENCY", "LAST_DATE"));
if ($arUserCards = $dbUserCards->GetNext()) {
    $arResult = $arUserCards;
    $arResult["CARD_NUM"] = CSaleUserCards::CryptData($arResult["CARD_NUM"], "D");
} else {
    $arResult["ID"] = 0;
    $arResult["ACTIVE"] = "Y";
    $arResult["SORT"] = 100;
}
if ($bVarsFromForm) {
    foreach ($_POST as $k => $v) {
        $arResult[$k] = htmlspecialcharsex($v);
        $arResult['~' . $k] = $v;
    }
}
$arResult["ERROR_MESSAGE"] = $errorMessage;
$dbPaySysActions = CSalePaySystemAction::GetList(array("PERSON_TYPE_ID" => "ASC", "NAME" => "ASC", "PT_NAME" => "ASC", "PS_NAME" => "ASC"), array("PS_LID" => SITE_ID, "HAVE_ACTION" => "Y"), false, false, array("*"));
$arResult["PAY_SYSTEM"] = array();
while ($arPaySysActions = $dbPaySysActions->GetNext()) {
Example #3
0
 function Withdraw($sum, $currency, $arUserCard, $orderID = 0)
 {
     $sum = str_replace(",", ".", $sum);
     $sum = roundEx(DoubleVal($sum), SALE_VALUE_PRECISION);
     if ($sum <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGUC_EMPTY_SUM"), "EMPTY_SUM");
         return false;
     }
     $currency = Trim($currency);
     if (strlen($currency) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGUC_EMPTY_CURRENCY"), "EMPTY_SUM_CURRENCY");
         return false;
     }
     if (!is_array($arUserCard) || count($arUserCard) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGUC_NO_PARAMS"), "EMPTY_CARD_ARRAY");
         return false;
     }
     $orderID = IntVal($orderID);
     if (DoubleVal($arUserCard["SUM_MAX"]) > 0) {
         $maxSum = roundEx(CCurrencyRates::ConvertCurrency($arUserCard["SUM_MAX"], $arUserCard["SUM_CURRENCY"], $currency), SALE_VALUE_PRECISION);
         if ($maxSum < $sum) {
             $GLOBALS["APPLICATION"]->ThrowException(str_replace("#SUM1#", SaleFormatCurrency($arUserCard["SUM_MAX"], $arUserCard["SUM_CURRENCY"]), str_replace("#SUM2#", SaleFormatCurrency($sum, $currency), GetMessage("SKGUC_CROSS_BOUND"))), "MAX_SUM_LIMIT");
             return false;
         }
     }
     $arPSAction = CSalePaySystemAction::GetByID($arUserCard["PAY_SYSTEM_ACTION_ID"]);
     if (!$arPSAction) {
         $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $arUserCard["PAY_SYSTEM_ACTION_ID"], GetMessage("SKGUC_NO_ACTION")), "NO_PAY_SYSTEM_ACTION");
         return false;
     }
     $psActionPath = $_SERVER["DOCUMENT_ROOT"] . $arPSAction["ACTION_FILE"];
     if (!file_exists($psActionPath)) {
         $GLOBALS["APPLICATION"]->ThrowException(str_replace("#FILE#", $arPSAction["ACTION_FILE"], GetMessage("SKGUC_NO_PATH")), "NO_PS_PATH");
         return false;
     }
     if (is_file($psActionPath)) {
         $psActionPath = dirname($psActionPath);
     }
     if (!file_exists($psActionPath . "/action.php")) {
         $GLOBALS["APPLICATION"]->ThrowException(str_replace("#FILE#", $psActionPath . "/action.php", GetMessage("SKGUC_NO_SCRIPT")), "NO_PS_SCRIPT");
         return false;
     }
     $INPUT_CARD_TYPE = $arUserCard["CARD_TYPE"];
     $INPUT_CARD_NUM = CSaleUserCards::CryptData($arUserCard["CARD_NUM"], "D");
     $INPUT_CARD_EXP_MONTH = $arUserCard["CARD_EXP_MONTH"];
     $INPUT_CARD_EXP_YEAR = $arUserCard["CARD_EXP_YEAR"];
     $INPUT_CARD_CODE = $arUserCard["CARD_CODE"];
     $INPUT_SUM = $sum;
     if (DoubleVal($arUserCard["SUM_MIN"]) > 0) {
         $minSum = roundEx(CCurrencyRates::ConvertCurrency($arUserCard["SUM_MIN"], $arUserCard["SUM_CURRENCY"], $currency), SALE_VALUE_PRECISION);
         if ($minSum > $sum) {
             $INPUT_SUM = $minSum;
         }
     }
     $INPUT_CURRENCY = $currency;
     $GLOBALS["SALE_INPUT_PARAMS"] = array();
     $dbUser = CUser::GetByID(IntVal($arUserCard["USER_ID"]));
     if ($arUser = $dbUser->Fetch()) {
         $GLOBALS["SALE_INPUT_PARAMS"]["USER"] = $arUser;
     }
     if ($orderID > 0) {
         if ($arOrder = CSaleOrder::GetByID($orderID)) {
             $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"] = $arOrder;
             $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = DoubleVal($arOrder["PRICE"]) - DoubleVal($arOrder["SUM_PAID"]);
             $arDateInsert = explode(" ", $arOrder["DATE_INSERT"]);
             if (is_array($arDateInsert) && count($arDateInsert) > 0) {
                 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT_DATE"] = $arDateInsert[0];
             } else {
                 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT_DATE"] = $arOrder["DATE_INSERT"];
             }
         }
         $arCurOrderProps = array();
         $dbOrderPropVals = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $ORDER_ID), false, false, array("ID", "CODE", "VALUE", "ORDER_PROPS_ID", "PROP_TYPE"));
         while ($arOrderPropVals = $dbOrderPropVals->Fetch()) {
             $arCurOrderPropsTmp = CSaleOrderProps::GetRealValue($arOrderPropVals["ORDER_PROPS_ID"], $arOrderPropVals["CODE"], $arOrderPropVals["PROP_TYPE"], $arOrderPropVals["VALUE"], LANGUAGE_ID);
             foreach ($arCurOrderPropsTmp as $key => $value) {
                 $arCurOrderProps[$key] = $value;
             }
         }
         if (count($arCurOrderProps) > 0) {
             $GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"] = $arCurOrderProps;
         }
     }
     $GLOBALS["SALE_CORRESPONDENCE"] = CSalePaySystemAction::UnSerializeParams($arPSAction["PARAMS"]);
     include $psActionPath . "/action.php";
     $INPUT_CARD_NUM = "";
     if (strlen($OUTPUT_ERROR_MESSAGE) > 0) {
         $GLOBALS["APPLICATION"]->ThrowException($OUTPUT_ERROR_MESSAGE, "ERROR_MESSAGE");
         return false;
     }
     $arFields = array("LAST_STATUS" => $OUTPUT_STATUS, "LAST_STATUS_CODE" => $OUTPUT_STATUS_CODE, "LAST_STATUS_DESCRIPTION" => $OUTPUT_STATUS_DESCRIPTION, "LAST_STATUS_MESSAGE" => $OUTPUT_STATUS_MESSAGE, "LAST_SUM" => $OUTPUT_SUM, "LAST_CURRENCY" => $OUTPUT_CURRENCY, "LAST_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))));
     CSaleUserCards::Update($arUserCard["ID"], $arFields);
     if ($OUTPUT_STATUS == "Y") {
         $OUTPUT_SUM = str_replace(",", ".", $OUTPUT_SUM);
         $OUTPUT_SUM = DoubleVal($OUTPUT_SUM);
         if ($OUTPUT_CURRENCY != $currency) {
             $OUTPUT_SUM = roundEx(CCurrencyRates::ConvertCurrency($OUTPUT_SUM, $OUTPUT_CURRENCY, $currency), SALE_VALUE_PRECISION);
         }
         return $OUTPUT_SUM;
     }
     $GLOBALS["APPLICATION"]->ThrowException($OUTPUT_STATUS_DESCRIPTION, "ERROR_PAY");
     return False;
 }
Example #4
0
 /**
  * <p>Метод изменяет информацию о новой пластиковой карте пользователя.</p>
  *
  *
  *
  *
  * @param int $ID  Код изменяемой записи. </htm
  *
  *
  *
  * @param array $arFields  Ассоциативный массив новых параметров пластиковой карты с
  * ключами: <ul> <li> <b>USER_ID</b> - код пользователя;</li> <li> <b>SORT</b> - индекс
  * сортировки;</li> <li> <b>PAY_SYSTEM_ACTION_ID</b> - код обработчика платежной
  * системы;</li> <li> <b>CURRENCY</b> - валюта, которую можно снимать с карты;</li>
  * <li> <b>CARD_CODE</b> - CVC2;</li> <li> <b>CARD_TYPE</b> - тип карты;</li> <li> <b>CARD_NUM</b> - номер
  * карты;</li> <li> <b>CARD_EXP_MONTH</b> - месяц окончания действия карты;</li> <li>
  * <b>CARD_EXP_YEAR</b> - год окончания действия карты;</li> <li> <b>DESCRIPTION</b> -
  * краткое описание;</li> <li> <b>SUM_MIN</b> - минимальная сумма, которую можно
  * снять с карты за раз;</li> <li> <b>SUM_MAX</b> - максимальная сумма, которую
  * можно снять с карты за раз;</li> <li> <b>SUM_CURRENCY</b> - валюта минимальной и
  * максимальной сумм;</li> <li> <b>LAST_STATUS</b> - статус последнего
  * использования карты;</li> <li> <b>LAST_STATUS_CODE</b> - код статуса последнего
  * использования карты;</li> <li> <b>LAST_STATUS_DESCRIPTION</b> - описание статуса
  * последнего использования карты;</li> <li> <b>LAST_STATUS_MESSAGE</b> - сообщение
  * платежной системы;</li> <li> <b>LAST_SUM</b> - последняя снятая с карты
  * сумма;</li> <li> <b>LAST_CURRENCY</b> - валюта последней снятой с карты суммы;</li>
  * <li> <b>ACTIVE</b> - флаг активности;</li> <li> <b>LAST_DATE</b> - дата последнего
  * использования карты.</li> </ul> <p class="note"><b>Замечание</b><br> Если
  * меняется номер карты, то перед добавлением записи этот номер
  * должен быть зашифрован методом <a
  * href="http://dev.1c-bitrix.ru/api_help/sale/classes/csaleusercards/csaleusercards.cryptdata.php">CSaleUserCards::CryptData</a>.</p>
  *
  *
  *
  * @return int <p>Метод возвращает код обновленной записи или <i>false</i> в случае
  * ошибки.</p> <br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleusercards/csaleusercards.update.php
  * @author Bitrix
  */
 public static function Update($ID, $arFields)
 {
     global $DB;
     $ID = IntVal($ID);
     if ($ID <= 0) {
         return False;
     }
     if (!CSaleUserCards::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $strUpdate = $DB->PrepareUpdate("b_sale_user_cards", $arFields);
     $strSql = "UPDATE b_sale_user_cards SET " . $strUpdate . " WHERE ID = " . $ID . " ";
     $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     return $ID;
 }
Example #5
0
 /**
  * <p>Метод снимает указанную сумму с внутреннего счета пользователя. Если на внутреннем счете не достаточно средств, то делается попытка снять дополнительные средства с пластиковой карточки пользователя. Метод динамичный.</p>
  *
  *
  * @param int $userID  Код пользователя. </h
  *
  * @param double $paySum  Снимаемая сумма.
  *
  * @param string $payCurrency  Валюта снимаемой суммы.
  *
  * @param  $int  Код заказа, если снятие денег относится к заказу.
  *
  * @param orderI $D = 0[ Если <i>true</i>, то система пробует снять деньги с пластиковой карты
  * пользователя при недостаточности средств на внутреннем счете.
  * Если <i>false</i>, то пластиковая карта пользователя не задействуется.
  *
  * @param bool $useCC = True]] 
  *
  * @return bool <p>Метод возвращает <i>true</i> в случае успешного снятия денег с
  * внутреннего счета пользователя и <i>false</i> в случае невозможности
  * снять указанную сумму.</p> <p></p><div class="note"> <b>Примечание</b>: деньги
  * снимаются только со счета той же валюты, которая передается
  * параметром в метод. Счета пользователя в другой валюте не
  * затрагиваются.</div> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Снимем с рублевого счета текущего пользователя 3 рубля в счет оплаты заказа номер 21
  * $bSuccessPayment = CSaleUserAccount::Pay(
  *         $USER-&gt;GetID(),
  *         3,
  *         "RUR",
  *         21,
  *         False
  *     );
  * if ($bSuccessPayment)
  *     echo "Сумма для оплаты счета успешно снята";
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleuseraccount/csaleuseraccount.pay.php
  * @author Bitrix
  */
 public static function Pay($userID, $paySum, $payCurrency, $orderID = 0, $useCC = True, $paymentId = null)
 {
     global $DB;
     $errorCode = "";
     $userID = IntVal($userID);
     if ($userID <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_EMPTY_USER_ID"), "EMPTY_USER_ID");
         return False;
     }
     $paySum = str_replace(",", ".", $paySum);
     $paySum = DoubleVal($paySum);
     if ($paySum <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_EMPTY_SUM"), "EMPTY_SUM");
         return False;
     }
     $payCurrency = Trim($payCurrency);
     if (strlen($payCurrency) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_EMPTY_CURRENCY"), "EMPTY_CURRENCY");
         return False;
     }
     $orderID = IntVal($orderID);
     $paymentId = IntVal($paymentId);
     $useCC = $useCC ? True : False;
     if (!CSaleUserAccount::Lock($userID, $payCurrency)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_ERROR_LOCK"), "ACCOUNT_NOT_LOCKED");
         return False;
     }
     $currentBudget = 0.0;
     // Check current user account budget
     $dbUserAccount = CSaleUserAccount::GetList(array(), array("USER_ID" => $userID, "CURRENCY" => $payCurrency));
     if ($arUserAccount = $dbUserAccount->Fetch()) {
         $currentBudget = roundEx(DoubleVal($arUserAccount["CURRENT_BUDGET"]), SALE_VALUE_PRECISION);
     }
     $withdrawSum = 0;
     if ($currentBudget < $paySum && $useCC) {
         $payOverdraft = $paySum - $currentBudget;
         // Try to get money from credit cards
         $bPayed = False;
         $dbUserCards = CSaleUserCards::GetList(array("SORT" => "ASC"), array("USER_ID" => $userID, "CURRENCY" => $payCurrency, "ACTIVE" => "Y"));
         while ($arUserCard = $dbUserCards->Fetch()) {
             if ($withdrawSum = CSaleUserCards::Withdraw($payOverdraft, $payCurrency, $arUserCard, $orderID)) {
                 $bPayed = True;
                 break;
             }
         }
         if (!$bPayed) {
             $dbUserCards = CSaleUserCards::GetList(array("SORT" => "ASC"), array("USER_ID" => $userID, "CURRENCY" => "", "ACTIVE" => "Y"));
             while ($arUserCard = $dbUserCards->Fetch()) {
                 if ($withdrawSum = CSaleUserCards::Withdraw($payOverdraft, $payCurrency, $arUserCard, $orderID)) {
                     $bPayed = True;
                     break;
                 }
             }
         }
         if ($bPayed) {
             $arFields = array("USER_ID" => $userID, "TRANSACT_DATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID))), "AMOUNT" => $withdrawSum, "CURRENCY" => $payCurrency, "DEBIT" => "Y", "ORDER_ID" => $orderID > 0 ? $orderID : False, "PAYMENT_ID" => $paymentId > 0 ? $paymentId : False, "DESCRIPTION" => "CC_CHARGE_OFF", "EMPLOYEE_ID" => $GLOBALS["USER"]->IsAuthorized() ? $GLOBALS["USER"]->GetID() : False);
             CSaleUserTransact::Add($arFields);
             if ($arUserAccount) {
                 $arFields = array("CURRENT_BUDGET" => $withdrawSum + $currentBudget);
                 CSaleUserAccount::Update($arUserAccount["ID"], $arFields);
             } else {
                 $arFields = array("USER_ID" => $userID, "CURRENT_BUDGET" => $withdrawSum + $currentBudget, "CURRENCY" => $payCurrency);
                 CSaleUserAccount::Add($arFields);
             }
         }
     }
     if ($withdrawSum + $currentBudget >= $paySum) {
         if ($arUserAccount) {
             $arFields = array("CURRENT_BUDGET" => $withdrawSum + $currentBudget - $paySum);
             CSaleUserAccount::Update($arUserAccount["ID"], $arFields);
         } else {
             $arFields = array("USER_ID" => $userID, "CURRENT_BUDGET" => $withdrawSum + $currentBudget - $paySum, "CURRENCY" => $payCurrency);
             CSaleUserAccount::Add($arFields);
         }
         $arFields = array("USER_ID" => $userID, "TRANSACT_DATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID))), "AMOUNT" => $paySum, "CURRENCY" => $payCurrency, "DEBIT" => "N", "ORDER_ID" => $orderID > 0 ? $orderID : False, "PAYMENT_ID" => $paymentId > 0 ? $paymentId : False, "DESCRIPTION" => "ORDER_PAY", "EMPLOYEE_ID" => $GLOBALS["USER"]->IsAuthorized() ? $GLOBALS["USER"]->GetID() : False);
         CSaleUserTransact::Add($arFields);
         CSaleUserAccount::UnLock($userID, $payCurrency);
         return True;
     }
     CSaleUserAccount::UnLock($userID, $payCurrency);
     $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_NO_ENOUGH"), "CANT_PAY");
     return False;
 }
Example #6
0
    $dbUserCards = CSaleUserCards::GetList(array(), array("ID" => $del_id, "USER_ID" => IntVal($USER->GetID())));
    if ($arUserCards = $dbUserCards->Fetch()) {
        if (!CSaleUserCards::Delete($arUserCards["ID"])) {
            if ($ex = $APPLICATION->GetException()) {
                $errorMessage = $ex->GetString();
            } else {
                $errorMessage = str_replace("#ID#", $del_id, GetMessage("STPCL_ERROR_DELETING"));
            }
        }
    } else {
        $errorMessage = str_replace("#ID#", $del_id, GetMessage("STPCL_NO_CARD_FOUND"));
    }
}
if (strLen($errorMessage) >= 0) {
    $arResult["ERROR_MESSAGE"] = $errorMessage;
}
$by = strlen($_REQUEST["by"]) > 0 ? $_REQUEST["by"] : "ID";
$order = strlen($_REQUEST["order"]) > 0 ? $_REQUEST["order"] : "DESC";
$dbUserCards = CSaleUserCards::GetList(array($by => $order), array("USER_ID" => IntVal($USER->GetID())));
$dbUserCards->NavStart($arParams["PER_PAGE"]);
$arResult["NAV_STRING"] = $dbUserCards->GetPageNavString(GetMessage("SPCL_PAGES"));
$arResult["CARDS"] = array();
while ($arUserCards = $dbUserCards->GetNext()) {
    $arResultTmp = array();
    $arResultTmp = $arUserCards;
    $arResultTmp["PAY_SYSTEM"] = CSalePaySystemAction::GetByID($arUserCards["PAY_SYSTEM_ACTION_ID"]);
    $arResultTmp["URL_TO_DETAIL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_DETAIL"], array("ID" => $arUserCards["ID"]));
    $arResultTmp["URL_TO_DELETE"] = htmlspecialcharsbx($APPLICATION->GetCurPage()) . "?del_id=" . $arUserCards["ID"] . "&" . bitrix_sessid_get();
    $arResult["CARDS"][] = $arResultTmp;
}
$this->IncludeComponentTemplate();
Example #7
0
         }
     }
     if (strlen($errorMessage) <= 0) {
         if (strlen($_POST["save"]) > 0) {
             LocalRedirect($PATH_TO_LIST);
         }
     } else {
         $bVarsFromForm = true;
     }
 }
 $dbUserCards = CSaleUserCards::GetList(array("DATE_UPDATE" => "DESC"), array("ID" => $ID, "USER_ID" => IntVal($GLOBALS["USER"]->GetID())), false, false, array("ID", "USER_ID", "ACTIVE", "SORT", "PAY_SYSTEM_ACTION_ID", "CURRENCY", "CARD_TYPE", "CARD_NUM", "CARD_CODE", "CARD_EXP_MONTH", "CARD_EXP_YEAR", "DESCRIPTION", "SUM_MIN", "SUM_MAX", "SUM_CURRENCY", "TIMESTAMP_X", "LAST_STATUS", "LAST_STATUS_CODE", "LAST_STATUS_DESCRIPTION", "LAST_STATUS_MESSAGE", "LAST_SUM", "LAST_CURRENCY", "LAST_DATE"));
 if ($arUserCards = $dbUserCards->Fetch()) {
     while (list($key, $val) = each($arUserCards)) {
         ${"str_" . $key} = htmlspecialcharsbx($val);
     }
     $str_CARD_NUM = CSaleUserCards::CryptData($str_CARD_NUM, "D");
 } else {
     $ID = 0;
     $str_ACTIVE = "Y";
     $str_SORT = 100;
 }
 if ($bVarsFromForm) {
     $arCardFields =& $DB->GetTableFieldsList("b_sale_user_cards");
     $countCardField = count($arCardFields);
     for ($i = 0; $i < $countCardField; $i++) {
         if (array_key_exists($arCardFields[$i], $_REQUEST)) {
             ${"str_" . $arCardFields[$i]} = htmlspecialcharsbx($_REQUEST[$arCardFields[$i]]);
         }
     }
 }
 ?>