} } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/prolog.php"; if ($ID > 0) { $APPLICATION->SetTitle(GetMessage("SCE_ERROR_UPDATING")); } else { $APPLICATION->SetTitle(GetMessage("SCE_ADD_NEW")); } require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; $dbCCard = CSaleUserCards::GetList(array(), array("ID" => $ID), 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", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME")); if (!$dbCCard->ExtractFields("str_")) { $ID = 0; $str_ACTIVE = "Y"; $str_SORT = 100; } else { $str_CARD_NUM = CSaleUserCards::CryptData($str_CARD_NUM, "D"); } if ($bVarsFromForm) { $DB->InitTableVarsForEdit("b_sale_user_cards", "", "str_"); } ?> <?php $aMenu = array(array("TEXT" => GetMessage("SCEN_2FLIST"), "TITLE" => GetMessage("SCEN_2FLIST_TITLE"), "LINK" => "/bitrix/admin/sale_ccards_admin.php?lang=" . LANG . GetFilterParams("filter_"), "ICON" => "btn_list")); if ($ID > 0 && $saleModulePermissions >= "U") { $aMenu[] = array("SEPARATOR" => "Y"); $aMenu[] = array("TEXT" => GetMessage("SCEN_NEW_CCARD"), "TITLE" => GetMessage("SCEN_NEW_CCARD_TITLE"), "LINK" => "/bitrix/admin/sale_ccards_edit.php?lang=" . LANG . GetFilterParams("filter_"), "ICON" => "btn_new"); if ($saleModulePermissions >= "W") { $aMenu[] = array("TEXT" => GetMessage("SCEN_DELETE_CCARD"), "LINK" => "javascript:if(confirm('" . GetMessage("SCEN_DELETE_CCARD_CONFIRM") . "')) window.location='/bitrix/admin/sale_ccards_admin.php?ID=" . $ID . "&action=delete&lang=" . LANG . "&" . bitrix_sessid_get() . "#tb';", "WARNING" => "Y", "ICON" => "btn_delete"); } }
} } 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()) {
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; }