if ($_REQUEST["agree_agreement"] != "Y") { $errorMessage .= GetMessage("SPCR1_NO_AGREE") . ".<br />"; } $arResult["agree_agreement"] = $_REQUEST["agree_agreement"] == "Y" ? "Y" : "N"; $AFF_SITE = Trim($_REQUEST["AFF_SITE"]); if (StrLen($AFF_SITE) <= 0) { $errorMessage .= GetMessage("SPCR1_NO_SITE") . ".<br />"; } $arResult["AFF_SITE"] = htmlspecialcharsbx($AFF_SITE); $AFF_DESCRIPTION = Trim($_REQUEST["AFF_DESCRIPTION"]); if (StrLen($AFF_DESCRIPTION) <= 0) { $errorMessage .= GetMessage("SPCR1_NO_DESCR") . ".<br />"; } $arResult["AFF_DESCRIPTION"] = htmlspecialcharsbx($AFF_DESCRIPTION); if (StrLen($errorMessage) <= 0) { $dbPlan = CSaleAffiliatePlan::GetList(array("MIN_PLAN_VALUE" => "ASC"), array("SITE_ID" => SITE_ID, "ACTIVE" => "Y"), false, false, array("ID", "MIN_PLAN_VALUE")); $arPlan = $dbPlan->Fetch(); if (!$arPlan) { $errorMessage .= GetMessage("SPCR1_NO_PLANS") . ".<br />"; } } if (StrLen($errorMessage) <= 0) { $arFields = array("SITE_ID" => SITE_ID, "USER_ID" => IntVal($GLOBALS["USER"]->GetID()), "PLAN_ID" => $arPlan["ID"], "ACTIVE" => DoubleVal($arPlan["MIN_PLAN_VALUE"]) > 0 ? "N" : "Y", "DATE_CREATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time() + CTimeZone::GetOffset()), "PAID_SUM" => 0, "PENDING_SUM" => 0, "LAST_CALCULATE" => false, "FIX_PLAN" => "N", "AFF_SITE" => $AFF_SITE, "AFF_DESCRIPTION" => $AFF_DESCRIPTION); $affiliateID = CSaleAffiliate::GetAffiliate(); if ($affiliateID > 0) { $arFields["AFFILIATE_ID"] = $affiliateID; } else { $arFields["AFFILIATE_ID"] = false; } if (!CSaleAffiliate::Add($arFields)) { if ($ex = $GLOBALS["APPLICATION"]->GetException()) {
die; } if (!CBXFeatures::IsFeatureEnabled('SaleAffiliate')) { return; } if (CModule::IncludeModule("sale")) { if (strlen($arParams["SET_TITLE"]) <= 0) { $arParams["SET_TITLE"] = "Y"; } if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle(GetMessage("SPCAT1_TARIF_PLANS")); } $affiliatePlanType = COption::GetOptionString("sale", "affiliate_plan_type", "N"); $affiliateCurrency = CSaleLang::GetLangCurrency(SITE_ID); $arResult = array(); $dbPlan = CSaleAffiliatePlan::GetList(array("NAME" => "ASC"), array("SITE_ID" => SITE_ID, "ACTIVE" => "Y"), false, false, array("ID", "NAME", "DESCRIPTION", "BASE_RATE", "BASE_RATE_TYPE", "BASE_RATE_CURRENCY", "MIN_PLAN_VALUE")); while ($arPlan = $dbPlan->Fetch()) { $arPlan["BASE_RATE_FORMAT"] = $arPlan["BASE_RATE_TYPE"] == "P" ? round($arPlan["BASE_RATE"], SALE_VALUE_PRECISION) . "%" : SaleFormatCurrency($arPlan["BASE_RATE"], $arPlan["BASE_RATE_CURRENCY"]); $arPlan["MIN_PLAN_VALUE_FORMAT"] = $affiliatePlanType == "N" ? str_replace("#NUM#", IntVal($arPlan["MIN_PLAN_VALUE"]), GetMessage("SPCAT1_LIMIT1")) : str_replace("#SUM#", SaleFormatCurrency($arPlan["MIN_PLAN_VALUE"], $affiliateCurrency), GetMessage("SPCAT1_LIMIT2")); $arPlan["DESCRIPTION"] = htmlspecialcharsex($arPlan["DESCRIPTION"]); $arPlan["NAME"] = htmlspecialcharsex($arPlan["NAME"]); $arResult[] = $arPlan; } $this->IncludeComponentTemplate(); } else { ?> <b><?php echo ShowError(GetMessage("SPCAT1_NO_SHOP")); ?> </b> <?php
break; case "activate": case "deactivate": $arFields = array("ACTIVE" => $_REQUEST['action'] == "activate" ? "Y" : "N"); if (!CSaleAffiliatePlan::Update($ID, $arFields)) { if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("SAP1_ERROR_ACTIVE_PLAN"), $ID); } } break; } } } $dbResultList = CSaleAffiliatePlan::GetList(array($by => $order), $arFilter, false, false, array("ID", "SITE_ID", "NAME", "DESCRIPTION", "TIMESTAMP_X", "ACTIVE", "BASE_RATE", "BASE_RATE_TYPE", "BASE_RATE_CURRENCY", "MIN_PAY", "MIN_PLAN_VALUE")); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("SAP1_PLANS"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "default" => true), array("id" => "SITE_ID", "content" => GetMessage("SAP1_SITE"), "sort" => "SITE_ID", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("SAP1_ACTIVE"), "sort" => "ACTIVE", "default" => true), array("id" => "NAME", "content" => GetMessage("SAP1_NAME"), "sort" => "NAME", "default" => true), array("id" => "RATE", "content" => GetMessage("SAP1_RATE"), "sort" => "", "default" => true), array("id" => "MIN_PLAN_VALUE", "content" => GetMessage("SAP1_NOT_LESS"), "sort" => "MIN_PLAN_VALUE", "default" => true))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); $arSites = array(); $dbSiteList = CSite::GetList($b = "sort", $o = "asc"); while ($arSite = $dbSiteList->Fetch()) { $arSites[$arSite["LID"]] = "[" . $arSite["LID"] . "] " . $arSite["NAME"]; } $arCurrencies = array("P" => "%"); $dbCurrencyList = CCurrency::GetList($b = "currency", $o = "asc"); while ($arCurrency = $dbCurrencyList->Fetch()) { $arCurrencies[$arCurrency["CURRENCY"]] = "[" . $arCurrency["CURRENCY"] . "] " . $arCurrency["FULL_NAME"]; }
function SetAffiliatePlan($affiliate, $dateFrom = false, $dateTo = false) { global $DB; $arAffiliate = CSaleAffiliate::CheckAffiliateFunc($affiliate); if (!$arAffiliate) { return False; } // If not fixed plan $affiliateID = IntVal($arAffiliate["ID"]); // If fixed plan if ($arAffiliate["FIX_PLAN"] == "Y") { $dbAffiliatePlan = CSaleAffiliatePlan::GetList(array(), array("ID" => $arAffiliate["PLAN_ID"], "ACTIVE" => "Y", "SITE_ID" => $arAffiliate["SITE_ID"]), false, false, array("ID", "SITE_ID", "NAME", "TIMESTAMP_X", "ACTIVE", "BASE_RATE", "BASE_RATE_TYPE", "BASE_RATE_CURRENCY", "MIN_PAY", "MIN_PLAN_VALUE")); $arAffiliatePlan = $dbAffiliatePlan->Fetch(); if (!$arAffiliatePlan) { $arFields = array("ACTIVE" => "N"); $res = CSaleAffiliate::Update($affiliateID, $arFields); if ($res) { $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $affiliateID, GetMessage("ACGA1_NO_PLAN_DEACT")), "NO_PLAN"); } return false; } return $arAffiliatePlan; } if (!$dateFrom || StrLen($dateFrom) <= 0) { if (StrLen($arAffiliate["LAST_CALCULATE"]) > 0) { $dateFrom = $arAffiliate["LAST_CALCULATE"]; } else { $dateFrom = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), mktime(0, 0, 0, 1, 1, 1990)); } } if (!$dateTo || StrLen($dateTo) <= 0) { $dateTo = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time() + CTimeZone::GetOffset()); } $affiliatePlanType = COption::GetOptionString("sale", "affiliate_plan_type", "N"); $itemsValue = 0; if ($affiliatePlanType == "N") { $dbOrders = \Bitrix\Sale\Internals\OrderTable::getList(array('filter' => array("=ALLOW_DELIVERY" => "Y", ">=DATE_ALLOW_DELIVERY" => $dateFrom, "<DATE_ALLOW_DELIVERY" => $dateTo, "=AFFILIATE_ID" => $affiliateID, "=LID" => $arAffiliate["SITE_ID"]), 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('BASKET_QUANTITY', 'SUM(%s)', array('BASKET.QUANTITY'))), 'select' => array('BASKET_QUANTITY'))); if ($arOrder = $dbOrders->fetch()) { $itemsValue = $arOrder["BASKET_QUANTITY"]; } } else { $dbOrders = \Bitrix\Sale\Internals\OrderTable::getList(array('filter' => array("=ALLOW_DELIVERY" => "Y", ">=DATE_ALLOW_DELIVERY" => $dateFrom, "<DATE_ALLOW_DELIVERY" => $dateTo, "=AFFILIATE_ID" => $affiliateID, "=LID" => $arAffiliate["SITE_ID"]), 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('ORDER_SUM_PRICE', 'SUM(%s)', array('PRICE'))), 'select' => array('ORDER_SUM_PRICE'))); if ($arOrder = $dbOrders->fetch()) { $price = $arOrder["ORDER_SUM_PRICE"]; } $dbOrders = \Bitrix\Sale\Internals\OrderTable::getList(array('filter' => array("=ALLOW_DELIVERY" => "Y", ">=DATE_ALLOW_DELIVERY" => $dateFrom, "<DATE_ALLOW_DELIVERY" => $dateTo, "=AFFILIATE_ID" => $affiliateID, "=LID" => $arAffiliate["SITE_ID"]), 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('ORDER_PRICE_DELIVERY', 'SUM(%s)', array('PRICE_DELIVERY'))), 'select' => array('ORDER_PRICE_DELIVERY'))); if ($arOrder = $dbOrders->fetch()) { $priceDelivery = $arOrder["ORDER_PRICE_DELIVERY"]; } $dbOrders = \Bitrix\Sale\Internals\OrderTable::getList(array('filter' => array("=ALLOW_DELIVERY" => "Y", ">=DATE_ALLOW_DELIVERY" => $dateFrom, "<DATE_ALLOW_DELIVERY" => $dateTo, "=AFFILIATE_ID" => $affiliateID, "=LID" => $arAffiliate["SITE_ID"]), 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('ORDER_TAX_VALUE', 'SUM(%s)', array('TAX_VALUE'))), 'select' => array('ORDER_TAX_VALUE'))); if ($arOrder = $dbOrders->fetch()) { $priceTax = $arOrder["ORDER_TAX_VALUE"]; } $itemsValue = $price - $priceDelivery - $priceTax; } if (DoubleVal($itemsValue) > 0) { $dbAffiliatePlan = CSaleAffiliatePlan::GetList(array("MIN_PLAN_VALUE" => "DESC"), array("+<=MIN_PLAN_VALUE" => $itemsValue, "ACTIVE" => "Y", "SITE_ID" => $arAffiliate["SITE_ID"]), false, false, array("ID", "SITE_ID", "NAME", "TIMESTAMP_X", "ACTIVE", "BASE_RATE", "BASE_RATE_TYPE", "BASE_RATE_CURRENCY", "MIN_PAY", "MIN_PLAN_VALUE")); if ($arAffiliatePlan = $dbAffiliatePlan->Fetch()) { if ($arAffiliate["FIX_PLAN"] != "Y") { $arFields = array("PLAN_ID" => $arAffiliatePlan["ID"]); $res = CSaleAffiliate::Update($affiliateID, $arFields); if (!$res) { return false; } } } else { $arFields = array("ACTIVE" => "N"); $res = CSaleAffiliate::Update($affiliateID, $arFields); if ($res) { $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $affiliateID, GetMessage("ACGA1_NO_PLAN_DEACT")), "NO_PLAN"); } return false; } return $arAffiliatePlan; } else { return true; } }
if (strlen($errorMessage) <= 0) { if (strlen($apply) <= 0) { LocalRedirect("/bitrix/admin/sale_affiliate_plan.php?lang=" . LANG . GetFilterParams("filter_", false)); } } else { $bVarsFromForm = true; } } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/sale/prolog.php"; if ($ID > 0) { $APPLICATION->SetTitle(str_replace("#ID#", $ID, GetMessage("SAPE1_TITLE_UPDATE"))); } else { $APPLICATION->SetTitle(GetMessage("SAPE1_TITLE_ADD")); } require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; $dbPlan = CSaleAffiliatePlan::GetList(array(), array("ID" => $ID)); if (!$dbPlan->ExtractFields("str_")) { $ID = 0; } if ($bVarsFromForm) { $DB->InitTableVarsForEdit("b_sale_affiliate_plan", "", "str_"); } ?> <?php $aMenu = array(array("TEXT" => GetMessage("SAPE1_LIST"), "LINK" => "/bitrix/admin/sale_affiliate_plan.php?lang=" . LANG . GetFilterParams("filter_"), "ICON" => "btn_list")); if ($ID > 0) { $aMenu[] = array("SEPARATOR" => "Y"); $aMenu[] = array("TEXT" => GetMessage("SAPE1_ADD"), "LINK" => "/bitrix/admin/sale_affiliate_plan_edit.php?lang=" . LANG . GetFilterParams("filter_"), "ICON" => "btn_new"); if ($saleModulePermissions >= "W") { $aMenu[] = array("TEXT" => GetMessage("SAPE1_DELETE"), "LINK" => "javascript:if(confirm('" . GetMessage("SAPE1_DELETE_CONF") . "')) window.location='/bitrix/admin/sale_affiliate_plan.php?ID=" . $ID . "&action=delete&lang=" . LANG . "&" . bitrix_sessid_get() . "#tb';", "WARNING" => "Y", "ICON" => "btn_delete");
timerID = setTimeout('ChangeAffiliateName()',2000); } ChangeAffiliateName(); //--> </SCRIPT> </td> </tr> <tr class="adm-detail-required-field"> <td><?php echo GetMessage("SAE_PLAN"); ?> </td> <td> <select name="PLAN_ID"> <?php $dbPlan = CSaleAffiliatePlan::GetList(array("NAME" => "ASC"), array(), false, false, array("ID", "NAME", "SITE_ID")); while ($arPlan = $dbPlan->Fetch()) { ?> <option value="<?php echo $arPlan["ID"]; ?> "<?php if ($str_PLAN_ID == $arPlan["ID"]) { echo " selected"; } ?> ><?php echo htmlspecialcharsex("[" . $arPlan["ID"] . "] " . $arPlan["NAME"] . " (" . $arPlan["SITE_ID"] . ")"); ?> </option><?php }
function CheckAffiliatePlanFunc($affiliatePlan) { if (is_array($affiliatePlan)) { $arAffiliatePlan = $affiliatePlan; $affiliatePlanID = IntVal($arAffiliatePlan["ID"]); if ($affiliatePlanID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SCGAP1_ERROR_FUNC"), "FUNCTION_ERROR"); return false; } } else { $affiliatePlanID = IntVal($affiliatePlan); if ($affiliatePlanID <= 0) { return False; } $dbAffiliatePlan = CSaleAffiliatePlan::GetList(array(), array("ID" => $affiliatePlanID, "ACTIVE" => "Y"), false, false, array("ID", "SITE_ID", "NAME", "DESCRIPTION", "TIMESTAMP_X", "ACTIVE", "BASE_RATE", "BASE_RATE_TYPE", "BASE_RATE_CURRENCY", "MIN_PAY", "MIN_PLAN_VALUE")); $arAffiliatePlan = $dbAffiliatePlan->Fetch(); if (!$arAffiliatePlan) { $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $affiliatePlanID, GetMessage("SCGAP1_NO_PLAN")), "NO_AFFILIATE_PLAN"); return false; } } return $arAffiliatePlan; }