Esempio n. 1
0
	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;
					}
				}
			}
		}
	}
Esempio n. 2
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) {
Esempio n. 4
0
 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;
 }