Chciałbym przyznać User Point właścicielowi produktu w wysokości ceny produktu po sprzedaży produktu.
W tym celu zdefiniowałem regułę jak poniżej:
Zdarzenia: Zakończenie procesu finalizowania transakcji
Akcje: Loop (
commerce-order:commerce-line-items
)
I zdefiniowałem komponent reguł, jak poniżej:
Warunki: jednostka ma pole (Podmiot:
commerce-line-item
Field:commerce_product
)Operacje: Grant Punkty dla użytkownika: (User:
commerce-line-item:commerce-product:creator
, punkty:commerce-line-item:commerce-product:commerce-price:amount
)
Ale kiedy zapisuję komponent, generuje ten komunikat o błędzie:
Selektor danych pozycja handlowa: produkt handlowy: cena handlowa: kwota dla punktów parametrów jest nieprawidłowa.
Jak mogę to zrobić?
commerce
rules
userpoints
użytkownik1468966
źródło
źródło
Odpowiedzi:
Na początku próbowałem odpowiedzieć na twoje pytanie za pomocą modułu reguł i punktów użytkownika , ale zauważyłem, że podczas dodawania punktów Grant do użytkownika jako działania nie ma takiego selektora danych do wybierania użytkownika, który utworzył produkt. Znalazłem selektor danych do wybierania użytkownika, który jest właścicielem zamówienia, ale nie jest to twoje wymaganie. (Dlatego wyjaśniłem to w komentarzach).
Znalazłem modułowe rozwiązanie twojego pytania. Moduł używa hook_commerce_checkout_complete () . Ze strony haka:
Oto kodowanie zaprojektowanego przeze mnie modułu:
Plik YOURMODULE.info :
AKTUALIZACJA Jak zasugerował Clive , zmieniłem plik modułu, aby ten moduł niestandardowy działał również z witrynami wielojęzycznymi.
Plik YOURMODULE.module :
Linki referencyjne:
userpoints_userpointsapi ($ params)
interfejs API commerce_checkout
commerce_line_item_load ($ line_item_id)
commerce_product_load ($ id_produktu)
Punkty użytkownika: programowo odejmij punkty
commerce_currency_amount_to_decimal ()
źródło
field_get_items()
do pobierania$order->commerce_line_items
, w ten sposób będzie to działać również w przypadku witryn wielojęzycznychJako alternatywę dla poprzedniej odpowiedzi, która wymaga niestandardowego kodu, możesz wypróbować alternatywę opisaną poniżej, aby obejść ten komunikat o błędzie ...
Twoje pytanie wydaje się być odmianą (a nie duplikatem) pytania „ Jak przyznać punkty użytkownika równe wartości określonego pola / wartości obliczonej? ”. Podobnie jak w przypadku zaakceptowanej odpowiedzi na to pytanie, spróbuj dostosować komponent reguł w następujący sposób:
Dodaj te dodatkowe Akcje Reguł przed Akcją Reguły w Komponencie Reguły, który powoduje błąd:
commerce-line-item:commerce-product:commerce-price:amount
. Załóżmy, że nazwiesz tę zmiennąprice_amount
.price_amount
zmiennej na liczbę całkowitą . Załóżmy, że nazwiesz ten wynik konwersjiamount_of_points
.amount_of_points
.PS 1: Taki „Konwertuj typ danych” jest po prostu kwestią tego, jak działają reguły (zgodnie z projektem), więc nie należy go uważać za błąd ...
PS 2: Zakładam, że twoje pytanie dotyczy D7.
źródło