Raport "Sprzedaż do klientów według grup towarowych"

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

Moderator: mikey

Kyniu
Posty: 417
Rejestracja: 21 mar 2008, 10:10
Rola: Administrator CDN XL
Lokalizacja: Świętokrzyskie, Kielce

Raport "Sprzedaż do klientów według grup towarowych"

Post autor: Kyniu »

Hej,

Z racji tego że jednak najwyraźniej nikt nie dysponował takim raportem jak szukałem (jeden z kolegów pomógł ale to jeszcze nie było to czego szukałem) to zakasałem rękawy i sam sobie napisałem potrzebny wydruk. Na razie jest w fazie testów - koleżanki mają sprawdzić czy wszystko dobrze się liczy. No a potem będzie czas na doszlifowanie pewnych elementów jak np. dodatkowo pokazywanie marży (kwotowo i procentowo) osiągniętej na danym kontrahencie. A wygląda to tak:

Obrazek

Acha, trzeba kliknąć aby otworzyć w większym rozmiarze ;-)

No i oczywiście jeśli okaże się że wszystko bangla poprawnie i że będą na niego chętni to zostanie upubliczniony ;-)

Kyniu

Awatar użytkownika
wojtek
Posty: 359
Rejestracja: 14 gru 2007, 12:23
Rola: Administrator CDN XL
Wersja: 9.8
Lokalizacja: pomorskie

Re: Raport "Sprzedaż do klientów według grup towarowych"

Post autor: wojtek »

a może by podejść do sprawy nieco inaczej i zrobić to w formie widoku i dane prezentować w excelu

Kod: Zaznacz cały

USE [baza]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



CREATE VIEW [CDN].[SPRZEDAZ_GRUPY]

AS
SELECT 

CDN.TwrGrupaPelnaNazwa(G1.TGD_GidNumer) as Towar_GrupaPelnaNazwa,
IsNull(G1.TGD_Kod,'ND') AS Towar_Grupa, 
IsNull(Twr_Kod,'A-Vista') AS Towar_Kod, 
IsNull(Twr_Nazwa,'A-Vista') AS Towar_Nazwa,


KntKarty.Knt_Akronim AS Klient_Akronim, 
KntKarty.Knt_Nazwa1 AS Klient_Nazwa,

Year(convert(datetime,TrN_Data3-36163,105))AS Rok,
DatePart(quarter,(convert(datetime,TrN_Data3-36163,105))) AS Kwartal,
Month(convert(datetime,TrN_Data3-36163,105))AS Data_Miesiac,
DatePart(week,(convert(datetime,TrN_Data3-36163,105)))-1 AS Tydzien_Roku,
DatePart(weekday,(convert(datetime,TrN_Data3-36163,105))) AS Dzien_Tygodnia,


convert(datetime,TrN_Data3-36163,105) Data_DataZakSpr,


TrS_Ilosc AS Ilosc, 

TrE_UpustKnt As UpustKlienta,
convert(decimal(15,1),TrE_Rabat) As Rabat,


TrE_Poczatkowa AS Cena_Przed_Rabatem, 

TrE_Cena AS Cena_Po_Rabacie, 


CASE WHEN TrS_Ilosc=0 
THEN (TRE_KsiegowaNetto/(SELECT Count(*) FROM cdn.TraSElem TS WHERE TRS_GidTyp=TrE_GidTyp and Trs_GidNumer=TrE_GidNumer and Trs_GidLp=TrE_GidLP))
ELSE CASE WHEN TrE_FlagaNB='B' THEN TrE_Cena*TrS_Ilosc/((100+TrE_StawkaPod)/100)
          ELSE (TrE_Cena*TrS_Ilosc) END END 
AS Przychod_Netto,


CASE WHEN TrS_Ilosc=0 THEN (TRE_KsiegowaBrutto/(SELECT Count(*) FROM cdn.TraSElem TS WHERE TRS_GidTyp=TrE_GidTyp and Trs_GidNumer=TrE_GidNumer and Trs_GidLp=TrE_GidLP))  
ELSE TrE_Cena*TrS_Ilosc*(1+TrE_StawkaPod/100) END 
AS Przychod_Brutto,


TrS_KosztKsiegowy AS Koszt,

(round((CASE WHEN TrS_Ilosc=0 THEN (TRE_KsiegowaNetto/(SELECT Count(*) FROM cdn.TraSElem TS WHERE TRS_GidTyp=TrE_GidTyp and Trs_GidNumer=TrE_GidNumer and Trs_GidLp=TrE_GidLP)) 
 ELSE (CASE WHEN TrE_FlagaNB='B' THEN TrE_Cena*TrS_Ilosc/((100+TrE_StawkaPod)/100) 
          ELSE TrE_Cena*TrS_Ilosc END) END) * (TrN_KursL/TrN_KursM),2)-TrS_KosztKsiegowy) AS Wynik,


TrS_GIDTyp, TrS_GIDNumer, TrS_GIDLp, TrS_SubGIDLp

FROM cdn.TraNag TraNag
 INNER JOIN cdn.Obiekty 
  ON (TrN_GidTyp=Ob_GidTyp)

 INNER JOIN cdn.TraElem TraElem
  ON (TraNag.TrN_GIDTyp = TraElem.TrE_GIDTyp
  AND TraNag.TrN_GIDNumer = TraElem.TrE_GIDNumer)

 LEFT OUTER JOIN (CDN.KntKarty KntKarty left outer join cdn.KntGrupyDom K0 
  ON (Knt_GidTyp=K0.KGD_GidTyp and Knt_GidNumer=K0.KGD_GidNumer) left outer join cdn.KntGrupyDom K1 
    ON (K0.KGD_GrOTyp=K1.Kgd_GidTyp And K0.KGD_GrONumer=K1.Kgd_GidNumer))
  ON (TraNag.TrN_KntTyp = KntKarty.Knt_GIDTyp
  AND TraNag.Trn_KntNumer = KntKarty.Knt_GIDNumer )


 LEFT OUTER JOIN CDN.KntKarty KntD
  ON (TraNag.TrN_KnDTyp=KntD.Knt_GIDTyp
  AND TraNag.TrN_KnDNumer=KntD.Knt_GIDNumer)

 LEFT OUTER JOIN CDN.KntAdresy AdW
  ON (TraNag.TrN_AdWTyp=AdW.KnA_GIDTyp
  AND TraNag.TrN_AdWNumer=AdW.KnA_GIDNumer)

 LEFT OUTER JOIN CDN.TraSElem TraSElem
  ON (TraElem.TrE_GIDTyp = TraSElem.TrS_GIDTyp
  AND TraElem.TrE_GIDNumer = TraSElem.TrS_GIDNumer 
  AND TraElem.TrE_GIDLP = TraSElem.TrS_GIDLP)

 LEFT OUTER Join cdn.Dostawy ON Dst_GidTyp=TrS_DstTyp and Dst_GidNumer=TrS_DstNumer

 LEFT OUTER JOIN cdn.Magazyny 
  ON (TrS_MagTyp=Mag_GidTyp AND TrS_MagNumer=Mag_GidNumer)

 LEFT OUTER JOIN (CDN.TwrKarty TwrKarty inner join cdn.TwrGrupyDom G0 
  ON (Twr_GidTyp=G0.TGD_GidTyp and Twr_GidNumer=G0.TGD_GidNumer) inner join cdn.TwrGrupyDom G1 
    ON (G0.TGD_GrOTyp=G1.Tgd_GidTyp And G0.TGD_GrONumer=G1.Tgd_GidNumer))
  ON (TraElem.TrE_TwrTyp = TwrKarty.Twr_GIDTyp
  AND TraElem.TrE_TwrNumer = TwrKarty.Twr_GIDNumer 
  AND TraElem.TrE_TwrLP = TwrKarty.Twr_GIDLP)

WHERE (TrN_GidTyp in (2001,2003,2005,2009,2013,2033,2034,2037,2041,2042,2045)) 

pozdrawiam

Kyniu
Posty: 417
Rejestracja: 21 mar 2008, 10:10
Rola: Administrator CDN XL
Lokalizacja: Świętokrzyskie, Kielce

Re: Raport "Sprzedaż do klientów według grup towarowych"

Post autor: Kyniu »

wojtek pisze:a może by podejść do sprawy nieco inaczej i zrobić to w formie widoku i dane prezentować w excelu
Z różnych powodów (nie ma o czym dyskutować, niech będzie że tak już po prostu mam) nie chcę operować na poziomie bazy czyli tworzyć procedury, widoku, etc... zapisywanych w bazie. Stąd wydruk wydaje mi się najbardziej neutralnym podejściem, aczkolwiek ma swoje wady.

Kyniu

ODPOWIEDZ