Exemplo n.º 1
0
        $val["PRICE"] -= $val["DISCOUNT_RATION_VALUE"];
        $arBasket[$key] = $val;
    }
    return $arBasket;
}
if (CModule::IncludeModule("sale")) {
    if ($arOrder = CSaleOrder::GetByID($ORDER_ID)) {
        $rep_file_name = GetRealPath2Report($doc . ".php");
        if (strlen($rep_file_name) <= 0) {
            ShowError("PRINT TEMPLATE NOT FOUND");
            die;
        }
        $arOrderProps = 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) {
                $arOrderProps[$key] = $value;
            }
        }
        if (CSaleLocation::isLocationProMigrated()) {
            if (strlen($arOrderProps['LOCATION_VILLAGE']) && !strlen($arOrderProps['LOCATION_CITY'])) {
                $arOrderProps['LOCATION_CITY'] = $arOrderProps['LOCATION_VILLAGE'];
            }
            // street added to the beginning of address, as it used to be before
            if (strlen($arOrderProps['LOCATION_STREET']) && isset($arOrderProps['ADDRESS'])) {
                $arOrderProps['ADDRESS'] = $arOrderProps['LOCATION_STREET'] . (strlen($arOrderProps['ADDRESS']) ? ', ' . $arOrderProps['ADDRESS'] : '');
            }
        }
        $arBasketIDs = array();
        $arQuantities = array();
Exemplo n.º 2
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;
 }
 function InitParamArrays($arOrder, $orderID = 0, $psParams = "")
 {
     $GLOBALS["SALE_INPUT_PARAMS"] = array();
     $GLOBALS["SALE_CORRESPONDENCE"] = array();
     if (!is_array($arOrder) || count($arOrder) <= 0 || !array_key_exists("ID", $arOrder)) {
         $arOrder = array();
         $orderID = IntVal($orderID);
         if ($orderID > 0) {
             $arOrderTmp = CSaleOrder::GetByID($orderID);
         }
         if (!empty($arOrderTmp)) {
             foreach ($arOrderTmp as $k => $v) {
                 $arOrder["~" . $k] = $v;
                 $arOrder[$k] = htmlspecialcharsbx($v);
             }
         }
     }
     if (count($arOrder) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"] = $arOrder;
     }
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE"]) - DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SUM_PAID"]);
     $arDateInsert = explode(" ", $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["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"] = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"];
     }
     $userID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
     if ($userID > 0) {
         $dbUser = CUser::GetByID($userID);
         if ($arUser = $dbUser->GetNext()) {
             $GLOBALS["SALE_INPUT_PARAMS"]["USER"] = $arUser;
         }
     }
     $arCurOrderProps = array();
     $dbOrderPropVals = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $GLOBALS["SALE_INPUT_PARAMS"]["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;
             $arCurOrderProps[$key] = htmlspecialcharsEx($value);
         }
     }
     if (count($arCurOrderProps) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"] = $arCurOrderProps;
     }
     if (strlen($psParams) <= 0) {
         $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAY_SYSTEM_ID"]), "PERSON_TYPE_ID" => IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PERSON_TYPE_ID"])), false, false, array("PARAMS"));
         if ($arPaySysAction = $dbPaySysAction->Fetch()) {
             $psParams = $arPaySysAction["PARAMS"];
         }
     }
     $GLOBALS["SALE_CORRESPONDENCE"] = CSalePaySystemAction::UnSerializeParams($psParams);
     foreach ($GLOBALS["SALE_CORRESPONDENCE"] as $key => $val) {
         $GLOBALS["SALE_CORRESPONDENCE"][$key]["~VALUE"] = $val["VALUE"];
         $GLOBALS["SALE_CORRESPONDENCE"][$key]["VALUE"] = htmlspecialcharsEx($val["VALUE"]);
     }
 }
 function InitParamArrays($arOrder, $orderID = 0, $psParams = "", $relatedData = array(), $payment = array())
 {
     if (!is_array($relatedData)) {
         $relatedData = array();
     }
     $GLOBALS["SALE_INPUT_PARAMS"] = array();
     $GLOBALS["SALE_CORRESPONDENCE"] = array();
     if (!is_array($arOrder) || count($arOrder) <= 0 || !array_key_exists("ID", $arOrder)) {
         $arOrder = array();
         $orderID = IntVal($orderID);
         if ($orderID > 0) {
             $arOrderTmp = CSaleOrder::GetByID($orderID);
         }
         if (!empty($arOrderTmp)) {
             foreach ($arOrderTmp as $k => $v) {
                 $arOrder["~" . $k] = $v;
                 $arOrder[$k] = htmlspecialcharsbx($v);
             }
         }
     } else {
         if ($orderID == 0 && $arOrder['ID'] > 0) {
             $orderID = $arOrder['ID'];
         }
     }
     if (empty($payment) && $orderID > 0) {
         $payment = \Bitrix\Sale\Internals\PaymentTable::getRow(array('select' => array('*'), 'filter' => array('ORDER_ID' => $orderID, '!PAY_SYSTEM_ID' => \Bitrix\Sale\PaySystem\Manager::getInnerPaySystemId())));
     }
     if (count($arOrder) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"] = $arOrder;
     }
     if (!empty($payment)) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = $payment['SUM'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~SHOULD_PAY"] = $payment['SUM'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAYED"] = $payment['PAID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAYED"] = $payment['PAID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAY_SYSTEM_ID"] = $payment['PAY_SYSTEM_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAY_SYSTEM_ID"] = $payment['PAY_SYSTEM_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ORDER_PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~ORDER_PAYMENT_ID"] = $payment['ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["PAYMENT"] = $payment;
     } else {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE"]) - DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SUM_PAID"]);
     }
     $arDateInsert = explode(" ", $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["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"] = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"];
     }
     if (!empty($payment)) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL_DATE"] = ConvertTimeStamp(MakeTimeStamp($payment["DATE_BILL"]), 'SHORT');
     }
     $userID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
     if ($userID > 0) {
         $dbUser = CUser::GetByID($userID);
         if ($arUser = $dbUser->GetNext()) {
             $GLOBALS["SALE_INPUT_PARAMS"]["USER"] = $arUser;
         }
     }
     $arCurOrderProps = array();
     if (isset($relatedData["PROPERTIES"]) && is_array($relatedData["PROPERTIES"])) {
         $properties = $relatedData["PROPERTIES"];
         foreach ($properties as $key => $value) {
             $arCurOrderProps["~" . $key] = $value;
             $arCurOrderProps[$key] = htmlspecialcharsEx($value);
         }
     } else {
         $dbOrderPropVals = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $GLOBALS["SALE_INPUT_PARAMS"]["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;
                 $arCurOrderProps[$key] = htmlspecialcharsEx($value);
             }
         }
     }
     if (count($arCurOrderProps) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"] = $arCurOrderProps;
     }
     $shipment = \Bitrix\Sale\Internals\ShipmentTable::getRow(array('select' => array('DELIVERY_ID'), 'filter' => array('ORDER_ID' => $orderID, 'SYSTEM' => 'N')));
     if ($shipment) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DELIVERY_ID"] = $shipment['DELIVERY_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~DELIVERY_ID"] = $shipment['DELIVERY_ID'];
     }
     $paySystemId = '';
     if ($payment && $payment['PAY_SYSTEM_ID'] > 0) {
         $paySystemId = $payment['PAY_SYSTEM_ID'];
     } elseif (isset($arOrder['PAY_SYSTEM_ID']) && $arOrder['PAY_SYSTEM_ID'] > 0) {
         $paySystemId = $arOrder['PAY_SYSTEM_ID'];
     } else {
         $psParams = unserialize($psParams);
         if (isset($psParams['BX_PAY_SYSTEM_ID'])) {
             $paySystemId = $psParams['BX_PAY_SYSTEM_ID']['VALUE'];
         }
     }
     if ($paySystemId !== '') {
         if (!isset($arOrder['PERSON_TYPE_ID']) || $arOrder['PERSON_TYPE_ID'] <= 0) {
             // for crm quote compatibility
             $personTypes = CSalePaySystem::getPaySystemPersonTypeIds($paySystemId);
             $personTypeId = array_shift($personTypes);
         } else {
             $personTypeId = $arOrder['PERSON_TYPE_ID'];
         }
         $params = CSalePaySystemAction::getParamsByConsumer('PAYSYSTEM_' . $paySystemId, $personTypeId);
         foreach ($params as $key => $value) {
             $params[$key]['~VALUE'] = htmlspecialcharsbx($value['VALUE']);
         }
         $GLOBALS["SALE_CORRESPONDENCE"] = $params;
     }
     if ($payment['COMPANY_ID'] > 0) {
         if (!array_key_exists('COMPANY', $GLOBALS["SALE_INPUT_PARAMS"])) {
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"] = array();
         }
         global $USER_FIELD_MANAGER;
         $userFieldsList = $USER_FIELD_MANAGER->GetUserFields(\Bitrix\Sale\Internals\CompanyTable::getUfId(), null, LANGUAGE_ID);
         foreach ($userFieldsList as $key => $userField) {
             $value = $USER_FIELD_MANAGER->GetUserFieldValue(\Bitrix\Sale\Internals\CompanyTable::getUfId(), $key, $payment['COMPANY_ID']);
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"][$key] = $value;
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"]["~" . $key] = $value;
         }
         $companyFieldList = \Bitrix\Sale\Internals\CompanyTable::getRowById($payment['COMPANY_ID']);
         foreach ($companyFieldList as $key => $value) {
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"][$key] = $value;
             $GLOBALS["SALE_INPUT_PARAMS"]["COMPANY"]["~" . $key] = $value;
         }
     }
     // fields with no interface
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["~VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["~VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["TYPE"] = 'ORDER';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["VALUE"] = 'PAYMENT_ID';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["~VALUE"] = 'PAYMENT_ID';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["TYPE"] = 'ORDER';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["VALUE"] = 'PAYED';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["~VALUE"] = 'PAYED';
     if (isset($relatedData["BASKET_ITEMS"]) && is_array($relatedData["BASKET_ITEMS"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["BASKET_ITEMS"] = $relatedData["BASKET_ITEMS"];
     }
     if (isset($relatedData["TAX_LIST"]) && is_array($relatedData["TAX_LIST"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["TAX_LIST"] = $relatedData["TAX_LIST"];
     }
     if (isset($relatedData["REQUISITE"]) && is_array($relatedData["REQUISITE"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["REQUISITE"] = $relatedData["REQUISITE"];
         self::$relatedData['REQUISITE'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['REQUISITE'][$providerValue];
         });
     }
     if (isset($relatedData["BANK_DETAIL"]) && is_array($relatedData["BANK_DETAIL"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["BANK_DETAIL"] = $relatedData["BANK_DETAIL"];
         self::$relatedData['BANK_DETAIL'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['BANK_DETAIL'][$providerValue];
         });
     }
     if (isset($relatedData["CRM_COMPANY"]) && is_array($relatedData["CRM_COMPANY"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["CRM_COMPANY"] = $relatedData["CRM_COMPANY"];
         self::$relatedData['CRM_COMPANY'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['CRM_COMPANY'][$providerValue];
         });
     }
     if (isset($relatedData["CRM_CONTACT"]) && is_array($relatedData["CRM_CONTACT"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["CRM_CONTACT"] = $relatedData["CRM_CONTACT"];
         self::$relatedData['CRM_CONTACT'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['CRM_CONTACT'][$providerValue];
         });
     }
     if (isset($relatedData["MC_REQUISITE"]) && is_array($relatedData["MC_REQUISITE"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["MC_REQUISITE"] = $relatedData["MC_REQUISITE"];
         self::$relatedData['MC_REQUISITE'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['MC_REQUISITE'][$providerValue];
         });
     }
     if (isset($relatedData["MC_BANK_DETAIL"]) && is_array($relatedData["MC_BANK_DETAIL"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["MC_BANK_DETAIL"] = $relatedData["MC_BANK_DETAIL"];
         self::$relatedData['MC_BANK_DETAIL'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['MC_BANK_DETAIL'][$providerValue];
         });
     }
     if (isset($relatedData["CRM_MYCOMPANY"]) && is_array($relatedData["CRM_MYCOMPANY"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["CRM_MYCOMPANY"] = $relatedData["CRM_MYCOMPANY"];
         self::$relatedData['CRM_MYCOMPANY'] = array('GET_INSTANCE_VALUE' => function ($providerInstance, $providerValue, $personTypeId) {
             return $GLOBALS['SALE_INPUT_PARAMS']['CRM_MYCOMPANY'][$providerValue];
         });
     }
     if ($relatedData) {
         $eventManager = \Bitrix\Main\EventManager::getInstance();
         $eventManager->addEventHandler('sale', 'OnGetBusinessValueProviders', array('\\CSalePaySystemAction', 'getProviders'));
     }
 }
Exemplo n.º 5
0
 function InitParamArrays($arOrder, $orderID = 0, $psParams = "", $relatedData = array())
 {
     if (!is_array($relatedData)) {
         $relatedData = array();
     }
     $GLOBALS["SALE_INPUT_PARAMS"] = array();
     $GLOBALS["SALE_CORRESPONDENCE"] = array();
     if (!is_array($arOrder) || count($arOrder) <= 0 || !array_key_exists("ID", $arOrder)) {
         $arOrder = array();
         $orderID = IntVal($orderID);
         if ($orderID > 0) {
             $arOrderTmp = CSaleOrder::GetByID($orderID);
         }
         if (!empty($arOrderTmp)) {
             foreach ($arOrderTmp as $k => $v) {
                 $arOrder["~" . $k] = $v;
                 $arOrder[$k] = htmlspecialcharsbx($v);
             }
         }
     }
     if (count($arOrder) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"] = $arOrder;
     }
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE"]) - DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SUM_PAID"]);
     $arDateInsert = explode(" ", $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["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"] = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"];
     }
     if (strlen(trim($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL"])) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL_DATE"] = ConvertTimeStamp(MakeTimeStamp($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL"]), 'SHORT');
     } else {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL_DATE"] = "";
     }
     $userID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
     if ($userID > 0) {
         $dbUser = CUser::GetByID($userID);
         if ($arUser = $dbUser->GetNext()) {
             $GLOBALS["SALE_INPUT_PARAMS"]["USER"] = $arUser;
         }
     }
     $arCurOrderProps = array();
     if (isset($relatedData["PROPERTIES"]) && is_array($relatedData["PROPERTIES"])) {
         $properties = $relatedData["PROPERTIES"];
         foreach ($properties as $key => $value) {
             $arCurOrderProps["~" . $key] = $value;
             $arCurOrderProps[$key] = htmlspecialcharsEx($value);
         }
     } else {
         $dbOrderPropVals = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $GLOBALS["SALE_INPUT_PARAMS"]["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;
                 $arCurOrderProps[$key] = htmlspecialcharsEx($value);
             }
         }
     }
     if (count($arCurOrderProps) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"] = $arCurOrderProps;
     }
     if (strlen($psParams) <= 0) {
         $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAY_SYSTEM_ID"]), "PERSON_TYPE_ID" => IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PERSON_TYPE_ID"])), false, false, array("PARAMS"));
         if ($arPaySysAction = $dbPaySysAction->Fetch()) {
             $psParams = $arPaySysAction["PARAMS"];
         }
     }
     $GLOBALS["SALE_CORRESPONDENCE"] = CSalePaySystemAction::UnSerializeParams($psParams);
     foreach ($GLOBALS["SALE_CORRESPONDENCE"] as $key => $val) {
         $GLOBALS["SALE_CORRESPONDENCE"][$key]["~VALUE"] = $val["VALUE"];
         $GLOBALS["SALE_CORRESPONDENCE"][$key]["VALUE"] = htmlspecialcharsEx($val["VALUE"]);
     }
     // fields with no interface
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["~VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["~VALUE"] = 'LOCATION_VILLAGE';
     if (isset($relatedData["BASKET_ITEMS"]) && is_array($relatedData["BASKET_ITEMS"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["BASKET_ITEMS"] = $relatedData["BASKET_ITEMS"];
     }
     if (isset($relatedData["TAX_LIST"]) && is_array($relatedData["TAX_LIST"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["TAX_LIST"] = $relatedData["TAX_LIST"];
     }
 }
Exemplo n.º 6
0
 function InitParamArrays($arOrder, $orderID = 0, $psParams = "", $relatedData = array(), $payment = array())
 {
     if (!is_array($relatedData)) {
         $relatedData = array();
     }
     $GLOBALS["SALE_INPUT_PARAMS"] = array();
     $GLOBALS["SALE_CORRESPONDENCE"] = array();
     if (!is_array($arOrder) || count($arOrder) <= 0 || !array_key_exists("ID", $arOrder)) {
         $arOrder = array();
         $orderID = IntVal($orderID);
         if ($orderID > 0) {
             $arOrderTmp = CSaleOrder::GetByID($orderID);
         }
         if (!empty($arOrderTmp)) {
             foreach ($arOrderTmp as $k => $v) {
                 $arOrder["~" . $k] = $v;
                 $arOrder[$k] = htmlspecialcharsbx($v);
             }
         }
     } else {
         if ($orderID == 0 && $arOrder['ID'] > 0) {
             $orderID = $arOrder['ID'];
         }
     }
     if (empty($payment)) {
         $payment = \Bitrix\Sale\Internals\PaymentTable::getRow(array('select' => array('ID', 'PAY_SYSTEM_ID', 'SUM', 'PAID', 'DATE_BILL'), 'filter' => array('ORDER_ID' => $orderID, '!PAY_SYSTEM_ID' => \Bitrix\Sale\Internals\PaySystemInner::getId())));
     }
     if (count($arOrder) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"] = $arOrder;
     }
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"] = $payment['SUM'];
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE"] = $payment['SUM'];
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAYMENT_ID"] = $payment['ID'];
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAYED"] = $payment['PAID'];
     $arDateInsert = explode(" ", $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["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"] = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"];
     }
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_BILL_DATE"] = ConvertTimeStamp(MakeTimeStamp($payment["DATE_BILL"]), 'SHORT');
     $userID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
     if ($userID > 0) {
         $dbUser = CUser::GetByID($userID);
         if ($arUser = $dbUser->GetNext()) {
             $GLOBALS["SALE_INPUT_PARAMS"]["USER"] = $arUser;
         }
     }
     $arCurOrderProps = array();
     if (isset($relatedData["PROPERTIES"]) && is_array($relatedData["PROPERTIES"])) {
         $properties = $relatedData["PROPERTIES"];
         foreach ($properties as $key => $value) {
             $arCurOrderProps["~" . $key] = $value;
             $arCurOrderProps[$key] = htmlspecialcharsEx($value);
         }
     } else {
         $dbOrderPropVals = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $GLOBALS["SALE_INPUT_PARAMS"]["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;
                 $arCurOrderProps[$key] = htmlspecialcharsEx($value);
             }
         }
     }
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAY_SYSTEM_ID"] = $payment['PAY_SYSTEM_ID'];
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~PAY_SYSTEM_ID"] = $payment['PAY_SYSTEM_ID'];
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ORDER_PAYMENT_ID"] = $payment['ID'];
     $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~ORDER_PAYMENT_ID"] = $payment['ID'];
     $shipment = \Bitrix\Sale\Internals\ShipmentTable::getRow(array('select' => array('DELIVERY_ID'), 'filter' => array('ORDER_ID' => $orderID, 'SYSTEM' => 'N')));
     if ($shipment) {
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DELIVERY_ID"] = $shipment['DELIVERY_ID'];
         $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["~DELIVERY_ID"] = $shipment['DELIVERY_ID'];
     }
     if (count($arCurOrderProps) > 0) {
         $GLOBALS["SALE_INPUT_PARAMS"]["PROPERTY"] = $arCurOrderProps;
     }
     if (strlen($psParams) <= 0) {
         $dbPaySysAction = CSalePaySystemAction::GetList(array(), array("PAY_SYSTEM_ID" => !empty($payment) ? intval($payment['PAY_SYSTEM_ID']) : intval($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PAY_SYSTEM_ID"]), "PERSON_TYPE_ID" => IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PERSON_TYPE_ID"])), false, false, array("PARAMS"));
         if ($arPaySysAction = $dbPaySysAction->Fetch()) {
             $psParams = $arPaySysAction["PARAMS"];
         }
     }
     $GLOBALS["SALE_CORRESPONDENCE"] = CSalePaySystemAction::UnSerializeParams($psParams);
     foreach ($GLOBALS["SALE_CORRESPONDENCE"] as $key => $val) {
         $GLOBALS["SALE_CORRESPONDENCE"][$key]["~VALUE"] = $val["VALUE"];
         $GLOBALS["SALE_CORRESPONDENCE"][$key]["VALUE"] = htmlspecialcharsEx($val["VALUE"]);
     }
     // fields with no interface
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_STREET']["~VALUE"] = 'LOCATION_STREET';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["TYPE"] = 'PROPERTY';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYER_VILLAGE']["~VALUE"] = 'LOCATION_VILLAGE';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["TYPE"] = 'ORDER';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["VALUE"] = 'PAYMENT_ID';
     $GLOBALS["SALE_CORRESPONDENCE"]['ORDER_PAYMENT_ID']["~VALUE"] = 'PAYMENT_ID';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["TYPE"] = 'ORDER';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["VALUE"] = 'PAYED';
     $GLOBALS["SALE_CORRESPONDENCE"]['PAYED']["~VALUE"] = 'PAYED';
     if (isset($relatedData["BASKET_ITEMS"]) && is_array($relatedData["BASKET_ITEMS"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["BASKET_ITEMS"] = $relatedData["BASKET_ITEMS"];
     }
     if (isset($relatedData["TAX_LIST"]) && is_array($relatedData["TAX_LIST"])) {
         $GLOBALS["SALE_INPUT_PARAMS"]["TAX_LIST"] = $relatedData["TAX_LIST"];
     }
 }