Csaleorder update не работает

Update

Описание и параметры

Метод устарел. Рекомендуется использовать методы класса \Bitrix\Sale\Order.

Метод изменяет параметры заказа с кодом ID на новые параметры из массива arFields. Перед добавлением заказа вызываются обработчики события OnBeforeOrderUpdate модуля магазина, а после добавления — обработчики события OnOrderUpdate модуля магазина. Нестатический метод.

Параметры вызова

Параметр Описание С версии
ID Код заказа.
arFields Ассоциативный массив параметров заказа, ключами в котором являются названия параметров заказа, а значениями — новые значения.
Допустимые ключи:
  • LID — код сайта, на котором сделан заказ;
  • PERSON_TYPE_ID — тип плательщика, к которому принадлежит посетитель, сделавший заказ (заказчик);
  • PAYED — флаг (Y/N) оплачен ли заказ;
  • DATE_PAYED — дата оплаты заказа;
  • EMP_PAYED_ID — код пользователя (сотрудника магазина), который установил флаг оплаты;
  • CANCELED — флаг (Y/N) отменён ли заказ;
  • DATE_CANCELED — дата отмены заказа;
  • EMP_CANCELED_ID — код пользователя, который установил флаг отмены заказа;
  • REASON_CANCELED — текстовое описание причины отмены заказа;
  • STATUS_ID — код статуса заказа;
  • EMP_STATUS_ID — код пользователя (сотрудника магазина), который установил текущий статус заказа;
  • PRICE_DELIVERY — стоимость доставки заказа;
  • ALLOW_DELIVERY — флаг (Y/N) разрешена ли доставка (отгрузка) заказа;
  • DATE_ALLOW_DELIVERY — дата, когда была разрешена доставка заказа;
  • EMP_ALLOW_DELIVERY_ID — код пользователя (сотрудника магазина), который разрешил доставку заказа;
  • PRICE — общая стоимость заказа;
  • CURRENCY — валюта стоимости заказа;
  • DISCOUNT_VALUE — общая величина скидки;

Параметр не поддерживается с версии 12.5.0. Вместо него необходимо использовать правила корзины.

  • USER_ID — код пользователя заказчика;
  • PAY_SYSTEM_ID — платежная система, которой (будет) оплачен заказа;
  • DELIVERY_ID — способ (служба) доставки заказа;
  • USER_DESCRIPTION — описание заказа заказчиком;
  • ADDITIONAL_INFO — дополнительная информация по заказу;
  • COMMENTS — произвольные комментарии;
  • TAX_VALUE — общая сумма налогов;
  • STAT_GID — параметр события в статистике;
  • PS_STATUS — флаг (Y/N) статуса платежной системы — успешно ли оплачен заказ (для платежных систем, которые позволяют автоматически получать данные по проведенным через них заказам);
  • PS_STATUS_CODE — код статуса платежной системы (значение зависит от системы);
  • PS_STATUS_DESCRIPTION — описание результата работы платежной системы;
  • PS_STATUS_MESSAGE — сообщение от платежной системы;
  • PS_SUM — сумма, которая была реально оплачена через платежную систему;
  • PS_CURRENCY — валюта суммы;
  • PS_RESPONSE_DATE — дата получения статуса платежной системы;
  • SUM_PAID — сумма, которая уже была оплачена покупателем по данному счету (например, с внутреннего счета);
  • PAY_VOUCHER_NUM — номер платежного поручения;
  • PAY_VOUCHER_DATE — дата платежного поручения.
  • DATE_INSERT — дата создания заказа.
  • DateUpdate Обновление даты изменения заказа. Значения true/false (по-умолчанию true). 8.0.3

    Возвращаемые значения

    Возвращается код добавленного заказа или false в случае ошибки.

    Читайте также:  Как настроить планшет эпл после покупки

    Пример использования

    Пользовательские комментарии

    Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

    Для этого нужно всего лишь авторизоваться на сайте

    Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

    Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

    Источник

    Вопрос по CSaleOrderPropsValue

    Никак не могу понять, почему после применения CSaleOrderPropsValue :: Update например:

    CModule::IncludeModule(«sale»);
    CSaleOrderPropsValue::Update(74, array(«VALUE»=>»99999999»)); ?>

    не отображаются внесённые изменение функцией CSaleOrderUserPropsValue::GetList, а отображается старое значение
    например:
    74));
    while ($arPropVals = $db_propVals->Fetch())
    <
    echo «»;
    >
    ?>

    Самое интересное, что если посмотреть свойство заказа в списке заказов, то здесь уже новое(изменённое) значение

    Только что разбирался с этим методом, во-первых хорошо бы подавать ему на вход все поля (это не очень сложно, если выводилась форма редактирвоания, то все эти данные уже выбирались из базы):
    $arField = array(
    «USER_PROPS_ID» => $arr[«USER_PROPS_ID»],
    «ORDER_PROPS_ID» => $arr[«ORDER_PROPS_ID»],
    «NAME» => $field[«NAME»],
    «VALUE» => $_REQUEST[«ORDER_PROP_».$k]
    );

    $res = CSaleOrderUserPropsValue::Update($arr[«ID»] , $arField);

    И во вторых не путать что мы передаем в $arr[«ID»]это должен быть именно идентификатор значения свойства профиля полдьзователя, а не идентификатор профиля. Очень рекомендую открыть рядом консоль и следить за тем что обновляется.
    /bitrix/admin/sql.php

    Запрос вида:
    SELECT * FROM b_sale_user_props_value WHERE USER_PROPS_ID = ВАШ_ИД_ПРОФИЛЯ;

    Все обновляется, удачи

    P.S: Понятно, что тема давно устарела, но часто ищешь на форуме решение, проблема описана твоя, а решения нет, может кому и пригодится

    Источник

    Не получается присвоить свойство заказа CSaleOrder::Add

    Здраствуйте! помогите! бьюсь уже два дня с проблемой установки значения свойству заказа, при добавлении заказа через CSaleOrder::Add.

    Приведу пример кода:
    CModule::includeModule(‘sale’);
    $arFields = array(
    «LID» => «s1»,
    «PERSON_TYPE_ID» => 1,
    «PAYED» => «N»,
    «CANCELED» => «N»,
    «STATUS_ID» => «N»,
    «PRICE» => 279.32,
    «CURRENCY» => «RUB»,
    «USER_ID» => 1,
    «PAY_SYSTEM_ID» => 3,
    «PRICE_DELIVERY» => 11.37,
    «DELIVERY_ID» => 2,
    «DISCOUNT_VALUE» => 1.5,
    «TAX_VALUE» => 0.0,
    «USER_DESCRIPTION» => «ololo»,
    «PROPERTY_VAL_BY_CODE_UACMNT» => «very bad»
    );

    В списке свойств заказа (Магазин — Настройки магазина — Свойства заказа — Список свойств) есть свойство с кодом UACMNT, проблема в том что я не знаю как задать этому свойству значение, пробовал писать «PROPERTY_VAL_BY_CODE_UACMNT» и «UACMNT» но не получается.

    Прошу помощи! подскажите как это делается.

    Если делать заказ на сайте то данные в свойства заносятся, но я не разобрался каким образом.

    CSaleOrderPropsValue::GetOrderProps выдает примерно следующее (Массив преобразован для удобства работы с ним), тут свойство UACMNT выводится, вопрос в том что нужно прописать чтобы его задать через API

    Array( [0] => Array ( [CODE] => UNAME [VALUE] => Алексей ) [1] => Array ( [CODE] => UPHONE [VALUE] => 8990909090 ) [2] => Array ( [CODE] => UUL [VALUE] => Ленина ) [3] => Array ( [CODE] => UDOM [VALUE] => 12 ) [4] => Array ( [CODE] => USTR [VALUE] => 0 ) [5] => Array ( [CODE] => UKV [VALUE] => 180 ) [6] => Array ( [CODE] => UACMNT [VALUE] => коментарий здесь ) [7] => Array ( [CODE] => VL_COUNT [VALUE] => 111 ) [8] => Array ( [CODE] => UDATE [VALUE] => 21:58 2.2.2013 ) [9] => Array ( [CODE] => OCOMMENT [VALUE] => коментарий ))

    Читайте также:  Full graphic smart controller не работает

    Подкиньте ссылочку хотябы, я по разному пытался присвоить и UF_UACMNT и PROPERTY_UACMNT, до этого сайт делал не я, вопрос актуален как с помощью CSaleOrder::Add добавить к заказу его свойства. help!

    Источник

    Не ставится флаг оплаты заказа в админке при использовании API

    У меня похожая проблема, пытаюсь сохранить оплату заказа:

    \Bitrix\Main\Loader:: includeModule ( ‘sale’ ) ;

    $order = \Bitrix\Sale\Order:: load ( 3134 ) ;

    $paymentCollection = \Bitrix\Sale\PaymentCollection:: load ( $order ) ;
    /**
    * @var \Bitrix\Sale\Payment $obPayment
    */
    $obPayment = $paymentCollection [ 0 ] ;
    $obPayment -> setPaid ( ‘Y’ ) ;
    $obPayment -> save () ;
    $order -> save () ;

    но флаг оплаты проставляется только в оплатах, а заказ остается не оплачен.

    Алексей Машкарин, только что опробовал вариант:

    Столкнулся с похожей проблемой — перестал работать метод CSaleOrder::Update в части проставления признака оплаты и номера транзакции после того, как добавил дополнительный метод оплаты (см. https://dev.1c-bitrix.ru/community/webdev/user/72708/blog/27985/ ). До этого всё работало исправно.

    Специфика задачи — обработчик оплаты картой, нужно при получении от банка информации об оплате проставлять оплату заказу и сохранять номер транзакции (чтобы потом можно было сделать возврат)
    Проблему решил следующим образом используя D7

    При этом общий признак оплаты заказа устанавливается сам автоматически, без каких-либо дополнительных функций.

    Источник

    Почему не работают Аффилиаты

    Но не меняется флаг оплаты. Помечается, что заказ оплачен, но статус остается «Принят, ожидается оплата»

    Цитата
    scifi пишет:
    Но не меняется флаг оплаты. Помечается, что заказ оплачен, но статус остается

    Таг флаг или статус? Флаг оплаты — это флаг оплаты. Почему вы рассчитываете, что статус тоже должен поменяться? Настройка какая-то стоит?

    Цитата
    scifi пишет:
    $arFields = Array();
    CSaleOrder::DeliverOrder($id, ‘Y’);
    CSaleOrder::Update($id, $arFields);

    Все, вопрос решен. Вот так работает:

    Флаг оплаты раньше менялся сам после оплаты. Сейчас только ручками, видимо. Я все правильно сделал?

    Я слегка поспешил.
    Код работает, но если «оплатить» заказ из админки руками, то появляется ошибка:
    File: . /bitrix/modules/sale/mysql/order.php
    Line: 109
    MySQL Query Error: UPDATE b_sale_order SET , DATE_UPDATE = now() WHERE [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ DATE_UPDATE = now() WHERE at line 1]

    Хотя все и срабатывает. Как убрать эту ошибку?

    Цитата
    Антон Долганин пишет:
    Значит обработчик не вызывается. Или вызывается когда заказ еще не сформирован. Воткните разрешение доставки на событие оплаты заказа (OnPayOrder вроде), и все. Как только заказ оплатится, доставка и разрешится.

    Антон, простите за вопрос.. А вот у меня по факту оплаты доставка разрешается (OnSalePayOrder). Но начисления не происходят (( Только если пойти в заказ и руками отменить доставку и заново разрешить, тогда калькулируется.

    В чем может быть дело? Заранее спасибо.

    используйте CSaleOrder::DeliverOrder — с ним должно все работать. Проверьте код «с чистого листа»

    Цитата
    Антон Ежков пишет:
    Антон, спасибо за предложение, добавил в план работ

    Доброго времени суток.

    Столкнулся с такой проблемой. С помощью API формирую заказы на определенные суммы, выставляю им нужные состояния и статусы. Но формирую их без добавления товаров, т.е. товар не привязан к заказу. На основе этих записей пытаюсь провести калькуляцию, пишет что «Калькулировано N аффилиатов.» но никому из них ничего не начисляется. Если товар присвоить к заказу (к каждому из заказов привязал по одному товару, с ценой равной стоимостью заказа), тогда рассчитывается калькуляция лишь на 2 аффилиатов, из 7(на которых должен быть произведен расчет). И то, например, «дата последней калькуляции» в итоге проставляется лишь у одного из этих 2-х аффилиатов .

    Все проверил, к каждому из заказов прибит аффилиат + у покупателя, так же этот аффилиат прибит к записи.
    И еще в списке заказов, в столбце «Блокировка» у некоторых записей стоит желтый кружок который значит (Заблокировано Вами(не забудьте освободить)), я ничего не блокировал все действия со всеми заказами были сделано одинаковые, но у некоторых из них этот желтый кружок. Вначале думал это из-за того что у 2х из этих заказов (с желтым кружком) цена заказа равна нулю, но потом увидел что и у еще парочки заказов с суммой заказа больше нуля, все равно стоит этот статус (желтый кружок), и нигде нельзя его поменять при редактировании заказа ((((((

    вот код на всякий случай по созданию заказа

    function DoSale($uid, $pri) <
    global $USER;

    $arFields = array (
    «LID» => «s1»,
    «PERSON_TYPE_ID» => «1»,
    «PAYED» => «Y»,
    «CANCELED» => «N»,
    «STATUS_ID» => «F»,
    «PRICE» => $pri,
    «CURRENCY» => «USD»,
    «USER_ID» => $uid,
    «PAY_SYSTEM_ID» => ‘1’,
    «PRICE_DELIVERY» => ‘0.00’,
    «DELIVERY_ID» => «»,
    «DISCOUNT_VALUE» => «0.00»,
    «TAX_VALUE» => «0.00»,
    «USER_DESCRIPTION» => «»,
    «SUM_PAID» => $pri
    );

    // add Guest ID
    if (CModule::IncludeModule(«statistic»;)) $arFields[«STAT_GID»] = CStatistic::GetEventParam();
    $arFilter = Array(
    «USER_ID» => $uid
    );

    $rsFill = CSaleAffiliate::GetList(array(«DATE_CREATE» => «ASC»;), $arFilter);

    $arFill = $rsFill->Fetch();
    if ($arFill[«AFFILIATE_ID»]>0) <
    $arFields[‘AFFILIATE_ID’]=$arFill[«AFFILIATE_ID»];
    >

    $ORDER_ID = CSaleOrder::Add($arFields);
    $ORDER_ID = IntVal($ORDER_ID);

    Просьба подсказать в данном деле, заранее благодарен )))

    Источник

    Оцените статью