Пример #1
0
    function OnBeforeUserRegisterHandler(&$arFields)
    {
      CModule::IncludeModule('sale');
      //создаём профиль
      //PERSON_TYPE_ID - идентификатор типа плательщика, для которого создаётся профиль
      $arProfileFields = array(
         "NAME" => "Профиль покупателя (".$arFields['LOGIN'].')',
         "USER_ID" => $arFields['ID'],
         "PERSON_TYPE_ID" => 1
      );
      /**
       * Добавляем счет пользователя
       * @var array
       */
      $arFields = array(
        "USER_ID" => $arFields['ID'], 
        "CURRENCY" => "RUB", 
        "CURRENT_BUDGET" => 0
      );
      $accountID = CSaleUserAccount::Add($arFields);

      $PROFILE_ID = CSaleOrderUserProps::Add($arProfileFields);
      //если профиль создан
      if ($PROFILE_ID) {
         //формируем массив свойств
         $PROPS = array(
         array(
               "USER_PROPS_ID" => $PROFILE_ID,
               "ORDER_PROPS_ID" => 2,
               "NAME" => "Адрес доставки",
               "VALUE" => $arFields['PERSONAL_STREET']
            ),
         array(
               "USER_PROPS_ID" => $PROFILE_ID,
               "ORDER_PROPS_ID" => 1,
               "NAME" => "Ф.И.О.",
               "VALUE" => $arFields['LAST_NAME'].' '.$arFields['NAME'].' '.$arFields['SECOND_NAME']
            )
         );
         //добавляем значения свойств к созданному ранее профилю
         foreach ($PROPS as $prop) {
            CSaleOrderUserPropsValue::Add($prop);
         }
      }
    }
Пример #2
0
 /**
  * <p>Метод изменяет сумму на счете пользователя с кодом userID. Метод динамичный.</p>
  *
  *
  * @param int $userID  Код пользователя. </h
  *
  * @param double $sum  Величина изменения суммы на счете. Для увеличения суммы на счете
  * величина должна быть со знаком "+" или без знака, а для уменьшения -
  * со знаком "-". 
  *
  * @param string $currency  Валюта суммы.
  *
  * @param  $string  Описание причины изменения суммы.
  *
  * @param descriptio $n = ""[ Код заказа, если изменение суммы относится к заказу.
  *
  * @param int $orderID = 0[ Произвольное текстовое описание.
  *
  * @param string $notes = ""]]] 
  *
  * @return int <p>Метод возвращает код пользовательского счета или <i>false</i> в
  * случае ошибки.</p> <p></p><div class="note"> <b>Замечания:</b> <ul> <li>Деньги
  * снимаются только со счета той же валюты, которая передается
  * параметром в метод. Счета пользователя в другой валюте не
  * затрагиваются.</li> <li>Если счета в данной валюте раньше у
  * пользователя не было, то он автоматически создастся (и будет
  * возвращен код созданного счета).</li> </ul> </div> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // Напишем функцию обратного вызова, которая будет вызываться при изменении
  * // флага "Доставка разрешена" заказа и добавлять (или снимать) 100 USD на счет
  * 
  * function MyDeliveryOrderCallback($productID, $userID, $bPaid, $orderID)
  * {
  *     global $DB;
  * 
  *     // Обработаем входные параметры
  *     $productID = IntVal($productID);    // Код заказанного товара
  *     $userID = IntVal($userID);  // Код пользователя-покупателя
  *     $bPaid = ($bPaid ? True : False);   // Устанавливается или снимается флаг доставки
  *     $orderID = IntVal($orderID);    // Код заказа
  * 
  *     if ($userID &lt;= 0)
  *         return False;
  * 
  *     if ($orderID &lt;= 0)
  *         return False;
  * 
  *     // Внесем (снимем) деньги на счет
  *     if (!CSaleUserAccount::UpdateAccount(
  *             $userID,
  *             ($bPaid ? 100 : -100),
  *             "USD",
  *             "MANUAL",
  *             $orderID
  *         ))
  *         return False;
  * 
  *     return True;
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleuseraccount/csaleuseraccount.updateaccount.php
  * @author Bitrix
  */
 public static function UpdateAccount($userID, $sum, $currency, $description = "", $orderID = 0, $notes = "", $paymentId = null)
 {
     global $DB, $APPLICATION;
     $userID = (int) $userID;
     if ($userID <= 0) {
         $APPLICATION->ThrowException(GetMessage("SKGU_EMPTYID"), "EMPTY_USER_ID");
         return False;
     }
     $dbUser = CUser::GetByID($userID);
     if (!$dbUser->Fetch()) {
         $APPLICATION->ThrowException(str_replace("#ID#", $userID, GetMessage("SKGU_NO_USER")), "ERROR_NO_USER_ID");
         return False;
     }
     $sum = (double) str_replace(",", ".", $sum);
     $currency = trim($currency);
     if ($currency === '') {
         $APPLICATION->ThrowException(GetMessage("SKGU_EMPTY_CUR"), "EMPTY_CURRENCY");
         return False;
     }
     $orderID = (int) $orderID;
     $paymentId = (int) $paymentId;
     if (!CSaleUserAccount::Lock($userID, $currency)) {
         $APPLICATION->ThrowException(GetMessage("SKGU_ACCOUNT_NOT_WORK"), "ACCOUNT_NOT_LOCKED");
         return False;
     }
     $currentBudget = 0.0;
     $result = false;
     $dbUserAccount = CSaleUserAccount::GetList(array(), array("USER_ID" => $userID, "CURRENCY" => $currency));
     if ($arUserAccount = $dbUserAccount->Fetch()) {
         $currentBudget = floatval($arUserAccount["CURRENT_BUDGET"]);
         $arFields = array("CURRENT_BUDGET" => $arUserAccount["CURRENT_BUDGET"] + $sum);
         $result = CSaleUserAccount::Update($arUserAccount["ID"], $arFields);
     } else {
         $currentBudget = floatval($sum);
         $arFields = array("USER_ID" => $userID, "CURRENT_BUDGET" => $sum, "CURRENCY" => $currency, "LOCKED" => "Y", "DATE_LOCKED" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID))));
         $result = CSaleUserAccount::Add($arFields);
     }
     if ($result) {
         if (isset($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_" . $userID . "_" . $currency])) {
             unset($GLOBALS["SALE_USER_ACCOUNT"]["SALE_USER_ACCOUNT_CACHE_" . $userID . "_" . $currency]);
         }
         $arFields = array("USER_ID" => $userID, "TRANSACT_DATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID))), "CURRENT_BUDGET" => $currentBudget, "AMOUNT" => $sum > 0 ? $sum : -$sum, "CURRENCY" => $currency, "DEBIT" => $sum > 0 ? "Y" : "N", "ORDER_ID" => $orderID > 0 ? $orderID : False, "PAYMENT_ID" => $paymentId > 0 ? $paymentId : false, "DESCRIPTION" => strlen($description) > 0 ? $description : False, "NOTES" => strlen($notes) > 0 ? $notes : False, "EMPLOYEE_ID" => $GLOBALS["USER"]->IsAuthorized() ? $GLOBALS["USER"]->GetID() : False);
         CSaleUserTransact::Add($arFields);
     }
     CSaleUserAccount::UnLock($userID, $currency);
     return $result;
 }
Пример #3
0
}
__IncludeLang(GetLangFileName(dirname(__FILE__) . "/lang/", "/" . basename(__FILE__), $lang));
$dbPerson = CSalePersonType::GetList(array());
if (!$dbPerson->Fetch()) {
    //Person Types
    $arGeneralInfo["personType"]["fiz"] = CSalePersonType::Add(array("LID" => $siteID, "NAME" => GetMessage("SALE_WIZARD_PERSON_1"), "SORT" => "100"));
    $arGeneralInfo["personType"]["ur"] = CSalePersonType::Add(array("LID" => $siteID, "NAME" => GetMessage("SALE_WIZARD_PERSON_2"), "SORT" => "150"));
    //currecny to site
    $dbUserAccount = CSaleUserAccount::GetList(array(), array("USER_ID" => 1));
    if (!$dbUserAccount->Fetch()) {
        if ($bRus) {
            CSaleLang::Add(array("LID" => $siteID, "CURRENCY" => "RUB"));
            CSaleUserAccount::Add(array("USER_ID" => 1, "CURRENT_BUDGET" => 1000, "CURRENCY" => "RUB"));
        } else {
            CSaleLang::Add(array("LID" => $siteID, "CURRENCY" => "USD"));
            CSaleUserAccount::Add(array("USER_ID" => 1, "CURRENT_BUDGET" => 100, "CURRENCY" => "USD"));
        }
    }
    //Sale administrators
    $userGroupID = "";
    $dbGroup = CGroup::GetList($by = "", $order = "", array("STRING_ID" => "sale_administrator"));
    if ($arGroup = $dbGroup->Fetch()) {
        $userGroupID = $arGroup["ID"];
    } else {
        $group = new CGroup();
        $arFields = array("ACTIVE" => "Y", "C_SORT" => 800, "NAME" => GetMessage("SALE_WIZARD_ADMIN_SALE"), "DESCRIPTION" => GetMessage("SALE_WIZARD_ADMIN_SALE_DESCR"), "USER_ID" => array(), "STRING_ID" => "sale_administrator");
        $userGroupID = $group->Add($arFields);
    }
    if (IntVal($userGroupID) > 0) {
        DemoSiteUtil::SetFilePermission(array($siteID, "/bitrix/admin"), array($userGroupID => "R"));
        CSaleGroupAccessToSite::Add(array("SITE_ID" => $siteID, "GROUP_ID" => $userGroupID));
Пример #4
0
 function UpdateAccount($userID, $sum, $currency, $description = "", $orderID = 0, $notes = "")
 {
     global $DB;
     $userID = IntVal($userID);
     if ($userID <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_EMPTYID"), "EMPTY_USER_ID");
         return False;
     }
     $dbUser = CUser::GetByID($userID);
     if (!$dbUser->Fetch()) {
         $GLOBALS["APPLICATION"]->ThrowException(str_replace("#ID#", $userID, GetMessage("SKGU_NO_USER")), "ERROR_NO_USER_ID");
         return False;
     }
     $sum = str_replace(",", ".", $sum);
     $sum = DoubleVal($sum);
     $currency = Trim($currency);
     if (strlen($currency) <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_EMPTY_CUR"), "EMPTY_CURRENCY");
         return False;
     }
     $orderID = IntVal($orderID);
     if (!CSaleUserAccount::Lock($userID, $currency)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SKGU_ACCOUNT_NOT_WORK"), "ACCOUNT_NOT_LOCKED");
         return False;
     }
     $result = false;
     $dbUserAccount = CSaleUserAccount::GetList(array(), array("USER_ID" => $userID, "CURRENCY" => $currency));
     if ($arUserAccount = $dbUserAccount->Fetch()) {
         $arFields = array("CURRENT_BUDGET" => $arUserAccount["CURRENT_BUDGET"] + $sum);
         $result = CSaleUserAccount::Update($arUserAccount["ID"], $arFields);
     } else {
         $arFields = array("USER_ID" => $userID, "CURRENT_BUDGET" => $sum, "CURRENCY" => $currency, "LOCKED" => "Y", "DATE_LOCKED" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID))));
         $result = CSaleUserAccount::Add($arFields);
     }
     if ($result) {
         $arFields = array("USER_ID" => $userID, "TRANSACT_DATE" => date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL", SITE_ID))), "AMOUNT" => $sum > 0 ? $sum : -$sum, "CURRENCY" => $currency, "DEBIT" => $sum > 0 ? "Y" : "N", "ORDER_ID" => $orderID > 0 ? $orderID : False, "DESCRIPTION" => strlen($description) > 0 ? $description : False, "NOTES" => strlen($notes) > 0 ? $notes : False, "EMPLOYEE_ID" => $GLOBALS["USER"]->IsAuthorized() ? $GLOBALS["USER"]->GetID() : False);
         CSaleUserTransact::Add($arFields);
     }
     CSaleUserAccount::UnLock($userID, $currency);
     return $result;
 }