Wykres z poziomu karty towaru

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

farbex
Posty: 111
Rejestracja: 15 sty 2010, 15:17
Rola: Administrator CDN XL
Lokalizacja: Ciechanów
Kontakt:

Wykres z poziomu karty towaru

Post autor: farbex »

Witam.

Mam problem z utworzeniem wykresu z poziomu karta towaru/zakładka ogólne.
Mianowicie wykres miał by liczyć narzut na danym towarze w/g poniższego wzoru:
[(Cs-Cz)/Cz]*100%= narzut [%]
Cs - Cena sprzedaży
Cz - Cena zakupu

W moim przypadku miało by to wyglądać miej więcej tak:

[(Twc_Wartosc WHERE Twc_TwrLp=10 - {odjąć} Twc_Wartosc WHERE Twc_TwrLp=0) / {podzielić} Twc_Wartosc WHERE Twc_TwrLp=0] * (razy) 100

Z góry dziękuję za pomoc.
Pozdrawiam.
Przemysław Klimkowski
farbex.com.pl

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

Re: Wykres z poziomu karty towaru

Post autor: Yuber »

Musisz uczepić się zasobów magazynowych jeśli chcesz liczyć stany obecne na magazynie

Kod: Zaznacz cały

select sum(twz_ilmag) from cdn.twrzasoby (nolock) where twz_twrnumer = <Twr_GIDNumer z tabeli towarów>
i liczyć to z TwZ_RzeczywistaNetto
Trzeba uważać przy dzieleniu bo jeśli jakiś zasób ma cenę TwZ_RzeczywistaNetto = 0 (np nieustalony koszt) to będzie błąd.
Ustal jeszcze czy interesuje Cię średnia marża z zasobów czy z każdego zasobu osobno.

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

Re: Wykres z poziomu karty towaru

Post autor: elmiq »

Z głowy piszę więc może być nie do końca dobrze :P

Kod: Zaznacz cały

SELECT 
sum(CASE twc_twrlp WHEN 0 THEN twc_wartosc ELSE 0 END) as CZ,
sum(CASE twc_twrlp WHEN 10 THEN twc_wartosc ELSE 0 END) as CS
FROM CDN.TwrKarty INNER JOIN CDN.TwrCeny ON Twr_GIDNumer = Twc_TwrNumer AND Twr_GIDTyp = TwC_TwrTyp
WHERE Twc_TwrLP in (0,10)  and {FiltrSQL} 
Tym sposobem w jednym zapytaniu i jednym odwołaniu do tabeli zwrócisz i cenę zakupu i cenę sprzedaży. Oczywiście w ramach Twojej analizy musisz to ubrać w drugi select w którym podstawisz CZ i CS do równania, albo po prostu ułóż równanie zawierające takie CASE i oblicz wartość którą potrzebujesz.

PS. Nie mam dziś dostępu do XL więc nie jestem pewien czy będąc na karcie towaru filtrSQL zawiera tylko odwołanie to tabeli TwrKarty
Mateusz Świerkosz

http://elmiq.blogspot.com/

farbex
Posty: 111
Rejestracja: 15 sty 2010, 15:17
Rola: Administrator CDN XL
Lokalizacja: Ciechanów
Kontakt:

Re: Wykres z poziomu karty towaru

Post autor: farbex »

Spłodziłem!!!
Jak by ktoś chciał (dla potomności):

Kod: Zaznacz cały

SELECT (CDN.TwrKarty.Twr_Nazwa) AS NAZWA, 
((CDN.TwrCeny.TwC_Wartosc-(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)))/(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)))*100 AS NARZUT,
(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)) AS CenaZak,
CDN.TwrCeny.TwC_Wartosc AS CenaSpr
FROM CDN.TwrKarty
JOIN CDN.TwrZasoby ON CDN.TwrKarty.Twr_GIDNumer=CDN.TwrZasoby.TwZ_TwrNumer
JOIN CDN.TwrCeny ON CDN.TwrKarty.Twr_GIDNumer=CDN.TwrCeny.TwC_TwrNumer
WHERE CDN.TwrCeny.TwC_TwrLp=10 AND CDN.TwrZasoby.TwZ_MagNumer=3 and {FiltrSQL}
Zamykam Temat. Dziękuję za pomoc i pozdrawiam.
Przemysław Klimkowski
farbex.com.pl

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

Re: Wykres z poziomu karty towaru

Post autor: elmiq »

Tak tylko dodam, że jeśli kupiłeś towar 100 sztuk po 100 PLN i sprzedałeś 20 sztuk po 150 PLN, a następnie 30 sztuk po 200 PLN, to dla pozostałych 50 sztuk pokaże Ci narzut obliczony ze względu na ostatnią transakcję czyli 30 x 200 PLN. Nie jest to więc narzut faktyczny obliczony dla całości ostatniej dostawy.
Mateusz Świerkosz

http://elmiq.blogspot.com/

farbex
Posty: 111
Rejestracja: 15 sty 2010, 15:17
Rola: Administrator CDN XL
Lokalizacja: Ciechanów
Kontakt:

Re: Wykres z poziomu karty towaru

Post autor: farbex »

Dlaczego?
Przecież narzut w wykresie obliczany jest z CDN.TwrZasoby i CDN.TwrCeny (czyli w/g ceny zakupu z danej dostawy i aktualnej ceny z danego cennika) nie z CDN.TraElem.
Nie widzę tutaj powiązania ze sprzedażą danego towaru.
Może jeszcze wyjaśnię. Zamierzenie było takie:
-ustalam cenę w cenniku na karcie towaru
-podglądam sobie na zakładce zasoby jaki narzut uzyskam przy kolejnej sprzedaży.
Nie chodziło mi o narzut rzeczywisty na towar dla zrealizowanych już transakcji od tego mam Reeports Book.

Z góry dziękuję za odpowiedź.
Pozdrawiam.

P.S.
Wersja z narzutem i marżą:

Kod: Zaznacz cały

SELECT 
(CDN.TwrKarty.Twr_Kod) AS KOD,
(CDN.TwrKarty.Twr_Nazwa) AS NAZWA,
((CDN.TwrCeny.TwC_Wartosc-(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)))/(CASE CDN.TwrCeny.TwC_Wartosc WHEN 0 THEN NULL ELSE CDN.TwrCeny.TwC_Wartosc END))*100 AS MARZA,
((CDN.TwrCeny.TwC_Wartosc-(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)))/(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)))*100 AS NARZUT,
(CDN.TwrZasoby.TwZ_KsiegowaNetto/(CASE CDN.TwrZasoby.TwZ_IlSpr WHEN 0 THEN NULL ELSE CDN.TwrZasoby.TwZ_IlSpr END)) AS CenaZak,
CDN.TwrCeny.TwC_Wartosc AS CenaSpr
FROM CDN.TwrKarty
JOIN CDN.TwrZasoby ON CDN.TwrKarty.Twr_GIDNumer=CDN.TwrZasoby.TwZ_TwrNumer
JOIN CDN.TwrCeny ON CDN.TwrKarty.Twr_GIDNumer=CDN.TwrCeny.TwC_TwrNumer
WHERE CDN.TwrCeny.TwC_TwrLp=10 AND CDN.TwrZasoby.TwZ_MagNumer=3 and {FiltrSQL}
Przemysław Klimkowski
farbex.com.pl

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

Re: Wykres z poziomu karty towaru

Post autor: elmiq »

Nie no jest ok, chodzi mi tylko o to, że dana cena w tabeli TwrCeny zawsze jest tylko jedna i nie ma historyczności :D
Mateusz Świerkosz

http://elmiq.blogspot.com/

padding
Posty: 61
Rejestracja: 17 sie 2010, 13:58
Rola: Administrator CDN XL
Wersja: 2019

Re: Wykres z poziomu karty towaru

Post autor: padding »

Witam,

Poszukuję filtra, który pokazałby towary(na liście towarów) dla których cena 1 jest mniejsza lub równa cenie 7.
czyli
(twc_twrlp = 1 ) <= (twc_twrlp = 7)

Czy ma ktoś może, podobny filtr ? :)

Smallsoso
Posty: 131
Rejestracja: 25 wrz 2008, 13:31
Rola: Inny
Wersja: 9.5

Re: Wykres z poziomu karty towaru

Post autor: Smallsoso »

padding pisze:Witam,

Poszukuję filtra, który pokazałby towary(na liście towarów) dla których cena 1 jest mniejsza lub równa cenie 7.
czyli
(twc_twrlp = 1 ) <= (twc_twrlp = 7)

Czy ma ktoś może, podobny filtr ? :)
Tak na szybko (bez sprawdzania na bazie). Zakładamy, że towar ma zawsze ceny 1 i 7.

Kod: Zaznacz cały

exists(select null from cdn.TwrCeny (nolock) c1 inner join cdn.TwrCeny c7 (nolock) on c1.twc_TwrNumer = c7.twc_TwrNumer and c1.twc_TwrLp = 1 and c7.twc_TwrLp = 7 where c1.twc_TwrNumer = twr_gidnumer and c1.twc_wartosc <= c7.twc_Wartosc)
Pozdrawiam,
Marcin
---------------------------------------------------------------------------------
Tako rzecze dokumentacja tabel CDN XL 7.1
TwrZasoby TwZ_DataP INTEGER Data przyjęcia towaru na magazyn Potrzebne przy podróżach w czasie.

padding
Posty: 61
Rejestracja: 17 sie 2010, 13:58
Rola: Administrator CDN XL
Wersja: 2019

Re: Wykres z poziomu karty towaru

Post autor: padding »

Dzięki wielkie Smallsoso, o to chodziło :)
Dziękuję,
pozdrawiam

ODPOWIEDZ