Metode pembayaran yang berbeda untuk berbagai jenis produk

11

Apakah ada cara agar metode pembayaran berbeda tersedia untuk berbagai jenis produk?

Ini adalah skenario saya dan apa yang saya ketahui sejauh ini:

Saya memiliki dua jenis produk di situs Drupal Commerce saya, untuk menjual tiket perjalanan bus. Satu jenis hanya untuk memesan tiket bus di mana Anda memilih tanggal dan waktu (item baris khusus) untuk tiket bus Anda. Jenis lainnya adalah untuk pembayaran aktual, di mana Anda dapat memilih buss pass, menambahkan tur tambahan (dengan item baris khusus juga) dan kemudian membayar dengan Paypal.

Saya menggunakan versi khusus dari contoh modul pembayaran, untuk jenis pembayaran pemesanan, dan menggunakan modul Paypal Pembayaran Drupal untuk pembayaran aktual.

Yang saya butuhkan adalah memiliki metode pembayaran pemesanan khusus yang tersedia untuk satu jenis produk, dan metode pembayaran paypal untuk jenis produk lainnya.

Saya sudah mencoba menambahkan kondisi untuk jenis produk dan belum bisa melakukan ini. Kami dapat menambahkan kondisi untuk produk tertentu, tetapi tidak untuk jenis produk. Ini ideal: https://skitch.com/ipwa/eywxa/add-a-new-condition-chasquibus

Apa yang telah saya lakukan untuk saat ini adalah mengkloning aturan Paypal untuk setiap jenis produk pembayaran, dan memilih SKU produk sebagai syarat. Ini tidak ideal, karena jika pengguna memiliki lebih dari satu produk pembayaran, kami mendapatkan metode pembayaran Paypal ganda yang tersedia untuk setiap produk pembayaran tambahan pada pesanan. Saya kira ini masuk akal karena kami memiliki aturan metode pembayaran untuk masing-masing.

Solusi saya akan dapat memiliki kondisi untuk jenis produk pada aturan metode pembayaran, atau dapat memiliki empat produk pembayaran SKU dalam kondisi 'Pesanan berisi produk tertentu'.

ipwa
sumber

Jawaban:

10

Produk typeadalah properti commerce_productentitas, sehingga Anda dapat menggunakan kondisi "Pembandingan data" bawaan untuk mengujinya.

Cukup tambahkan kondisi baru ketik "Perbandingan data", dan buat pemilih data terlihat seperti ini:

Tangkapan layar 1

Ketika Anda melanjutkan Anda akan mendapatkan layar seperti ini:

Tangkapan layar 2

Seperti yang Anda lihat, Anda mendapatkan daftar drop-down yang bagus dari jenis produk untuk dipilih. Saya baru saja menguji itu dan itu berhasil memperlakukan.

Jika itu tidak berhasil karena alasan apa pun, cukup mudah untuk menerapkan kondisi aturan Anda sendiri dalam modul khusus:

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;
}
Clive
sumber
Wow, terima kasih, sepertinya ini yang harus dilakukan sekarang. Meskipun jawabannya tidak persis menjawab pertanyaan (saya mungkin perlu mengajukan masalah untuk Commerce untuk menyediakan kondisi aturan jenis produk), itu memang memecahkan masalah saya. Saya akan membiarkan karunia itu terbuka untuk membiarkan lebih banyak orang menjawab, tetapi sepertinya sejauh ini Anda akan mendapatkan hadiahnya. Terima kasih untuk screenshot btw, banyak membantu.
ipwa
@wawa Ternyata itu tidak terlalu rumit, saya sudah memperbarui jawabannya
Clive
Saya harap Anda belum menghapus jawaban Anda sebelumnya dan menambahkan ini sebagai jawaban lain. Ketika saya mencoba menggunakan produk-perdagangan: ketik sebagai pemilih data untuk kondisi perbandingan data saya mendapatkan kesalahan ini: "Produk-pemilih perdagangan produk: ketik untuk data parameter tidak valid."
ipwa
@ Ipwa Yang mana yang kamu maksud? Yang dengan kode atau yang pertama? Saya telah memasukkan kode itu kembali dalam jawaban jika Anda maksudnya
Clive
Maksud saya jawaban Anda tentang menggunakan produk SKUS dengan ATAU, yang banyak membantu saya memahami ATAU dan bagaimana menggunakannya. Saat menggunakan itu, akan mencoba modul khusus untuk menerapkan kondisi saya sendiri. Terima kasih banyak belajar tentang aturan dengan jawaban Anda.
ipwa