Farklı ürün türleri için farklı ödeme yöntemleri


11

Farklı ürün türleri için farklı ödeme yöntemlerine sahip olmanın bir yolu var mı?

Bu benim senaryom ve şimdiye kadar anladım:

Drupal Ticaret sitemde otobüs seyahat kartı satmak için iki ürün tipim var. Tiplerden biri, otobüs biletleriniz için tarih ve saatleri (özel satır öğeleri) seçtiğiniz otobüs geçişini ayırtmaktır. Diğer tür gerçek ödemeler içindir, burada bir otobüs geçişi seçebilir, ek turlar ekleyebilir (özel satır öğeleriyle birlikte) ve ardından Paypal ile ödeme yapabilirsiniz.

Rezervasyon ödeme türü için örnek ödeme modülünün özelleştirilmiş bir sürümünü ve gerçek ödemeler için Drupal Commerce Paypal modülünü kullanıyorum.

İhtiyacım olan şey, bir ürün türü için özel rezervasyon ödeme yöntemini ve diğer ürün türü için paypal ödeme yöntemini kullanmaktır.

Ürün türü için bir koşul eklemeye çalıştım ve bunu yapamadım. Belirli bir ürün için koşul ekleyebiliriz, ancak ürün türü için değil. Bu ideal olurdu: https://skitch.com/ipwa/eywxa/add-a-new-condition-chasquibus

Şimdilik yaptığım, her ödeme ürünü türü için Paypal kuralını klonlamak ve bu koşulları SKU olarak seçmektir. Bu ideal değildir, çünkü bir kullanıcının birden fazla ödeme ürünü varsa, siparişteki her ek ödeme ürünü için yinelenen bir Paypal ödeme yöntemi alırız. Her biri için bir ödeme yöntemi kuralımız olduğundan, bunun mantıklı olduğunu düşünüyorum.

Çözümüm, ödeme yöntemi kuralı üzerinde ürün türü için bir koşula sahip olabilir veya 'Sipariş belirli bir ürünü içerir' koşulunda dört ödeme ürünü SKU'suna sahip olabilir.

Yanıtlar:


10

Ürün type, commerce_productvarlığın bir özelliğidir , bu nedenle test etmek için yerleşik "Veri karşılaştırma" koşulunu kullanabilirsiniz.

"Veri karşılaştırma" türünde yeni bir koşul eklemeniz ve veri seçicinin şöyle görünmesini sağlamanız yeterlidir:

Ekran görüntüsü 1

Devam ettiğinizde şöyle bir ekran göreceksiniz:

Ekran görüntüsü 2

Gördüğünüz gibi, seçim yapabileceğiniz ürün türlerinin güzel bir açılır listesini alırsınız. Ben sadece test ve bir tedavi çalışır.

Bu herhangi bir nedenle işe yaramazsa, kendi kural koşullarınızı özel bir modülde uygulamak oldukça kolaydır:

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;
}

Vay canına, teşekkürler, şimdilik böyle görünüyor. Her ne kadar cevap soruyu tam olarak cevaplamasa da (Ticaret için bir ürün tipi kuralı koşulu sağlamak için bir sorun oluşturmam gerekebilir), sorunumu çözdü. Daha fazla insanın cevap vermesine izin vermek için ödülü açık bırakacağım, ancak ödülü alacakmış gibi görünüyorsun. Ekran görüntüleri için teşekkürler btw, çok yardımcı olur.
ipwa

@ ipwa Çok zor olmadığı ortaya çıktı, cevabı güncelledim
Clive

Keşke önceki cevabınızı silmediyseniz ve bunu başka bir cevap olarak eklemiş olsaydınız. Commerce-product: type'ı Veri karşılaştırma koşulu için Veri seçici olarak kullanmaya çalıştığımda bu hatayı alıyorum: "Data selector Commerce-product: parametre verileri için tür geçersiz."
ipwa

@ipwa Hangisini kastediyorsun? Kodu olan mı yoksa ilk mi? Bunu kastettiğinizde kodu cevaba geri koydum
Clive

SKUS ürününün OR ile kullanılmasıyla ilgili cevabınızı kastettim, bu da OR'yi çok iyi anlamamı ve nasıl kullanmamı sağladı. Şu anda bunu kullanarak, kendi durumumu uygulamak için özel modülü deneyeceğim. Teşekkürler cevaplarınızla kurallar hakkında çok şey öğrendim.
ipwa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.