![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
Witam, staram się uporać z modyfikacją i nie mogę przejść jednego ostatniego problemu. Chcę w tabeli gdzie domyślnie jest fax umeiścić wybrany termin dostawy.
Tabela "sales_flat_order_address" przechowuje dane klienta i FAX pole które mnie interesuje Tabela "sales_flat_order" przechowuje inne informacje np "shipping_date" Mamy integracje z zewnętrznym programem który pobiera zamówienia niestety tylko z jednej tabeli "sales_flat_order_address" i nie możemy dodać własnej kolumny bo XML jest dosyć restrykcyjny (Linnworks) data dostawy to nasz pomysł i klient ją wybiera dla dużych przedmiotów. Te tabele nie są tworzone jednocześnie i nie wiem która jest pierwsza a która jako druga. Czy jest możliwość jakimś kluczem przenieść np datę do Fax albo może ktoś ma pomysł jak podczas finalizowania tranzakcji uzyskać dostęp do tabeli i podmienić dane. Magento ma ogrom plikówuczę się tego i proszę o pomoc. Obie tabele mają relacje i klucz "entity_id" Pozdrawiam |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%)
|
A ten zewnętrzny system nie może pobrać danych z widoku? Wtedy byś sobie zapisał co tam potrzebujesz nawet dając może nazwę kolumny specjalną dla systemu.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
Magento ma własną walidację i myślę że boją się dopuścić jakieś pole które może mieć niekontrolowany kod.
Niestety musi być to ta sama tabela "sales_flat_order_address" |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%)
|
No to jakiś trigger który zapisze dane gdzie trzeba.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
Jest problem nie znam na tyle magebnto nie jest to na zasadzie że napisze sobie kod w php i mam dostęp do bazy wszystko muszę zadeklarować.
W moim przypadku Fax jest w kroku 1 a w 3 gdzie jest wybór daty nie mam już dostępu do sesji fax-u |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%)
|
Tu nie potrzebna ci wiedza z magento tylko samej bazy.
http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html Ustaw żeby before insert on sales_flat_order_address new.fax = data |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
Nigdy tego nie robiłem mógłbyś mi trochę pomóc.
sales_flat_order_address - kolumna fax tu chcę datę sales_flat_order - kolumna shipping_date Obe tabele mają wspólny klucz entity_id Złączenia itd trigery to niejest moja mocna strona kiedyś po studiach ok ale minęło już trochę czasu i nie kumam już tego. Pozdrawiam i będę wdzięczny za przykład takiego trigera |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Masz gotową metodę API wystawioną do tego celu:
http://www.magentocommerce.com/api/soap/cu...dress.info.html Do sales także: http://www.magentocommerce.com/api/soap/sales/sales.html |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
Po co mi API skoro firma która pobiera zamówienia nie jest w stanie albo nie chcę rozszeżyć ilości pobieranych danuych. Jedyna opcja to wpisanie w Pole Fax daty dostawy.
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Skoro tak, to bez customowych rozwiązań się nie obejdzie. Wygląda to tak, że mógłbyś napisać moduł, który wykorzystuje event checkout_type_onepage_save_order_after i w momencie tuż po złożeniu zamówienia w modelu obsługującym ten event po prostu na chama skopiować wybraną datę dostawy do pola przeznaczonego do przechowywania numeru faksu. Inaczej tego nie widzę, jeśli z tą zewnętrzną firmą nie da rady negocjować. Pytanie tylko co robić, jeśli ten numer faksu kiedyś będzie faktycznie potrzebny? Jeśli nie jest nigdzie wykorzystywany obecnie, to można byłoby faktycznie tak zrobić. Zobacz przykład pobrania adresu po id zamówienia:
http://stackoverflow.com/questions/3600452...ore-api#4819873 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
Właśnie niestety firma nie chcę zmieniać pliku importu już interweniowaliśmy w tej sprawie. Jedyne co nam zasugerowali to umieszczenie tych danych w Fax. Tego pola nigdy nie będziemy wykorzystywać to relikt przeszłości. Może ten triger to dobre rozwiązanie brzmi sensownie ja niestety nigdy czegoś takiego nie robiłem.
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%)
|
Po co mi API srsly? (IMG:style_emoticons/default/smile.gif) Jedyna opcja to wpisanie w Pole Fax daty dostawy. skup się na tym .... ale nie 'after order' tylko zmodyfikuj przygotowywane dane "eksportowe" dla zewnetrzenj usługi - pewnie korzystają z SOAP a nie szorują Ci po bazie .... każdą klase możesz rozszerzyć i nadpisać jej metody tym samym zwrócić im w polach co chcesz ( może prawie co chcesz) |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 11.08.2012 Ostrzeżenie: (0%)
|
poniższy kod działa jest jeden problem. Wychodzi na to że Magento najpierw zapisuje "sales_flat_order" potem "sales_flat_order_address" więc nie mogę pobrać danych bo ich tam jeszcze nie ma
Witam, poniższy triger nie działa. Neistety nie mamy unikalnych wartości poza id które są takei same w obu tabelach.
Natomiast ten działa jednak dla wszystkich rekordów. Jak zrobić aby zmianiał datę tylko w 2 świeżych rekordach po najwyższym ID
Ten post edytował designez 2.12.2015, 17:28:08 |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 16:45 |