root/trunk/SQL/Reports/SprzedazReklam2009.txt @ 521

Wersja 521, 3.4 KB (wprowadzona przez marek, 17 years temu)

re #129

Line 
1DECLARE @Korekty TABLE
2(
3        Agencja nvarchar(50),
4        Agent nvarchar(100),
5        Rok int,
6        Ms int,
7        NrRoz nvarchar(8),
8        Netto money,
9        Vat money,
10        Brutto money,
11        SumaZaplat money,
12        Ilosc int
13)
14INSERT INTO @Korekty
15SELECT Agencja, Agent, ROK, MS, NrRoz,
16SUM(NETTO) AS NETTO, SUM(VAT) AS VAT, SUM(BRUTTO) AS BRUTTO, SUM(SZap) AS SUMAZAPLAT, COUNT(NETTO) AS ilosc
17FROM
18(
19        SELECT AGENCJE.Symbol AS Agencja, AGENCI.Nazwisko + ' ' + AGENCI.Imiê AS Agent,
20        YEAR(Korekta.DATA_SPRZEDAZY) AS ROK, MONTH(Korekta.DATA_SPRZEDAZY) AS MS, Korekta.NUMER_ROZ AS NrRoz,
21        NETTO = (Korekta.Netto * -1),
22        VAT = ((Korekta.Vat) * -1),
23        BRUTTO = ((Korekta.Netto * (1 + Korekta.S_Vat)) * -1),
24        0 AS SZap
25        FROM VIEW_KOREKTY AS Korekta
26        INNER JOIN AGENCI ON Korekta.NUMER_ROZ = AGENCI.F_ROZ
27        INNER JOIN AGENCJE ON Korekta.Id_agencji = AGENCJE.Id_agencji
28        WHERE
29        YEAR(Korekta.DATA_SPRZEDAZY)=@rok AND MONTH(Korekta.DATA_SPRZEDAZY)=@miesiac
30        AND (AGENCJE.Id_agencji<>4 OR Korekta.NUMER_ROZ ='KAT') AND (AGENCJE.Id_agencji <>6 OR Korekta.NUMER_ROZ ='POZ')
31        AND Korekta.SystemKsiegowyId IN (@systemKsiegowy)
32        GROUP BY AGENCJE.Symbol, AGENCI.Nazwisko + ' ' + AGENCI.Imiê, Korekta.ID_FAKTURY, Korekta.DATA_SPRZEDAZY,
33        YEAR(Korekta.DATA_SPRZEDAZY), Korekta.NUMER_ROZ,
34        Korekta.Netto, Korekta.Vat, Korekta.Brutto, Korekta.S_Vat
35) T
36GROUP BY Agencja, Agent, ROK, MS, NrRoz
37
38
39DECLARE @Faktury TABLE
40(
41        Agencja nvarchar(50),
42        Agent nvarchar(100),
43        Rok int,
44        Ms int,
45        NrRoz nvarchar(8),
46        Netto money,
47        Vat money,
48        Brutto money,
49        SumaZaplat money,
50        Ilosc int
51)
52INSERT INTO @Faktury
53-- sprzedaz - faktury bez korekt
54SELECT Agencja COLLATE SQL_Latin1_General_CP1250_CI_AS AS Agencja, Agent COLLATE SQL_Latin1_General_CP1250_CI_AS AS Agent, ROK, MS, NrRoz COLLATE SQL_Latin1_General_CP1250_CI_AS AS NrRoz,
55SUM(NETTO) AS NETTO, SUM(VAT) AS VAT, SUM(BRUTTO) AS BRUTTO, SUM(SZap) AS SUMAZAPLAT, COUNT(NETTO) AS ilosc
56FROM
57(
58        SELECT AGENCJE.Symbol AS Agencja, AGENCI.Nazwisko + ' ' + AGENCI.Imiê AS Agent,
59        YEAR(FAKTURY.DATA_SPRZEDAZY) AS ROK, MONTH(FAKTURY.DATA_SPRZEDAZY) AS MS, FAKTURY.NUMER_ROZ AS NrRoz,
60        NETTO = SUM(FAKTURA_DETAILS.NETTO),
61        VAT = SUM(FAKTURA_DETAILS.NETTO * FAKTURA_DETAILS.S_VAT),
62        BRUTTO = SUM(FAKTURA_DETAILS.NETTO * (1 + FAKTURA_DETAILS.S_VAT)),     
63        FAKTURY.suma_zaplat AS SZap
64        FROM FAKTURY
65        INNER JOIN FAKTURA_DETAILS ON FAKTURY.ID_FAKTURY = FAKTURA_DETAILS.ID_FAKTURY
66        LEFT JOIN AGENCI ON FAKTURY.NUMER_ROZ = AGENCI.F_ROZ
67        LEFT JOIN AGENCJE ON FAKTURY.ID_SPRZEDAWCY = AGENCJE.Id_agencji
68        WHERE
69        YEAR(FAKTURY.DATA_SPRZEDAZY)=@rok AND MONTH(FAKTURY.DATA_SPRZEDAZY)=@miesiac
70
71        AND (AGENCJE.Id_agencji<>4 OR FAKTURY.NUMER_ROZ ='KAT') AND (AGENCJE.Id_agencji <>6 OR FAKTURY.NUMER_ROZ ='POZ')
72        AND FAKTURY.KOREKTA=0 AND FAKTURY.SystemKsiegowyId IN (@systemKsiegowy)
73        GROUP BY AGENCJE.Symbol, AGENCI.Nazwisko + ' ' + AGENCI.Imiê, FAKTURY.ID_FAKTURY, FAKTURY.DATA_SPRZEDAZY,
74        YEAR(FAKTURY.DATA_SPRZEDAZY), FAKTURY.NUMER_ROZ, FAKTURY.suma_zaplat, FAKTURY.Korekta
75) T
76GROUP BY Agencja, Agent, ROK, MS, NrRoz
77
78-- zrob update dla tych ktorzy mieli korekty
79UPDATE F
80SET F.Netto=F.Netto+K.Netto, F.Vat=F.Vat+K.Vat, F.Brutto=F.Brutto+K.Brutto
81FROM @Faktury F, @Korekty K
82WHERE F.Agencja=K.Agencja AND F.Agent=K.Agent
83
84-- dodaj tych ktorzy mieli korekty a nie mieli zadnej sprzedazy
85INSERT INTO @Faktury
86SELECT * FROM @Korekty WHERE NrRoz NOT IN (SELECT NrRoz FROM @Faktury)
87
88SELECT * FROM @Faktury
89ORDER BY Agencja, Agent
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.