wdrożenia PrestaShop Powiększenie zdjęć moduł

Sposób na automatyzacje adresowania przesyłek

  • 6 Odpowiedzi
  • 2706 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline bartekt1

  • Nowy
  • *
  • 3
  • 0
Sposób na automatyzacje adresowania przesyłek
« dnia: Listopad 15, 2010, 11:51:31 am »
Witam

Od jakiegos czasu poszukuje sposobu na automatyzację procesu adresowania przesyłek do Klientów
ostatnio wpadł mi w ręce ciekawy programy Msadres dostepny na stornie http://www.m4system.pl/?prog=msadres
Program ten ma możliwość automatycznego zasysania danych z bazy sql... No i własnie tu pojawia sie problem :)
Siedzę już nad tym kilka dni i nie potrafię stworzyć zapytania które bedzie wyciągało z bazy tylko te adresy do których są przypisane niezrealizowane jeszcze zamówienia.
Cały problem polega na tym iz presta przechowuje zmiany nie tylko o ostatnio nadanym statusie danego zamówienia ale również o całej jego historii.
Ja niestety SQL-a znam tylko tyle ile udało mi się go poznać przy okazji prób stworzenia powyzszego zapytania. Być może jest na forum ktoś kto tego typu pytania tworzył lub nie jest to dla niego problemem.

Ponizej zamieszczam zapytanie jeki udało mi się stworzyć do tej pory. Jednak zwraca ono praktycznie wszystkie zamówienia:

SELECT *, MAX(`id_order_state`)
FROM `ps_orders` as ord, `ps_order_history` as oh, `ps_address` as ad
GROUP BY `ord`.`id_order`
HAVING `ord`.`id_order`=`oh`.`id_order`
AND `ord`.`id_customer`=`ad`.`id_customer`
AND `oh`.`id_order_state` >1
AND `oh`.`id_order_state` <4

Pozdrawiam

*

Offline m4system

  • Nowy
  • *
  • 4
  • 0
Odp: Sposób na automatyzacje adresowania przesyłek
« Odpowiedź #1 dnia: Listopad 17, 2010, 08:10:22 am »
Witam,

Jestem producentem msAdres i mogę pomóc w konfiguracji.
Poniżej moja wersja tego SQL, zamiast XXX trzeba wstawić nr statusu zamówienia,
które ma pobierać.

SELECT ord.*, ad.*
FROM ps_orders as ord
JOIN ps_order_history as oh ON ord.id_order=oh.id_order AND oh.id_order_state=XXX
JOIN ps_address as ad on ord.id_customer=ad.id_customer

*

Offline bartekt1

  • Nowy
  • *
  • 3
  • 0
Odp: Sposób na automatyzacje adresowania przesyłek
« Odpowiedź #2 dnia: Listopad 17, 2010, 09:33:43 am »
Witam

Niestety podane zapytanie zwraca wszystkie zamówienia które kiedykolwiek w swojej historii miały nadany status określony w zapytaniu. Czyli na przykład mamy chcemy pobrać zamówienia ze statusem 3 - przygotowanie do wysyłki. i wykorzystując to zapytanie otrzymamy również w wynikach wszystkie te zamówienia które są już wysłane ale kiedyś były w przygotowaniu.

Pozdrawiam

*

Offline m4system

  • Nowy
  • *
  • 4
  • 0
Odp: Sposób na automatyzacje adresowania przesyłek
« Odpowiedź #3 dnia: Listopad 17, 2010, 07:58:10 pm »
Działam po omacku, bo nie znam struktury bazy, ale są dwie najbardziej prawdopodobne możliwości określenia statusu zamówienia:
1) jest pole w tabeli ps_order_history, które określa, który status jest aktualny
2) w tabeli ps_orders jest zapisany, aktualny status zamówienia

Jeśli to możliwe to proszę wkleić tutaj strukturę tych dwóch tabel.

Pozdrawiam
ms.

*

Offline bartekt1

  • Nowy
  • *
  • 3
  • 0
Odp: Sposób na automatyzacje adresowania przesyłek
« Odpowiedź #4 dnia: Listopad 18, 2010, 12:39:54 pm »
Witam
w załączniku fragmenty tabel, o które prosiłeś w pliku xls
Pozdrawiam

*

Offline m4system

  • Nowy
  • *
  • 4
  • 0
Odp: Sposób na automatyzacje adresowania przesyłek
« Odpowiedź #5 dnia: Listopad 18, 2010, 02:48:57 pm »
Ok, można spróbować połączyć po jeszcze po dacie, czyli

SELECT ord.*, ad.*
FROM ps_orders as ord
JOIN ps_order_history as oh ON ord.id_order=oh.id_order AND ord.date_upd=oh.date_add AND oh.id_order_state=XXX
JOIN ps_address as ad on ord.id_customer=ad.id_customer

*

Offline m4system

  • Nowy
  • *
  • 4
  • 0
Odp: Sposób na automatyzacje adresowania przesyłek
« Odpowiedź #6 dnia: Maj 11, 2011, 10:04:43 am »
Połączenie PrestaShop z msAdres:

Ustawienia->MySQL

W polu Wybierz schemat lub dodaj własny wpisujemy PrestaShop i klikamy Zapisz

Zakładka SQL, wklejamy poniższy kod.
SELECT ord.*, ad.*, cu.email, (select total_paid from ps_orders where
ord.id_order=id_order and ord.module in ('cashondelivery')) as pobr
FROM ps_orders as ord
JOIN ps_order_history as oh ON ord.id_order=oh.id_order AND ord.date_upd=oh.date_add
AND oh.id_order_state in (2,4)
JOIN ps_address as ad on ord.id_customer=ad.id_customer
JOIN ps_customer as cu on ord.id_customer=cu.id_customer
WHERE datediff(curdate(), ord.date_upd)<30
Ten SQL pobiera zamówienia, których status zmienił się w ciągu ostatnich 30 dni.
Pobierane są zamówienia ze statusem 2-płatność zaakceptowana, 4-wysyłka
Kwota pobrania jest pobierana tylko dla pobrań (moduł 'cashondelivery')

Zakładka Kolumny, wypełniamy poniższe pola, reszta pozostaje pusta
Imię: firstname
Nazwisko: lastname
Nazwa2: company
Adres1: address1
Kod pocztowy: postcode
Miasto: city
Kwota pobrania: pobr
Adres e-mail: email
Telefon: phone