Skocz do zawartości

SQL: Towary brakujące, a wystawione na aukcji

Polecane posty

Jeżeli ktoś chciałby zobaczyć, czy nie ma na aukcjach wystawionych więcej sztuk towaru niż jest w magazynie (bo np. sprzedał w sklepie i zapomniał zdjąć ze stanu aukcji), to może to zrobić tym skryptem.

Przy okazji można sprawdzić czy aby nie mamy na aukcjach wystawionego towaru mniej niż mamy w magazynie.


 

Spoiler



SELECT COUNT(auk.au_Title) as [ilość aukcji danego towaru],
SUM(auk.au_Quantity)-SUM(auk.au_Sold) as [Dostępne na aukcjach],
tw.it_Stock-tw.it_Reserved as [Dostępne w magazynie z uwzg. rezerw.],
CASE
  WHEN SUM(auk.au_Quantity)-SUM(auk.au_Sold)>tw.it_Stock-tw.it_Reserved THEN (tw.it_Stock-tw.it_Reserved)- (SUM(auk.au_Quantity)-SUM(auk.au_Sold)) ELSE 0
END as [brakujące w magazynie],
CASE
  WHEN SUM(auk.au_Quantity)-SUM(auk.au_Sold)<tw.it_Stock-tw.it_Reserved THEN (tw.it_Stock-tw.it_Reserved)-(SUM(auk.au_Quantity)-SUM(auk.au_Sold)) ELSE 0
END as [Nadwyżka w magazynie],
CASE
  WHEN auk.au_BINPrice<>tw.it_Price THEN 'Tak' ELSE 'Nie'
END as [Różnica w cenie],
auk.au_BINPrice as [Cena na aukcjach],
tw.it_Price as [Cena w magazynie],
SUM(auk.au_Quantity) as [ilość na aukcjach],
SUM(auk.au_Sold) [sprzedane na aukcjach],
tw.it_Name as [Nazwa towaru],
tw.it_Symbol as Symbol,
tw.it_Stock as [ilość w magazynie],
tw.it_Reserved as Zarezerwowane
FROM au__Auction as auk
LEFT JOIN
  it__Item as tw
ON
  auk.au_ProductId=tw.it_Id
WHERE 
  auk.au_State=3  
GROUP BY  tw.it_Symbol, tw.it_Stock, tw.it_Reserved, tw.it_Name, auk.au_BINPrice,tw.it_Price
HAVING
  (SUM(auk.au_Quantity)-SUM(auk.au_Sold))>(tw.it_Stock-tw.it_Reserved) OR
  (SUM(auk.au_Quantity)-SUM(auk.au_Sold))<(tw.it_Stock-tw.it_Reserved)
ORDER BY [brakujące w magazynie] ASC, [Różnica w cenie], [Nadwyżka w magazynie] DESC,symbol ASC


 


 

 

 

 

SQL_zest_deluxe.thumb.jpg.0a68be6566cea13de8687ad03dd2ee83.jpg

 

 

Opis wersji Deluxe znajduje się tutaj

https://forum.sello.pl/index.php?topic=7715.msg52671#msg52671

 

Skrypt należy uruchomić w programie serwisowym do Sello

lub innym programie do wykonywania zapytań SQL, np. PragmaSQL (darmowy).

 

Spoiler

 


SELECT auk.au_Title as [Tytuł aukcji],
auk.au_Quantity-auk.au_Sold as [Dostępne na aukcji],
tw.it_Stock-tw.it_Reserved as [Dostępne w magazynie],
auk.au_Quantity as [ilość na aukcji],
auk.au_Sold [sprzedane na aukcji],
tw.it_Name as [Nazwa towaru],
tw.it_Stock as Ilość,
tw.it_Reserved as Zarezerwowane
FROM au__Auction as auk
LEFT JOIN
 it__Item as tw
ON
 auk.au_ProductId=tw.it_Id
WHERE 
 auk.au_State=3  
AND
 (auk.au_Quantity-auk.au_Sold)>(tw.it_Stock-tw.it_Reserved)

 

 

 

Skrypt jest prosty i bada tylko pojedyncze aukcje czy nie przekraczają stanów magazynowych. Jeżeli ktoś wystawia jeden towar w wielu aukcjach to będzie potrzebował skryptu poniższego.

 

 

Zmieniając znak większości w ostatniej linijce na znak mniejszości można sprawdzić jakich towarów mamy więcej w magazynie niż wystawionych.

 

 

Skrypt do sprawdzenia czy mamy za dużo wystawionych towarów przy uwzględnieniu aukcji pojedynczych i wielokrotnych danego towaru:

 


SELECT COUNT(auk.au_Title) as [ilość aukcji danego towaru],
SUM(auk.au_Quantity)-SUM(auk.au_Sold) as [Dostępne na aukcjach],
tw.it_Stock-tw.it_Reserved as [Dostępne w magazynie],
SUM(auk.au_Quantity) as [ilość na aukcjach],
SUM(auk.au_Sold) [sprzedane na aukcjach],
tw.it_Name as [Nazwa towaru],
tw.it_Symbol as Symbol,
tw.it_Stock as Ilość,
tw.it_Reserved as Zarezerwowane
FROM au__Auction as auk
LEFT JOIN
 it__Item as tw
ON
 auk.au_ProductId=tw.it_Id
WHERE 
 auk.au_State=3  
GROUP BY  tw.it_Symbol, tw.it_Stock, tw.it_Reserved, tw.it_Name
HAVING
 (SUM(auk.au_Quantity)-SUM(auk.au_Sold))>(tw.it_Stock-tw.it_Reserved)

 

 

skrypt.jpg.12ca0a9e1f2bde15dbb3f93739fc42d4.jpg

 


 

 

 

 

Link to postu
  • 3 tygodnie później...

Cała rzecz polega na tym, że tego nie będzie w Sello.

Trzeba za każdym razem uruchamiać ten skrypt przez program serwisowy lub inny program do obsługi baz danych np. PragmaSQL, który jest o tyle lepszy, że zapamiętuje skrypty ostatnio używane i otwiera je ponownie.

Można łatwo potem wszystkie skrypty uruchamiać.

Link to postu
  • 2 miesiące temu...
  • 3 miesiące temu...

Wraz z upływem czasu nadchodzi chęć na posiadanie lepszych skryptów.

Oto kolejna wersja.

 

Podczas pracy napotkać możemy następujące sytuacje:

-mamy za mało towaru w magazynie w porównaniu do wystawionego na aukcji (trzeba zmniejszyć na aukcji)

-mamy za dużo towaru w magazynie w porównaniu do wystawionego na aukcji (trzeba dodać do aukcji)

-mamy za dużo towaru w magazynie w porównaniu do wystawionego na aukcji, ale nie chcemy go wystawiać teraz, bo cena poszła w górę i wystawimy gdy stare "tanie" sztuki się sprzedadzą.

 

Do tego potrzebujemy skryptu Deluxe, który pokazałby nie tylko brakujące i nadmiarowe sztuki towaru w magazynie za jednym razem, ale także pokazał cenę na aukcji i w magazynie, abyśmy mogli podjąć decyzję czy mamy zwiększać, czy też mamy czekać aż się sprzeda.

 

Oto on:

5aa37f96a39cd_SQL_zest_del__kopia.thumb.jpg.63486ad595668f7ce13a5fb4e3b432fb.jpg

 

 

Skrypt uwzględnia wiele aukcji tego samego towaru.

Jednak w jakiś sposób aukcje muszą być grupowane.

Grupowanie następuje według:

Symbolu towaru, Nazwy towaru i Ceny na aukcji.

 

Więc jeżeli mamy kilka aukcji tego samego towaru i każdy ma inną cenę - pokażą się w osobnych wierszach.

Inaczej mówiąc jeśli mamy towaru 10 sztuk, i wystawimy 5 aukcji po 50 zł i 5 aukcji po 51 zł, to pomimo tego, że towar faktycznie nam się zgadza, skrypt pokaże, że mamy w 2 pozycjach za mało towaru wystawionego (5 zamiast 10).

 

W obecnej konstrukcji skryptu nie da się tego zmienić.

Aby zsumować takie aukcje, trzebaby zrezygnować z pokazywania cen, lub wybrać jedną cenę z wszystkich aukcji danego towaru, np. maksymalną lub minimalną.

 

Jeżeli ktoś będzie potrzebował takiej przeróbki - proszę pisać.

 

Kolejność sortowania wyników jest taka:

-najpierw widzimy towary brakujące w magazynie,

-następnie widzimy towary z nadwyżką w magazynie, ale bez róznicy w cenie (czyli do zwiększenia na aukcji),

-na końcu widzimy towary z nadwyżką w magazynie, z różnicą w cenie (czyli mogą czekać).

 

Skrypt Deluxe znajduje się w pierwszym poście.

 

 

Link to postu
  • 1 miesiąc temu...
  • 2 tygodnie później...

Cieszę się :D

 

Co do kilku magazynów - skrypt jest pod Sello, a tam póki co można wykorzystać tylko jeden magazyn naraz.

Jeśli się pojawi możliwość w Sello, wówczas skrypt zostanie dostosowany.

A wiele osób czeka na możliwość korzystania z kilku magazynów (np. po jednym dla każdego konta Allegro).

Link to postu
  • 2 miesiące temu...
  • 3 tygodnie później...

Cieszę się :D

 

Co do kilku magazynów - skrypt jest pod Sello, a tam póki co można wykorzystać tylko jeden magazyn naraz.

Jeśli się pojawi możliwość w Sello, wówczas skrypt zostanie dostosowany.

A wiele osób czeka na możliwość korzystania z kilku magazynów (np. po jednym dla każdego konta Allegro).

 

hej

 

mam do ciebie pytanie bo widze że znasz trochę lepiej bazę sello a wydaje mi się że brakuje w tym skrypcie jednej zasadniczej informacji przykładowo na stanie mam 100 szt towaru w rezerwacjach 20 czyli realnie 80 na aukcjach wystawione jest 100 szt więc powiedzmy wiem że muszę zmniejszyć do 80 ALE w transakcjach które jeszcze nie doszły do przetworzenia na dokumenty handlowe bo nie robimy z automatu zamówienie do klientów jest 60 szt więc realnie mój stan to tylko 20 a nie 80. i teraz pytanie z której tabeli pobrać informację o łącznej ilości transakcji danego towaru oczekujących na przetworzenie w dokumenty 

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...