Різні способи оплати для різних видів продукції


11

Чи існують різні способи оплати для різних видів продукції?

Це мій сценарій, і що я до цього часу з’ясував:

У мене на сайті Drupal Commerce два типи товарів для продажу проїзних автобусів. Один із типів - просто забронювати автобусний пропуск, де ви вибираєте дату та час (спеціальні позиції) для квитків на автобуси. Інший тип призначений для фактичних платежів, де ви можете вибрати пропуск автобуса, додати додаткові тури (теж за користувацькими позиціями) та заплатити за допомогою Paypal.

Я використовую індивідуальну версію прикладу модуля оплати для типу оплати бронювання, а модуль Paypal Drupal Commerce використовую для фактичних платежів.

Мені потрібно мати доступний для одного виду продукт спеціальний спосіб оплати бронювання та метод оплати через інший тип товару.

Я спробував додати умову для типу продукту і не зміг цього зробити. Ми можемо додати умову для певного товару, але не для типу продукту. Це було б ідеально: https://skitch.com/ipwa/eywxa/add-a-new-condition-chasquibus

Наразі я робив клонування правила Paypal для кожного виду платіжного продукту та вибрав SKU цих продуктів як умову. Це не ідеально, оскільки якщо у користувача є більше одного платіжного продукту, ми отримуємо дублікат способу оплати Paypal, доступний для кожного додаткового платіжного продукту під замовлення. Я думаю, це має сенс, оскільки у нас є правило способу оплати для кожного.

У моєму рішенні може бути умова щодо типу продукту за правилом способу оплати або мати змогу встановити чотири SKU-файли платіжних продуктів в умовах "Замовлення містить конкретний товар".

Відповіді:


10

Продукт typeє властивістю commerce_productсуб'єкта господарювання, тому ви можете використовувати вбудовану умову "Порівняння даних", щоб перевірити його.

Просто додайте нову умову типу "Порівняння даних" та зробіть селектор даних таким чином:

Знімок екрана 1

Якщо ви продовжите, ви отримаєте такий екран:

Знімок екрана 2

Як ви бачите, ви отримуєте приємний випадаючий список типів товарів на вибір. Я щойно це перевірив, і це спрацює частування.

Якщо це не працює з будь-якої причини, реалізувати умови власних правил у користувальницькому модулі досить просто:

function MYMODULE_rules_condition_info() {
  return array(
    'commerce_product_is_type' => array(
      'label' => t('Product is a certain type'), 
      'parameter' => array(
        'product' => array(
          'label' => t('Product'),
          'type' => 'commerce_product',
        ),
        'type' => array(
          'label' => t('Product Type (Machine Name)'),
          'type' => 'text'
        )
      ), 
      'group' => t('Commerce Product'),
      'callbacks' => array(
        'execute' => 'MYMODULE_commerce_product_is_type',
      )
    ),
  );
}


function MYMODULE_commerce_product_is_type($product, $type) {
  return $product->type == $type;
}

Нічого, спасибі, зараз, здається, це саме шлях. Хоча відповідь не відповідає точно на питання (мені може знадобитися подати проблему для Commerce, щоб забезпечити умову правила типу продукту), вона вирішує мою проблему. Я залишу щедрість відкритою, щоб більше людей відповідали, але, здається, поки що ви отримаєте щедрість. Дякую за скріншоти btw, дуже допомагає.
ipwa

@ipwa Виявляється, це було не надто хитро, я оновив відповідь
Clive

Я б хотів, щоб ви не видалили попередню відповідь і додали цю як іншу відповідь. Коли я намагаюся використовувати commerce-product: type як селектор даних для умови порівняння даних, я отримую цю помилку: "Селектор даних commerce-product: тип для даних параметрів недійсний."
ipwa

@ipwa Який ти маєш на увазі? Той, що має код або найперший? Я повернув код у відповідь на випадок, якщо ви мали на увазі саме цей
Клайв

Я мав на увазі вашу відповідь про використання продукту SKUS з OR, що мені дуже допомогло зрозуміти АБО та як ним користуватися. В даний час використовуючи це, я спробую користувальницький модуль для реалізації моєї власної умови. Спасибі дізналися багато про правила з вашими відповідями.
ipwa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.