function ReCountFromBase(&$arFields, &$boolBase) { $arBaseGroup = CCatalogGroup::GetBaseGroup(); if (!empty($arBaseGroup)) { if ($arFields['CATALOG_GROUP_ID'] == $arBaseGroup['ID']) { $boolBase = true; } else { if (!empty($arFields['EXTRA_ID']) && intval($arFields['EXTRA_ID']) > 0) { $arExtra = CExtra::GetByID($arFields['EXTRA_ID']); if (!empty($arExtra)) { $arFilter = array('PRODUCT_ID' => $arFields['PRODUCT_ID'],'CATALOG_GROUP_ID' => $arBaseGroup['ID']); if (isset($arFields['QUANTITY_FROM'])) $arFilter['QUANTITY_FROM'] = $arFields['QUANTITY_FROM']; if (isset($arFields['QUANTITY_TO'])) $arFilter['QUANTITY_TO'] = $arFields['QUANTITY_TO']; $rsBasePrices = CPrice::GetListEx( array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC"), $arFilter, false, array('nTopCount' => 1), array('PRICE','CURRENCY') ); if ($arBasePrice = $rsBasePrices->Fetch()) { $arFields['CURRENCY'] = $arBasePrice['CURRENCY']; $arFields['PRICE'] = RoundEx($arBasePrice["PRICE"] * (1 + DoubleVal($arExtra["PERCENTAGE"])/100), CATALOG_VALUE_PRECISION); } else { $arFields['EXTRA_ID'] = 0; } } else { $arFields['EXTRA_ID'] = 0; } } } } }
$arCatalogPrice_tmp = array(); $intBasePriceCount = count($arCatalogBasePrices); $dbCatGroups = CCatalogGroup::GetList(array(), array("!BASE" => "Y")); while ($arCatGroups = $dbCatGroups->Fetch()) { unset($arCatalogPrice_tmp); $arCatalogPrice_tmp = array(); for ($i = 0; $i < $intBasePriceCount; $i++) { ${"CAT_PRICE_" . $arCatGroups["ID"] . "_" . $arCatalogBasePrices[$i]["IND"]} = str_replace(",", ".", ${"CAT_PRICE_" . $arCatGroups["ID"] . "_" . $arCatalogBasePrices[$i]["IND"]}); $arCatalogPrice_tmp[$i] = array("ID" => IntVal(${"CAT_ID_" . $arCatGroups["ID"]}[$arCatalogBasePrices[$i]["IND"]]), "EXTRA_ID" => ${"CAT_EXTRA_" . $arCatGroups["ID"] . "_" . $arCatalogBasePrices[$i]["IND"]} ? IntVal(${"CAT_EXTRA_" . $arCatGroups["ID"] . "_" . $arCatalogBasePrices[$i]["IND"]}) : 0, "PRICE" => ${"CAT_PRICE_" . $arCatGroups["ID"] . "_" . $arCatalogBasePrices[$i]["IND"]}, "CURRENCY" => Trim(${"CAT_CURRENCY_" . $arCatGroups["ID"] . "_" . $arCatalogBasePrices[$i]["IND"]}), "QUANTITY_FROM" => $arCatalogBasePrices[$i]["QUANTITY_FROM"], "QUANTITY_TO" => $arCatalogBasePrices[$i]["QUANTITY_TO"]); if (strlen($arCatalogPrice_tmp[$i]["CURRENCY"]) <= 0) { $arCatalogPrice_tmp[$i]["CURRENCY"] = $arCatalogBasePrices[$i]["CURRENCY"]; } if ($arCatalogPrice_tmp[$i]["EXTRA_ID"] > 0) { if (0 < doubleval($arCatalogBasePrices[$i]["PRICE"])) { $arCatalogPrice_tmp[$i]["CURRENCY"] = $arCatalogBasePrices[$i]["CURRENCY"]; $arCatalogExtra = CExtra::GetByID($arCatalogPrice_tmp[$i]["EXTRA_ID"]); $arCatalogPrice_tmp[$i]["PRICE"] = RoundEx($arCatalogBasePrices[$i]["PRICE"] * (1 + DoubleVal($arCatalogExtra["PERCENTAGE"]) / 100), CATALOG_VALUE_PRECISION); } else { $arCatalogPrice_tmp[$i]["EXTRA_ID"] = 0; } } } $arCatalogPrices[$arCatGroups["ID"]] = $arCatalogPrice_tmp; } $arUpdatedIDs = array(); $availCanBuyZero = COption::GetOptionString("catalog", "default_can_buy_zero"); $quantityTrace = $_POST['CAT_BASE_QUANTITY_TRACE']; if (!$quantityTrace || $quantityTrace == '') { $quantityTrace = 'D'; } $useStore = $_POST['USE_STORE'];
} else { LocalRedirect("/bitrix/admin/cat_extra_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $ID); } } else { $bVarsFromForm = true; } } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/catalog/prolog.php"; if ($ID > 0) { $APPLICATION->SetTitle(GetMessage("CEEN_UPDATING")); } else { $APPLICATION->SetTitle(GetMessage("CEEN_ADDING")); } require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; if ($ID > 0) { $arExtra = CExtra::GetByID($ID); if (!$arExtra) { $ID = 0; } else { $str_NAME = $arExtra["NAME"]; $str_PERCENTAGE = $arExtra["PERCENTAGE"]; $str_RECALCULATE = "N"; } } if ($bVarsFromForm) { $str_NAME = $NAME; $str_PERCENTAGE = $PERCENTAGE; $str_RECALCULATE = $RECALCULATE == "Y" ? 'Y' : 'N'; } $aMenu = array(array("TEXT" => GetMessage("CEEN_2FLIST"), "ICON" => "btn_list", "LINK" => "/bitrix/admin/cat_extra.php?lang=" . LANGUAGE_ID)); if ($ID > 0 && !$bReadOnly) {
function CheckFields($strAction, &$arFields, $ID = 0) { global $APPLICATION; $arMsg = array(); $boolResult = true; if ($strAction != 'ADD' && $strAction != 'UPDATE') { $boolResult = false; } $ID = intval($ID); if ($strAction == 'UPDATE' && $ID <= 0) { $arMsg[] = $arMsg[] = array('id' => 'ID', 'text' => GetMessage('CAT_EXTRA_ERR_UPDATE_NOT_ID')); $boolResult = false; } if ($boolResult) { if (isset($arFields['ID'])) { if ($strAction == 'UPDATE') { unset($arFields['ID']); } else { $arFields['ID'] = intval($arFields['ID']); if ($arFields['ID'] <= 0) { unset($arFields['ID']); } else { $mxRes = CExtra::GetByID($arFields['ID']); if ($mxRes) { $arMsg[] = $arMsg[] = array('id' => 'ID', 'text' => GetMessage('CAT_EXTRA_ERR_ADD_EXISTS_ID')); $boolResult = false; } } } } } if ($boolResult) { $arFields["NAME"] = trim($arFields["NAME"]); if (empty($arFields["NAME"])) { $arMsg[] = array('id' => 'NAME', 'text' => GetMessage('CAT_EXTRA_ERROR_NONAME')); $boolResult = false; } if (empty($arFields["PERCENTAGE"])) { $arFields["PERCENTAGE"] = 0; } $arFields["PERCENTAGE"] = DoubleVal($arFields["PERCENTAGE"]); } if (!$boolResult) { if (!empty($arMsg)) { $obError = new CAdminException($arMsg); $APPLICATION->ThrowException($obError); } } return $boolResult; }