Воеводский Михаил

Воеводский Михаил

Был в сети 30 марта 2026, 14:44
Заказы не принимаю
Один из наиболее простых способов точно не порушить связи — сделать консольный скрипт удаления из корзины, используя $modx->getIterator().

Набросок кода для примера:

$resources = $modx->getIterator('modResource', array('deleted' => 1));
foreach($resources as $res) {
	$res->remove();
}
Данное решение является лишь направлением для мысли и, естественно, легко может конфликтовать с любыми похожими алгоритмами. В качестве решения попробуйте изменит приоритеты плагинов. Если не поможет, придется самостоятельно вникать в суть конфликта.
На одном из проектов использую digital-direct.ru. API не простое, а совсем примитивное — один GET запрос с необходимыми параметрами. При этом, насколько помню, есть возможность и статусы проверять, и многие другие вещи выполнять.
Так именно подобное часто и происходит — под определенную задачу создается базовая функциональность, а для публичного компонента остается только какие-то красивости (в тч технические) реализовать.

Да, третий источник уже заметил )
От 300 000 руб. :)
Все просто: если даже при беглом простом описании такие нюансы и настройки требуются, то при детальном обсуждении выявится огромное количество разнообразных условий. Соответственно, реализация всего этого объема будет не быстрой. А если еще добавить необходимость вывода (не приема!) денег в автоматическом режиме, так и вовсе получается очень большой объем работы.
Как я понимаю, речь о другой ситуации: компонент куплен на клиентский ключ, но ни разу не скачан. Тем не менее, этот ключ использовать на другом сайте нельзя, например, из-за других купленных дополнений. Соответственно, вопрос заключался в том, можно ли эту неиспользованную покупку перекинуть на другой ключ.
2) Это ошибка MS2 при сохранении свойств доставки. Когда-то столкнулся, но PR не подготовил, причин уже не помню. Надеюсь, Василий добавит исправление в MS2.

В файлах /core/components/minishop2/processors/mgr/settings/delivery/create.class.php и /core/components/minishop2/processors/mgr/settings/delivery/update.class.php блок
foreach ($prices as $field) {
            if ($tmp = $this->getProperty($field)) {
                $tmp = preg_replace(array('#[^0-9%\-,\.]#', '#,#'), array('', '.'), $tmp);
                if (strpos($tmp, '%') !== false) {
                    $tmp = str_replace('%', '', $tmp) . '%';
                }
                if (strpos($tmp, '-') !== false) {
                    $tmp = str_replace('-', '', $tmp) * -1;
                }
                if (empty($tmp)) {
                    $tmp = 0;
                }
                $this->setProperty($field, $tmp);
            }
        }
необходимо заменить на следующий:
foreach ($prices as $field) {
            if ($tmp = $this->getProperty($field)) {
                $isPercent = false;
                $tmp = preg_replace(array('#[^0-9%\-,\.]#', '#,#'), array('', '.'), $tmp);
                if (strpos($tmp, '%') !== false) {
                    $tmp = str_replace('%', '', $tmp) . '%';
                    $isPercent = true;
                }
                if (strpos($tmp, '-') !== false) {
                    $tmp = str_replace('-', '', $tmp) * -1;
                    if ($isPercent) {
                        $tmp .= '%';
                    }
                }
                if (empty($tmp)) {
                    $tmp = 0;
                }
                $this->setProperty($field, $tmp);
            }
        }
После этого минусовой процент начнет правильно сохраняться, а обработка такого значения в остальных местах происходит корректно.
В правилах указано «До получения». Все загрузки по ключу фиксируются. Таким образом, если покупка совершена, но пакет ни разу не скачан (фактически, у покупателя его нет и не было), то ничего плохого в возврате нет. Но если уже есть хотя бы одно скачивание, то возврат невозможен. И это правильно.