Меню

Ошибка у заказа есть активные оплаты битрикс

 

Пользователь 412397

Заглянувший

Сообщений: 10
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2015

#1

0

02.12.2015 09:50:52

Подключил робокассу. настроил по инструкции. Опата проодит. но статус заказа остается — Принят, ожидается оплата

файл result.php

Код
<?$APPLICATION->IncludeComponent(
   "bitrix:sale.order.payment.receive",
   "",
   Array(
      "PAY_SYSTEM_ID" => "9",
      "PERSON_TYPE_ID" => "1"
   )
);?>
 

Пользователь 265201

Эксперт

Сообщений: 1340
Баллов: 116
Авторитет:

1

Рейтинг пользователя:

1

Регистрация: 18.06.2014

в настройках модуля интернет-магазин /bitrix/admin/settings.php?lang=ru&mid=sale&mid_menu=1 посмотрите параметры

http://take.ms/cp8C2

 

Пользователь 412397

Заглянувший

Сообщений: 10
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2015

При получении оплаты переводить заказ в статус: —  поставил — Оплачен. до это стояло не изменять. Но статус заказа всё равно не меняется

 

Пользователь 68923

Заглянувший

Сообщений: 8
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 12.08.2010

Столкнулся сегодня с такой же проблемой — не меняется статус на «Оплачен». Здесь /bitrix/admin/settings.php?lang=ru&mid=sale&mid_menu=1 настроено, что при оплате менять статус, с Робокассы приходит подтверждение, что заказ Оплачен, и заказе стоит «Оплачен: да». Обновления последние все стоят, модуль робокассы стандартный.

 

Администратор

Сообщений: 1376
Баллов: 113
Авторитет:

0

Рейтинг пользователя:

3

Регистрация: 07.03.2008

Была похожая проблема с Яндексом, и она в принципе могла быть глобальная на все системы. Исправление было в sale 15.5.11, подскажите какая версия у вас?

 

Пользователь 419351

Заглянувший

Сообщений: 2
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 27.11.2015

Такая же проблема! Версия

16.0.1

. оплата через эквайринг сбербанк. Оплачен, и заказе стоит «Оплачен: да» . Статус заказа: (N) Принят, ожидается оплата

 

Пользователь 442517

Заглянувший

Сообщений: 10
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 21.12.2015

Та же проблема. Только с платёжной системой webmoney. Версия модуля: sale (16.0.2). Вам удалось решить проблему ?

 

Пользователь 415309

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 30.11.2015

Добрый день, аналогично с LiqPay — статус «Оплачен» не изменяется. Вдобавок в списке вариантов опции «При получении оплаты переводить заказ в статус» нету варианта «Оплачен», только «в обработке, подтвержден, отгружен, выполнен». Версия модуля sale 15.5.11

 

Пользователь 159326

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 11.04.2013

Привет. Вот решение этой проблемы
В папке /bitrix/php_interface/ редактируем файл init.php (если этого файла нет, то создаем)

Добавляем:

AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»);

function ChangeStatus($id,$val) {    
   CSaleOrder::StatusOrder($id,'<код Вашего статуса>’);
}

 

Пользователь 80740

Постоянный посетитель

Сообщений: 97
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 13.01.2011

#10

0

18.10.2016 13:40:03

Цитата
Александр Феллер написал:
Привет. Вот решение этой проблемы
В папке /bitrix/php_interface/ редактируем файл init.php (если этого файла нет, то создаем)

Добавляем:

AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»);

function ChangeStatus($id,$val) {    
   CSaleOrder::StatusOrder($id,'<код Вашего статуса>’);
}

код статуса это что?

 

Пользователь 34550

Эксперт

Сообщений: 1579
Баллов: 128
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 12.12.2008

#11

0

18.10.2016 14:28:12

код статуса — символьный код 1-2 буквы из админки

 

Пользователь 80740

Постоянный посетитель

Сообщений: 97
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 13.01.2011

#12

0

18.10.2016 15:30:52

спасибо. я разобрался
но это реально поправили в обновках
статусы менялись
флаг оплаты не приходит попросту. а статус меняется

 

Пользователь 34550

Эксперт

Сообщений: 1579
Баллов: 128
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 12.12.2008

#13

0

19.10.2016 12:51:21

это в настройках модуля делается. что и как должно меняться
у нас, например, много своих статусов, которые мы меняем через обработчики. опрашиваем службы доставки на факт прибытия заказа и меняем статусы и уведомляем клиентов

 

Пользователь 80740

Постоянный посетитель

Сообщений: 97
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 13.01.2011

#14

0

19.10.2016 13:05:56

Цитата
Александр Кислицын написал:
это в настройках модуля делается. что и как должно меняться
у нас, например, много своих статусов, которые мы меняем через обработчики. опрашиваем службы доставки на факт прибытия заказа и меняем статусы и уведомляем клиентов

мы о разном говорим.
я о флагах, вы о статусах
флаг он всего один в оплатах. он может быть связан со статусом. а может и не быть. Статус может прийти — оплата получена, т.к платеж прошел, а флаг прилетит только при списании средств, а не факте проводки.
за участие спасибо :)
в общем мы разобрались уже  

 

Пользователь 41311

Заглянувший

Сообщений: 3
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 15.04.2009

#15

0

06.06.2017 23:02:59

Цитата
Александр Феллер написал:
Привет. Вот решение этой проблемы
В папке /bitrix/php_interface/ редактируем файл init.php (если этого файла нет, то создаем)

Добавляем:

AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»);

function ChangeStatus($id,$val) {    
   CSaleOrder::StatusOrder($id,'<код Вашего статуса>’);
}

вы не подскажите функцию для изменения этого статуса?

Дело в том что здесь статус оплачен  а в блоке  «оплата» флаг нет, подскажите как изменять флаг на  «оплачено»?

 

Пользователь 396250

Постоянный посетитель

Сообщений: 78
Баллов: 12
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 15.10.2015

#16

0

30.06.2017 11:09:47

логируйте запрос с робокассы — идет ли запрос на  result.php и с какими параметрами.
У меня была похожая проблема с paymaster — запрос шел на http затем редиректился на https, соот-но все POST параметры терялись и запрос был пустой.  

 

Пользователь 330687

Заглянувший

Сообщений: 11
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 02.07.2015

#17

0

04.09.2017 11:44:30

Цитата
Александр Феллер написал:
CSaleOrder::StatusOrder($id,’ ‘);
}

Это называется «костыль», а не «решение проблемы» -__-

 

Пользователь 80740

Постоянный посетитель

Сообщений: 97
Баллов: 17
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 13.01.2011

#18

1

04.09.2017 11:57:28

Цитата
Валентин Матвейчик написал:

Цитата
Александр Феллер  написал:
CSaleOrder::StatusOrder($id,’ ‘);
}

Это называется «костыль», а не «решение проблемы» -__-

вы наверное с Битркисом не давно
Это не костыль — это кастомизация под ваши нужды :)))

С ряда PayPal гейтов и карточных вопрос открыт с 14 года и думаю это уже на всегда  

 

Пользователь 330687

Заглянувший

Сообщений: 11
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 02.07.2015

#19

0

04.09.2017 15:42:55

Цитата
Сергей написал:

Цитата
Валентин Матвейчик  написал:

Цитата
Александр Феллер  написал:
CSaleOrder::StatusOrder($id,’ ‘);
}

Это называется «костыль», а не «решение проблемы» -__-

вы наверное с Битркисом не давно
Это не костыль — это кастомизация под ваши нужды ))

С ряда PayPal гейтов и карточных вопрос открыт с 14 года и думаю это уже на всегда  

Я наверное сейчас серьёзно отвечаю на шутку, но «кастомизацией» был бы хотя бы такой вариант:

Код
AddEventHandler("sale", "OnSalePayOrder", "ChangeStatus"); 

function ChangeStatus($id,$val) {     
   CSaleOrder::StatusOrder(
      $id,
      COption::SetOptionString("sale", "status_on_paid", "N")
   ); 
}
 

Пользователь 44102

Постоянный посетитель

Сообщений: 77
Баллов: 12
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 16.06.2009

#20

0

06.09.2017 11:10:15

Ребята, может кто подскажет как в D7 это выглядит?

AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»);  

 

Пользователь 244255

Заглянувший

Сообщений: 15
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 24.02.2014

#21

0

24.11.2017 02:02:10

Цитата
Ребята, может кто подскажет как в D7 это выглядит?

AddEventHandler(«sale», «OnSalePayOrder», «ChangeStatus»);  

Павел, примерно так:

Код
use BitrixMainEventManager;

$eventManager = EventManager::getInstance();

$eventManager->addEventHandler(
    'sale',
    'OnSalePayOrder'
    'ChangeStatus
);
 

Пользователь 47602

Заглянувший

Сообщений: 13
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 24.08.2009

#22

0

13.01.2018 18:53:56

Добрый день, подскажите пожалуйста,
оплата через умный платеж Яндекс.Кассы проходит, деньги списываются, но статусы ни у оплаты ни у заказа не меняются, сумма к оплате остается та же:

https://yadi.sk/i/boRxGdw23RRXhv

настройки автоматизации:
https://yadi.sk/i/ikTmZuQJ3RRYEJ

что делать?

1С-Битрикс: Управление сайтом 17.5.4.

 

Пользователь 47602

Заглянувший

Сообщений: 13
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 24.08.2009

#23

0

21.01.2018 13:06:21

 

Пользователь 370394

Заглянувший

Сообщений: 22
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 13.08.2015

#24

0

30.01.2018 11:52:04

Цитата
Дмитрий Чекланов написал:
Добрый день, подскажите пожалуйста,
оплата через умный платеж Яндекс.Кассы проходит, деньги списываются, но статусы ни у оплаты ни у заказа не меняются, сумма к оплате остается та же:
https://yadi.sk/i/boRxGdw23RRXhv

настройки автоматизации:

https://yadi.sk/i/ikTmZuQJ3RRYEJ  

что делать?

1С-Битрикс: Управление сайтом 17.5.4.

столкнулись с аналогичной ситуацей, кто нибудь разобрался?

 

Пользователь 47602

Заглянувший

Сообщений: 13
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 24.08.2009

#25

1

30.01.2018 12:49:09

Цитата
Антон Баранов написал:

Цитата
Дмитрий Чекланов  написал:
Добрый день, подскажите пожалуйста,
оплата через умный платеж Яндекс.Кассы проходит, деньги списываются, но статусы ни у оплаты ни у заказа не меняются, сумма к оплате остается та же:
 https://yadi.sk/i/boRxGdw23RRXhv  

настройки автоматизации:

https://yadi.sk/i/ikTmZuQJ3RRYEJ  

что делать?

1С-Битрикс: Управление сайтом 17.5.4.

столкнулись с аналогичной ситуацей, кто нибудь разобрался?

Вам следует перейти в админку, Магазин-Настройки-Бизнес смыслы, включить опцию «Автоматически оплачивать заказ при получении успешного статуса оплаты» и сохранить.

мне помогло..

Чтобы заказ успешно удалился из системы, у него не должно быть активных оплат и отгрузок. Поэтому перед удалением нужно проверить эти условия.

Подключаем необходимые модули.

BitrixMainLoader::includeModule('sale');
use BitrixSale;

Выбираем заказы которые будем удалять.

$filter = Array("ID" => 1000); //ID заказа
$order_list = array();
$log_file = $_SERVER["DOCUMENT_ROOT"]."/orders.log"; if(file_exists($log_file))     unlink($log_file);

$db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $filter);
while($ar_sales = $db_sales->Fetch())
{
    $order_list[] = $ar_sales["ID"];
}

Отменяем оплаты, отгрузки и удаляем заказы.

foreach($order_list as $id)
{
    $order = SaleOrder::load($id);
    file_put_contents($log_file, "Работаем с заказом " . $id . "n", FILE_APPEND);

    //отменяем оплаты если есть
    $paymentCollection = $order->getPaymentCollection();
    if($paymentCollection->isPaid())
    {
        file_put_contents($log_file, "Оплаченn", FILE_APPEND);

        foreach($paymentCollection as $payment)
        {
            $payment->setReturn("Y");
        }
    }

    //отменяем отгрузки если есть
    $shipmentCollection = $order->getShipmentCollection();
    if($shipmentCollection->isShipped())
    {
        file_put_contents($log_file, "Отгруженn", FILE_APPEND);

        $shipment = $shipmentCollection->getItemById($shipmentCollection[0]->getField("ID"));
        $res = $shipment->setField("DEDUCTED", "N");
        if(!$res->isSuccess())
        {
            file_put_contents($log, print_r($res->getErrors(), true), FILE_APPEND);
        }
    }

    $order->save();

    $res_delete = SaleOrder::delete($id);
    if(!$res_delete->isSuccess()) {
        file_put_contents($log_file, print_r($res_delete->getErrors(), true), FILE_APPEND);
    }
    else
    {
        file_put_contents($log_file, "Заказ " . $id . " удаленn", FILE_APPEND);
    }
    file_put_contents($log_file, "------------n", FILE_APPEND);
}

Не меняется статус при оплате

Внимание!
Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.


Не меняется статус при оплате

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

При оплате через яндекс кассу, в админке не меняется стастус на выполнен, постоянно весит статус «Принят, ожидается оплата» хотя все оплачено и средства поступили на счет, в чем может быть причина?

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

Внутренний счет пользователя не пополняется, но деньги на счет приходят

 

Михаил Базаров

Администратор

Сообщений: 1746
Баллов: 999999
Рейтинг:

1

Регистрация: 07.11.2013

#3

Это нравится:0Да/0Нет

11.02.2020 18:04:45

Цитата
Adrian Lazarov написал:
При оплате через яндекс кассу, в админке не меняется стастус на выполнен, постоянно весит статус «Принят, ожидается оплата» хотя все оплачено и средства поступили на счет, в чем может быть причина?

Проверьте вот эти настройки в модуле Интернет-магазина
Плюс, в настройках платежной систему- она должна отдать успешность оплаты на страницу с магазином (зависит от платежной системы)

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 18.02.40.png (592.83 КБ)

Цитировать   Имя

 

Adrian Lazarov

Пользователь

Сообщений: 5
Рейтинг:

0

Регистрация: 15.01.2020

#4

Это нравится:0Да/0Нет

11.02.2020 19:54:04

В настройках стоят вот эти параметры
в яндекс ответ настроен

Прикрепленные файлы

  • Снимок экрана 2020-02-11 в 19.39.12.png (23.64 КБ)

Цитировать   Имя

Поблагодарить и поддержать!

Поддержать выпуски видео уроков, поблагодарить за полезную инструкцию или заметку можно через:

Юманей

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.

Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт
Просмотров: 17339
При разработке сайтов на Битрикс, с интеграцией с 1С Управление Тороговлей, нужно запретит…

Показать только один тип цены в каталоге Битрикс
Просмотров: 14270
Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на с…

Открытие мобильного приложения Apache Cordova по ссылке
Просмотров: 897
Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: п…

Как вывести свойства инфоблока по отдельности и немного плюшек не в т…
Просмотров: 106976
Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании нов…

Вывести компонент новостей на страницу в Битрикс
Просмотров: 64310
Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, ч…

Автоматическая загрузка каталогов из csv файлов в Битрикс
Просмотров: 11130
Если требуется настроить автоматический импорт каталогов из csv файлов, от поставщиков.
В…

Базовая защита «Битрикс виртуальная машина» от DDoS атак.
Просмотров: 5534
Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, …

Изменить размер картинок на лету в битрикс
Просмотров: 47677
Встала задачка: на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздел…

Сортировка элементов по индексу сортировки значений типа список
Просмотров: 11015
Внутри любого компонента есть заранее заложенные поля для сортировки элементов. МОжно сорт…

Дополнительные параметры в меню Битрикс
Просмотров: 19949
Иногда нужно присвоить какой-то функционал к конкретному пункту меню в битрикс. Например о…

Отсортировать элементы в Битрикс по свойству привязка к разделам
Просмотров: 28399
При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо…

Вывод элементов с помощью API битрикс
Просмотров: 23189
Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Нап…

Подключение SSL на Битрикс виртуальная машина
Просмотров: 12480
С первого января 2017 года, наличие безопасного соединения HTTPS становится практически об…

Вывести товары из того же раздела в карточке товара
Просмотров: 18358
Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки…

Умный фильтр во всплывающей панели на мобильных.
Просмотров: 1869
Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень кра…

Установить цену товара из свойства инфоблока
Просмотров: 9287
На одном из проектов, нужно было единоразово заполнить цены товаров из свойства инфоблока…

Дополнительные картинки в новостях Битрикс, почти фотогалерея.
Просмотров: 48722
Частенько стоит задача, по мимо стандартных «Картинка для анонса» и «Деталь…

Старые шаблоны битрикс для простой верстки
Просмотров: 17486
Новые версии типового интернет-магазина, который идет в комплекте с Битрикс (от 12 версии …

Получить множественное пользовательское поле раздела. Значения множес…
Просмотров: 618
Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно п…

Создание раздела инфоблока при регистрации пользователя в Битрикс
Просмотров: 8274
Например вам нужно выводить информацию исключительно для определенного пользователя. Само …

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
 
use BitrixMainLocalizationLoc;
 
BitrixMainLoader::includeModule('sale');
 
$publicMode = $adminPage->publicMode;
$selfFolderUrl = $adminPage->getSelfFolderUrl();
 
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
 
IncludeModuleLangFile(__FILE__);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
 
$sTableID = "tbl_sale_pay_system";
$instance = BitrixMainApplication::getInstance();
$context = $instance->getContext();
$request = $context->getRequest();
 
$oSort = new CAdminSorting($sTableID, "ID", "asc");
$lAdmin = new CAdminUiList($sTableID, $oSort);
 
$listPersonType = array();
$personTypeQueryObject = CSalePersonType::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array());
while ($personType = $personTypeQueryObject->GetNext())
{
    $listPersonType[$personType["ID"]] = $personType["NAME"]." (".implode(", ", $personType["LIDS"]).")";
}
 
$filterFields = array(
    array(
        "id" => "NAME",
        "name" => GetMessage("SALE_NAME"),
        "filterable" => "%",
        "quickSearch" => "%"
    ),
    array(
        "id" => "ACTIVE",
        "name" => GetMessage("SALE_F_ACTIVE"),
        "type" => "list",
        "items" => array(
            "Y" => GetMessage("SALE_YES"),
            "N" => GetMessage("SALE_NO")
        ),
        "filterable" => "",
        "default" => true
    ),
    array(
        "id" => "PERSON_TYPE_ID",
        "name" => GetMessage("SALE_F_PERSON_TYPE"),
        "type" => "list",
        "items" => $listPersonType,
        "filterable" => "",
        "params" => array("multiple" => "Y"),
    )
);
 
$filter = array();
 
$lAdmin->AddFilter($filterFields, $filter);
 
$personTypeId = [];
if (!empty($filter["PERSON_TYPE_ID"]))
{
    $personTypeId = $filter["PERSON_TYPE_ID"];
    unset($filter["PERSON_TYPE_ID"]);
}
 
if (($ids = $lAdmin->GroupAction()) && $saleModulePermissions >= "W")
{
    if ($request->get('action_target')=='selected')
    {
        $ids = array();
        $dbRes = BitrixSaleInternalsPaySystemActionTable::getList(
            array(
                'select' => array('ID'),
                'filter' => $filter,
                'order' => array(ToUpper($by) => ToUpper($order))
            )
        );
 
        while ($arResult = $dbRes->fetch())
            $ids[] = $arResult['ID'];
    }
 
    foreach ($ids as $id)
    {
        if ((int)$id <= 0)
            continue;
 
        switch ($_REQUEST['action'])
        {
            case "delete":
                $dbRes = BitrixSaleInternalsPaymentTable::getList(array('filter' => array('PAY_SYSTEM_ID' => $id)));
                if ($dbRes->fetch())
                {
                    $lAdmin->AddGroupError(Loc::getMessage("SALE_DELETE_ERROR"), $id);
                    continue;    [B]Ошибка здесь[/B]
                }

Статусами заказа в «Битрикс» называют этапы, через которые заказ проходит во время обработки. Они помогают проинформировать клиентов и сотрудников интернет-магазина о том, в каком состоянии заказ находится в текущий момент. При необходимости можно создать неограниченное количество статусов заказа — это зависит от того, как именно организован процесс обработки. Например, заказы могут находиться в статусе «Отгружен», «Отложен», «В пути» и т.д.

Статусы позволяют охарактеризовать не только состояние заказа в целом, но и отдельно состояние отгрузки и доставки товаров из заказа. Поэтому статусы делятся на 2 типа: заказ и доставка.

Типы статусов заказа в Битрикс

Существуют особые статусы заказов и отгрузок заказов, удаление которых невозможно:

  1. N — начальный статус, который присваивается заказу при создании. По умолчанию статус называется «Принят».
  2. F — финальный статус, который присваивается заказу после выполнения, то есть оплаты и доставки. По умолчанию статус называется «Выполнен».
  3. DN — начальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Ожидает обработки».
  4. DF — финальный статус, который присваивается документу отгрузки товара. По умолчанию статус называется «Отгружен».

Настройка статусов

Чтобы настроить статусы, перейдите на страницу «Магазин», затем выберите раздел «Настройки», перейдите в «Статусы» и кликните на «Статусы заказа».

Форма редактирования статусов имеет вид:

Форма редактирования статусов заказа в Bitrix

«1С-Битрикс: Управление сайтом» предлагает стандартный набор этапов, который сформирован по умолчанию.

Рекомендуемые решения

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

У заполнения полей формы есть свои нюансы:

  1. Уникальный код статуса задается одной или двумя латинскими буквами.
  2. Выбрать нужный тип — «Заказ» или «Доставка» можно в поле «Тип статуса».
  3. Задать относительный вес статуса можно в поле «Сортировка». Таким образом вы определите положение конкретного статуса в списке других статусов.
  4. Чтобы отправить покупателю письмо о переводе заказа в определенный статус, воспользуйтесь опцией «Отправлять почтовое уведомление». Как сгенерировать письмо? Для этого существуют шаблоны. Чтобы создать или отредактировать шаблон, пройдите по ссылке «Почтовый шаблон статуса».
  5. Отдельно для каждого языка, определенного в системе, задаются Название и Описание.
  6. Чтобы группа пользователей могла попасть в секцию «Право на доступ», ее уровень в настройках модуля «Интернет-магазин» должен быть не ниже, чем «Обработка заказов». Определить уровень доступа к заказам для той или иной группы можно при помощи выпадающего списка. Что делать, если в списке нет какой-либо группы? Пройдите по ссылке «Группы пользователей» и назначьте этой группе в настройках модуля требуемое право доступа, которое должно быть не ниже «Обработки заказов». Назначив право доступа, вернитесь к настройке статуса. Теперь вы можете предоставить добавленной группе право доступа в рамках данного статуса.
  7. Добавлять статусы заказов можно через «Администрирование».

Чтобы добавить новый промежуточный статус «Подтверждение заказа», выберите «Добавить статус».

Как получить текущий статус заказа? Воспользуйтесь следующим методом — order->getField(‘STATUS_ID’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘STATUS_ID’); // N (Принят, ожидается оплата)

Как изменить статус? Для изменения статуса предназначен такой метод — CSaleOrder::StatusOrder().

order_id = 5;

CSaleOrder::StatusOrder(order_id, ‘N’); // Принят, ожидается оплата

CSaleOrder::StatusOrder(order_id, ‘F’); // Выполнен

Список статусов расположен на странице «Магазин» — «Настройки» — «Статусы».

Рекомендуемые решения

Чтобы заказ получил статус «Оплачен», воспользуйтесь методом CSaleOrder::PayOrder().

order_id = 5;

CSaleOrder::PayOrder(order_id, «Y»); // статус оплачен (Y/N)

Есть и другой метод — CSaleOrder::Update(), но предыдущий вариант предпочтительнее, поскольку в нем выполняются обработчики событий.

Как присвоить заказу статус «Отменен»? Для отмены воспользуйтесь методом order->getField(‘CANCELED’).

order_id = 5;

order = BitrixSaleOrder::load(order_id);

order->getField(‘CANCELED’); // заказ отменён (Y / N)

order->getField(‘EMP_CANCELED_ID’); // ИД пользователя, отменивший заказ

order->getField(‘DATE_CANCELED’)->toString(); // дата отмены (05.01.2020 21:11:10)

order->getField(‘REASON_CANCELED’); // причина отмены

Теперь вы знаете, как работать со статусами заказов в интернет-магазине. Удачи вашему бизнесу!

В обновлённом ядре Bitrix D7 функционал работы с заказами был существенно изменён. Немного ранее мы рассматривали работу со свойствами заказа посредством использования возможностей обновленного ядра D7. В данном посту мы поговорим про работу с функционалом оплаты заказов через API.

Об этом уже говорилось на нашем сайте, и не будет лишним повторить, что в ядре D7 реализована концепция ORM, свойственная для объектно-ориентированных языков программирования. Эта концепция включает в себя такое понятие как «коллекция», которая представляет из себя «умный» массив. Работа с ним оптимизирует групповые операции с объектами одного типа. Так к примеру, для реализации отдельного функционала сайта реализованы отведённые коллекции, с которыми мы можем работать по правилам ООП.

В данном посту вы рассмотрим возможности использования коллекции оплаты заказа SalePaymentCollection. Давайте создадим объект заказа, с которым мы и будем далее работать.

// используем пространство имён интернет-магазина
use BitrixSale;

// int $orderId ID заказа
$order = SaleOrder::load($orderId);

// или так

// mixed $orderNumber номер заказа
$order = SaleOrder::loadByAccountNumber($orderNumber);

В переменную $order был помещён объект существующего заказа. Для работы с данными оплаты заказа, обращаемся к коллекции оплаты заказа SalePaymentCollection.

$paymentCollection = $order->getPaymentCollection();

После создания объекта коллекции оплаты, мы можем получать информацию об оплате текущего заказа, а также его параметры.

$paymentCollection->isPaid(); // статус оплаты заказа, true/false
$paymentCollection->hasPaidPayment(); // есть ли хотя бы одна оплата, true/false
$paymentCollection->getPaidSum(); // общая сумма оплаты
$paymentCollection->isExistsInnerPayment(); // оплачен с внутреннего счёта true/false

Возможности системы позволяют содержать множество записей об оплатах. Это означает что с этими записями мы можем работать так же и в цикле. Каждая итерация цикла будет передавать объект оплаты SalePayment, который даёт возможность работы с данными оплаты.

foreach ($paymentCollection as $payment) {
    $sum = $payment->getSum(); // сумма к оплате
    $isPaid = $payment->isPaid(); // статус оплаты true/false
    $isReturned = $payment->isReturn(); // возврат, true/false

    $ps = $payment->getPaySystem(); // платежная система (объект SalePaySystemService)
    $psID = $payment->getPaymentSystemId(); // ID платежной системы
    $psName = $payment->getPaymentSystemName(); // наименование платежной системы
    $isInnerPs = $payment->isInner(); // оплата с внутреннего счёта, true/false
}

Как получать данные оплаты мы рассмотрели, теперь самое время попробовать изменить параметры. Для этого мы попробует установить флаг оплаты, и возврата с помощью методов setPaid() и setReturn().

$onePayment = $paymentCollection[0];
$onePayment->setPaid("N"); // отменяем оплату
$onePayment->setPaid("Y"); // выставляем оплату
$onePayment->setReturn("Y"); // возврат средств

// сохранение изменений
$order->save();

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

$service = SalePaySystemManager::getObjectById($onePayment->getPaymentSystemId());
$context = BitrixMainApplication::getInstance()->getContext();
$service->initiatePay($onePayment, $context->getRequest());

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

Настройка обмена выполнена правильно, но обмен все равно проходит некорректно? Рассмотрим типичные проблемы, возникающие в процессе интеграции сайта с 1С, и способы их решения.

Обмен заказами завершен с ошибками

Проблема. При попытке обмена заказов в 1С выходит сообщение:

Выгружено товаров: 1
Выгружено картинок: 1
Выгрузка товаров успешно завершена
Не установлен реквизит «ГруппаДоступаККонтрагенту». Элемент не записан!
Не установлен реквизит «РегионДоставки». Элемент не записан!
Не установлен реквизит «Основная форма оплаты». Элемент не записан!
{Обработка.ОбменССайтом(3468)}: Ошибка при вызове метода контекста (Записать): Операция не выполнена!
Произошла ошибка: . По причине:

Не удалось найти/создать контрагента.
Не удалось обработать документы, загруженные с сервера.
Обмен не выполнен.
Не выгружен ни один заказ.
Обмен заказами завершен с ошибками!!!

Решение. Скорее всего, в используемой конфигурации предусмотрена обязательность заполнения указанных выше реквизитов для элемента справочника Контрагенты.

Не меняется статус заказа при выгрузке из 1С

Проблема. Не меняется статус заказа при выгрузке из 1С

В соответствие с логикой синхронизации 1С и «1С-Битрикс: Управление сайтом», статус заказа меняется, если из 1С передались дата оплаты либо дата отгрузки товара. Чтобы эти даты попали в XML-файл, который формируется 1С и передаётся на сайт, нужно сформировать и провести нужные документы.

  • В 1С:УТ зарегистрировать оплату заказа можно путем ввода на основании заказа документов оплаты, таких как Платежное поручение входящее и Приходный кассовый ордер.
  • Отгрузка, как правило, регистрируется вводом на основании заказа документа Реализация товаров и услуг.
  • Если в регистре Расчеты с контрагентами остаток по заказу <= 0, заказ считается оплаченным.
  • Если в регистре Заказы покупателей остаток по заказу <= 0, заказ считается отгруженным. У конфигурации УПП принцип тот же.

Статусы, в которые будут переводиться заказы при получении дат оплаты и отгрузки, устанавливаются в настройках модуля интернет-магазина: параметры При получении оплаты переводить заказ в статус и При получении разрешения доставки переводить заказ в статус соответственно.

Изменения товаров не зарегистрированы. Выгрузка товаров не произведена

Проблема. 1С заполнена и настроена на обмен с «1С-Битрикс: Управление сайтом», который тоже настроен на интеграцию с 1С. При нажатии на кнопку Выполнить обмен сразу появляется сообщение в 1С: Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.

Решение. Возможные ошибки:

  • Обычно появляется из-за некорректной настройки выгрузки товаров на вкладке Выгрузка товаров. Стоит обратить внимание на то, что настраивается именно фильтр(!), а не выбираются поля для выгрузки. Если отмечается поле для фильтра, то значение этого поля в фильтре должно быть задано.
  • В 1С: Управление торговлей обратите внимание в справочнике Номенклатура на реквизит вид номенклатуры. Должен быть обязательно признак товар (наименование товар и тип номенклатуры товар).
  • Если обмен осуществляется в режиме выгрузки изменений, а этих изменений с момента последнего обмена не зафиксировано, то возникает указанная ошибка. Стоит обратить внимание на следующие моменты:
    • Если осуществляется полная выгрузка каталога на сайт, то настройка фильтра необязательна (нужно снять выделение со всех отмеченных полей на вкладке Выгрузка товаров).
    • Изменения товара никаким образом не относятся к сайту, т.е. удаление товаров на сайте или их редактирование не фиксируется в 1С. При обмене выгружаются изменения товаров, произведённые именно в 1С с момента последней выгрузки.

Изменения на сайте не приходят в 1С

Проблема. 1С заполнена и настроена на обмен по расписанию с «1С-Битрикс: Управление сайтом». Развернута копия базы 1С. Изменения в «1С-Битрикс: Управление сайтом» не приходят в 1С, т.е. якобы на сайте нет изменений.

Решение. На самом деле, изменения есть и они приходят в копию базы 1С. Чтобы изменения отслеживались в оригинале базы 1С, просто поменяйте пароль у пользователя «1С-Битрикс: Управление сайтом».

Как выгрузить каталоги из 1С в разные типы инфоблоков?

Проблема. Как выгрузить каталоги из 1С в разные типы инфоблоков?

Решение. Чтобы осуществить выгрузку в разные типы инфоблока, следует поместить несколько компонентов catalog.import.1c на разные страницы.

Например, имеем две страницы: http://mysite.ru/1c_import_1.php и http://mysite.ru/1c_import_2.php. На обеих страницах настраиваем компонент catalog.import.1c — указываем в параметрах разные типы инфоблоков и устанавливаем флажок у опции Импортировать с учетом типа инфоблока.

Затем при настройке импорта в 1С, для выгрузки в нужный тип инфоблока указываем разные файлы: http://mysite.ru/1c_import_1.php либо http://mysite.ru/1c_import_2.php.

Пример файла:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("import1");
?>
<?$APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array(
"IBLOCK_TYPE" => "books",
"SITE_LIST" => array(),
"INTERVAL" => "30",
"GROUP_PERMISSIONS" => array(0 => "1"),
"USE_OFFERS" => "N",
"USE_IBLOCK_TYPE_ID" => "Y",
"SKIP_ROOT_SECTION" => "N",
"ELEMENT_ACTION" => "D",
"SECTION_ACTION" => "D",
"FILE_SIZE_LIMIT" => "204800",
"USE_CRC" => "Y",
"USE_ZIP" => "Y",
"USE_IBLOCK_PICTURE_SETTINGS" => "N",
"GENERATE_PREVIEW" => "Y",
"PREVIEW_WIDTH" => "100",
"PREVIEW_HEIGHT" => "100",
"DETAIL_RESIZE" => "Y",
"DETAIL_WIDTH" => "300",
"DETAIL_HEIGHT" => "300",
"TRANSLIT_ON_ADD" => "Y",
"TRANSLIT_ON_UPDATE" => "Y",
"TRANSLIT_MAX_LEN" => "100",
"TRANSLIT_CHANGE_CASE" => "L",
"TRANSLIT_REPLACE_SPACE" => "_",
"TRANSLIT_REPLACE_OTHER" => "_",
"TRANSLIT_DELETE_REPEAT_REPLACE" => "Y"
),
false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Не удалось найти вид номенклатуры

Проблема. Не удалось найти вид номенклатуры

В процессе обмена 1С с сайтов возникает ошибка: Не удалось найти вид номенклатуры: Услуга Не удалось найти вид номенклатуры: Товар Не удалось найти/создать номенклатуру. Не удалось обработать документы, загруженные с сервера.

Решение. Ошибка возникает, если в 1С нет типов номенклатуры Услуга и Товар. Эти типы номенклатуры критичны для процесса обмена данными с сайтом. Следует создать в 1С эти типы номенклатуры и только поле этого осуществлять обмен.

Поле объекта не обнаружено

Проблема. В процессе обмена возникает ошибка Поле объекта не обнаружено.

В процессе обмена заказами возникает ошибка: {Обработка.ОбменССайтом(3271)}: Поле объекта не обнаружено (Наименование) >> ОтобразитьСостояние(«Идентификация контрагента: » + СтрокаДД.СтруктураДанныхКонтрагента.Наименование);

Решение. Проверьте настройки интеграции с 1С, закладка Профили обмена: установлены ли соответствия для полей заказа. Обратите внимание на поля Полное Наименование и Наименование. Эти поля критичны для 1С.

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.

  • Возникает ошибка следующего вида:

Выгружено товаров: 679 Выгружено картинок: 469 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен. Ответ сервера. Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401 bytes) in /var/www/bitrix/modules/iblock/classes/general/cml2.php on line 483 Выгрузка товаров завершена с ошибками!

Решение. Ошибка скорее всего связана с нехваткой ресурсов на масштабирование передаваемых на сервер изображений. Выходом из данной ситуации может служить отключение опции Выгружать картинки (вкладка Выгрузка товаров в настройке обмена в 1С).

Также можно увеличить размер выделяемой памяти в настройках PHP (параметр memory_limit), для этого следует обратиться к хостинг-провайдеру.

  • Возникает ошибка следующего вида:

Выгружено товаров: 46 Выгружено картинок: 0 Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: DB query error. Please try later. Выгрузка товаров завершена с ошибками!

Решение. Ошибка может возникать в случае некорректной передачи файла на сервер. В процессе отправки файл может «обрезаться» и терять свою целостность, в итоге файл на сервер передаётся некорректным по содержанию.

Причиной может служить прокси-сервер, через который осуществляется обмен. Попробуйте осуществить выгрузку не через прокси-сервер. Также попробуйте отключить опцию Использовать сжатие zip, если доступно в настройках интеграции с 1С — возможно, на сервере не поддерживается ZIP-сжатие. Проверьте настройки интеграции с 1С.

Произошла ошибка на стороне сервера. Файл не отправлен

В процессе обмена возникает такого вида ошибка:

Выгружено товаров: 3 Выгружено картинок: 0 Выгрузка товаров успешно завершена Выгружено заказов: 1 Произошла ошибка на стороне сервера. Файл не отправлен (C:Documents and SettingsUserLocal SettingsTempv8_5075_63.zip). Обмен не выполнен Ответ сервера: Файл для импорта пуст. Обмен заказами завершён с ошибками!

Решение. Причины возникновения ошибки могут быть следующие:

  • На компьютере, где установлена 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.
  • Некорректно работает функции расширения ZIP, вследствие чего из архива не распаковываются файлы. Для решения возникшей проблемы рекомендуется:
    • Установить последние стабильные версии обновлений модуля интернет-магазина.
    • На время обмена отключить на локальной машине все блокирующее ПО (антивирус, файрволлы и т.д.)
    • Отключить ZIP-сжатие в настройках интеграции с 1С.

Не работает авторизация при обмене данными с 1С

Решение. Часто проблема возникает в результате работы PHP в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в PHP. Можно это проверить, посмотрев phpinfo() в разделе: Server API: CGI. Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:

RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

  • Закомментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:

#<ifmodule mod_rewrite.c="">
# RewriteEngine Off
#</ifmodule>

Примечание: данный файл может отсутствовать, поскольку он создается вручную.

  • В файл bitrix/php_interface/dbconn.php добавьте строки:

$remote_user = $_SERVER["REMOTE_USER"]
? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
$strTmp = base64_decode(substr($remote_user,6));
if ($strTmp)
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);

Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом

Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует обратиться к хостинг-провайдеру с этой проблемой.

При выгрузке каталога из 1С не ставит галочку «уменьшать количество при заказе»

Проблема. При выгрузке каталога из 1C не ставит галочку уменьшать количество при заказе

Решение. Чтобы исправить это, необходимо в файле init.php добавить код, который будет срабатывать при добавлении продукта (через событие OnProductAdd):

<?
AddEventHandler("sale", "OnProductAdd", "OnProductAdd");

function OnProductAdd($ID,$Fields)
{
$res=Array("QUANTITY_TRACE"=>'Y);
CCatalogProduct::Update($ID,$res);

}
?>

Возможные причины медленного импорта из 1С

Проблема. Медленный импорт из 1C.

Возможные причины:

Включённая индексация. Для ускорения можете в настройках инфоблока выключить индексацию элементов и разделов, а также свойств.

Проактивная защита, которая меняет идентификатор сессии каждую минуту. В случае интеграции с 1C приложение 1C не подхватывает новый идентификатор и пытается получить переменные сессии со старым ID сессии. В сессии хранится шаг импорта, если не удаётся в сессии найти этот шаг, то считается, что шаг равен 1, т.е. импорт начинается сначала. Попробуйте отключить хранение сессий в базе и смену идентификатора сессии.

Если структура каталога в 1С отличается от каталога на сайте?

Задача: Структура каталога на сайте должна отличаться от структуры в 1C.

Варианты решения:

Вариант 1. Делается отдельный классификатор — инфоблок и разделы. У разделов создаётся свойство привязка к разделам, и нужные «человеческие» разделы привязываются к разделам инфоблока с классификатором, который пришел из 1C. Можно сделать множественную привязку — будет проще свести в один раздел из кучи непонятных в 1C.

Вариант 2. В 1C можно создать такой объект как прайс-лист и попробовать настроить обмен с сайтом, уже используя его как прокси. Т.е. если в справочнике Номенклатура бардак и вообще куча всякого, что на сайте не должно показываться, то создаётся прайс-лист, и уже в нём создаются нужные секции. И специально обученный сотрудник добавляет в узлы прайс-листа ссылки на позиции из справочника номенклатура.

Тогда на сайт будет уходить CML, структура которого берётся из прайс-листа, а не из номенклатурного справочника.

Ошибка импорта метаданных

Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:

Выгружено товаров: 1 832
Выгружено картинок: 0
Выгружено предложений: 0
Произошла ошибка на стороне сервера.
Обмен не выполнен
Ответ сервера:
Ошибка импорта метаданных.

Выгрузка товаров завершена с ошибками!!!

Причина. Ошибка может возникать, если названия свойств начинаются с цифр. Первый знак в названии должен быть буквой.

Проблема. На этапе выгрузки свойств после построения таблиц выводится сообщение об ошибке:

Ошибка импорта метаданных. В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.

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

Выгрузка картинок

Проблема. Неполная выгрузка картинок.

Картинки выгружаются из 1С, только при первой полной выгрузке каталога товаров, не важно выгрузка была на в папку на локальном компьютере или на сайт. В последствии картинки выгружаются только новые и измененные.

Если изменены настройки в 1С и картинки не выгрузились в первый раз на сайт, то в настройках модуля обмена выполните обмен через кнопку принудительной полной выгрузке картинок.

10.11.2020
08:34
10.11.2020 08:34:14

У заказчика есть постоплата после доставки, а есть предоплата до поставки
Поэтому в зависимости от текущего статуса надо переводить в в 1 из 2х статусов:

  • Если предоплата, то в статус «Оплачен, формируется к отправке»
  • Если постоплата, то в статус «Выполнено»

Битрикс стандартными настройками умеет переводить только в 1 статус.
1. Отключить все изменения Битриксом:

  • В роботах-триггерах (если CRM)
  • В настройках модуля платежной системы «Статус заказа после оплаты»
  • В настройках модуля «интернет-магазин» вкладка «автоматизация процессов»  поле «При получении полной оплаты переводить заказ в статус»

2. добавляем в /bitrix/php_interface/init.php

AddEventHandler("sale", "OnSalePayOrder", "MyOnSalePayOrder");
function MyOnSalePayOrder($id,$val){   
    if($val=="Y" && CModule::IncludeModule('sale') && ($arOrder = CSaleOrder::GetByID($id))) { 
        if(in_array($arOrder['STATUS_ID'], array("N","NP"))){//если на стадии "В обработке", "Ожидает оплаты""            
            CSaleOrder::StatusOrder($id, "P"); //переводим в статус "оплачен, формируется к отправке"
        }
        elseif(in_array($arOrder['STATUS_ID'], array("S","Z"))){//если на стадии "Отправлен", "Отправлен, ожидание оплаты"            
            CSaleOrder::StatusOrder($id, "F"); //переводим в статус "выполнен"
        }
    }
}

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка удаления файлов не удалось удалить все временные файлы обязательно удалите их вручную битрикс
  • Ошибка триколор нет аудио что делать