создайте представление списка коммерческих заказов с помощью способа оплаты


Я хотел бы создать простой список заказов с выбранным способом оплаты.

Проблема: Если клиент проходит процесс оформления заказа сразу (без возврата после проверки заказа и изменения способа оплаты), для заказа будет только один способ оплаты, и это нормально.

Однако, если клиент возвращается со страницы оформления заказа и меняет способ оплаты, а затем завершает оформление заказа - к заказу прилагаются 2 способа оплаты.

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

- Это что угодно неправильно с представлением или лучше удалить неиспользованные платежные транзакции?

Вопрос: каков рекомендуемый способ сохранения только одного (последнего) способа оплаты.

Author: loparr, 2016-10-21

2 answers

В соответствии с "... что приводит к дубликатам..." в вашем вопросе: вы можете предотвратить это, используя модуль Представления, отличные от . Со страницы проекта:

Связи или другие объединения в представлениях часто создают "повторяющиеся" результаты. Например, узел с полем, имеющим несколько значений, может отображаться в представлении один раз для каждого значения в поле с несколькими значениями. Это расстраивает, и параметр "ОТДЕЛЬНЫЙ" SQL-запрос в пользовательском интерфейсе представлений не на самом деле решите проблему, потому что строка результатов технически отличается. Этот модуль призван предоставить простой графический метод для удаления или агрегирования этих "дублирующихся" строк.

Рассмотрим такой пример (с включенными дубликатами):

order id1 with payment id1
order id2 with payment id2
order id2 with payment id3
order id3 with payment id4

В этом примере, чтобы показать только последний способ оплаты, отсортируйте по payment id (но по убыванию !), и фильтр order_id повторится. Так что будет показана только последняя строка для каждого order_id.

Новые представления приводят к эти изменения, примененные в приведенном выше примере, теперь должны выглядеть так (без дубликатов, связанных с payment id2):

order id1 with payment id1
order id2 with payment id3
order id3 with payment id4
 2
Author: Pierre.Vriens, 2016-12-01 08:18:04

Вам необходимо использовать Связь: Коммерческий заказ: Платежная транзакция в разделе отношения и потребовать эту связь.

Затем добавьте фильтр (Транзакция) Коммерческая платежная транзакция: Статус (Сбой) или ее обратная логика - "УСПЕХ". Не забудьте добавить отношение к транзакции для фильтра

Commerce Payment Transaction filter

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

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

 0
Author: Kojo, 2016-11-30 18:12:50