Saya ingin memberikan Poin Pengguna kepada pemilik produk dalam jumlah harga produk setelah suatu produk dijual.
Untuk ini saya mendefinisikan aturan sebagai berikut:
Acara: Menyelesaikan proses checkout
Tindakan: Loop (
commerce-order:commerce-line-items
)
Dan saya mendefinisikan Komponen Aturan sebagai berikut:
Kondisi: Entitas memiliki lapangan (Entity:
commerce-line-item
, Lapangan:commerce_product
)Tindakan: poin Grant untuk pengguna: (User:
commerce-line-item:commerce-product:creator
, Poin:commerce-line-item:commerce-product:commerce-price:amount
)
Tetapi ketika saya menyimpan komponen itu menghasilkan pesan kesalahan ini:
Pemilih data commerce-line-item: commerce-product: commerce-price: jumlah untuk titik parameter tidak valid.
Bagaimana saya bisa melakukan itu?
sumber
Jawaban:
Pada awalnya saya mencoba menjawab pertanyaan Anda menggunakan modul rules dan userpoints , tetapi saya melihat bahwa ketika menambahkan poin Grant kepada pengguna sebagai tindakan, tidak ada pemilih data untuk memilih pengguna yang telah menciptakan produk. Saya menemukan pemilih data untuk memilih pengguna yang merupakan pemilik pesanan, tetapi itu bukan kebutuhan Anda. (Itulah sebabnya saya mengklarifikasi hal ini dalam komentar).
Saya menemukan solusi modul untuk pertanyaan Anda. Modul ini menggunakan hook_commerce_checkout_complete () . Dari halaman kait:
Ini adalah pengkodean modul yang saya rancang:
File YOURMODULE.info :
PEMBARUAN Seperti yang disarankan oleh Clive , saya telah mengubah file modul sehingga modul khusus ini juga akan berfungsi dengan situs multibahasa.
File YOURMODULE.module :
Tautan referensi:
userpoints_userpointsapi ($ params)
API commerce_checkout
commerce_line_item_load ($ line_item_id)
commerce_product_load ($ product_id)
Userpoints: kurangi poin secara terprogram
commerce_currency_amount_to_decimal ()
sumber
field_get_items()
untuk mengambil$order->commerce_line_items
, dengan cara ini akan bekerja dengan situs multibahasa jugaSebagai alternatif dari jawaban sebelumnya, yang memerlukan kode khusus, Anda mungkin ingin mencoba alternatif yang dijelaskan di bawah ini untuk mengatasi pesan kesalahan itu ...
Pertanyaan Anda tampaknya merupakan variasi (bukan duplikat) dari pertanyaan " Bagaimana cara memberikan Poin Pengguna kepada pengguna sama dengan nilai bidang / nilai yang dihitung? ". Mirip dengan jawaban yang diterima untuk pertanyaan itu, cobalah untuk menyesuaikan Komponen Aturan Anda seperti:
Tambahkan Tindakan Aturan tambahan ini sebelum Tindakan Aturan dalam Komponen Aturan Anda yang menyebabkan kesalahan:
commerce-line-item:commerce-product:commerce-price:amount
. Mari kita asumsikan Anda menyebutkan variabel ituprice_amount
.price_amount
variabel bilangan bulat . Anggap Anda menyebutkan hasil konversi ituamount_of_points
.amount_of_points
.PS 1: "Konversi tipe data" semacam itu hanyalah masalah bagaimana Aturan bekerja (sesuai desain), jadi itu tidak dianggap sebagai bug ...
PS 2: Saya berasumsi pertanyaan Anda tentang D7.
sumber