Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
_marisha
7 / 7 / 2
Регистрация: 29.05.2011
Сообщений: 410
1

Проверка на существование заказа

03.07.2018, 08:41. Просмотров 869. Ответов 4
Метки нет (Все метки)

Доброго времени суток!
Необходимо произвести проверку на существование заказа.
Пример:
1) оформляем заказ
2) производим проверку, что ранее такого заказа не было
3) производим определенные действия с созданным заказом (т.е не затрагивая уже созданные заказы до этого)

Подскажите, пожалуйста, каким образом возможно произвести проверку на существование заказа. Спасибо.

Добавлено через 23 часа 52 минуты
ID последнего заказа:
PHP
1
2
3
4
5
6
 $db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "desc"), array(), false, false, array('ID'));
                while ($ar_sales = $db_sales->Fetch())
                {
                    $arID[] = $ar_sales['ID'];
                }
                $LastOrderID = $arID[0]; //ID последнего заказа
Каким образом возможно узнать ID заказа, который будет создан?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2018, 08:41
Ответы с готовыми решениями:

Проверка на существование
Есть один txt-файл. В нем построчно написаны файлы и их вес в байтах. Пример: files.rar 12345678...

Проверка на существование
есть таблица Client со столбцами (Name,LastName,MobilePhoneNumber,Email) и нужно проверить на...

Проверка файла на существование
Добрый день! Подскажите пожалуйста как проверить файл на существование по пути, прописанному в...

Проверка переменной на существование
Как в python'е проверить переменную на существование? Мне нужно записать вот такой код на python'е:...

Проверка формы на существование
подскажите пожалуйста. нужно из одной формы проверить существует ли (загружена ли) другая форма.

4
voral
926 / 622 / 136
Регистрация: 16.03.2008
Сообщений: 2,947
03.07.2018, 15:32 2
Новый будет последний + 1....
Зачем ИД знать?

Используйте события создания заказа. Если в случае нахождения похожего, новый не должен создаваться, то события "до", если заказ должен быть создан все равно, то до или после (тут уже по конкретной задаче)
0
_marisha
7 / 7 / 2
Регистрация: 29.05.2011
Сообщений: 410
19.07.2018, 13:24  [ТС] 3
voral, скажите, а возможно сделать так, чтобы, если заказ уже есть, тогда не выполнять событие?
Пример:
1) есть событие OnSaleOrderBeforeSaved, в котором происходит пересчет заказа
2) но если созданный заказ пересохранить в админке, тогда заказ ещё раз пересчитывается

Пример события OnSaleOrderBeforeSaved:
PHP
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
use Bitrix\Main, Bitrix\Sale;
Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderBeforeSaved',
    'myFunction'
);
function myFunction(Main\Event $event)
{
    if ($_COOKIE['sbor'] == 1)
    {
        $order = $event->getParameter("ENTITY");
        $for_collection = $order->getPrice() - $order->getDeliveryPrice(); //сумма заказа - стоимость доставки = стоимость сборки 36 004
        $percent_collection = round(($for_collection * 5)/100); // процент от "суммы заказа - стоимость доставки"
        $percent_collection_ceil = ceil($percent_collection/10)*10;//округление сборки до десятков 1 800
        if ($percent_collection_ceil<300)
        {
           $percent_collection_ceil = 300;
        }
 
        $basket = $order->getBasket();
        foreach($basket as $basketItem)
        {
            $item = $basketItem->getFields();
            $arItem = $item->getValues();
            $arItem['PRICE_DELIVERY_DISCOUNTED'] = $order->getDeliveryPrice() + $percent_collection_ceil;
        }
 
        $shipcol = $order->getShipmentCollection();
        foreach ($shipcol as $shipment)
        {
            if($shipment->isSystem())
            {
                continue;
            }
            $shipment->setFields(array(
                                'BASE_PRICE_DELIVERY' => $arItem['PRICE_DELIVERY_DISCOUNTED'],
                                'PRICE_DELIVERY' => $arItem['PRICE_DELIVERY_DISCOUNTED'],
                                'CUSTOM_PRICE_DELIVERY'=>'Y',
                ));
 
        }
    }
}
0
voral
926 / 622 / 136
Регистрация: 16.03.2008
Сообщений: 2,947
19.07.2018, 14:39 4
Лучший ответ Сообщение было отмечено _marisha как решение

Решение

сейчас нет времени проверить, но, если не ошибаюсь, для существующего заказа можно получить его Id для еще не созданого будет путсо.

PHP
1
$order->getId();
1
_marisha
7 / 7 / 2
Регистрация: 29.05.2011
Сообщений: 410
20.07.2018, 07:15  [ТС] 5
voral, спасибо )
Сделано так:
PHP
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
use Bitrix\Main, Bitrix\Sale;
Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderBeforeSaved',
    'myFunction'
);
function myFunction(Main\Event $event)
{
    $order = $event->getParameter("ENTITY");
    $OrderID = $order->getId();
    if ($_COOKIE['sbor'] == 1 && $OrderID == 0)
    {
        $for_collection = $order->getPrice() - $order->getDeliveryPrice(); //сумма заказа - стоимость доставки = стоимость сборки 36 004
        $percent_collection = round(($for_collection * 5)/100); // процент от "суммы заказа - стоимость доставки"
        $percent_collection_ceil = ceil($percent_collection/10)*10;//округление сборки до десятков 1 800
        if ($percent_collection_ceil<300)
        {
           $percent_collection_ceil = 300;
        }
 
        $basket = $order->getBasket();
        foreach($basket as $basketItem)
        {
            $item = $basketItem->getFields();
            $arItem = $item->getValues();
            $arItem['PRICE_DELIVERY_DISCOUNTED'] = $order->getDeliveryPrice() + $percent_collection_ceil;
        }
 
        $shipcol = $order->getShipmentCollection();
        foreach ($shipcol as $shipment)
        {
            if($shipment->isSystem())
            {
                continue;
            }
            $shipment->setFields(array(
                                'BASE_PRICE_DELIVERY' => $arItem['PRICE_DELIVERY_DISCOUNTED'],
                                'PRICE_DELIVERY' => $arItem['PRICE_DELIVERY_DISCOUNTED'],
                                'CUSTOM_PRICE_DELIVERY'=>'Y',
                ));
        }
    }
}
В данном случае получается, что при создании заказа $OrderID = 0 (выявлено с помощью AddMessage2Log('$order'.print_r($OrderID, true),'')
А после последующего сохранения заказа (вручную например сохранить заказ или произвести печать чека) в $OrderID уже есть номер заказа.
В общем, вроде работает данный вариант. Спасибо большое за подсказку
0
20.07.2018, 07:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2018, 07:15

Проверка объекта на существование
Создаю контейнер List&lt;string&gt; L = new List&lt;string&gt;(); Как сделать, что если контейнер создан...

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

проверка на существование файла
Вот эта строка не работает, файл существует, а она не пашет. if FileExists('deductda.txt') = true...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru