Kolumna z marżą na Liscie Towarów

Problemy i pomysły związane z funkcjonowaniem modułu Sprzedaż

Moderator: mikey

KarolPitra
Posty: 28
Rejestracja: 30 lis 2017, 11:21
Rola: Użytkownik CDN XL
Wersja: 2016

Kolumna z marżą na Liscie Towarów

Post autor: KarolPitra »

Witam wszystkich, mam pytanko wyrzuciłem sobie na ogólną listę Towarów dodatkowe kolumny z cenami, i chciałbym dodać kolumne z marżą rzeczywistą, ale nie wiem jak napisać filtr SQL macie jakieś pomysły?

Yuber
Posty: 934
Rejestracja: 12 sty 2009, 12:03
Rola: Administrator CDN XL
Wersja: 2016
Lokalizacja: Kraków

Re: Kolumna z marżą na Liscie Towarów

Post autor: Yuber »

Na liście towarów będziesz musiał wyświetlić marżę uśrednioną no bo na pewno zdarzy się, że będziesz miał różne zasoby w różnych cenach.
Czy miałeś styczność z SQL-em już ?

KarolPitra
Posty: 28
Rejestracja: 30 lis 2017, 11:21
Rola: Użytkownik CDN XL
Wersja: 2016

Re: Kolumna z marżą na Liscie Towarów

Post autor: KarolPitra »

Tak mam styczność piszę proste zapytania i nie wiem jak zapisać dynamiczne wyliczanie marzy rzeczywistej poniewaz powstaje ona poprzez podzielenie koknretnej ceny przez cene zakupu i nie wiem jak to zapisać ponieważ mam wyciągnięte ceny w kolumnach na liscie towarów zapytaniem:

Select TwC_Wartosc As '20-ZAKUP_TOYA'
From CDN.TwrCeny
Join CDN.Twrkarty on Twr_GIDNumer = TwC_TwrNumer
WHERE {filtrsql} and TwC_TwrLp = 20

i tak naprawdę teraz pozostaje mi tylko wziąć takie 2x zapytania każde z różnymi cenami i podzielić je przez siebie....tylko nie wiem jak to zapisać w SQL

Yuber
Posty: 934
Rejestracja: 12 sty 2009, 12:03
Rola: Administrator CDN XL
Wersja: 2016
Lokalizacja: Kraków

Re: Kolumna z marżą na Liscie Towarów

Post autor: Yuber »

No to chyba nie do końca tak. Trochę się powymądrzam ale to tylko po to żeby dobrze zrozumieć co chcesz uzyskać.
Marża to różnica między ceną zakupową a sprzedażową i wyliczamy ją albo w wartości albo w procentach.
W tabeli TwrCeny masz tylko ceny towarów. Jeśli chcesz wyliczyć marżę trzeba dobrać się do Ceny zakupu. Np dla mnie ważne jest to też, że wyliczam ceny z zasobów na magazynie dlatego dla mnie dobrą tabelą z danymi jest CDN.TwrZasoby.

Kod: Zaznacz cały

select TwZ_TwrNumer,  avg(TwZ_RzeczywistaNetto) as RzeczywistaNetto from cdn.TwrZasoby
Trzeba to połączyć z Twoim zapytaniem i wyliczyć różnicę:

Kod: Zaznacz cały

Select  TwC_Wartosc - RzeczywistaNetto as Marza_Wartosc
From CDN.TwrCeny
Join CDN.Twrkarty on Twr_GIDNumer = TwC_TwrNumer
JOIN (select TwZ_TwrNumer as TwrNumer,  avg(TwZ_RzeczywistaNetto) as RzeczywistaNetto from cdn.TwrZasoby group by TwZ_TwrNumer) as zas on zas.TwrNumer = Twr_GIDNumer
WHERE {filtrsql} and TwC_TwrLp = 20
Takie coś pokaże Ci marżę wyliczoną w wartości ale... pod warunkiem, że typ ceny TwrLp = 20 to cena liczona od netto. Jeśli nie to należy odliczyć od niej jeszcze VAT
Jeśli chcesz mieć wartość procentową to tutaj odpowiedni stosunek ceny zakupowej (tutaj RzeczywistaNetto) do ceny sprzedaży (tutaj TwC_Wartosc) pozwoli wyliczyć marżę narzutową lub wynikową.
Czy taki miał być efekt?

KarolPitra
Posty: 28
Rejestracja: 30 lis 2017, 11:21
Rola: Użytkownik CDN XL
Wersja: 2016

Re: Kolumna z marżą na Liscie Towarów

Post autor: KarolPitra »

Niestety lecz źle wytłumaczyłem generalnie chce finalnie uzyskać i zapisać następujący zapis matematyczny: 1-(Cena_Zakup / Cena_Sprzedaży) gdzie:

Zapytanie sql do ceny zakupu to ZAPYTANIE1

Kod: Zaznacz cały

Select TwC_Wartosc As '20-ZAKUP_TOYA' 
From CDN.TwrCeny
Join CDN.Twrkarty on Twr_GIDNumer = TwC_TwrNumer
WHERE {filtrsql} and TwC_TwrLp = 20
A do ceny Sprzedaży zapytanie SQL to: ZAPYTANIE2

Kod: Zaznacz cały

Select TwC_Wartosc As '2-HURT-TOYA' 
From CDN.TwrCeny
Join CDN.Twrkarty on Twr_GIDNumer = TwC_TwrNumer
WHERE {filtrsql} and TwC_TwrLp = 2
I teraz nie wiem jak połączyć wyniki tych dwóch zapytań w formę 1-(ZAPYTANIE1 / ZAYPTANIE2)

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Kolumna z marżą na Liscie Towarów

Post autor: elmiq »

Rozwiązań jest kilka np. podzapytanie na zasadzie SELECT Twc_Wartosc, ISNULL((SELECT Twc_Wartosc FROM Ceny2),0) FROM Ceny1, oczywiście z warunkami żeby nie dzielić przez 0 i zawężeniem podzapytania do danego towaru.

Druga opcja to po prostu Twc_TwrLp IN (Lp1, Lp2) i grupowanie, po czym funkcje agregujące + CASE. Trzecia opcja to po prostu join z zaaliasowaną tabelą z drugą ceną.

To o czym mówi Yuber to fakt, że cena zakupu którą masz w cenniku (Zakładając, że jest aktualizowana przy nowej dostawie), to po prostu ostatnia cena zakupu, a na stanie mogą znajdować się zasoby które były kupione po X% taniej/drożej.

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

KarolPitra
Posty: 28
Rejestracja: 30 lis 2017, 11:21
Rola: Użytkownik CDN XL
Wersja: 2016

Re: Kolumna z marżą na Liscie Towarów

Post autor: KarolPitra »

Dziękuje za pomoc, mam w takim wypadku pytanko czy da się napisać moje 2x zapytania połączyć w jedno podzapytanie?

Yuber
Posty: 934
Rejestracja: 12 sty 2009, 12:03
Rola: Administrator CDN XL
Wersja: 2016
Lokalizacja: Kraków

Re: Kolumna z marżą na Liscie Towarów

Post autor: Yuber »

Kod: Zaznacz cały

Select ZAKUP_TOYA/HURT_TOYA
From CDN.TwrKarty
Join (select TwC_TwrNumer,TwC_Wartosc as ZAKUP_TOYA from CDN.TwrCeny where TwC_TwrLp = 20) as C20  on C20.TwC_TwrNumer = Twr_GIDNumer
Join (select TwC_TwrNumer,TwC_Wartosc as HURT_TOYA from CDN.TwrCeny where TwC_TwrLp = 2) as C2  on C2.TwC_TwrNumer = Twr_GIDNumer
WHERE {filtrsql} 
Trzeba jeszcze zadbać tak jak elmiq pisze by w dzieleniu nie pojawiło się zero ;)

KarolPitra
Posty: 28
Rejestracja: 30 lis 2017, 11:21
Rola: Użytkownik CDN XL
Wersja: 2016

Re: Kolumna z marżą na Liscie Towarów

Post autor: KarolPitra »

Dziękuje bardzo za pomoc musze się jeszcze wieeeele nauczyć ale dzięki Wam mam pogląd na możliwości SQL :)

ODPOWIEDZ