takashi Posted July 9, 2013 Share Posted July 9, 2013 Hej przerobiłem moduł newslettera na generator Bonów przy zapisaniu się do newslettera, wszystko oh i ah, do dziś gdy klient zapisał się na 2mailach i wykorzystał dwa kody w jednym zamówieniu... już wiem co ustawić w MySql by kody się nie łączyły, ale nie wiem co w MySql'u musi być ustawione by łączenie kodów było domyślnie wyłączone... wiem, że za porównywanie kodów który z którym można łączyć odpowiada tablicy cart_rule_combination a jej wywołanie to kolumna cart_rule_restriction w tablicy cart_rule, ale nawet gdy wywołanie jest wyłączone i tak skądś to czyta... mój nos zawiódł mnie do classes/CartRule.php ale wolę tam nie grzebać bo za słabo znam Prestę i nie chcę niczego spierdzielić.... ktoś może wie co w MySql za to odpowiada? Pozdrawiam Link to comment Share on other sites More sharing options...
vekia Posted July 9, 2013 Share Posted July 9, 2013 w jaki sposób dodajesz te bony do bazy ? Link to comment Share on other sites More sharing options...
takashi Posted July 9, 2013 Author Share Posted July 9, 2013 Dopisałem takie coś: public function addvoucher($email){$lenght = 5; $kodvouchera ='NEWS'; $kodvouchera .= rand(10000,99999); $this->sendVoucher($email, $kodvouchera); $sql = 'INSERT INTO ps_cart_rule (date_from , date_to, description, quantity, quantity_per_user, partial_use, code, minimum_amount, active, date_add, date_upd, minimum_amount_tax, minimum_amount_currency, minimum_amount_shipping, reduction_currency, reduction_amount, reduction_tax) VALUES (NOW(), NOW() + interval 2 week, \'Auto zapis newslettera\', \'1\', \'1\', \'1\', \''.$kodvouchera.'\', \'63.00\', \'1\', NOW(), NOW(), \'1\', \'1\', \'1\', \'1\', \'10.00\', \'1\')'; return Db::getInstance()->execute($sql); } Link to comment Share on other sites More sharing options...
Krystian Podemski Posted July 9, 2013 Share Posted July 9, 2013 Łooo... tak się nie pracuje z kodem w PrestaShop. Twoja funkcja powinna stworzyć nowy obiekt CartRule i dać do niego parametry. $instance = new CartRule(); $instance->description = 'Opis'; [...] $instance->save(); Link to comment Share on other sites More sharing options...
vekia Posted July 9, 2013 Share Posted July 9, 2013 dokładnie tak jak mówi krystian, korzystaj z gotowych rozwiązań, klasa CartRule umożliwia łatwe dodanie kodu rabatowego bez bawienia się w kod sql Link to comment Share on other sites More sharing options...
takashi Posted July 10, 2013 Author Share Posted July 10, 2013 ok, rozumiem i dzięki za krytykę. to czy znacie jakieś pomocne treści (na początek lecę DeveloperGude) Link to comment Share on other sites More sharing options...
vekia Posted July 10, 2013 Share Posted July 10, 2013 Jak mniemam masz jakieś nawet najmniejsze pojęcie o OOP ? przeglądnij sobie zawartość klasy: classes/CartRule.php najpierw definiujesz obiekt: $cartrule = new CartRule(); następnie definiujesz pola: $cartrule->priority=1; $cartrule->quantity=1; etc. musisz zdefiniować wszystkie z pól które w definicji obiektu są "required" jak już zdefinijesz wszystko co trzeba, odpalasz funkcję: $cartrule->add(); kod rabatowy wyląduje w bazie. Link to comment Share on other sites More sharing options...
takashi Posted July 10, 2013 Author Share Posted July 10, 2013 Dzięki bardzo. Głównie jestem FrontEnd'owcem, ale przychodzi pora gdy trzeba coś skołować i działa się na podstawie tego co się wie, bo zależy na czasie... Link to comment Share on other sites More sharing options...
vekia Posted July 10, 2013 Share Posted July 10, 2013 no i ważne jest, aby pilnować się definicji obiektu, jak masz pole z tłumaczeniem ('lang' => true) - w tym przypadku jest jedno takie pole, to musisz załadować tablicę z językami, często z tym są problemy i skrypt wywala 500 internal server error Link to comment Share on other sites More sharing options...
takashi Posted July 10, 2013 Author Share Posted July 10, 2013 czytałem o tym na innym Topicu - dzięki jak coś wydłubię to dam znać Link to comment Share on other sites More sharing options...
takashi Posted July 11, 2013 Author Share Posted July 11, 2013 Ok, dzięki podanym przez Was informacjom poprawiłem kod na taki wg. standardów Presty. Kod działa jak powinien wspierałem się również postami: http://www.prestashop.com/forums/topic/247960-solved-genereate-vouchers-aka-cartrule/ oraz http://www.prestashop.com/forums/topic/247960-solved-genereate-vouchers-aka-cartrule/page__p__1233268__hl__name%20foreach__fromsearch__1?do=findComment&comment=1233268 Pozdrawiam Link to comment Share on other sites More sharing options...
vekia Posted July 11, 2013 Share Posted July 11, 2013 dzięki za informacje widzę, że moje wypociny w tamtejszych postach okazały się pomocne motywuje mnie to do dalszego "no life" na forum pozdrawiam! 1 Link to comment Share on other sites More sharing options...
aneheli Posted October 31, 2013 Share Posted October 31, 2013 Dzięki za wcześniejsze informacje wszystko działa tylko nie mam pojęcia jak dodać restrykcje np. produkt musi być z kategorii x w ilości minimum y Macie jakieś podpowiedzi? dajemy takie tematy jak : $cart_rule->product_restriction = 1; no ale jak wskazać produkty bądź kategorie? Link to comment Share on other sites More sharing options...
Recommended Posts